7.8 规控导航部分
7.8 规控导航部分
Section titled “7.8 规控导航部分”7.8.1 整体介绍
Section titled “7.8.1 整体介绍”A2 旗舰款机器人出厂预置基本的建图定位导航能力,用户可以通过二次开发接口进行导航点导航、目标点导航、指定线路导航等各种任务,同时自带动态障碍物识别避障等功能。
导航任务下发接口按照导航逻辑不同有多种接口,不一一列出每个接口单独的说明文档,而是统一说明下发接口区别的出入参。
导航任务下发接口统一说明:
- 执行任务前,需要机器人重定位成功,且下发任务的地图id需要与重定位的地图一致
- 执行任务前,需要将MC状态切换到 RL_LOCOMOTION_DEFAULT(强化直腿)模式,否则机器人可能无法正常响应PNC的速度指令
- 下发任务时,需要设置task_id,若不设置(默认为0),PNC会自动生成一个task_id,并在response中返回,客户端需要保存该task_id以便后续下发控制指令或查询任务状态
代码示例都在 examples/pnc/ 目录下,每个接口都有对应调用脚本,从文件名即可看出,有一个完整的全流程从获取地图 id,选择点位 id 到下发导航任务到监控任务状态的示例 example/pnc/pnc_demo.py 可供参考。
字段统一说明
- task_id:任务 id,若不设置(默认为0),PNC会自动生成一个task_id,并在response中返回,客户端需要保存该task_id以便后续下发控制指令或查询任务状态
- map_id:地图 id,需要填写当前地图 id
- target_id:导航点 id
- pose:2D 世界坐标位姿
- pose_offset:目标点相对偏移
- state:未做特殊说明的情况都代表请求是否成功送达和接收,返回 CommonState_SUCCESS 即为成功,其他情况为失败
- ackerman_mode:保留字段未使用,按照示例填写即可
- guide_line_id:保留字段未使用,按照示例填写即可
7.8.2 到点导航 RPC 接口
Section titled “7.8.2 到点导航 RPC 接口”| 接口名 | 接口描述 | URL | 入参 | 出参 | 备注 |
|---|---|---|---|---|---|
pb:/aimdk.protocol.PncService/PlanningNaviToGoal |
下发给定目标点ID的规划导航任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/PlanningNaviToGoal | |
|
到点精度范围最大约0.4米 |
pb:/aimdk.protocol.PncService/PlanningNaviToPose2D |
下发给定目标点位姿的规划导航任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/PlanningNaviToPose2D | |
|
到点精度范围最大约0.4米 |
pb:/aimdk.protocol.PncService/LinearNaviToRelative |
下发给定相对目标点位姿的直线导航任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/LinearNaviToRelative | |
|
先执行原地旋转,再执行直线移动 |
pb:/aimdk.protocol.PncService/LinearNaviToGoal |
下发给定目标点ID的直线导航任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/LinearNaviToGoal | |
|
先执行原地旋转,再执行直线移动 |
pb:/aimdk.protocol.PncService/LinearNaviToPose2D |
下发给定目标点位姿的直线导航任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/LinearNaviToPose2D | |
|
先执行原地旋转,再执行直线移动 |
pb:/aimdk.protocol.PncService/DirectNaviToRelativeGoal |
下发给定目标点ID的直接移动任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/DirectNaviToRelativeGoal | |
|
一边平移一边旋转,仅适用于目标点与机器人朝向偏差较小的任务,否则可能导致到点偏差较大 |
pb:/aimdk.protocol.PncService/DirectNaviToRelative |
下发给定相对目标点位姿的直接移动任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/DirectNaviToRelative | |
|
|
pb:/aimdk.protocol.PncService/PreciseNaviToGoal |
下发给定目标点ID的高精度导航任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/PreciseNaviToGoal | |
|
仅适用于特殊场景下的高精到点任务,机器人会先以普通规划导航模式走到目标点后方约0.5米的位置,再直接移动到目标点,直接移动过程中不避障,并可能多次调整。到点精度约0.1米左右。需要保证目标点后方有足够空间。非特殊需求不建议使用此模式 |
7.8.3 简单移动 RPC 接口
Section titled “7.8.3 简单移动 RPC 接口”| 接口名 | 接口描述 | URL | 入参 | 出参 | 备注 |
|---|---|---|---|---|---|
pb:/aimdk.protocol.PncService/SpinTurnAndMoveForward |
下发给原地旋转+直线前进任务,会先执行原地旋转,再执行直线前进 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/SpinTurnAndMoveForward | |
|
|
pb:/aimdk.protocol.PncService/SpinTurn |
下发原地旋转任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/SpinTurn | |
|
|
pb:/aimdk.protocol.PncService/MoveForward |
下发直线平移任务 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/MoveForward | |
|
任务执行后机器朝向不会发生变化 |
7.8.4 任务查询、控制 RPC 接口
Section titled “7.8.4 任务查询、控制 RPC 接口”| 接口名 | 接口描述 | URL | 入参 | 出参 | 备注 |
|---|---|---|---|---|---|
pb:/aimdk.protocol.PncService/ActionCancel |
下发取消任务指令 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/ActionCancel | |
|
仅当task_id匹配时才响应指令,否则返回CommonState_FAILURE |
pb:/aimdk.protocol.PncService/ActionPause |
下发暂停任务指令 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/ActionPause | |
|
仅当task_id匹配时才响应指令,否则返回CommonState_FAILURE |
pb:/aimdk.protocol.PncService/ActionResume |
下发恢复暂停中的任务指令 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/ActionResume | |
|
仅当task_id匹配时才响应指令,否则返回CommonState_FAILURE |
pb:/aimdk.protocol.PncService/ActionGetState |
获取导航任务状态 | http://192.168.100.110:53176/rpc/aimdk.protocol.PncService/ActionGetState | |
|
若请求的 task_id 为 0 则返回最近一次任务的 task_id 及对应的状态,其它 task_id 不匹配的请求则返回 PncServiceState_FAILED |