Gazebo——仿真平台搭建(基于Ubuntu20.04)

目录

Gazebo安装配置

创建仿真环境 

仿真使用

Rviz查看摄像头采集的信息

Kinect仿真

问题解决:

1.gazebo--SpawnModel: Failure - model name mrobot already exists.


Gazebo安装配置

1.设置你的电脑来接收软件

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

2.设置秘钥

wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

3.安装Gazebo

sudo apt-get update
sudo apt-get install gazebo11
sudo apt-get install libgazebo11-dev

4.检查你的安装是否有效果=

gazebo

5.打开 /.gazebo文件夹 下载模型

cd ~/.gazebo
git clone https://github.com/osrf/gazebo_models

如果出现fatal连接GitHub失败请使用以下代码

git clone https://gitclone.com/github.com/osrf/gazebo_models

下载时间可能偏久,读者可以选择和我一样另起终端进行其他操作,等到需要使用场景模型的时候大概也已经下载完成。 

6.其他关联安装包(不定时更新)

sudo apt-get install ros-noetic-rviz

sudo apt-get install ros-noetic-robot-state-publisher

sudo apt-get install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control

sudo apt install ros-noetic-moveit

然后运行安装包索引

sudo apt-get update

接下来进行机器人模型的搭建

机器人模型配置

首先进入到mbot_description/urdf/xacro下

cd ~/catkin_ws/src/mbot_description/urdf/xacro
mkdir gazebo 
cd gazebo
sudo gedit mbot_base_gazebo.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
            
         

再编辑mbot_gazebo.xacro



     
        

编辑launch文件

cd ~/catkin_ws/src/mbot_description/launch/xacro
mkdir gazebo
cd gazebo
sudo gedit mbot_base_gazebo.launch


    
    
    
    
    
    

    
    
        
        
        
        
        
    

    
     

    
     

    
    
        
    

    
     

配置完成后运行显示模型

roslaunch mbot_description mbot_base_gazebo.launch

注意

由于Ubuntu20.04对应的ros版本为noetic,所以xacro模型文件的宏定义和宏调用方式都需要更改

Ubuntu20.04的mbot_base_gazebo.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
            
         
    

需要更改的地方为

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第1张图片

 在轮子的宏定义语法以及支撑轮的宏定义语法前添加xacro引用

cylinder_inertial_matrix,

sphere_inertial_matrix

两个个标签引用的时候也需要加上xacro引用

 

 

以及mbot_gazebo.xacro文件也需要更改宏定义 



     
        

launch文件同样需要更改,这里有三个更改方法,一般情况下将

 
    xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_gazebo.xacro'" /> 

改为xacro 即可

也有其他的解决方法例如将其改为

xacro --i

还有

xacro.py



    
    
    
    
    
    

    
    
        
        
        
        
        
    

    
     

    
     

    
    
        
    

    
     

正常启动后如下所示

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第2张图片

创建仿真环境 

这里有两种方法添加场景模型

第一:直接添加

将模型放置到~/.gazebo/models 文件夹下——在gazebo的左侧列表点击“insert”(可以看到里面有很多的模型,我们只需要从列表中拖出我们需要的模型放置到仿真环境中就可以)

https://bitbucket.org/osrf/gazebo_models/downloads/

这里本文开始时的下载如果已经下载完成可以跳过,如果还未下载完成请等待下载完成再进行后续操作。 

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第3张图片

 选择需要的模型直接拖动到场景中搭建即可

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第4张图片

 注意这一步需要将原本的机器人模型进行删除然后保存。

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第5张图片

 这里如果显示conectting----说明还未连接完成,等待出现http-----连接完成后即可正常显示模型,再选择需要的模型添加即可。

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第6张图片

 自定义文件名称和位置即可

建议存放在catkin_ws/src/mbot_descritpion/worlds下

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第7张图片

 第二:使用Building editor

模型创建:

Edit——Building editor——绘制环境模型——File——Save保存我们的模型文件(自己设置模型文件名字)——Exit Building Editor(退出编辑界面),可以看到我们的仿真环境已经在gazebo中显示;

保存环境模型同第一种方法一致,然后关闭gazebo界面即可。

仿真使用

    
    
    
    
    
    
    

传感器仿真 

cd ~/catkin_ws/src/mbot_description/urdf/xacro
mkdir sensors
cd sensors
sudo gedit camera_gazebo.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
                
            
        
    

cd ~/catkin_ws/src/mbot_description/urdf/xacro/gazebo
sudo gedit mbot_with_camera_gazebo.xacro

在文件中写入以下内容即可




    
    

    
    
    

    

    
    
        
        
        
    

    

    

带摄像头的机器人launch启动文件的编写

cd ~/catkin_ws/src/mbot_description/launch/xacro/gazebo
sudo gedit view_mbot_with_camera_gazebo.launch

    
    
    
    
    
    
  
    
        
        
        
        
        
        
    

     

    
     

    
        
    

     


 然后运行显示模型

roslaunch mbot_description view_mbot_with_camera_gazebo.launch 

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第8张图片

注意如果说出现

[ERROR] [1666006852.591762, 106.467000]: Spawn service failed. Exiting.
[urdf_spawner-6] process has died [pid 35261, exit code 1, cmd /opt/ros/noetic/lib/gazebo_ros/spawn_model -urdf -model mrobot -param robot_description __name:=urdf_spawner __log:=/home/q/.ros/log/89f24a6e-4e10-11ed-b861-1f202bd9bc85/urdf_spawner-6.log].
log file: /home/q/.ros/log/89f24a6e-4e10-11ed-b861-1f202bd9bc85/urdf_spawner-6*.log

 则说明gazebo进程关闭不完全,需要将所有gazebo进程关闭

