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; }