在运行orbslam之前需要的准备工作:
1. 安装usb_cam
参考摄像头标定,笔记本相机的标定(也可以不标定,使用程序中提供的相机参数,反正也不对地图有什么高要求。。。),外接相机也可以,好像是把某个文件中的0改成1.
2. 安装orbslam2
在catkin_ws/src中下载orbslam2,网上有教程。
至于orbslam的安装网上也有很多的教程,首先要安装一些依赖库,github上也有说明,然后编译orbslam,注意去掉文件build.sh中make之后的-j,防止卡死。还有usleep问题,需要在某个文件(程序报错后你就知道了)中加入头文件#include <unistd.h>
,这样应该没什么问题了,如果有自己取搜吧。
还有是要编译build_ros.sh,这个的话需要在.bashrc(位于/home/用户名)中加入
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/用户名/catkin_ws/src/ORB_SLAM2/Examples/ROS
当时我找方法的时候找了很多,然后在/opt/ros/melodic中的setup.bash中也加了这句话,保险起见还是加上吧,上边的路径注意换自己 的用户名,然后就是环境设置,打开终端,运行
source /opt/ros/melodic/setup.bash
source ~/.bashrc
在/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2中的CMakelists.tst文件中的
set(LIBS
$ {OpenCV_LIBS}
$ {EIGEN3_LIBS}
$ {Pangolin_LIBRARIES}
$ {PROJECT_SOURCE_DIR} /../。 ./../Thirdparty/DBoW2/lib/libDBoW2.so
$ {PROJECT_SOURCE_DIR} /../../../ Thirdparty / g2o / lib / libg2o.so
$ {PROJECT_SOURCE_DIR} /../../ .. /lib/libORB_SLAM2.so
加入-lboost_system,如下所示
set(LIBS
$ {OpenCV_LIBS}
$ {EIGEN3_LIBS}
$ {Pangolin_LIBRARIES}
$ {PROJECT_SOURCE_DIR} /../。 ./../Thirdparty/DBoW2/lib/libDBoW2.so
$ {PROJECT_SOURCE_DIR} /../../../ Thirdparty / g2o / lib / libg2o.so
$ {PROJECT_SOURCE_DIR} /../../ .. /lib/libORB_SLAM2.so
-lboost_system
)
最后就是在ORB_SLAM2中编译build_ros
./build_ros.sh
应该能成功了,我遇到的问题就是上面这些,还有如果你之前在其他位置安装过orbslam2,又在catkin_ws中安装了可能会出现路径问题,这个看一下问题描述应该能自己手动改过来,如果不在catkin_ws中安装的话你把路径写对应该就没问题了。
如果你自己标定了相机,在/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2中复制一下Asus.yaml为my.yaml,将其中的相机内参改成自己标定的结果,不建议使用自己的标定结果文件,因为格式不对。
还有ros中相机的节点问题,catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src的ros_mono.cc中修改节点,将camera_usb换成usb_cam。
3. 运行
打开一个终端,运行ros
roscore
再打开一个终端,运行相机
roslaunch usb_cam usb_cam-test.launch
如果出现错误,试一下在catkin_ws下运行
source devel/setup.bash
再打开一个终端,运行
rosrun ORB_SLAM2 Mono /home/用户名/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/用户名/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/my.yaml
注意改成自己的路径。
移动笔记本,不要旋转,进行初始化,然后就可以了。
来源:CSDN
作者:weixin_43665653
链接:https://blog.csdn.net/weixin_43665653/article/details/103773436