ROS机械臂开发:创建机器人URDF模型

1. URDF建模原理

URDF是一种使用XML格式描述的机器人模型文件

  • Links:坐标系与几何关系
  • Joints:Links之间的关系

标签

  • 描述机器人某个刚体部分的外观和物理属性;
  • 描述连杆尺寸、颜色、形状、惯性矩阵、碰撞属性等;
  • 每个link会成为一个坐标系

一个典型的link标签如下:


   
     
     
     
   

   
     
     
       
     
     
       
     
   

   
     
     
       
     
   
 

(注意长度单位是米,角度单位是弧度)
标签描述了碰撞属性,如下图红色框(圆柱体)所示,当进入框内时就会认为发生碰撞,这是为了加速碰撞检测做的一种简化


ROS机械臂开发:创建机器人URDF模型_第1张图片
link.png

标签

  • 描述两个link之间的关系,分为六种类型;
  • 包括关节运动的位置和速度限制;
  • 描述机器人关节的运动学和动力学属性
 
    
    
    

    
    
    
    
 

每个joint连接两个link,其中的origin是相对于上一个joint的origin描述的,而上面的标签中的origin是相对于joint坐标系表达的,也就是说在机器人运动过程中,每个连杆的joint和link坐标系是相对静止的,理解这一点很重要。

ROS机械臂开发:创建机器人URDF模型_第2张图片
joint.png

标签

整个模型由根标签包含,一个完整的机器人模型,由一系列组成


   ... 
   ... 
   ... 

    ....  
    ....  
    ....  

ROS机械臂开发:创建机器人URDF模型_第3张图片
robot.png

URDF建模存在的问题

  • 模型冗长,重复内容过多
  • 参数修改麻烦,不便于二次开发
  • 没有参数自动计算功能

由此产生了URDF的改进版本:xacro模型文件,它具有如下优点:

  • 精简模型代码:
    创建宏定义
    文件包含
  • 提供可编程接口:
    常量}
    变量
    数学计算
    条件语句

常量定义



常量使用


数学计算




宏定义


  
    
  
  
    
    
    
  

宏调用


  
  
    
    0.1
  
  
    
      
      
      
    
  

文件包含
比如传感器一个文件,机器人本体一个文件,移动底盘一个文件,用一个文件include三个文件拼在一起




2. 机械臂URDF建模

以一个6轴机器人为例,下图是在rviz中加载xacro文件后的显示

ROS机械臂开发:创建机器人URDF模型_第4张图片
6 DOF robot
颜色定义

    


    


    


    

link定义

包含可视化,惯性矩阵,碰撞检测三个部分


    
        
        
            
        
        
    
    
        
        
            
        
    
    

joint定义

    
    
    
    
    

参数定义







下面是在rviz中可视化该模型的launch文件,


    
    
    

    
    

    
    
    
    
    

    
    

3. 从SolidWorks三维模型导出URDF

真实的机械臂不会是这样的圆柱、方块组成的简单模型,真实场景是购买到厂商机械臂本体后,对方给你一个3D模型文件,如.stp文件,需要solidworks转成urdf导入ROS中使用。

步骤如下:
  1. 在solidworks里加载模型(以UR3的STP模型文件为例)


    ROS机械臂开发:创建机器人URDF模型_第5张图片
    导入3D模型
  2. 安装插件sw2urdfSetup做配置,link的部分,joint关系
    插件下载地址
    a) 插入基准轴,如图共6个axis

    ROS机械臂开发:创建机器人URDF模型_第6张图片
    插入旋转轴

    b) 工具--->File--->Export as URDF
    依次添加7个link(多出来的一个是基座base_link)和6个joint,如图:
    ROS机械臂开发:创建机器人URDF模型_第7张图片
    添加joint和link

    添加完成后,点击preview and export,在弹出来的窗口中,依次配置joint限位参数,当然留到URDF文件中手动添加tag也可以。
    ROS机械臂开发:创建机器人URDF模型_第8张图片
    配置joint限位

    最后next,finish,选择功能包保存路径,这个功能包将会在ROS中使用。

ROS机械臂开发:创建机器人URDF模型_第9张图片
导出的功能包

c) 修复一些小问题
直接编译功能包会出现一些错误,还需要修改一些小的问题:
(1)email地址,如下图的第10行,需改为 [email protected]的形式

ROS机械臂开发:创建机器人URDF模型_第10张图片
修改email地址

(2)修改display.launch文件中的urdf文件路径


ROS机械臂开发:创建机器人URDF模型_第11张图片
修改urdf文件路径
  1. 测试模型显示
    得到正确的模型功能包后,在rviz中测试一下模型是否正确显示以及各个关节运动是否正常。
i5@i5-ThinkPad-T460p:~/ws_moveit$ catkin_make
i5@i5-ThinkPad-T460p:~/ws_moveit$ roslaunch ur3 display.launch

打开rviz后,将Fixed frame更改为base_link,点击Add,添加RobotModel


ROS机械臂开发:创建机器人URDF模型_第12张图片
rviz

你可能感兴趣的:(ROS机械臂开发:创建机器人URDF模型)