cmvr-es/protos/cmvr/api/humanoid_robot_command.proto
2026-03-17 09:11:29 +08:00

202 lines
3.9 KiB
Protocol Buffer
Raw Permalink 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";
package cmvr.api;
import "cmvr/api/common.proto";
message JointCmd {
string joint_name = 1; // 关节名称
double rad = 2; // 弧度
double vel = 3; // 角速度rad/s
}
message Pose3D{
double x = 1;
double y = 2;
double z = 3;
double rx = 4;
double ry = 5;
double rz = 6;
}
enum RobotCartesian{
X = 0;
Y = 1;
Z = 2;
RX = 3;
RY = 4;
RZ = 5;
} ;
enum RobotJointIndexDirection{
FORWARD = 0;
BACKWARD = 1;
X_POSITIVE = 2; // X轴正向
X_NEGATIVE = 3; // X轴负向
Y_POSITIVE = 4; // Y轴正向
Y_NEGATIVE = 5; // Y轴负向
Z_POSITIVE = 6; // Z轴正向
Z_NEGATIVE = 7; // Z轴负向
ROTATE_X = 8; // 绕X轴旋转
ROTATE_Y = 9; // 绕Y轴旋转
ROTATE_Z = 10; // 绕Z轴旋转
}
// 4x4 齐次变换矩阵
message TransformMatrix4x4 {
double m00 = 1; double m01 = 2; double m02 = 3; double m03 = 4;
double m10 = 5; double m11 = 6; double m12 = 7; double m13 = 8;
double m20 = 9; double m21 = 10; double m22 = 11; double m23 = 12;
double m30 = 13; double m31 = 14; double m32 = 15; double m33 = 16;
}
message MoveJ{
message Request{
CommandHeader.Request header = 1;
repeated JointCmd cmds = 2;
double vel = 3;
double acc = 4;
}
message Response{
CommandHeader.Feedback header= 1;
}
}
message GetPose{
message Request{
CommandHeader.Request header = 1;
string base_link = 2;
string ee_link = 3;
}
message Response{
CommandHeader.Feedback header= 1;
Pose3D pose = 2;
}
}
message MoveL{
message Request{
CommandHeader.Request header = 1;
string ee_link = 2; //连杆名称
Pose3D targetPose = 3;
double vel = 4;
double acc = 5;
}
message Response{
CommandHeader.Feedback header= 1;
}
}
message SpeedJ{
message Request{
CommandHeader.Request header = 1;
string joint_name = 2;
double vel = 3;
double acc = 4;
RobotJointIndexDirection dir = 5;
}
message Response{
CommandHeader.Feedback header= 1;
}
}
message SpeedL{
message Request{
CommandHeader.Request header = 1;
string ee_link = 2;
double vel = 3;
double acc = 4;
RobotJointIndexDirection dir = 5;
RobotCartesian cart = 6;
}
message Response{
CommandHeader.Feedback header= 1;
}
}
// 关节状态消息
message JointState {
repeated string name = 1; // 关节名称
repeated double position = 2; // 关节位置
repeated double velocity = 3; // 可选:关节速度
repeated double effort = 4; // 可选:关节力矩
double timestamp = 5; // 可选:时间戳
}
// 返回消息
message JointResponse {
CommandHeader.Feedback header= 1;
repeated JointState state = 2;
}
// 请求消息(可选)
message JointRequest {
CommandHeader.Request header = 1;
}
message CalibrateZeroQ {
message Request{
CommandHeader.Request header = 1;
string joint_name = 2;
}
message Response{
CommandHeader.Feedback header= 1;
}
}
message ServoJ{
message Request{
CommandHeader.Request header = 1;
repeated JointCmd cmds = 2;
double vel = 3;
}
message Response{
CommandHeader.Feedback header= 1;
}
}
// 获取当前位姿的4x4矩阵
message GetPoseMatrix {
message Request {
CommandHeader.Request header = 1;
string base_link = 2; // 基坐标系
string ee_link = 3; // 末端连杆名称
}
message Response {
CommandHeader.Feedback header = 1;
TransformMatrix4x4 matrix = 2; // 4x4 位姿矩阵
}
}
// 根据关节角度计算正运动学位姿矩阵
message ComputeForwardKinematics {
message Request {
CommandHeader.Request header = 1;
string base_link = 2; // 基坐标系
string ee_link = 3; // 末端连杆名称
repeated JointCmd joints = 4; // 关节角度
}
message Response {
CommandHeader.Feedback header = 1;
TransformMatrix4x4 matrix = 2; // 计算出的4x4位姿矩阵
}
}