ROS机器人建模与仿真(二)--机器人URDF模型优化
程序员文章站
2022-06-04 15:01:25
...
让我们填一下上篇博客留下的坑:如何优化URDF模型。
这就要提到我们之前介绍的xacro格式了!
写在前面
本篇博客和下一篇博客需要的功能包,可以在本人主页下载到,转自古月大佬的资源,侵删。可以直接复制粘贴到catkin_ws文件夹下。
两篇博客需要下载的代码
urdf模型的进化版本——xacro模型文件
-
精简模型代码
- 创建宏定义
- 文件包含
-
提供可编程接口
- 常量
- 变量
- 数学计算
- 条件语句
常量
常量定义:<xacro:property name="M_PI" value="3.14159" />
常量使用:<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
样例
数学计算
<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0" />
样例
宏定义
<xacro:macro name="name" params="A B C">
...
</xacro:macro>
样例
宏调用
<name A="A_value" B="B_value" C="C_value" />
样例
文件包含
xacro文件中也可包含其他的xacro文件,具体格式如下:
<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />
样例
模型显示
方法一:
将xacro文件转换成URDF文件后显示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
可以看到确实已经将xacro转换成了urdf:
但是这种方法并不是主流的方法,我们一般使用方法二。
方法二:
直接调用xacro文件解析器
<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
<param name="robot_description" command="$(arg model)" />
可以看到具体的用法:
输入以下命令运行看看效果:
roslaunch mbot_description display_mbot_base_xacro.launch