ROS1学习笔记--urdf

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

猜你喜欢

转载自blog.csdn.net/weixin_40863346/article/details/80494352