这个系列主要介绍机器人ROS模型的建立方法,ROS系统带来的好处之一就是:
我们无需自己建立复杂的数学模型来描述自己的机器人几何尺寸、运动学和动力学等,只需要用它提供的模型描述方法即可实现快速建模。
ROS系统的模型描述方法主要有两种格式: URDF 和 XACRO。
URDF:用于描述一些简单的机器人模型,参考官网:URDF官方介绍(初学者一定要精读这些文档)。
XACRO:应用更普遍的机器人模型描述文件,参考官网:xacro,它有如下几个特点:
1.语法简练。采用编程话的脚本语言格式,可以定义变量、常量、引入数学表达式等,极易上手。
2.方便复用。它可以进行一系列的宏定义,并且可以包含其他.xacro文件。
下面,开始用xacro文件建立Rob的机器人模型。
1.第一部分是文件的头和一些宏定义
robot name我们可以自己随便定义,然后分别给出了几组颜色和常数的定义,最后给出了关节传动部分的宏定义。
< ?xml version="1.0"? >
< robot name="rob_robot" xmlns:xacro="http://ros.org/wiki/xacro" >
< !-- Include materials -- >
< material name="Black" >
< color rgba="0.0 0.0 0.0 1.0"/ >
< /material >
< material name="White" >
< color rgba="1.0 1.0 1.0 1.0"/ >
< /material >
常量的定义方法如下,在引用这里定义的常量的时候,用**{XX},例如在如果在下面的代码中想引用M_PI,只需要用:**{M_PI} 即可。
< !-- Constants -- >
< property name="deg_to_rad" value="0.01745329251994329577"/ >
< property name="M_PI" value="3.14159"/ >
关节的传动参数宏定义方法如下,xacro:macro name 定义了本宏的名称。
这个名称由用户定义,后续引用该宏的时候就是根据名字来的。
具体如何操作参考下文介绍或git上的源代码。
注意,这里宏定义内部的一些具体数值仅为说明而存在,具体的机器人关节应该是不一样的。
< !-- transmission block macro definition -- >
< xacro:macro name="transmission_block" params="joint_name" >
< transmission name="tran1" >
< type >transmission_interface/SimpleTransmission< /type >
< joint name="${joint_name}" >
< hardwareInterface >PositionJointInterface< /hardwareInterface >
< /joint >
< actuator name="motor1" >
< hardwareInterface >PositionJointInterface< /hardwareInterface >
< mechanicalReduction >1< /mechanicalReduction >
< /actuator >
< /transmission >
< /xacro:macro >
全部0条评论
快来发表一下你的评论吧 !