mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 22:49:53 +08:00
2a1ce1a0ec
I added an optical flow landing module for rotorcrafts. It uses the size divergence from the optical flow algorithm to keep a constant divergence (if set negative the drone will land, 0 = hover, and positive is going up). Advantage with respect to a GPS landing is that it will take into account the landing surface, even if it is higher than the ground level (so landing on a roof for instance). The module does not use sonar for the vertical control, so it can be used by tiny drones that do not carry sonar. The module uses a novel theory on seeing distances with just a single camera (no extra sensors) to detect when it should land. So it can also be used by drones to estimate distance with a single camera. closes #1611
86 lines
2.9 KiB
XML
86 lines
2.9 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE protocol SYSTEM "abi.dtd">
|
|
<protocol>
|
|
|
|
<msg_class name="airborne">
|
|
|
|
<message name="BARO_ABS" id="0">
|
|
<field name="pressure" type="float" unit="Pa"/>
|
|
</message>
|
|
|
|
<message name="BARO_DIFF" id="1">
|
|
<field name="pressure" type="float" unit="Pa"/>
|
|
</message>
|
|
|
|
<message name="AGL" id="2">
|
|
<field name="distance" type="float" unit="m"/>
|
|
</message>
|
|
|
|
<message name="TEMPERATURE" id="3">
|
|
<field name="temp" type="float" unit="deg Celcius"/>
|
|
</message>
|
|
|
|
<message name="IMU_GYRO_INT32" id="4">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="gyro" type="struct Int32Rates *"/>
|
|
</message>
|
|
|
|
<message name="IMU_ACCEL_INT32" id="5">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="accel" type="struct Int32Vect3 *"/>
|
|
</message>
|
|
|
|
<message name="IMU_MAG_INT32" id="6">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="mag" type="struct Int32Vect3 *"/>
|
|
</message>
|
|
|
|
<message name="IMU_LOWPASSED" id="7">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="gyro" type="struct Int32Rates *"/>
|
|
<field name="accel" type="struct Int32Vect3 *"/>
|
|
<field name="mag" type="struct Int32Vect3 *"/>
|
|
</message>
|
|
|
|
<message name="BODY_TO_IMU_QUAT" id="8">
|
|
<field name="q_b2i_f" type="struct FloatQuat *"/>
|
|
</message>
|
|
|
|
<message name="GEO_MAG" id="9">
|
|
<field name="h" type="struct FloatVect3 *" unit="1.0"/>
|
|
</message>
|
|
|
|
<message name="GPS" id="10">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="gps_s" type="struct GpsState *"/>
|
|
</message>
|
|
|
|
<message name="OPTICAL_FLOW" id="11">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="flow_x" type="int16_t">Flow in x direction from the camera (in subpixels)</field>
|
|
<field name="flow_y" type="int16_t">Flow in y direction from the camera (in subpixels)</field>
|
|
<field name="flow_der_x" type="int16_t">The derotated flow calculation in the x direction (in subpixels)</field>
|
|
<field name="flow_der_y" type="int16_t">The derotated flow calculation in the y direction (in subpixels)</field>
|
|
<field name="quality" type="uint8_t"/>
|
|
<field name="size_divergence" type="float">Divergence as determined with the size method (in 1/seconds)</field>
|
|
<field name="dist" type="float">Distance to ground</field>
|
|
</message>
|
|
|
|
<message name="VELOCITY_ESTIMATE" id="12">
|
|
<field name="stamp" type="uint32_t" unit="us"/>
|
|
<field name="x" type="float" unit="m/s"/>
|
|
<field name="y" type="float" unit="m/s"/>
|
|
<field name="z" type="float" unit="m/s"/>
|
|
<field name="noise" type="float"/>
|
|
</message>
|
|
|
|
<message name="RSSI" id="13">
|
|
<field name="ac_id" type="uint8_t"/>
|
|
<field name="source_strength" type="int8_t" unit="dB"/>
|
|
<field name="rssi" type="int8_t" unit="dB"/>
|
|
</message>
|
|
|
|
</msg_class>
|
|
|
|
</protocol>
|