solve dependencies problem

This commit is contained in:
2025-09-05 15:49:00 +08:00
parent 12a6b47969
commit 21fbd5a323
114 changed files with 11337 additions and 19 deletions

View File

@@ -0,0 +1,5 @@
# -------------------------------------------------------------
# Protocol: aimdk::protocol::common
# -------------------------------------------------------------
aimrte_protocol()

View File

@@ -0,0 +1,9 @@
# AimDK common 协议
## 简介
本目录放置了所有模块公用、复用的协议内容的定义。
## 检索
- [所有消息、请求、响应都有的 header](./header.proto)

View File

@@ -0,0 +1,95 @@
syntax = "proto3";
package aimdk.protocol;
import "aimdk/protocol/common/timestamp.proto";
/**
*@brief 电池状态
*/
enum PowerSupplyStatus{
PowerSupplyStatus_UNDEFINED = 0;
PowerSupplyStatus_CHARGING = 1;
PowerSupplyStatus_DISCHARGING = 2;
PowerSupplyStatus_NOT_CHARGING = 3;
PowerSupplyStatus_FULL = 4;
}
/**
*@brief 电池健康状态
*/
enum PowerSupplyHealth{
PowerSupplyHealth_UNDEFINED= 0;
PowerSupplyHealth_GOOD = 1;
PowerSupplyHealth_OVERHEAT = 2;
PowerSupplyHealth_DEAD = 3;
PowerSupplyHealth_OVERVOLTAGE = 4;
PowerSupplyHealth_UNSPEC_FAILURE = 5;
PowerSupplyHealth_COLD = 6;
PowerSupplyHealth_WATCHDOG_TIMER_EXPIRE = 7;
PowerSupplyHealth_SAFETY_TIMER_EXPIRE = 8;
}
/**
* @brief 电池技术
*/
enum PowerSupplyTechnology{
PowerSupplyTechnology_UNDEFINED = 0;
PowerSupplyTechnology_NIMH = 1;
PowerSupplyTechnology_LION = 2;
PowerSupplyTechnology_LIPO = 3;
PowerSupplyTechnology_LIFE = 4;
PowerSupplyTechnology_NICD = 5;
PowerSupplyTechnology_LIMN = 6;
}
/**
* @brief 电池状态 对应ROS中的: sensor_msgs/BatteryState.msg
*/
message BatteryState{
// 时间辍
Timestamp timestamp = 1;
// 电池电压
float voltage = 2;
// 电流
float current = 3;
// 电量
float charge = 4;
// 电池容量
float capacity = 5;
// 设计容量
float design_capacity = 6;
// 电池百分比
float percentage = 7;
// 电池状态
PowerSupplyStatus power_supply_status = 8;
// 电池健康状态
PowerSupplyHealth power_supply_health = 9;
// 电池技术
PowerSupplyTechnology power_supply_technology = 10;
// 电池单元电压
repeated float cell_voltage = 11;
// 电池位置
string location = 12;
// 电池序列号
string serial_number = 13;
// 电池功率
float power = 14;
// 电池温度
float temperature = 15;
};

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
/**
* @brief A box in a 2D space.
*/
message Box {
float x1 = 1;
float y1 = 2;
float x2 = 3;
float y2 = 4;
}

View File

@@ -0,0 +1,20 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/timestamp.proto";
import public "aimdk/protocol/common/vec2.proto";
import public "aimdk/protocol/common/vec3.proto";
import public "aimdk/protocol/common/odometry.proto";
import public "aimdk/protocol/common/quaternion.proto";
import public "aimdk/protocol/common/se2_pose.proto";
import public "aimdk/protocol/common/se3_pose.proto";
import public "aimdk/protocol/common/se2_velocity.proto";
import public "aimdk/protocol/common/se3_velocity.proto";
import public "aimdk/protocol/common/se2_acceleration.proto";
import public "aimdk/protocol/common/se3_acceleration.proto";
import public "aimdk/protocol/common/se3_trajectory.proto";
import public "aimdk/protocol/common/wrench.proto";
import public "aimdk/protocol/common/twist.proto";
import public "aimdk/protocol/common/pixel_pose.proto";
import public "aimdk/protocol/common/image.proto";
import public "aimdk/protocol/common/rpc.proto";

View File

