一般机器人可以分为以下四个部件:硬件系统,驱动系统,传感系统,控制系统
URDF(统一机器人描述格式):
1 使用xml文件格式
2 包含link和joint,link为刚体部分,joint为连杆,驱动部分
link:
描述机器人外观,物理属性,碰撞体积,每个link会成为一个坐标系
joint
描述两个link间关系,有以下6类:
continuous:绕轴无限旋转
revolute:绕轴旋转,有角度限制
prismatic:沿轴线滑动,有距离上限
fixed:无法一定
floating:允许平移和旋转
planar:允许平面正交向平移旋转
ROS2里平动默认单位为米,转动单位为弧度
<?xml version="1.0" ?>
<robot name="mbot">
<link name="base_link">
<visual>
<origin xyz=" 0 0 0" rpy="0 0 0" />
<geometry>
<cylinder length="0.16" radius="0.20"/>
</geometry>
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</material>
</visual>
</link>
<joint name="left_wheel_joint" type="continuous">
<origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="left_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="left_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.06" length = "0.025"/>
</geometry>
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
</visual>
</link>
<joint name="right_wheel_joint" type="continuous">
<origin xyz="0 -0.19 -0.05" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="right_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="right_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.06" length = "0.025"/>
</geometry>
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
</visual>
</link>
<joint name="front_caster_joint" type="continuous">
<origin xyz="0.18 0 -0.095" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="front_caster_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="front_caster_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<sphere radius="0.015" />
</geometry>
<material name="black">
<color rgba="0 0 0 0.95"/>
</material>
</visual>
</link>
<joint name="back_caster_joint" type="continuous">
<origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="back_caster_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="back_caster_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<sphere radius="0.015" />
</geometry>
<material name="black">
<color rgba="0 0 0 0.95"/>
</material>
</visual>
</link>
</robot>
实现效果在rviz中如下
该机器人有一个圆柱底座,两个驱动轮,两个支撑万向轮
声明robot,在robot里面包含link和joint
<link name="base_link">
<visual>
<origin xyz=" 0 0 0" rpy="0 0 0" />
<geometry>
<cylinder length="0.16" radius="0.20"/>
</geometry>
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</material>
</visual>
</link>
声明base_link,及基座
1 这这里
内部声明结构外观:
2
<origin xyz=" 0 0 0" rpy="0 0 0" />
在坐标系位置,此时坐标位置和旋转角度都为0
3
<geometry>
<cylinder length="0.16" radius="0.20"/>
</geometry>
设置形状为圆柱,高0.16m,半径0.20m
4
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</material>
声明材料名称及颜色(用BGR模型),a代表透明度
<link name="left_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.06" length = "0.025"/>
</geometry>
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
</visual>
</link>
左轮,名称left_wheel_link
1
这里x方向旋转1.5707弧度(90°),使得圆柱体竖直
其余参数和base_link类似
<joint name="left_wheel_joint" type="continuous">
<origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="left_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
基座和左轮连接
1
连接点坐标
2 type=“continuous”
连接类型为continuous
3
parent link为被连接的link,此处为base_link
4
child link为连接并在parent link上运动的link,此处为left_wheel_link
右轮和左轮程序基本相同
前万向轮
<link name="front_caster_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<sphere radius="0.015" />
</geometry>
<material name="black">
<color rgba="0 0 0 0.95"/>
</material>
</visual>
</link>
这里注意一点:
<sphere radius="0.015" />
球形声明时只用标明半径,此时0.015米
其他和前面基本相同
在URDF里导入外部模型
<link name="kinect_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 1.5708"/>
<geometry>
<mesh filename="package://learning_urdf/meshes/kinect.dae" />
</geometry>
</visual>
</link>
<joint name="kinect_joint" type="fixed">
<origin xyz="0.15 0 0.11" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="kinect_link"/>
</joint>
1
<geometry>
<mesh filename="package://learning_urdf/meshes/kinect.dae" />
</geometry>
引入外部一个建模好的零件模型,名称kinect
urdf_to_graphiz (urdf文件名)
可以得到urdf文件描述的机器人模型示意图pdf,该pdf也在urdf文件存储路径下
注:如果找不到命令,要安装相关工具
sudo apt install liburdfdom-tools