您当前的位置: 首页 >  机器人

鱼香ROS

暂无认证

  • 0浏览

    0关注

    498博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

《动手学ROS2》8.1URDF统一机器人建模语言

鱼香ROS 发布时间:2022-01-24 19:09:18 ,浏览量:0

本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途。 公众号

8.1 URDF统一机器人建模语言

大家好,我是小鱼,本节课我们来介绍机器人的URDF建模。

URDF(Unified Robot Description Format)统一机器人描述格式,URDF使用XML格式描述机器人文件。

XML是 被设计用来传输和存储数据的可扩展标记语言,注意语言本身是没有含义的,只是规定了其数据格式

比如说下面这段信息:


小鱼
鱼粉
100万
收到来自鱼粉的100万打赏!

其中的等标签都是自定义的,只要符合xml格式即可

XML格式在线校验工具:在线代码格式化 (oschina.net)

XML格式注释:

robot标签的属性name:

robot标签的子标签link: link>

使用XML定义的一个最简单的URDF模型可以像下面这样



  
    
      
        
      
    
  

接着我们从下面四个方面介绍URDF:

  1. URDF的组成介绍
  2. URDF-Link介绍
  3. URDF-Joint介绍
  4. 创建一个简单的URDF并在RVIZ2中可视化
1.URDF的组成介绍

一般情况下,URDF由一个声明信息两种关键组件共同组成

1.1 声明信息

声明信息包含两部分,第一部分是xml的声明信息,放在第一行


第二部分是机器人的声明,通过robot标签就可以声明一个机器人模型


 	

1.2 两种关键组件

观察下图机器人的结构

image-20220113094606907

可以简化为如下五个部件组成:

  • 躯体

  • 左右轮子

  • 支撑轮

  • 雷达激光

  • IMU模块

这五个部件之间的固定方式为:

graph 
A[左轮] -->C[躯体]
B[右轮] -->C[躯体]
D[IMU] -->C[躯体]
E[雷达] -->C[躯体]
F[支撑轮子] -->C[躯体]

我们把左轮,右轮、支撑轮子,IMU和雷达部件称为机器人的Link

而Link和Link之间的连接部分称之为Joint关节

接着我们给每个link和joint取个名字。

graph 
A[左轮:left_wheel_link] --left_wheel_joint-->C[躯体]
B[右轮:right_wheel_link] --right_wheel_joint-->C[躯体]
D[IMU:imu_link] --imu_joint-->C[躯体]
E[雷达:laser_link] --laser_joint-->C[躯体]
F[支撑轮子:caster_link] --caster_joint-->C[躯体:base_link]

所以我们就可以使用6个link和5个joint来描述这个机器人,接着我们分别对link和joint进行详细的介绍。

image-20220112134251483

2.Link介绍

上面我们介绍完了link,那一个link该怎么写呢?

我们来看一个base_link的,通过link标签即可声明一个link,属性name指定部件名字

  

  

通过两行代码就可以定义好base_link,但现在的base_link是空的,我们还要声明我们的base_link长什么样,通过visual子标签就可以声明出来机器人的visual形状。

  
  
  	
      
      
		
      
    
  
2.1 link标签定义

link的子标签列表

  • visual 显示形状
    • (几何形状)
      • 长方体
        • 标签属性: size-长宽高
        • 举例:
      • 圆柱体
        • 标签属性:radius -半径 length-高度
        • 举例:
      • sphere 球体
        • 属性:radius -半径
        • 举例:
      • mesh 第三方导出的模型文件
        • 属性:filename
        • 举例:
    • origin (可选:默认在物体几何中心)
      • 属性 xyz默认为零矢量 rpy弧度表示的翻滚、俯仰、偏航
      • 举例:
    • material 材质
      • 属性 name 名字
        • color
          • 属性 rgba a代表透明度
          • 举例:
  • collision 碰撞属性,仿真章节中讲解
  • inertial 惯性参数 质量等,仿真章节中讲解
3.Joint介绍

joint为机器人关节,机器人关节用于连接两个机器人部件,主要写明父子关系

  • 父子之间的连接类型,是否固定的,可以旋转的等

  • 父部件名字

  • 子部件名字

  • 父子之间相对位置

  • 父子之间的旋转轴,绕哪个轴转

image-20220112162931639

比如我们再建立一个雷达部件laser_link,然后将laser_link固定到base_link



    
  
  
  	
      
      
		
      
    
  
    
  
  
  	
      
      
		
      
      
      	 
      
    
  
    
  
    
        
        
        
    


3.1 joint标签详解 joint属性
  • name 关节的名称
  • type 关节的类型
    • revolute: 旋转关节,绕单轴旋转,角度有上下限,比如舵机0-180
    • continuous: 旋转关节,可以绕单轴无限旋转,比如自行车的前后轮
    • fixed: 固定关节,不允许运动的特殊关节
    • prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限
    • planer: 平面关节,允许在xyz,rxryrz六个方向运动
    • floating: 浮动关节,允许进行平移、旋转运动
joint的子标签
  • parent 父link名称
  • child子link名称
  • origin 父子之间的关系xyz rpy
  • axis 围绕旋转的关节轴

下一节我们尝试将我们的机器人模型在RVIZ2中显示出来

image-20220113104129248

参考文档

  • urdf/XML/link - ROS Wiki

  • http://docs.ros.org/en/foxy/Tutorials/URDF/URDF-Main.html

技术交流&&问题求助:

  • 微信公众号及交流群:鱼香ROS

  • 小鱼微信:AiIotRobot

  • QQ交流群:139707339

  • 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划

作者介绍:

我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚 初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金) 目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人

关注
打赏
1666092100
查看更多评论
立即登录/注册

微信扫码登录

0.0419s