Difference between revisions of "Redundant Communication"
m (moved Redundant comms to Redundant Communication: Want to change main title.) |
|
(No difference)
|
Revision as of 16:51, 27 April 2013
Redundant Communication
There is currently a pull request to integrate a redundant communication system into the existing ground segment agents: [1]. The goal of this project is to allow multiple radio modems or other links be used between the aircraft and the ground station in a redundant fashion so that even if one link is lost, communication can be maintained. So far, the plane to ground component has been created and tested. The ground to plane component has not been created yet.
Communication from the aircraft to the ground is called telemetry. This communication allows the status of the aircraft such as location, altitude, airspeed, battery level, current flight block, and much more to be monitored in real time. Communication from the ground to the aircraft is called datalink. This communication allows the commands to be sent to the aircraft from the ground. This includes telling the aircraft what navigation to perform: waypoint navigation, search area, landing. If a single link is used, as is typical, then if the plane goes out of range, or that link is otherwise lost, no telemetry information can be displayed in the GCS and commands sent from the GCS won't be sent to the aircraft. Using the following redundant link system allows multiple links to be used in an effort to avoid this. Typically, you would introduce diversity when adding links. For example:
- If you have an on-board computer, you could tunnel messages through Wi-Fi over UDP in addition to a traditional 900 MHz XBee radio modem.
- You could use a satellite modem for long-range monitoring in addition to a radio modem.
- You could use a cellular modem in addition to a radio modem.
- With additional ground infrastructure, you could have radio modems located at different locations.
- You could use radio modems at different frequencies or with different antenna gains or orientations.
- You could use this system to evaluate different types of radio modems or antenna placements - you'll get real time info on each such as the ping time, received messages rate, and more information can easily be added.
There are undoubtedly many more possibilities.
This project was made to be fully backwards compatible and support the awesome functionality that Paparazzi already has. This includes:
- Completely backwards compatible - includes aircraft configuration files, previous flight logs, existing sessions, etc...
- Logging and replay - if multiple links are used, data received through either link is recorded. Also, replays will include the status of each link as it was during the flight.
- Link features such as USB-serial, audio, UDP, different transport layers, etc...
- Multi-aircraft sessions - you can use redundant links for one aircraft, but not for another if desired
- Multiple aircraft connected to the same link - such as might come up in a mesh configuration where one aircraft relays data from another aircraft
Aircraft to Ground
Main Features
Enabling redundant communication from the aircraft to the ground enables the following features:
- Redundancy - as long as one link is receiving data, it will be logged and displayed on the GCS
- Monitoring - the status, ping time, and rate of receiving messages for each link is shown (this makes it useful even if you're only using one link)
- Alerts - new alerts are added to the console in the GCS to alert you when a link has been connected for the first time, lost, or re-gained.
How to use
For an example using two USB-serial adaptors, see the Flight USB-serial Redundant session saved in the example control_panel.xml configuration (on master branch, once the pull request has been accepted).
For the details, keep reading: In order to implement redundant links using this code, there are three simple steps to follow:
- Connect the hardware - on the airborne side, connect the Rx pin of the autopilot to multiple radio modems or whatever other device which will get the information to the ground. On the ground side, connect multiple modems as normal (using USB to serial adapters, a UDP connection, or whatever).
- Launch a Link agent for each modem. Configure the agents as you would have before (serial port, baud rate, UDP, etc...). None of these features have been modified or removed. Then, use two new command line arguments: -redlink and -id. The -redlink flag tells Link that it's one of multiple links. The -id flag lets you specify an integer number as the id of that particular link.
- Launch the Link Combiner agent. This agent listens to all of the Link agents that have their -redlink set and combines the data.
The following screenshot shows a session with two links, connected to serial ports ttyUSB0 and ttyUSB1, and with id's 1 and 2:
The Agents Running in a Redundant Link Setup