机器人控制系列教程之URDF文件语法介绍

前两期推文:机器人控制系列教程之动力学建模(1)机器人控制系列教程之动力学建模(2),我们主要从数学的角度介绍了机器人的动力学建模的方式,随着机器人技术的不断发展,机器人建模成为了机器人系统设计中的一项关键任务。URDF(Unified Robot Description Format)是一种用于描述机器人结构和属性的XML文件格式。它提供了一种标准化的方式,使得不同的机器人系统能够共享和交换机器人模型的信息。在ROS(Robot Operating System,后续将重点讲解)机器人操作系统中,URDF模型是机器人导航、仿真和感知等功能的基础。

< link > 标签

< link >标签用于描述机器人某个刚体部分的外观和物理属性,包括尺寸(size)、颜色(color、形状(shape)入、惯性矩阵(inertial matrix.)、入碰撞参数(collision properties)等。机器人的1ink结构一般如下图所示,其基本的URDF描述语法如下:

<link name="<link name>">
<inertial> . . . . . . </ inertial>
<visual> . . . . . . </visual>
<collision> . . . . . . </coll ision>
</link>

< visual >标签用于描述机器人link部分的外观参数,< inertial >标签用于描述link的惯性参数,而< collision >标签用于描述link的碰撞属性。从图中可以看到,检测碰撞的1ink区域大于外观可视的区域,这就意味着只要有其他物体与collision区域相交,就认为link发生碰撞。

< joint标签 >

< joint >标签用于描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限
制。根据机器人的关节运动形式,可以将其分为六种类型(如下表所示)。

<joint name="my_joint" type="floating">
    <origin xyz="0 0 1" rpy="0 0 3.1416"/>
    <parent link="link1"/>
    <child link="link2"/>

    <calibration rising="0.0"/>
    <dynamics damping="0.0" friction="0.0"/>
    <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
    <safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" />
 </joint>

其中必须指定joint的parent link和child link,还可以设置关节的其他属性。

  • < calibration >:关节的参考位置,用来校准关节的绝对位置;
  • < dynamics >:描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真中用到;
  • < limit >:描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制等;
  • < mimic >:描述该关节与已有关节的关系;
  • <safety_controller>:描述安全控制器参数。保护机器人关节的运动;

与人的关节样,机器人关节的主要作用是连接两个刚体1ink,这两个link分别称为parent link和child link.

< robot >标签

< robot >是完整机器人模型的最顶层标签,< link >和< joint >标签都必须包含在< robot >标签内。一个完整的机器人模型由一系列< link >和< joint >组成。
< robot >标签内可以设置机器人的名称,其基本语法如下:

<robot>
	<link>
		...
	</link>
	<link>
		...
	</link>
	<joint>
		...
	</joint>
</robot>

URDF文件里面有着与XML语言格式。要定义好一个机器人,首先你得知道机器人有什么。一个机器人主要由连杆(link)和关节(joint)组成,URDF具有类似XML树状结构的。link与 joint是robot下面的子分量,换句话说joint和link隶属于robot。知道了机器人的基本构成之后还不够,还需要知道基本组成部分的一些物理信息,例如连杆的质量属性,惯量属性,颜色,以及关节的种类,这到底是转动关节还是平动关节。因此link和joint也要有自己的子分量,比如inertial和visual, visual 下面还可以再次细分子分量geometry和material,然后material下面还可以有自己的子分量,由此往复我们就可以用URDF来充分定义好一个机器人的各个信息。所以一个增加了这些额外信息的URDF文件内容例子如下:

<robot>
	<link>
		<inertial>
			...
		</inertial>
		<visual>
			<geometry>
				...
			</geometry>
			<material>
				<color />
			</material>
		</visual>
	</link>
	...
</robot>

我们定义好了机器人的组成部分以及各个部分所具有的信息,接着还需要有属性描述这些量。比如robot,link,joint都有name属性,一个用来辨识模块的字符串。color有rgba属性,用来定义连杆的外表颜色。添加了相关信息的URDF文件长这个样子:

<robot name = "linkage">
	<link name = "root link">
		<inertial>
			...
		</inertial>
		<visual>
			<geometry>
				...
			</geometry>
			<material>
				<color rgba = "1 0 0 1" />
			</material>
		</visual>
	</link>
	...
</robot>

自定义模型及导入MATLAB

下面我们将通过URDF格式创建两个连杆,并创建运动副将这两个连杆固定起来。具体代码如下:

<?xml version="1.0"?>
<robot name='TechM_Robot'>
	<link name="link_1">
		<visual>
			<geometry>
				<cylinder length="0.6" radius="0.1"/>
			</geometry>
            <inertial>
                <origin rpy="0 0 0.3" xyz="0.0002 0.0002 0.1264"/>     
                <mass value="5.6431"/>
                <inertia ixx="0.1183" ixy="-0.0001" ixz="0.0001" iyy="0.1182" iyz="0.0001" izz="0.0140"/>  
            </inertial>
		</visual>
	</link>
	<link name="link_2">
		<visual>
			<geometry>
				<box size="0.6 0.1 0.2"/>
			</geometry>
			<origin rpy="0  0 1.57075" xyz="0 0 -0.3"/>
		</visual>
	</link>
	<joint name="joint_1" type="fixed">
		<parent link="link_1"/>
		<child link="link_2"/>
		<origin rpy="0 0 0" xyz="0 -0.22 0.25"/>
		<axis xyz="0 0 0"/>
	</joint>
</robot>

打开MATLAB软件,输入

TechM_Robot=importrobot('test.urdf');
show(TechM_Robot)

即可看到刚才创建的两个连杆的机器人以及机器人的各种属性。

对于通过URDF文件建立机器人的模型来说,相关的参数设置属实较为麻烦,明天得推文我们将讲解如何利用URDF生成工具来自动导出URDF文件。

参考资料

  1. https://blog.csdn.net/zhelijun/article/details/102709150
  2. https://www.guyuehome.com/34641

往期推荐

在这里插入图片描述

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值