跳到内容 跳到主导航 跳到页脚

导航功能

获取地图发送参数

        说明 :

参数类型必需参数说明
commandstring操作指令       
map : 获取地图数据
textObject地图信息说明
paramsObject 

示例

程序:
        /**
        * 测试发送一个 “获取地图” 指令, 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": ""
}       

获取地图接受参数

        说明:

参数类型必需参数说明
mapNamestring地图名称示例:temphom-0512171351
poseBeanListstring站点列表数据信息示例:        
“[{\”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}]"
}

获取当前坐标发送参数

        说明 :

参数类型必需参数说明
commandstring操作指令       
currentPosition : 获取机器人当前坐标信息
textObject当前坐标信息说明
paramsObject 

示例

程序:
        /**
        * 测试发送一个 “获取当前坐标” 指令, 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": ""
}        

获取当前坐标接受参数

        说明:

参数类型必需参数说明
curMapNamestring地图名称示例:temphom-0512171351
posestring当前位置信息
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}"
}

导航发送参数

备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误

        说明 :

参数类型必需参数说明
commandstring操作指令       
gotoMapSite :运动到指定站点
textObject当前地图列表的一个站点名称
paramsObjectcoordinate_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
	}
}

导航接受参数

        说明:

参数类型必需参数说明
commandstring操作指令        naviAction :导航运动
textObject 
codenumber状态码

32610007:成功到达目的地
32610009:底盘启动导航任务失败
-32610004:地点名称参数无效
-32620001:未定位异常
-32620015:已经处于目标点位置
-32620007:目标点不存在
-32600001:申请机器人底盘资源正在占用
-32600002:申请机器人底盘资源失败
-32620002:目标点在地图外或在糟点上
-32620009:全局路径规划失败
-32620014:重定位失败
-32620008:机器无位移超时
-32620006:堵死状态超时
-32610011:参数解析错误
-32620030:过流重试结束
messagestring内容信息说明

示例

数据:
{
	"command": "naviAction",
	"text": "navigation action",
	"code": 32610007,
	"message": ""
}

停止导航发送参数

备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误

        说明 :

参数类型必需参数说明
commandstring操作指令       
stopMapSite :停止运动到指定站点
textObject当前地图列表的一个站点名称
paramsObject 

示例

程序:
        /**
        * 测试发送一个 “停止导航” 指令, 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

停止导航接受参数

        说明:

参数类型必需参数说明
commandstring操作指令       
naviAction :导航运动
textObject 
codenumber状态码

32610007:成功到达目的地
32610009:底盘启动导航任务失败
-32610004:地点名称参数无效
-32620001:未定位异常
-32620015:已经处于目标点位置
-32620007:目标点不存在
-32600001:申请机器人底盘资源正在占用
-32600002:申请机器人底盘资源失败
-32620002:目标点在地图外或在糟点上
-32620009:全局路径规划失败
-32620014:重定位失败
-32620008:机器无位移超时
-32620006:堵死状态超时
-32610011:参数解析错误
-32620030:过流重试结束
messagestring内容信息说明

示例

数据:
{
	"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);  //接受并展示地图数据信息
            }
        });

这篇文章是否有帮助?

0