7.13 资源管理部分
7.13.1 整体介绍
A2 旗舰款本地资源管理功能共开放六类资源:动作、表情、音频、技能、地图及创作作品。 用户可对上述各类资源执行创建、删除、获取、迁入、迁出等管理操作,以满足机器人能力配置与内容定制需求。详细支持功能请参考资源介绍。
下文将分别对各资源模块及其对应功能进行详细说明。
操作流程:
创建和存储:用户需先将数据放置于 Orin 节点下的临时目录/agibot/data/resources/tmp并通过 RPC 接口触发同步操作。系统将自动识别资源来源,并将其分类持久化至以下目录之一:
- 用户创建资源目录:
/agibot/data/resources/custom - 默认资源目录:
/agibot/data/resources/default
需要注意的是,/agibot/data/resources/tmp 临时目录在机器人重启后将被自动清空(迁出生成的 .gz 文件也属于 tmp 目录内容)请确保重要资源已完成同步与持久化。
获取与维护:系统支持对资源的实时查询,包括资源列表与资源详情信息。同时提供删除接口,便于用户及时清理不再使用的资源,保持资源空间整洁可控。
分发与迁移:支持用户通过 RPC 接口对已创建的资源进行快速迁出与迁入,适用于以下场景:
- 资源快速备份
- 跨设备的批量迁移
- 已配置资源的高效复用
资源介绍:
| 资源类型 | 功能描述 | 创建/删除 | 迁入/迁出 | 获取信息 | 更新 | 展示位置 |
|---|---|---|---|---|---|---|
| 表情 | 头部LED显示的动画 | ✔ | ✔ | ✔ | ✔ | AimMaster → 技能 → 表情 |
| 动作 | 多为举手、比心、点赞等上肢动作 | ✔ | ✔ | ✔ | 仅可修改 resource_name | AimMaster → 技能 → 动作 |
| 音频 | 机器人语音资源 | ✔ | ✖ | ✔ | ✖ | AimMaster → 技能 → 语音 |
| 技能 | 机器人全身舞蹈 | ✖ | ✖ | ✔ | ✖ | AimMaster → 技能 → 才艺 |
| 创作作品 | 通过表情、动作、音频和技能四个模块的协同编排, 可实现复杂且连贯的全身舞蹈或上肢动作表现。 | ✔ | ✔ | ✔ | ✖ | AimMaster → 技能 → 我的创作 |
| 地图 | 机器人导航定位等使用的地图 | ✖ | ✔ | ✔ | ✖ | AimMaster → 地图 |
以上所有资源均保存在orin下,x86仅参与动作资源的创建解析流程,不持久化资源结果。用户可在使用RPC接口时配合AimMaster使用。
7.13.2 部分参数声明
resource_type种类:
RESOURCE_TYPE_MOTION = 1; // 动作
RESOURCE_TYPE_EMOTICON = 2; // 表情
RESOURCE_TYPE_AUDIO = 3; // 音频
RESOURCE_TYPE_SKILL = 6; // 技能
RESOURCE_TYPE_MAP = 7; // 地图
RESOURCE_TYPE_OFFRING_WORK = 8; // 创作作品
xxx_extra_info声明:
//tmp/xxx表示的创建路径为/agibot/data/resources/tmp
//动作资源创建阶段使用x86路径,仅用于解析生成资源
//其余资源创建阶段使用orin路径
//变量后有写明什么情况下可以使用该变量,如注明有创建功能的变量,创建时要加入该变量信息,
//没注明创建功能的变量,在创建时不需要添加
/**
* @brief 表情额外信息
*/
//resource_type=RESOURCE_TYPE_EMOTICON
"emoticon_extra_info" {
"display_name" {
"zh_CN": "右手比心",
"en_US": "Finger heart_right hand",
}, // 显示的中文名和英文名,数据格式为map<string, string> (获取)
"emoticon_file_url": "tmp/e.mp4", // 表情文件URL (创建/获取/更新)tmp/xxx表示的创建路径为orin下的/agibot/data/resources/tmp
"thumbnail_file_url": "tmp/t.mp4", // 缩略图文件URL (创建/获取/更新)
"cover_file_url" = "tmp/1.png", // 封面文件URL (创建/获取/更新)
}
/**
* @brief 动作额外信息
*/
//resource_type=RESOURCE_TYPE_MOTION
//创建的动作资源元数据需要在x86上提供
"motion_extra_info":{
"record_file_path":"/agibot/data/home/agi/测试/点赞右手_长", // 录制文件路径,这是x86下的路径,测试是文件夹名,点赞右手_长是.macp文件名 (仅创建时使用)
"display_name" {
"zh_CN": "右手比心",
"en_US": "Finger heart_right hand",
}, // 显示的中文名和英文名 (获取)
"cover_file_url": "" , // 预览图URL (获取)
"preview_video_url":"" ,// 预览视频URL (获取)
}
/**
* @brief 音频额外信息
*/
//resource_type=RESOURCE_TYPE_AUDIO
"audio_extra_info": {
"audio_file_url" :"" // 音频文件URL (创建/获取)
"display_name" {
"zh_CN": "",
"en_US": "",
}, // 显示的中文名和英文名 (获取)
"cover_file_url":"" ,// 预览图URL (获取)
}
/**
* @brief 创作作品额外信息
*/
//resource_type=RESOURCE_TYPE_OFFRING_WORK
"offring_work_extra_info": {
"cover_file_url": "",//封面文件URL (获取)
"preview_video_url": "",//预览文件URL(获取)
"display_name": {
"display_name_zh": "测试创作作品",
"display_name_en": "Test Creative Work"
},//显示的中文名和英文名 (获取)
"motions": [
{
//当motions的resources内为动作资源时使用normalMotion,当resources内为才艺资源时为WholeBodyDance。下面也有展示
"type": "NormalMotion",
"resources": [
{
"source_type": 1, //1表示SKILL_DETAIL_SOURCE_TYPE_LOCAL_RESOURCE(本地资源) 2表示SKILL_DETAIL_SOURCE_TYPE_SKILL_PACKAGE_RESOURCE(技能包自带资源)
"path": "/agibot/data/resources/custom/motion/摆拍_我是大力士/摆拍_我是大力士.mcap"//orin下的资源文件路径
}
]
}
],
"emoticons": [
{
"resources": [
{
"source_type": 1,
"path": "/agibot/data/resources/custom/emoticon/emoticon_guiding/emoticon.mp4"
}
]
}
],
"audios": [
{
"resources": [
{
"source_type": 1,
"path": "/agibot/data/resources/custom/audio/测试/test.wav"
}
]
}
],
}
/**
* @brief 创作作品额外信息
*/
//resource_type=RESOURCE_TYPE_OFFRING_WORK
"offring_work_extra_info": {
"cover_file_url": "",
"preview_video_url": "",
"display_name": {
"display_name_zh": "测试创作作品",
"display_name_en": "Test Creative Work"
},
"motions": [
{
//motions内为才艺资源时,参考以下示例
"type": "WholeBodyDance",
"resources": [
{
"source_type": 1,
"path": "加速时刻"
}
]
}
],
"emoticons": [
{
"resources": [
{
"source_type": 1,
"path": "/agibot/data/resources/custom/emoticon/emoticon_guiding/emoticon.mp4"
}
]
}
],
"audios": [
{
"resources": [
{
"source_type": 1,
"path": "/agibot/data/resources/custom/audio/测试/test.wav"
}
]
}
],
}
/**
* @brief 地图额外信息
*/
//resource_type=RESOURCE_TYPE_MAP
"map_extra_info": {
"map_info": {
"index": 2,
"map_path": "/agibot/data/var/MapManagerModule/1762584133656/",
"width": 1216.0, //地图宽高,单位为像素
"height": 1262.0,
"resolution": 20.0, //每个像素代表的实际距离,单位毫米
"origin": {
"u": 524, //世界坐标原点在地图的列索引
"v": 594 //世界坐标原点在地图的行索引
}
},
"topology_info": [ //拓扑信息,主要保存机器人导航点信息,对应AimMaster → 地图 → 点位功能设置的内容
{
"topo_msg": {
"cur_path_id": 0,
"cur_point_id": 1,
"cur_region_id": 0,
"hr_points": null,
"navi_points": [
{
"id": 1,
"name": "导航点1",
"pose": {
"x": 7.85, //单位米
"y": -2.15,
"theta": -2.503741636798901 //单位弧度
},
"type": 1
}
],
"paths": null,
"qr_points": null,
"regions": null,
"rotate_angle": 6.001279822735171,
"user_name": "",
"user_sn": 0
},
"user_name": ""
}
]
},
7.13.3 创建资源
| 接口名 | pb:/aimdk.protocol.ResourceService/CreateResource |
|---|---|
| 功能概述 | 创建资源 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/CreateResource |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/CreateResource.py |
| 备注 |
|
7.13.4 删除资源
| 接口名 | pb:/aimdk.protocol.ResourceService/DeleteResource |
|---|---|
| 功能概述 | 删除某个资源 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/DeleteResource |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/DeleteResource.py |
| 备注 |
|
7.13.5 表情资源更新
| 接口名 | pb:/aimdk.protocol.ResourceService/UpdateResource |
|---|---|
| 功能概述 | 更新资源 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/UpdateResource |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/UpdateResource.py |
| 备注 |
7.13.6 获取资源列表
| 接口名 | pb:/aimdk.protocol.ResourceService/GetResourceList |
|---|---|
| 功能概述 | 获取资源列表 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/GetResourceList |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/GetResourceList.py |
| 备注 |
7.13.7 获取单个资源信息
| 接口名 | pb:/aimdk.protocol.ResourceService/GetResource |
|---|---|
| 功能概述 | 获取某个资源信息 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/GetResource |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/GetResource.py |
| 备注 |
7.13.8 资源迁出
| 接口名 | pb:/aimdk.protocol.ResourceService/ResourceMigrationOut |
|---|---|
| 功能概述 | 资源迁出 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/ResourceMigrationOut |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/ResourceMigrationOut.py |
| 备注 |
7.13.9 资源迁入
| 接口名 | pb:/aimdk.protocol.ResourceService/ResourceMigrationIn |
|---|---|
| 功能概述 | 资源迁入 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/ResourceMigrationIn |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/ResourceMigrationIn.py |
| 备注 |
7.13.10 迁移状态
| 接口名 | pb:/aimdk.protocol.ResourceService/GetResourceMigrationTaskStatus |
|---|---|
| 功能概述 | 资源迁移状态 |
| 接口类型 | HTTP JSON RPC |
| URL | http://192.168.100.110:51049/rpc/aimdk.protocol.ResourceService/GetResourceMigrationTaskStatus |
| 入参 |
|
| 出参 |
|
| 示例脚本 | examples/resource_manager/GetResourceMigrationTaskStatus.py |
| 备注 |