导航示例
导航任务 C++ SDK 与示例代码:DeepRoboticsLab/robotserver_sdk
绝影 X30 Pro 采用 ROS/navigation 导航框架。
本节及多楼层导航介绍的导航方法需配合 localization(≥2.0.5)、nav(≥2.1.9)、player(≥1.0.6)、broker/robot_server(≥1.1.6) 及 app(≥2.3.2) 使用。
在使用自主导航功能时,应避免在尖锐地形拐弯,同时需留意在机器狗视野盲区突然出现的临时障碍。
在使用自主导航功能前,请确保建图程序未被启动。
在建图部署完成后,可参照自启动配置将 autorun_slam 文件内容改为 true,并重启机器狗,使定位导航程序在每次开机后自动启动。
启动定位导航程序
Section titled “启动定位导航程序”打开终端输入以下命令启动定位导航程序:
cd ~/jy_cog/system/scriptsbash start_nav.sh执行完以上步骤,会自动弹出 RViz 可视化交互界面,如下图所示。界面中会显示地图和机器狗实时采集到的激光点云数据(彩色部分)。

若先前已开启定位导航(或已设置定位导航自启),则可直接打开 Rviz:
bash ~/jy_cog/system/scripts/start_rviz.sh开启导航后,若激光点云与栅格地图不完全重合(如上图),需要对机器狗定位进行初始化。
- 点击顶部工具栏中的 [2D Pose Estimate]。
- 确定机器狗的实际位置和朝向,将鼠标移动到地图中的对应位置,按住左键并依照实际朝向拖拽出箭头,然后松开鼠标左键。
- 若定位初始化成功,激光点云与栅格地图会重合,如下图所示;若定位初始化失败,从第 1 步开始重新操作即可。
若无法定位,可参考定位问题排查。


指定目标点(单点导航)
Section titled “指定目标点(单点导航)”定位初始化后,用户可在地图上为机器狗指定一个导航目标点:
- 点击上方工具栏中的 [2D Nav Goal]。
- 将鼠标移动到地图中的目标位置,按住左键并依照目标朝向拖拽出箭头,然后松开鼠标。
- 若目标点指定成功,界面中会出现规划好的机器狗运动路径;若目标点指定失败,从第 1 步开始重新操作即可。
- 最后,在手柄上将机器狗从手动模式切换到导航模式,并操作机器狗开始踏步,机器狗将自主前往目标点。导航过程中机器狗能自主避开一定范围外的障碍物。
自主导航时所有人员务必与机器狗保持 2 米以上距离!
若自主导航过程中机器狗出现失控等情况,请及时将机器狗从导航模式切回手动模式,或按下软急停按钮(或同时上拨 SW1 和 SW4)。
多点导航的部署
Section titled “多点导航的部署”
绝影 X30 Pro 手柄 APP 提供了导航标点工具,可部署多点导航路线,使机器狗按序到达路线中的一系列路径点并在路径点自主完成任务。
- 请进入 APP 设置页中的绝影实验室,打开实验室中的标点工具功能。
- 提前规划好机器狗要执行的路径,合理分配路径点位置。

创建导航路线
Section titled “创建导航路线”- 首先确保当前机器狗处于手动或辅助模式,然后点击界面上的 [创建导航路线] 按钮:

- 点击 [创建导航路线] 后,将进入创建导航路线页面:
| 按钮 | 功能 |
|---|---|
| ①新增点位 | 在路径点列表末尾增加一个新路径点,并设置路径点属性 |


| 按钮 | 功能 |
|---|---|
| ②清空点位 | 清空当前路径点列表中的所有路径点 |
| ③展开/收起路径点列表 | 展开或收起路径点列表 |
| ④编辑路径点 | 对当前选中的路径点属性(不含位置和朝向信息)进行修改 |
| ⑤插入路径点 | 在当前选中的路径点上方插入一个新的路径点 |
| ⑥删除路径点 | 将当前选中的路径点从列表中删除 |
| ⑦保存路径 | 保存和命名当前路径并退出 |
| ⑧退出 | 直接退出,不保存当前路径 |
- 按照顺序将机器狗遥控到需要标记的路径点位置,然后使机器狗停止运动,点击 [新增点位],进入新增路径点页面设置路径点属性,进入该页面时,APP 会自动获取机器狗当前的位置坐标和朝向信息。新增路径点页面如下:

