Difference between revisions of "Module/collective tracking control"
Line 57: | Line 57: | ||
== Python Simulation == | == Python Simulation == | ||
The algorithm needs some parameters and | The algorithm needs some parameters and gains to be set. The following Python simulation considers realistic orders of magnitude for distances and ground speeds. So you can try the gains and see the expected behavior of the algorithm before trying it in Paparazzi. | ||
You can find the Python simulation at ./paparazzi/sw/ground_segment/python/collective_tracking_control/ctc_simulation.py | You can find the Python simulation at ./paparazzi/sw/ground_segment/python/collective_tracking_control/ctc_simulation.py |
Revision as of 04:39, 29 October 2019
Introduction
This module/algorithm allows a team of aircraft (they can fly at different speeds) to track a (possibly moving) target. In particular, the centroid of the team converges to the target as it is shown in the following screenshots
Custom messages
The module needs all-to-all communication (including the target). The following messages need to be included in your messages.xml.
These messages go in the telemetry section of messages.xml. The CTC_CONTROL message is just for telemetry porpuses.
<message name="CTC" id="37">
<field name="table" type="int16[]"/>
</message>
<message name="CTC_INFO_FROM_TARGET" id="40">
<field name="px" type="float"/>
<field name="py" type="float"/>
<field name="vx" type="float"/>
<field name="vy" type="float"/>
</message>
<message name="CTC_CONTROL" id="211">
<field name="v_centroid_x" type="float" unit="m"/>
<field name="v_centroid_y" type="float" unit="m"/>
<field name="target_vx" type="float" unit="m/s"/>
<field name="target_vy" type="float" unit="m/s"/>
<field name="target_px" type="float" unit="m"/>
<field name="target_py" type="float" unit="m"/>
<field name="ref_px" type="float" unit="m"/>
<field name="ref_py" type="float" unit="m"/>
</message>
<message name="CTC_INFO_TO_NEI" id="255">
<field name="vx" type="float"/>
<field name="vy" type="float"/>
<field name="px" type="float"/>
<field name="py" type="float"/>
</message>
These messages go in the datalink section of messages.xml. They are necessary to init the algorithm from the ground control station.
<message name="CTC_REG_TABLE" id="160" link="forwarded">
<field name="ac_id" type="uint8"/>
<field name="nei_id" type="uint8"/>
</message>
<message name="CTC_CLEAN_TABLE" id="161" link="forwarded">
<field name="ac_id" type="uint8"/>
</message>
Python Simulation
The algorithm needs some parameters and gains to be set. The following Python simulation considers realistic orders of magnitude for distances and ground speeds. So you can try the gains and see the expected behavior of the algorithm before trying it in Paparazzi.
You can find the Python simulation at ./paparazzi/sw/ground_segment/python/collective_tracking_control/ctc_simulation.py
WARNING
This algorithm commands roll angles for the aircraft and NO waypoints. If one aircraft stop receiving information from the other aircraft, then it will not update its roll angle and it might continue flying straight. Be sure to set safety measurements in your flight plan, for example:
<exceptions>
<exception cond="dist2_to_home > (max_dist_from_home*max_dist_from_home)" deroute="STAND_BY"/>
</exceptions>