Hackathon Proposal: Cockpit Hardware Communication

From FlightGear wiki
Jump to navigation Jump to search
Title:
Sponsors: Pat Callahan
Interested Parties: (Feel free to add yourself)
Status:
Summary: There are various ways to connect cockpit hardware to flight simulators. The purpose of this activity is to document the current ways this is done in FlightGear and to understand any ongoing efforts to provide additional FlightGear property subscription functionality suitable for driving hardware cockpit instruments. Mechanisms and strategies for updating simulator properties with cockpit hardware data.

One goal is to have a working prototype of a client running on a separate system that can initiate subscriptions, property queries, and property updates for all properties needed in a full cockpit hardware implementation of a selected aircraft. My first choice is the default C172P 1982, but we'll consider other aircraft.

The client could collect statistics on the data received and sent that will enable us to evaluate the existing protocol's performance for a complete cockpit build.

Required Skills:


Challenges:

Subscriptions to properties that:

- Are Tied - Are updated at the frame rate or at the rate the FDM is updated - Have small changes in each successive update that are not visible on instruments

Notes:

  Examples of data changes that do not matter to a hardware cockpit

-  Invisible 10e-6 degree change in heading,

-  In each frame, we use another minuscule amount of fuel. Communicating all these changes to the cockpit serves no useful purpose.

Possible changes: - Filter out small changes that will not matter when displayed on an instrument.

- Request and receive selected properties in a single packet.

- Binary Data on the wire. Floats, and Integers and Strings. In other words, less type conversion.

- Handles updates to properties based on changes in the flight simulator in each frame.

- Communication methods layered and not tightly bound to either USB or Ethernet, TCP or UDP

- Allows the use of protocols from other Flight Simulators (X-Plane's UDP, for example)

- Compatible with things like https://www.mobiflight.com/en/index.html

Futures:

Flightgear provides the interface to properties, subscription management, request receipt, and fulfillment.

The downstream system is not part of flightgear but provides:

-  management of which properties are required

-  distribution of data to cockpit hardware

-  calibration of cockpit hardware and property transformation as needed.

-  filtering of cockpit supplied data including de-bouncing, flow regulation

-  management and communication of cockpit supplied data into the sim program

FlightGear allows definition of IO streams by XML which will output a given set of properties at a defined rate. There is documentation here:

  • Docs/README.IO describes how you can configure FG to communicate over various protocols, including our XML-defined protocol...
  • Docs/README.protocol describes the XML format that can be used to define a set of properties that will be output

Also, there is the Emesary system, created by Richard Harrison, which acts as a broker and supports the elements decribed above. See