@@ -0,0 +1,71 @@
syntax = "proto3";
package aimdk.protocol;
import "aimdk/protocol/common/timestamp.proto";
/**
* @brief 一般消息的 header
*/
message Header {
// sequence ID: consecutively increasing ID
uint32 seq = 1;
// timestamp
Timestamp timestamp = 2;
// Frame this data is associated with
string frame_id = 3;
}
/**
* @brief RPC 请求体的 header
*/
message RequestHeader {
// timestamp
Timestamp timestamp = 1;
}
/**
* @brief RPC 响应体的 header
*/
message ResponseHeader {
// 处理结果
// - 为0: 成功
// - 非0: 失败
uint64 code = 1;
// 处理结果描述
string msg = 2;
// 时间戳
Timestamp timestamp = 3;
}
/**
* @brief 可阻塞的 RPC 请求体的 header
*/
message BlockableRequestHeader {
// 时间戳
Timestamp timestamp = 1;
// 是否阻塞调用(默认 false
bool blocked = 2;
}
message BlockableResponseHeader {
// 处理结果
// - 为0: 成功
// - 非0: 失败
uint64 code = 1;
// 处理结果描述
string msg = 2;
// 时间戳
Timestamp timestamp = 3;
// 请求关联的 rpc id若设置了非阻塞模式该字段可用于调用者向执行者定期查询 rpc 执行情况,
// 该值需由执行者维护并设置,默认为零无效。
uint64 id = 4;
}

View File

@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/header.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from aimdk.protocol.common import timestamp_pb2 as aimdk_dot_protocol_dot_common_dot_timestamp__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"aimdk/protocol/common/header.proto\x12\x0e\x61imdk.protocol\x1a%aimdk/protocol/common/timestamp.proto\"U\n\x06Header\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12,\n\ttimestamp\x18\x02 \x01(\x0b\x32\x19.aimdk.protocol.Timestamp\x12\x10\n\x08\x66rame_id\x18\x03 \x01(\t\"=\n\rRequestHeader\x12,\n\ttimestamp\x18\x01 \x01(\x0b\x32\x19.aimdk.protocol.Timestamp\"Y\n\x0eResponseHeader\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x04\x12\x0b\n\x03msg\x18\x02 \x01(\t\x12,\n\ttimestamp\x18\x03 \x01(\x0b\x32\x19.aimdk.protocol.Timestamp\"W\n\x16\x42lockableRequestHeader\x12,\n\ttimestamp\x18\x01 \x01(\x0b\x32\x19.aimdk.protocol.Timestamp\x12\x0f\n\x07\x62locked\x18\x02 \x01(\x08\"n\n\x17\x42lockableResponseHeader\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x04\x12\x0b\n\x03msg\x18\x02 \x01(\t\x12,\n\ttimestamp\x18\x03 \x01(\x0b\x32\x19.aimdk.protocol.Timestamp\x12\n\n\x02id\x18\x04 \x01(\x04\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.header_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_HEADER']._serialized_start=93
_globals['_HEADER']._serialized_end=178
_globals['_REQUESTHEADER']._serialized_start=180
_globals['_REQUESTHEADER']._serialized_end=241
_globals['_RESPONSEHEADER']._serialized_start=243
_globals['_RESPONSEHEADER']._serialized_end=332
_globals['_BLOCKABLEREQUESTHEADER']._serialized_start=334
_globals['_BLOCKABLEREQUESTHEADER']._serialized_end=421
_globals['_BLOCKABLERESPONSEHEADER']._serialized_start=423
_globals['_BLOCKABLERESPONSEHEADER']._serialized_end=533
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,22 @@
syntax = "proto3";
package aimdk.protocol;
import "aimdk/protocol/common/timestamp.proto";
/**
* @brief 给客户端推送视频流的图像数据格式
*/
message PubImageData {
// 单帧高
int32 height = 1;
// 单帧宽
int32 width = 2;
// 时间戳
Timestamp timestamp = 3;
// 图片数据
bytes image_data = 4;
}

View File

