教程 | 阿克曼结构移动机器人的gazebo仿真(二)

第二章、配置xacro文件

0.前言

上一节已经将urdf导出来了,这一节需要配置一下xacro文件。先看一下导出的功能包在gazebo以及rviz中显示的效果。

将功能包放进工作空间进行编译,source一下环境,先看gazebo:

roslaunch tianracer_description gazebo.launch

教程 | 阿克曼结构移动机器人的gazebo仿真(二)_第1张图片

可以看到模型已经加载到gazebo中的empty_world中了,此时模型还是白板,稍后可对颜色进行配置。

再看rviz,先修改tianracer_description/launch中的 arg name="gui" default="False"改为arg name="gui" default="True"

roslaunch tianracer_description display.launch

教程 | 阿克曼结构移动机器人的gazebo仿真(二)_第2张图片

此时左侧会出现joint_state_publisher的可视化窗口,拖动上边的动态条即可控制小车的每个关节。

1.添加传动装置

新建tianracer_description.xacro文件,将urdf文件中的代码复制过来,并对其进行修改。








    
      
      
     
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
                
        
        
     
 
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
    
  

  
    
      
      
     
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
 
    
    
    
    
  

  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  

    
    
    
    
    
  

    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
 
    
    
    
    
  
 
    
      
      
     
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
 
    
    
    
    
  
 
    
      
      
        
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
 
    
    
    
    
  
 
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
  

上边主要修改的内容是第一句修改为xacro声明:


以及一些惯性参数的修改。

本次项目做的是基于twist消息的阿克曼转向移动机器人,为实现该机器人的运动学,我们给两个后轮以及连接两个前轮的steer添加传动装置。为使用ROS控制驱动机器人,需要在模型中加入transmission元素,将传动装置与joint绑定。


    transmission_interface/SimpleTransmission
    
      hardware_interface/EffortJointInterface
    
    
      hardware_interface/EffortJointInterface
      1
      100
    
    
  
  
    transmission_interface/SimpleTransmission
    
      hardware_interface/EffortJointInterface
    
    
      hardware_interface/EffortJointInterface
      1
      100
    
  
 
    transmission_interface/SimpleTransmission
    
      hardware_interface/VelocityJointInterface
    
    
      hardware_interface/VelocityJointInterface
      1
    
        
  
  
    transmission_interface/SimpleTransmission
    
      hardware_interface/VelocityJointInterface
    
    
      hardware_interface/VelocityJointInterface
      1
    
  

2.添加插件                               

在与tianracer_description.xacro路径相同路径下新建tianracer.gazebo文件

添加gazebo插件

由于车轮实际上会接触地面,因此会与地面发生物理相互作用,将各个link添加部件材料的附加信息,并且定义各个link的颜色信息。参考

[gazebo官网] http://gazebosim.org/tutorials/?tut=ros_urdf


  
  
  
  
  Gazebo/Red


  
  
  
  
  
  Gazebo/Grey


  
  
  
  
  
  Gazebo/Black


  
  
  
  
  
  Gazebo/Grey


  
  
  
  
  
  Gazebo/Black


  
  
  
  
  
  Gazebo/Black


  
  
  
  
  
  Gazebo/Black

教程 | 阿克曼结构移动机器人的gazebo仿真(二)_第3张图片

添加ros_control插件

由于gazebo并没阿克曼车型的插件,要链接gazebo与ros,我们先添加ros_control插件,它读取所有transmission标记,以及joint_state_publisher插件


  
    /tianracer
    robot_description
    gazebo_ros_control/DefaultRobotHWSim
    true
  



    
      left_rear_wheel_joint, right_rear_wheel_joint, left_steering_hinge_joint, right_steering_hinge_joint, right_front_wheel_joint,left_ front_wheel_joint
      50.0
      /tianracer
      true
    
  

 添加二维激光雷达插件



  
    Gazebo/Grey
    
      0 0 0.0124 0 0 0
      false
      40
      
        
          
            1081
            1
            -2.3561944902
            2.3561944902
          
        
        
          0.1
          10.0
          0.01
        
        
          0.0
          0.01
        
      
      
        /scan
        lidar
      
    
  

注意雷达的名字需要与link名对应上。

添加单目摄像头以及深度摄像头插件


  
  Gazebo/Grey
    
      30.0
      
        1.3962634
        
          800
          800
          R8G8B8
        
        
          0.02
          300
        
        
          gaussian
          
          0.0
          0.007
        
      
      
        true
        0.0
        rrbot/camera1
        image_raw
        camera_info
        camera
        0.07
        0.0
        0.0
        0.0
        0.0
        0.0
      
    
    



            
                true
                20.0
                
                    ${60.0*3.14/180.0}
                    
                        R8G8B8
                        640
                        480
                    
                    
                        0.05
                        8.0
                    
                
                
                    real_sense
                    true
                    10
                    rgb/image_raw
                    depth/image_raw
                    depth/points
                    rgb/camera_info
                    depth/camera_info
                    real_sense
                    0.1
                    0.0
                    0.0
                    0.0
                    0.0
                    0.0
                    0.4
                
            
        

这里深度摄像头的插件用kinect的插件代替。

最后将tianracer.gazebo添加到tianracer_description.xacro文件里边:

小结

至此,我们已经配置好小车的各个link的颜色以及传感器的插件,但我们仍无法让小车运动起来,因为我们还未配置小车的controllers。下一节通过配置controllers让小车动起来。

参考资料

1.古月老师的<>

2.从零开始自动驾驶:https://www.bilibili.com/video/BV1ZJ41187tS?spm_id_from=333.999.0.0

你可能感兴趣的:(机器学习,人工智能,深度学习)