1)、运行Gazebo仿真软件
gazebo
2)、输入上面的命令之后,gazebo仿真软件就会自动打开,如下所示:
一般来说,我们的仿真程序是没有什么问题的,首次进去会黑屏一段时间,然后就会出现上面的界面,如果,你的的程序进去之后没有出现上面的界面一直在黑屏的界面或者进去之后闪退,那么可以用如下方法解决
1)、在终端输入命令,打开 .bashrc文件
gedit ~/.bashrc
界面如下所示:
2)、在文件末尾添加以下命令,然后点击保存、关闭
export SVGA_VGPU10=0
3)、再次运行我们的Gazebo仿真程序,就可以完美打开了!上面就是我们搭建仿真环境之前的准备操作,接下来,开始搭建我们的仿真环境吧!
对于Gazebo的机器人环境搭建,这里林君学长给出自己的搭建步骤,同时也会给出已经搭建好的仿真环境工程包,大家可以自行下载,然后倒入到ROS的工作空间下去,下载链接如下:
Gazebo软件下的机器人仿真环境搭建工程包
其中,mbot_description工程包的下载如下,Gazebo需要配合mbot_description使用,下载链接如下所示:
https://download.csdn.net/download/qq_42451251/12344221
对于如何将工程包导入到ubuntu系统下面去,大家可以参考林君学长之前写的博客,通过传输软件进行导入,博客链接如下:
如何从windows10向ubuntu传输大数据的文件(大于等于50M)
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工作空间,编译我们刚刚创建的工程包
cd ~/ros
catkin_make
如上所示,编译100%则为成功编译,这里应该是可以成功的,因为们创建的文件夹都是空的,肯定能够编译成功!
4)、mbot_gazebo包下面会存在以下文件,如下所示:
经过以上步骤,我们的Gazebo仿真环境工程包就建立好了!
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>
1)、进入功能包、打开CMakeLists.txt文件
cd ~/ros/src/mbot_gazebo/
gedit CMakeLists.txt
2)、找到文件中的find_package函数,将内容修改为如下:
gazebo_plugins
gazebo_ros
gazebo_ros_control
roscpp
rospy
std_msgs
1)、进入功能包、打开package.xml文件
cd ~/ros/src/mbot_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>
cd ~/ros
catkin_make
成功编译如下所示:
上面就是程序编译的完整过程,还是很简单的,如果编译过程中遇到编译出错,可以根据下面的步骤进行改进!
1)、编译过程中出现下图的错误:
2)、上面是缺少gazebo在ROS中的控制,所以,我们可以通过安装这个控制得到解决
sudo apt-get install ros-kinetic-gazebo-ros-control
在输入以上命令后,就会下载这个控制包了,然后再执行编译,成功编译完成,由于自己的已经安装过这个包,所以是上面的界面,大家没有安装的,可能就会到下载界面,输入密码进行下载!
对于程序注册,一直都是不可省去的一步,这一步很重要,但是可以省去人工注册,大家可以修改注册命令,然后让系统在打开终端的时候自动为我们进行注册,具体方法大家可以参考林君学长写的的博客,链接如下:
问题解决-----解决ROS程序注册(source devel/setup.bash)只在当前终端生效的问题
1)、回答ROS工作区
cd ~/ros
2)、进行程序注册
source ./devel/setup.bash
通过以上步骤,我们的程序注册就完成啦,是不是很简单呢!
1)、运行命令如下:
roslaunch mbot_gazebo gazebo_empty.launch
输入命令后回车,进行仿真
1)、运行结果如下所示:
上面我们可以看见,此时的模型只有简单的一个空模型,一个小车,什么都没有,大家如果下载了林君学长给的那个Gazebo机器人仿真功能包,里面除了空模型还有其他模型、例如:操场、房子等模型大家可以去试着运行一下!
以上就是本次博客的全部内容,通过Gazebo仿真软件进行机器人的简单仿真实验哦,本次博客只是带大家了解如何通过Gazebo进行模型的搭建,比较简单,后续林君学长会持续更新更过的Gazebo进行机器人模型搭建的高级实例哦,喜欢的小伙伴记得点赞关注,大家一起学习嵌入式的ROS开发吧!
陈一月的又一天编程岁月^ _ ^