1. 编写⽬的
指导⽤户完成AIBot机器⼈套件开发。
2. 准备⼯作
准备好以下物件:
- AIBot超脑机器⼈套件
包含开发模组、电源线、WiFi及蓝⽛天线 - USB TypeC数据线
- 显⽰器⼀台,及HDMI视频线
- 键盘及⿏标
- 外界USB摄像头及USB⻨克⻛
⽤于连接开发板进⾏视频及⾳频数据采集 - 开发PC

3. 系统配置
开发模组⾃带Ubuntu®系统,接通电源与显⽰器后即可进⼊系统界⾯。
默认⽤户账号:iflytek,密码:iflytek。
系统默认已安装ROS2开发环境。
注意:系统需要连接⽹络后⽅可使⽤语⾳交互、IoT登录及视频监控等在线功能︔
4. SDK介绍
- client节点
⽤于demo展⽰,开发者可根据此节点中的实例代码,熟悉如何与其他各功能节点进⾏通信; - launcher节点
⽤于初始化时,拉起其他各节点,以及传输各节点所需的初始化参数,⽐如APPID等; - ⾳频采集节点
⽤于采集⾳频数据并发送给其他节点; - 摄像头采集节点
⽤于采集视频数据并发送给其他节点; - 降噪及唤醒节点
⽤于语⾳降噪和进⾏唤醒识别,发送降噪后的⾳频及唤醒消息; - AIUI节点
⽤于语⾳识别与交互; - CV节点
⽤于视觉识别功能,如⼿势识别、⼈脸识别、物体检测等; - IoT节点
⽤于连接IoT平台,上传设备状态信息及获取平台下发的控制命令发送给⽤户等; - XRTC节点
⽤于视频推流到平台进⾏远程监控; - 配置⽂件
⽤于初始化的⼀些参数配置与⽇志配置; - 依赖库及资源
运⾏语⾳交互及CV能⼒需要依赖的基础库与模型⽂件;
5. 申请授权
开发套件SDK中包含的AIUI交互、CV识别等能⼒,均需授权后⽅可使⽤。
授权方法:提供APPID三元组,设备量、使⽤时间,给讯飞技术⽀持︔
6. 开发调试
6.1 系统架构
6.2 配置管理
各功能节点使⽤统⼀的配置⽂件⽤于配置管理;
配置⽂件的主要功能包括:
- 指定初始化需要启动的节点
- 指定各节点初始化需要的参数,⽐如APPID三元组、设备唯⼀码、⼯作⽬录(⽤于存放模型资源及引擎依赖库、保存⽇志等等)
- 设置⽇志输出格式
配置⽂件参考格式如下:
6.3 通信协议
通过ROS标准化接⼝来与SDK内各节点进⾏数据通信;
通信协议请参考标准化协议接⼝;
6.4 运⾏流程
下图简单描述了开发者如何与各节点通信的⼤致流程:
6.5 初始化
开发者通过与launcher节点通信来进⾏初始化;
初始化过程包含以下步骤:
- 设置SDK运⾏的⼀些必需参数,⽐如APP三元组、IoT账号以及设备唯一码(UID);
- 指定配置⽂件路径(用于设置框架库运行的一些功能参数)与⼯作⽬录(用于存放授权缓存文件、依赖引擎库和模型资源);
- 调⽤/r_launcher/init服务,传⼊上述参数,并等待launcher节点响应成功;
完成上述步骤后,即可正常使⽤语⾳交互操作以及⼿势识别等功能;
6.6 语⾳交互
语⾳交互功能主要由audio_capture节点、vtn节点和aiui节点和负责,⼤致流程如下:
- audio_capture节点负责采集原始⾳频数据,并抛出原始音频数据;
- vtn节点收到原始⾳频数据后,进⾏降噪和回声消除,并发布
/r_vtn/iataudio
话题来抛出降噪后的⾳频;同时将处理后的音频送⼊唤醒引擎进⾏处理,如果识别到用户说了唤醒词,则发布/r_vtn/event
话题,抛出唤醒结果; - aiui节点收到唤醒结果后,开始接收降噪后的⾳频进⾏在线识别,并通过
/r_aiui/result
话题抛出识
别结果与语义结果等; - 开发者收到识别语义结果后进⾏后续处理;
6.7 视觉交互
视觉交互功能主要由camera节点、和cv节点和负责,⼤致流程如下:
- camera节点负责采集原始视频数据,并发送
/ucar_camera/image_raw
话题来抛出原始视频数据; - cv节点收到视频数据,送⼊引擎进⾏处理,并通过
/r_cv/result
话题抛出处理结果; - 开发者收到处理结果后进⾏后续处理;
6.8 IoT控制
IoT控制主要由iot节点负责,⼤致流程如下:
- ⽤户通过机器⼈超脑平台发送控制命令,iot节点收到请求后,通过/r_iot/result抛出对应的命令;
- 开发者收到控制命令,进⾏后续处理,⽐如运动控制、建图等;
6.9 视频监控
视频监控主要由xrtc节点负责,⼤致流程如下:
- 开发者通过调⽤/r_xrtc/room服务进⼊房间或者退出房间,进⼊房间后即可开始推流,退出房间即可断
开推流; - ⽤户通过机器⼈超脑平台进⼊对应的房间来观看监控视频;
6.10 ⽇志输出
各节点的运⾏⽇志均通过ROS标准的⽇志系统输出,可直接统⼀进⾏开关或者保存;
配置⽂件中的⽇志模块,可以分别对各节点单独进⾏⽇志输出的等级、格式设置,参⻅6.2⼩节;
6.11 异常处理
各节点在发⽣异常报错时,均会通过对应的/node_name/error话题抛出;
开发者收到错误话题后,可根据错误描述进⾏后续的处理,⽐如重启节点或者提⽰⽤户;