ros2-6.4.4 两轮差速控制机器人的问题-CSDN博客
上次遇到的问题,经过查看ros2 node list 之后,发现有多个
/robot_state_publisher
这是不正常的,应该是我看视频6.2 的没有及时关闭导致冲突了。
没有修改代码,单纯的重启就解决了。正常显示TF tree 如下:
小鱼老师在视频解释过,left_wheel_link 、right_wheel_link 两个轮子在base_footprint下是差速控制插件发布的。
此时,能正常看到轮子的tf轴转动。
XML
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="gazebo_control_plugin">
<gazebo>
<plugin name='diff_drive' filename='libgazebo_ros_diff_drive.so'>
<ros>
<namespace>/</namespace>
<remapping>cmd_vel:=cmd_vel</remapping>
<remapping>odom:=odom</remapping>
</ros>
<update_rate>30</update_rate>
<!-- wheels -->
<left_joint>left_wheel_joint</left_joint>
<right_joint>right_wheel_joint</right_joint>
<!-- kinematics -->
<wheel_separation>0.2</wheel_separation>
<wheel_diameter>0.064</wheel_diameter>
<!-- limits -->
<max_wheel_torque>20</max_wheel_torque>
<max_wheel_acceleration>1.0</max_wheel_acceleration>
<!-- output -->
<publish_odom>true</publish_odom>
<publish_odom_tf>true</publish_odom_tf>
<publish_wheel_tf>true</publish_wheel_tf>
<odometry_frame>odom</odometry_frame>
<robot_base_frame>base_footprint</robot_base_frame>
</plugin>
</gazebo>
</xacro:macro>
</robot>
补充下差速控制的参数含义,就是书上6-1 表格。
配置项 | 含义 |
---|---|
ros | ros相关配置,包含命名空间和话题重映射等 |
update_rate | 数据更新速率 |
left_joint | 左轮关节名称 |
right_joint | 右轮关节名称 |
wheel_separation | 左右轮子的间距 |
wheel_diameter | 轮子的直径 |
max_wheel_torque | 轮子最大的力矩 |
max_wheel_acceleration | 轮子最大的加速度 |
publish_odom | 是否发布里程计 |
publish_odom_tf | 是否发布里程计的tf开关 |
publish_wheel_tf | 是否发布轮子的tf数据开关 |
odometry_frame | 里程计的framed ID,最终体现在话题和TF上 |
robot_base_frame | 机器人的基础frame的ID |
一些 控制信息;
cmd_vel 就是
bash
bohu@bohu-TM1701:~$ ros2 topic echo /cmd_vel
linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
里程计信息默认的输出话题为odom,查看信息:
header,表示该消息发布的时间
pose,表示当前机器人位置和朝向
twist,表示当前机器人的线速度和角速度
covariance 协方差矩阵信息,小鱼老师说以后讲。在rviz里面Odometry关闭了,没有勾选。
bash
header:
stamp:
sec: 4564
nanosec: 469000000
frame_id: odom
child_frame_id: base_footprint
pose:
pose:
position:
x: -1.786928065906287
y: -0.8138664866993258
z: 0.0009999934627118873
orientation:
x: 3.9145606329839545e-08
y: 1.401121596460272e-07
z: -0.96438294476112
w: -0.2645099919735544
covariance:
- 1.0e-05
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1.0e-05
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1000000000000.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1000000000000.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1000000000000.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.001
twist:
twist:
linear:
x: -1.6229530798319845e-05
y: -3.1758267246886164e-05
z: 0.0
angular:
x: 0.0
y: 0.0
z: -9.914752588517208e-05
covariance:
- 1.0e-05
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1.0e-05
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1000000000000.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1000000000000.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 1000000000000.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.001
---
header:
stamp:
sec: 4564
nanosec: 503000000
frame_id: odom
child_frame_id: base_footprint