ROS机器人入门-机器人系统仿真(二)
URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型,机器人模型可能较为复杂,但是 ROS 的 URDF 中机器人的组成却是较为简单,可以主要简化为两部分:连杆(link标签) 与 关节(joint标签),接下来我们就通过案例了解一下 URDF 中的不同标签:
- robot 根标签,类似于 launch文件中的launch标签
- link 连杆标签
- joint 关节标签
- gazebo 集成gazebo需要使用的标签
gazebo标签在使用 gazebo 仿真时用于配置仿真环境所需参数,比如: 机器人材料属性、gazebo插件等,但是该标签不是机器人模型必须的,只有在仿真时才需设置。
robot
urdf 中为了保证 xml 语法的完整性,使用了robot
标签作为根标签,所有的 link 和 joint 以及其他标签都必须包含在 robot 标签内,在该标签内可以通过 name 属性设置机器人模型的名称
属性
- name:机器人模型名称
子标签
robot是根标签,其他标签都必须在robot标签内。
link
urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如: 机器人底座、轮子、激光雷达、摄像头…每一个部件都对应一个 link, 在 link 标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性。
属性
- name:连杆名称
子标签
- visual:描述外观(对应的数据是可视的)
- geometry:连杆形状
- 标签1: box(盒状)
- 属性:size=长(x) 宽(y) 高(z)
- 标签2: cylinder(圆柱)
- 属性:radius=半径 length=高度
- 标签3: sphere(球体)
- 属性:radius=半径
- 标签4: mesh(为连杆添加皮肤)
- 属性: filename=资源路径(格式:package://
/ )/文件
- 属性: filename=资源路径(格式:package://
- 标签1: box(盒状)
- origin :偏移量与倾斜弧度
- 属性1: xyz=x偏移 y偏移 z偏移
- 属性2: rpy=x翻滚 y俯仰 z偏航 (单位是弧度)
- metrial:材料属性(颜色)
- 属性: name
- 标签: color
- 属性: rgba=红绿蓝权重值与透明度 (每个权重值以及透明度取值[0,1])
- geometry:连杆形状
- collision:连杆碰撞属性
- Inertial : 连杆惯性矩阵
案例实现
编写可视化部分 visual标签
基本几何形状 geometry标签
分成生成长方体、圆柱与球体的机器人部件
1 | <robot name="robot"> |
加载模型文件 mesh标签
1 | <robot name="robot"> |
设置偏移量与欧拉角 origin标签
我们可以看到上面加载的小车模型的姿态是垂直于平面的,我们可以通过origin标签实现小车的移动与倾斜。
1 | <robot name="robot"> |
平移 xyz
翻滚 rpy:x
俯仰 rpy:y
偏航 rpy:z
通过改变模型的翻滚角度设为90度,弧度约为1.57,就可以使小车模型平行于平面。
设置颜色 material标签
1 | <robot name="robot"> |
joint
urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性,还可以指定关节运动的安全极限,机器人的两个部件(分别称之为 parent link 与 child link)以”关节”的形式相连接,不同的关节有不同的运动形式: 旋转、滑动、固定、旋转速度、旋转角度限制….,比如:安装在底座上的轮子可以360度旋转,而摄像头则可能是完全固定在底座上。
joint标签对应的数据在模型中是不可见的
属性
- name —> 为关节命名
- type —> 关节运动形式
- continuous: 旋转关节,可以绕单轴无限旋转
- revolute: 旋转关节,类似于 continues,但是有旋转角度限制
- prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限
- planer: 平面关节,允许在平面正交方向上平移或旋转
- floating: 浮动关节,允许进行平移、旋转运动
- fixed: 固定关节,不允许运动的特殊关节
子标签
parent (必填)
parent link的名字是一个强制的属性:
- link:父级连杆的名字,是这个link在机器人结构树中的名字。
child(必填)
child link的名字是一个强制的属性:
- link:子级连杆的名字,是这个link在机器人结构树中的名字。
origin
- 属性: xyz=各轴线上的偏移量 rpy=各轴线上的偏移弧度。
axis
- 属性: xyz用于设置围绕哪个关节轴运动。