【rgbd_benchmark_tools】TUM RGBD数据集基准测试工具使用调试记录,SLAM评估

news2024/12/23 8:33:28
cgm@cgm:~/文档/rgbd_benchmark_tools$ /bin/python /home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py
Traceback (most recent call last):
  File "/home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py", line 43, in <module>
    import numpy
  File "/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages/numpy/__init__.py", line 130
    raise ImportError(msg) from e
                              ^
SyntaxError: invalid syntax


cgm@cgm:~/文档/rgbd_benchmark_tools$ echo $PYTHONPATH
/opt/ros/noetic/lib/python3/dist-packages:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages

为什么只有两个环境
怎么不使用anaconda3/envs/yolov8这个环境,我是在ubuntu的vscode

我之前一直使用是naconda3/envs/yolov8这个环境,.bashrc文件里:export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages

感谢您提供$PYTHONPATH的信息。问题的原因已经明了了。$PYTHONPATH环境变量指定了Python模块搜索路径,它包含了两个目录:

  1. /opt/ros/noetic/lib/python3/dist-packages:这是ROS (Robot Operating System) 的Python库路径。
  2. /home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages:这是您之前提到的Anaconda环境的Python 3.8库路径。

由于/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages$PYTHONPATH中,导致Python 2环境无法完全隔离,因为它仍然可以访问Anaconda环境中的Python 3库。

为了解决这个问题,您可以在运行Python 2脚本之前,暂时从$PYTHONPATH中移除Anaconda环境的路径。您可以使用以下命令来执行这一操作:

  • 方法一:
export PYTHONPATH=/opt/ros/noetic/lib/python3/dist-packages

然后再运行Python 2脚本:

/bin/python /home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py

这将确保Python 2环境不会受到Anaconda环境的影响,因为它不再搜索Anaconda环境的Python 3库。

请注意,这只是一个临时解决方案,每次在Python 2环境中运行脚本之前都需要手动执行。如果您想要更持久的解决方案,可能需要更深入地检查Anaconda环境和系统设置,以确保它们不会干扰Python 2环境。

  • 方法二:

如果Anaconda环境的路径出现在$PATH中,您可以通过编辑.bashrc文件或.zshrc文件来移除它。找到类似于以下行的内容,并将其删除或注释掉:

export PATH="/home/cgm/anaconda3/envs/yolov8/bin:$PATH"

我的.bashrc文件

 export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages:
我最后把.bashrc文件里的这行注释了

@cgm:~$ source .bashrc
cgm@cgm:~$ echo $PYTHONPATH
/opt/ros/noetic/lib/python3/dist-packages 

现在就没有这个环境了:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
  • 注意:

运行evaluate_ate.py时

cgm@cgm:~/文档/rgbd_benchmark_tools$ /bin/python /home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py
usage: evaluate_ate.py [-h] [--offset OFFSET] [--scale SCALE]
                       [--max_difference MAX_DIFFERENCE] [--save SAVE]
                       [--save_associations SAVE_ASSOCIATIONS] [--plot PLOT]
                       [--verbose]
                       first_file second_file
evaluate_ate.py: error: too few arguments

完整的运行代码需要first_file真值轨迹和second_file估计值的轨迹

  • 我创建了一个python2的conda环境
