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; } message MotorList { repeated MotorConfigItem motors = 1; } message EthercatSlaveConfig { int32 motor_id = 1; int32 slave_index = 2; uint32 vendor_id = 3; uint32 product_code = 4; } message SocketCanConfig { string dev_id = 1; int32 channel_id = 2; } message EtherCATConfig { string master_id = 1; int32 cycle_us = 2; repeated EthercatSlaveConfig slaves = 10; } message MujocoMotorGroupConfig { string world_id = 1; } enum MotorBusType { MOTOR_BUS_UNKNOWN = 0; MOTOR_BUS_CAN = 1; MOTOR_BUS_ETHERCAT = 2; MOTOR_BUS_MUJOCO = 3; } enum MotorVendor { MOTOR_VENDOR_UNKNOWN = 0; MOTOR_VENDOR_TI5 = 1; MOTOR_VENDOR_MUJOCO = 2; } enum MotorProtocol { MOTOR_PROTOCOL_UNKNOWN = 0; MOTOR_PROTOCOL_CANOPEN = 1; MOTOR_PROTOCOL_ETHERCAT_CIA402 = 2; MOTOR_PROTOCOL_MUJOCO = 3; } message MotorGroupConfig { string id = 1; MotorBusType bus_type = 2; MotorVendor vendor = 3; MotorProtocol protocol = 4; string tool_frame = 5; oneof bus_config { SocketCanConfig can = 10; EtherCATConfig ethercat = 11; MujocoMotorGroupConfig mujoco = 12; } JointLimitsConfig joint_limits = 30; MotorList motors = 40; } message MotorConfig { string id = 1; repeated MotorGroupConfig motor_groups = 2; } message MotorRootConfig { MotorConfig motor = 1; }