ROS1学习笔记--urdf
程序员文章站
2022-06-04 16:13:38
...
urdf文件上是ROS上一个非常重要的机器人模型描述格式。
在建立一个机器人模型之前,先来了解一下我们待会会在urdf文件中用到的一系列标签。
1. <link>标签
- 描述机器人某个刚体部分的外观和物理属性
- 尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数等(collision properties)等
<link name="<link_name>">
<visual>...</visual>
<collision>...</collision>
<inertial>...</inertial>
</link>
- <visul>描述机器人link部分的外观参数,如size,color,shape等
- <inertial>描述link的惯性参数
- <collosion>描述link的碰撞属性
**如果要在gazebo中进行物理仿真,就要添加物理属性和碰撞属性了
2 .<joint>标签
- 描述机器人关节的运动学和动力学属性
- 包括关节运动的位置和速度限制
- 根据关节运动形式,可以将其分为6种类型,如下所示:
- 固定关节:fixed,不允许运动
- 转动关节:revolute,类似与continus,有旋转角度极限
- 滑动关节:prismatic,沿着某一轴线运动的关节,带有位置极限
- 浮动关节:floating,运行进行平移,旋转运动
- 平面运动关节:planner,允许在平面正交方向上平移或旋转
- 旋转关节:continus,可以绕某轴线无限旋转
<joint name="<name of the joint>" type="<joint type>">
<parent link="child link"/>
<child link="child_link"/>
<calibration..../>
<dynamics damping.../>
<limit effort.../>
</joint>
- <calibration>关节的参考位置,用来校准关节的绝对位置
- <dynamics>描述关节的物理属性,例如阻尼值,物理静摩擦力等
- <limit>描述运动的一些极限值,包括关节运动的上下限极限位置、速度限制、力矩限制等
- <mimic>描述该关节与已有关节的关系
- <safety_controller>描述安全控制器参数
3. <robot>标签
- 完整机器人模型的最顶层标签
- <link>和<joint>标签都必须包含在内
4. <gazebo>标签
5.代码实例
下面是一个四轮小车的简单模型代码:
<?xml version="1.0" ?>
<robot name="mbot">
<link name="base_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<box size="0.8 0.550 0.3"/>
</geometry>
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</material>
</visual>
</link>
<joint name="left_front_wheel_joint" type="continuous">
<origin xyz="0.25 0.306 -0.1" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="left_front_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="left_front_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.122" length = "0.062"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="left_back_wheel_joint" type="continuous">
<origin xyz="-0.25 0.306 -0.1" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="left_back_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="left_back_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.122" length = "0.062"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="right_front_wheel_joint" type="continuous">
<origin xyz="0.25 -0.306 -0.12" rqy="0 0 0"/>
<parent link="base_link"/>
<child link="right_front_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="right_front_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.122" length = "0.062"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="right_back_wheel_joint" type="continuous">
<origin xyz="-0.25 -0.306 -0.1" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="right_back_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="right_back_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.122" length = "0.062"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
用.launch文件启动:
<launch>
<param name="robot_description" textfile="$(find fourwheelrobot_description)/urdf/urdf/fourwheelrobot_base.urdf" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find fourwheelrobot_description)/config/fourwheelrobot_urdf.rviz" required="true" />
</launch>
模型rviz可视化如下图:
参考网站:官方wiki--tf
官方指导网站:Tutorials
某个博主翻译的中文版:中文tutorials
古月大神:urdf解读
官方模型案例:Examples
xml语法规范:http://wiki.ros.org/urdf/XML
下一篇: ROS学习记录1——安装ROS