台式机不方便,所以回家之前又笔记本搭建了一下ORB_SLAM2的环境,遇到了一堆问题,在这里总结一下。
1.编译Opencv时遇到Eigen3找不到
[ 75%] Building CXX object modules/contrib/CMakeFiles/opencv_contrib.dir/src/rgbdodometry.cpp.o
/home/gom7745/IR/opencv-2.4.11/modules/contrib/src/rgbdodometry.cpp:65:47: fatal error: unsupported/Eigen/MatrixFunctions: No such file or directory
# include <unsupported/Eigen/MatrixFunctions>
首先确保Eigen已经安装了,然后找到Eigen所在的路径。我的在/usr/include/eigen3这里
然后将
# include <unsupported/Eigen/MatrixFunctions>
改成
# include </usr/include/eigen3/unsupported/Eigen/MatrixFunctions>
这里依照自己的eigen路径来改
2.运行ORB_SLAM2单目一直等待图像waiting for images
新开一个终端运行rqt_graph命令,发现话题没有连接上
在ORB_SLAM2/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);
同样的,在跑单目的AR例子时也会遇到这种情况,程序一直卡住不出现任何画面。
在ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR 打开ros_mono_ar.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);