移动机器人系列----->树莓派4B运行测试ORB-SLAM2
注: 测试平台为树莓派4B(8+32G)
1:树莓派安装ubuntu18.04及编译ORB-SLAM2
1.1:树莓派上安装ubuntu18.04
关于在树莓派4B上安装ubuntu18.04的步骤,这里就不详细展开;官网有详细安装步骤,以及有很多大佬的博客来详细讲解如何安装。该博客中树莓派4B安装的是桌面版的ubuntu。为了方便,树莓派我没有外接屏幕和键盘,树莓派和自己的主机通过交换机接在一个网络下,主机用ssh或者Remmina和树莓派连接。可以通过ssh -X指令来将树莓派的软件界面投射到主机屏幕,或者也可以通过Remmina直接连接树莓派显示。
1.2:ORB-SLAM2的编译运行
在树莓派上的ubuntu运行ORB-SLAM2,步骤和一般电脑上类似,编译安装Cmake,OpenCV、Eigen、Pangolin等。为了测试代码,这里还安装了g2o和ceres优化库。安装好这些支持库之后,下载ORB-SLAM2源码编译,可能会出现usleep()的报错,根据报错信息,在对应文件中加入unistd.h头文件即可。
2:TUM数据集速度测试
为了验证ORB-SLAM2在树莓派4B上的运行速度,下载了rgbd_dataset_freiburg1_xyz数据集进行测试。这里简单测试了三种情况
1)直接测试: 在rgb_tum.cc文件中,统计处理图像的for循环耗时,根据运行总时间和图像数量来计算平均帧率;
2)仅TrackRGBD:仅统计TrackRGBD耗时,同样根据运行总时间和图像数量来计算平均帧率;
3)关闭Viewer:在构建System时使bUseViewer=false,关闭Pangolin的显示,同样根据运行总时间和图像数量来计算平均帧率;
方法 | 帧率 (fps) |
---|---|
直接测试 | 3.4 |
仅TrackRGBD | 4.4 |
关闭Viewer | 8.01 |
结论:
1)imread有些耗时,不过在运行bag包或者实际设备时影响不大;
2)Viewer比较耗时,后期调试好后可以直接关掉显示;
进一步测试打开viewer和关闭时cpu的占用情况;
选项 | 占用率(百分比) |
---|---|
开启Viewer | 170~200% |
关闭Viewer | 150~190% |
注:这里有点困惑,开启和关闭viewer的cpu占用差别不大,不知道是不是bUseViewer这个标志位并没有真正完全关闭viewer的一些数据处理,后面详细阅读代码再进一步测试。
3)代码的整体运行速度还是不够快,当前的这个帧率无法满足机器人平滑的运动,需要进一步优化加速。
附上树莓派4B上ORB-SLAM2的运行截图:
3:关于优化加速
目前想到要进行修改的地方有以下几点:
1:将cv::Mat修改为Eigen中的Matrix或者Sophus;
2:g2o修改为ceres(主要是对g2o不太熟,后期修改优化函数不方便);
3:针对RGBD版本进行裁剪;