ROS学习-----搭建Gazebo机器人物理仿真环境并展示空环境中的机器人


机器人的环境搭建,是学习嵌入式的一个重要过程,只有先模拟出搭建的机器人平台,发现并解决问题,才能在后续自己进行嵌入式机器人开发时候的解决关键的技术问题,避免不必要的问题,创造出优质的产品
本次博客,林君学长主要带大家如何搭建Gazebo的机器人物理仿真环境并展示空环境下的Gazebo下的机器人

一、运行Gazebo,查看是否能够正常打开程序

1、新建一个终端,运行Gazebo仿真软件

1)、运行Gazebo仿真软件

gazebo

2)、输入上面的命令之后,gazebo仿真软件就会自动打开,如下所示:
在这里插入图片描述
在这里插入图片描述

2、应对Gazebo程序闪退的方法

一般来说,我们的仿真程序是没有什么问题的,首次进去会黑屏一段时间,然后就会出现上面的界面,如果,你的的程序进去之后没有出现上面的界面一直在黑屏的界面或者进去之后闪退,那么可以用如下方法解决
1)、在终端输入命令,打开 .bashrc文件

gedit ~/.bashrc

界面如下所示:
在这里插入图片描述
2)、在文件末尾添加以下命令,然后点击保存、关闭

export SVGA_VGPU10=0

在这里插入图片描述
3)、再次运行我们的Gazebo仿真程序,就可以完美打开了!上面就是我们搭建仿真环境之前的准备操作,接下来,开始搭建我们的仿真环境吧!

二、搭建Gazebo机器人仿真环境

对于Gazebo的机器人环境搭建,这里林君学长给出自己的搭建步骤,同时也会给出已经搭建好的仿真环境工程包,大家可以自行下载,然后倒入到ROS的工作空间下去,下载链接如下:
Gazebo软件下的机器人仿真环境搭建工程包
对于如何将工程包导入到ubuntu系统下面去,大家可以参考林君学长之前写的博客,通过传输软件进行导入,博客链接如下:
如何从windows10向ubuntu传输大数据的文件(大于等于50M)

1、新建Gzaebo机器人仿真工程包

1)、进入我们的ros工作区

cd ~/ros/src

2)、使用catkin_create_pkg命令去创建一个名为mbot_gazebo的包,这个包依靠std_msgs、roscpp、rospy。

catkin_create_pkg mbot_gazebo std_msgs rospy roscpp

创建成功的包名如下所示:
在这里插入图片描述
3)、进入ROS工作空间,编译我们刚刚创建的工程包

扫描二维码关注公众号,回复: 10211626 查看本文章
  • 进入工作空间
cd ~/ros
  • 编译创建的工程包
catkin_make

在这里插入图片描述
如上所示,编译100%则为成功编译,这里应该是可以成功的,因为们创建的文件夹都是空的,肯定能够编译成功!
4)、mbot_gazebo包下面会存在以下文件,如下所示:
在这里插入图片描述
经过以上步骤,我们的Gazebo仿真环境工程包就建立好了!

2、进入该工程包下面,创建我们需要的文件

1)、进入mbot_gazebo工程包

cd ~/ros/src/mbot_gazebo/

2)、创建launch文件夹

mkdir launch

3)、进入launch文件夹,创建我们Gazebo空仿真环境的运行文件

cd launch
touch gazebo_empty.launch

4)、打开该launch文件

gedit gazebo_empty.launch

此时文件内容是空白的
5)、将以下代码如下launch文件中,然后点击保存后关闭

<launch>
    <!-- 设置launch文件的参数 -->
    <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="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_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、修改CMakeLists.txt文件内容

1)、进入功能包、打开CMakeLists.txt文件

cd ~/ros/src/gazebo/
gedit CMakeLists.txt

2)、找到文件中的find_package函数,将内容修改为如下:

gazebo_plugins
gazebo_ros
gazebo_ros_control
roscpp
rospy
std_msgs

如下所示:
在这里插入图片描述

3、修改package.xml文件内容

1)、进入功能包、打开package.xml文件

cd ~/ros/src/gazebo/
gedit package.xml

2)、找到文件中的 build_depend,添加如下内容:

<build_depend>gazebo_plugins</build_depend>
<build_depend>gazebo_ros</build_depend>
<build_depend>gazebo_ros_control</build_depend>

如下所示:
3)、找到文件中的build_export_depend项,添加如下代码:

<build_export_depend>gazebo_plugins</build_export_depend>
<build_export_depend>gazebo_ros</build_export_depend>
<build_export_depend>gazebo_ros_control</build_export_depend>

4)、找到文件中的exec_depend项,添加如下内容:

<exec_depend>gazebo_plugins</exec_depend>
<exec_depend>gazebo_ros</exec_depend>
<exec_depend>gazebo_ros_control</exec_depend>

添加好的代码整体如下所示:
在这里插入图片描述
然后点击保存后关闭!

三、程序编译

1、回到ROS工作环境,进行编译

cd ~/ros
catkin_make

成功编译如下所示:
在这里插入图片描述
上面就是程序编译的完整过程,还是很简单的,如果编译过程中遇到编译出错,可以根据下面的步骤进行改进!

2、编译过程中出现错误的解决办法

1)、编译过程中出现下图的错误:
在这里插入图片描述
2)、上面是缺少gazebo在ROS中的控制,所以,我们可以通过安装这个控制得到解决

sudo apt-get install ros-kinetic-gazebo-ros-control

在这里插入图片描述
在输入以上命令后,就会下载这个控制包了,然后再执行编译,成功编译完成,由于自己的已经安装过这个包,所以是上面的界面,大家没有安装的,可能就会到下载界面,输入密码进行下载!

四、程序注册

对于程序注册,一直都是不可省去的一步,这一步很重要,但是可以省去人工注册,大家可以修改注册命令,然后让系统在打开终端的时候自动为我们进行注册,具体方法大家可以参考林君学长写的的博客,链接如下:
问题解决-----解决ROS程序注册(source devel/setup.bash)只在当前终端生效的问题

1、回到我们的ROS工作区进行程序注册

1)、回答ROS工作区

cd ~/ros

2)、进行程序注册

source ./devel/setup.bash

通过以上步骤,我们的程序注册就完成啦,是不是很简单呢!

五、运行Gazebo机器人仿真

1、在终端运行launch文件进行Gazebo仿真

1)、运行命令如下:

roslaunch mbot_gazebo gazebo_empty.launch

输入命令后回车,进行仿真

2、系统自动打开gazebo,并建立起相应的模型

1)、运行结果如下所示:
在这里插入图片描述
上面我们可以看见,此时的模型只有简单的一个空模型,一个小车,什么都没有,大家如果下载了林君学长给的那个Gazebo机器人仿真功能包,里面除了空模型还有其他模型、例如:操场、房子等模型大家可以去试着运行一下!
以上就是本次博客的全部内容,通过Gazebo仿真软件进行机器人的简单仿真实验哦,本次博客只是带大家了解如何通过Gazebo进行模型的搭建,比较简单,后续林君学长会持续更新更过的Gazebo进行机器人模型搭建的高级实例哦,喜欢的小伙伴记得点赞关注,大家一起学习嵌入式的ROS开发吧!
陈一月的又一天编程岁月^ _ ^

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

猜你喜欢

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