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 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 ZeroCalibrationConfig { uint32 timeout_ms = 1; uint32 poll_period_ms = 2; uint32 stable_sample_count = 3; uint32 position_tolerance_counts = 4; uint32 stable_delta_counts = 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; ZeroCalibrationConfig zero_calibration = 7; 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; MOTOR_VENDOR_EYOU = 3; } 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; 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; }