ROS1.0学习笔记(5)3D建模与仿真

博主提示:ROS部分写的并不是很详细,说到底也ROS和MATLAB一样也是一个开发工具,核心的是算法,逻辑以及整体框架等,不到之处,烦请指出。

1.机器人URDF模型

ROS中一个非常重要的机器人模型描述格式文件,Unified Robot Description Format。
创建一个机器人建模功能包
用catkin_create_package + (机器人名称_description) + (功能包下面的文件夹名称)。
例如:

catkin_create_package robot_description urdf  meshes launch config

其中,urdf文件夹中放机器人模型urdf或xacro文件,
meshes放置urdf中引用的模型渲染文件,
launch中保存相关的启动文件,
config中保存rviz的配置文件。

下面详细的介绍以下urdf的文件格式以及含义。

robot - 完整的机器人模型的最顶层标签,joint和link都必须在robot标签内


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

一个完整的机器人有一系列的link和joint组成。

link - 描述机器人某个刚体部分的外观和物理属性:尺寸、颜色、形状、惯性矩阵、碰撞参数等。


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

joint - 描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限制。


	 
	
	 
	
	
	....

calibration:关节的参考位置,用来校准关节的绝对位置,
dynamic:描述关节的物理属性,如阻尼、表面摩擦力等,
limit:描述一些运动的极限值,包括关节运动的上下极限值、速度限制、力矩限制等,
mimic:描述关节与已有关节的关系,
safety_controller:描述安全控制器的参数。
另外,六种关节的运动形式:

关节类型 描述
continuous 旋转关节,可以围绕单轴无限旋转
revolute 旋转关节,类似continuous,但是有旋转的角度极限
prismatic 滑动关节,沿着某一条直线移动,但是有位置极限
plannar 平面关节,允许在平面正交方向上平移或者旋转
floating 浮动关节,允许进行平移、旋转运动
fixed 固定关节,不允许运动

下面举一个实际的移动机器人的mbot.urdf文件进行具体说明(单位默认是 米,弧度):




	
        
    	
    	
        
            
            
                
            
            
                
            
        
    
    
	
    
        
        
        
        
        
    

    
        
            
            
                
            
            
                
            
        
    

    
        
        
        
        
    

    
        
            
            
                
            
            
                
            
        
    

    
        
        
        
        
    

    
        
            
            
                
            
            
                
            
        
    

    
        
        
        
        
    

    
        
            
            
                
            
            
                
            
        
    

上面的代码是一个简单的urdf文件。
接下来,需要的就是使用launch文件来调出这个模型了


	

	
	
	
	
	
	
	
	
	
	
	

其中,joint_state_publisher发布每个joint(除fixed之外)的状态,而且可以通过UI界面对joint进行控制。robot_state_publisher将各个机器人的各个links、joint之间的关系,通过tf的方式,整理成为三维姿态信息发布。
但是URDF模型存在以下的问题:
1.模型冗长,重复的内容过多
2.没有参数修改,不便于二次开发
3.无法通过相应的公式进行参数计算相关的参数

2.URDF的升级版本 – XACRO模型

还是直接上代码(mbot.xacro)吧,这样会比较直观点。



	
	
    
    
    
    
	
    
    
    
    
	
	
     
    

    
    
        
    
    
        
    
    
        
    
    
    
    
    
        
            
            
            
            
        

        
            
                
                
                    
                
                
            
              
    

	
 	
   	 

    
    
        
            
            
            
            
        

        
            
                
                
                    
                
                
            
        
    
	
	
	
   	

    
        
            
                
                
                    
                
            
        

        
                    
            
            
        

        
            
                
                
                    
                
                
            
        
    

此外xacro文件的便捷之处在于,另一个xacro文件只需要在文件中包含相关宏定义的路径,既可以调用需要用到的宏。例如:


之后就可以在这个xacro文件中调用mbot_base.xacro中定义的宏了。
至于,xacro的模型显示可以有两种方式:
方法一,将xacro转化为urdf文件

$ rosrun xacro xacro.py mbot.xacro>mbot.urdf

方法二,直接在launch文件中调用xacro文件解析器


	
	

	

    
	

    
    
	

	
	

    
	


3.Gazebo物理仿真环境

Gazebo仿真环境的搭建,就需要了解机器人的控制器,ROS为开发者提供了一系列的控制器接口传动装置接口等等,ros_control。
仿真步骤:1.配置机器人模型:为link添加惯性参数和碰撞属性,为link添加gazebo标签,为joint添加传动装置,添加gazebo控制器插件,这几项工作都是必要的工作,下面直接上代码进行说明:
为link添加gazebo标签



    
        
        
        
        
    

    
        
            
            
                
            
            
        
        
        
        
            
            
                
            
        
        
    

	
    
        Gazebo/Gray
    

    
    
    
        transmission_interface/SimpleTransmission
        
            hardware_interface/VelocityJointInterface
        
        
            hardware_interface/VelocityJointInterface
            1
        
    



    
        
            Debug
            true
            /
            1
            true
            true
            100.0
            true
            left_wheel_joint
            right_wheel_joint
            ${wheel_joint_y*2}
            ${2*wheel_radius}
            1
            30
            1.8
            cmd_vel
            odom 
            odom 
            base_footprint
        
     

2.创建仿真环境



    
    
    
    
    
    

    
    
        
        
        
        
        
    

    
     

    
     

    
    
        
    

    
     


3.开始仿真
打开Gazebo后,可以按照自己的需求,放置仿真物品等,详细的可以自行wiki。

你可能感兴趣的:(ROS,学习笔记)