机器人描述格式-URDF详解

URDF格式在ROS中是一个非常重要的机器人模型描述格式,URDF采用各种标签描述具体的机器人模型

1 机器人名称描述

<robot name="mrobot_chassis">

..........

</robot>

robot name定义了机器人的名称

<robot name>标签是完整机器人模型最顶层的标签,<link>和<jiont>.....等其他标签都必须包含在

<robot name>....................................</robot>里面

2 <link>描述标签
<link name="base_link">  
    <inertial>
        <mass value="0.001"/>
        <origin xyz="0 0 0"/>
        <inertia ixx="0.000" ixy="0.0" ixz="0.0" iyy="0.000" iyz="0.0" izz="0.000"/>
    </inertial>
    <visual>
        <origin xyz=" 0 0 0" rpy="0 0 0" />                                  
        <geometry>
             <cylinder length="0" radius="0"/>
        </geometry>
        <material name="yellow">  
             <color rgba="0 0 0 0"/>
        </material>
    </visual>
    <collision>
        <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
        <geometry>
             <box size="0.0 0.0 0.0" />
        </geometry>
    </collision>
</link>

link标签用于描述机器人某个刚体部分的外观和物理属性,包括尺寸 颜色 形状 惯性矩阵和碰撞参数等。

其中 <inertial>.........</inertial>用于描述link的惯性参数其中<mass>是以千克为单位定义的组件重量,<inertia>是

3×3的转动惯量矩阵。

<visual> .........</visual>用于描述机器人link部件的外观参数。

<collision>..........</collision>用于描述link的碰撞属性一般检测碰撞区域大于外观可视的区域,只要与collision区域

相交即可认为与该部件发生碰撞。

3 机器人关节属性连接标签<jiont>

<jiont>标签用于描述机器人关节运动学和动力学属性,包括关节运动位置速度等,关节的type运动形式为以下几种

<jiont>标签

<joint name="joint" type="continuous">
     <origin xyz="0 0 0" rpy="0 0 0"/>
     <parent link="left_motor"/>
     <child link="left_wheel_link"/>
     <calibration............/>
     <dynamics.............../>
     <limit................../>
     <axis xyz="0 1 0"/>
</joint>

<joint>必须指定parent link和child link参数,其他参数可选

<calibration>关节的参考位置,用于矫正关节的绝对位置

<dynamics>用于描述关节的物理属性,若阻尼 摩擦等

<limit>用于描述运动的一些极限值,比如关节的上下运动的极限角度等

<limit  effort = " " lower = " " upper = " "  velocity = " " />

标签用于选择以下属性:effort(关节所承受的最大力),lower(赋值给关节的下限,旋转关节的单位

是弧度,移动关节的单位是米),upper(赋值给关节的上限),velocity(强制关节的最大速度)

4 创建一个简单机器人模型例子解析

<?xml version="1.0" ?>
<robot name="mrobot_chassis">

    //robot name 标签用于定义所描述机器人的名称

    <link name="base_link">  
        <visual>  //
            <origin xyz=" 0.1 0.1 0.1" rpy="0 0 0" />                                 
            <geometry>
                <cylinder length="0.005" radius="0.13"/>
            </geometry>
            <material name="yellow">  
                <color rgba="1 0.4 0 1"/>
            </material>
        </visual>
    </link>

    //link标签描述了机器人某个刚体部分的外观和物理属性,包括尺寸,颜色,形状惯性和碰撞参数等,visual...../visual 标签描述机器人某个部件的外观参数等。origin 标签描述了所绘制外观geometry的坐标起点,一般对于规则形状的外观坐标起点位于规则形状的重心位置, cylinder 标签描述了这个圆柱体的尺寸,material 标签用于描述外观的颜色等信息

    <joint name="base_left_motor_joint" type="fixed"> //joint...../joint标签用于描述机器人关节的运动学和动力属性
        <origin xyz="0.1 0.1 0.1" rpy="0 0 0" />        
        <parent link="base_link"/>
        <child link="left_motor" />
    </joint>

   //上述joint...../joint标签中一般描述origin parent child等参数,origin描述了joint连接点基于parent link="base_link"
     坐标的偏移量,一般在rviz仿真中左上角Fixed Frame 的map选项设置成base_link,则base_link在rviz中为坐标原点,那么        origin所描述的joint为基于坐标原点的偏移量,parent为jiont的支撑连接部件,child为子部件,joint就为子部件和支撑连接部件     的关节

    <link name="left_motor">
        <visual>
            <origin xyz="0.2 0.2 0.2" rpy="0 0 0" />
            <geometry>
                <cylinder radius="0.02" length = "0.08"/>
            </geometry>
            <material name="gray">
                <color rgba="0.75 0.75 0.75 1"/>
            </material>
        </visual>
    </link>
   //link name="left_motor"标签为base_left_motor_joint连接件的子部件,其中origin描述了该部件基于base_left_motor_joint关节
     坐标的偏移点,base_left_motor_joint关节的坐标原点为origin xyz="0.1 0.1 0.1",若left_motor部件的origin xyz="0.2 0.2 0.2"
     则表示left_motor所描述部件基于base_left_motor_joint关节坐标xyz="0.1 0.1 0.1"的偏移量为xyz="0.2 0.2 0.2"

    <joint name="left_wheel_joint" type="continuous">
        <origin xyz="0.5 0.0485 0" rpy="0 0 0"/>
        <parent link="left_motor"/>
        <child link="left_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>

   //连接关节joint name="left_wheel_joint" 为left_motor和left_wheel_link关节点,left_wheel_link为left_motor的子部件,其中
     left_wheel_joint的基础坐标是基于parent link="left_motor"的关节joint name="base_left_motor_joint" 的基础坐标偏移量
     而非left_motor的origin偏移量

.......

..........

</robot>

5 关于<joint>坐标偏移量,如下图所示一个运动部分由好几个关节组成

图中左下角为坐标参考点,在rviz仿真中机器人部件的坐标参考点是可以修改,rviz界面左上角Fixed Frame 的

map选项中可以修改。假设图中参考点为第4点中<link name="base_link">参考点,那么后面关节描述的origin坐

标是关于参考点或者前一个相连接的关节为参考,如上图joint3的关节坐标的偏移是以jiont2为参考,而跟link3部

分的origin坐标偏移无关,如joint name="left_wheel_joint"是joint name="base_left_motor_joint" 的子关节,那么

joint name="left_wheel_joint"的origin坐标偏移是以joint name="base_left_motor_joint" 的origin坐标为偏移,而

跟link name="left_motor"部件的origin坐标偏移无关,link name="left_motor"部件的origin坐标偏移表示该部件

偏移joint name="base_left_motor_joint"坐标的量。

 

 

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值