欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ROS机器人建模与仿真(二)--机器人URDF模型优化

程序员文章站 2022-06-04 15:01:25
...

让我们填一下上篇博客留下的坑:如何优化URDF模型。

这就要提到我们之前介绍的xacro格式了!

写在前面

本篇博客和下一篇博客需要的功能包,可以在本人主页下载到,转自古月大佬的资源,侵删。可以直接复制粘贴到catkin_ws文件夹下。
ROS机器人建模与仿真(二)--机器人URDF模型优化
两篇博客需要下载的代码

urdf模型的进化版本——xacro模型文件

ROS机器人建模与仿真(二)--机器人URDF模型优化

  • 精简模型代码

    • 创建宏定义
    • 文件包含
  • 提供可编程接口

    • 常量
    • 变量
    • 数学计算
    • 条件语句

常量

常量定义:<xacro:property name="M_PI" value="3.14159" />

常量使用:<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />

样例

ROS机器人建模与仿真(二)--机器人URDF模型优化

数学计算

<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0" />

样例

ROS机器人建模与仿真(二)--机器人URDF模型优化

宏定义

<xacro:macro name="name" params="A B C">
...
</xacro:macro>

样例

ROS机器人建模与仿真(二)--机器人URDF模型优化

宏调用

<name A="A_value" B="B_value" C="C_value" />

样例

ROS机器人建模与仿真(二)--机器人URDF模型优化

文件包含

xacro文件中也可包含其他的xacro文件,具体格式如下:

<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />

样例

ROS机器人建模与仿真(二)--机器人URDF模型优化

模型显示

方法一:
将xacro文件转换成URDF文件后显示

rosrun xacro xacro.py mbot.xacro > mbot.urdf

ROS机器人建模与仿真(二)--机器人URDF模型优化
可以看到确实已经将xacro转换成了urdf:
ROS机器人建模与仿真(二)--机器人URDF模型优化
但是这种方法并不是主流的方法,我们一般使用方法二。

方法二:
直接调用xacro文件解析器

<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />

<param name="robot_description" command="$(arg model)" />

可以看到具体的用法:
ROS机器人建模与仿真(二)--机器人URDF模型优化
输入以下命令运行看看效果:

roslaunch mbot_description display_mbot_base_xacro.launch

ROS机器人建模与仿真(二)--机器人URDF模型优化