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; // 已停止的进程列表 } } message SpeakStart { message Request { CommandHeader.Request header = 1; // 通用命令头 } message Feedback { CommandHeader.Feedback header = 1; // 通用反馈头 } } message SpeakStop { message Request { CommandHeader.Request header = 1; // 通用命令头 } message Feedback { CommandHeader.Feedback header = 1; // 通用反馈头 } } // 表情控制 - 高兴 message Happy { message Request { CommandHeader.Request header = 1; // 通用命令头 } message Feedback { CommandHeader.Feedback header = 1; // 通用反馈头 } } // 表情控制 - 惊讶 message Surprise { message Request { CommandHeader.Request header = 1; // 通用命令头 } message Feedback { CommandHeader.Feedback header = 1; // 通用反馈头 } } message ExpressionTired { message Request { CommandHeader.Request header = 1; } message Feedback { CommandHeader.Feedback header = 1; } }