diff --git a/src/modules/commander/commander_tests/state_machine_helper_test.cpp b/src/modules/commander/commander_tests/state_machine_helper_test.cpp
index 78bc4bc22bbc6b78e96f8f23bf9c2c3475c63a2d..570f2b5886810d411fcb4c10bf30863803de37a1 100644
--- a/src/modules/commander/commander_tests/state_machine_helper_test.cpp
+++ b/src/modules/commander/commander_tests/state_machine_helper_test.cpp
@@ -337,8 +337,8 @@ bool StateMachineHelperTest::mainStateTransitionTest(void)
 
 		// TRANSITION_CHANGED tests
 
-		{ "transition: MANUAL to ACRO",
-			MTT_ALL_NOT_VALID,
+		{ "transition: MANUAL to ACRO - rotary",
+			MTT_ROTARY_WING,
 			commander_state_s::MAIN_STATE_MANUAL, commander_state_s::MAIN_STATE_ACRO, TRANSITION_CHANGED },
 
 		{ "transition: ACRO to MANUAL",
@@ -399,6 +399,10 @@ bool StateMachineHelperTest::mainStateTransitionTest(void)
 
 		// TRANSITION_DENIED tests
 
+		{ "transition: MANUAL to ACRO - not rotary",
+			MTT_ALL_NOT_VALID,
+			commander_state_s::MAIN_STATE_MANUAL, commander_state_s::MAIN_STATE_ACRO, TRANSITION_DENIED },
+
 		{ "no transition: MANUAL to AUTO_MISSION - global position not valid",
 			MTT_ALL_NOT_VALID,
 			commander_state_s::MAIN_STATE_MANUAL, commander_state_s::MAIN_STATE_AUTO_MISSION, TRANSITION_DENIED },
diff --git a/src/modules/commander/state_machine_helper.cpp b/src/modules/commander/state_machine_helper.cpp
index dadc6520095121ec0ab58b08f21987c75421e0ab..e979d07e04c2b0b70f0efe9a8894067a093d1d29 100644
--- a/src/modules/commander/state_machine_helper.cpp
+++ b/src/modules/commander/state_machine_helper.cpp
@@ -348,12 +348,17 @@ main_state_transition(struct vehicle_status_s *status, main_state_t new_main_sta
 	/* transition may be denied even if the same state is requested because conditions may have changed */
 	switch (new_main_state) {
 	case commander_state_s::MAIN_STATE_MANUAL:
-	case commander_state_s::MAIN_STATE_ACRO:
-	case commander_state_s::MAIN_STATE_RATTITUDE:
 	case commander_state_s::MAIN_STATE_STAB:
 		ret = TRANSITION_CHANGED;
 		break;
 
+	case commander_state_s::MAIN_STATE_ACRO:
+	case commander_state_s::MAIN_STATE_RATTITUDE:
+		if (status->is_rotary_wing) {
+			ret = TRANSITION_CHANGED;
+		}
+		break;
+
 	case commander_state_s::MAIN_STATE_ALTCTL:
 		/* need at minimum altitude estimate */
 		/* TODO: add this for fixedwing as well */