7.13 资源管理部分
7.13.1 整体介绍
Section titled “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 部分参数声明
Section titled “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 创建资源
Section titled “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 删除资源
Section titled “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 表情资源更新
Section titled “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 获取资源列表
Section titled “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 获取单个资源信息
Section titled “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 资源迁出
Section titled “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 资源迁入
Section titled “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 迁移状态
Section titled “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 |
| 备注 |