From ce92d33c41980f2449d85c7b345f6f593db257f1 Mon Sep 17 00:00:00 2001 From: Randy Mackay Date: Fri, 24 Jan 2025 14:02:35 +0900 Subject: [PATCH] Dev: mavlink interface nongps-position-estimation gets flow info Also improved notes around odometry's pos_covariance and quality fields --- .../mavlink-nongps-position-estimation.rst | 95 +++++++++++++++++- .../nongps-position-estimation-poserr.png | Bin 0 -> 7199 bytes 2 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 dev/source/images/nongps-position-estimation-poserr.png diff --git a/dev/source/docs/mavlink-nongps-position-estimation.rst b/dev/source/docs/mavlink-nongps-position-estimation.rst index 5f790d732d..0c3d9ab9fa 100644 --- a/dev/source/docs/mavlink-nongps-position-estimation.rst +++ b/dev/source/docs/mavlink-nongps-position-estimation.rst @@ -12,7 +12,7 @@ This is also called "External Navigation" although to be more precise it involve The user wiki pages for :ref:`Non-GPS navigation is here ` and :ref:`GPS/Non-GPS transitions is here ` -Any of the following messages should be sent in at 4hz or higher: +Any of the following messages should be sent to the autopilot at 4hz or higher: - `ODOMETRY `__ (the preferred method) - `VISION_POSITION_ESTIMATE `__ and optionally `VISION_SPEED_ESTIMATE `__ @@ -116,10 +116,10 @@ The preferred method is to send an `ODOMETRY Yaw angular speed in rad/s (clockwise is positive) - + pos_covariance float[21] - not used + elements 0, 6 and 11 are x, y and z-axis position error. 15, 18, 20 are roll, pitch and yaw angle error. Ignored if NaN @@ -145,3 +145,92 @@ The preferred method is to send an `ODOMETRY + +Six "pos_covariance" array elements are used to calculate the position error and angle error + +- 0: x-axis position error (m) +- 6: y-axis position error (m) +- 11: z-axis position error (m) +- 15: roll angle error (rad) +- 18: pitch angle error (rad) +- 20: yaw angle error (rad) + +For both position and angle error, the 3 elements are combined to create a single error which is used during EKF sensor fusion + +.. image:: ../images/nongps-position-estimation-poserr.png + :target: ../_images/nongps-position-estimation-poserr.png + +In addition the position error is constrained to be between :ref:`VISO_POS_M_NSE ` and 100 and the angle error between :ref:`VISO_YAW_M_NSE ` and 1.5 + +Messages with "quality" below the :ref:`VISO_QUAL_MIN ` parameter value are ignored + +OPTICAL_FLOW message +-------------------- + +An offboard optical flow sensor can send its horizontal flow sensor data to the autopilot using the `OPTICAL_FLOW `__ message + +Users should set :ref:`FLOW_TYPE` = 5 (MAVLink) and then perform the :ref:`Optical Flow Setup procedure ` before use + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescription
time_usecuint64_tTimestamp since system boot. This does not need to be syncronised with the autopilot's time
sensor_iduint8_tnot used
flow_xint16_tFlow rate around X-axis
flow_xint16_tFlow rate around Y-axis
flow_comp_m_xfloatnot used
flow_comp_m_yfloatnot used
qualityuint8_tOptical flow quality 0:bad, 255:best
ground_distancefloatnot used
flow_rate_xfloatnot used
flow_rate_yfloatnot used
+ +Please see this `issue 29131 `__ for improvements we should make to the handling of this message diff --git a/dev/source/images/nongps-position-estimation-poserr.png b/dev/source/images/nongps-position-estimation-poserr.png new file mode 100644 index 0000000000000000000000000000000000000000..12a36234e1391d93507b3702fa6ceb09177da3d0 GIT binary patch literal 7199 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