Skip to main content

常规操作

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


地图引擎 - 建图与定位

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

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


建图流程

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

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

检查雷达服务是否已启动

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

top

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

雷达服务

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

/data/galbot/bin/service_lidar_capture

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

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

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

2. 开始建图 (必选)

启动建图程序

  1. 拍下机器人急停按钮,使用S1遥控器控制机器人移动到建图起点(可以从任何位置开始建图,后续定位服务若出现异常,需要在初始建图点位发送重定位)
  2. 执行以下命令启动建图:
/data/galbot/bin/mapping_server

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

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

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

建图过程

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

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

如图所示:

下载软件

若官网下载打不开pcd文件,则进行下列命令:

sudo apt update
sudo apt install -y flatpak gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://mirrors.ustc.edu.cn/flathub
flatpak install flathub org.cloudcompare.CloudCompare -y
flatpak run org.cloudcompare.CloudCompare

操作步骤

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

pcd

  1. 按照下图绿色箭头编号依次操作:
    • 步骤 1:选择正视图
    • 步骤 2:选中点云
    • 步骤 3:选择剪刀图标
    • 步骤 4:鼠标左键选点,鼠标右键结束选点,如图绿框选中机器人的活动空间
    • 步骤 5:保留内部点云
    • 步骤 6:确认操作(图标为对勾)

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

opensource

  1. 继续以下步骤:
    • 步骤 7:擦除杂点,杂点指机器人活动空间中,影响机器人通行的点。取消选中xxx.remaining,保留xxx.segmented
    • 步骤 8:选择俯视图
    • 步骤 9:选择剪刀图标
    • 步骤 10:鼠标左键选取,鼠标右键结束,将想去除的杂点框中
    • 步骤 11:保留框外部点
    • 步骤 12:勾号完成分割

opensource2

  1. 删除杂点并合并:
    • 步骤 13:鼠标选中xxx.segmented.remaining,然后鼠标右键选择delete删除
    • 步骤 14:选中14和15箭头指向的点云(摁住ctrl可以多选)
    • 步骤 16:选择edit里面的merge选项合并点云

opensource3

  1. 保存清理后的地图:
    • 步骤 17:选择file里面的save选项
    • 步骤 18:在弹窗里选择格式为Point Cloud Library cloud
    • 步骤 19:保存新的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:使用S1遥控器控制机器人绕环境一周后,执行 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. 启动定位

该步骤同雷达,机器开机后,正常情况下定位服务自启,通过top检查进程是否启动,若没正常启动,请手动启动定位服务:

/data/galbot/bin/localization_server

start

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

查看定位状态:

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

state

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

state2

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

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

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

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


S1遥控器操作

S1 重载机器人底盘采用舵轮转向+轮毂行进方案,由于机器人本体过重,在日常使用过程中,人为移动底盘非常不方便且不安全,因此S1机器人配备了遥控器,可以使用遥控器对机器人进行移动和升降控制。

遥控对象:Galbot S1 机器人底盘移动、升降移动。

遥控器型号:T12D。

注意事项

  • 遥控器与接收器必须一对一匹配,确保一机一遥控,接收器装在底盘控制板上(默认出厂的机器人已经装配上,并且配对了)。
  • 遥控器使用时,只能同时控制一个模式。默认四个拨杆都处于最下方,使用哪种模式需将相应的拨杆推至最上方,底盘模式冗余拨杆需一直在最下方。控制时,三种模式拨杆只能有一个处于最上方。

遥控器模式拨杆

  • 遥控器工作为最高优先级,开发人员及测试人员需注意,在遥控模式下,应关闭 singorix,否则有可能出现关闭遥控后,升降异动或者底盘异动。在结束遥控后再打开,关闭命令:
systemctl stop launcher
  • 遥控器使用完毕后,应当关闭遥控器电源。如接收器处于在线状态,观察屏幕提示(不同遥控器固件版本可能不同),通过旋钮选择选项,然后通过确认按键进行关机。

遥控器关机


使用说明

视频教程

开关机

  • 开机:长按电源按键 2 秒,听到滴滴声音后松开按键,开机后绿色指示灯与屏幕变亮。
  • 关机:与开机过程相反。

遥控器开关机

升降控制

  1. 将升降模式拨码推到最上面

  2. 使用左边摇杆进行控制:

    • 上推摇杆:升降往上运动
    • 下推摇杆:升降往下运动
  3. 摇杆推的幅度越大,升降运行速度越快

升降控制

底盘控制

  1. 将底盘模式拨码推到最上面

  2. 使用左边摇杆进行旋转控制:

    • 左推机器人:逆时针旋转
    • 右推机器人:顺时针旋转
  3. 使用右边摇杆进行移动控制:

    • 上推:机器人前进
    • 下推:机器人后退
    • 左推:机器人左横移
    • 右推:机器人右横移
  4. 最大线速度 0.5 m/s,最大角速度 1 rad/s

  5. 复合运动:左+右摇杆同时推时,机器人边行走边转向,此模式需谨慎使用,时刻关注机器人运动轨迹及位姿

底盘控制

打包模式(开发中)

  1. 将包装模式拨码推到最上面,此时底盘与升降不受任何控制

  2. 包装模式完成后,底盘 4 个轮子分别朝向外部 45°(待定),升降运动到固定高度(待定)

  3. 包装模式完成后,需先关闭整机电源,后关闭遥控器拨杆

打包


问题排查

遥控器控制不了机器

a. 排查机器人是否处于错误状态 - 观察整机指示灯是否处于红色,红色代表异常 - 观察整机屏幕是否提示错误 - (故障提示功能整机系统持续开发中,可通过日志进行定位)

b. 排查机器人是否处于急停模式 - 观察整机屏幕是否提示退出急停状态

c. 排查遥控器是否工作正常 - 观察遥控器屏幕是否有信号,电压是否大于 6V

遥控器故障排查