lvi-sam跑ape
时间: 2025-06-06 18:04:11 浏览: 4
### 如何使用 LVI-SAM 运行 APE
LVI-SAM 是一种融合激光雷达和视觉传感器的 SLAM 系统,其配置、安装以及调试过程较为复杂。以下是关于如何运行 APE(Absolute Pose Error)的相关说明。
#### 一、环境准备
为了成功运行 LVI-SAM 并计算 APE,需完成以下准备工作:
1. **操作系统与 ROS 版本**
推荐使用 Ubuntu 20.04 和 ROS Noetic 或者更高版本[^2]。如果选择较低版本的操作系统,则可能需要额外调整依赖项。
2. **GTSAM 安装**
GTSAM 是 LVI-SAM 的核心优化库之一。按照官方文档中的指导,在 Ubuntu 18 中可以下载并编译 GTSAM 4.0.2[^3]。具体命令如下:
```bash
wget https://github.com/borglab/gtsam/archive/4.0.2.zip
unzip 4.0.2.zip
cd gtsam-4.0.2
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j4
```
3. **TEASER++ 配置**
TEASER++ 提供鲁棒点云匹配功能,对于 LVI-SAM 至关重要。克隆仓库并按以下方式构建[^4]:
```bash
git clone --recursive https://github.com/MIT-SPARK/TEASER-plusplus.git -b feature/pcl-matcher
cd TEASER-plusplus
mkdir build && cd build
cmake -DBUILD_TEASER_FPFH=ON ..
make
sudo make install
```
---
#### 二、LVI-SAM 的安装与配置
1. **获取源码**
克隆 LVI-SAM 主分支代码到本地目录,并确保所有子模块已同步:
```bash
git clone --recursive https://github.com/TixiaoShan/LVI-SAM.git
cd LVI-SAM
git submodule update --init --recursive
```
2. **CMake 编译**
创建 `build` 文件夹并对项目进行 CMake 构建:
```bash
mkdir build && cd build
cmake ..
make -j$(nproc)
source devel/setup.bash
```
3. **参数文件设置**
参数文件通常位于 `config` 目录下。根据实际使用的硬件设备(如相机型号、IMU 类型),编辑对应的 YAML 文件以适配实验场景[^1]。
---
#### 三、运行 APE 计算
要评估轨迹误差(APE),可借助 Python 工具包 `evo` 来处理 LVI-SAM 输出的结果文件。
1. **安装 evo 库**
使用 pip 安装 `evo` 工具包以便分析轨迹数据:
```bash
pip install rosbags evo
```
2. **提取轨迹数据**
将 LVI-SAM 输出的估计位姿保存为 TUM 格式的 `.txt` 文件。假设输出路径为 `/path/to/lvi_output.txt`。
3. **执行 APE 分析**
利用真实轨迹作为参考输入,通过以下命令计算绝对姿态误差:
```bash
evo_ape tum /path/to/reference_gt.txt /path/to/lvi_output.txt --plot --save_results results.json
```
上述操作会生成图表可视化结果,并存储详细的统计信息至 JSON 文件中。
---
#### 四、常见问题排查
1. 如果遇到链接错误或找不到动态库的情况,请确认 LD_LIBRARY_PATH 是否正确指向了 GTSAM 和 TEASER++ 的安装位置。
2. 对于某些特定品牌的雷达支持不足的问题,建议尝试更通用的开源实现,例如 LVI-SAM-Simple。
---
### 示例代码片段
以下是一个简单的脚本用于自动化运行 APE 测试流程:
```python
import subprocess
def run_ape_analysis(reference_file, estimate_file):
command = f"evo_ape tum {reference_file} {estimate_file} --plot"
result = subprocess.run(command.split(), capture_output=True, text=True)
if result.returncode != 0:
raise RuntimeError(f"APE analysis failed with error:\n{result.stderr}")
print(result.stdout)
if __name__ == "__main__":
reference_path = "/path/to/reference_gt.txt"
lvi_output_path = "/path/to/lvi_output.txt"
run_ape_analysis(reference_path, lvi_output_path)
```
---
阅读全文
相关推荐

