@@ -0,0 +1,100 @@
syntax = "proto3";
package aimdk.protocol;
// 关节信息
message JointState {
/**
* 关节名称
*/
string name = 1;
/**
* 关节消息的序号
*/
uint32 sequence = 2;
/**
* 关节角度,单位:弧度 or m
*/
double position = 3;
/**
* 关节角速度,单位:弧度/秒 or m/s
*/
double velocity = 4;
/**
* 关节扭矩单位N or N*m
*/
double effort = 5;
}
message JointCommand {
/**
* 关节名称
*/
string name = 1;
/**
* 关节消息的序号
*/
uint32 sequence = 2;
/**
* 关节角度,单位:弧度 or m
*/
double position = 3;
/**
* 关节角速度,单位:弧度/秒 or m/s
*/
double velocity = 4;
/**
* 关节扭矩单位N
*/
double effort = 5;
/**
* 阻尼,单位: N·m/rad or N/m
*/
double stiffness = 6;
/**
* 阻尼单位: N·s/m or N·m·s/rad
*/
double damping = 7;
}
message JointParam {
/**
* 关节名称
*/
string name = 1;
/**
* 关节位置上限,单位:弧度或者米
*/
double position_upper_limit = 2;
/**
* 关节位置下限,单位:弧度或者米
*/
double position_lower_limit = 3;
/**
* 关节速度限制,单位:弧度/秒或者米/秒
*/
double velocity_limit = 4;
/**
* 关节加速度限制,单位:弧度/秒^2或者米/秒^2
*/
double acceleration_limit = 5;
/**
* 关节扭矩限制单位N或者N·m
*/
double effort_limit = 6;
}

View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/joint.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!aimdk/protocol/common/joint.proto\x12\x0e\x61imdk.protocol\"`\n\nJointState\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08sequence\x18\x02 \x01(\r\x12\x10\n\x08position\x18\x03 \x01(\x01\x12\x10\n\x08velocity\x18\x04 \x01(\x01\x12\x0e\n\x06\x65\x66\x66ort\x18\x05 \x01(\x01\"\x86\x01\n\x0cJointCommand\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08sequence\x18\x02 \x01(\r\x12\x10\n\x08position\x18\x03 \x01(\x01\x12\x10\n\x08velocity\x18\x04 \x01(\x01\x12\x0e\n\x06\x65\x66\x66ort\x18\x05 \x01(\x01\x12\x11\n\tstiffness\x18\x06 \x01(\x01\x12\x0f\n\x07\x64\x61mping\x18\x07 \x01(\x01\"\xa0\x01\n\nJointParam\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1c\n\x14position_upper_limit\x18\x02 \x01(\x01\x12\x1c\n\x14position_lower_limit\x18\x03 \x01(\x01\x12\x16\n\x0evelocity_limit\x18\x04 \x01(\x01\x12\x1a\n\x12\x61\x63\x63\x65leration_limit\x18\x05 \x01(\x01\x12\x14\n\x0c\x65\x66\x66ort_limit\x18\x06 \x01(\x01\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.joint_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_JOINTSTATE']._serialized_start=53
_globals['_JOINTSTATE']._serialized_end=149
_globals['_JOINTCOMMAND']._serialized_start=152
_globals['_JOINTCOMMAND']._serialized_end=286
_globals['_JOINTPARAM']._serialized_start=289
_globals['_JOINTPARAM']._serialized_end=449
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,17 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/timestamp.proto";
import public "aimdk/protocol/common/se3_pose.proto";
import public "aimdk/protocol/common/twist.proto";
/**
* odometry
*/
message Odometry {
Timestamp timestamp = 1;
string child_frame_id = 2;
SE3Pose pose = 3;
Twist twist = 4;
}

View File

