用KinectV2+ROS跑通ORB-SLAM

更多:请查看~/ORB_SLAM2/REAME.md

首先感谢高博分享的基本流程https://www.cnblogs.com/gaoxiang12/p/5161223.html
该流程是在自己试坑后做出的总结


1.编译运行Kinect2

cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"
roslaunch kinect2_bridge kinect2_bridge.launch

2.下载ORB_SLAM2并做适当改动

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
改动1:在目录Example/ROS/ORB_SLAM2/src/ros_rgbd.cc中:
main函数
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth_registered/image_raw", 1);
改成:
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "yourtopic", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "yourtopic", 1);
这里的yourtopic是按照下文rostopic list查到的/kinect2/hd/image_color_rect和/kinect2/hd/image_depth_rect修改保存
//因为kinect发布的topic改变了,不是程序中默认的,所以需要改动,在启动
roslaunch kinect_bridge kinect_bridge.launch 后,执行rostopic list,查看发布的话题,本文为:
"/kinect2/hd/image_color"和"kinect2/hd/image_depth_rect"

改动2:加入下面的ros环境变量,便于查找路径
$ sudo gedit ~/.bashrc
把路径export ROS_PACKAGE_PATH = $ROS_PACKAGE_PATH:/home/junwang/ORB_SLAM2/Examples/ROS加进去,

$ source ~/.bashrc//报错bash: export: `.......': 不是有效的标识符,并且还是找不对目录。

再尝试

$ sudo gedit /opt/ros/indigo/setup.sh

最后加export ROS_PACKAGE_PATH = $ROS_PACKAGE_PATH:/home/junwang/ORB_SLAM2/Examples/ROS
$ source /opt/ros/indigo/setup.sh//成功

参考:https://blog.csdn.net/poulang5786/article/details/79150902


改动3:设置标定相机参数,仿照/Examples/RGB-D/TUM1.yaml并另存为kinect2.yaml,我自己的参数为:

%YAML:1.0

# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 1.0599465578241038e+03
Camera.fy: 1.0539326808799726e+03
Camera.cx: 9.5488326677588441e+02
Camera.cy: 5.2373858291060583e+02

Camera.k1: 5.6268441170930321e-02
Camera.k2: -7.4199141308694802e-02
Camera.p1: 1.4250797540545752e-03
Camera.p2: -1.6951722389720336e-03
Camera.k3: 2.4107681263086548e-02

Camera.width: 1920
Camera.height: 1080

参考:https://blog.csdn.net/rainvictor1/article/details/72854137

https://blog.csdn.net/qq_30356613/article/details/71075244


3.编译ORB_SLAM2

cd ~/ORB_SLAM2
chmod +x build.sh
./build.sh 
source /opt/ros/indigo/setup.sh
chmod +x build_ros.sh
./build_ros.sh

4.运行

cd ~/ORB_SLAM2/Examples/ROS
rosrun ORB_SLAM2 RGBD /home/junwang/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/junwang/ORB_SLAM2/Examples/RGB-D/kinect2.yaml
参考:https://www.cnblogs.com/bigzhao/p/6635770.html

5.彩蛋:MonoAR(注意:单目!开始平稳前后移动相机使其初始化,左下角显示SLAM ON才可以再正常运行,跑Mono同理)

cd ~/catkin_ws/src/ORB_SLAM2
chmod +x build.sh
./build.sh 

chmod +x build_ros.sh
./build_ros.sh

cd ~/catkin_ws/src/ORB_SLAM2/Examples/ROS
rosrun ORB_SLAM2 MonoAR /home/junwang/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/junwang/catkin_ws/src/ORB_SLAM2/Examples/Monocular/kinect2.yaml
#若将ORB_SLAM2安装在catkin_ws/src下则不需要每次运行ros时都设置环境变量

猜你喜欢

转载自blog.csdn.net/qq_40313712/article/details/80824224
今日推荐