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

基础场景

简介

基础场景是RobotOS提供的功能组件,指包含一系列功能策略的场景功能,使用场景Api可以快速实现譬如引领,注册等基础能力,运行过程中的功能状态通过回调函数告知调用侧,开发者可以根据业务需求参与决策。

引领

场景介绍:

引领是方便用户二次开发而实现的一个简单的业务场景,内部集成了人脸识别和导航,可在导航中持续识别引领目标,并可实时上报引领目标的状态,用户二次开发时可根据上报的状态进行处理,更快的实现自身业务需求

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

注意:此API目前仅支持带有后置摄像头的豹小秘,其它机器人请使用navigation实现类似功能

开始引领

方法名称:startLead

调用方式

LeadingParams params = new LeadingParams();
//引领目标人id
params.setPersonId(personId);
//引领目的地
params.setDestinationName(dest);
//引领目标找不到多久后上报丢失状态
params.setLostTimer(lostTime);
//引领开始多久后开启人脸识别
params.setDetectDelay(delayTime);
//引领目标距离机器人多远后上报超距状态
params.setMaxDistance(maxDistance);
RobotApi.getInstance().startLead(reqId, params, new ActionListener() {
    @Override
    public void onResult(int status, String responseString) throws RemoteException {
        switch (status) {
            case Definition.RESULT_OK:
                //成功将目标引领到目的地
                break;
            case Definition.ACTION_RESPONSE_STOP_SUCCESS:
                //在引领执行中,主动调用stopLead,成功停止引领
                break;
            default:
                break;
        }
    }
    @Override
    public void onError(int errorCode, String errorString) throws RemoteException {
        switch (errorCode) {
            case Definition.ERROR_NOT_ESTIMATE:
                //当前未定位
                break;
            case Definition.ERROR_SET_TRACK_FAILED:
            case Definition.ERROR_TARGET_NOT_FOUND:
                //引领目标未找到
                break;
            case Definition.ERROR_IN_DESTINATION:
                //当前已经在引领目的地
                break;
            case Definition.ERROR_DESTINATION_CAN_NOT_ARRAIVE:
                //避障超时,默认为机器人20s的前进距离不足0.1m,
                break;
            case Definition.ERROR_DESTINATION_NOT_EXIST:
                //引领目的地不存在
                break;
            case Definition.ERROR_HEAD:
                //引领中操作头部云台失败
                break;
            case Definition.ACTION_RESPONSE_ALREADY_RUN:
                //引领已经在进行中,请先停止上次引领,才能重新执行
                break;
            case Definition.ACTION_RESPONSE_REQUEST_RES_ERROR:
                //已经有需要控制底盘的接口调用,请先停止,才能继续调用
                break;
            default:
                break;
        }
    }
    @Override
    public void onStatusUpdate(int status, String data) throws RemoteException {
        switch (status) {
            case Definition.STATUS_NAVI_OUT_MAP:
                //目标点不能到达,引领目的地在地图外,有可能为地图与位置点不匹配,请重新设置位置点
                break;
            case Definition.STATUS_NAVI_AVOID:
                //当前引领路线已被障碍物堵死
                break;
            case Definition.STATUS_NAVI_AVOID_END:
                //障碍物已移除
                break;
            case Definition.STATUS_GUEST_FARAWAY:
                //引领目标距离机器人太远,判断标准通过参数maxDistance设置
                break;
            case Definition.STATUS_DEST_NEAR:
                //引领目标进入机器人maxDistance范围内
                break;
            case Definition.STATUS_LEAD_NORMAL:
                //正式开始导航
                break;
            default:
                break;
        }
    }
});

结束引领

方法名称:stopLead

调用方式:

RobotApi.getInstance().stopLead(reqId, isResetHW);

参数:

  • isResetHW: 引领时会切换摄像头到后置摄像头,isResetHW是用于设置停止引领时是否恢复摄像头状态,true:恢复摄像头为前置,false : 保持停止时的状态

焦点跟随

场景介绍:

焦点跟随会根据用户指定的人脸id,持续识别并跟踪,头部云台会持续跟着目标转动,底盘也会跟着联动,直到目标静止,机器人正对目标。

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

