diff --git a/src/modules/commander/px4_custom_mode.h b/src/modules/commander/px4_custom_mode.h index e3766c9cb4679e4f80abac3871d0a40b0d5029f0..f1a7b38f722060c7c96d8fc1de297782c73feb2f 100644 --- a/src/modules/commander/px4_custom_mode.h +++ b/src/modules/commander/px4_custom_mode.h @@ -66,6 +66,11 @@ enum PX4_CUSTOM_SUB_MODE_AUTO { PX4_CUSTOM_SUB_MODE_AUTO_PRECLAND }; +enum PX4_CUSTOM_SUB_MODE_POSCTL { + PX4_CUSTOM_SUB_MODE_POSCTL_POSCTL = 0, + PX4_CUSTOM_SUB_MODE_POSCTL_ORBIT +}; + union px4_custom_mode { struct { uint16_t reserved; diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp index 57ddc0ba28b4d1fe744a8e2e4f7699baca632608..5169a348b36a8c55316cafdcaf5034dd30585828 100644 --- a/src/modules/mavlink/mavlink_messages.cpp +++ b/src/modules/mavlink/mavlink_messages.cpp @@ -186,6 +186,14 @@ void get_mavlink_navigation_mode(const struct vehicle_status_s *const status, ui custom_mode->main_mode = PX4_CUSTOM_MAIN_MODE_POSCTL; break; + case vehicle_status_s::NAVIGATION_STATE_ORBIT: + *mavlink_base_mode |= MAV_MODE_FLAG_MANUAL_INPUT_ENABLED + | MAV_MODE_FLAG_STABILIZE_ENABLED + | MAV_MODE_FLAG_GUIDED_ENABLED; + custom_mode->main_mode = PX4_CUSTOM_MAIN_MODE_POSCTL; + custom_mode->sub_mode = PX4_CUSTOM_SUB_MODE_POSCTL_ORBIT; + break; + case vehicle_status_s::NAVIGATION_STATE_AUTO_TAKEOFF: *mavlink_base_mode |= auto_mode_flags; custom_mode->main_mode = PX4_CUSTOM_MAIN_MODE_AUTO;