当前位置: 首页 > news >正文

(25.08)Ubuntu20.04复现KISS-ICP

主页:https://github.com/PRBonn/kiss-icp?tab=readme-ov-file

仓库:https://github.com/PRBonn/kiss-icp.git

非 ROS 使用流程

1. 克隆仓库
git clone https://github.com/PRBonn/kiss-icp.git cd kiss-icp
2. 使用 micromamba 创建 Python 虚拟环境
micromamba create -n kissicp python=3.10 
micromamba activate kissicp
3. 安装 Python 依赖与安装包
pip install -U pip 
pip install kiss-icp

或者如果希望基于本地代码开发:

cd python 
pip install -e .

这样即可使用 kiss_icp_pipeline 或者对应的 Python API 接口。

4. 准备点云数据与运行

官方示例建议,是通过命令行调用 kiss_icp_pipeline,并将点云路径作为参数传入,例如:

kiss_icp_pipeline /path/to/your/pointclouds

(如果是自定义数据集,建议检查 config/ 中是否有需要调整的配置文件,然后通过参数或环境变量进行指定。)

kiss_icp_pipeline /home/huang/Data/dynslam/mini-seq-06/velodyne

已经成功运行了 kiss_icp_pipeline,它很流畅地处理了Velodyne 数据:

100% (...) 100 frames · average frequency 118 Hz · runtime ~9 ms

这表明处理速度非常稳定,性能也相当高效!如果你还想进一步定制运行行为或参数,这里有几点建议可以参考:


配置 scan deskew 行为

如提示所述,KISS‑ICP 默认会 对扫描数据进行 deskew(去畸变)处理。如果你想修改这一行为,可以:

  1. 生成默认配置文件:

    kiss_icp_dump_config > my_config.yaml
  2. 编辑 my_config.yaml,将 deskew 参数设为 false (或根据需求调整)。

  3. 使用定制配置运行:

    kiss_icp_pipeline /home/huang/Data/dynslam/mini-seq-06/velodyne --config my_config.yaml

    这会让处理过程关闭 deskew 或启用其他你修改的配置选项,行为更可控。


配置与版本动态
  • 配置文件提供灵活性kiss_icp_dump_config 会输出一个当前版本默认的 YAML 格式配置,便于修改诸如 deskew、voxel size、range thresholds 等。

  • 软件已正式支持 deskew 默认开启:从 v1.2.2 版本开始,项目默认启用 deskew 功能,以提高精度 。


总结建议表
目标操作建议
保持默认行为快速运行直接运行 kiss_icp_pipeline <path>,已验证可行
关闭 deskew 或调整配置使用 kiss_icp_dump_config → 编辑 YAML → 加 --config 运行
确认版本与默认行为当前版本默认启用 deskew,了解版本升级带来的行为变化可参见发行说明
5.可视化(目前 kiss_icp_pipeline CLI 工具 默认并不弹出可视化窗口,即便已经安装了 Open3D)

使用 Python 脚本 调用管道并可视化(但结果有点奇怪....

import numpy as np
import open3d as o3d
from pathlib import Path
from kiss_icp.datasets.generic import GenericDataset
from kiss_icp.pipeline import OdometryPipeline# 数据路径
data_dir = Path("/home/huang/Data/dynslam/mini-seq-06/velodyne")
bin_paths = sorted(data_dir.glob("*.bin"))# 加载所有点云帧
def load_kitti_bin(p):pts = np.fromfile(str(p), dtype=np.float32).reshape(-1, 4)[:, :3]return o3d.geometry.PointCloud(o3d.utility.Vector3dVector(pts))pcd_frames = [load_kitti_bin(p) for p in bin_paths]# 运行 KISS‑ICP pipeline 获取位姿
dataset = GenericDataset(data_dir=data_dir)
pipeline = OdometryPipeline(dataset=dataset)
pipeline._run_pipeline()
pipeline._run_evaluation()
poses = pipeline._calibrate_poses(pipeline.poses)# 构建地图与轨迹点云
map_pcd = o3d.geometry.PointCloud()
for pcd in pcd_frames:map_pcd += pcd
map_pcd = map_pcd.voxel_down_sample(voxel_size=0.2)
map_pcd.paint_uniform_color([0.1, 0.1, 0.7])trajectory = [pose[:3, 3] for pose in poses]
traj_pcd = o3d.geometry.PointCloud(o3d.utility.Vector3dVector(trajectory))
traj_pcd.paint_uniform_color([1, 0, 0])# 可视化展示
vis = o3d.visualization.Visualizer()
vis.create_window("KISS‑ICP Map & Trajectory")
vis.add_geometry(map_pcd)
vis.add_geometry(traj_pcd)
vis.run()
vis.destroy_window()

6.(未试)编译 C++ 模块加速

如果希望提升性能,可以进入 cpp/ 目录,使用 CMake 编译项目:

mkdir build && cd build 
cmake .. 
make -j$(nproc)

然后确保编译产物与 Python 环境兼容(比如通过 pybind 接口可供 Python 调用)。

http://www.dtcms.com/a/325269.html

相关文章:

  • 【TensorRT踩坑记录】安装与使用
  • 软考 系统架构设计师系列知识点之杂项集萃(121)
  • 数据变而界面僵:Vue/React/Angular渲染失效解析与修复指南
  • leetcode-hot-100 (图论)
  • 算法训练营DAY57 第十一章:图论part07
  • 基于Qt Property Browser的通用属性系统:Any类与向量/颜色属性的完美结合
  • CVE-2019-0708复刻
  • react+vite-plugin-react-router-generator自动化生成路由
  • OBOO鸥柏丨115寸商用屏/工业液晶显示器招标投标核心标底参数要求
  • 【JAVA】使用系统音频设置播放音频
  • MyBatis执行器与ORM特性深度解析
  • React18 Transition特性详解
  • ARM汇编
  • Apache IoTDB 全场景部署:跨「端-边-云」的时序数据库 DB+AI 实战
  • 一维码+二维码+字符识别
  • 【数据结构】深入理解顺序表与通讯录项目的实现
  • 第十六届蓝桥杯大赛青少组 C++ 省赛真题解析(2025年8月10日)
  • 动态创建可变对象:Python类工厂函数深度解析
  • 云原生环境 Prometheus 企业级监控实战
  • 本地文件夹与 GitHub 远程仓库绑定并进行日常操作的完整命令流程
  • 时序数据库选型指南:Apache IoTDB为何成为工业物联网首选?
  • 精读:《DEEP OC-SORT: MULTI-PEDESTRIAN TRACKING BY ADAPTIVE RE-IDENTIFICATION》
  • 网安-安全加固
  • 安装jieba时遇到ModuleNotFoundError: No module named ‘distutils’
  • 2025世界机器人大会,多形态机器人开启商业化落地浪潮
  • stm32内存分析和RTOS任务切换分析
  • 第5节 大模型分布式推理通信优化与硬件协同
  • 高并发场景下分布式ID生成方案对比与实践指南
  • Web安全自动化测试实战指南:Python与Selenium在验证码处理中的应用
  • Redis知识点笔记