@@ -0,0 +1,31 @@
syntax = "proto3";
package aimdk.protocol;
/**
* @brief 2d 像素坐标
*/
message Pixel {
// 像素横坐标
int32 u = 1;
// 像素纵坐标
int32 v = 2;
}
/**
* @brief 2d 像素位姿
* @note 坐标系示意
* +--------> u
* | - (angle)
* | -
* | *
* v V
*/
message PixelPose {
// 2d 像素坐标
Pixel position = 1;
// 角度从u轴转向v轴的角度单位弧度
double angle = 2;
}

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/se3_pose.proto";
/**
* QR位姿
*/
message QRPose {
int32 qr_code = 1; // 二维码值
SE3Pose pose = 2; // 6D位姿
}

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
/**
* 四元数
*/
message Quaternion {
double x = 1;
double y = 2;
double z = 3;
double w = 4;
}

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/quaternion.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&aimdk/protocol/common/quaternion.proto\x12\x0e\x61imdk.protocol\"8\n\nQuaternion\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\t\n\x01z\x18\x03 \x01(\x01\x12\t\n\x01w\x18\x04 \x01(\x01\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.quaternion_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_QUATERNION']._serialized_start=58
_globals['_QUATERNION']._serialized_end=114
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,54 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/timestamp.proto";
import public "aimdk/protocol/common/header.proto";
/**
* 状态定义
*/
enum CommonState {
CommonState_UNKNOWN = 0; // 未知
CommonState_SUCCESS = 1; // 成功
CommonState_FAILURE = 2; // 失败
CommonState_ABORTED = 3; // 中止
CommonState_TIMEOUT = 4; // 超时
CommonState_INVALID = 5; // 无效
CommonState_IN_MANUAL = 6; // 手动
CommonState_NOT_READY = 100; // 未就绪
CommonState_PENDING = 200; // 等待中
CommonState_CREATED = 300; // 已创建
CommonState_RUNNING = 400; // 运行中
}
/**
* 通用请求类型
*/
message CommonRequest {
RequestHeader header = 1;
}
/**
* 通用返回类型
*/
message CommonResponse {
ResponseHeader header = 1;
CommonState state = 2;
}
/**
* 通用Task请求类型
*/
message CommonTaskRequest {
RequestHeader header = 1;
uint64 task_id = 2;
}
/**
* 通用Task返回类型
*/
message CommonTaskResponse {
ResponseHeader header = 1;
uint64 task_id = 2;
CommonState state = 3;
}

View File

@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/rpc.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from aimdk.protocol.common import timestamp_pb2 as aimdk_dot_protocol_dot_common_dot_timestamp__pb2
from aimdk.protocol.common import header_pb2 as aimdk_dot_protocol_dot_common_dot_header__pb2
from aimdk.protocol.common.timestamp_pb2 import *
from aimdk.protocol.common.header_pb2 import *
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x61imdk/protocol/common/rpc.proto\x12\x0e\x61imdk.protocol\x1a%aimdk/protocol/common/timestamp.proto\x1a\"aimdk/protocol/common/header.proto\">\n\rCommonRequest\x12-\n\x06header\x18\x01 \x01(\x0b\x32\x1d.aimdk.protocol.RequestHeader\"l\n\x0e\x43ommonResponse\x12.\n\x06header\x18\x01 \x01(\x0b\x32\x1e.aimdk.protocol.ResponseHeader\x12*\n\x05state\x18\x02 \x01(\x0e\x32\x1b.aimdk.protocol.CommonState\"S\n\x11\x43ommonTaskRequest\x12-\n\x06header\x18\x01 \x01(\x0b\x32\x1d.aimdk.protocol.RequestHeader\x12\x0f\n\x07task_id\x18\x02 \x01(\x04\"\x81\x01\n\x12\x43ommonTaskResponse\x12.\n\x06header\x18\x01 \x01(\x0b\x32\x1e.aimdk.protocol.ResponseHeader\x12\x0f\n\x07task_id\x18\x02 \x01(\x04\x12*\n\x05state\x18\x03 \x01(\x0e\x32\x1b.aimdk.protocol.CommonState*\xa7\x02\n\x0b\x43ommonState\x12\x17\n\x13\x43ommonState_UNKNOWN\x10\x00\x12\x17\n\x13\x43ommonState_SUCCESS\x10\x01\x12\x17\n\x13\x43ommonState_FAILURE\x10\x02\x12\x17\n\x13\x43ommonState_ABORTED\x10\x03\x12\x17\n\x13\x43ommonState_TIMEOUT\x10\x04\x12\x17\n\x13\x43ommonState_INVALID\x10\x05\x12\x19\n\x15\x43ommonState_IN_MANUAL\x10\x06\x12\x19\n\x15\x43ommonState_NOT_READY\x10\x64\x12\x18\n\x13\x43ommonState_PENDING\x10\xc8\x01\x12\x18\n\x13\x43ommonState_CREATED\x10\xac\x02\x12\x18\n\x13\x43ommonState_RUNNING\x10\x90\x03P\x00P\x01\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.rpc_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_COMMONSTATE']._serialized_start=518
_globals['_COMMONSTATE']._serialized_end=813
_globals['_COMMONREQUEST']._serialized_start=126
_globals['_COMMONREQUEST']._serialized_end=188
_globals['_COMMONRESPONSE']._serialized_start=190
_globals['_COMMONRESPONSE']._serialized_end=298
_globals['_COMMONTASKREQUEST']._serialized_start=300
_globals['_COMMONTASKREQUEST']._serialized_end=383
_globals['_COMMONTASKRESPONSE']._serialized_start=386
_globals['_COMMONTASKRESPONSE']._serialized_end=515
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
/**
* @brief RPY角度姿态表示
*/
message Rpy {
double rw = 1;
double rx = 2; // 绕固定轴X旋转角度单位rad
double ry = 3; // 绕固定轴Y旋转角度单位rad
double rz = 4; // 绕固定轴Z旋转角度单位rad
}

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/rpy.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x61imdk/protocol/common/rpy.proto\x12\x0e\x61imdk.protocol\"5\n\x03Rpy\x12\n\n\x02rw\x18\x01 \x01(\x01\x12\n\n\x02rx\x18\x02 \x01(\x01\x12\n\n\x02ry\x18\x03 \x01(\x01\x12\n\n\x02rz\x18\x04 \x01(\x01\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.rpy_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_RPY']._serialized_start=51
_globals['_RPY']._serialized_end=104
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,4 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec2.proto";
/**
* SE2 加速度
*/
message SE2Acceleration {
Vec2 linear = 1; // 线加速度,单位:米/秒^2
Vec2 angular = 2; // 角加速度,单位:弧度/秒^2
}

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec2.proto";
/**
* SE2位姿
*/
message SE2Pose {
Vec2 position = 1; // 2d 位姿,单位:米
double angle = 2; // 角度,单位:弧度
}

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec2.proto";
/**
* SE2 速度
*/
message SE2Velocity {
Vec2 linear = 1; // 线速度,单位:米/秒
Vec2 angular = 2; // 角速度,单位:弧度/秒
}

