Advertisement

编译运行ORB-SLAM2和ORB-Line-SLAM遇到问题总结

阅读量:

ORB-SLAM2

可作为参考资料使用的教程是ORB_SLAM2_detailed_comments项目。在开发过程中会遇到错误提示,在文章中有详细说明的问题。可供操作参考的博客是ORB_SLAM2–源码编译

ORB_Line_SLAM 资料较少,测试发现其编译步骤与ORB_SLAM2相同,但是编译过程中遇到报错1:

复制代码
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc: In member function ‘bool ORB_SLAM2::Tracking::TrackWithMotionModelWithLine()’:
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:1358:9: error: ‘random_device’ was not declared in this scope; did you mean ‘random_data’?
     1358 |         random_device rnd_dev;
      |         ^~~~~~~~~~~~~
      |         random_data
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:1359:9: error: ‘mt19937’ was not declared in this scope
     1359 |         mt19937 rnd(rnd_dev());
      |         ^~~~~~~
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:1364:50: error: ‘rnd’ was not declared in this scope; did you mean ‘rand’?
     1364 |             cv::Scalar color = Scalar(color_dist(rnd), color_dist(rnd), color_dist(rnd));
      |                                                  ^~~
      |                                                  rand
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:1397:9: error: ‘random_device’ was not declared in this scope; did you mean ‘random_data’?
     1397 |         random_device rnd_dev;
      |         ^~~~~~~~~~~~~
      |         random_data
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:1398:9: error: ‘mt19937’ was not declared in this scope
     1398 |         mt19937 rnd(rnd_dev());
      |         ^~~~~~~
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:1403:50: error: ‘rnd’ was not declared in this scope; did you mean ‘rand’?
     1403 |             cv::Scalar color = Scalar(color_dist(rnd), color_dist(rnd), color_dist(rnd));
      |                                                  ^~~
      |                                                  rand
    
    
    
    cpp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/vTjtrWyibonIzJYQ64LPHMmpX75A.png)

报错2:

复制代码
    /home/xiujie/Downloads/ORB_Line_SLAM-master/src/Tracking.cc:2382:13: error: ‘usleep’ was not declared in this scope
     2382 |             usleep(3000);

为了解决问题1,请避免按照提示进行修改操作。参考该博客解决编译stvo-pl时遇到"random_device"未声明错误的方法,在出现错误时,在.h头文件中引入通用包含头文件。这样只需在遇到错误时,在对应的.h头文件中添加即可。

复制代码
    #include<bits/stdc++.h>

针对问题二(报错二),请参考官方文档编译 orbslam2 时出现的 error: 'usleep' was not declared in this scope, 即 usleep(3000),具体操作步骤包括:首先确定程序所在编译目录;然后在对应的头文件中添加 usleep函数声明并完成补丁应用;最后重新编译运行即可解决问题

复制代码
    #include<unistd.h>

两个SLAM代码至此编译成功!

全部评论 (0)

还没有任何评论哟~