RGB-D基准测试工具:绝对轨迹误差 (ATE)、相对位姿误差 (RPE)和从图像生成点云
生成 图像 测试工具 点云 绝对 rgb 相对 轨迹
2023-09-27 14:27:34 时间
在估计RGB-D相机轨迹并将其保存到文件中后,我们需要通过将其与地面事实进行比较来评估估计轨迹中的误差。有不同的错误指标。两种突出的方法是绝对轨迹误差(ATE)和相对姿势误差(RPE)。ATE非常适合测量可视 SLAM 系统的性能。相比之下,RPE非常适合测量视觉里程计系统的漂移,例如每秒漂移。
一、准备工作
1.运行rgb-d数据集
(base) dzh@dzh-Lenovo-Legion-Y7000:~$ cd slambook/
(base) dzh@dzh-Lenovo-Legion-Y7000:~/slambook$ cd ORB_SLAM2/
(base) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/ORB_SLAM2$ ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml ../TUM_DataSet/freiburg3_walking_xyz ../TUM_DataSet/freiburg3_walking_xyz/associations.txt
运行结束后,可以看到相机的轨迹被保存到了CameraTrajectory.txt
;关键帧的轨迹被保存到了KeyFrameTrajectory.txt
。
2.复制文件
我们可以在ORB-SLAM2的根目录下找到这两个轨迹文件。
然后将运行得到的轨迹文件和数据集自带的groundtruth文件复制到一个文件夹中,然后是两个python脚本,便于操作。
3.解决报错
打开终端输入运行脚本的命令python evaluate_ate.py groundtruth.txt CameraTrajectory.txt
,我的base环境是Python3.9,而评估脚本都是python2的代码,所以运行会出现以下报错并修改脚本:
(base) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/Evaluation$ python evaluate_ate.py groundtruth.txt CameraTrajectory.txt
File "/home/dzh/slambook/Evaluation/evaluate_ate.py", line 153
print "compared_pose_pairs %d pairs"%(len(trans_error))
^
SyntaxError: invalid syntax
python2和python3print的格式不同,python3必须要加上()。
(base) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/Evaluation$ python evaluate_ate.py groundtruth.txt CameraTrajectory.txt
Traceback (most recent call last):
File "/home/dzh/slambook/Evaluation/evaluate_ate.py", line 45, in <module>
import associate
ModuleNotFoundError: No module named 'associate'
复制associate.py到当前文件夹。
(base) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/Evaluation$ python evaluate_ate.py groundtruth.txt CameraTrajectory.txt
Traceback (most recent call last):
File "/home/dzh/slambook/Evaluation/evaluate_ate.py", line 129, in <module>
first_list = associate.read_file_list(args.first_file)
TypeError: read_file_list() missing 1 required positional argument: 'remove_bounds'
def read_file_list(filename,remove_bounds=‘False’):
(yolov5) dzh@dzh-Lenovo-Legion-Y7000:~/slambook/Evaluation$ python evaluate_ate.py groundtruth.txt CameraTrajectory.txt
Traceback (most recent call last):
File "evaluate_ate.py", line 144, in <module>
first_stamps.sort()
AttributeError: 'dict_keys' object has no attribute 'sort'
sorted(first_stamps)
Traceback (most recent call last):
File "/home/dzh/slambook/Evaluation/evaluate_ate.py", line 182, in <module>
plot_traj(ax,first_stamps,first_xyz_full.transpose().A,'-',"black","ground truth")
File "/home/dzh/slambook/Evaluation/evaluate_ate.py", line 95, in plot_traj
interval = numpy.median([s-t for s,t in zip(stamps[1:],stamps[:-1])])
TypeError: 'dict_keys' object is not subscriptable
list(stamps)[1:]
二、绝对轨迹误差 (ATE)
- 仅输出RMSE/cm误差,执行如下命令:
python evaluate_ate.py groundtruth.txt CameraTrajectory.txt
- 输出真实轨迹和预测轨迹以及误差,并直观显示,执行如下命令:
python evaluate_ate.py groundtruth.txt CameraTrajectory.txt --plot result.png
- 输出所有误差,包含平均值,中值等, 执行如下命令:
python evaluate_ate.py groundtruth.txt CameraTrajectory.txt --verbose
三、相对位姿误差 (RPE)
python evaluate_rpe.py groundtruth.txt KeyFrameTrajectory.txt --fixed_delta --plot rpe2.png
四、从图像生成点云
python generate_pointcloud.py path_rgb path_depth path_ply
打开meshlab,然后import mesh,可以查看到数据集第一帧的3D点云。
SLAM是一项和实践紧密相关的技术,再漂亮的数学理论,如果不能转化为可以运行的代码,那就仍是可望而不可及的空中楼阁,没有实际意义。实践出真知,实践出真爱。
相关文章
- java 通过接口在后台管理器中生成数据
- 使用iOS-QR-Code-Encoder 生成二维码
- GEE——2018 年南非国家土地覆盖( 20 米分辨率多季节 Sentinel 2 卫星图像生成的)
- IDEA中开发Android完整示例及APK的生成(包含用户名密码输入获取等操作)
- 用C++_OpenCV生成一幅灰度值为0~255的测试图像(测试矩阵)
- 实战演练 | 在 Navicat 16 中生成测试数据
- 32位arm处理器相关的内核镜像生成过程解析
- 【Excel】+随机数生成
- ZTree id值太大,ZTree没有生成树,ZTree的id值过大
- ControlNet 和 T2I-Adapter,控制Stable Diffusion的不受控制的力量,AI 图像生成精确控制的破冰解决方案(教程含免安装使用方式)
- Stable Diffusion现代人工智能艺术成功背后的物理学原理,破译用于文本到图像生成的著名 AI 模型与物理学中观察到的过程之间的联系
- 多目标遗传算法 ------ NSGA-II (部分源码解析) 临时种群生成新父代种群 fillnds.c
- Powerdesigner 生成数据字典
- 真正实现一键自动化部署,Nginx+Tomcat+Redis 实现负载均衡集群服务搭建,所有文件自动生成,包括自动生成配置文件参数、解决依赖问题、Session共享同步、反向代理等等
- SpringBlade 生成的代码 项目运行都不能访问 404