ROS实践(三)xacro文件基础(urdf扩展)

目录

一、定义

二、xacro 文件常见组成部分

1. 命名空间声明

2. 定义宏

3. 调用宏

4. 定义参数

5. 条件语句 

6. 转换 xacro 文件为 urdf

7. gazebo标签

三、代码示例

 1. gazebo标签使用(仿真参数配置)

 2. 引用仿真配置并定义机器人模型(结构)

 四、加载仿真模型(含传感器的机器人)

1. 编写launch文件。

2. 实际效果。


一、定义

        通俗来说,xacro 就是 urdf 文件的一种“进阶版”,它是用来简化和优化机器人的描述文件,使得多个机器人可以共享同样的部件和结构,避免重复编写相同的代码。

        假设你有很多机器人,它们的结构相似,比如都有轮子、传感器、臂部等部件。每次你需要为这些机器人写 urdf 文件时,都要重复描述每个部件(比如轮子、关节、传感器等)。这样写非常繁琐且容易出错。

   xacro 的作用 :就是通过封装和参数化这些部件,使得你可以更方便地重用已有的结构,只需要少量的修改就可以生成不同机器人的 urdf 文件。类似C语言中函数的封装。

二、xacro 文件常见组成部分

1. 命名空间声明

        该命名空间的定义使得文件中的 xacro 特性能够正常工作,让你在模型中使用宏和其他 xacro 相关的功能。

2. 定义宏

        宏用于封装可复用的结构,例如机器人关节、链接等。你可以定义一个宏并在多个地方调用它,宏可以带有参数,这样就可以创建不同配置的部件。


  

3. 调用宏

        宏定义完成后,可以在 xacro 文件的任意位置调用宏来生成相应的部件。调用时,可以传递参数值来定制生成的部件。



4. 定义参数

        你可以在 xacro 文件中定义变量(参数),这些变量可以在宏中使用,也可以传递给其它部分。这使得配置变得更加灵活和动态。

        在这个例子中,wheel_radius 是一个参数,表示轮子的半径。在后续的代码中,可以直接使用这个参数。


5. 条件语句 

  xacro 支持条件语句,你可以根据不同的条件生成不同的机器人模型或某些部件。例如,如果你希望某个部件只有在某个参数为 true 时才创建,你可以使用 xacro:ifxacro:else


  

6. 转换 xacro 文件为 urdf

        你可以使用 ROS 提供的工具来将 xacro 文件转换为 URDF 文件,生成的 URDF 文件可以直接用于机器人仿真、控制等。

rosrun xacro xacro mybot.xacro > mybot.urdf

7. gazebo标签

        在 XACRO 文件中, 标签用于定义与 Gazebo 仿真环境 相关的设置和插件。Gazebo 是一个强大的仿真工具,用于模拟机器人、传感器以及与环境的交互。当你在 XACRO 中使用 gazebo 标签时,通常是为了控制仿真中的物理属性、传感器和控制插件。这里将不再过多介绍该标签的用法,详细请查看其他博客。

三、代码示例

 1. gazebo标签使用(仿真参数配置)

        功能:用于描述一些物体以及传感器在gazebo仿真中的一些数据,例如摩擦系数、速度等等。

mybot_gazebo.xacro



  
  
  
  

  
  
    Gazebo/DarkGrey  
  

  
  
    0.5   
    0.5   
    500000.0 
    10.0    
    0.001  
    1.0  
    1 0 0 
    Gazebo/DarkGrey  
  

  
  
    0.5   
    0.5   
    500000.0 
    10.0    
    0.001  
    1.0  
    1 0 0 
    Gazebo/FlatBlack  
  

  
  
    0.1   
    0.1   
    500000.0 
    100.0   
    0.001  
    1.0  
    Gazebo/FlatBlack  
  

  
  
    
      true 
      $(arg imu_visual) 
    
    Gazebo/FlatBlack  
  

  
  
    
      cmd_vel   
      odom   
      odom   
      world 
      true   
      base_footprint 
      false 
      true   
      true 
      false 
      30   
      left_wheel_joint  
      right_wheel_joint 
      0.180 
      0.05   
      10 
      100   
      na  
    
  

  
  
    
      true  
      imu   
      imu  
      imu  
      imu_service 
      0.0  
      0  
      
        
          gaussian  
          
            0.0   
            2e-4 
            0.0000075  
            0.0000008 
          
          
            0.0   
            1.7e-2 
            0.1  
            0.001  
          
        
      
    
  

  
  
    Gazebo/FlatBlack  
    
      0 0 0 0 0 0 
      $(arg laser_visual)  
      7  
      
        
          
            720  
            0.5  
            0.0  
            6.28319 
          
        
        
          0.120  
          12.0   
          0.015 
        
        
          gaussian  
          0.0   
          0.01 
        
      
      
      
        scan  
        base_laser_link 
      
    
  

  
  
    
      true  
      $(arg camera_visual)  
      
          1.085595 
          
              640  
              480 
              R8G8B8 
          
          
              0.03  
              100  
          
      
      
      
        true  
        30.0  
        /  
        base_camera_link  
        image_raw  
        camera_info  
        0.07  
        0.0  
        0.0
        0.0
        0.0
        0.0
      
    
  


 2. 引用仿真配置并定义机器人模型(结构)

        功能:这段代码描述了一个机器人(mybot)的 物理模型和结构,代码通过定义多个链接(link)和关节(joint)来描述机器人的组成部分,包括主体、轮子、支撑轮、激光雷达等。当我们构建不同的机器人模型时,都可以引用之前的仿真配置。

        注意:这两个文件中的 中的 name 字段应该一致。

mybot1.xacro 

  

  

  
   

  
  

  
    
      
      
      
    
  
  
    
      
       
       
      
    

      
        
          
        
       
        
            
        
      

     
       
       
         
     
   

    
  
  
    
      
       
       
       
    

      
         
          
        
        
          
        
      

    
       
     
         
     
    
    

  
    
      
      
      
      
    

  
    
      
       
       
       
    

      
        
          
        
        
          
        
      

    
     
     
         
     
       
    

  
    
      
      
      
      
    

  
    
      
       
       
       
    

      
        
          
        
        
          
        
      

    
       
     
         
     
       
    

  
    
      
      
      
      
    

  
    
      
        
          
        
        
            
        
      
    

  
    
      
      
      
   

  
    
      
        
          
        
        
            
        
      
    

  
    
      
      
      
   

  
    
      
             
          
        
        
            
        
      
    
  
  
    
      
      
      
   

  

 四、加载仿真模型(含传感器的机器人)

1. 编写launch文件。

        最终我们运行的mybot1.xacro ,里面包含了机器人的模型和仿真配置文件。编写launch文件来启动仿真模型。代码中的gazebo_world.launch文件在下面文章中有介绍。ROS实践-虚拟仿真平台Stage/Gazebo(虚实结合)https://blog.csdn.net/qq_48361010/article/details/146096746?sharetype=blogdetail&sharerId=146096746&sharerefer=PC&sharesource=qq_48361010&spm=1011.2480.3001.8118

simulation_robot.launch


  
    
    
    

  
    

  
  

  
  

  
  

  
  

2. 实际效果。

ROS实践(三)xacro文件基础(urdf扩展)_第1张图片

你可能感兴趣的:(ROS,机器人,xacro)