View File

@@ -0,0 +1,14 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec3.proto";
import public "aimdk/protocol/common/quaternion.proto";
/**
* SE3 加速度
*/
message SE3Acceleration {
Vec3 linear = 1; // 线加速度,单位:米/秒^2
Vec3 angular = 2; // 角加速度,单位:弧度/秒^2
}

View File

@@ -0,0 +1,23 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec3.proto";
import public "aimdk/protocol/common/quaternion.proto";
import public "aimdk/protocol/common/rpy.proto";
/**
* SE3位姿四元数姿态表示
*/
message SE3Pose {
Vec3 position = 1; // 3d 位姿,单位:米
Quaternion orientation = 2; // 四元数
}
/**
* SE3位姿RPY角度表示
*/
message SE3RpyPose {
Vec3 position = 1; // 3d 位姿,单位:米
Rpy rpy = 2; // RPY角度
}

View File

@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/se3_pose.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from aimdk.protocol.common import vec3_pb2 as aimdk_dot_protocol_dot_common_dot_vec3__pb2
from aimdk.protocol.common import quaternion_pb2 as aimdk_dot_protocol_dot_common_dot_quaternion__pb2
from aimdk.protocol.common import rpy_pb2 as aimdk_dot_protocol_dot_common_dot_rpy__pb2
from aimdk.protocol.common.vec3_pb2 import *
from aimdk.protocol.common.quaternion_pb2 import *
from aimdk.protocol.common.rpy_pb2 import *
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$aimdk/protocol/common/se3_pose.proto\x12\x0e\x61imdk.protocol\x1a aimdk/protocol/common/vec3.proto\x1a&aimdk/protocol/common/quaternion.proto\x1a\x1f\x61imdk/protocol/common/rpy.proto\"b\n\x07SE3Pose\x12&\n\x08position\x18\x01 \x01(\x0b\x32\x14.aimdk.protocol.Vec3\x12/\n\x0borientation\x18\x02 \x01(\x0b\x32\x1a.aimdk.protocol.Quaternion\"V\n\nSE3RpyPose\x12&\n\x08position\x18\x01 \x01(\x0b\x32\x14.aimdk.protocol.Vec3\x12 \n\x03rpy\x18\x02 \x01(\x0b\x32\x13.aimdk.protocol.RpyP\x00P\x01P\x02\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.se3_pose_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_SE3POSE']._serialized_start=163
_globals['_SE3POSE']._serialized_end=261
_globals['_SE3RPYPOSE']._serialized_start=263
_globals['_SE3RPYPOSE']._serialized_end=349
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,25 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/se3_acceleration.proto";
import public "aimdk/protocol/common/se3_velocity.proto";
import public "aimdk/protocol/common/se3_pose.proto";
import public "aimdk/protocol/common/timestamp.proto";
/**
* SE3轨迹点
*/
message SE3TrajectoryPoint {
Timestamp timestamp = 1;
SE3Pose pose = 2;
SE3Velocity velocity = 3;
SE3Acceleration acceleration = 4;
}
/**
* SE3轨迹
*/
message SE3Trajectory {
repeated SE3TrajectoryPoint points = 1;
}

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec3.proto";
/**
* SE3 速度
*/
message SE3Velocity {
Vec3 linear = 1; // 线速度,单位:米/秒
Vec3 angular = 2; // 角速度,单位:弧度/秒
}

