Module/collective tracking control

From PaparazziUAV
Revision as of 05:38, 29 October 2019 by Noether (talk | contribs)
Jump to navigation Jump to search

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

Ctc mission.png

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 gain 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>