conda create -n python2env python=2.7
conda activate python2env
conda info --envs
pip install matplotlib
(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ pip install matplotlib
.....................................
(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ /bin/python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_image.png
0.070789
Traceback (most recent call last):
  File "evaluate_ate.py", line 175, in <module>
    import matplotlib
ImportError: No module named matplotlib
(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ 

根据您的输出,您已经成功激活了虚拟环境,并且在虚拟环境中的Python解释器中安装了matplotlib,但在运行脚本时似乎仍然使用了系统中的Python 2.7。这可能是因为在虚拟环境激活时,您直接使用了/bin/python,而它可能仍然指向系统的Python 2.7。

要使用虚拟环境中的Python解释器,您可以使用虚拟环境中的python命令,而不是/bin/python。请尝试以下命令来运行脚本:

python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_image.png

这三个文件(evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt)在一个目录下

通过运行上述命令,您应该能够在虚拟环境中正确使用matplotlib库和Python解释器来生成轨迹图像。如果问题仍然存在,请确保虚拟环境已经正确激活,并且python命令指向虚拟环境中的Python解释器。

(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_image.png
0.070789

rgbd_benchmark_tools这个文件夹里的内容

(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ ls  
add_pointclouds_to_bagfile.py  generate_pointcloud.py 
associate.py                   generate_registered_pointcloud.py
associate.pyc                  output_image.png
evaluate_ate.py                plot_trajectory_into_image.py 
evaluate_rpe.py                rgbd_dataset_freiburg1_360-groundtruth.txt 
freiburg1_360-rgbdslam.txt

output_image.png

简单使用方法:

# python evaluate_ate.py [真实轨迹] [VIO系统估计的估计] --plot [输出图像名称]
python evaluate_ate.py groundtruth.txt pose_output.txt --plot result.png

最后总结:

(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ python evaluate_rpe.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --fixed_delta --delta 1.0 --save output_rpe_data.txt --plot output_image.png
0.07933048022129437
1.注释掉.bashrc文件的这一行 
	export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
2.打开终端运行
	cgm@cgm:~$ source .bashrc
	cgm@cgm:~$ echo $PYTHONPATH
	/opt/ros/noetic/lib/python3/dist-packages
	cgm@cgm:~$ 
3.新建pyhton2的conda环境:
	conda create -n python2env python=2.7
	conda activate python2env
	conda info --envs
	pip install matplotlib
4.rgbd_benchmark_tools的根目录新建脚本文件build.sh,内容如下:
	# conda activate python2env
	# 我之前一直使用是naconda3/envs/yolov8这个环境,.bashrc文件里:export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
	# 解决:注释掉export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
	# 然后:source .bashrc
	cd src/rgbd_benchmark_tools
	
	python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_ate_image.png
	
	python evaluate_rpe.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --fixed_delta --delta 1.0 --save output_rpe_data.txt --plot output_rpe_image.png
5.把真值文件txt和预计轨迹文件txt放入rgbd_benchmark_tools/src/rgbd_benchmark_tools中,保持和py文件在一个目录(目的是运行命令可以变得很短)
6.cgm@cgm:~/文档/rgbd_benchmark_tools$ chmod +X build
7.cgm@cgm:~/文档/rgbd_benchmark_tools$ conda activate python2env
8.(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools$ ./build.sh
	0.070789
	0.07933048022129437
9.rgbd_benchmark_tools/src/rgbd_benchmark_tools有生成的2个图片(output_ate_image.png;output_rpe_image.png)和output_rpe_data.txt文件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

警惕!1本SCI解除“On Hold”,Chemosphere等11本期刊仍被标记!

期刊动态&#xff1a;警惕期刊“On Hold”状态&#xff01; 2023年8月&#xff0c;小编从科睿唯安官网整理出12本期刊处于“On Hold”状态&#xff01; 参考往期推文&#xff1a; 警惕&#xff01;10本“On Hold”期刊已被踢&#xff0c;仍有12本期刊被标记&#xff01; 期…

TC测试自动化Shell脚本

在使用TC测试的发现手动进行丢包延迟抖动等场景的组合以及TC命令的切换效率很低&#xff0c;写了一个脚本可以提升效率&#xff0c;也可以根据自己的需求进行脚本更改&#xff01; 使用方法&#xff1a; 1&#xff09;运行sh脚本 2&#xff09;输入TC想要限制的网卡名和服务器…

【板栗糖GIS】——如何在两个电脑间同步简悦插件高级账户

【板栗糖GIS】——如何在两个电脑间同步简悦插件高级账户 目录 1. 找到账户UID 2. 复制UID 3. 在另一台装简悦插件的电脑修改成同样的UID 简悦是一款很好用的资料收集以及阅读插件,具体介绍可以在官网进行查看 简悦 SimpRead - 如杂志般沉浸式阅读体验的扩展 今天我只是想…

JAVAEE初阶相关内容第九弹--多线程(初阶)

目录 定时器 定时器是什么 标准库中的定时器 实现定时器 以上的代码存在两个问题 &#xff08;1&#xff09;MyTask没有指定优先级 &#xff08;2&#xff09;阻塞队列不满足还得塞回去 以上代码还存在一个问题: 完整代码实现 定时器 定时器是什么 类似于定闹钟一样。…

六、全局约束中的Alldifferen和Cumulative的实现

文章目录 1、Alldifferent的内部实现1.1 防御怪物问题1.2 Alldifferent 值域传播器 2、Cumulative的内部实现THE END 1、Alldifferent的内部实现 1.1 防御怪物问题 \qquad 假设有 N N N个村庄和 K K K支军队&#xff0c;且满足 K ≥ N K \geq N K≥N&#xff0c;每支军队都与某…

android studio platform使用体验分享(as无法跳转c/c++等native源码的福音,强烈推荐)

hi&#xff0c;粉丝朋友们&#xff1a; 大家好&#xff01;这些天粉丝朋友们分享了一下Android Studio for Platform 这个最新的google开发的阅读aosp源码的工具&#xff0c;特别适合做原生系统开发。具体官方介绍如下地址&#xff1a; 参考链接&#xff1a;https://developer.…

《动手学深度学习 Pytorch版》 4.6 暂退法

import torch from torch import nn from d2l import torch as d2l4.6.1 重新审视过拟合 整节理论&#xff0c;详见书本。 4.6.2 扰动的稳健性 整节理论&#xff0c;详见书本。 4.6.3 实践中的暂退法 整节理论&#xff0c;详见书本。 4.6.4 从零开始实现 def dropout_la…

《C和指针》笔记24: 指针和间接访问

本文主要讲指针和间接访问&#xff0c;标题对应《C和指针对应的章节》&#xff0c;引用的地方是自己写的一些注释、理解和总结。 指针、间接访问和左值 先回顾一下左值和右值 左值代表着一个位置。右值代表着一个值。赋值等号左边是个左值&#xff0c;赋值等号右边是一个右值…

fabirc 将图像绘制原点定为图形内部

添加元素时&#xff0c;设置属性&#xff1a; originX: center, originY: center, 如我定义两个矩形&#xff1a; addrect () { // 矩形1var rect new fabric.Rect({top: 50,left: 100,width: 100,height: 70,fill: #F56C6C,strokeUniform: true // 限制边框宽度缩放})canva…

vue2实现自定义主题webpack-theme-color-replacer

需求&#xff1a;根据element的自定义主题色&#xff0c;之后改变element的全局所有颜色&#xff0c;解决页面刷新后主题色失效问题&#xff0c;这个需要把颜色存入到浏览器的存储中&#xff0c;如果换个浏览器就得重新选择了哈&#xff0c;如果需要在不同的浏览器保持一致的主…

langchain主要模块(四):Memory

langchain2之Memory langchain1.概念2.主要模块模型输入/输出 (Model I/O)数据连接 (Data connection)链式组装 (Chains)代理 (Agents)内存 (Memory)回调 (Callbacks) 3.MemoryConversationBufferMemoryConversationBufferWindowMemoryConversationTokenBufferMemoryConversati…

Error: svn: E155004: Run ‘svn cleanup‘ to remove locks

解决办法如下&#xff1a;点击settings 点击清除缓存按钮&#xff0c;然后再使用svn进行提交更新操作&#xff0c;但是可能还会有其它的错误&#xff0c;比如svn: E230001: Server SSL certificate verification failed&#xff0c;解决这个错误请参考我另一篇文章&#xff1a;…

【LeetCode: 2596. 检查骑士巡视方案:深度优先搜索】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

力扣 -- 300. 最长递增子序列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int lengthOfLIS(vector<int>& nums) {int nnums.size();vector<int> dp(n,1);int ret1;for(int i0;i<n;i){for(int j0;j<i;j){if(nums[j]<nums[i]){dp[i]max(dp[i],dp[j]1);}}r…

分布式系统第五讲:分布式事务及实现方案

分布式系统第五讲&#xff1a;分布式事务及实现方案 事务是一个程序执行单元&#xff0c;里面的所有操作要么全部执行成功&#xff0c;要么全部执行失败。而分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本…

微服务07-认识MQ+RabbitMQ入门

1.前言 了解同步调用和异步调用 1.1.同步调用 比如这里的支付服务&#xff0c;需要等待订单服务、短信服务…执行完毕才能执行&#xff0c;这样支付整个流程完毕需要500ms 然后如果订单、仓储等其中一个服务挂掉了&#xff0c;那么支付服务请求请求不了&#xff0c;挂掉的服…

Python实现进制转换

1 问题 如何将一个数从十进制转换成二进制&#xff0c;这个数从键盘输入。 2 方法 &#xff08;1&#xff09;输入一个十进制的数; &#xff08;2&#xff09;将这个数除以2求商和余数 &#xff08;3&#xff09;再用2去除商&#xff0c;又会得到一个商和余数&#xff0c;如此进…

企业用设备管理系统有什么好处?的修大数据管理平台的功能强大吗?

在现代工业运营中&#xff0c;设备的高效管理与维护对于维持生产稳定及提升企业竞争力具有重大意义。而设备管理系统作为一项重要工具&#xff0c;可以极大地提高企业的生产效率与设备维护的准确性。 企业使用设备管理系统的原因如下&#xff1a;   提高设备利用率&#xff1…

小白自助发卡销售系统|支持自助选号批量购买Thinkphp6.0+Layui

小白自助发卡销售系统 本系统由小白独立开发thinkphp+layui 功能特色: 1.前台下单支持自助选号。 2.前台库存显示方案增加3种。 3.自定义商品图片。 4.支持邮件通知功能具体可到后台自行体验。 5.支持批量下单购买。 6.支持易支付接口(目前用的比较多) 7.支持批量导入卡密 8.P…

从0到1理解ChatGPT原理

目录 写在前面 1.Tansformer架构模型 2.ChatGPT原理 3.提示学习与大模型能力的涌现 3.1提示学习 3.2上下文学习 3.3思维链 4.行业参考建议 4.1拥抱变化 4.2定位清晰 4.3合规可控 4.4经验沉淀 机械工业出版社京东自购链接 写在前面 2022年11月30日&#xff0c;ChatG…