关于我建图前后详细的整体流程可以看我的另一篇文章
问题:
我使用gmapping建图的时候发现,刚打开时建的图还是正常的,但是只要我的平台车一旋转,新建出来的图就也会跟着旋转,最后建出来的图是多个旋转的图重合在一起的样子,一开始让我误以为是雷达穿墙了,但实际上没有穿墙。
原因:
大佬帮我看了说可能里程计的问题。
尝试解决:
1.首先启动gazebo,启动键盘指令,可以动一动车,打开新的终端窗口观察/odom话题里面车的位姿变化有没有什么奇怪的地方,小数点后面有轻微跳动是正常的,主要看前面几位的变化。
2.检查车的运动控制部分轮距和轮径设置是否有误,导致里程计算错了(这里我有点没懂,是大佬原话)。
3.在rviz里打开平台车,动一下车的各个车轮的关节,我的模型在此处被发现四个轮子转动的方向不一致,一边向前一边向后,所以要去修改平台模型的car.urdf.xacro文件,可以尝试改动axis后面的值,我的是需要把两个轮子的xyz="0 -1 0"改成xyz="0 1 0":
<joint
name="wheel4_joint"
type="revolute">
<origin
xyz="-0.15 -0.295 0"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="wheel4_link" />
<axis
xyz="0 1 0" />
<limit
lower="-180"
upper="180"
effort="0"
velocity="0" />
</joint>
4.检查平台模型的car.urdf.xacro文件里雷达的坐标系是否固定(type为fixed):
<joint
name="sensor_joint"
type="fixed">
<origin
xyz="0 0 0.2"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="sensor_link" />
<axis
xyz="0 0 0" />
</joint>
执行了3和4以后我再建图就不会出现图像旋转的问题了。