《精通ROS机器人编程(原书第2版) 》 —3.8 利用xacro理解机器人建模
3.8 利用xacro理解机器人建模
当我们创建复杂的机器人模型时,URDF的灵活性将会降低。URDF缺少的主要特性是简单性、可重用性、模块化和可编程性。
如果有人想在机器人描述中重复使用URDF代码块10次,他可以复制并粘贴10次。如果有一个选项可以使用这个代码块并可以在不同的设置下复制多个副本,那么该选项在创建机器人描述时将非常有用。
URDF是一个单独的文件,我们不能在它里面包含其他的URDF文件。这降低了代码的模块化特性。所有代码都必须放在一个文件中,这会降低代码的简单性。
此外,如果在描述语言中存在一些可编程性,如添加变量、常量、数学表达式和条件语句,那么就会更具用户友好性。
使用xacro的机器人模型将满足所有这些条件。xacro的一些主要特点如下:
简化URDF:xacro是URDF的高级版本。它在机器人描述中创建宏并重用宏。这可以减少代码长度。此外,它还可以包含来自其他文件的宏,使代码更简单、更易读和更模块化。
可编程性:xacro语言在其描述中支持简单的编程语句。有变量、常量、数学表达式、条件语句等使描述更加智能和高效。
我们可以说xacro是URDF的升级版本,在需要的时候,我们可以利用ROS工具将xacro定义转换为URDF。
我们来讨论如何用xacro创建与pan-and-tilt相同的描述。转到mastering_ros_robot_description_pkg/urdf文件夹,文件名是pan_tilt.xacro。我们需要对xacro文件使用.xacro扩展,而不是.urdf。以下是xacro代码的说明:
这两行指定了解析xacro文件所需的所有xacro文件的命名空间。在指定命名空间后,我们需要添加xacro文件的名称。
3.8.1 使用属性
使用xacro,我们可以在xacro文件中声明常量或属性,即以名称表示的值,这些常量或属性可以在代码中的任何地方使用。常量的主要用途是,避免在连杆和关节上提供硬编码的值,而是保持一些常量,这样就更容易更改这些值,而不是查找并替换这些硬编码的值。
这里给出了一个使用属性的例子。我们声明了基座连杆和平移连杆的长度和半径。因此,在这里很容易改变尺寸而不是改变每个尺寸的值:
我们可以通过下面的定义,使用变量的值来替换硬编码的值:
在这里,旧值0.4被替换为{pan_link_length},0.04被替换为{pan_link_radius}。
- 点赞
- 收藏
- 关注作者
评论(0)