mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-29 02:38:07 +08:00
[nav] add adaptive navigation patterns
These patterns have been developped during an atmospheric science project to track clouds in real-time based on sensor data. The modifications includes: - adding adaptive nav modules (lace, rosette, trinity, spiral_3D) - new or improved meteo sensor modules (cloud sensor, meteostick) - improvements to mission interface (UPDATE message, waiting patterns, unique ID check) - compact telemetry message MINIMAL_COM to reduce bandwidth (message supported by server and logplotter) - basic cloud simulation module (circle or polygon sector) and demo flight plan See for details: Titouan Verdu, Gautier Hattenberger, Simon Lacroix. Flight patterns for clouds exploration with a fleet of UAVs. 2019 International Conference on Unmanned Aircraft Systems (ICUAS 2019), Jul 2019, Atlanta, United States. https://hal-enac.archives-ouvertes.fr/hal-02137839
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="cloud_sensor" dir="meteo">
|
||||
<doc>
|
||||
<description>
|
||||
Get data from Cloud Sensor
|
||||
- compute Liquid Water Content (LWC) value from PAYLOAD_FLOAT data
|
||||
- get already computed LWC from PAYLOAD_COMMAND data
|
||||
</description>
|
||||
</doc>
|
||||
<settings>
|
||||
<dl_settings NAME="CloudSensor">
|
||||
<dl_settings NAME="Cloud">
|
||||
<dl_setting max="1000." min="0." step="0.1" var="cloud_sensor_calib_alpha" shortname="alpha" module="meteo/cloud_sensor"/>
|
||||
<dl_setting max="60000." min="0." step="10." var="cloud_sensor_calib_beta" shortname="beta" module="meteo/cloud_sensor"/>
|
||||
<dl_setting max="1000." min="1." step="0.1" var="cloud_sensor_channel_scale" shortname="scale" module="meteo/cloud_sensor"/>
|
||||
<dl_setting MAX="2" MIN="0" STEP="1" VAR="cloud_sensor_compute_coef" shortname="coef type" module="meteo/cloud_sensor" values="NONE|SINGLE|ANGSTROM"/>
|
||||
<dl_setting max="1000." min="0." step="1." var="cloud_sensor_threshold" shortname="threshold" module="meteo/cloud_sensor"/>
|
||||
<dl_setting max="1000." min="0." step="1." var="cloud_sensor_hysteresis" shortname="hysteresis" module="meteo/cloud_sensor"/>
|
||||
<dl_setting max="20000." min="0." step="0.1" var="cloud_sensor_background" shortname="background" module="meteo/cloud_sensor"/>
|
||||
<dl_setting MAX="1" MIN="1" STEP="1" VAR="cloud_sensor_compute_background" shortname="compute background" module="meteo/cloud_sensor"/>
|
||||
<dl_setting MAX="20." MIN="0." STEP="0.1" VAR="cloud_sensor_tau" shortname="tau" module="meteo/cloud_sensor" handler="update_tau"/>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
<header>
|
||||
<file name="cloud_sensor.h"/>
|
||||
</header>
|
||||
<init fun="cloud_sensor_init()"/>
|
||||
<periodic fun="cloud_sensor_report()" freq="2." autorun="TRUE"/>
|
||||
<datalink message="PAYLOAD_COMMAND" fun="LWC_callback(buf)"/>
|
||||
<datalink message="PAYLOAD_FLOAT" fun="cloud_sensor_callback(buf)"/>
|
||||
<makefile>
|
||||
<file name="cloud_sensor.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
<module name="cloud_sim" dir="meteo">
|
||||
<doc>
|
||||
<description>Basic cloud simulation for testing adaptive navigation patterns</description>
|
||||
</doc>
|
||||
<settings>
|
||||
<dl_settings>
|
||||
<dl_settings name="Cloud Sim">
|
||||
<dl_setting max="1" min="0" step="1" var="cloud_sim.mode" shortname="mode" values="WP|POLYGON"/>
|
||||
<dl_setting max="10." min="-10." step="0.1" var="cloud_sim.speed.x" shortname="v east"/>
|
||||
<dl_setting max="10." min="-10." step="0.1" var="cloud_sim.speed.y" shortname="v north"/>
|
||||
<dl_setting max="1" min="1" step="1" var="cloud_sim.reset" shortname="reset" values="RESET" module="meteo/cloud_sim" handler="reset"/>
|
||||
<dl_setting max="500" min="50" step="10." var="cloud_sim.radius" shortname="radius"/>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
<header>
|
||||
<file name="cloud_sim.h"/>
|
||||
</header>
|
||||
<init fun="cloud_sim_init()"/>
|
||||
<periodic fun="cloud_sim_detect()" freq="10.0" autorun="TRUE"/>
|
||||
<periodic fun="cloud_sim_move()" freq="1.0" autorun="FALSE"/>
|
||||
<makefile>
|
||||
<file name="cloud_sim.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
@@ -25,7 +25,9 @@
|
||||
<configure name="MS_EEPROM_SLAVE_IDX" value="X" description="Index of the SPI slave for calibration EEPROM"/>
|
||||
<section name="METEO_STICK">
|
||||
<define name="LOG_MS" value="TRUE|FALSE" description="Log data on SD card (ascii format, raw PTU data + GPS data)"/>
|
||||
<define name="SEND_MS" value="TRUE|FALSE" description="Send data over telemetry (PAYLOAD_FLOAT message, scaled PTU data)"/>
|
||||
<define name="LOG_MS_FLIGHTRECORDER" value="TRUE|FALSE" description="Log data on SD card (METEO_STICK message in binary format)"/>
|
||||
<define name="MS_LOG_FILE" value="flightrecorder_sdlog" description="Log for binary format (only available with LOG_MS_FLIGHTRECORDER to TRUE)"/>
|
||||
<define name="SEND_MS_SYNC" value="TRUE|FALSE" description="Send data over telemetry sync to reading (METEO_STICK message, scaled PTU data)"/>
|
||||
<define name="USE_MS_EEPROM" value="TRUE|FALSE" description="Enable/disable usage of calibration data from EEPROM (default TRUE, set to FALSE if MS_EEPROM_SLAVE_IDX is not configured"/>
|
||||
<define name="MS_PRESSURE_OFFSET" value="0." description="Offset of the absolute pressure sensor (only used if EEPROM is not used)"/>
|
||||
<define name="MS_PRESSURE_SCALE" value="1." description="Scale factor of the absolute pressure sensor (only used if EEPROM is not used)"/>
|
||||
@@ -52,6 +54,7 @@
|
||||
</header>
|
||||
<init fun="meteo_stick_init()"/>
|
||||
<periodic fun="meteo_stick_periodic()" freq="10" autorun="TRUE"/>
|
||||
<periodic fun="meteo_stick_report()" freq="1" autorun="TRUE"/>
|
||||
<event fun="meteo_stick_event()"/>
|
||||
<makefile target="ap">
|
||||
<configure name="MS_SPI_DEV" case="upper|lower"/>
|
||||
|
||||
@@ -3,33 +3,14 @@
|
||||
<module name="mission_fw" dir="mission" task="control">
|
||||
<doc>
|
||||
<description>
|
||||
Interface for mission control of fixed wing aircraft.
|
||||
This module parse datalink commands for basic navigation routines
|
||||
and store them in a queue.
|
||||
Specific interface for mission control of fixed wing aircraft.
|
||||
</description>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="mission_common.h"/>
|
||||
</header>
|
||||
<init fun="mission_init()"/>
|
||||
<periodic fun="mission_status_report()" freq="2" autorun="TRUE"/>
|
||||
|
||||
<datalink message="MISSION_GOTO_WP" fun="mission_parse_GOTO_WP(buf)"/>
|
||||
<datalink message="MISSION_GOTO_WP_LLA" fun="mission_parse_GOTO_WP_LLA(buf)"/>
|
||||
<datalink message="MISSION_CIRCLE" fun="mission_parse_CIRCLE(buf)"/>
|
||||
<datalink message="MISSION_CIRCLE_LLA" fun="mission_parse_CIRCLE_LLA(buf)"/>
|
||||
<datalink message="MISSION_SEGMENT" fun="mission_parse_SEGMENT(buf)"/>
|
||||
<datalink message="MISSION_SEGMENT_LLA" fun="mission_parse_SEGMENT_LLA(buf)"/>
|
||||
<datalink message="MISSION_PATH" fun="mission_parse_PATH(buf)"/>
|
||||
<datalink message="MISSION_PATH_LLA" fun="mission_parse_PATH_LLA(buf)"/>
|
||||
<datalink message="MISSION_CUSTOM" fun="mission_parse_CUSTOM(buf)"/>
|
||||
<datalink message="GOTO_MISSION" fun="mission_parse_GOTO_MISSION(buf)"/>
|
||||
<datalink message="NEXT_MISSION" fun="mission_parse_NEXT_MISSION(buf)"/>
|
||||
<datalink message="END_MISSION" fun="mission_parse_END_MISSION(buf)"/>
|
||||
|
||||
<dep>
|
||||
<depends>mission_common</depends>
|
||||
<provides>mission</provides>
|
||||
</dep>
|
||||
<makefile>
|
||||
<define name="USE_MISSION"/>
|
||||
<file name="mission_common.c"/>
|
||||
<file name="mission_fw_nav.c"/>
|
||||
<test firmware="fixedwing">
|
||||
<define name="CTRL_TYPE_H" value="firmwares/fixedwing/guidance/guidance_v.h" type="string"/>
|
||||
|
||||
@@ -3,33 +3,14 @@
|
||||
<module name="mission_rotorcraft" dir="mission" task="control">
|
||||
<doc>
|
||||
<description>
|
||||
Interface for mission control of rotorcraft.
|
||||
This module parse datalink commands for basic navigation routines
|
||||
and store them in a queue.
|
||||
Specific interface for mission control of rotorcraft.
|
||||
</description>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="mission_common.h"/>
|
||||
</header>
|
||||
<init fun="mission_init()"/>
|
||||
<periodic fun="mission_status_report()" freq="2" autorun="TRUE"/>
|
||||
|
||||
<datalink message="MISSION_GOTO_WP" fun="mission_parse_GOTO_WP(buf)"/>
|
||||
<datalink message="MISSION_GOTO_WP_LLA" fun="mission_parse_GOTO_WP_LLA(buf)"/>
|
||||
<datalink message="MISSION_CIRCLE" fun="mission_parse_CIRCLE(buf)"/>
|
||||
<datalink message="MISSION_CIRCLE_LLA" fun="mission_parse_CIRCLE_LLA(buf)"/>
|
||||
<datalink message="MISSION_SEGMENT" fun="mission_parse_SEGMENT(buf)"/>
|
||||
<datalink message="MISSION_SEGMENT_LLA" fun="mission_parse_SEGMENT_LLA(buf)"/>
|
||||
<datalink message="MISSION_PATH" fun="mission_parse_PATH(buf)"/>
|
||||
<datalink message="MISSION_PATH_LLA" fun="mission_parse_PATH_LLA(buf)"/>
|
||||
<datalink message="MISSION_CUSTOM" fun="mission_parse_CUSTOM(buf)"/>
|
||||
<datalink message="GOTO_MISSION" fun="mission_parse_GOTO_MISSION(buf)"/>
|
||||
<datalink message="NEXT_MISSION" fun="mission_parse_NEXT_MISSION(buf)"/>
|
||||
<datalink message="END_MISSION" fun="mission_parse_END_MISSION(buf)"/>
|
||||
|
||||
<dep>
|
||||
<depends>mission_common</depends>
|
||||
<provides>mission</provides>
|
||||
</dep>
|
||||
<makefile>
|
||||
<define name="USE_MISSION"/>
|
||||
<file name="mission_common.c"/>
|
||||
<file name="mission_rotorcraft_nav.c"/>
|
||||
<test firmware="rotorcraft">
|
||||
<define name="DOWNLINK_TRANSPORT" value="pprz_tp"/>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="nav_lace" dir="nav">
|
||||
<doc>
|
||||
<description>
|
||||
Adaptive border pattern for cloud exploration
|
||||
Can be used in mission mode with custom pattern and ID "LACE"
|
||||
|
||||
See:
|
||||
Titouan Verdu, Gautier Hattenberger, Simon Lacroix. Flight patterns for clouds exploration with a fleet of UAVs. 2019 International Conference on Unmanned Aircraft Systems (ICUAS 2019), Jul 2019, Atlanta, United States.
|
||||
https://hal-enac.archives-ouvertes.fr/hal-02137839
|
||||
</description>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="nav_lace.h"/>
|
||||
</header>
|
||||
<init fun="nav_lace_init()"/>
|
||||
<makefile target="ap|sim|nps|hitl">
|
||||
<file name="nav_lace.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
@@ -17,6 +17,7 @@
|
||||
<header>
|
||||
<file name="nav_line.h"/>
|
||||
</header>
|
||||
<init fun="nav_line_init()"/>
|
||||
<makefile target="ap|sim|nps|hitl">
|
||||
<file name="nav_line.c"/>
|
||||
<test firmware="fixedwing">
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="nav_rosette" dir="nav">
|
||||
<doc>
|
||||
<description>
|
||||
Adaptive flower pattern for cloud exploration
|
||||
Can be used in mission mode with custom pattern and ID "RSTT"
|
||||
|
||||
See:
|
||||
Titouan Verdu, Gautier Hattenberger, Simon Lacroix. Flight patterns for clouds exploration with a fleet of UAVs. 2019 International Conference on Unmanned Aircraft Systems (ICUAS 2019), Jul 2019, Atlanta, United States.
|
||||
https://hal-enac.archives-ouvertes.fr/hal-02137839
|
||||
</description>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="nav_rosette.h"/>
|
||||
</header>
|
||||
<init fun="nav_rosette_init()"/>
|
||||
<makefile target="ap|sim|nps|hitl">
|
||||
<file name="nav_rosette.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="nav_spiral_3D" dir="nav">
|
||||
<doc>
|
||||
<description>
|
||||
Fixedwing navigation in a 3D spiral.
|
||||
creating a helix:
|
||||
- start center (X, Y)
|
||||
- start and stop altitude
|
||||
- start and stop radius
|
||||
- 3D speed of the circle
|
||||
- in case alt diff is too small, vz is used as expension speed at constant altitude
|
||||
- in case of radius diff too small, doing a constant radius circle
|
||||
- if alt diff is too small, basic circle with horizontal speed (vz as no effect)
|
||||
setup will fail if:
|
||||
- alt diff and vz are not coherent
|
||||
- vz is too small and not doing circle
|
||||
</description>
|
||||
<section name="NAV_SPIRAL_3D" prefix="NAV_SPIRAL_3D_">
|
||||
<define name="DIST_DIFF" value="10." description="horizontal distance to start and stop pattern"/>
|
||||
<define name="ALT_DIFF" value="10." description="vertical distance to start and stop pattern"/>
|
||||
<define name="MIN_CIRCLE_RADIUS" value="60." description="minium circle radius in meters"/>
|
||||
</section>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="nav_spiral_3D.h"/>
|
||||
</header>
|
||||
<init fun="nav_spiral_3D_init()"/>
|
||||
<makefile target="ap|sim|nps|hitl">
|
||||
<file name="nav_spiral_3D.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="nav_trinity" dir="nav">
|
||||
<doc>
|
||||
<description>
|
||||
Adaptive "trinity" pattern for cloud exploration
|
||||
Can be used in mission mode with custom pattern and ID "TRNTY"
|
||||
|
||||
See:
|
||||
Titouan Verdu, Gautier Hattenberger, Simon Lacroix. Flight patterns for clouds exploration with a fleet of UAVs. 2019 International Conference on Unmanned Aircraft Systems (ICUAS 2019), Jul 2019, Atlanta, United States.
|
||||
https://hal-enac.archives-ouvertes.fr/hal-02137839
|
||||
</description>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="nav_trinity.h"/>
|
||||
</header>
|
||||
<init fun="nav_trinity_init()"/>
|
||||
<makefile>
|
||||
<file name="nav_trinity.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
Reference in New Issue
Block a user