
RTAB-Map
—Stars面向机器人感知与自主导航的实时外观建图系统,融合视觉、RGB-D、双目与 LiDAR 数据,覆盖回环检测、图优化、定位和三维建图,并提供 C++ 核心、Qt 桌面工具及 ROS / ROS 2 集成。
没有任务,就不应该留下进度窗口
一个对话框何时创建,决定错误返回之后是否还会残留孤立的 UI 资源。
same 7 lines→RUN三个检测入口同时不可用
`DatabaseViewer::detectMoreLoopClosures()` 在验证检测选项之前就创建并显示 `ProgressDialog`。当 intra-session 与 inter-session 都关闭、同时又没有选择图节点时,函数弹出配置警告后直接返回,但已经可见的进度窗口没有任何任务可以推进或完成,因而成为无法正常收尾的孤立对话框。
先显示窗口,再发现任务不能开始
进度窗口不是输入表单,而是“有效任务已经开始”的运行期资源;它的生命周期必须由同一条工作路径负责取消、推进和关闭。若请求连前置条件都不满足,就不存在可报告的进度。与其在每个错误出口补清理逻辑,不如让校验闸门支配资源创建,从控制流上保证失败发生时对话框尚不存在。
校验支配资源创建与生命周期
将原有七行 `ProgressDialog` 构造与配置代码原样移动到无效选项检查之后:错误配置现在只显示警告并返回,创建的对话框数量为零;合法配置仍沿用相同父对象、`WA_DeleteOnClose`、取消按钮、宽度与显示行为,回环检测本身没有改变。
错误路径归零,正常路径完全不变
单文件 `+7/-7` 的控制流修复关闭了自 2025 年 3 月存在的 #1462,由维护者 Mathieu Labbé 确认并合入 `master`。GitHub 的 28 项检查全部结束,其中 Linux、macOS、Windows、ROS、Docker 与 Coverage 等 26 项成功,2 项按条件跳过;无效请求不再遗留窗口,正常检测路径保持原有行为。