ros回炉6-URDF

目录

一、URDF介绍

二、URDF的编写方式

2.1 用XML编写URDF文件

1.基础模型

2.添加机器人尺寸

3.添加运动学参数

4.图形化显示URDF模型

2.2 用solidworks插件导出URDF文件

参考


一、URDF介绍

URDF全称Unified Robot Description Format,指统一机器人描述格式。ROS中的urdf功能包包含一个URDFC++解析器,URDF文件使用XML格式描述机器人模型。

URDF创造的机器人模型包含的内容有:                                                                 

    ◦连杆link

    ◦关节joint

    ◦运动学参数axis

    ◦动力学参数dynamics

    ◦碰撞检测模型collision

URDF模型可以使用网格模型网格对象(STLCollada)、简单的盒状或者圆柱体组件。毕竟XML语言可以描述坐标系之间的关系,连杆与关节的关系,但是没有外观。也就是只有结构没有外形。

举个例子,如果仅仅只有XML语言编写的NAO机器人模型,在rviz打开是这样的:

但是加上了mesh文件就会好看很多。

     

二、URDF的编写方式

机器人底盘模型、机械臂模型都可以用urdf编写使用,一般有两种方法。

1.直接用XML语言编写机器人的结构,然后加上mesh文件作为机器人的外形。

2. 用solidworks插件在三维模型中选取连杆关节间的关系,直接导出urdf包。

第二种方法更简单,但是不如第一种可靠。

2.1 用XML编写URDF文件

1.基础模型

首先从整体结构出发,不考虑过多的细节,构建一个基础模型。

<robot name="test_robot">
  <link name="link1" />
  <link name="link2" />
  <link name="link3" />
  <link name="link4" />

  <joint name="joint1" type="continuous">
    <parent link="link1"/>
    <child link="link2"/>
  </joint>

  <joint name="joint2" type="continuous">
    <parent link="link1"/>
    <child link="link3"/>
  </joint>

  <joint name="joint3" type="continuous">
    <parent link="link3"/>
    <child link="link4"/>
  </joint>

这段代码也比较好理解,直接看也能看得懂。就是构建了一个机器人“test_robot”,这个机器人包含四个连杆和三个关节。关节1连接了连杆1和连杆2,关节2连接了连杆1和连杆3,关节3连接了连杆3和连杆4. 

2.添加机器人尺寸

在上述模型的基础上,为机器人添加尺寸大小。

对比上一节代码,这节的代码只是在关节的定义中多了<origin>一行。

由于每个环节的参考系都位于该环节的底部,所以在表示尺寸大小时,只需要描述其相对于连接的关节的相对位置关系。URDF中的<origin>域就是用来表示这种相对关系的。

<robot name="test_robot">
  <link name="link1" />
  <link name="link2" />
  <link name="link3" />
  <link name="link4" />

  <joint name="joint1" type="continuous">
    <parent link="link1"/>
    <child link="link2"/>
    <origin xyz="5 3 0" rpy="0 0 0" />
  </joint>

  <joint name="joint2" type="continuous">
    <parent link="link1"/>
    <child link="link3"/>
    <origin xyz="-2 5 0" rpy="0 0 1.57" />
  </joint>

  <joint name="joint3" type="continuous">
    <parent link="link3"/>
    <child link="link4"/>
    <origin xyz="5 0 0" rpy="0 0 -1.57" />
  </joint>

<origin>的前一个参数表示连杆间在x轴y轴的相对位移,后一个参数表示在轴上的旋转变换。

3.添加运动学参数

为机器人的关节添加旋转轴参数,使之具备基本的运动学参数。

这节代码相对上节多了<axis>一行。

<robot name="test_robot">
  <link name="link1" />
  <link name="link2" />
  <link name="link3" />
  <link name="link4" />

  <joint name="joint1" type="continuous">
    <parent link="link1"/>
    <child link="link2"/>
    <origin xyz="5 3 0" rpy="0 0 0" />
    <axis xyz="-0.9 0.15 0" />
  </joint>

  <joint name="joint2" type="continuous">
    <parent link="link1"/>
    <child link="link3"/>
    <origin xyz="-2 5 0" rpy="0 0 1.57" />
    <axis xyz="-0.707 0.707 0" />
  </joint>

  <joint name="joint3" type="continuous">
    <parent link="link3"/>
    <child link="link4"/>
    <origin xyz="5 0 0" rpy="0 0 -1.57" />
    <axis xyz="0.707 -0.707 0" />
  </joint>

 joint绕轴旋转可以如上表示。

4.图形化显示URDF模型

ROS提供了相应的工具,可以让URDF图像化显示出来。

2.2 用solidworks插件导出URDF文件

这个东西是我最初接触ros时尝试做的东西,可以从之前的博客 使用solidworks插件获取urdf包 中查看。隔了有些年头,但是用法应该没啥变化的。

 

参考

1.古月居 ROS探索总结(二十三)——解读URDF

2.ROS wiki urdf

3.《ROS进阶实例》第四章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangjiali12011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值