嗯 这个方法我暂时弄不出来,用了另外一个方法:SLAM14讲 第一次课 使用摄像头或视频运行 ORB-SLAM2
前面的准备:
STEP1:第一个终端
roscore
STEP2:第二个终端运行usb_cam (如果出现问题见上面的第二个参考,里面有两种方法启动摄像头)
roslaunch usb_cam usb_cam-test.launch
STEP3:第三个终端
source Examples/ROS/ORB_SLAM2/build/devel/setup.bash (路径看自己的ORB_SLAM2文件,如果没有这一步会有错误:[rospack] Error: package 'ORB_SLAM2' not found)
rosrun ORB_SLAM2 Mono /home/zc/Desktop/ORBvoc.txt /home/zc/Desktop/Asus.yaml
我把
./Vocabulary/ORBvoc.txt
/home/zc/Desktop/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml(此处还没有标定,后续要做)
这两个文件都拷贝到桌面上去了,如果直接运行一直有问题。
运行后出现问题:
尝试解决问题:
OpenCV Error: Bad argument (Invalid pointer to file storage) in cvGetFileNodeByName, file /build/opencv-_msWgW/opencv-2.4.8+dfsg1/modules/core/src/persistence.cpp, line 740
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv-_msWgW/opencv-2.4.8+dfsg1/modules/core/src/persistence.cpp:740: error: (-5) Invalid pointer to file storage in function cvGetFileNodeByName
问题原因:
查阅资料发现是OpenCV3与ROS兼容问题,因为indigo里面自带的是opencv2.4.8,而我要用的程序是基于opencv3的。(这里因为之前跟着SLAM14讲在做)
解决方法:在程序所在工作空间中加入最新的cv_bridge包,重新catkin-make,这样就可以解决该问题了。
cv_bridge包
链接:https://pan.baidu.com/s/1CsCfjrIUyepNqxKhECIsyQ
提取码:n1rm
有可能出现catkin_make:commond not found 的错误,使用这个解决方法