Jetson AGX Orin 下 evo 安装与报错解决

本文介绍了如何在Python环境中设置evo并处理ORB_SLAM3关键帧轨迹,包括conda环境配置、TUM和Kitti数据集格式,以及遇到的Rosbags相关报错及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建环境:

conda create -n evo python=3.8
conda activate evo
pip install evo --upgrade --no-binary evo --user
pip install rosbags

2、 绘制轨迹

本文使用的是ORB_SLAM3 生成的关键帧位姿,为tum格式;

tum数据集格式: timestamp tx ty tz qx qy qz qw;

kitti数据集格式:1 0 0 -15.8049 0 1 0 -5.41213 0 0 1 -2.642 , 一行12个数据,表示Pose(R+t);

evo_traj tum KeyFrameTrajectory.txt -p --plot_mode xy

具体evo指令解释,我参考的这篇文章: evo安装与使用教程--完整版_evo 安装-优快云博客

3、报错处理

如果第二步出现报错,类如:

Traceback (most recent call last):
  File "/home/nvidia/.local/lib/python3.8/site-packages/evo/entry_points.py", line 95, in launch
    main_module.run(args)
  File "/home/nvidia/.local/lib/python3.8/site-packages/evo/main_traj.py", line 182, in run
    from evo.tools import file_interface, log
  File "/home/nvidia/.local/lib/python3.8/site-packages/evo/tools/file_interface.py", line 36, in <module>
    from rosbags.serde.serdes import cdr_to_ros1
ModuleNotFoundError: No module named 'rosbags.serde.serdes'

 解决办法:Rosbags update introduces breaking change · Issue #636 · MichaelGrupp/evo · GitHub

其实就是将evo/tools/file_interface.py的文件第36行注释一下就行,如下:

# from rosbags.serde.serdes import cdr_to_ros1

### 解决方案 #### 问题分析 用户遇到了 `ModuleNotFoundError: No module named 'evo2'` 的错误,这表明 Python 环境中未正确安装名为 `evo2` 的模块。然而,在已知的引用中并未提及任何关于 `evo2` 模块的信息。通常情况下,Python 中的模块名可能实际项目名称不同,或者可能是拼写错误。 以下是针对此问题的具体解决方案: --- #### 方法一:确认模块是否存在并尝试安装 可以通过官方 PyPI 或其他可信源查找是否有名为 `evo2` 的模块。如果存在,则可以按照以下方法进行安装: ```bash pip install evo2 ``` 如果当前环境中使用的是 Python 3.x 版本,建议指定对应的 pip 工具: ```bash pip3 install evo2 ``` 需要注意的是,某些模块可能存在命名差异或依赖冲突的情况。例如,根据已有引用中的描述[^1],`evo` 是一个常见的 ROS 和轨迹处理工具包,而 `evo2` 可能是一个自定义扩展或其他变体版本。如果没有找到确切匹配项,可进一步验证其替代品或更正后的名称。 --- #### 方法二:检查环境配置 在多版本 Python 并存的情况下(如 Ubuntu 16.04 默认支持 Python 2.7 和 Python 3.x),可能会因路径设置不当而导致模块无法被识别。具体操作如下: 1. **验证当前使用的 Python 版本** 运行以下命令以确认正在使用的解释器及其关联的 pip 工具: ```bash which python which pip ``` 2. **切换到目标 Python 环境** 如果需要强制绑定特定版本的 pip,请显式调用对应工具。例如: ```bash python2 -m pip install evo --upgrade --no-binary evo # 针对 Python 2.7 环境[^3] python3 -m pip install evo2 # 针对 Python 3.x 环境 ``` 3. **更新 pip 至最新版** 老化版本的 pip 可能引发兼容性问题,可通过以下命令升级: ```bash python -m pip install --upgrade pip # 更新全局 pip python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip # 使用清华镜像加速[^4] ``` --- #### 方法三:排查潜在依赖缺失 从引用内容来看,部分错误是由第三方库缺失引起的。例如,`defusedxml` 和 `rosbags.serde.serdes` 均属于必要组件[^1][^2]。因此,在安装主模块之前,应先确保这些依赖已被满足。 执行以下命令逐一安装所需依赖: ```bash pip install defusedxml rosbags ``` 对于特殊场景下的 ROS 应用开发,还需注意 Python 版本的一致性。例如,ROS Kinetic 主要基于 Python 2.7 构建,强行迁移至更高版本可能导致不可预见的问题。 --- #### 方法四:手动调试导入过程 当常规手段失效时,可以直接定位脚本文件夹内的初始化逻辑,查看是否存在问题。假设目标模块位于标准位置 `/usr/local/lib/pythonX.Y/site-packages/evo2/` 下,则需打开入口文件(通常是 `__init__.py`)审查内部结构。 此外,也可以利用交互式终端测试动态加载行为: ```python import sys print(sys.path) # 输出当前搜索路径列表 try: import evo2 except ImportError as err: print(f"Error occurred: {err}") ``` 通过以上方式能够快速锁定异常原因所在。 --- ### 总结 综上所述,解决 `ImportError` 错误的关键在于明确需求、调整适配环境以及补充遗漏资源三个方面共同作用的结果。尽管目前尚无直接证据证明 `evo2` 是否真实存在,但从上下文中推测它极有可能隶属于某个定制分支或是文档记录失误所致产物而已。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值