From 807d45c99c3c224df4e3660494ecf7a4069ad0f5 Mon Sep 17 00:00:00 2001
From: Dennis Mannhart <dennis.mannhart@gmail.com>
Date: Wed, 14 Jun 2017 11:01:30 +0200
Subject: [PATCH] mc_pos_control slowing down close to target take over
 previous setpoint if low

---
 src/modules/mc_pos_control/mc_pos_control_main.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/modules/mc_pos_control/mc_pos_control_main.cpp b/src/modules/mc_pos_control/mc_pos_control_main.cpp
index 37164b5242..e8c930782c 100644
--- a/src/modules/mc_pos_control/mc_pos_control_main.cpp
+++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp
@@ -1760,6 +1760,13 @@ void MulticopterPositionControl::control_auto(float dt)
 						/* make sure that vel_sp_along track is at least min */
 						vel_sp_along_track = (vel_sp_along_track < vel_close) ? vel_close : vel_sp_along_track;
 
+						/* if we are close to target and the previous velocity setpoints was smaller than
+						 * vel_sp_along_track, then take over the previous one
+						 * this ensures smoothness since we anyway want to slow down
+						 */
+						vel_sp_along_track = (vel_sp_along_track > vel_sp_along_track_prev) ?
+								     vel_sp_along_track_prev : vel_sp_along_track;
+
 					} else {
 
 						/* we want to stop at current setpoint */
-- 
GitLab