cmvr-es/protos/cmvr/config/motor_config/motor_config.proto
xtkuang 28f1dd1bf8 feat: add gRPC motor control over Modbus TCP
Add synchronous and streaming MotorService APIs backed by the PLC Modbus TCP runtime and protocol driver. Extend AUBO JSON commands and isolate vendor libstdc++ paths while keeping build-tree tests runnable.
2026-07-30 15:09:07 +08:00

135 lines
2.9 KiB
Protocol Buffer

syntax = "proto3";
package cmvr.config;
import "cmvr/config/joint_limits_config.proto";
message MotorConfigItem {
int32 id = 1;
string joint_name = 2;
double limit_q_lb = 3;
double limit_q_ub = 4;
double limit_qd = 5;
double limit_qdd = 6;
double encoder_counts_per_rev = 7;
double gear_ratio = 8;
}
message MotorList {
repeated MotorConfigItem motors = 1;
}
message EthercatSlaveConfig {
int32 motor_id = 1;
uint32 alias = 2;
uint32 position = 3;
}
message Cia402ProtocolConfig {
uint32 profile_position_trigger_delay_ms = 1;
uint32 state_transition_timeout_ms = 2;
uint32 velocity_stop_timeout_ms = 3;
uint32 status_poll_period_ms = 4;
double stopped_velocity_tolerance_rad_s = 5;
}
message EtherCATDcConfig {
optional bool enable = 1;
optional int32 reference_motor_id = 2;
optional uint32 sync0_cycle_us = 3;
optional int32 sync0_shift_us = 4;
optional uint32 sync_reference_clock_period = 5;
optional uint32 assign_activate = 6;
optional uint32 sync_monitor_period_ms = 7;
}
message SocketCanConfig {
string dev_id = 1;
int32 channel_id = 2;
}
message EtherCATConfig {
uint32 master_index = 1;
int32 cycle_us = 2;
Cia402ProtocolConfig cia402 = 3;
EtherCATDcConfig dc = 4;
optional uint32 slave_op_timeout_ms = 5;
optional uint32 slave_state_poll_period_ms = 6;
repeated EthercatSlaveConfig slaves = 10;
}
message MujocoMotorGroupConfig {
string world_id = 1;
}
message ModbusTcpAxisConfig {
int32 motor_id = 1;
uint32 axis_index = 2;
}
message ModbusTcpConfig {
string host = 1;
uint32 port = 2;
uint32 unit_id = 3;
uint32 connect_timeout_ms = 4;
uint32 io_timeout_ms = 5;
uint32 heartbeat_period_ms = 6;
uint32 communication_watchdog_ms = 7;
uint32 status_poll_period_ms = 8;
uint32 reconnect_min_ms = 9;
uint32 reconnect_max_ms = 10;
uint32 command_ack_timeout_ms = 11;
uint32 protocol_major = 12;
uint32 protocol_minor = 13;
uint32 cyclic_watchdog_ms = 14;
repeated ModbusTcpAxisConfig axes = 20;
}
enum MotorBusType {
MOTOR_BUS_UNKNOWN = 0;
MOTOR_BUS_CAN = 1;
MOTOR_BUS_ETHERCAT = 2;
MOTOR_BUS_MUJOCO = 3;
MOTOR_BUS_MODBUS_TCP = 4;
}
enum MotorVendor {
MOTOR_VENDOR_UNKNOWN = 0;
MOTOR_VENDOR_TI5 = 1;
MOTOR_VENDOR_MUJOCO = 2;
MOTOR_VENDOR_EYOU = 3;
MOTOR_VENDOR_PLC_GENERIC = 4;
}
enum MotorProtocol {
MOTOR_PROTOCOL_UNKNOWN = 0;
MOTOR_PROTOCOL_CANOPEN = 1;
MOTOR_PROTOCOL_ETHERCAT_CIA402 = 2;
MOTOR_PROTOCOL_MUJOCO = 3;
MOTOR_PROTOCOL_CMVR_PLC_V1 = 4;
}
message MotorGroupConfig {
string id = 1;
MotorBusType bus_type = 2;
MotorVendor vendor = 3;
MotorProtocol protocol = 4;
oneof bus_config {
SocketCanConfig can = 10;
EtherCATConfig ethercat = 11;
MujocoMotorGroupConfig mujoco = 12;
ModbusTcpConfig modbus_tcp = 13;
}
JointLimitsConfig joint_limits = 30;
MotorList motors = 40;
}
message MotorConfig {
string id = 1;
repeated MotorGroupConfig motor_groups = 2;
}
message MotorRootConfig {
MotorConfig motor = 1;
}