在ROS下运行ORB_SLAM2 主要包括以下几步:
一、创建ROS工作空间
二、下载usb_cam(单目相机驱动包)
三、下载深度相机驱动包
四、下载ORB_SLAM2稠密建图代码
五、运行
一、创建ROS空间
1.创建工作空间:打开终端输入以下命令
mkdir catkin_slam cd catkin_slam/ mkdir src cd src/ catkin_init_workspace
2.编译工作空间:编译完成会出现build devel、
以上的步骤就是创建ROS空间
二、下载usb_cam
注意:usb_cam 功能包存放的位置 ,应该将其放在 src 文件夹下
1.首先我们先进入到 src 的目录下,然后通过命令下载 usb_cam
cd src
git clone https://github.com/bosch-ros-pkg/usb_cam.git usb_cam
2.接下来回到 catkin_slam 目录下, 对下载好的usb_cam进行编译
cd ..
catkin_make
三、安装深度相机驱动包
1、
$ sudo apt-get install ros-kinetic-astra-camera
$ sudo apt-get install ros-kinetic-astra-launch
经过 roslaunch ⽅式 便可启动 Astra 相机
在终端输⼊: $ roslaunch astra_launch astra.launch
2、检查话题是否发布正常
四、编译代码
下载ORB_SLAM2
1.同样需要将 ORB_SLAM2 存放在 src 目录下
github链接https://github.com/raulmur/ORB_SLAM2
GitHub - gaoxiang12/ORBSLAM2_with_pointcloud_map
2、单目模式需要修改的内容
因为我们使用的是电脑上的摄像头,所以需要修改ros_mono.cc 文件的内容:
找到 ros_mono.cc 所在的位置 /home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src
打开文件,将
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
修改为:
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
还需要修改文件 CMakeLists.txt
文件所在的位置:/home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2
添加:
-lboost_system
编译 (即我们常用的操作)
先编译总的 ORB_SLAM2
cd ~/catkin_slam/src/ORB_SLAM2/ mkdir build cd build cmake .. make
然后单独编译ROS
注意:在编译ROS前,需要先打开 .bashrc 文件添加以下内容:
sudo gedit ~/.bashrc //打开./bashrc
添加以下内容:其中 /home/fan/catkin_orb 根据自己实际的位置修改
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS
source /home/fan/catkin_slam/devel/setup.sh
修改完成之后,保存,
在终端输入
source ~/.bashrc
设置完上面的,就可以对ROS进行编译
cd //回到主目录
cd ~/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
mkdir build
cd build
cmake ..
make
2、rgbd下需要修改的内容,部分操作和上边1类似,需要更改如下
以及ros环境配置如上诉。
最后编译ros包
cd //回到主目录
cd ~/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
mkdir build
cd build
cmake ..
make
五、运行
=============================================================
1.打开一个终端,输入:
roscore
2.重新打开一个终端,开启摄像头,输入:
roslaunch usb_cam usb_cam-test.launch
3.再重新打开一个终端,输入:
rosrun ORB_SLAM2 Mono ~/catkin_slam/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
其中的词袋的位置根据自己的存放的位置进行修改
其中的Asus.yaml的位置根据自己的存放的位置进行修改
===============================================================
1.打开一个终端,输入:
roscore
2.重新打开一个终端,开启摄像头,输入:
roslaunch astra_launch astra.launch
3.再重新打开一个终端,输入:
rosrun ORB_SLAM2 RGBD 词袋路径 标定文件路径
备注:这里出现的问题是,只要镜头晃动之后,slam系统就停止运行了,还的跟下代码,是运行到哪里出问题导致奔溃的。运行样例数据也有这样的问题。一个问题一个问题解决,慢慢进步。哦里给
===========================分界线============================
参考链接:(32条消息) 用D435i跑ORB_SLAM2_m0_60355964的博客-CSDN博客
解决办法:
貌似是编译时候,指令集出来问题,用下边方法解决。
测试没有问题,但是点云没出来是怎么回事??
问题出来运行的配置文件中,增加如下代码:
#--------------------------------------------------------------------------------------------
# PointCloud Mapping
#--------------------------------------------------------------------------------------------
PointCloudMapping.Resolution: 0.03
————————————————
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)