目标:使用xacro优化建立的urdf机器人模型,在rviz和gazebo中进行仿真,为以后控制算法和SLAM算法做准备。
Xacro(XML Macros)Xacro是一种XML宏语言。 使用xacro,您可以通过使用宏命令构建更精悍短小但又具有更高可读性的XML文件,可以进行宏定义、变量定义、头文件包含、数学运算等操作。
urdf文件中,存在着大量重复性的代码,因此通过xacro优化之后,大大减少代码的重复性,宏定义模式也能方便代码的后期修改,并且更好地支持gazebo仿真环境。
在urdf文件夹下,新建xacro文件夹,用来存放编写的xacro文件集合。
(1)编写shcRobot2_base_xacro.xacro文件,基文件,相当于一个类
该文件只是编写了各种基础结构的宏定义,包括四个轮子的宏和汽车本体base_link的宏,并没有真实生成一个机器人模型。
注:如果遇到编译不通过可能是注释里面有汉字的缘故,删掉重新运行即可。
(2)编写shcRobot_xacro.xacro文件,调用文件,生成一个机器人本体
根据上面的宏定义,实例化一个机器人本体。
在launch文件中加入xacro解析器,除此之外,几乎和上一章的launch文件一样。
运行launch文件便可以看到与上一章相同的机器人小车模型了
此仅仅只是将urdf模型以更加方便的xacro模型进行重新描述,后续将进行其他属性的添加,比如gazebo属性以及驱动属性。
(1)安装Arbotix插件包,复制到src目录下进行catkin_make
https://github.com/vanadiumlabs/arbotix_ros
(2)修改launch文件,配置arbotix控制器
(3)在config文件夹下增加配置文件fake_arbotix.yaml
controllers: {
base_controller: {
type: diff_controller,
base_frame_id: base_link,
base_width: 0.8,
ticks_meter: 4100,
Kp: 12,
Kd: 12,
Ki: 0,
Ko: 50,
accel_limit: 5.0
}
}
注:配置文件不要有多余的空格,否则会编译失败
(4)命令行发布消息
rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'
(5)修改rviz
在rviz中将fixed frame改为odom,发布上述命令,结果如图
参考文献:
1.古月居博客