178 lines
5.5 KiB
Protocol Buffer
178 lines
5.5 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
import "cmvr/api/common.proto"; // 导入通用命令头定义,确保与其他服务接口一致
|
||
|
||
package cmvr.api;
|
||
|
||
/**
|
||
* 面部表情控制参数定义
|
||
* 包含生物头部机器人面部各部位的运动参数,用于精确控制面部表情
|
||
*/
|
||
message FacialExpression {
|
||
/**
|
||
* 眉毛控制参数
|
||
* 左右眉毛的内外侧垂直位置(0.0-1.0标准化值)
|
||
*/
|
||
message Eyebrow {
|
||
float left_outside_y = 1; // 左眉外侧垂直位置
|
||
float left_inside_y = 2; // 左眉内侧垂直位置
|
||
float right_outside_y = 3; // 右眉外侧垂直位置
|
||
float right_inside_y = 4; // 右眉内侧垂直位置
|
||
}
|
||
Eyebrow eyebrow = 3; // 眉毛参数封装
|
||
|
||
/**
|
||
* 眼睑控制参数
|
||
* 左右眼睑的上下位置(0.0-1.0标准化值)
|
||
*/
|
||
message Eyelid {
|
||
float left_upper_y = 1; // 左上眼睑垂直位置
|
||
float left_lower_y = 2; // 左下眼睑垂直位置
|
||
float right_upper_y = 3; // 右上眼睑垂直位置
|
||
float right_lower_y = 4; // 右下眼睑垂直位置
|
||
}
|
||
Eyelid eyelid = 4; // 眼睑参数封装
|
||
|
||
/**
|
||
* 眼球控制参数
|
||
* 左右眼球的二维坐标(-1.0到1.0标准化值,中心为0)
|
||
*/
|
||
message Eyeball {
|
||
float left_x = 1; // 左眼球水平位置
|
||
float left_y = 2; // 左眼球垂直位置
|
||
float right_x = 3; // 右眼球水平位置
|
||
float right_y = 4; // 右眼球垂直位置
|
||
}
|
||
Eyeball eyeball = 5; // 眼球参数封装
|
||
|
||
/**
|
||
* 鼻子控制参数
|
||
* 鼻子左右侧的垂直位置(0.0-1.0标准化值)
|
||
*/
|
||
message Nose {
|
||
float left_y = 1; // 鼻子左侧垂直位置
|
||
float right_y = 2; // 鼻子右侧垂直位置
|
||
}
|
||
Nose nose = 6; // 鼻子参数封装
|
||
|
||
/**
|
||
* 嘴巴控制参数
|
||
* 包含嘴唇整体位置和左右唇角细节
|
||
*/
|
||
message Mouth {
|
||
float upper_lip_y = 1; // 上唇垂直位置
|
||
float upper_lip_z = 2; // 上唇前后位置(Z轴)
|
||
float lower_lip_y = 3; // 下唇垂直位置
|
||
float lower_lip_z = 4; // 下唇前后位置(Z轴)
|
||
|
||
/**
|
||
* 左唇角控制参数
|
||
* 包含上唇、唇角、下唇的坐标点
|
||
*/
|
||
message LeftLip {
|
||
float upper_x = 1; // 左上唇水平位置
|
||
float upper_y = 2; // 左上唇垂直位置
|
||
float corner_x = 3; // 左唇角水平位置
|
||
float corner_y = 4; // 左唇角垂直位置
|
||
float lower_x = 5; // 左下唇水平位置
|
||
float lower_y = 6; // 左下唇垂直位置
|
||
}
|
||
LeftLip left_lip = 5; // 左唇角参数封装
|
||
|
||
/**
|
||
* 右唇角控制参数
|
||
* 结构与左唇角对称
|
||
*/
|
||
message RightLip {
|
||
float upper_x = 1; // 右上唇水平位置
|
||
float upper_y = 2; // 右上唇垂直位置
|
||
float corner_x = 3; // 右唇角水平位置
|
||
float corner_y = 4; // 右唇角垂直位置
|
||
float lower_x = 5; // 右下唇水平位置
|
||
float lower_y = 6; // 右下唇垂直位置
|
||
}
|
||
RightLip right_lip = 6; // 右唇角参数封装
|
||
}
|
||
Mouth mouth = 7; // 嘴巴参数封装
|
||
|
||
/**
|
||
* 下巴控制参数
|
||
* 下巴的二维移动坐标(X/Y轴)
|
||
*/
|
||
message Jaw {
|
||
float x = 1; // 下巴水平位置
|
||
float y = 2; // 下巴垂直位置
|
||
}
|
||
Jaw jaw = 8; // 下巴参数封装
|
||
}
|
||
|
||
/**
|
||
* 设置面部表情命令(集成通用命令头)
|
||
* 用于单次设置生物头部的面部表情
|
||
*/
|
||
message SetFacialExpression {
|
||
message Request {
|
||
CommandHeader.Request header = 1; // 通用命令头,包含设备ID和时间戳
|
||
FacialExpression expression = 2; // 具体面部表情参数
|
||
}
|
||
|
||
message Feedback {
|
||
CommandHeader.Feedback header = 1; // 通用反馈头,包含操作状态和时间戳
|
||
string execution_id = 2; // 表情执行任务ID
|
||
float execution_time_ms = 3; // 表情执行耗时(毫秒)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 流式面部表情命令(集成通用命令头)
|
||
* 用于连续发送多个面部表情,实现表情动画效果
|
||
*/
|
||
message StreamFacialExpression {
|
||
message Request {
|
||
CommandHeader.Request header = 1; // 通用命令头
|
||
FacialExpression expr = 2; // 执行
|
||
bool eof = 3; // 标记是否为流结束
|
||
}
|
||
|
||
message Feedback {
|
||
CommandHeader.Feedback header = 1; // 通用反馈头
|
||
FacialExpression expr_diff = 2; // 执行误差
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取生物头部状态命令(集成通用命令头)
|
||
* 用于查询当前头部各部位的状态和位置
|
||
*/
|
||
message GetStatus {
|
||
message Request {
|
||
CommandHeader.Request header = 1; // 通用命令头
|
||
}
|
||
|
||
message Feedback {
|
||
CommandHeader.Feedback header = 1; // 通用反馈头
|
||
bool is_moving = 2; // 是否有部位在移动
|
||
string last_request_id = 3; // 上一次请求的ID
|
||
repeated float current_positions = 4; // 当前各部位位置参数
|
||
bool camera_recording = 5; // 相机是否在录制
|
||
string active_recording_id = 6; // 活跃录制任务的ID
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 紧急停止命令(集成通用命令头)
|
||
* 用于立即停止所有面部动作
|
||
*/
|
||
message EmergencyStop {
|
||
message Request {
|
||
CommandHeader.Request header = 1; // 通用命令头
|
||
}
|
||
|
||
message Feedback {
|
||
CommandHeader.Feedback header = 1; // 通用反馈头
|
||
string stopped_processes = 2; // 已停止的进程列表
|
||
}
|
||
}
|
||
|
||
|