fix(rover): actively stop vehicle if not armed (#28840)

* fix(rover): actively stop vehicle if not armed

* fix(rover): update timestamp upon calling stopVehicle()
This commit is contained in:
Michael Fritsche
2026-09-30 16:28:18 +02:00
committed by GitHub
parent 596889f8b6
commit b07a720cfd
6 changed files with 12 additions and 0 deletions
@@ -113,6 +113,7 @@ void AckermannActControl::updateActControl()
void AckermannActControl::stopVehicle()
{
_timestamp = hrt_absolute_time();
actuator_motors_s actuator_motors{};
actuator_motors.reversible_flags = _param_r_rev.get();
actuator_motors.control[0] = 0.f;
@@ -106,6 +106,9 @@ void RoverAckermann::Run()
reset();
_ackermann_act_control.stopVehicle();
_was_armed = false;
} else {
_ackermann_act_control.stopVehicle();
}
// reschedule backup
@@ -101,6 +101,7 @@ Vector2f DifferentialActControl::computeInverseKinematics(float throttle, const
void DifferentialActControl::stopVehicle()
{
_timestamp = hrt_absolute_time();
actuator_motors_s actuator_motors{};
actuator_motors.reversible_flags = _param_r_rev.get();
actuator_motors.control[0] = 0.f;
@@ -107,6 +107,9 @@ void RoverDifferential::Run()
reset();
_differential_act_control.stopVehicle();
_was_armed = false;
} else {
_differential_act_control.stopVehicle();
}
// reschedule backup
@@ -118,6 +118,7 @@ Vector4f MecanumActControl::computeInverseKinematics(float throttle_body_x, floa
void MecanumActControl::stopVehicle()
{
_timestamp = hrt_absolute_time();
actuator_motors_s actuator_motors{};
actuator_motors.reversible_flags = _param_r_rev.get();
actuator_motors.control[0] = 0.f;
@@ -107,6 +107,9 @@ void RoverMecanum::Run()
reset();
_mecanum_act_control.stopVehicle();
_was_armed = false;
} else {
_mecanum_act_control.stopVehicle();
}
// reschedule backup