当前位置: 首页 > news >正文

机器人控制系列教程之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

往期推荐

在这里插入图片描述

http://www.lryc.cn/news/385114.html

相关文章:

  • Arathi Basin (AB) PVP15
  • Ubuntu/Linux SSH 端口转发
  • flask的locked_cached_property
  • OSI七层模型TCP/IP四层面试高频考点
  • Swagger2及常用校验注释说明
  • 【项目实训】各种反爬策略及爬虫困难点总结
  • 能量智慧流转:全面升级储能电站的智能网关解决方案
  • 【金融研究】6月,对冲基金狂卖美国科技股 短期乐观,长期悲观?“油价最大空头”花旗:明年跌到60
  • GroundingDINO1.5突破开放式物体检测界限:介绍与应用
  • centos编译内核ko模块
  • Android13 WMS窗口层级树
  • 计算机毕业设计Python+LSTM+Tensorflow股票分析预测 基金分析预测 股票爬虫 大数据毕业设计 深度学习 机器学习 数据可视化 人工智能
  • 仓库管理系统14--仓库设置
  • Python 算法交易实验73 QTV200第二步: 数据清洗并写入ClickHouse
  • 记录:有趣的C#多元运算符 ? : 表达式写法
  • 华宽通中标长沙市政务共性能力建设项目,助力智慧政务建设新飞跃
  • [面试题]计算机网络
  • 企业级低代码开发效率变革赋能业务增长
  • 2024最新总结:1500页金三银四面试宝典 记录35轮大厂面试(都是面试重点)
  • 使用Spring Boot和Thymeleaf构建动态Web页面
  • 扫盲之webSocket
  • 一些硬件知识(十二)
  • Adobe Acrobat编辑器最新版下载安装 Adobe Acrobat版本齐全!
  • k8s如何使用 HPA 实现自动扩展
  • Hi3861 OpenHarmony嵌入式应用入门--0.96寸液晶屏 iic驱动ssd1306
  • 代码随想录训练营第二十二天 77组合
  • Unity踩坑记录
  • 内容安全复习 1 - 信息内容安全概述
  • 【深度学习】python之人工智能应用篇--跨模态生成技术
  • springboot中获取某个注解下面的某个方法的方法名,参数值等等详细实例