浏览代码

[feat]:增加base_footprint解释

sangxin 3 年之前
父节点
当前提交
c72b42b3e4

+ 25 - 0
docs/chapt8/8.3动手创建一个移动机器人.md

@@ -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(觉得不好理解可以看下图)。
+
+保存编译再次运行测试,此时车轮就在地面只上啦~
+
+![image-20220409003039566](8.3%E5%8A%A8%E6%89%8B%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%A7%BB%E5%8A%A8%E6%9C%BA%E5%99%A8%E4%BA%BA/imgs/image-20220409003039566.png)
 
 --------------
 

二进制
docs/chapt8/8.3动手创建一个移动机器人/imgs/image-20220409003039566.png