ROS学习-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示


怎么样利用Gazebo进行环境搭建,是我们进行嵌入式学习的必经之路、也是重中之中,所以我们需要重点掌握哦!
上次的ROS学习博客林君学长讲解了如何在ROS环境下搭建我们的gazebo的空环境搭建,这是gazebo学习的第一步,入门操作,本次博客,我们将进行更深入的Gazebo机器人环境搭建,三种传感器的环境搭建:camera、kinect、Lidar

版本:ubuntu16.04

一、Gazebo环境搭建前的准备

1、将搭建模型下载到我们的gazebo环境下

为了后续能够完整的加载我们gazebo创建的仿真模型,我们最好将gazebo的模型下载到本地,不要通过网络进行模型创建,因为访问的是国外网站,所以速度很慢的!
1)、进入gazebo隐藏文件夹

cd ~/.gazebo/

2)、在该文件目录下创建我们的models文件夹

mkdir -p models

3)、进入该文件夹

cd ~/.gazebo/models/

4)、进行模型文件的下载

wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt

5)、解压文件到我们的模型文件夹目录下

ls model.tar.g* | xargs -n1 tar xzvf

以上就是对我们模型进行下载的整个过程,温馨提示,该过程真的很慢,慢慢等待吧,才100多M而已,就是网速很慢,因为访问的国外的网站
如果有需要的,可以私信林君学长,我的下载好了的,可以发给你们的哦!资源过大,博客上我上传不了资源,我只有200M的上传权限啦!

2、升级我们的gazebo版本

注意:该步骤只需要ubuntu16.04版本的小伙伴进行参与,ubuntu18版本的不用进行该步骤,因为不会出现不兼容的情况!
之所以升级我们的gazebo版本,是因为ubuntu16.01自动安装ROS的时候自动下载的gazebo7.0.0版本的,这会导致后面我们做摄像头传感器的时候回出现错误,当我们运行摄像头传感器然后进入RVIZ配置image显示的时候,会出现如下错误
在这里插入图片描述
查阅了很多资料,都没有结果,最后在升级之后,发现可以很好的解决这个问题!当然,这只针对ubuntu16.04版本的用户哦,ubuntu18版本的ROS版本和16的不一样,可以完美进行接下来的操作!
1)、安装aptitude下载器,该下载器的功能强大,推荐使用该下载器,而不用apt-get

sudo apt-get install aptitude

2)、进行gazebo版本的升级

sudo aptitude install gazebo7

同样的,该过程有点长,大概50几M,等待一下吧,如下所示会升级到7.16版本:
在这里插入图片描述

以上就是搭建模拟环境前的准备步骤啦,现在我们进入到gazeno环境模型的搭建

二、创建配置launch文件参数的world文件

1、进入工程包mbot_gazebo

cd ~/ros/src/mbot_gazebo/

2、创建文件夹worlds

mkdir -p worlds

3、进入该文件夹

cd worlds

4、创建playground.world文件

1)、文件创建

touch playground.world

2)、打开文件,并写入如下代码:

gedit playground.world

代码内容过于长,这里不方便展示,大家可以去我上次的ROS学习博客下载我们所需要的gazebo工程包,那里面有我们需要的文件,拷贝过去就行:如下所示:
在这里插入图片描述
部分内容如下所示:
在这里插入图片描述

5、创建room.world文件

1)、文件创建

touch room.world

2)、打开文件,并写入如下代码:

gedit room.world

同样的,代码内容过于长,大家可以去我上次的ROS学习博客下载我们所需要的gazebo工程包,进行拷贝,如下所示:
在这里插入图片描述
部分内容如下所示:
在这里插入图片描述

三、基于Gazebo传感器[camera]的环境搭建

1、创建传感器camera的运行文件

1)、进入工程包mbot_gazebo目录下的launch文件夹

cd ~/ros/src/mbot_gazebo/launch

2)、创建传感器camera的launch文件

touch view_mbot_with_camera_gazebo.launch

3)、打开该文件

gedit view_mbot_with_camera_gazebo.launch

4)、写入传感器camera的模型配置语句

<launch>
    <!-- 设置launch文件的参数 -->
    <arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>
    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="world_name" value="$(arg world_name)" />
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>
    <!-- 加载机器人模型描述参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_with_camera_gazebo.xacro'" /> 
    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 
    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>
    <!-- 在gazebo中加载机器人模型-->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model mrobot -param robot_description"/> 
</launch>

2、打开终端,运行camera的launch文件