| 按钮 | 功能 |
|---|---|
| ⑨切换地图编号 | 选择路径点所在的栅格地图编号 |
| ⑩刷新路径点信息 | 刷新当前路径点的位置坐标和朝向信息 |
| ⑪保存为新路径点 | 保存当前路径点属性并返回 |
| ⑫路径点属性 | 设置路径点属性,上下滑动可查看不同属性,点击属性选项可进行属性选择,详见下方路径点属性 |
| ⑬保存路径点照片开关 | 选择是否需要保存在当前路径点拍摄的视频流照片 |
- 标记完所有路径点后,可点击 [保存路线] 按钮,对路线进行保存和命名。
导航路线中包含上下楼梯时,上楼梯前的标点需要距离楼梯边缘至少 0.8m。
标记进入充电点时,不能使用 L 行走、山地、静音步态,建议使用行走或斜坡步态。
使用手柄部署导航路线时,第一个路径点和最后一个路径点不能距离过远,否则将无法循环执行导航任务。
路径点的属性分为路径属性和点位属性两种,其中路径属性表示在前往该点的路径中生效的属性。路径点类型、路径点编号、地图编号、路径点信息为点位属性,步态、地面类型、身体高度、速度、运动方向、导航方式、障碍物检测开关属于路径属性。
| 属性 | 子项 | 说明 |
|---|---|---|
| 地图编号 | 该路径点所在的栅格地图编号 | |
| 路径点信息 | 路径点在地图坐标系中的位置坐标与朝向信息 | |
| 路径点类型 | 过渡点 | 仅用于克服地形和约束路径,到点时将保持原地踏步或切换相应步态,然后前往下一个点 |
| 任务点 | 到点精度较高,机器狗到达任务点后,会进行一次本体精确调整,然后再停止运动,保持原地站立以便执行识别表计等巡检任务,随后将前往下一个点 | |
| 充电点 | 在充电桩前用于识别定位充电桩反光柱,使机器狗进入充电桩充电,充电成功后将立即退出充电桩并前往下一个点(若充电点是最后一个点,机器狗将保持充电状态,不会主动退桩) | |
| 身体高度 | 正常 | 到达该路径点的过程中,机器狗保持正常高度 |
| 匍匐 | 到达该路径点的过程中,机器狗保持匍匐高度(匍匐高度下仅支持行走和斜坡步态) | |
| 地面类型 | 实心地面 | 适用于实心地面的场景,比如水泥地面或水泥楼梯 |
| 镂空地面 | 适用于镂空地面的场景,比如钢格栅板铺制的工业楼梯或平台 | |
| 无踢面楼梯 | 适用于没有竖直踢面楼梯的场景(该模式限定身高为正常,步态为楼梯步态,速度为低速) | |
| 累积帧 | 适用于包含了多种不同的地面的场景(不支持地形图碰撞检测功能,且仅支持楼梯步态和 45°楼梯步态) | |
| 朝向 | 前进 | 以前进的方式到达该路径点 |
| 后退 | 以后退的方式到达该路径点,下楼梯时需设置为后退 | |
| 步态 | 行走 | 使用行走步态 |
| 斜坡 | 使用斜坡步态 | |
| 越障 | 使用越障步态 | |
| 楼梯 | 使用楼梯步态 | |
| 45°楼梯 | 使用 45°楼梯步态(仅在累积帧模式下支持) | |
| L 行走 | 使用 L 行走步态 | |
| 山地 | 使用山地步态 | |
| 速度 | 低速 | 以低速到达该路径点(累积帧模式不支持) |
| 中速 | 以中速到达该路径点(部分步态不支持) | |
| 高速 | 以高速到达该路径点(部分步态不支持) | |
| 导航方式 | 直线导航 | 采用直线导航的方式 |
| 自主导航 | 采用自主导航的方式 | |
| 障碍物检测 | 开启 | 开启导航停避障功能 |
| 关闭 | 关闭导航停避障功能 |
注 [1]:地图编号一般在多楼层导航时使用,对于单张栅格地图,地图编号一般默认为 0。如需检查地图编号,可进入
~/jy_cog/system/conf路径下的broker或robot_server文件夹,打开配置文件map.toml,查看当前所在栅格地图的地图编号。
注 [2]:使用 RL 步态(L 行走与山地)时,不支持身体高度调节及地面类型的选择。
注 [3]:使用直线导航时,若两点间无法以直线的方式进行全局规划,会返回导航任务执行失败;使用自主导航时,应根据地形复杂度设置路径点,地形复杂度越高,导航路径执行的风险越高,则应当设置更密集的路径点;尽量使用多段直线导航代替自主导航。
注 [4]:无论导航模块的停避障功能是否开启,地形图的停避障功能作为机器狗自身的安全模块将会始终保持开启(累积帧模式路段除外)。当导航的停避障功能开启时,对于直线导航,该功能表现为停障,对于自主导航,该功能表现为避障。
多点导航的执行
Section titled “多点导航的执行”多点导航执行有两种方式:使用手柄执行和使用 player 执行。其中手柄只能执行总点数(路线包含点数×循环次数)不超过 100 的导航任务。
执行导航前请确保定位导航程序已启动,且已给定初始定位。
手柄直接执行导航
Section titled “手柄直接执行导航”- 点击 [查看路线列表],从列表中选择要执行的导航路线,点击执行按钮,执行该导航路线。

