一、介绍

(本文转载于我的csdn博文:https://blog.csdn.net/qinqinxiansheng/article/details/115266992
开发环境:本博文实现了ORB-SLAM在gazebo环境下的仿真,环境为:ubuntu 16.04 + ROS + gazebo 7.0 + ORB-slam2
预备知识:ROS,gazebo,ORB-SLAM的相关知识
参考链接:运行效果:https://www.bilibili.com/video/BV1ZK4y1T7jR?share_source=copy_web
mooc教学视频(含丰富的gazebo仿真环境):https://www.icourse163.org/course/ISCAS-1002580008
ros入门21讲:(讲解更细腻):https://www.bilibili.com/video/BV1zt411G7Vn?share_source=copy_web
ORBSLAM2下载:https://github.com/raulmur/ORB_SLAM2

二、仿真环境搭建

1.安装ros和gazebo,网上有很多教程。
2.创建工作空间tutorial_ws:https://blog.csdn.net/qinqinxiansheng/article/details/106768491
3.进入src文件目录下,下载mooc教学视频中的仿真环境,https://github.com/DroidAITech/ROS-Academy-for-Beginners

cd tutorial_ws/src         #进入src路径,克隆教学软件包
git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git

4.安装依赖项:

cd ~/tutorial_ws
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

5.检查gazebo版本,要在7.0以上

gazebo -v

如果Gazebo版本低于7.0,则需要进行升级

 sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
 wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
 sudo apt-get update
 sudo apt-get install gazebo7

6.编译工作空间

cd ~/tutorial_ws
catkin_make
source ~/tutorial_ws/devel/setup.bash #刷新环境 ,如果在~/.bashrc文件的末尾追加了source ~/tutorial_ws/devel/setup.bash,则此行可以省略

三、ORBSLAM2安装与配置

1.网上有很多安装教程(注意,我们需要用ros的接口调用orbslam)
https://blog.csdn.net/learning_tortosie/article/details/79881165
2.修改参数配置
  此仿真环境下,发布的相机图像的话题为/camera/depth/image_raw和/camera/rgb/image_raw,所以我们slam接受话题的数据时名称要一致。打开/src/ORB_SLAM2_ros/Examples/ROS/ORB_SLAM2/src/ros_rgbd.cc进行修改


在这里插入图片描述

另外我们还要有仿真环境中kinetic相机参数文件,它在ROS-Academy-for-Beginners/orbslam2_demo/param/Zdzn.yaml

3.编译slam。编译的位置要注意:src/ORB_SLAM2_ros/Examples/ROS/ORB_SLAM2/build。在此路径下打开终端,用 cmake . . make 的命令进行编译
4.运行slam。后两个参数为字典文件何相机参数文件的位置,要根据自己的路径进行设置(这里我把Zdzn.yaml文件与orbslam其他相机参数文件放在一起了)

rosrun ORB_SLAM2 RGBD /home/qin/catkin_ws/src/ORB_SLAM2_ros/Vocabulary/ORBvoc.txt /home/qin/catkin_ws/src/ORB_SLAM2_ros/Examples/RGB-D/Zdzn.yaml

四、运行仿真环境:

1.打开仿真环境,第一次可能有些慢,甚至卡出来。
打开终端,输入:

roslaunch robot_sim_demo robot_spawn.launch

 
2.运行键盘控制节点。打开另一个终端,输入

rosrun robot_sim_demo robot_keyboard_teleop.py

将光标定位到此终端上,便可以通过按键控制机器人运动。

 
3.打开新的终端,用rostopic list命令查看机器人发布的所有的话题,其中/camera/depth/image_raw和/camera/rgb/image_raw即为深度和rab的图像话题。


在这里插入图片描述

 
4.打开新的终端,通过命令即可查询机器人所采集到的图像:

rosrun image_view image_view image:=/camera/depth/image_raw
rosrun image_view image_view image:=/camera/rgb/image_raw

在这里插入图片描述

 
5.运行orbslam2,并控制机器人移动,即可进行定位与建图工作。视频链接https://www.bilibili.com/video/BV1ZK4y1T7jR?share_source=copy_web


在这里插入图片描述