killall gzserver

然后发现可以正常启动  

使用qt可视化工具查看摄像头画面显示

另起终端

rqt_image_view

注意摄像头参数选定 

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第9张图片

 启用键盘控制

roslaunch mbot_teleop mbot_teleop.launch

 

注意键盘控制按键

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第10张图片

这里如果报错无法定位python 软件包

需要进行下载配置python插件

sudo ln -s /usr/bin/python3 /usr/bin/python

然后再允许键盘控制节点即可

如果读者功能包的src目录下没有mbot_teleop功能包,也可下载另键盘控制功能包

cd ~/carkin_ws/src
git clone https://github.com/ros-teleop/teleop_twist_keyboard.git
//然后启用即可
rosrun teleop_twist_keyboard teleop_twist_keyboard.py


 注意该teleop_twist_keyboard.py需要更改为可执行的文件

如果不想使用该功能包,想知道如何自主创建mbot_teleop功能包可参考Arbotix+rviz那篇文章mbot_teleop 功能包创建方法

Rviz查看摄像头采集的信息

rosrun rviz rviz

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第11张图片

 首先固定框架(fixed frame)选择base_footprint

然后Add——robotmodel——ok

然后Add——image——ok

然后image——image topic——/camera/image_raw

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第12张图片

 激光雷达仿真

cd ~/catkin_ws/src/mbot_description/urdf/xacro/sensors
sudo gedit lidar_gazebo.xacro




    
        
        
            
                
                
                
            

            
                
                
                    
                
                
            

            
                
                
                    
                
            
        
        
            Gazebo/Black
        

        
            
                0 0 0 0 0 0
                false
                5.5
                
                    
                      
                        360
                        1
                        -3
                        3
                      
                    
                    
                      0.10
                      6.0
                      0.01
                    
                    
                      gaussian
                      0.0
                      0.01
                    
                
                
                    /scan
                    laser_link
                
            
        

    

然后编写主体xacro文件

cd ~/catkin_ws/src/mbot_description/urdf/xacro/gazebo
sudo gedit mbot_with_laser_gazebo.xacro

 内容如下所示




    
    

    
    
    

    
    
        
        
        
    
    
    

然后编写launch 启动文件

cd ~/catkin_ws/src/mbot_description/launch/xacro/gazebo
sudo gedit view_mbot_with_laser_gazebo.launch




    
    
    
    
    
    


    
        
        
        
        
        
        
    

 
    

   
     

   
    
        
    

    
     

 激光雷达正常显示Gazebo——仿真平台搭建(基于Ubuntu20.04)_第13张图片

 然后启用键盘控制

roslaunch mbot_teleop mbot_teleop.launch

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第14张图片

rviz查看雷达采集信息

rosrun rviz rviz

 需要注意的地方与刚才类似

首先固定框架(fixed frame)选择base_footprint

然后Add——robotmodel——ok

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第15张图片

然后Add——laserscan——ok

然后laserscan——topic——scan

在图中的红色线条即为雷达检测到的障碍物,由于我的小车卡在消防车和救护车之间懒得动了,就不附图说明了,红色线条很淡,建议将小车周围拿障碍物包满。

Kinect仿真

方法跟上面摄像头和激光雷达实现的方法类似,这里就不多加说明了,直接给出结果显示了。
gazebo显示

cd ~/catkin_ws/src/mbot_description/urdf/xacro/sensors
sudo gedit kinect_gazebo.xacro



    
        
        
        
            
            
                
                
                    
                
            
            
                
                    
                
            
        

        
            
            
            
        

        

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

    

 然后编写主体xacro文件

cd ~/catkin_ws/src/mbot_desctiption/urdf/xacro/gazebo
sudo gedit mbot_with_kinect_gazebo.xacro



    
    

    
    
    

    

    
    
        
        
        
    

    

    

然后编写launch 启动文件

cd ~/catkin_ws/src/mbot_description/launch/xacro/gazebo
sudo gedit view_mbot_with_kinect_gazebo.launch


    
    
    
    
    
    
    

    
    
        
        
        
        
        
        
    

    
     

    
     

    
    
        
    

    
     

 运行后如下所示

Gazebo——仿真平台搭建(基于Ubuntu20.04)_第16张图片

查看kinect采集到的信息

rosrun rviz rviz

 Gazebo——仿真平台搭建(基于Ubuntu20.04)_第17张图片

 注意:

首先固定框架(fixed frame)选择base_footprint

然后Add——robotmodel——ok

然后Add——pointcloud2——ok

然后pointcloud2——topic——/kinect/depth/points

 以上就是本节内容,关于Gazebo物理仿真平台搭建已经全部完成。

问题解决:

1.gazebo--SpawnModel: Failure - model name mrobot already exists.

roslaunch gazebo_ros empty_world.launch

在开启后的gazebo界面中选中mrobot模型delete删除即可

然后退出。

在上述模型创建且.world 保存前需要把机器人模型删除再保存,不然会出现模型重名报错。

2. [ERROR] [1666006852.591762, 106.467000]: Spawn service failed. Exiting.
[urdf_spawner-6] process has died [pid 35261, exit code 1, cmd
/opt/ros/noetic/lib/gazebo_ros/spawn_model -urdf -model mrobot -param robot_description __name:=urdf_spawner __log:=/home/q/.ros/log/89f24a6e-4e10-11ed-b861-1f202bd9bc85/urdf_spawner-6.log].
log file: /home/q/.ros/log/89f24a6e-4e10-11ed-b861-1f202bd9bc85/urdf_spawner-6*.log

 将所有gazebo进程关闭再重启即可

killall gzserver

你可能感兴趣的:(ubuntu,linux,运维)