开启焦点跟随

方法名称:startFocusFollow

注1:此方法使用时会占用底盘资源,不可同时执行任何底盘操作,包括导航。

注2:不要反复调用此方法来跟踪同一个人,只需要在跟随丢失或主动停止跟随后,再次启动startFocusFollow。

调用方式:

RobotApi.getInstance().startFocusFollow(reqId, faceId, lostTimeout, maxDistance, new ActionListener() {
    @Override
    public void onStatusUpdate(int status, String data) {
        switch (status) {
            case Definition.STATUS_TRACK_TARGET_SUCCEED:
                //跟随目标成功
                break;
            case Definition.STATUS_GUEST_LOST:
                //跟随目标丢失
                break;
            case Definition.STATUS_GUEST_FARAWAY:
                //跟随目标距离已大于设置的最大距离
                break;
            case Definition.STATUS_GUEST_APPEAR:
                //跟随目标重新进入设置的最大距离内
                break;
        }
    }
    @Override public void onError(int errorCode, String errorString) {
        switch (errorCode) {
            case Definition.ERROR_SET_TRACK_FAILED:
            case Definition.ERROR_TARGET_NOT_FOUND:
                //跟随目标未找到
                break;
            case Definition.ACTION_RESPONSE_ALREADY_RUN:
                //正在跟随中,请先停止上次跟随,才能重新执行
                break;
            case Definition.ACTION_RESPONSE_REQUEST_RES_ERROR:
                //已经有需要控制底盘的接口调用(例如:引领、导航),请先停止,才能继续调用
                break;
        }
    }
    @Override public void onResult(int status, String responseString) {
        Log.d(TAG, "startTrackPerson onResult status: " + status);
        switch (status) {
            case Definition.ACTION_RESPONSE_STOP_SUCCESS:
                //在焦点跟随过程中,主动调用stopFocusFollow,成功停止跟随
                break;
        }
    }
});

参数

  • faceId:焦点跟随的目标人脸id。
  • lostTimeout:多久识别不到目标上报目标丢失状态,一般填5-10秒。
  • maxDistance:目标距离多远上报超距状态,一般填5米。

停止焦点跟随

方法名称:stopFocusFollow

调用方式:

RobotApi.getInstance().stopFocusFollow(reqId);

唤醒

场景介绍:

唤醒场景指机器人根据唤醒词呼唤的声源方位,控制机器人转动到用户角度。
小秘策略:当角度小于45度时,只转动头部云台,大于45度时,头部云台及底盘均会转动,以最快的速度转动到声源定位的目标角度
mini策略:根据声源方位,转动底盘到声源方位

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

声源定位

每次唤醒机器人时,可以获取到唤醒时唤醒人和机器人之间的夹角,这个夹角叫声源定位角度。在ModuleCallback的onSendRequest回调获得,reqType为Definition.REQ_SPEECH_WAKEUP时,reqParams为声源定位的角度。它是唤醒API的传入参数。

开始唤醒

方法名称:wakeUp

调用方式:

RobotApi.getInstance().wakeUp(reqId, angle, new ActionListener() {
    @Override
    public void onResult(int status, String responseString) throws RemoteException {
        switch (status) {
            case Definition.RESULT_OK:
                //唤醒完成
                break;
            case Definition.ACTION_RESPONSE_STOP_SUCCESS:
                //在唤醒过程中,主动调用stopWakeUp,停止唤醒
                break;
        }
    }
    @Override public void onError(int errorCode, String errorString) throws RemoteException {
        switch (errorCode) {
            case Definition.ERROR_MOVE_HEAD_FAILED:
                //头部云台移动失败
                break;
            case Definition.ACTION_RESPONSE_ALREADY_RUN:
                //当前正在唤醒中,需要先停止上次唤醒
                break;
            case Definition.ACTION_RESPONSE_REQUEST_RES_ERROR:
                //已经有需要控制底盘的接口调用(例如:引领、导航等),请先停止,才能继续调用
            break;
        }
    }
});

参数:

angle:声源定位角度

停止唤醒

方法名称:stopWakeUp

调用方式:

RobotApi.getInstance().stopWakeUp(reqId);

这篇文章是否有帮助?

0