The tool provides an offline workflow for inspecting, correcting, and exporting loop-closure constraints in LiDAR pose graphs.
本工具提供一个离线工作流,用于检查、修正并导出激光雷达位姿图中的闭环约束。
Typical use cases:
典型用途包括:
-
difficult automatic loop closures in repetitive indoor scenes
-
replacing a weak existing loop edge with a manually validated one
-
adding several manual loop edges and optimizing them together
-
室内重复结构场景中的自动闭环困难
-
用手工验证后的结果替换质量较差的已有闭环边
-
连续添加多条手工闭环边并统一优化
| Area | Description | 中文说明 |
|---|---|---|
| Trajectory panel | 2D graph view for node and edge selection | 2D 位姿图,用于选节点和选边 |
| Point Cloud Review | Embedded point-cloud viewer for preview, manual alignment, and GICP inspection | 内嵌点云窗口,用于预览、手动初值调整和 GICP 检查 |
| Control panel | Summary, delta, registration settings, and actions | 参数、摘要、手工增量和操作按钮 |
| Graph Changes | Session-based list of accepted graph edits | 工作会话中的图改动列表 |
| Execution Log | Runtime log panel | 运行日志面板 |
-
Load a session.
-
In the trajectory panel, switch to
Pick Nodes. -
Select two nodes. The tool normalizes them to
source_id > target_id. -
Preview the point clouds.
-
Adjust the source pose if needed.
-
Run
GICPorAuto Yaw Sweep. -
If the result is good, click
Add Manual. -
After collecting the desired changes, click
Optimize. -
加载 session。
-
在轨迹图切换到
Pick Nodes。 -
选择两个节点,工具会自动规范为
source_id > target_id。 -
查看点云预览。
-
如有需要,手动调整 source 初值。
-
运行
GICP或Auto Yaw Sweep。 -
若结果满意,点击
Add Manual。 -
收集完需要的改动后,点击
Optimize。
-
Switch to
Pick Edges. -
Select an existing loop edge.
-
Inspect or manually align the source cloud.
-
Run
GICP. -
Click
Replace Edge. -
The working graph disables the old edge and uses the new manual result as its replacement.
-
切换到
Pick Edges。 -
选择一条已有闭环边。
-
检查或手动调整 source 点云。
-
运行
GICP。 -
点击
Replace Edge。 -
工作图会禁用旧边,并使用新的手工结果作为替换约束。
-
Original: read-only baseline graph. -
Working: editable graph used for subsequent preview, matching, and optimization. -
Original:只读基线图。 -
Working:后续预览、匹配和优化实际使用的可编辑工作图。
Every successful optimization updates the Working trajectory revision.
每次优化成功后,Working 轨迹版本都会更新。
-
default mode
-
target cloud =
target_id ± Nframes -
all frames are transformed to the map frame and merged directly
-
默认模式
-
target 点云 =
target_id ± N帧 -
所有帧先变换到 map 系再直接拼接
-
keeps the online RS-style local-submap logic
-
selects spatial neighbors near the target node, with a source-to-target minimum time gap
-
保留在线 RS 风格的局部子图逻辑
-
按 target 附近的空间邻居选帧,并对 source 和 target 施加最小时间间隔过滤
The tool is intentionally optimized for the common ground-robot workflow.
本工具有意针对地面机器人最常见的手工闭环流程进行了收敛设计。
-
XY+Yaw: the main mode for horizontal alignment -
Z: used occasionally from a side view to move the whole source cloud up or down -
XY+Yaw:主要模式,用于平面内对齐 -
Z:偶尔从侧视图整体上移或下移 source 点云
-
Left drag: orbit camera
-
Right drag: pan camera
-
Wheel: zoom
-
左键拖动:旋转视角
-
右键拖动:平移视角
-
滚轮:缩放
-
The editable object is always the
sourcecloud. -
targetremains fixed. -
In
XY+Yaw+Drag=XY: left drag changes sourcex/y. -
In
XY+Yaw+Drag=Yaw: left drag changes sourceyaw. -
In
Z: left vertical drag changes sourcez. -
Right drag still pans the camera.
-
Alt + Left dragor middle drag still rotates the camera. -
Wheel always zooms the camera.
-
可编辑对象始终是
source点云。 -
target始终固定。 -
XY+Yaw+Drag=XY:左键拖动修改 source 的x/y。 -
XY+Yaw+Drag=Yaw:左键拖动修改 source 的yaw。 -
Z:左键上下拖动修改 source 的z。 -
右键仍用于平移视角。
-
Alt + 左键拖动或中键仍用于旋转视角。 -
滚轮始终用于缩放视角。
Manual dragging and the right-side Manual Delta controls are synchronized both ways.
点云拖拽和右侧 Manual Delta 控件是双向同步的。
This feature targets ground robots whose main unknown is usually yaw.
这个功能主要面向地面机器人,因为这类场景下不确定量通常主要是 yaw。
Behavior:
功能逻辑:
-
the current manual delta is used as the base pose
-
only yaw seeds are swept
-
each seed first updates the point-cloud preview
-
GICP is then run from that seed
-
the best result is chosen using overlap quality and RMSE
-
以当前手工 delta 作为基准位姿
-
仅遍历 yaw 初值
-
每个初值都会先刷新点云预览
-
然后从该初值运行 GICP
-
最终按重叠质量和 RMSE 选出最佳结果
The bottom table stores accepted changes in the current session.
底部表格用于保存当前工作会话中已经接受的图改动。
Types:
类型包括:
Manual AddReplace Existing LoopDisable Existing Loop
Common statuses:
常见状态包括:
AcceptedAppliedDisabled
Notes:
说明:
-
Replace Existing Loopis shown as a single logical row. -
Replacement operations are treated as one atomic user action for undo / redo semantics.
-
Replace Existing Loop在表格中会聚合为单行业务动作。 -
替换操作在撤销语义上被视为一次原子动作。
When you optimize and export, the tool generates:
执行优化和导出后,工具会生成:
- edited input
g2o - manual constraint CSV
- optimized
pose_graph.g2o - optimized
optimized_poses_tum.txt global_map_manual_imu.pcdtrajectory.pcdpose_graph.pngmanual_loop_report.json
-
Start with
XY+Yawand only useZwhen the source cloud is obviously too high or too low. -
Use
Temporal Windowfor most manual work. -
Run optimization after a small number of accepted changes, instead of accumulating too many edits first.
-
If you are revising an existing loop edge, prefer
Replace Edgeover adding a duplicate manual edge. -
优先使用
XY+Yaw,只有当 source 整体明显过高或过低时再切到Z。 -
大多数手工配准场景建议使用
Temporal Window。 -
建议每累计少量已接受改动后就优化一次,而不是一次性堆积过多编辑。
-
若你是在修订已有闭环边,优先使用
Replace Edge,避免叠加重复约束。