(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.pswp.cn/news/918714.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918714.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918714.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 軟硬鏈接詳解

一、核心區別總覽特性硬鏈接&#xff08;Hard Link&#xff09;軟鏈接&#xff08;Symbolic Link&#xff09;本質直接指向文件的 inode&#xff08;數據塊的入口地址&#xff09;指向文件的 路徑名&#xff08;相當于快捷方式&#xff09;跨文件系統支持? 僅限同一文件系統?…

基于SpringBoot+Vue的房屋匹配系統(WebSocket實時通訊、協同過濾算法、地圖API、Echarts圖形化分析)

&#x1f388;系統亮點&#xff1a;WebSocket實時通訊、協同過濾算法、地圖API、Echarts圖形化分析&#xff1b;一.系統開發工具與環境搭建1.系統設計開發工具后端使用Java編程語言的Spring boot框架 項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17前端&…

第2節:多模態的核心問題(多模態大模型基礎教程)

前言 本節課我們聚焦多模態大模型最核心的問題&#xff1a;文本、圖像、語音這些“不同語言”的信息&#xff0c;是怎么被模型“翻譯”并互相理解的&#xff1f;我們從“差異”入手&#xff0c;一步步搞懂其中的邏輯。 一、先搞懂&#xff1a;什么是“模態差異”&#xff1f; 生…

Java stream distinct findAny anyMatch實現 :DistinctOp、FindOp、MatchOp

DistinctOpsDistinctOps 是一個專門用于實現 Stream.distinct() 操作的工廠類。正如它的名字所示&#xff0c;它的核心職責就是創建能夠去除流中重復元素的操作。distinct() 是一個有狀態的中間操作 (stateful intermediate operation)&#xff0c;這意味著它通常需要看到所有元…

鎖的基本介紹

鎖 并發編程的一個最基本問題就是原子性地執行一系列指令。鎖有助于直接解決這一問題。 鎖的基本思想 鎖就是一個變量。這個變量保存了鎖在某一時刻的狀態。它要么是可用的&#xff0c;表示沒有線程持有鎖&#xff0c;要么是被占用的&#xff0c;表示有線程持有鎖&#xff0c;正…

【讀代碼】開源流式語音編碼器SecoustiCodec

引言:從LLM到深度語義 在大型語言模型(LLM)驅動的語音交互時代,神經語音編解碼器 (Neural Speech Codec) 扮演著至關重要的角色。它如同 LLM 的“耳朵”和“嘴巴”,負責將連續的語音波形轉換為離散的、可供模型處理的 token,并將模型生成的 token 還原為自然的人聲。 一…

P5967 [POI 2016] Korale 題解

P5967 [POI 2016] Korale 題目描述 有 nnn 個帶標號的珠子&#xff0c;第 iii 個珠子的價值為 aia_iai?。 現在你可以選擇若干個珠子組成項鏈&#xff08;也可以一個都不選&#xff09;&#xff0c;項鏈的價值為所有珠子的價值和。 給出所有可能的項鏈排序&#xff0c;先按…

SwiftUI 頁面彈窗操作

SwiftUI 頁面彈窗操作指南一、基礎彈窗實現1. Alert 基礎警告框2. ActionSheet 操作菜單3. Sheet 模態視圖4. Popover 浮動視圖二、高級自定義彈窗1. 自定義彈窗組件2. 使用自定義彈窗三、彈窗狀態管理1. 使用環境對象管理彈窗2. 彈窗路由系統四、動畫與過渡效果1. 自定義彈窗動…

OpenCV圖像處理2:邊界填充與平滑濾波實戰

前面學了一些關于opencv圖像處理的內容&#xff0c;現在繼續。一 圖像填充邊界填充&#xff08;Border Padding&#xff09;?&#xff0c;即在圖像四周添加指定寬度的像素區域。其核心函數是cv2.copyMakeBorder()&#xff0c;通過不同的填充方式&#xff08;borderType&#x…

imx6ull-驅動開發篇22——Linux 時間管理和內核定時器

目錄 內核時間管理 系統節拍率 高/低節拍率的優缺點 jiffies 節拍數 時間繞回 時間轉換函數 內核定時器 timer_list 結構體 定時器API函數 init_timer 函數 add_timer 函數 del_timer 函數 del_timer_sync 函數 mod_timer 函數 Linux 內核短延時函數 內核時間管…

路由器數據控制管理層面安全

數據層面&#xff1a;FPM Flexible Packet MatchingFPM是CisCOIOS新一代的ACL根據任意條件&#xff0c;無無狀態的匹配數據包的頭部負載&#xff0c;或者全部分析協議&#xff0c;更易于規則的創建用于替代傳統ACL&#xff0c;對特定惡意流量的基礎架構過濾無狀態ipv4單播不支持…

Vue內置組件全解析:從入門到面試通關

文章目錄Vue內置組件全解析&#xff1a;從入門到面試通關引言&#xff1a;為什么需要內置組件&#xff1f;一、Vue內置組件全景圖二、核心內置組件詳解1. <component> - 動態組件2. <transition> - 過渡動畫3. <keep-alive> - 組件緩存4. <slot> - 內容…

VUE+SPRINGBOOT從0-1打造前后端-前后臺系統-會議記錄

在當今快節奏的工作環境中&#xff0c;會議記錄是每個職場人士都必須要面對的任務。傳統的手動記錄方式不僅效率低下&#xff0c;而且容易遺漏重要信息。隨著Web技術的發展&#xff0c;基于瀏覽器的實時語音轉寫技術為會議記錄提供了全新的解決方案。本文將詳細介紹如何利用Web…

WEB3——水龍頭,如何獲得開發用的測試幣、 Sepolia 測試幣?

注意&#xff1a; 有些水龍頭渠道&#xff0c;要求以太坊幣至少有0.01ETH,設有這個門檻&#xff0c;下面并不是所有渠道都能領取到測試幣&#xff0c;有些可能對領取測試幣有要求&#xff0c;如果想獲得獲取以太坊幣的方法&#xff0c;可以看我其他的文章。 本文整理了多個免費…

C++調試革命:時間旅行調試實戰指南

還在為C的懸垂指針、內存泄漏和并發競態抓狂&#xff1f;讓調試器學會“時光倒流” 凌晨三點&#xff0c;std::thread創建的六個線程中有一個突然吞掉了你的數據&#xff0c;valgrind只告訴你“Invalid read”&#xff0c;而時間旅行調試&#xff08;TTD&#xff09;?? 能讓你…

mysql8.0筆記

1.DDL數據定義語言 DDL是什么——————創建、修改、刪除 數據庫和表結構的命令。 基本語法 針對數據庫的操作 -- 創建數據庫 CREATE DATABASE 數據庫名; -- 比如 CREATE DATABASE myschool; --查看所有數據庫 SHOW DATABASES; --使用某個數據庫 USE myschool; -- 刪除數據庫…

大模型微調【1】之入門

文章目錄說明一 大模型微調技術1.1 微調基礎1.2 量化概念1.3 高效微調方法LoRA&QLoRA1.4 LoRA VS QLoRA1.5 高效微調的應用場景二 主流微調工具2.1 unsloth2.2 LLama-Factory2.3 ms-SWIFT2.4 ColossalAI2.5 底層微調框架推薦2.6 模型性能評估框架EvalScope三 微調所需軟硬件…

深入解析Linux poll()系統調用

&#x1f504; Linux poll() 系統調用詳解一、poll 是干什么的&#xff1f;poll 是 Linux&#xff08;及 POSIX 標準&#xff09;中用于實現 I/O 多路復用&#xff08;I/O Multiplexing&#xff09; 的系統調用&#xff0c;它的核心作用是&#xff1a;讓一個線程能夠同時監視多…

文獻閱讀 | PLoS ONE | SRplot:一個免費的在線平臺,用于數據可視化和圖形

文獻介紹文獻題目&#xff1a; SRplot&#xff1a;一個免費的在線平臺&#xff0c;用于數據可視化和圖形 研究團隊&#xff1a; Yewei Wang&#xff08;中南大學湘雅二醫院&#xff09; 發表時間&#xff1a; 2023-11-09 發表期刊&#xff1a; PLoS ONE 影響因子&#xff1a; 3…

分布式與微服務寶典

分布式理論基礎 1、分布式架構有哪些特點&#xff0c;優勢和缺陷 特點&#xff1a;微服務架構的優點微服務架構的缺陷自由使用不同技術增加故障排除挑戰每一個微服務都側重于單一功能由于遠程調用增加延遲支持單個可部署單元增加了配置與其他操作的工作量允許經常發布軟件難以保…