Difference between revisions of "Subsystem/ahrs"

From PaparazziUAV
Jump to navigation Jump to search
m
Line 7: Line 7:
* ''float_dcm''
* ''float_dcm''


e.g. for the complementary filter:
e.g. for the latest complementary filter:
{{Box Code|conf/airframes/myplane.xml|
{{Box Code|conf/airframes/myplane.xml|
<pre>
<pre>
   <firmware name="fixedwing or rotorcraft">
   <firmware name="fixedwing or rotorcraft">
     ...
     ...
     <subsystem name="ahrs" type="int_cmpl_euler"/>
     <subsystem name="ahrs" type="int_cmpl_quat"/>
   </firmware>
   </firmware>
</pre>
</pre>
Line 21: Line 21:
=== Complementary Euler (fixed point) ===
=== Complementary Euler (fixed point) ===
Not recommended for fixedwings, as this filter doesn't compensate for centrifugal force when flying turns.
Not recommended for fixedwings, as this filter doesn't compensate for centrifugal force when flying turns.
{{Box Code|conf/airframes/myplane.xml|
<pre>
  <firmware name="fixedwing or rotorcraft">
    ...
    <subsystem name="ahrs" type="int_cmpl_euler"/>
  </firmware>
  <section name="MISC">
    <define name="FACE_REINJ_1" value="1024"/>
  </section>
</pre>
}}


=== Complementary Quaternion (fixed point) ===
=== Complementary Quaternion (fixed point) ===

Revision as of 13:41, 7 December 2011

AHRS subsystem

The AHRS subsystem specifies which attitude estimation filter you are using.

Currently possible AHRS subsystems are

  • int_cmpl_quat
  • int_cmpl_euler
  • float_dcm

e.g. for the latest complementary filter:

File: conf/airframes/myplane.xml
  <firmware name="fixedwing or rotorcraft">
     ...
    <subsystem name="ahrs" type="int_cmpl_quat"/>
  </firmware>

There is a test program ( sw/airborne/test/ahrs/compare_ahrs.py ) to compare different AHRS implementations on simple test cases.

Complementary Euler (fixed point)

Not recommended for fixedwings, as this filter doesn't compensate for centrifugal force when flying turns.

File: conf/airframes/myplane.xml
  <firmware name="fixedwing or rotorcraft">
     ...
    <subsystem name="ahrs" type="int_cmpl_euler"/>
  </firmware>

  <section name="MISC">
    <define name="FACE_REINJ_1" value="1024"/>
  </section>

Complementary Quaternion (fixed point)

Currently not recommended for fixedwings, as this filter doesn't compensate for centrifugal force when flying turns. The capability for this is already there (with AHRS_GRAVITY_UPDATE_COORDINATED_TURN), but it isn't fed with the necessary data yet.

Other flags of interest are:

  • AHRS_PROPAGATE_LOW_PASS_RATES : apply a low pass filter on rotational velocity
  • AHRS_MAG_UPDATE_YAW_ONLY : use mag to update yaw only


For the latest integer complementary quaternion filter (int_cmpl_quat):

File: conf/airframes/myplane.xml
  <firmware name="rotorcraft">
     ...
    <subsystem name="ahrs" type="int_cmpl_quat"/>
  </firmware>

  <section name="AHRS" prefix="AHRS_">
    <define name="H_X" value=" 0.51562740288882"/>
    <define name="H_Y" value="-0.05707735220832"/>
    <define name="H_Z" value=" 0.85490967783446"/>
  </section>


To calculate the normalised local magnetic field insert the relevant location coordinates hereand calculate.


Screenshot of noaa page. Noaa mag data.png


Copy the north(x),east(y),vertical(z) component values into scilab and execute "X/norm(X)".


Screenshot of scilab page. Normalised mag fields.png

DCM (floating point)

Infrared