一、URDF简介
Unified Robot Description Format,简称URDF,统一机器人描述格式。ROS可以解析URDF文件中使用XML格式描述的机器人模型。
1、Link
描述机器人某个刚体外观和物理属性。
包括:尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(mertial matrix)、碰撞参数(collision properties)
<visual>link部分的外观参数
<inertial>惯性参数
<collision>碰撞属性
2、joint
运动学和动力学属性。
位置、速度限制。
关节运动形式:
continuous(无限旋转关节)、revolute(有旋转角度的旋转关节)、prismatic(滑动,沿某一轴移动,有位置极限)、planner(平面)、floating(浮动)、fixed(固定、不可移动)
<calibration>关节的参考位置,校准关节的绝对位置
<dynamics>关节的物理属性
<limit>运动极限值
<mimic>该关节与已有关节的关系
<safety_controller>安全控制器参数
二、实践
1、创建功能包
$ catkin_create_pkg mbot_description urdf xacro
mbot_description:约定俗成的机器人命名格式:机器人名+description。
urdf:创建功能包需依赖urdf功能包,以解析urdf模型。
xacro:功能包依赖
2、创建文件夹
urdf:存放机器人模型的urdf或xacro文件。
meshes:存放urdf中引用的模型渲染文件。
launch:保存相关启动文件。
config:保存rviz的配置文件。
3、创建launch文件
<launch>
<param name="robot_description" textfile="$(find mbot_description)/urdf/urdf/mbot_base.urdf" />
<!--param:加载ros参数。$(find mbot_description)/urdf/urdf/mbot_base.urdf:添加路径,加载urdf模型到rviz中。-->
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<!--配合GUI工具,在rviz显示插件控制joint做状态变化-->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<!--将robot各个links、joints之间的关系通过tf形式,整理成三维姿态信息发布-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>
4、配置文件
5、urdf建模
根标签
<?xml version="1.0" ?>
<robot name="mbot">
...
</robot>
创建主体
<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>
创建左轮
<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="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="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="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>
三、urdf文件检查模型整体结构
在urdf文件当前路径下打开终端:
$ urdf_to_graphiz mbot_kinect.urdf
生成两个文件,其中一个是urdf文件,pdf打开可看到整体结构。