cmvr-es/protos/cmvr/api/dexhand_command.proto
2025-10-21 10:32:18 +08:00

172 lines
6.2 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; // 流式返回的传感器数据
}
}