From 7632016a5e466ffc7e61c7431bbd5937abd4cc82 Mon Sep 17 00:00:00 2001 From: Henry Wurzburg Date: Sat, 11 Jan 2025 10:02:43 -0600 Subject: [PATCH] add some info on Plane nav and altitude control --- .../docs/learning-the-ardupilot-codebase.rst | 1 + dev/source/docs/plane-navigation-overview.rst | 28 ++++++++++++++++++ dev/source/images/waypoint_navigation.png | Bin 0 -> 34053 bytes 3 files changed, 29 insertions(+) create mode 100644 dev/source/docs/plane-navigation-overview.rst create mode 100644 dev/source/images/waypoint_navigation.png diff --git a/dev/source/docs/learning-the-ardupilot-codebase.rst b/dev/source/docs/learning-the-ardupilot-codebase.rst index b76a6b495c..ca0e8f70e7 100644 --- a/dev/source/docs/learning-the-ardupilot-codebase.rst +++ b/dev/source/docs/learning-the-ardupilot-codebase.rst @@ -44,6 +44,7 @@ Tutorial steps Rover - Adding a new drive mode Rover - L1 navigation controller Plane - Architecture overview + Plane - Navigation and Altitude Control Adding a new Log message Adding a new MAVLink message Adding a new MAVLink Gimbal diff --git a/dev/source/docs/plane-navigation-overview.rst b/dev/source/docs/plane-navigation-overview.rst new file mode 100644 index 0000000000..5c1151b866 --- /dev/null +++ b/dev/source/docs/plane-navigation-overview.rst @@ -0,0 +1,28 @@ +.. _plane-navigation-overview: + +============================================== +Plane Navigation and Altitude Control Overview +============================================== + +Navigation +========== +In auto-navigating modes like AUTO and CRUISE, or when responding to MAVLink navigation commands, ArduPlane usually uses two WAYPOINT locations (see `location object `__) and flies a wind compensated path between them: + +- ``next_WP``: the destination +- ``prev_WP``: the beginning point + +.. image:: ../images/waypoint_navigation.png + :target: ../_images/waypoint_navigation.png + +The code usually uses ``do_xxx`` to setup these waypoints (see `commands logic module `__). Sometimes, rather than having an existing starting point to use as ``prev_WP``, code can use the ``set_``next_WP```` method using ``auto_state.next_WP_crosstrack`` variable value to set the ``prev_WP`` to either the current waypoint destination (``next_WP``), or current location. Usually, you want to have the crosstrack false for the first waypoint so you proceed directly from your current position, instead of tracking to the line from a previously set destination. When entering a new mode, the ``prev_WP`` is always set to the current location, and crosstracking is initially disabled to assure navigation directly to whatever the new ``next_WP`` is set by the mode. + +Auto-navigating modes call their ``navigation method``, usually involving a ``verify_xxx`` command, to determine if the destination has been reached and setup the next destination, if needed. Determining course correction and navigation roll angles is done by the `L1 Controller `__ . + +`AP_Common:Location.h `__ has many useful methods for manipulation locations. + +Altitude Control +================ + +Altitude control is managed by :ref:`tecs-total-energy-control-system-for-speed-height-tuning-guide` using demanded altitude from the mode, in altitude controlled mode. Modes use the ``update_target_altitude`` to calculate demanded altitude for TECS which will calculate the altitude profile between waypoints(`setup_glide_slope `__ or maintain current altitude. Altitude target can be changed by MAVLink command (DO_CHANGE_ALT) or by stick control using ``update_fbwb_speed_height`` method. + +.. note:: if you are actually moving away from the next waypoint, as usually the case if RTL climbing before turning toward home option is set, the prev_WP will have to be continuously reset to present position and the glide slope re-setup in order to continue to climb. \ No newline at end of file diff --git a/dev/source/images/waypoint_navigation.png b/dev/source/images/waypoint_navigation.png new file mode 100644 index 0000000000000000000000000000000000000000..ea28348e75f4d1055737d606312e1af4d8039c42 GIT binary patch literal 34053 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 literal 0 HcmV?d00001