ROS学习——机器人URDF模型优化
)
URDF建模存在哪些问题
- 模型冗长,重复内容过多
- 参数修改麻烦,不便于二次开发
- 没有参数计算的功能
URDF模型的进化版本——xacro模型文件
- 精简模型代码
- 创建宏定义
- 文件包含
- 提供可编程接口
- 常量
- 变量
- 数学计算
- 条件语句
一、机器人URDF模型优化
1、常量定义
<!--name是定义的常量名,value是常量的值-->
<xacro:property name="M_PI" value="3.14159"/>
2、常量使用
<!--常量 ${
} 在括号里使用常量 在括号里面可以进行运算-->
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>
3、数学计算
<!--括号里面可以进行运算-->
<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
所有数学运算都会转换成浮点数进行,以保证运算精度
4、宏定义
<!--name是宏定义的名字类似函数名,params是类似函数参数,可以是字符串-->
<xacro:macro name="name" params="A B C">
......具体模型定义(类似函数内容)
</xacro:macro>
5、宏调用
<!--A_value,B_value,C_value是宏的名称-->
<name A="A_value" B="B_value" C="C_value" />
6、文件包含
<!--$(find+功能包)=包的具体路径-->
<xacro:include filename="$(find mbot_descripiton)/urdf/xacro/mbot_base.xacro" />
二、使用xaroc创建一个小车机器人
cd ~/catkin_ws/src/mbot_description/urdf
mkdir xacro
cd xacro
sudo gedit mbot_base.xacro
mbot_base.xacro
<!--声明xml文件及版本-->
<?xml version="1.0"?>
<robot name="mbot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!--定义相关机器人常量-->
<xacro:property name="M_PI" value="3.1415926"/