ROS、base_footprint和base_link的区别及Gazebo差速小车建模遇到的坑汇总

1.base_footprint和base_link区别及用处

base_link是固定在机器人本体上的坐标系,通常选择机器人腰部。
base_footprint表示机器人base_link原点在地面上的投影,区别base_link之处是其“z”坐标不同。
一般为了模型不陷入地面,base_footprint的“z”坐标比base_link高。

turtlebot3示例:

<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.010" rpy="0 0 0"/> //此处z设置比base_link高,此处效果就是底盘离地面1cm
  </joint>

  <link name="base_link">
    <visual>
      <origin xyz="-0.032 0 0.0" rpy="0 0 0"/>//底盘中心坐标(-0.032 0 0.01)
      <geometry>
        <mesh filename="package://turtlebot3_description/meshes/bases/burger_base.stl" scale="0.001 0.001 0.001"/>
      </geometry>
      <material name="light_black"/>
    </visual>

2.搭建gazebo仿真模型遇到的问题:

要搭建的小车模型图
在这里插入图片描述

问题1:轮子沉入地面
可能的解决方法:
(1)采用base_footprint提高地盘与地面之间的距离。本模型中 wheel的半径 = base_footprint的“z” + wheel_left_joint的“z”
(2)在urdf中设置轮子collision中的”geometry“与visual的”geometry“参数一致。

问题2:主动轮旋转,从动轮不转,小车不行进
试图在turtlebot3模型上改造,修改了轮距、安装位置、外形尺寸,添加了从动轮,发现主动轮转动而小车不动。
原因:忘记将从动轮的gazebo属性加入,导致无法再gazebo环境中正常滚动
解决方法:添加gazebo属性

 <gazebo reference="caster_back_left_link">
    <mu1>0.1</mu1>
    <mu2>0.1</mu2>
    <kp>1000000.0</kp>
    <kd>100.0</kd>
    <minDepth>0.001</minDepth>
    <maxVel>1.0</maxVel>
    <material>Gazebo/FlatBlack</material>
  </gazebo>

参考资料:
https://answers.ros.org/question/291600/base_link-vs-base_footprint/
https://blog.csdn.net/weixin_42143481/article/details/104389402

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