xacro 是优化后的URDF模型
精简模型代码:创建宏定义、文件包含
提供可编程接口:常量、变量、数学计算、条件语句
常量定义
<xacro:property name="M_PI" value="3.14159" /> 常量名 M_PI,值为3.14159
常量使用
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" /> 引用常量 ${M_PI/2}
数学计算 所有数学运算都会转换成浮点数进行,以保证运算精度
<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0" />
宏定义
<xacro:macro name="name" params="A B C"> 宏的名字name
...
</xacro:macro>
宏调用
<name A="A_value" B="B_value" C="C_value" /> 对宏参数进行赋值
文件包含
<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />
将xacro文件转换为URDF文件后显示
$ rosrun xacro xacro.py 文件名.xacro > 文件名.urdf
直接调用xacro文件解析器
<arg name="model" default="$(find xacro)/xacro --inorder '$(find 包名)/urdf/xacro/文件名.xacro'" />
<param name="" command="$(arg model)" />
xacro 文件转换为 urdf文件
kinetic@vm:~/catkin_ws/src/mbot_description/urdf/xacro$ ls
gazebo mbot_base.xacro mbot_with_camera.xacro mbot.xacro sensors
kinetic@vm:~/catkin_ws/src/mbot_description/urdf/xacro$ rosrun xacro xacro.py mbot.xacro > mbot.urdf
kinetic@vm:~/catkin_ws/src/mbot_description/urdf/xacro$ ls
gazebo mbot_base.xacro mbot.urdf mbot_with_camera.xacro mbot.xacro sensors
1、运行程序 模型
kinetic@vm:~/catkin_ws/src/mbot_description/launch/xacro$ roslaunch mbot_description display_mbot_base_xacro.launch
2、运行程序 控制运动
kinetic@vm:~/catkin_ws/src/mbot_description/launch/xacro$ roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch
kinetic@vm:~/catkin_ws/src/mbot_teleop/launch$ roslaunch mbot_teleop mbot_teleop.launch
点击: i 前进,l 旋转, q 加速。
kinetic@vm:~$ rostopic list
/clicked_point
/cmd_vel
/diagnostics
/initialpose
/joint_states
/move_base_simple/goal
/odom
/rosout
/rosout_agg
/tf
/tf_static