欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UBUNTU16.04运行ORB SLAM2

程序员文章站 2024-03-25 19:26:04
...

下载好源码:https://github.com/raulmur/ORB_SLAM2

chmod +x build.sh
./build.sh

运行问题1:

 error: ‘usleep’ was not declared in this scope
         usleep(5000);

解决方法:

 在ORB_SLAM2-master/include/system.h中,增加 "#include <unistd.h>" 。

运行成功

最后一行显示:

[100%] Built target stereo_euroc

建立catkin_ws,其中主文件放于新建的src文件中。

将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。gedit ~/.bashrc文件并在最后添加以下行。

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:

catkin_make

 

在终端执行命令

source ./bashrc

(2)编译ROS下的ORB-SLAM2

chmod +x build_ros.sh

 ./build_ros.sh

编译报错:

/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/Stereo.dir/build.make:214: recipe for target '../Stereo' failed
make[2]: *** [../Stereo] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2

解决方法:https://blog.csdn.net/sinat_38343378/article/details/78883919

是要在管理员权限下把locate到的3个文件全部复制过去。

再 ./build_ros.sh 运行成功。

[100%] Built target Mono

 

单目模式(非ros模式):

rosrun ORB_SLAM2 Mono /home/zp/p_s/ORB_SLAM2-master/src/Vocabulary/ORBvoc.txt /home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/TUM1.yaml

没有输出。

上述路径不完整。

./mono_tum path_to_vocabulary path_to_settings path_to_sequence

./mono_tum /home/zp/p_s/ORB_SLAM2-master/src/Vocabulary/ORBvoc.txt /home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/TUM1.yaml /media/zp/zengpan/dataset/TUM dataset/rgbd_dataset_freiburg1_room/rgb
【报错】

经验教训是:千万不要在文件名中包含空格,不然作为输入时,会自动视为2个参数。

./mono_tum ../../Vocabulary/ORBvoc.txt TUM1.yaml /media/zp/zengpan/dataset/TUM_dataset/rgbd_dataset_freiburg1_room 

【成功了】

运行单目,TUM数据集:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /media/zp/zengpan/dataset/TUM%20dataset/rgbd_dataset_freiburg1_room/rgb

运行orbslam2会在中间卡死,在界面上会显示track lost 。经过查找在rgbd_tum.cc中,执行完slam过程会执行SLAM.Shutdown()函数,就算这个函数卡住,导致后面轨迹无法保存。

解决办法是把保存轨迹的函数放在SLAM.Shutdown()前面,这个可以将轨迹保存,但是shutdown()函数还是不能通过。
 

运行单目,Euroc数据集:

在/home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/目录下:

./mono_euroc ../../Vocabulary/ORBvoc.txt EuRoC.yaml /media/zp/zengpan/dataset/Euroc_dataset/MH_01_easy/mav0/cam0/data /home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/EuRoC_TimeStamps/MH01.txt

===============================================

单目模式(ros模式):