利用URDF或者Xacro文件,以XML的方式描述小车底盘、camera、laser、Kinect等基本机器人结构,通过Gazebo或Rviz将文件解析为图形化的机器人模型。
其中很多代码可以从网络上找到。主要注意参数和坐标系的设置。例如在Kinect的Xacro文件中,需要修改gazebo reference和frameName这两个参数,而frameName由于在Rviz中点云图出现错位的现象,需要在launch文件中加入<node pkg="tf2_ros" type="static_transform_publisher" name="static_transform_publisher" args="0 0 0 -1.57 0 -1.57 /原来的父关节 /自己定义的名字" />这一行代码,所以frameName应该是自己定义的名字。
下面说说我在此过程中遇到的问题:
1. 轮子有离地间隙,导致用键盘控制时轮子在转,可是却没有往前走,可能是关节之间的偏移量计算有误,或者偏移量正好,需要再减去0.01确保小车和地面接触。
2. 模型倾倒,由于设置的质量不合理,小车的底盘质量要大,越往上质量越小。
3. 编写.xacro文件时,编写xacro宏的时候,没有引用参数params,少写斜杠等等小问题,都会报错。
4. Kinect错位(如上)。
5. 用键盘驱动小车时