ROS学习(9)自定义移动机器人模型Gazebo仿真

文章目录

  • 前言
  • 一、gazebo启动
  • 二、创建编译功能包
  • 三、更新xacro文件
    • 1、更新robot_base.xacro
    • 2、更新robot_camera.xacro
    • 3、更新robot_lidar.xacro
    • 4、更新robot.xacro
  • 四、更新launch文件
  • 四、仿真效果
  • 五、添加地图
  • 五、总结


前言

想在ROS系统中对我们自定义的机器人进行仿真,需要使用Gazebo,其是一种适用于复杂室内环境和室外环境的仿真环境。

一、gazebo启动

gazebo独立于ROS,并可以在Ubuntu中以独立功能包安装。我的ROS系统(melodic)是完整安装包,所以包含了gazebo,版本为9.0.0,在此省略了安装步骤。
查询版本命令如下:

dpkg -l | grep gazebo

可以使用如下命令启动gazebo,确认是否安装:

gazebo

结果遇到如下错误:
ROS学习(9)自定义移动机器人模型Gazebo仿真_第1张图片
解决方法,使用如下命令打开文件config.yaml:

sudo gedit ~/.ignition/fuel/config.yaml

添加如下一行:

url: https://api.ignitionrobotics.org

可以正常启动gazebo了。

二、创建编译功能包

切换到catkin_ws/src目录下,如下:

catkin_create_pkg mbot_sim_gazebo urdf xacro

切换到catkin_ws目录下,编译该功能包,如下:

catkin_make mbot_sim_gazebo

在该功能包下创建include、src、launch、urdf文件夹,在urdf文件下创建urdf文件夹和xacro文件夹。

三、更新xacro文件

1、更新robot_base.xacro

robot_base.xacro文件内容如下:




    
    
     
    
    

    
    
    
    
    

     
     
    

    
    
        
    
    
        
    
    
        
    
    
    
    
        
            
            
        
    

    
        
            
             
        
    

    
    
        
            
            
            
            
        

        
            
                
                
                    
                
                
            
            
                
                
                    
                
            
            
        

        
            Gazebo/Gray
        

        
        
            transmission_interface/SimpleTransmission
            
                hardware_interface/VelocityJointInterface
            
            
                hardware_interface/VelocityJointInterface
                1
            
        
    

    
    
        
            
            
            
            
        

        
            
                
                
                    
                
                
            
            
                
                
                    
                
                  
            
        

        
            Gazebo/Black
        
    

    
        
            
                
                
                    
                
            
        
        
            false
        

        
                    
            
            
        

        
            
                
                
                    
                
                
            
            
                
                
                    
                
               
            
        

        
            Gazebo/Blue
        

        
        

        
        

        
        
            
                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、更新robot_camera.xacro

上一篇我们只添加了摄像头外观,在这里我们添加摄像头属性,更新robot_camera.xacro文件内容如下:




    
        
        
            
                
                
                
            

            
                
                
                    
                
                
            

            
                
                
                    
                
            
        
        
            Gazebo/Black
        

        
            
                30.0
                
                    1.3962634
                    
                        1280
                        720
                        R8G8B8
                    
                    
                        0.02
                        300
                    
                    
                        gaussian
                        0.0
                        0.007
                    
                
                
                    true
                    0.0
                    /camera
                    image_raw
                    camera_info
                    camera_link
                    0.07
                    0.0
                    0.0
                    0.0
                    0.0
                    0.0
                
            
        

    

3、更新robot_lidar.xacro

通过plugin标签,在gazebo中插入激光雷达的相关插件,更新robot_lidar.xacro文件内容如下:



	
			
	    		
	      			
	      			
						
	     			
	    		
	    		
	      			
	      			
	        			
	      			
	    		
	    		
	      			
	      			
	      			
	    		
	  		
			
			    
			      0 0 0 0 0 0
			      false
			      40
			      
			        
			          
			            720
			            1
			            -1.570796
			            1.570796
			          
			        
			        
			          0.10
			          30.0
			          0.01
			        
			        
			          gaussian
			          0.0
			          0.01
			        
			      
			      
			        /scan
			        hokuyo_link
			      
			    
			  
	

4、更新robot.xacro

由于机器人主体宏定义的名字改了,因此robot.xacro更新如下:




    
    
    

    
    
    
    
    
    

    

    
    
        
        
        
    

    

    
        
        
        
    
    


四、更新launch文件

launch文件需要加入gazebo的设置,并将rviz相关设置去掉:


        
    
    
    
    
    

    
    
        
        
        
        
        
    

    
    
    
     
    
    


    
    

    
    

      
     


四、仿真效果

运行如下命令,仿真效果如下:

roslaunch mbot_sim_gazebo robot.launch

ROS学习(9)自定义移动机器人模型Gazebo仿真_第2张图片
可以通过rqt_image_view查看图像:

rqt_image_view

此时,摄像头显示内容是灰色的,这是因为环境为空的缘故。
ROS学习(9)自定义移动机器人模型Gazebo仿真_第3张图片

五、添加地图

首先尝试加载柳树库公司(Willow Garage)办公室的地图,这张地图在ROS中是默认安装的,这个3D模型保存在/usr/share/gazebo-9/worlds中。我们使用如下命令加载:

roslaunch gazebo_ros willowgarage_world.launch

发现界面一直卡在这里,效果如下:
ROS学习(9)自定义移动机器人模型Gazebo仿真_第4张图片
这是因为模型加载失败,解决方法如下:
切换到/usr/share/gazebo-9/目录下,执行如下命令:

sudo chmod 777 models

再切换到/usr/share/gazebo-9/models/目录下,执行如下命令:

sudo wget http://file.ncnynl.com/ros/gazebo_models.txt
sudo wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf

再次运行柳树库公司办公室的launch文件,效果如下:
ROS学习(9)自定义移动机器人模型Gazebo仿真_第5张图片
现在要做的是创建一个新的launch文件来同时加载地图和机器人,在launch文件夹下创建robot_gazebo_wg.launch,文件内容如下:


    
    
    

    
    
    
     
    
    


    
    

    
    

      
     


通过如下命令运行:

roslaunch mbot_sim_gazebo robot_gazebo_wg.launch

效果如下,蓝色点即为机器人模型:
ROS学习(9)自定义移动机器人模型Gazebo仿真_第6张图片
再运行如下命令查看图像:

rqt_image_view

此时,摄像头是有内容的,效果如下:

此时,通过如下命令,可以查看激光雷达的数据:

rostopic echo /scan

ROS学习(9)自定义移动机器人模型Gazebo仿真_第7张图片

五、总结

截止到目前,我们为自定义的机器人模型,添加了摄像头和激光雷达 ,又为其添加了地图,下一篇开始介绍如何控制机器人在仿真环境下的移动。

你可能感兴趣的:(ROS,ROS)