syntax = "proto3"; import "cmvr/api/common.proto"; package cmvr.api; message FreedomValue { int32 id = 1; // 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转 float value = 2; // 值 0-1百分比 } message RH56DFTPDexHand { int32 dof_id = 1; // 自由度ID,唯一标识不同的关节或自由度 int32 angle = 2; // 自由度角度 int32 speed = 3; // 自由度速度 int32 force = 4; // 实际受力 int32 position = 5; // 执行器位置 int32 current = 6; // 执行器实际电流 int32 temperature = 7; // 执行器温度 int32 error = 8; // 执行器故障信息 repeated string error_message = 9; // 错误消息列表 } // 传感器数据 // 传感器数据 message SensorData { // 手指类型(掌心作为特殊类型) enum FingerType { PINKY = 0; // 小拇指 RING = 1; // 无名指 MIDDLE_FINGER = 2; // 中指(避免与PartType.MIDDLE冲突) INDEX = 3; // 食指 THUMB = 4; // 大拇指 PALM = 5; // 掌心 } // 部位类型(指中改为THUMB_MIDDLE以避免冲突) enum PartType { TIP = 0; // 指端 FINGER = 1; // 指尖 PAD = 2; // 指腹 THUMB_MIDDLE = 3; // 大拇指指中(仅大拇指有) PALM_PAD = 4; // 掌心部位(对应PalmTactileData) } FingerType finger_type = 4; // 手指类型(掌心使用PALM) PartType part_type = 5; // 部位类型 string sensor_name = 6; // 传感器名称(如"小拇指指端") message RowData { repeated int32 values = 1 [packed = true]; // 一维数组,存放每行的浮点数值 } repeated RowData data = 1; // 二维数组,每行数据是 RowData 类型 int32 rows = 2; // 行 int32 cols = 3; // 列 } message DexHandState { bool is_initialized = 1; // 是否初始化 repeated RH56DFTPDexHand hands = 2; // 包含多个自由度状态 } message GetDexHandStateCommand { message Request { CommandHeader.Request header = 1; } 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; } 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;//所有传感器的数据 } }