From 4ee74e9b0025983148b7cfb6a9fcd53f89d5789e Mon Sep 17 00:00:00 2001 From: Angel <roangel@student.ethz.ch> Date: Tue, 26 Sep 2017 17:32:53 +0200 Subject: [PATCH] fixed infinite loop when battery low --- pps_ws/src/d_fall_pps/src/PPSClient.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pps_ws/src/d_fall_pps/src/PPSClient.cpp b/pps_ws/src/d_fall_pps/src/PPSClient.cpp index ca6f6024..20376e83 100755 --- a/pps_ws/src/d_fall_pps/src/PPSClient.cpp +++ b/pps_ws/src/d_fall_pps/src/PPSClient.cpp @@ -710,7 +710,8 @@ void setBatteryStateTo(int new_battery_state) case BATTERY_STATE_LOW: m_battery_state = BATTERY_STATE_LOW; ROS_INFO("changed battery state to low"); - changeFlyingStateTo(STATE_LAND); + if(flying_state != STATE_MOTORS_OFF) + changeFlyingStateTo(STATE_LAND); break; default: ROS_INFO("Unknown battery state command, set to normal"); @@ -733,7 +734,8 @@ void CFBatteryCallback(const std_msgs::Float32& msg) if((flying_state != STATE_MOTORS_OFF && (filtered_battery_voltage < m_battery_threshold_while_flying)) || (flying_state == STATE_MOTORS_OFF && (filtered_battery_voltage < m_battery_threshold_while_motors_off))) { - setBatteryStateTo(BATTERY_STATE_LOW); + if(getBatteryState() != BATTERY_STATE_LOW) + setBatteryStateTo(BATTERY_STATE_LOW); ROS_INFO("low level battery triggered"); } else //maybe add hysteresis somewhere here? -- GitLab