|
@@ -261,7 +261,32 @@ ros2 topic echo /joint_states
|
|
|
|
|
|
可以看到随着进度条拖动,话题中的值和rviz2中机器人关节在同步的旋转,joint_states话题也可以手动发送,下一节课小鱼带你一起通过手动发送`joint_states`来控制机器人轮子转动
|
|
|
|
|
|
+### 5.4 论如何让车轮着地
|
|
|
|
|
|
+虽然显示出了机器人模型,但有一个问题不知道你发现没有,那就是在RVIZ中的机器人轮子是在地面之下的。
|
|
|
+
|
|
|
+原因在于我们fixed-frame选择的是base_link,base_link的位置本来就在left_wheel_link和right_wheel_link只上,那该怎么办呢?
|
|
|
+
|
|
|
+其实很简单,我们增加一个虚拟link和关节,这个关节与base_link相连,位置位于base_link向下刚好到车轮下表面的位置。
|
|
|
+
|
|
|
+来,让我们**给base_link添加一个父link-`base_footprint`**,新增的URDF代码如下:
|
|
|
+
|
|
|
+```
|
|
|
+ <!-- Robot Footprint -->
|
|
|
+ <link name="base_footprint"/>
|
|
|
+
|
|
|
+ <joint name="base_joint" type="fixed">
|
|
|
+ <parent link="base_footprint"/>
|
|
|
+ <child link="base_link"/>
|
|
|
+ <origin xyz="0.0 0.0 0.076" rpy="0 0 0"/>
|
|
|
+ </joint>
|
|
|
+```
|
|
|
+
|
|
|
+因为是虚拟关节,我们不用对这个link的形状进行描述,joint的origin设置为`xyz="0.0 0.0 0.076"`表示关节base_footprint向上0.076就是base_link(觉得不好理解可以看下图)。
|
|
|
+
|
|
|
+保存编译再次运行测试,此时车轮就在地面只上啦~
|
|
|
+
|
|
|
+
|
|
|
|
|
|
--------------
|
|
|
|