参考链接:
1.http://www.autolabor.com.cn/book/ROSTutorials/di-6-zhang-ji-qi-ren-xi-tong-fang-zhen/62-fang-zhen-urdf-ji-cheng-rviz/622-urdfyu-fa-xiang-jie.html
2.https://wiki.ros.org/urdf/XML
URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型,虽然机器人模型可能较为复杂,但是 ROS 的 URDF 中机器人的组成却是较为简单,可以主要简化为两部分:连杆(link标签,实体部分一般可见) 与 关节(joint标签,实体与实体的链接处,一般不可见),
URDF 中的不同标签:
robot
urdf 中为了保证 xml 语法的完整性,使用了robot标签作为根标签,所有的 link 和 joint 以及其他标签都必须包含在 robot 标签内,在该标签内可以通过 name 属性设置机器人模型的名称
1.属性
name: 指定机器人模型的名称
2.子标签
其他标签都是子级标签
link
urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如: 机器人底座、轮子、激光雷达、摄像头等一般可见的实体部件都对应一个 link, 在 link 标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性,这些属性一般可分为三大类:例形状、尺寸、颜色称为可视化部分,而惯性矩阵、碰撞参数单独分类。
这是官网提供的一个图片,基于这个图片大致解释一下惯性矩阵(intertial)、碰撞参数(collision),在仿真环境中我们的机器人也会与环境方式碰撞,那么怎样区分是否碰撞呢,其实就是在刚体部分划出一个区域,只要环境进入这个区域测定性为碰撞,惯性矩阵(intertial)可描述每个刚体的质量、柔韧性不同导致的惯性不同的现实情况。
1.属性
name —> 为连杆命名
2.子标签(三个)
visual —> 描述外观(对应的数据是可视的)
geometry 设置连杆的形状
标签1: box(盒状)
属性:size=长(x) 宽(y) 高(z)
标签2: cylinder(圆柱)
属性:radius=半径 length=高度
标签3: sphere(球体)
属性:radius=半径
标签4: mesh(为连杆添加皮肤)
属性: filename=资源路径(格式:package:////文件)
origin 设置偏移量与倾斜弧度
属性1: xyz=x偏移 y便宜 z偏移
属性2: rpy=x翻滚 y俯仰 z偏航 (单位是弧度)
metrial 设置材料属性(颜色)
属性: name
标签: color
属性: rgba=红绿蓝权重值与透明度 (每个权重值以及透明度取值[0,1])
collision —> 连杆的碰撞属性
Inertial —> 连杆的惯性矩阵
在此,只演示visual使用,
第一部分形状设置
<robot name = "mycar">
<link name = "base_link">
<!-- 可视化标签 -->
<visual>
<!-- 1.形状 -->
<geometry>
<!-- 1.1立方体 -->
<box size = "0.4 0.2 0.1"/>
<!-- 1.2圆柱 -->
<!-- <cylinder radius="0.5" length="0.1" /> -->
<!-- 1.3球体 -->
<!-- <sphere radius="0.3" /> -->
<!-- 1.4皮肤 -->
<mesh filename = "package://urdf01_rviz/meshes/autolabor_mini.stl"/>
</geometry>
<!-- 2.偏移量和弧度设置 -->
<!-- 3.颜色 -->
</visual>
</link>
</robot>
大家需要注意各个标签的层级关系
第二部分:偏移量和弧度设置
在描述好形状之后,出现的图形可能不是我们想要的姿态出现,这时候就要设置偏移量和弧度设置
<robot name = "mycar">
<link name = "base_link">
<!-- 可视化标签 -->
<visual>
<!-- 1.形状 -->
<geometry>
<!-- 1.1立方体 -->
<box size = "0.4 0.2 0.1"/>
</geometry>
<!-- 2.偏移量和弧度设置 -->
<!-- xyz坐标
rpy x(翻滚) y(俯仰) z (偏航)翻滚俯仰与偏航角度(3.14=180度 1.57=90度) -->
<origin xyz = "0 0 0 " rpy = " 0 0 "/>
<!-- 3.颜色 -->
</visual>
</link>
</robot>
第三部分颜色设置:’
<robot name = "mycar">
<link name = "base_link">
<visual>
<geometry>
<box size = "0.4 0.2 0.1"/>
</geometry>
<origin xyz = "0 0 0 " rpy = " 0 0 0 "/>
<!-- 3.颜色 -->
<!-- 颜色: rgba = ""r=red g=green b=blue a=alpha(透明度) 四者的取值都是0-1 -->
<material name = "car_locor">
<color rgba = "0.2 0.5 0.2 0.6" />
</material> -->
</visual>
</link>
</robot>
补充这里补充一下launch文件得内容:
<launch>
<!-- 在参数服务器载入URDF文件 -->
<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/test2.urdf" />
<!-- 启动 rviz -->
<node pkg="rviz" type="rviz" name="rviz" args = "-d $(find urdf01_rviz)/config/my_car.rviz" />
</launch>