视觉能力
根据条件找人
发送参数
备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误
说明:
| 参数 | 类型 | 必需 | 参数说明 |
| command | string | 是 | 操作指令 startPersonAppear : 根据条件找人 |
| personId | number | 是 | 根据id查找,用于检测特定id的人脸,默认-1 |
| personName | string | 是 | 用于检测特定名字的人脸,默认为”” |
| maxDistance | number | 是 | 检测的最大距离,默认3米,超过该距离的人脸数据自动忽略 |
| maxFaceAngleX | number | 是 | 检测的最大人脸角度,默认60度 |
| isNeedInCompleteFace | Boolean | 是 | 是否包含不完整人脸检测,默认false |
| incompleteFaceCacheTimeout | number | 是 | 不完整人脸检测缓存时间,默认3000毫秒 |
| isNeedBody | Boolean | 是 | 是否检测人体,默认false |
| isNeedRecognize | Boolean | 是 | 是否需要识别详细信息,默认true |
| recognizeTimeout | number | 是 | 人脸识别超时时间,默认2000毫秒 |
| appearTimeout | number | 是 | 检测超时时间,默认7000毫秒 |
| text | Object | 是 | |
| params | Object | 否 |
示例
程序示例:
/**
* 测试发送一个 “根据条件找人” 指令, opk demo 中收到播放指令,会将指令通过 MRobotMessenger 再回传回来
*/
JSONObject json = new JSONObject();
json.put("command", "startPersonAppear");
json.put("personId", -1);
json.put("personName", "");
json.put("maxDistance", 3);
json.put("maxFaceAngleX", 60);
json.put("isNeedInCompleteFace", false);
json.put("incompleteFaceCacheTimeout", 3000);
json.put("isNeedBody", false);
json.put("isNeedRecognize", true);
json.put("recognizeTimeout", 2000);
json.put("appearTimeout", 7000);
json.put("text", "Enable personnel detection");
map.put("params", "");
RobotMessengerManager.INSTANCE.triggerCommand(json.toString());
数据示例:
{
"command": "startPersonAppear",
"personId": -1,
"personName": "",
"maxDistance": 3,
"maxFaceAngleX": 60,
"isNeedInCompleteFace": false,
"incompleteFaceCacheTimeout": 3000,
"isNeedBody": false,
"isNeedRecognize": true,
"recognizeTimeout": 2000,
"appearTimeout": 7000,
"text": "Enable personnel detection"
}
接受参数
说明:
| 参数 | 类型 | 必需 | 参数说明 |
| command | string | 是 | 操作指令 personAppearAction :人员检测 |
| text | Object | 是 | |
| code | number | 否 | 状态码 32610001:检测成功 32610003:超时未检测到符合条件的人 -32600004: 获取人脸数据失败 |
| data | string | 否 | 检测人员的详细信息 |
| message | string | 否 | 内容信息说明 |
示例
数据示例:
{
"command": "personAppearAction",
"text": "person appear action",
"code": 32610001,
"data": "\"{\\\"age\\\":0,\\\"angle\\\":0,\\\"angleInView\\\":0.0,\\\"avatar_url\\\":\\\"\\\",\\\"bodyX\\\":0,\\\"bodyY\\\":0,\\\"bodyheight\\\":0,\\\"bodywidth\\\":0,\\\"distance\\\":0.0,\\\"faceAngleX\\\":0.0,\\\"faceAngleY\\\":0.0,\\\"faceRegisterTime\\\":\\\"\\\",\\\"faceX\\\":0,\\\"faceY\\\":0,\\\"faceheight\\\":0,\\\"facewidth\\\":0,\\\"fake_face\\\":false,\\\"gender\\\":\\\"\\\",\\\"glasses\\\":0,\\\"headSpeed\\\":0,\\\"id\\\":0,\\\"isNewUser\\\":false,\\\"isStaff\\\":false,\\\"latency\\\":0,\\\"mWelcomeActions\\\":[{\\\"action\\\":\\\"play_tts\\\",\\\"isConfirm\\\":0,\\\"recommend\\\":\\\"\\\",\\\"value\\\":\\\" 嗨,,很开心为你服务\\\"}],\\\"mouthmove_score\\\":0.0,\\\"mouthstate\\\":0,\\\"name\\\":\\\"\\\",\\\"other_face\\\":false,\\\"quality\\\":\\\"\\\",\\\"remoteFaceId\\\":\\\"\\\",\\\"remoteReqId\\\":\\\"8fb71ee049ff8dc50190da2540e1cdc4\\\",\\\"remoteWakeupId\\\":\\\"\\\",\\\"role\\\":\\\"stranger\\\",\\\"role_id\\\":11,\\\"staff_dept\\\":\\\"\\\",\\\"staff_job\\\":\\\"\\\",\\\"staff_mobile\\\":\\\"\\\",\\\"timestamp\\\":1678784679674,\\\"ukfBodyOmega\\\":0.0,\\\"ukfBodyVel\\\":0.0,\\\"userId\\\":\\\"\\\",\\\"with_body\\\":false,\\\"with_face\\\":false}\"",
"messaage": ""
}
人脸自动追踪
发送参数
备注:需要使用底盘的功能组件,都是互斥的。比如底盘行走、导航、回冲、焦点跟随等。请不要同时使用他们,会造成错误
说明 :
| 参数 | 类型 | 必需 | 参数说明 |
| command | string | 是 | 操作指令 trackFace :人脸自动追踪 stopTrackFace:停止人脸追踪 |
| personId | number | 是 | 首次追踪对象,可不填写,不填的话自动检测合适人脸进行追踪 |
| maxDistance | number | 是 | 人脸识别的最大距离,超过该距离的人脸数据自动忽略,默认3米 |
| maxFaceAngleX | number | 是 | 识别最大人脸角度,默认60度 |
| isNeedInCompleteFace | Boolean | 是 | 是否包含不完整人脸检测,默认false |
| disappearTimeout | number | 是 | 人脸丢失超时时间,超过该时间持续未检测到人脸数据,组件自动退出 |
| isMultiPersonNotTrack | Boolean | 是 | 在检测到多个人脸数据时,是否进行追踪,默认false |
| multiPersonNotTrackDistance | number | 是 | 多人检测距离,默认2米 |
| isAllowMoveBody | Boolean | 是 | 机器人是否允许转动身体 |
| text | Object | 是 | track face | stop track face |
| params | Object | 否 |
示例
程序示例:
/**
* 测试发送一个 “人脸自动追踪” 指令, opk demo 中收到播放指令,会将指令通过 MRobotMessenger 再回传回来
*/
JSONObject json = new JSONObject();
json.put("command", "trackFace");
json.put("personId", -1);
json.put("maxDistance", 3);
json.put("maxFaceAngleX", 60);
json.put("isNeedInCompleteFace", false);
json.put("disappearTimeout", 7000);
json.put("isMultiPersonNotTrack", false);
json.put("multiPersonNotTrackDistance", 2);
json.put("isAllowMoveBody", true);
json.put("text", "track face");
RobotMessengerManager.INSTANCE.triggerCommand(json.toString());
数据示例:
{
"command": "trackFace",
"personId": -1,
"maxDistance": 3,
"maxFaceAngleX": 60,
"isNeedInCompleteFace": false,
"disappearTimeout": 7000,
"isMultiPersonNotTrack": false,
"multiPersonNotTrackDistance": 2,
"isAllowMoveBody": true,
"text": "track face",
"params": ""
}
接受参数
说明:
| 参数 | 类型 | 必需 | 参数说明 |
| command | string | 是 | 操作指令 facAction |
| text | Object | 是 | |
| code | number | 否 | 状态码 32720001:追踪成功 32720003: 单次焦点跟随结束,还会继续找人跟随 32610003:本次追踪结束 -32600004: 追踪失败 |
| data | string | 否 | 人脸追踪的详细信息 |
| message | string | 否 | 内容信息说明 |
示例
数据示例:
{
"command": "facAction",
"text": "face action",
"code": 32720001,
"data": "\"{\\\"age\\\":-1,\\\"angle\\\":-3,\\\"angleInView\\\":-3.4066946506500244,\\\"bodyX\\\":245,\\\"bodyY\\\":134,\\\"bodyheight\\\":581,\\\"bodywidth\\\":700,\\\"distance\\\":0.1574193239212036,\\\"faceAngleX\\\":-10.669756889343262,\\\"faceAngleY\\\":-13.33719539642334,\\\"faceX\\\":456,\\\"faceY\\\":218,\\\"faceheight\\\":263,\\\"facewidth\\\":279,\\\"fake_face\\\":false,\\\"gender\\\":\\\"-1\\\",\\\"glasses\\\":0,\\\"headSpeed\\\":0,\\\"id\\\":0,\\\"isNewUser\\\":false,\\\"isStaff\\\":false,\\\"latency\\\":37,\\\"mouthmove_score\\\":0.0,\\\"mouthstate\\\":0,\\\"name\\\":\\\"\\\",\\\"other_face\\\":false,\\\"role_id\\\":0,\\\"timestamp\\\":1683700668166,\\\"ukfBodyOmega\\\":0.0,\\\"ukfBodyVel\\\":0.0,\\\"with_body\\\":true,\\\"with_face\\\":true}\"",
"messaage": ""
}