diff --git a/msg/landing_gear.msg b/msg/landing_gear.msg
index ce9893353129a8d7c221bb11a0a7ae1fcf69a963..5ef9ee52f2ba63ffd86d9b406db25e99c7556044 100644
--- a/msg/landing_gear.msg
+++ b/msg/landing_gear.msg
@@ -1,6 +1,7 @@
-uint64 timestamp            # time since system start (microseconds)
+uint64 timestamp # time since system start (microseconds)
 
-int8 LANDING_GEAR_UP = 1	# landing gear up
-int8 LANDING_GEAR_DOWN = -1	# landing gear down
+int8 GEAR_UP = 1 # landing gear up
+int8 GEAR_DOWN = -1 # landing gear down
+int8 GEAR_KEEP = 0 # keep the current state
 
 int8 landing_gear
diff --git a/msg/vehicle_constraints.msg b/msg/vehicle_constraints.msg
index 9c241536d61517c036a6a52c958d7507726905ed..50a145cf9a7535e9a7b3f37642c1a7776d510d1b 100644
--- a/msg/vehicle_constraints.msg
+++ b/msg/vehicle_constraints.msg
@@ -10,8 +10,3 @@ float32 speed_down	# in meters/sec
 float32 tilt    # in radians [0, PI]
 float32 min_distance_to_ground # in meters
 float32 max_distance_to_ground # in meters
-
-int8 GEAR_DOWN = -1
-int8 GEAR_UP = 1
-int8 GEAR_KEEP = 0
-int8 landing_gear # Down, UP or KEEP
diff --git a/src/lib/FlightTasks/tasks/AutoMapper/FlightTaskAutoMapper.cpp b/src/lib/FlightTasks/tasks/AutoMapper/FlightTaskAutoMapper.cpp
index 238d8e73060f2826e4ba7d61796860dc358670d1..f7e881b05d96bb3bcfd558997ed8c1033b98b30b 100644
--- a/src/lib/FlightTasks/tasks/AutoMapper/FlightTaskAutoMapper.cpp
+++ b/src/lib/FlightTasks/tasks/AutoMapper/FlightTaskAutoMapper.cpp
@@ -89,7 +89,7 @@ bool FlightTaskAutoMapper::update()
 	// during mission and reposition, raise the landing gears but only
 	// if altitude is high enough
 	if (_highEnoughForLandingGear()) {
-		_constraints.landing_gear = vehicle_constraints_s::GEAR_UP;
+		_gear.landing_gear = landing_gear_s::GEAR_UP;
 	}
 
 	// update previous type
@@ -121,7 +121,7 @@ void FlightTaskAutoMapper::_generateLandSetpoints()
 	// set constraints
 	_constraints.tilt = MPC_TILTMAX_LND.get();
 	_constraints.speed_down = MPC_LAND_SPEED.get();
-	_constraints.landing_gear = vehicle_constraints_s::GEAR_DOWN;
+	_gear.landing_gear = landing_gear_s::GEAR_DOWN;
 }
 
 void FlightTaskAutoMapper::_generateTakeoffSetpoints()
@@ -134,7 +134,7 @@ void FlightTaskAutoMapper::_generateTakeoffSetpoints()
 	_constraints.speed_up = math::gradual(_alt_above_ground, MPC_LAND_ALT2.get(),
 					      MPC_LAND_ALT1.get(), MPC_TKO_SPEED.get(), _constraints.speed_up);
 
-	_constraints.landing_gear = vehicle_constraints_s::GEAR_DOWN;
+	_gear.landing_gear = landing_gear_s::GEAR_DOWN;
 }
 
 void FlightTaskAutoMapper::_generateVelocitySetpoints()
@@ -173,4 +173,4 @@ bool FlightTaskAutoMapper::_highEnoughForLandingGear()
 {
 	// return true if altitude is above two meters
 	return _alt_above_ground > 2.0f;
-}
\ No newline at end of file
+}
diff --git a/src/lib/FlightTasks/tasks/AutoMapper2/FlightTaskAutoMapper2.cpp b/src/lib/FlightTasks/tasks/AutoMapper2/FlightTaskAutoMapper2.cpp
index a1dcf51a18dd07ed7c402c759b81d43591ef4e8f..83aff05f51cfaf4eedbbac4fe19a454bf14599c2 100644
--- a/src/lib/FlightTasks/tasks/AutoMapper2/FlightTaskAutoMapper2.cpp
+++ b/src/lib/FlightTasks/tasks/AutoMapper2/FlightTaskAutoMapper2.cpp
@@ -96,7 +96,7 @@ bool FlightTaskAutoMapper2::update()
 	// during mission and reposition, raise the landing gears but only
 	// if altitude is high enough
 	if (_highEnoughForLandingGear()) {
-		_constraints.landing_gear = vehicle_constraints_s::GEAR_UP;
+		_gear.landing_gear = landing_gear_s::GEAR_UP;
 	}
 
 	// update previous type
@@ -129,7 +129,7 @@ void FlightTaskAutoMapper2::_prepareLandSetpoints()
 
 	// set constraints
 	_constraints.tilt = MPC_TILTMAX_LND.get();
-	_constraints.landing_gear = vehicle_constraints_s::GEAR_DOWN;
+	_gear.landing_gear = landing_gear_s::GEAR_DOWN;
 }
 
 void FlightTaskAutoMapper2::_prepareTakeoffSetpoints()
@@ -139,7 +139,7 @@ void FlightTaskAutoMapper2::_prepareTakeoffSetpoints()
 	const float speed_tko = (_alt_above_ground > MPC_LAND_ALT1.get()) ? _constraints.speed_up : MPC_TKO_SPEED.get();
 	_velocity_setpoint = Vector3f(NAN, NAN, -speed_tko); // Limit the maximum vertical speed
 
