Skip to main content

常规操作

本文档介绍运行 Galbot 机器人过程中可能进行的一些常规操作,确保各项功能正常运行。


地图引擎 - 建图与定位

地图引擎是导航功能的核心基础。地图引擎不是可选附加功能,而是导航功能的前置必须步骤。在使用导航功能前,必须完成建图并确保定位正常运行。未正确完成建图和定位将导致导航功能无法正常工作。

当机器人开启定位导航服务时(机器人工作模式可能默认开启导航服务),必须先完成建图。新的机器人首次使用前需要进行建图操作,否则定位服务无法正常启动,机器人可能进入异常模式。


建图流程

建图是导航的前提条件。在开始使用导航功能前,必须先完成环境地图的构建。

1. 前置条件检查 (必选)

检查雷达服务是否已启动

建图需要雷达服务处于运行状态。在 HPU 终端输入以下命令查看雷达进程:

top

如果雷达已被自动拉起,可以在进程列表中看到名为 service_livox_capture 的进程,如下图所示:

雷达服务

如果雷达未启动,使用以下命令启动雷达(注意:不要重复启动):

/data/galbot/bin/service_livox_capture

确保地图路径具有可写权限

默认地图路径存放在 /var/maps/ 目录下。如果该路径不存在或没有写入权限,请创建路径并赋予可写权限:

sudo mkdir -p /var/maps/
sudo chmod 777 -R /var/maps/

2. 开始建图 (必选)

启动建图程序

  1. 拍下机器人急停按钮,将机器人推至建图起点(可以从任何位置开始建图)
  2. 执行以下命令启动建图:
/data/galbot/bin/mapping_server

正常建图时会显示以下信息:

  • 关键帧数量(keyframe num)
  • 位姿延时(time delay)
  • 当前机器人位姿(x y z qx qy qz qw)

关键帧数量会随着机器人移动而增加,机器人静止时关键帧数量保持不变,如下图所示:

建图过程

  1. 推动机器人遍历环境一周以构建完整地图。推动时应避免过大的加速度和角速度(接近人行走速度即可)

3. 保存地图 (必选)

保存构建好的地图

直接结束建图程序不会自动保存地图。如需保存地图,请先执行保存操作,然后再关闭建图程序。

执行保存地图工具:

/data/galbot/bin/engine_tools

启动工具后,输入数字 1,然后按 Enter 回车选择保存地图功能。地图默认保存路径为 /var/maps/room1102,如下图所示:

保存地图

保存地图后,地图目录下必须存在 global_cloud_cleaned.pcd,供后续定位使用。

  • 如果已经完成点云后处理,请确保清理后的地图文件命名为 global_cloud_cleaned.pcd
  • 如果暂时不做杂点擦除,请在地图目录下执行以下命令:
cp global_cloud.pcd global_cloud_cleaned.pcd

4. 编辑地图 (可选)

本步骤用于优化地图质量,提高导航精度和安全性。

不做的影响
  • 擦除地图杂点:地图中的空中杂点可能导致导航系统误判障碍物,影响路径规划精度
  • 绘制电子围栏:没有电子围栏限制,机器人可能会进入非预期或危险区域
4.1 擦除地图杂点 (可选)

推荐进行本步骤。地图中通常可能存在少量杂点,擦除后可以提高导航成功率。尤其当房间中存在镜面、毛玻璃等材质物体时,点云地图中更容易出现杂点,建议使用 CloudCompare 软件进行后处理。

准备工作:下载 CloudCompare 软件

下载链接:https://www.cloudcompare.org/release/index.html

如图所示:

下载软件

操作步骤

  1. 打开 CloudCompare 软件,将点云地图 global_cloud.pcd 拖入软件工作区

pcd

  1. 按照下图绿色箭头编号依次操作:
    • 步骤 1:勾选文件
    • 步骤 2:选择正视图
    • 步骤 3:选择裁剪功能(图标为剪刀)
    • 步骤 4:框选目标区域(地面和天花板之间的机器人活动区域)
    • 步骤 5:保留内部点云
    • 步骤 6:确认操作(图标为对勾)

此时点云被分割为两部分:框选内的 global_cloud.segmented 和框选外的 global_cloud.remaining

opensource

  1. 继续以下步骤:
    • 步骤 7:取消勾选 global_cloud.remaining
    • 步骤 8:勾选 global_cloud.segmented
    • 步骤 9:选择俯视图
    • 步骤 10:选择裁剪功能(剪刀图标)
    • 步骤 11:框选机器人活动区域(注意不要选中真实障碍物,如料垛、桌子等)
    • 步骤 12:点击框外图标
    • 步骤 13:确认操作

opensource2

  1. 删除杂点并合并:
    • 选中 global_cloud.segmented.remaining(杂点部分),右键删除
    • 按住 Ctrl 键多选 global_cloud.remainingglobal_cloud.segmented.remaining

