URDF学习(一)什么是URDF以及怎么理解一个URDF文件

1.什么是URDF?
URDF全称(United Robotics Description Format)统一机器人描述格式,是一个XML语法框架下用来描述机器人的语言格式,URDF在ROS界很流行。我们可以

  1. 通过URDF对机器人建模然后放到ROS里面进行仿真与分析
  2. 把一个URDF文件转换成simscape模型,在Simulink里面进行仿真分析或者控制器设计。
  3. 把simscape模型转化成urdf格式

2.URDF文件长啥样?
URDF文件里面有着与XML语言格式。要定义好一个机器人,首先你得知道机器人有什么。一个机器人主要由连杆(link)和关节(joint)组成, URDF具有类似XML树状结构的,比如下面的例子:

>
	>
		...
	>
	>
		...
	>
	>
		...
	>
>

上面的 link 与 joint 是 robot 下面的子分量(应该有比‘子分量’更好的描述),换句话说 joint 和 link 隶属于 robot 。知道了机器人的基本构成之后还不够,还需要知道基本组成部分的一些物理信息,例如连杆的质量属性,惯量属性,颜色,以及关节的种类,这到底是转动关节还是平动关节。因此 link 和 joint 也要有自己的子分量,比如 inertial 和 visual , visual 下面还可以再次细分子分量 geometry 和 material ,然后 material 下面还可以有自己的子分量,由此往复我们就可以用URDF来充分定义好一个机器人的各个信息。所以一个增加了这些额外信息的URDF文件内容例子如下

>
	>
		>
			...
		>
		>
			>
				...
			>
			>
				>
			>
		>
	>
	...
>

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

>
	>
		>
			...
		>
		>
			>
				...
			>
			>
				>
			>
		>
	>
	...
>

把这些属性附上对应的数值之后,一个机器人的 urdf 模型中各个模块的外表和物理属性就建立好了。
接下来我们来描述关节连杆之间的关系。

3.URDF的层次结构以及动力学树
URDF文件里,就像XML一样,link 通过 joint 按一定的层次一个个联系在一起。 joint 通过 parent-child 关系把上下 link 联系起来,parent link可以同时作为其他 link 的child link,而child link也可以同时作为其他link的parent link,举例:

> and > Joint Elements
>
	... >
		>
		>
	>
	... >
		>
		>
	>
	... >
		>
		>
	>
>

上述URDF语法建立了一个这样的连杆模型:

  • 连杆A通过关节A连接着连杆B,连杆A是父连杆
  • 连杆C通过关节B连接着连杆A,连杆A是父连杆
  • 连杆D通过关节C连接着连杆C,连杆C是父连杆

我们可以通过connectivity graph来展示 link 之间的从属和连接关系,用圆代表link,箭头代表joint,joint 从 parent link流出,指向child link,于是上述URDF文件可以用图表示为:
URDF学习(一)什么是URDF以及怎么理解一个URDF文件_第1张图片
描述好关系之后,一个加上上面所说的物理和外表属性,一个完整的机器人 URDF 模型就建立好了。
但是在URDF里面,模型的拓扑结构也受到着一定的限制:那就是URDF不能定义一个闭环的连杆模型。翻译成URDF说法就是:

  • 一个child 只能有一个parent link
  • 只有root link(也就是connectivity graph的起源)可以有多个分支
  • 一个模型只能由一个root link

举例:
Kinematic Loop URDF Example

>
	... >
		>
		>
	>
	... >
		>
		>
	>
	... >
		>
		>
	>
	... >
		>
		>
	>
>

上述URDF的连线图如下所示:
URDF学习(一)什么是URDF以及怎么理解一个URDF文件_第2张图片
它有一个child link D具有两个parent link, 因此该模型不能用URDF来建模

4. URDF里必要的和可选的部分
URDF里面并不是所有的信息都需要定义,一些信息比如 link 下面的 inertial 信息就是可选的,可以定义也可以不定义。下面的例子中绿色代表可选的信息,可填可不填:
URDF学习(一)什么是URDF以及怎么理解一个URDF文件_第3张图片

你可能感兴趣的:(机器人建模)