syntax = "proto3"; import "cmvr/api/common.proto"; package cmvr.api; // 自由度值(用于设置指令) message FreedomValue { string id = 1; // 自由度id,可选值: // little_finger(小拇指)、 // ring_finger(无名指)、 // middle_finger(中指)、 // index_finger(食指)、 // thumb_bend(大拇指弯曲)、 // thumb_rotate(大拇指旋转) float value = 2; // 值 0-1百分比(对应实际物理量的比例) } // 自由度状态(用于获取状态指令的返回) message FreedomState { string dof_id = 1; // 自由度id,与FreedomValue.id一致,可选值: // little_finger(小拇指)、 // ring_finger(无名指)、 // middle_finger(中指)、 // index_finger(食指)、 // thumb_bend(大拇指弯曲)、 // thumb_rotate(大拇指旋转) int32 angle = 2; // 自由度当前角度 int32 speed = 3; // 自由度当前速度 int32 force = 4; // 实际受力 int32 position = 5; // 执行器当前位置 int32 current = 6; // 执行器实际电流 int32 temperature = 7; // 执行器温度 int32 error = 8; // 执行器故障码(0表示无故障,非0对应具体故障) repeated string error_message = 9; // 错误消息列表(详细描述故障原因) } // 传感器数据 message SensorData { // 手指类型(掌心作为特殊类型) enum FingerType { PINKY = 0; // 小拇指 RING = 1; // 无名指 MIDDLE_FINGER = 2; // 中指(避免与PartType冲突) INDEX = 3; // 食指 THUMB = 4; // 大拇指 PALM = 5; // 掌心 } // 部位类型(区分手指的不同部位) enum PartType { TIP = 0; // 指端(指尖最前端) FINGER = 1; // 指节(手指中段) PAD = 2; // 指腹(手指接触物体的面) THUMB_MIDDLE = 3; // 大拇指指中(仅大拇指特有部位) PALM_PAD = 4; // 掌心部位(掌心接触区域) } FingerType finger_type = 4; // 所属手指(或掌心) PartType part_type = 5; // 所属部位 string sensor_name = 6; // 传感器名称(如"little_finger_tip",便于调试) // 传感器单行数据 message RowData { repeated int32 values = 1 [packed = true]; // 单行传感器数据(原始采样值) } repeated RowData data = 1; // 二维传感器数据(按行列组织) int32 rows = 2; // 数据行数(传感器阵列行数) int32 cols = 3; // 数据列数(传感器阵列列数) } // 灵巧手整体状态 message DexHandState { bool is_initialized = 1; // 设备是否初始化完成(true:已就绪,false:未就绪) repeated FreedomState hands = 2; // 所有自由度的状态列表(与FreedomValue.id一一对应) } // 获取灵巧手状态指令 message GetDexHandStateCommand { message Request { CommandHeader.Request header = 1; // 通用请求头(包含设备ID等) } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头(包含成功状态、时间戳等) DexHandState state = 2; // 灵巧手状态数据 } } // 设置灵巧手位置指令 message SetDexHandPositionsCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 repeated FreedomValue values = 2; // 待设置的位置参数(百分比) } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头(反馈设置结果) } } // 设置灵巧手角度指令 message SetDexHandAnglesCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 repeated FreedomValue values = 2; // 待设置的角度参数(百分比) } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头 } } // 设置灵巧手力值指令 message SetDexHandForceCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 repeated FreedomValue values = 2; // 待设置的力值参数(百分比) } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头 } } // 设置灵巧手速度指令 message SetDexHandSpeedCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 repeated FreedomValue values = 2; // 待设置的速度参数(百分比) } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头 } } // 设置灵巧手预设动作指令 message SetDexHandPresetActCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 int32 presetActId = 2; // 预设动作ID(如0:握拳,1:伸开等) } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头 } } // 获取传感器数据指令(单次) message GetSensorDataCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头 repeated SensorData sensor = 2; // 所有传感器的实时数据 } } // 获取传感器数据指令(流模式) message GetSensorDataStreamCommand { message Request { CommandHeader.Request header = 1; // 通用请求头 } message Feedback { CommandHeader.Feedback header = 1; // 通用响应头 repeated SensorData sensor = 2; // 流式返回的传感器数据 } }