cmvr-es/protos/cmvr/api/dexhand_command.proto

172 lines
6.2 KiB
Protocol Buffer
Raw Normal View History

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