View File

@@ -0,0 +1,48 @@
syntax = "proto3";
package aimdk.protocol;
/**
* 时间戳
*/
message Timestamp {
// Represents seconds of UTC time since Unix epoch
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
// 9999-12-31T23:59:59Z inclusive.
int64 seconds = 1;
// Non-negative fractions of a second at nanosecond resolution. Negative
// second values with fractions must still have non-negative nanos values
// that count forward in time. Must be from 0 to 999,999,999
// inclusive.
int32 nanos = 2;
// miliseconds since epoch for counts using by frontend.
int64 ms_since_epoch = 3;
}
// # Examples
//
// Example 1: Compute Timestamp from POSIX `time()`.
//
// Timestamp timestamp;
// timestamp.set_seconds(time(NULL));
// timestamp.set_nanos(0);
//
// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
//
// struct timeval tv;
// gettimeofday(&tv, NULL);
//
// Timestamp timestamp;
// timestamp.set_seconds(tv.tv_sec);
// timestamp.set_nanos(tv.tv_usec * 1000);
//
// Example 3: Compute Timestamp from C++ `std::chrono::system_clock::now()`.
//
// std::chrono::system_clock::time_point tp =
// std::chrono::system_clock::now();
// std::chrono::duration<long int, std::nano> diff = tp.time_since_epoch();
// Timestamp timestamp;
// timestamp.set_seconds(diff.count() / 1e9);
// timestamp.set_nanos(diff.count() % 1e9);

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/timestamp.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%aimdk/protocol/common/timestamp.proto\x12\x0e\x61imdk.protocol\"C\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\x12\x16\n\x0ems_since_epoch\x18\x03 \x01(\x03\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.timestamp_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_TIMESTAMP']._serialized_start=57
_globals['_TIMESTAMP']._serialized_end=124
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,22 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec3.proto";
import public "aimdk/protocol/common/timestamp.proto";
/**
* 速度
*/
message Twist {
Vec3 linear = 1;
Vec3 angular = 2;
}
/**
* 速度 带时间戳
*/
message TwistStamped {
Timestamp timestamp = 1;
Twist twist = 2;
}

View File

@@ -0,0 +1,11 @@
syntax = "proto3";
package aimdk.protocol;
/**
* @brief 二维向量
*/
message Vec2 {
double x = 1;
double y = 2;
}

View File

@@ -0,0 +1,12 @@
syntax = "proto3";
package aimdk.protocol;
/**
* @brief 三维向量
*/
message Vec3 {
double x = 1;
double y = 2;
double z = 3;
}

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: aimdk/protocol/common/vec3.proto
# Protobuf Python Version: 4.25.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n aimdk/protocol/common/vec3.proto\x12\x0e\x61imdk.protocol\"\'\n\x04Vec3\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\t\n\x01z\x18\x03 \x01(\x01\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'aimdk.protocol.common.vec3_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_globals['_VEC3']._serialized_start=52
_globals['_VEC3']._serialized_end=91
# @@protoc_insertion_point(module_scope)

View File

@@ -0,0 +1,22 @@
syntax = "proto3";
package aimdk.protocol;
import public "aimdk/protocol/common/vec3.proto";
import public "aimdk/protocol/common/timestamp.proto";
/**
* @brief 力矩
*/
message Wrench {
Vec3 force = 1; // force 单位N
Vec3 torque = 2; // torque 单位N*m
}
/**
* @brief 力矩,带时间戳
*/
message WrenchStamped {
Timestamp timestamp = 1;
Wrench wrench = 2;
}