- 设置循环次数,然后点击 [执行导航]。


手柄上执行总点数(路线包含点数×循环次数)不能超过 100。
- 在执行导航路线过程中,可点击 [结束执行] 退出导航。


player 执行导航
Section titled “player 执行导航”若需要执行的总点数超过 100,可以使用 player 执行导航。
- 选中需要执行的路线,点击 [同步],将路线同步到导航主机。
- 参考远程登录连接到导航主机,进入
~/jy_cog/system/data文件夹,查看是否有同步过来的路线文件。
同步后的文件名为”手柄ID+路线名称.json”,如果路线名称为中文,同步后会变成拼音。
- 进入
~/jy_cog/system/conf/player文件夹,打开config.toml文件,将points_path的路径改为需要执行的路线文件的路径。 - 按需修改
config.toml中的其他参数:


End_wait_time:到点后停止时间,到达最后一个点时停留的时间,单位为秒times:循环次数,执行导航路线的循环次数charger_time:充电时间,到达充电点进行充电的时长,单位为秒
- 保存并关闭修改完的
config.toml。 - 打开一个新的终端,输入以下指令,运行 player,随后机器狗将开始执行导航任务:
Terminal window cd ~/jy_cog/player/scriptsbash player.sh - 如需结束导航,可以在运行 player 的终端中按下 ctrl+c。
定位问题排查
Section titled “定位问题排查”当定位过程中未出现点云或定位效果不理想时,可通过以下命令行查看相应的话题是否正常:
查看激光雷达点云话题:
rostopic hz /lidar_points# 有信息打印,且频率 (average rate) 显示接近 10Hz 则为正常。查看 imu 话题:
rostopic hz /imu/data# 有信息打印,且频率 (average rate) 接近 200Hz 则为正常。查看足式里程计话题:
rostopic hz /leg_odom# 有信息打印,且频率 (average rate) 接近 200Hz 则为正常。如果以上信息都正常但在定位过程中出现定位异常,请按照查看点云地图查看所建的三维点云地图是否和实际环境匹配,如不匹配请重新建立地图。
室内多楼层导航
Section titled “室内多楼层导航”请在了解单楼层导航的基础上阅读本节内容。
多楼层导航与单楼层导航的不同之处主要在于:
- 多楼层导航需要在三维点云地图中进行定位初始化;
- 多楼层导航在部署时,需要通过修改路径点的地图编号,进行多个栅格地图之间的切换。
开启导航后,若激光点云与栅格地图不完全重合,需要对机器狗定位进行初始化。
- 确定 Rviz 窗口右侧 Views 栏下方的 Type 为 Orbit。
- 调整视角为俯视,尽量从上向下看。
- 选择上方工具栏中的 [3D Pose Estimate] 工具。


- 确定 xy 平面上的位置:以栅格地图为参考,根据机器狗在实际环境中的位置和朝向,找到其在栅格地图上的对应位置和朝向,在对应位置上按住鼠标左键,并依照对应朝向拖拽出箭头后方可松开。
- 继续调整视角:按住鼠标左键拖动视角以水平观察,确定机器狗所处的实际高度(楼层)。
此时请勿使用右键改变视角,拖动右键会改变定位位置。
- 确定 z 轴高度:按住右键并拖动鼠标,将定位箭头拖动到正确楼层的高度,松开右键,即可发布当前的初始位姿。
在标记导航路径点时,需要点击切换地图编号的按钮,输入当前新增路径点所在的栅格地图在 map.toml 中对应的编号。
在标记第一个路径点时,请确认默认的地图编号是否与实际所在栅格地图的地图编号一致。
到达衔接两楼层的平台,标记切换楼层的点位时,点击地图编号右侧的切换按钮,切换到下一楼层的栅格地图所对应的地图编号。

确保切换楼层的点位在两个楼层的栅格图上都是可达的。