URDF语法+练习案例(与Rviz的集成使用)+URDF工具

目录

URDF语法

练习案例

URDF工具


URDF语法

1.URDF是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度.....,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。

2.URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型。

标签包括:

  • robot 根标签,所有的 link 和 joint 以及其他标签都必须包含在 robot 标签内
  • link 连杆标签(用于描述机器人某个部件的外观和物理属性)
  • joint 关节标签(用于描述机器人关节的运动学和动力学属性,还可以指定关节运动的安全极限)
  • gazebo 集成gazebo需要使用的标签(用于配置仿真环境所需参数)

【1】 robot:

  • 属性:name (指定机器人模型的名称)
  • 其他标签都是其子标签

【2】link:

1.属性

  • name ---> 为连杆命名

2.子标签

  • visual ---> 描述外观(对应的数据是可视的)

    • geometry 设置连杆的形状

      • 标签1: box(盒状)

        • 属性:  size=长(x) 宽(y) 高(z)
      • 标签2: cylinder(圆柱)

        • 属性:  radius=半径   length=高度
      • 标签3: sphere(球体)

        • 属性:  radius=半径
      • 标签4: mesh(为连杆添加皮肤)

        • 属性:  filename=资源路径(格式:package:////文件)
    • origin 设置偏移量与倾斜弧度

      • 属性1: xyz=x偏移 y偏移 z偏移

      • 属性2: rpy=x翻滚 y俯仰 z偏航 (单位是弧度)

    • metrial 设置材料属性(颜色)

      • 属性: name

      • 标签: color

        • 属性: rgba=红绿蓝权重值与透明度 (每个权重值以及透明度取值[0,1],越大越深)
  • collision ---> 连杆的碰撞属性

  • Inertial ---> 连杆的惯性矩阵

【3】joint: 

1.属性

  • name ---> 为关节命名

  • type ---> 关节运动形式

    • continuous: 旋转关节,可以绕单轴无限旋转

    • revolute: 旋转关节,类似于 continues,但是有旋转角度限制

    • prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限

    • planer: 平面关节,允许在平面正交方向上平移或旋转

    • floating: 浮动关节,允许进行平移、旋转运动

    • fixed: 固定关节,不允许运动的特殊关节

2.子标签

  • parent(必需的)

    parent link的名字是一个强制的属性:

    • link:父级连杆的名字,是这个link在机器人结构树中的名字。
  • child(必需的)

    child link的名字是一个强制的属性:

    • link:子级连杆的名字,是这个link在机器人结构树中的名字。
  • origin

    • 属性: xyz=各轴线上的偏移量 rpy=各轴线上的偏移弧度。
  • axis

    • 属性: xyz用于设置围绕哪个关节轴运动。

练习案例

需求:创建一个四轮圆柱状机器人模型,机器人参数如下,底盘为圆柱状,半径 0.1m,高 0.08m,四轮由两个驱动轮和两个万向支撑轮组成,两个驱动轮半径为 0.035m,轮胎宽度0.015cm,两个万向轮为球状,半径 0.0075m,底盘离地间距为 0.015m(与万向轮直径一致)

目标:

 URDF语法+练习案例(与Rviz的集成使用)+URDF工具_第1张图片

流程:

1.创建一个功能包,导入 urdf 依赖

在当前功能包下,再新建几个目录:

urdf: 存储 urdf 文件的目录

config: 存储保存的已配置的rviz文件

launch: 存储 launch 启动文件

2. 新建urdf以及launch文件

2.1新建urdf文件


    
    
        
            
                
            
        
    

    


    


    


设置base_footprint的意义:

添加一个尺寸极小的link(上图中的base_footprint),再关联(通过joint)base_footprint与base_link (底盘),更方便移动整个物体,或者  同时修改base_link和其他物体link的origin (初始位置)
    前者方法是构建一个极小的base_footprint出来,然后与其他所有物体划分,再建立一个他们各自坐标系的相对关系,以这个footprint为参照坐标系,那么其他所有物体就会随之改变位置(更高效便捷地移动多个物体)
    后者是通过改变每个物体的重心的坐标系实现相同的视觉效果(较麻烦)

 2.2新建launch文件(下面的关节状态节点,我们选择发布动态的)


   
   
   
   
   
   
   
   

   
   

   
   
    

每次重复启动launch文件时,Rviz 之前的组件配置信息不会自动保存 ,我们可以将rviz文件另存为 

再启动时,就可以包含之前的组件配置了,使用更方便快捷。

launch文件中 Rviz 的启动配置添加参数:args,值设置为"-d 配置文件路径"  

3.底盘搭建

    
    
    
    
        
        
           
                
           

           

           
               
           
        
    
    
    
    
        
        
        
        
        
        
    

4.添加驱动轮


    
    
    
        
           
                
           

           

           
               
           
        
        
    
        
           
                
           

           

           
               
           
        
       
    
    
        
        

        
        
        
    
        
        

        
        
    

5.添加万向轮


    
    
    
        
           
                
           
           
           
               
           
        
           
    
        
           
                
           
           
           
               
           
        
       
    
    
        
        

        
        
        
    
        
        

        
        
        

最后,ctrl+s保存一下,打开vscode中的终端,source 一下再 roslaunch 包名 launch文件 就可以打开rviz(然后记得查看Fixed Frame是否为base_footprint 即以它为参照坐标系 )

URDF语法+练习案例(与Rviz的集成使用)+URDF工具_第2张图片

 我们先点击Add 选择添加TF坐标系,然后通过调节移动运动关节,例如上图的left2baselink,可以发现它的TF坐标系在转动(有抖动的现象,一般是launch文件中同时发布了静态和动态关节状态节点,上上面注释有说明)

URDF工具

在 ROS 中,提供了一些工具来方便 URDF 文件的编写,比如:

  • check_urdf命令可以检查复杂的 urdf 文件是否存在语法问题

  • urdf_to_graphiz命令可以查看 urdf 模型结构,显示不同 link 的层级关系

要使用工具之前,首先需要安装,安装命令: sudo apt install liburdfdom-tools

演示:

vscode中进入urdf文件所属目录,打开终端,

调用:check_urdf urdf文件 如果不抛出异常,说明文件合法,并且可以看见各个link之间的关系

调用: urdf_to_graphiz urdf文件,当前目录下会生成 pdf 文件 ,再通过 evince pdf文件 即可

URDF语法+练习案例(与Rviz的集成使用)+URDF工具_第3张图片

 URDF语法+练习案例(与Rviz的集成使用)+URDF工具_第4张图片

 

你可能感兴趣的:(c++,人工智能)