导航功能
获取地图发送参数
说明 :
参数 | 类型 | 必需 | 参数说明 |
command | string | 是 | 操作指令 map : 获取地图数据 |
text | Object | 是 | 地图信息说明 |
params | Object | 否 |
示例
程序: /** * 测试发送一个 “获取地图” 指令, opk demo 中收到播放指令,会将指令通过 MRobotMessenger 再回传回来 */ Map<String, Object> map = new HashMap<String, Object>(); map.put("command", "map"); map.put("text", "get the map"); RobotMessengerManager.INSTANCE.triggerCommand(JSON.toJSONString(map)); 数据: { "command": "map", "text": "get the map", "params": "" }
获取地图接受参数
说明:
参数 | 类型 | 必需 | 参数说明 |
mapName | string | 是 | 地图名称示例:temphom-0512171351 |
poseBeanList | string | 否 | 站点列表数据信息示例: “[{\”id\”:\”bb0d8e323f143a7cb19c304f2c254a3f\”,\”name\”:\”回充点\”,\”postype\”:6,\”status\”:0,\”theta\”:0.049041413,\”x\”:0.45808893,\”y\”:0.034378726,\”messageType\”:11,\”time\”:1653633678100},{\”id\”:\”08464371968a365f908916337bdb1f5e\”,\”name\”:\”会议室\”,\”postype\”:5,\”status\”:0,\”theta\”:1.6632266,\”x\”:-0.05640829,\”y\”:-1.5977519,\”messageType\”:11,\”time\”:1653633678100},{\”id\”:\”3ba5eb544b28388e90e371e799f9093e\”,\”name\”:\”接待点\”,\”postype\”:1,\”status\”:0,\”theta\”:0.18964143,\”x\”:0.97547954,\”y\”:0.25968644,\”messageType\”:11,\”time\”:1653633678100},{\”id\”:\”ba2a5983f7c4363da5bcd7ac9a45184b\”,\”name\”:\”充电桩\”,\”postype\”:6,\”status\”:0,\”theta\”:0.049041413,\”x\”:-0.15417403,\”y\”:0.0043283883,\”messageType\”:11,\”time\”:1653633678100}] |
示例
数据: { "mapName": "temphom-0512171351", "poseBeanList": "[{\"id\":\"bb0d8e323f143a7cb19c304f2c254a3f\",\"name\":\"回充点\",\"postype\":6,\"status\":0,\"theta\":0.049041413,\"x\":0.45808893,\"y\":0.034378726,\"messageType\":11,\"time\":1653633678100},{\"id\":\"08464371968a365f908916337bdb1f5e\",\"name\":\"会议室\",\"postype\":5,\"status\":0,\"theta\":1.6632266,\"x\":-0.05640829,\"y\":-1.5977519,\"messageType\":11,\"time\":1653633678100},{\"id\":\"3ba5eb544b28388e90e371e799f9093e\",\"name\":\"接待点\",\"postype\":1,\"status\":0,\"theta\":0.18964143,\"x\":0.97547954,\"y\":0.25968644,\"messageType\":11,\"time\":1653633678100},{\"id\":\"ba2a5983f7c4363da5bcd7ac9a45184b\",\"name\":\"充电桩\",\"postype\":6,\"status\":0,\"theta\":0.049041413,\"x\":-0.15417403,\"y\":0.0043283883,\"messageType\":11,\"time\":1653633678100}]" }
获取当前坐标发送参数
说明 :
参数 | 类型 | 必需 | 参数说明 |
command | string | 是 | 操作指令 currentPosition : 获取机器人当前坐标信息 |
text | Object | 是 | 当前坐标信息说明 |
params | Object | 否 |
示例
程序: /** * 测试发送一个 “获取当前坐标” 指令, opk demo 中收到播放指令,会将指令通过 MRobotMessenger 再回传回来 */ Map<String, Object> map = new HashMap<String, Object>(); map.put("command", "currentPosition"); map.put("text", "get the current position"); RobotMessengerManager.INSTANCE.triggerCommand(JSON.toJSONString(map)); 数据: { "command": "currentPosition", "text": "get the current position", "params": "" }
获取当前坐标接受参数
说明:
参数 | 类型 | 必需 | 参数说明 |
curMapName | string | 是 | 地图名称示例:temphom-0512171351 |
pose | string | 是 | 当前位置信息 px: x坐标 py: y坐标 theta: z坐标 示例:” {\”px\”:1.1714063882827759,\”py\”:0.349215030670166,\”theta\”:0.13874612748622894}” |
示例
数据: { "curMapName": "temphom-0512171351", "pose": "{\"px\":1.1714063882827759,\"py\":0.349215030670166,\"theta\":0.13874612748622894}" }
导航发送参数
备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误
说明 :
参数 | 类型 | 必需 | 参数说明 |
command | string | 是 | 操作指令 gotoMapSite :运动到指定站点 |
text | Object | 是 | 当前地图列表的一个站点名称 |
params | Object | 是 | coordinate_deviation:目的地范围,在目的地范围内均认为正常到达,默认0.5米 moving_timeout_time:机器人未移动超时时间机器人未移动超时时间,默认20000毫秒,超过该时间未移动,此次导航失败 max_avoid_count:堵死状态检测次数堵死状态检测次数,机器人在被堵死后会每隔一段时间检测一次,超过该次数后还是被堵死,则认为导航失败,默认5次 avoid_interval_time:堵死状态检测间隔时间,默认1000毫秒 auto_reset_estimate:导航过程中如果发生定位丢失,是否尝试自动重定位,默认true param_reset_estimate_count:重定位尝试次数,默认5次 get_distance_interval_time:距离信息上报间隔时间,默认1000毫秒 param_linear_speed:导航线速度,可不填写,范围0.1-1.2 m/s param_angular_speed:导航角速度,可不填写,范围0.2-1.8 rad/s(1rad=180°/π,约 57.3°) param_is_adjust_angle:到达目标点时机器的朝向是按照前进方向还是设置位置点时的方向,true 前进方向,false 设置位置点时的方向,默认false param_is_need_avoid_notify_immediately:被障碍物堵死立即上报状态,默认false (1.34.0版本引入) param_destination_range:当目标点不可到达时,停在目标点附近的距离范围,默认0米(1.34.0版本引入) |
示例
程序: /** * 测试发送一个 “导航” 指令, opk demo 中收到播放指令,会将指令通过 MRobotMessenger 再回传回来 */ JSONObject params = new JSONObject(); params.put("coordinate_deviation", 0.5); //目的地范围,在目的地范围内均认为正常到达,默认0.5米 params.put("moving_timeout_time", 20000); //机器人未移动超时时间,默认20000毫秒,超过该时间未移动,此次导航失败 params.put("max_avoid_count", 5); //堵死状态检测次数,机器人在被堵死后会每隔一段时间检测一次,超过该次数后还是被堵死,则认为导航失败,默认5次 params.put("avoid_interval_time", 1000); //堵死状态检测间隔时间,默认1000毫秒 params.put("auto_reset_estimate", true); //导航过程中如果发生定位丢失,是否尝试自动重定位,默认true params.put("param_reset_estimate_count", 5); //重定位尝试次数,默认5次 params.put("get_distance_interval_time", 1000); //距离信息上报间隔时间,默认1000毫秒 params.put("param_linear_speed", 0.3); //导航线速度,可不填写,范围0.1-1.2 m/s params.put("param_angular_speed", 1); //导航角速度,可不填写,范围0.2-1.8 rad/s(1rad=180°/π,约 57.3°) params.put("param_is_adjust_angle", true); //到达目标点时机器的朝向是按照前进方向还是设置位置点时的方向,true 前进方向,false 设置位置点时的方向,默认false params.put("param_is_need_avoid_notify_immediately", false); //被障碍物堵死立即上报状态,默认false (1.34.0版本引入) params.put("param_destination_range", 0); //当目标点不可到达时,停在目标点附近的距离范围,默认0米(1.34.0版本引入) JSONObject json = new JSONObject(); json.put("command", "gotoMapSite"); json.put("text", placeName); json.put("params", params); RobotMessengerManager.INSTANCE.triggerCommand(json.toString()); 数据: { "command": "gotoMapSite", "text": "接待点", "params": { "coordinate_deviation": 0.5, "moving_timeout_time": 20000, "max_avoid_count": 5, "avoid_interval_time": 1000, "auto_reset_estimate": true, "param_reset_estimate_count": 5, "get_distance_interval_time": 1000, "param_linear_speed": 0.3, "param_angular_speed": 1, "param_is_adjust_angle": true, "param_is_need_avoid_notify_immediately": false, "param_destination_range": 0 } }
导航接受参数
说明:
参数 | 类型 | 必需 | 参数说明 |
command | string | 是 | 操作指令 naviAction :导航运动 |
text | Object | 是 | |
code | number | 否 | 状态码 32610007:成功到达目的地 32610009:底盘启动导航任务失败 -32610004:地点名称参数无效 -32620001:未定位异常 -32620015:已经处于目标点位置 -32620007:目标点不存在 -32600001:申请机器人底盘资源正在占用 -32600002:申请机器人底盘资源失败 -32620002:目标点在地图外或在糟点上 -32620009:全局路径规划失败 -32620014:重定位失败 -32620008:机器无位移超时 -32620006:堵死状态超时 -32610011:参数解析错误 -32620030:过流重试结束 |
message | string | 否 | 内容信息说明 |
示例
数据: { "command": "naviAction", "text": "navigation action", "code": 32610007, "message": "" }
停止导航发送参数
备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误
说明 :
参数 | 类型 | 必需 | 参数说明 |
command | string | 是 | 操作指令 stopMapSite :停止运动到指定站点 |
text | Object | 是 | 当前地图列表的一个站点名称 |
params | Object | 否 |
示例
程序: /** * 测试发送一个 “停止导航” 指令, opk demo 中收到播放指令,会将指令通过 MRobotMessenger 再回传回来 */ JSONObject json = new JSONObject(); json.put("command", "stopMapSite"); json.put("text", "stop goto the map site); map.put("params", ""); RobotMessengerManager.INSTANCE.triggerCommand(json.toString()); 数据: { "command": "stopMapSite", "text": "stop goto the map site", "params": "" }
JavaCopy
停止导航接受参数
说明:
参数 | 类型 | 必需 | 参数说明 |
command | string | 是 | 操作指令 naviAction :导航运动 |
text | Object | 是 | |
code | number | 否 | 状态码 32610007:成功到达目的地 32610009:底盘启动导航任务失败 -32610004:地点名称参数无效 -32620001:未定位异常 -32620015:已经处于目标点位置 -32620007:目标点不存在 -32600001:申请机器人底盘资源正在占用 -32600002:申请机器人底盘资源失败 -32620002:目标点在地图外或在糟点上 -32620009:全局路径规划失败 -32620014:重定位失败 -32620008:机器无位移超时 -32620006:堵死状态超时 -32610011:参数解析错误 -32620030:过流重试结束 |
message | string | 否 | 内容信息说明 |
示例
数据: { "command": "naviAction", "text": "navigation action", "code": 32610007, "message": "" }
插件APK接受并处理地图信息,展示地图
MRobotMessenger.getInstance().setRobotCallback(new MRobotMessenger.RobotCallback() { @Override public void onResult(String result) { Log.i("SHADOW_OPK", "收取callback内容: " + result); mMapView.post(new Runnable() { @Override public void run() { getMap(result); //接受并展示地图数据信息 } });