Dual control

From FlightGear wiki
(Redirected from Dual Control)
Jump to: navigation, search
Caution  Developer information:

Some, and possibly most, of the details below are likely to be affected, or even deprecated, by the ongoing work on implementing and improving HLA support in FlightGear. For recent updates, please refer to HLA Timeline.
Please see: High-Level Architecture for further information
To avoid conflicting efforts, you are advised not to start working on anything directly related to this without first coordinating your ideas with FlightGear core developers using the FlightGear developers mailing list. talk page..


Dual Control is a system for FlightGear that adds basic support for shared control of an aircraft over the FlightGear multiplayer network.

Note: FlightGear 1.9.0 or later is needed to use Dual Control.


Currently there are a small number of aircraft with dual control support:

  • Airbus A320 Family, pilot and co-pilot (A3xx-xx1, A320-copilot). Available from Gitorious project page. Be sure to rename the aircraft directory to "A320-family" after checking out/downloading.
  • Airbus A340-600, pilot and co-pilot (A340-600, A346-copilot). Available in FlightGear 2.0 or later, Latest beta versions available on the forum.
  • Blackburn Buccaneer, pilot and systems officer (buccaneer, buccaneer-obs). Available in FlightGear 1.9.0 or later.
  • Boeing 747-400, pilot flying and pilot monitoring (747-400, 747-400-fo). Available in FlightGear/Git.
  • c172p Skyhawk, pilot and copilot (c172p-pilot and c172p-copilot). Based on David Megginson's c172p single control aircraft. Available from the dual-control aircraft hangar. The tar.gz archive for the aircraft should be extracted in $FG_ROOT/Aircraft/.
  • Bombardier CRJ700 (all variants), pilot and first officer (CRJ700, et al and CRJ700-firstofficer). Copilot can control aircraft using joystick and keyboard shortcuts but not toggle any switches. Available in FlightGear 2.0.0 or later. Improved dual control support available through development version at Gitorious. Be sure to rename the aircraft directory to "CRJ700-family" after checking out/downloading.
  • Dornier Do X, phenomenal experience, pilot and radio operator working on interactive dual coordination for navigation. Available from The Lake of Constance
  • fr/Douglas DC-3-C47, pilot and copilot can control aircraft, and passenger 1 to 4 (dc-3, dc-3-copilot, dc-3-psg1, dc-3-psg2, dc-3-psg3, dc-3-psg4). Available in GIT.
  • Embraer E-jets Family, pilot and co-pilot (Embraer-17X, Embraer-17X-Copilot), Avaliable from http://theomegahangar.flymerlion.org
  • Grumman F-14 Tomcat, pilot and RIO (f-14b, f-14b-bs). Available in FlightGear 2.0.0 or later.
  • Hughes OH-6 Cayuse, pilot and co-pilot (OH-6, OH-6-cp). Available on the wiki page.
  • Schleicher ASK-13 glider, pilot and passenger (ask13, ask13-passenger). Available in FlightGear/Git.
  • Submarine Scout, pilot and observer (Submarine_Scout, Submarine_Scout-observer). Available in FlightGear 1.9.0 or later.
  • Fieseler Fi 156 Storch, pilot and passenger (Fi-156-de, Fi-156-passenger). Available in FlightGear 2.0.0 or later.
  • Zeppelin NT, pilot and copilot (ZLT-NT, ZLT-NT-copilot). Available in FlightGear 1.9.0 or later.

To connect the pilot and copilot selects each other in the Copilot dialog (FlightGear 2.0.0 or later) or set properties as explained in the usage instructions below.

Dual control enables a pilot and copilot to jointly fly the aircraft over the FlightGear multiplayer network. Depending on the aircraft the pilot and copilot have shared control over primary flight controls, throttle, mixture and so on. Exactly which controls are shared varies between the aircraft but usually include elevator trim, flaps, brakes, cockpit switches, the radio stack and some instrument settings. The copilot usually has a subset of the full instrumentation (also depending on the aircraft), usually including airspeed, altimeter, VSI, HSI, turn coordinator, engine RPM and the radio stack. Typically Nav/Comm 1 and the first VOR indicator is best controlled by the pilot, while Nav/Comm 2 and the corresponding VOR indicator is faster for the copilot.


Side-by-side presentation of the Zeppelin NT pilot's (left) and copilot's (right) views.

Usage instruction

The system consists of two "aircraft":

The pilot uses a special variant of the c172p, c172p-pilot. The pilot needs to specify the callsign of the copilot (other copilots will be ignored). For the Zeppelin NT the aircraft names are ZLT-NT and ZLT-NT-copilot, respectively.

In the current version the pilot and copilot can select each other in their Co/Pilot selection dialogs available from the "Zeppelin NT/c172p-dual-control"->"MP-(Co)Pilot" menus.

Alternatively the relevant properties can be set from the command line or via the property browser.

Pilot usage example:

fgfs --aircraft=c172p-pilot --prop:/sim/remote/pilot-callsign="someone" 

The copilot uses a special "aircraft", c172p-copilot, which piggybacks on the designated pilot and captures the local control inputs. A current limitation is that only the cockpit views are jitter free. There is also a noticeable delay between control inputs and effect, since they are passed via the the multiplayer protocol. The severity of this delay depend on round trip time and some other factors - the delay seems significantly longer than the round trip time itself which is due to buffering in the MP protocol receiver. That said, I have flown successfully as copilot in a setup with 100-120ms round trip time between both pilot and server and copilot and server (total delay >500ms). Landing is a bit exciting in that case, however.

Copilot usage example:

fgfs --aircraft=c172p-copilot --prop:/sim/remote/pilot-callsign="anybody"

Note: External views are jitter prone for the copilot.

Developer information

The main part of the Dual Control system is a set of generic Nasal modules and modified instrument files that form the core of the networked shared control functionality. See the link below for some more information.

External links