|
@@ -10,19 +10,75 @@
|
|
|
|
|
|
## 1. Gazebo插件介绍
|
|
## 1. Gazebo插件介绍
|
|
|
|
|
|
-之前小鱼说过Gazebo是一个独立于ROS的软件,对外提供了丰富的API可以使用,而我们今天的猪脚就是一个通过gazebo的API编写的机器人轮子控制插件。
|
|
|
|
|
|
+之前小鱼说过Gazebo是一个独立于ROS的软件,对外提供了丰富的API可以使用,gazebo的插件按照用途大致可以分为两种:
|
|
|
|
|
|
-该插件的名称为:diff_drive_controller
|
|
|
|
|
|
+1. **用于控制的插件**,通过插件可以控制机器人关节运动,可以进行位置、速度、力的控制,比如我们这节课的两轮差速控制器。
|
|
|
|
+2. **用于数据采集的插件**,比如IMU传感器用于采集机器人的惯性,激光雷达用于采集机器人周围的点云信息。
|
|
|
|
|
|
-源码地址:https://github.com/ros-controls/ros2_controllers/tree/foxy/diff_drive_controller/src
|
|
|
|
|
|
+当然上面两类插件功能也可以写到一个插件里,两轮差速插件就是一个二合一加强版。
|
|
|
|
|
|
|
|
+## 2.两轮差速插件介绍
|
|
|
|
|
|
|
|
+两轮差速插件用于控制机器人轮子关节的位置变化,同时该插件还会获取轮子的位置以及速度的信息的反馈,根据反馈的位置信息结合运动学模型即可计算出当前机器人的位姿(里程计)。
|
|
|
|
|
|
|
|
+> 该插件的名称为:gazebo_ros_diff_drive
|
|
|
|
+>
|
|
|
|
+> 源码地址:https://github.com/ros-simulation/gazebo_ros_pkgs/blob/foxy/gazebo_plugins/src/gazebo_ros_diff_drive.cpp
|
|
|
|
|
|
|
|
+要想快速了解一个系统的功能,最直接的就是看系统的对外的输入和输出是什么?什么都不要说,看下图:
|
|
|
|
|
|
|
|
+```mermaid
|
|
|
|
+graph LR;
|
|
|
|
+D[配置参数-轮距直径等]-->B
|
|
|
|
+A[控制指令-cmdvel]-->B[gazebo_ros_diff_drive]
|
|
|
|
+B-->C[里程计-odom]
|
|
|
|
+B-->E[里程计tf-可选]
|
|
|
|
+B-->F[轮子tf-可选]
|
|
|
|
+```
|
|
|
|
|
|
|
|
+上图就是对gazebo_ros_diff_drive的输入和输出信息的总结,可以很直观的看到该插件主要**输入控制指令**,主要**输出里程计信息**。接着小鱼带你分别认识一下输入和输出两个部分。
|
|
|
|
|
|
|
|
+### 2.2 输入参数
|
|
|
|
|
|
|
|
+#### 2.2.1 配置参数
|
|
|
|
+
|
|
|
|
+不知道你是否还记得在第七章中,小鱼对两轮差速底盘的运动学正的介绍,小鱼再带你一起回顾一下:
|
|
|
|
+
|
|
|
|
+两轮差速运动学一共分为三个部分:
|
|
|
|
+
|
|
|
|
+1. 运动学正解
|
|
|
|
+
|
|
|
|
+```mermaid
|
|
|
|
+graph LR;
|
|
|
|
+A[左轮速度]-->B[正运动学]-->C[机器人角速度]
|
|
|
|
+D[右轮速度]-->B
|
|
|
|
+B-->E[机器人线速度]
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+2. 运动学逆解
|
|
|
|
+
|
|
|
|
+```mermaid
|
|
|
|
+ graph LR;
|
|
|
|
+ A[机器人线速度]-->C[运动学逆解]
|
|
|
|
+ B[机器人角速度]-->C
|
|
|
|
+ C-->D[左轮速度]
|
|
|
|
+ C-->E[右轮速度]
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+3. 里程计推算
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### 2.2.2 控制指令
|
|
|
|
+
|
|
|
|
+### 2.3 输出参数
|
|
|
|
+
|
|
|
|
+#### 2.3.1 里程计
|
|
|
|
+
|
|
|
|
+#### 2.3.2 TF变换信息
|
|
|
|
+
|
|
|
|
+#### 2.3.3 joint-states
|
|
|
|
|
|
|
|
|
|
|
|
|