diff --git a/src/modules/simulation/gz_bridge/GZMixingInterfaceESC.cpp b/src/modules/simulation/gz_bridge/GZMixingInterfaceESC.cpp index f556817ea9..3da5ba0f18 100644 --- a/src/modules/simulation/gz_bridge/GZMixingInterfaceESC.cpp +++ b/src/modules/simulation/gz_bridge/GZMixingInterfaceESC.cpp @@ -109,9 +109,10 @@ void GZMixingInterfaceESC::motorSpeedCallback(const gz::msgs::Actuators &actuato pthread_mutex_lock(&_node_mutex); esc_status_s esc_status{}; - esc_status.esc_count = actuators.velocity_size(); + // Limit to max supported ESCs while allowing for a larger number of system actuators + esc_status.esc_count = math::min(actuators.velocity_size(), static_cast(esc_status_s::CONNECTED_ESC_MAX)); - for (int i = 0; i < actuators.velocity_size(); i++) { + for (int i = 0; i < esc_status.esc_count; i++) { esc_status.esc[i].timestamp = hrt_absolute_time(); esc_status.esc[i].esc_rpm = actuators.velocity(i); esc_status.esc_online_flags |= 1 << i; diff --git a/src/modules/simulation/gz_bridge/module.yaml b/src/modules/simulation/gz_bridge/module.yaml index e41aedb1e3..e6cd8d65b0 100644 --- a/src/modules/simulation/gz_bridge/module.yaml +++ b/src/modules/simulation/gz_bridge/module.yaml @@ -1,3 +1,4 @@ +__max_num_motors: &max_num_motors 12 __max_num_servos: &max_num_servos 8 __max_num_tilts: &max_num_tilts 4 @@ -18,7 +19,7 @@ actuator_output: min: { min: 0, max: 1000, default: 0 } max: { min: 0, max: 1000, default: 1000 } failsafe: { min: 0, max: 1000 } - num_channels: *max_num_servos + num_channels: *max_num_motors - param_prefix: SIM_GZ_SV group_label: 'Servos' channel_label: 'Servo'