opensource3

  1. 保存清理后的地图:
    • 选择 Edit → Merge 合并两部分点云
    • 选择 File → Save 保存点云
    • 必须命名为 global_cloud_cleaned.pcd
    • 移动擦除后的地图 global_cloud_cleaned.pcd 到地图文件夹 /var/maps/room1102/

opensource4

4.2 编辑 OSM 文件 (可选)

通过绘制电子围栏来限制机器人的活动范围,防止机器人进入危险或非预期区域。

作用说明
  • 绘制电子围栏:在地图上设置虚拟边界,禁止机器人穿越围栏进入特定区域(如楼梯、危险区域、非工作区域等)
  • 不做的影响:机器人可以自由移动到地图中的任何位置,可能进入危险区域或非预期的工作区域,存在安全风险

在建图完成后(假设地图保存路径为 /var/maps/room1102/),使用 engine_tools 工具转换点云地图为 OSM 文件:

  1. 执行 engine_tools,输入数字 3,选择点云地图转 OSM 文件功能
  2. 直接回车使用默认地图。当前示例地图存放在 /var/maps/room1102/,所以需要输入地图的完整路径 /var/maps/room1102/global_cloud.pcd,然后回车转换:

osm1

  1. 转换后的文件如下图绿框所示,使用 JOSM 软件打开该 OSM 文件,如图所示:

osm2

安装 JOSM(如未安装):

sudo apt install josm

安装完成后,终端输入 josm 打开软件。

绘制电子围栏步骤

  1. 选择左上角文件 → 打开,找到 /var/maps/room1102/map_topo.osm
  2. 选择下图白色箭头 1 指向的图标,鼠标左键单击绘制图形(红色细线),如白色箭头 2 所示
  3. 绘制结束后(封闭图形自动结束,非封闭图形按 Esc 结束),单击白色箭头 1 上方的图标,选择刚刚绘制的线(被选中的线呈红色,按住 Ctrl 可选择多条线),然后点击白色箭头 3:

osm3

  1. 在弹窗里选择 Fence 栏,设置类型为 barbed_wire(如白色箭头 4 所示),点击 Apply Preset,最后鼠标右击白色箭头 5,选择 Save 保存:

osm4

5. 地图更新 (可选)

当环境发生变化时(如新增家具、障碍物移动等),可以通过地图更新功能来优化地图。

不做的影响

如果环境发生变化后不更新地图,机器人仍使用旧地图进行导航,可能导致:

  • 定位精度下降
  • 路径规划不准确
  • 机器人可能误判障碍物位置

为节省计算资源,地图更新功能默认关闭。可以手动开启更新开关并由人工操作保存更新后的地图:

步骤 1:在定位良好的情况下(当前评分大于 0.9)打开地图更新开关

vim /data/galbot/config/mes/manager.config

manager_update_map=0 改为 manager_update_map=1

步骤 2:原地重启定位,在评分恢复正常后(当前评分大于 0.9),执行 engine_tools 选择开始更新地图

步骤 3:推动机器人绕环境一周后,执行 engine_tools 选择结束更新地图

步骤 4:更新后的地图不会覆盖当前定位地图(/var/maps/cur),而是保存在 /var/maps/update_map

步骤 5:地图更新结束后,将参数 manager_update_map=1 改回 0,然后可以替换新地图了

注意事项
  1. 修改参数和替换地图都需要重启定位服务才能生效
  2. 当前示例写的是 engine_tools,如果没有 engine_tools,使用对应的 /data/galbot/bin/test_start_update_map/data/galbot/bin/test_stop_update_map

定位流程

定位是使用导航功能的前提。在开始导航前,必须确保定位服务正常运行且定位状态良好。

1. 准备地图 (必选)

定位程序需要启动雷达(定位程序不依赖建图程序,建图结束后即可关闭建图程序)。

定位使用的地图路径是 /var/maps/cur,将目标地图重命名为 cur,例如将刚刚新建的地图 room1102 直接重命名为 cur,如图所示:

cur

2. 启动定位 (必选)

启动定位服务:

/data/galbot/bin/localization_server

3. 查看定位状态 (必选)

查看定位状态:

tail -f /userdata/log/localization_server/localization_server.INFO

state

如果分数低于 0.75 或者没有分数和位姿发布,请将机器推至建图起点位姿,下发一次初始位姿(使用 engine_tools 输入数字 2,Enter 回车发送一次初始位姿),如图所示:

state2

4. 验证定位就绪 (必选)

在开始导航前,请确认以下检查项:

  • 雷达服务正在运行
  • 定位服务已启动
  • 定位分数大于 0.75
  • 当前位姿正常发布
准备就绪

完成以上所有必选步骤后,您可以开始使用机器人导航功能。详情请参考 入门教程 - Example 3. 机器人导航