ROS自学实践(3):机器人建模优化xacro与Arbotix+rviz虚拟仿真

目标:使用xacro优化建立的urdf机器人模型,在rviz和gazebo中进行仿真,为以后控制算法和SLAM算法做准备。
Xacro(XML Macros)Xacro是一种XML宏语言。 使用xacro,您可以通过使用宏命令构建更精悍短小但又具有更高可读性的XML文件,可以进行宏定义变量定义头文件包含数学运算等操作。
urdf文件中,存在着大量重复性的代码,因此通过xacro优化之后,大大减少代码的重复性,宏定义模式也能方便代码的后期修改,并且更好地支持gazebo仿真环境。

1.编写xacro文件

在urdf文件夹下,新建xacro文件夹,用来存放编写的xacro文件集合。

(1)编写shcRobot2_base_xacro.xacro文件,基文件,相当于一个类
该文件只是编写了各种基础结构的宏定义,包括四个轮子的宏和汽车本体base_link的宏,并没有真实生成一个机器人模型。

 














	


	


	


	

  
          
  



    
    	
	    
	    
		
	    
	    
        
    

    
	
	
	
	
	
    




    
    	
	    
	    
		
	    
	    
        
    

    
	
	
	
	
	
    




    
    	
	    
	    
		
	    
	    
        
    

    
	
	
	
    

      
       
          
            
          
        
          
        
    
    
    
    
    
    


注:如果遇到编译不通过可能是注释里面有汉字的缘故,删掉重新运行即可。
(2)编写shcRobot_xacro.xacro文件,调用文件,生成一个机器人本体
根据上面的宏定义,实例化一个机器人本体。



    
    

2.调用xacro文档解析器,显示创建的模型

在launch文件中加入xacro解析器,除此之外,几乎和上一章的launch文件一样。


	
	
        
	
		
	
	
	
	
	
	
	

运行launch文件便可以看到与上一章相同的机器人小车模型了
ROS自学实践(3):机器人建模优化xacro与Arbotix+rviz虚拟仿真_第1张图片
此仅仅只是将urdf模型以更加方便的xacro模型进行重新描述,后续将进行其他属性的添加,比如gazebo属性以及驱动属性。

3.使用Arbotix+rviz进行仿真

(1)安装Arbotix插件包,复制到src目录下进行catkin_make
https://github.com/vanadiumlabs/arbotix_ros
(2)修改launch文件,配置arbotix控制器


	
	
        
	
		
	
	

	
	
		
		
	
	
	
	
	
	

(3)在config文件夹下增加配置文件fake_arbotix.yaml

controllers: {
   base_controller: {
       type: diff_controller, 
       base_frame_id: base_link, 
       base_width: 0.8, 
       ticks_meter: 4100, 
       Kp: 12, 
       Kd: 12, 
       Ki: 0, 
       Ko: 50, 
       accel_limit: 5.0 
    }
}

注:配置文件不要有多余的空格,否则会编译失败
ROS自学实践(3):机器人建模优化xacro与Arbotix+rviz虚拟仿真_第2张图片
(4)命令行发布消息

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

(5)修改rviz
在rviz中将fixed frame改为odom,发布上述命令,结果如图
ROS自学实践(3):机器人建模优化xacro与Arbotix+rviz虚拟仿真_第3张图片
ROS自学实践(3):机器人建模优化xacro与Arbotix+rviz虚拟仿真_第4张图片
参考文献:
1.古月居博客

你可能感兴趣的:(ROS实践,自动驾驶)