ROS:gazebo的三轮车实例xacro文件解读

一:介绍

        urdf和xacro是ROS里面对机器人模型搭建的两种格式,其中urdf文件是可以由xacro文件产生的,可以说,xacro文件是urdf文件的高级升级版。接下来以gazebo_plugins包里的tricycle_drive文件夹来介绍一下macro文件

二:tricycle.xacro文件

        该文件在gazebo_plugins/test/tricycle_drive/xacro/tricycle文件夹内,是搭建三轮车模型的描述文件,其代码为:




  
  

  
  
  

第一行

代表使用的xml版本是1.0

 

第二行

机器人的名字叫做"tricycle",其使用的格式为在"http://www.ros.org/wiki/xacro"中定义的xacro格式

第三第四行

  
  

第三行是注释,这里代表下一步要载入Rviz color的定义文件

第四行表示,需要的文件是 gazebo_plugins包内/test/tricycle_drive/xacro文件夹下的materials.xacro文件

第五六七行

  
  
  

第五行还是注释,表明接下来要载入的是robot的定义文件

第六行表示,载入的文件是 gazebo_plugins包内/test/tricycle_drive/xacro/tricycle文件夹下的tricycle_body.xacro文件

第七行表示,tricycle_body的父环节是base_link,使用的碰撞网格文件是package://gazebo_plugins/test/tricycle_drive/meshes/tricycle

最后一行

表示机器人的定义结束。

从上文中可以看出,xacro在定义robot的过程中载入了另外两个xacro文件,从而实现了模块化的代码复用,这样当我们在一个robot中重复使用一些组件时,就不用多次编写代码,减少了工作量。

 

三:tricycle_body.xacro文件



  
  
  

  
  
  
  
  

  

    
    

    
    

    
    
    
    

    
    

  

接下来详细解释


这两行的作用跟tricycle.xacro中一致

  
  
  

这三行,定义了参数PI=3.1415926,驱动轮半径radius_actuated_wheel=0.135,编码器轮半径radius_encoder_wheel=0.135

  
  
  
  
  

这五行,载入了五个文件,分别是力有关的文件inertia_tensors.xacro,机器人地盘的描述文件tricycle_chassis.xacro,轮子的描述文件wheel.xacro,驱动轮的描述文件wheel_actuated.xacro,跟三轮车插件有关的文件tricycle_plugins.xacro

这一行代表接下来的代码用于描述名为tricycle_body的macro(宏),使用的参数为parent meshes。

    
    

环节名称是${parent}运算得到的结果。

    
    

底盘模型是tricycle_chassis(前面载入的文件),名字叫chassis,上一级环节是${parent}计算得到的结果,坐标{0 0 0},初始旋转角度{ 0 0 0 },网格是${meshes}计算得到的结果。

    
    
    
    

有三个轮子,其中两个是wheel类型,由wheel.xacro文件描述,名称分别为left和right,父环节为${parent}计算得到的结果,规定初始坐标,规定半径,规定长度,规定网格。

还有一个轮子是wheel_actuated类型,由wheel_actuated.xacro文件描述,名称为front,父环节为${parent}计算得到的结果,坐标为[1.14 0 0],规定初始旋转角度,规定半径,规定长度,规定网格。

    
    

motor插件,为tricycle_drive类型,(由前面载入的tricycle_plugin.xacro文件描述)

  

macro(宏)定义结束

robot定义结束

四:tricycle_chassis.xacro文件



  
  
  
  

  

  
  
    
    
    
  

  
    
      
        
      
      
    
    
      
        
      
    
    
  

  
    
  

  

具体解释


同上

  
  
  
  

定义了四个参数:M_PI,DX,DY,DZ

 

定义了一种名为tricycle_chassis宏,参数包括name,parent,xyz,rpy,meshes

  
  
    
    
    
  

定义了一个连接父环节和子环节的关节

  
    
      
        
      
      
    
    
      
        
      
    
    
  

定义了一个子环节,是一个立方体

  
    
  

gazebo的设置,具体不是很明白。

  

结束宏定义

结束robot定义

五:wheel.xacro文件

六:wheel_actuated.xacro文件

七:inertia_tensors.xacro文件

是用于计算惯性距的文件,这里可以先不管他

八:ricycle_plugin.xacro文件

看不懂......

 

 

注意:xacro:后面自定义的是宏的名称,宏是在其他文件中定义的,例如在tricycle_body.xacro中有,这就意味着使用了一个tricycle_drive宏,这个宏是在tricycle_plugin.xacro中定义的,定义的代码是


...

 

你可能感兴趣的:(ros系统)