FG1000/development

From FlightGear wiki
Jump to navigation Jump to search


Background

1rightarrow.png See Complex Canvas Avionics for the main article about this subject.

Status

Updated: 08/2020

Note  The PFD/MFD will increase your VRAM utilization by about 100MB/instance.

Key features:

  • Primary Flight Display (PFD). Fully functional and 99% complete vs. the real thing. (Alerts, ALT units and alternative HSI displays are the remaining pieces)
  • Multi Function Display (MFD). Fully functional and 90% complete vs. the real thing. Includes moving map, navigation features, flightplan, traffic, engine information. .
  • MFD and PFD can be displayed
    • as part of an aircraft cockpit
    • as a window within FlightGear
    • on a separate window or monitor using FGQCanvas.
  • GFC700 autopilot. Fully functional and integrated with the route manager, PFD and MFD. Includes all modes apart from VNV (vertical navigation to follow a flightplan) and BC (ILS back-course).

The following aircraft are available from the official hangar and use the FG1000:

Next steps:

  • Writing the remaining pages
  • Styling the pages - making the iconography match Garmin exactly.

Page Status

This is the current status of the individual pages. Full progress bars indicate that they are functionally complete, though the iconography is not correct.

Page Reference Status Notes
Navigation Map 100}% completed See Layers below
Traffic Map 100}% completed Zoom controls unclear
Storm Scope 0}% completed
Weather Data Link 0}% completed
TAWS-B 0}% completed
Airport Information 100}% completed Needs additional page of AOPA information, which we don't have
Intersection Information 100}% completed
NDB Information 100}% completed
VOR Information 100}% completed
User WPT Information 0}% completed
Trip Planning 0}% completed
Utility 0}% completed
GPS Status 0}% completed
XM Radio 0}% completed
System Status 0}% completed
Active Flight Plan 100}% completed Viewing and editing of the active flight plan implemented. VNAV and the "wide view" not yet implemented
Flight Plan Catalog 0}% completed
Stored Flight Plan 0}% completed
Checklist 100}% completed
Nearest Airports 100}% completed
Nearest Intersections 100}% completed
Nearest NDB 100}% completed
Nearest VOR 100}% completed
Nearest User Waypoints 0}% completed
Nearest Frequencies 0}% completed
Nearest Airspaces 0}% completed

This is the current status of the major functional elements

Area Status Notes
Navigation - FMS 100}% completed
Softkeys 100}% completed
MENU key 0}% completed
NAV/COM 90}% completed Volume controls to be added
GPE Header 0}% completed

Challenges

Performance

Nasal as such is fast, and compared with the cost of rendering the terrain, rendering a canvas display is fast on the GPU (you can test by rendering but not updating a canvas display), and unless you're doing something very inefficient, calculating a display but not writing it to the property tree is fast (you can test this by disabling the write commands). It's the property I/O which you need to structure well, and then canvas will run fast. And of course the complexity of your underlying simulation costs - if you run a thermal model underneath to get real temperature reading, it costs more than inventing the numbers. But that has nothing to do with canvas. [1]


it's a lot of work to code all these displays which someone has to do, but there's no reason to assume it'd be hopeless performance-wise.[2]

we need to be realistic here: The G1000 is a fairly significant piece of computer hardware that we're going to emulate. It's not going to be "free" particularly for those on older hardware that's already struggling. However, hopefully we can offload a chunk of the logic (route management, autopilot/flight director) to the core, and do things like offline generation of terrain maps to minimize the impact.[3]

Possible Work

Architectural TODO List

This is a short list of architectural improvements I've noted during development that need to be revisited:

  • Use NavMap for MFD Navigation Map, DirectTo, Nearest, Information pages.
  • Separate out the HSI, tapes from the PFD and make them generic MFD UI Elements
  • Improve the performance of the maps, perhaps using a cache for queries, definitely by more aggressive clipping of the SlippyMap layers based on map size.

The layers table shown above mentions a few limitations and ideas, such as:

Nasal/Canvas

C++

  • fix up projection issues, and adopt Gijs' projection handling code for the hard-coded PUI Map, to get rid of the standard Sanson-Flamsteed projection
  • adding a profile view, probably in conjunction with terrain sampling
  • using atlas code to generate heightmaps/topography
  • adding ESRI shapefile support to the Canvas system
  • adding PDF rendering support the Canvas system