-	_constraints.landing_gear = vehicle_constraints_s::GEAR_DOWN;
+	_gear.landing_gear = landing_gear_s::GEAR_DOWN;
 }
 
 void FlightTaskAutoMapper2::_prepareVelocitySetpoints()
diff --git a/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp b/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp
index 68ebd7e3f1cf3ecbe07960406d0d3b7ed5434d3d..0246ef56c38221db4e49a2eeda2211aecfae11bb 100644
--- a/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp
+++ b/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp
@@ -91,7 +91,7 @@ bool FlightTaskManual::_evaluateSticks()
 		// until he toggles the switch to avoid retracting the gear immediately on takeoff.
 		int8_t gear_switch = _sub_manual_control_setpoint->get().gear_switch;
 
-		if (!_constraints.landing_gear) {
+		if (!_gear.landing_gear) {
 			if (gear_switch == manual_control_setpoint_s::SWITCH_POS_OFF) {
 				_applyGearSwitch(gear_switch);
 			}
@@ -112,7 +112,7 @@ bool FlightTaskManual::_evaluateSticks()
 		/* Timeout: set all sticks to zero */
 		_sticks.zero();
 		_sticks_expo.zero();
-		_constraints.landing_gear = vehicle_constraints_s::GEAR_KEEP;
+		_gear.landing_gear = landing_gear_s::GEAR_KEEP;
 		return false;
 	}
 }
@@ -120,10 +120,10 @@ bool FlightTaskManual::_evaluateSticks()
 void FlightTaskManual::_applyGearSwitch(uint8_t gswitch)
 {
 	if (gswitch == manual_control_setpoint_s::SWITCH_POS_OFF) {
-		_constraints.landing_gear = vehicle_constraints_s::GEAR_DOWN;
+		_gear.landing_gear = landing_gear_s::GEAR_DOWN;
 	}
 
 	if (gswitch == manual_control_setpoint_s::SWITCH_POS_ON) {
-		_constraints.landing_gear = vehicle_constraints_s::GEAR_UP;
+		_gear.landing_gear = landing_gear_s::GEAR_UP;
 	}
 }
diff --git a/src/modules/mc_att_control/mc_att_control_main.cpp b/src/modules/mc_att_control/mc_att_control_main.cpp
index a00b5920f77efe5fa4808487e77f21333eac32c1..27c2df2b9439330fb9d559cd85aaf1a4911af33a 100644
--- a/src/modules/mc_att_control/mc_att_control_main.cpp
+++ b/src/modules/mc_att_control/mc_att_control_main.cpp
@@ -415,9 +415,9 @@ MulticopterAttitudeControl::get_landing_gear_state()
 	if (_vehicle_land_detected.landed) {
 		_gear_state_initialized = false;
 	}
-	float landing_gear = landing_gear_s::LANDING_GEAR_DOWN; // default to down
+	float landing_gear = landing_gear_s::GEAR_DOWN; // default to down
 	if (_manual_control_sp.gear_switch == manual_control_setpoint_s::SWITCH_POS_ON && _gear_state_initialized) {
-		landing_gear = landing_gear_s::LANDING_GEAR_UP;
+		landing_gear = landing_gear_s::GEAR_UP;
 
 	} else if (_manual_control_sp.gear_switch == manual_control_setpoint_s::SWITCH_POS_OFF) {
 		// Switching the gear off does put it into a safe defined state
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 5d9f910724ccb5cf6fdd124b39dd1924cc7e61c5..e2bfe5264662568677c3775cd742646af1d2fa3c 100644
--- a/src/modules/mc_pos_control/mc_pos_control_main.cpp
+++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp
@@ -691,6 +691,7 @@ MulticopterPositionControl::run()
 			update_avoidance_waypoint_desired(_states, setpoint);
 
 			vehicle_constraints_s constraints = _flight_tasks.getConstraints();
+			landing_gear_s gear = _flight_tasks.getGear();
 
 			// check if all local states are valid and map accordingly
 			set_vehicle_states(setpoint.vz);
@@ -732,7 +733,7 @@ MulticopterPositionControl::run()
 				setpoint.vx = setpoint.vy = setpoint.vz = NAN;
 				setpoint.yawspeed = NAN;
 				setpoint.yaw = _states.yaw;
-				constraints.landing_gear = vehicle_constraints_s::GEAR_KEEP;
+				gear.landing_gear = landing_gear_s::GEAR_KEEP;
 				// reactivate the task which will reset the setpoint to current state
 				_flight_tasks.reActivate();
 			}
@@ -801,11 +802,11 @@ MulticopterPositionControl::run()
 			// they might conflict with each other such as in offboard attitude control.
 			publish_attitude();
 
-			// if theres any change in landing gear setpoint publish it
-			if (_old_landing_gear_position != constraints.landing_gear
-				&& constraints.landing_gear != vehicle_constraints_s::GEAR_KEEP) {
+			// if there's any change in landing gear setpoint publish it
+			if (gear.landing_gear != _old_landing_gear_position
+				&& gear.landing_gear != landing_gear_s::GEAR_KEEP) {
 
-				_landing_gear.landing_gear = constraints.landing_gear;
+				_landing_gear.landing_gear = gear.landing_gear;
 				_landing_gear.timestamp = hrt_absolute_time();
 
 				if (_landing_gear_pub != nullptr) {
@@ -816,7 +817,7 @@ MulticopterPositionControl::run()
 				}
 			}
 
-			_old_landing_gear_position = constraints.landing_gear;
+			_old_landing_gear_position = gear.landing_gear;
 
 		} else {
 			// no flighttask is active: set attitude setpoint to idle