From 980217468f03bbca14bf3ed5edfed5a32a7b3de0 Mon Sep 17 00:00:00 2001 From: tumbili Date: Wed, 2 Sep 2015 08:08:29 +0200 Subject: [PATCH] set actuator commands to zero if vehicle status is still unknown --- src/modules/simulator/simulator_mavlink.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/simulator/simulator_mavlink.cpp b/src/modules/simulator/simulator_mavlink.cpp index d6d5a22b3e..ec3a7c8a24 100644 --- a/src/modules/simulator/simulator_mavlink.cpp +++ b/src/modules/simulator/simulator_mavlink.cpp @@ -64,7 +64,7 @@ static socklen_t _addrlen = sizeof(_srcaddr); using namespace simulator; void Simulator::pack_actuator_message(mavlink_hil_controls_t &actuator_msg) { - float out[8]; + float out[8] = {}; const float pwm_center = (PWM_HIGHEST_MAX + PWM_LOWEST_MIN) / 2; @@ -95,6 +95,12 @@ void Simulator::pack_actuator_message(mavlink_hil_controls_t &actuator_msg) { } } + // if vehicle status has not yet been updated, set actuator commands to zero + // this is to prevent the simulation getting into a bad state + if (_vehicle_status.timestamp == 0) { + memset(out, 0, sizeof(out)); + } + actuator_msg.time_usec = hrt_absolute_time(); actuator_msg.roll_ailerons = out[0]; actuator_msg.pitch_elevator = _vehicle_status.is_rotary_wing ? out[1] : -out[1];