1)、进入ROS工作空间

cd ~/ros

2)、运行camera进行仿真

roslaunch mbot_gazebo view_mbot_with_camera_gazebo.launch

3)、终端运行截图:
在这里插入图片描述
4)、gazebo仿真软件运行截图
在这里插入图片描述

3、打开Rviz,进行摄像头的显示

1)、新建终端,进入ROS工作空间

cd ros

2)、运行Rviz

rosrun rviz rviz

在这里插入图片描述
3)、点击add->By display type->image->OK
在这里插入图片描述
4)、配置image相关参数
如图配置就好:
下拉选择该名称
在这里插入图片描述
image配置如下所示:
在这里插入图片描述
5)、显示结果如下所示:
在这里插入图片描述

四、基于Gazebo传感器[kinect]的环境搭建

1、创建传感器kinect的运行文件

1)、进入工程包mbot_gazebo目录下的launch文件夹

cd ~/ros/src/mbot_gazebo/launch

2)、创建传感器kinect的launch文件

touch view_mbot_with_kinect_gazebo.launch

3)、打开该文件

gedit view_mbot_with_kinect_gazebo.launch

4)、写入传感器kinect的模型配置语句

<launch>

    <!-- 设置launch文件的参数 -->
    <arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="world_name" value="$(arg world_name)" />
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>

    <!-- 加载机器人模型描述参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_with_kinect_gazebo.xacro'" /> 

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

    <!-- 在gazebo中加载机器人模型-->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model mrobot -param robot_description"/> 

</launch>

2、打开终端,运行kinect的launch文件

1)、进入ROS工作空间

cd ~/ros

2)、运行kinect进行仿真

roslaunch mbot_gazebo view_mbot_with_kinect_gazebo.launch

3)、终端运行截图:
在这里插入图片描述
4)、gazebo仿真软件运行截图
在这里插入图片描述

3、打开Rviz,进行摄像头的显示

1)、新建终端,进入ROS工作空间

cd ros

2)、运行Rviz

rosrun rviz rviz

在这里插入图片描述
3)、点击add->By display type->image->OK
在这里插入图片描述
4)、配置image相关参数
如图配置就好:
下拉选择该名称
在这里插入图片描述
image配置如下所示,下拉选择该处:
在这里插入图片描述
5)、显示结果如下所示:
在这里插入图片描述

五、基于Gazebo传感器[Lidar]的环境搭建

1、创建传感器Lidar的运行文件

1)、进入工程包mbot_gazebo目录下的launch文件夹

cd ~/ros/src/mbot_gazebo/launch

2)、创建传感器Lidar的launch文件

touch view_mbot_with_laser_gazebo.launch

3)、打开该文件

gedit view_mbot_with_laser_gazebo.launch

4)、写入传感器laser的模型配置语句

<launch>

    <!-- 设置launch文件的参数 -->
    <arg name="world_name" value="$(find mbot_gazebo)/worlds/playground.world"/>
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="world_name" value="$(arg world_name)" />
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>

    <!-- 加载机器人模型描述参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/gazebo/mbot_with_laser_gazebo.xacro'" /> 

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

    <!-- 在gazebo中加载机器人模型-->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model mrobot -param robot_description"/> 

</launch>

2、打开终端,运行Lidar的launch文件

1)、进入ROS工作空间

cd ~/ros

2)、运行Lidar进行仿真

roslaunch mbot_gazebo view_mbot_with_laser_gazebo.launch

3)、终端运行截图:
在这里插入图片描述
4)、gazebo仿真软件运行截图
在这里插入图片描述

3、打开Rviz,进行雷达的显示

1)、新建终端,进入ROS工作空间

cd ros

2)、运行Rviz

rosrun rviz rviz

在这里插入图片描述
3)、点击add->By display type->image->OK
在这里插入图片描述
4)、配置LaserScan的相关参数
如图配置就好:
下拉选择odom:
在这里插入图片描述
LaserScan配置如下所示,下拉选择该处:
在这里插入图片描述
5)、显示结果如下所示:
在这里插入图片描述
以上就是本次博客的全部内容啦,希望通过对本次博客的阅读,可以帮助小伙伴更好的学习ROS中的机器人仿真哦!遇到问题的小伙伴,欢迎评论区留言,林君学长看到会给大家解答的,这个学长不太冷!
陈一月的又一天编程岁月^ _ ^

发布了60 篇原创文章 · 获赞 67 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42451251/article/details/105151069