From 891529a095db73c467419fcdc8aa1fab9e136061 Mon Sep 17 00:00:00 2001 From: linbo <1034003879@qq.com> Date: Tue, 21 Oct 2025 10:54:48 +0800 Subject: [PATCH] update --- protos/cmvr/api/dexhand_command.proto | 139 +++++++++++++++----------- 1 file changed, 81 insertions(+), 58 deletions(-) diff --git a/protos/cmvr/api/dexhand_command.proto b/protos/cmvr/api/dexhand_command.proto index 9d65a7f..662281f 100644 --- a/protos/cmvr/api/dexhand_command.proto +++ b/protos/cmvr/api/dexhand_command.proto @@ -4,146 +4,169 @@ import "cmvr/api/common.proto"; package cmvr.api; +// 自由度值(用于设置指令) message FreedomValue { - int32 id = 1; // 自由度id 0-6 分别对应六个自由度 小拇指 无名指 中指 食指 大拇指弯曲 大拇指旋转 - float value = 2; // 值 0-1百分比 + string id = 1; // 自由度id,可选值: + // little_finger(小拇指)、 + // ring_finger(无名指)、 + // middle_finger(中指)、 + // index_finger(食指)、 + // thumb_bend(大拇指弯曲)、 + // thumb_rotate(大拇指旋转) + float value = 2; // 值 0-1百分比(对应实际物理量的比例) } +// 自由度状态(用于获取状态指令的返回) message FreedomState { - 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; // 错误消息列表 + string dof_id = 1; // 自由度id,与FreedomValue.id一致,可选值: + // little_finger(小拇指)、 + // ring_finger(无名指)、 + // middle_finger(中指)、 + // index_finger(食指)、 + // thumb_bend(大拇指弯曲)、 + // thumb_rotate(大拇指旋转) + int32 angle = 2; // 自由度当前角度(单位:根据设备定义,如0.1°/单位) + int32 speed = 3; // 自由度当前速度(单位:根据设备定义,如0.1°/s/单位) + int32 force = 4; // 实际受力(单位:根据设备定义,如0.01N/单位) + int32 position = 5; // 执行器当前位置(单位:根据设备定义,如步长/毫米) + int32 current = 6; // 执行器实际电流(单位:根据设备定义,如mA) + 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.MIDDLE冲突) - INDEX = 3; // 食指 - THUMB = 4; // 大拇指 - PALM = 5; // 掌心 + PINKY = 0; // 小拇指 + RING = 1; // 无名指 + MIDDLE_FINGER = 2; // 中指(避免与PartType冲突) + INDEX = 3; // 食指 + THUMB = 4; // 大拇指 + PALM = 5; // 掌心 } - // 部位类型(指中改为THUMB_MIDDLE以避免冲突) + // 部位类型(区分手指的不同部位) enum PartType { - TIP = 0; // 指端 - FINGER = 1; // 指尖 - PAD = 2; // 指腹 - THUMB_MIDDLE = 3; // 大拇指指中(仅大拇指有) - PALM_PAD = 4; // 掌心部位(对应PalmTactileData) + TIP = 0; // 指端(指尖最前端) + FINGER = 1; // 指节(手指中段) + PAD = 2; // 指腹(手指接触物体的面) + THUMB_MIDDLE = 3; // 大拇指指中(仅大拇指特有部位) + PALM_PAD = 4; // 掌心部位(掌心接触区域) } - FingerType finger_type = 4; // 手指类型(掌心使用PALM) - PartType part_type = 5; // 部位类型 - string sensor_name = 6; // 传感器名称(如"小拇指指端") + FingerType finger_type = 4; // 所属手指(或掌心) + PartType part_type = 5; // 所属部位 + string sensor_name = 6; // 传感器名称(如"little_finger_tip",便于调试) + // 传感器单行数据 message RowData { - repeated int32 values = 1 [packed = true]; // 一维数组,存放每行的浮点数值 + repeated int32 values = 1 [packed = true]; // 单行传感器数据(原始采样值) } - repeated RowData data = 1; // 二维数组,每行数据是 RowData 类型 - int32 rows = 2; // 行 - int32 cols = 3; // 列 + repeated RowData data = 1; // 二维传感器数据(按行列组织) + int32 rows = 2; // 数据行数(传感器阵列行数) + int32 cols = 3; // 数据列数(传感器阵列列数) } - +// 灵巧手整体状态 message DexHandState { - bool is_initialized = 1; // 是否初始化 - repeated FreedomState hands = 2; // 包含多个自由度状态 + bool is_initialized = 1; // 设备是否初始化完成(true:已就绪,false:未就绪) + repeated FreedomState hands = 2; // 所有自由度的状态列表(与FreedomValue.id一一对应) } +// 获取灵巧手状态指令 message GetDexHandStateCommand { message Request { - CommandHeader.Request header = 1; + CommandHeader.Request header = 1; // 通用请求头(包含设备ID等) } message Feedback { - CommandHeader.Feedback header = 1; - DexHandState state = 2; + CommandHeader.Feedback header = 1; // 通用响应头(包含成功状态、时间戳等) + DexHandState state = 2; // 灵巧手状态数据 } } +// 设置灵巧手位置指令 message SetDexHandPositionsCommand { message Request { - CommandHeader.Request header = 1; - repeated FreedomValue values = 2; + CommandHeader.Request header = 1; // 通用请求头 + repeated FreedomValue values = 2; // 待设置的位置参数(百分比) } message Feedback { - CommandHeader.Feedback header = 1; + CommandHeader.Feedback header = 1; // 通用响应头(反馈设置结果) } } +// 设置灵巧手角度指令 message SetDexHandAnglesCommand { message Request { - CommandHeader.Request header = 1; - repeated FreedomValue values = 2; + CommandHeader.Request header = 1; // 通用请求头 + repeated FreedomValue values = 2; // 待设置的角度参数(百分比) } message Feedback { - CommandHeader.Feedback header = 1; + CommandHeader.Feedback header = 1; // 通用响应头 } } +// 设置灵巧手力值指令 message SetDexHandForceCommand { message Request { - CommandHeader.Request header = 1; - repeated FreedomValue values = 2; + CommandHeader.Request header = 1; // 通用请求头 + repeated FreedomValue values = 2; // 待设置的力值参数(百分比) } message Feedback { - CommandHeader.Feedback header = 1; + CommandHeader.Feedback header = 1; // 通用响应头 } } +// 设置灵巧手速度指令 message SetDexHandSpeedCommand { message Request { - CommandHeader.Request header = 1; - repeated FreedomValue values = 2; + CommandHeader.Request header = 1; // 通用请求头 + repeated FreedomValue values = 2; // 待设置的速度参数(百分比) } message Feedback { - CommandHeader.Feedback header = 1; + CommandHeader.Feedback header = 1; // 通用响应头 } } +// 设置灵巧手预设动作指令 message SetDexHandPresetActCommand { message Request { - CommandHeader.Request header = 1; - int32 presetActId = 2; + CommandHeader.Request header = 1; // 通用请求头 + int32 presetActId = 2; // 预设动作ID(如0:握拳,1:伸开等) } message Feedback { - CommandHeader.Feedback header = 1; + CommandHeader.Feedback header = 1; // 通用响应头 } } +// 获取传感器数据指令(单次) message GetSensorDataCommand { message Request { - CommandHeader.Request header = 1; + CommandHeader.Request header = 1; // 通用请求头 } message Feedback { - CommandHeader.Feedback header = 1; - repeated SensorData sensor = 2;//所有传感器的数据 + CommandHeader.Feedback header = 1; // 通用响应头 + repeated SensorData sensor = 2; // 所有传感器的实时数据 } } +// 获取传感器数据指令(流模式) message GetSensorDataStreamCommand { message Request { - CommandHeader.Request header = 1; + CommandHeader.Request header = 1; // 通用请求头 } message Feedback { - CommandHeader.Feedback header = 1; - repeated SensorData sensor = 2;//所有传感器的数据 + CommandHeader.Feedback header = 1; // 通用响应头 + repeated SensorData sensor = 2; // 流式返回的传感器数据 } } \ No newline at end of file