最近在学习slam,想将其应用在ros平台上,故跑了orb-slam2的代码。这里粗略总结一下"ROS下使用电脑相机运行ORB_Slam2"的过程。本人菜鸟一枚,如有问题欢迎交流。
参考博文:https://blog.csdn.net/qinqinxiansheng/article/details/106768491
网上有很多博文: https://www.jianshu.com/p/ec0ebf7fef22 配置好后,在终端运行
source devel/setup.bash roslaunch usb_cam usb_cam-test.launch即可打开摄像头:其中/usb_can/image_raw即为ros节点发布的话题消息
(github链接https://github.com/raulmur/ORB_SLAM2) 下载orb_slam2的源码,并按照提示配置相关环境,包括Pangolin,opencv,eigen,g2o (这里因为想用ros机制,所以安装了ros).这里只需要配置好环境就行,不需要编译,后续会统一编译。
1.将下载好的orb-slam源码RB_SLAM2-master放在工作空间的src文件夹下(/home/qin/catkin_ws/src)
2.在ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/src文件夹找到ros_mono.cc, 将
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);3.添加相机参数文件 在ORB_SLAM2-master文件夹下编写一个myslam.yaml文件用于存放相机参数,只为运行程序的话也可以用其他相机的参数:
%YAML:1.0 # Camera calibration and distortion parameters (OpenCV) Camera.fx: 500.0 Camera.fy: 500.0 Camera.cx: 320.0 Camera.cy: 240.0 Camera.k1: 0 Camera.k2: 0 Camera.p1: 0 Camera.p2: 0 Camera.k3: 0 # Camera frames per second Camera.fps: 30.0 # Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale) Camera.RGB: 0 # ORB Extractor: Number of features per image ORBextractor.nFeatures: 1000 # ORB Extractor: Scale factor between levels in the scale pyramid ORBextractor.scaleFactor: 1.2 # ORB Extractor: Number of levels in the scale pyramid ORBextractor.nLevels: 8 ORBextractor.iniThFAST: 10 ORBextractor.minThFAST: 5 Viewer.KeyFrameSize: 0.05 Viewer.KeyFrameLineWidth: 1 Viewer.GraphLineWidth: 0.9 Viewer.PointSize: 2 Viewer.CameraSize: 0.08 Viewer.CameraLineWidth: 3 Viewer.ViewpointX: 0 Viewer.ViewpointY: -0.7 Viewer.ViewpointZ: -1.8 Viewer.ViewpointF: 5004.在主文件夹下,Ctrl+h,可以看到隐藏的文件,在.bashrc文档末尾添加两行:(根据自己路径更改)
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/qin/catkin_ws/src/ORB_SLAM2-master/Examples/ROS source ~/catkin_ws/devel/setup.bash然后在终端运行
source ~/.bashrc5.修改Examples/ROS/ORB_SLAM2/文件夹下的CMakeLists.txt文件 在相应位置添加:一行 -lboost_system 6.编译ORB_Slam2 打开终端,运行
cd catkin_ws/src/ORB_SLAM2-master mkdir build cd build cmake .. make7.编译ROS的example
cd ~/catkin_ws/src/ORB_SLAM2-master/Example/ROS/ORB_SLAM2-master mkdir build cd build cmake .. make1.打开rosmaster 打开终端,输入
roscore2.打开相机 打开新的终端,输入
roslaunch usb_cam usb_cam-test.launch3.运行orbslam 新打开终端,运行(路径需要根据实际进行修改)
rosrun ORB_SLAM2 Mono /home/qin/catkin_ws/src/ORB_SLAM2-master/Vocabulary/ORBvoc.txt /home/qin/catkin_ws/src/ORB_SLAM2-master/myslam.yaml /home/qin/catkin_ws/src/ORB_SLAM2-master这里献上博主的建模结果:
