跳转到内容

导航示例

导航任务 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,并重启机器狗,使定位导航程序在每次开机后自动启动。

打开终端输入以下命令启动定位导航程序:

Terminal window
cd ~/jy_cog/system/scripts
bash start_nav.sh

执行完以上步骤,会自动弹出 RViz 可视化交互界面,如下图所示。界面中会显示地图和机器狗实时采集到的激光点云数据(彩色部分)。

RViz导航界面

若先前已开启定位导航(或已设置定位导航自启),则可直接打开 Rviz:

Terminal window
bash ~/jy_cog/system/scripts/start_rviz.sh

开启导航后,若激光点云与栅格地图不完全重合(如上图),需要对机器狗定位进行初始化。

  1. 点击顶部工具栏中的 [2D Pose Estimate]。
  2. 确定机器狗的实际位置和朝向,将鼠标移动到地图中的对应位置,按住左键并依照实际朝向拖拽出箭头,然后松开鼠标左键。
  3. 若定位初始化成功,激光点云与栅格地图会重合,如下图所示;若定位初始化失败,从第 1 步开始重新操作即可。

若无法定位,可参考定位问题排查。

定位初始化前

定位初始化后

定位初始化后,用户可在地图上为机器狗指定一个导航目标点:

  1. 点击上方工具栏中的 [2D Nav Goal]。
  2. 将鼠标移动到地图中的目标位置,按住左键并依照目标朝向拖拽出箭头,然后松开鼠标。
  3. 若目标点指定成功,界面中会出现规划好的机器狗运动路径;若目标点指定失败,从第 1 步开始重新操作即可。
  4. 最后,在手柄上将机器狗从手动模式切换到导航模式,并操作机器狗开始踏步,机器狗将自主前往目标点。导航过程中机器狗能自主避开一定范围外的障碍物。

自主导航时所有人员务必与机器狗保持 2 米以上距离!

若自主导航过程中机器狗出现失控等情况,请及时将机器狗从导航模式切回手动模式,或按下软急停按钮(或同时上拨 SW1 和 SW4)。

多点导航概览

绝影 X30 Pro 手柄 APP 提供了导航标点工具,可部署多点导航路线,使机器狗按序到达路线中的一系列路径点并在路径点自主完成任务。

  1. 请进入 APP 设置页中的绝影实验室,打开实验室中的标点工具功能。
  2. 提前规划好机器狗要执行的路径,合理分配路径点位置。

部署准备

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

创建导航路线

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

新增点位

点位属性

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

新增路径点

按钮功能
⑨切换地图编号选择路径点所在的栅格地图编号
⑩刷新路径点信息刷新当前路径点的位置坐标和朝向信息
⑪保存为新路径点保存当前路径点属性并返回
⑫路径点属性设置路径点属性,上下滑动可查看不同属性,点击属性选项可进行属性选择,详见下方路径点属性
⑬保存路径点照片开关选择是否需要保存在当前路径点拍摄的视频流照片
  1. 标记完所有路径点后,可点击 [保存路线] 按钮,对路线进行保存和命名。

导航路线中包含上下楼梯时,上楼梯前的标点需要距离楼梯边缘至少 0.8m。

标记进入充电点时,不能使用 L 行走、山地、静音步态,建议使用行走或斜坡步态。

使用手柄部署导航路线时,第一个路径点和最后一个路径点不能距离过远,否则将无法循环执行导航任务。

路径点的属性分为路径属性和点位属性两种,其中路径属性表示在前往该点的路径中生效的属性。路径点类型、路径点编号、地图编号、路径点信息为点位属性,步态、地面类型、身体高度、速度、运动方向、导航方式、障碍物检测开关属于路径属性。

属性子项说明
地图编号该路径点所在的栅格地图编号
路径点信息路径点在地图坐标系中的位置坐标与朝向信息
路径点类型过渡点仅用于克服地形和约束路径,到点时将保持原地踏步或切换相应步态,然后前往下一个点
任务点到点精度较高,机器狗到达任务点后,会进行一次本体精确调整,然后再停止运动,保持原地站立以便执行识别表计等巡检任务,随后将前往下一个点
充电点在充电桩前用于识别定位充电桩反光柱,使机器狗进入充电桩充电,充电成功后将立即退出充电桩并前往下一个点(若充电点是最后一个点,机器狗将保持充电状态,不会主动退桩)
身体高度正常到达该路径点的过程中,机器狗保持正常高度
匍匐到达该路径点的过程中,机器狗保持匍匐高度(匍匐高度下仅支持行走和斜坡步态)
地面类型实心地面适用于实心地面的场景,比如水泥地面或水泥楼梯
镂空地面适用于镂空地面的场景,比如钢格栅板铺制的工业楼梯或平台
无踢面楼梯适用于没有竖直踢面楼梯的场景(该模式限定身高为正常,步态为楼梯步态,速度为低速)
累积帧适用于包含了多种不同的地面的场景(不支持地形图碰撞检测功能,且仅支持楼梯步态和 45°楼梯步态)
朝向前进以前进的方式到达该路径点
后退以后退的方式到达该路径点,下楼梯时需设置为后退
步态行走使用行走步态
斜坡使用斜坡步态
越障使用越障步态
楼梯使用楼梯步态
45°楼梯使用 45°楼梯步态(仅在累积帧模式下支持)
L 行走使用 L 行走步态
山地使用山地步态
速度低速以低速到达该路径点(累积帧模式不支持)
中速以中速到达该路径点(部分步态不支持)
高速以高速到达该路径点(部分步态不支持)
导航方式直线导航采用直线导航的方式
自主导航采用自主导航的方式
障碍物检测开启开启导航停避障功能
关闭关闭导航停避障功能

注 [1]:地图编号一般在多楼层导航时使用,对于单张栅格地图,地图编号一般默认为 0。如需检查地图编号,可进入 ~/jy_cog/system/conf 路径下的 broker 或 robot_server 文件夹,打开配置文件 map.toml,查看当前所在栅格地图的地图编号。

注 [2]:使用 RL 步态(L 行走与山地)时,不支持身体高度调节及地面类型的选择。

注 [3]:使用直线导航时,若两点间无法以直线的方式进行全局规划,会返回导航任务执行失败;使用自主导航时,应根据地形复杂度设置路径点,地形复杂度越高,导航路径执行的风险越高,则应当设置更密集的路径点;尽量使用多段直线导航代替自主导航。

注 [4]:无论导航模块的停避障功能是否开启,地形图的停避障功能作为机器狗自身的安全模块将会始终保持开启(累积帧模式路段除外)。当导航的停避障功能开启时,对于直线导航,该功能表现为停障,对于自主导航,该功能表现为避障。

多点导航执行有两种方式:使用手柄执行和使用 player 执行。其中手柄只能执行总点数(路线包含点数×循环次数)不超过 100 的导航任务。

执行导航前请确保定位导航程序已启动,且已给定初始定位。

  1. 点击 [查看路线列表],从列表中选择要执行的导航路线,点击执行按钮,执行该导航路线。

查看路线列表

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

设置循环次数

执行导航

手柄上执行总点数(路线包含点数×循环次数)不能超过 100。

  1. 在执行导航路线过程中,可点击 [结束执行] 退出导航。

结束执行

导航状态

若需要执行的总点数超过 100,可以使用 player 执行导航。

  1. 选中需要执行的路线,点击 [同步],将路线同步到导航主机。
  2. 参考远程登录连接到导航主机,进入 ~/jy_cog/system/data 文件夹,查看是否有同步过来的路线文件。

同步后的文件名为”手柄ID+路线名称.json”,如果路线名称为中文,同步后会变成拼音。

  1. 进入 ~/jy_cog/system/conf/player 文件夹,打开 config.toml 文件,将 points_path 的路径改为需要执行的路线文件的路径。
  2. 按需修改 config.toml 中的其他参数:

config.toml

参数说明

  • End_wait_time:到点后停止时间,到达最后一个点时停留的时间,单位为秒
  • times:循环次数,执行导航路线的循环次数
  • charger_time:充电时间,到达充电点进行充电的时长,单位为秒
  1. 保存并关闭修改完的 config.toml。
  2. 打开一个新的终端,输入以下指令,运行 player,随后机器狗将开始执行导航任务:
    Terminal window
    cd ~/jy_cog/player/scripts
    bash player.sh
  3. 如需结束导航,可以在运行 player 的终端中按下 ctrl+c。

当定位过程中未出现点云或定位效果不理想时,可通过以下命令行查看相应的话题是否正常:

查看激光雷达点云话题:

Terminal window
rostopic hz /lidar_points
# 有信息打印,且频率 (average rate) 显示接近 10Hz 则为正常。

查看 imu 话题:

Terminal window
rostopic hz /imu/data
# 有信息打印,且频率 (average rate) 接近 200Hz 则为正常。

查看足式里程计话题:

Terminal window
rostopic hz /leg_odom
# 有信息打印,且频率 (average rate) 接近 200Hz 则为正常。

如果以上信息都正常但在定位过程中出现定位异常,请按照查看点云地图查看所建的三维点云地图是否和实际环境匹配,如不匹配请重新建立地图。

请在了解单楼层导航的基础上阅读本节内容。

多楼层导航与单楼层导航的不同之处主要在于:

  1. 多楼层导航需要在三维点云地图中进行定位初始化;
  2. 多楼层导航在部署时,需要通过修改路径点的地图编号,进行多个栅格地图之间的切换。

开启导航后,若激光点云与栅格地图不完全重合,需要对机器狗定位进行初始化。

  1. 确定 Rviz 窗口右侧 Views 栏下方的 Type 为 Orbit。
  2. 调整视角为俯视,尽量从上向下看。
  3. 选择上方工具栏中的 [3D Pose Estimate] 工具。

3D定位工具

调整视角

  1. 确定 xy 平面上的位置:以栅格地图为参考,根据机器狗在实际环境中的位置和朝向,找到其在栅格地图上的对应位置和朝向,在对应位置上按住鼠标左键,并依照对应朝向拖拽出箭头后方可松开。
  2. 继续调整视角:按住鼠标左键拖动视角以水平观察,确定机器狗所处的实际高度(楼层)。

此时请勿使用右键改变视角,拖动右键会改变定位位置。

  1. 确定 z 轴高度:按住右键并拖动鼠标,将定位箭头拖动到正确楼层的高度,松开右键,即可发布当前的初始位姿。

在标记导航路径点时,需要点击切换地图编号的按钮,输入当前新增路径点所在的栅格地图在 map.toml 中对应的编号。

在标记第一个路径点时,请确认默认的地图编号是否与实际所在栅格地图的地图编号一致。

到达衔接两楼层的平台,标记切换楼层的点位时,点击地图编号右侧的切换按钮,切换到下一楼层的栅格地图所对应的地图编号。

地图切换

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