############## GPL # GPS ZKV500 # Sébastien MARQUE ############## 2008, Paris (France) note that it is still under heavy development, some functions planned haven't been 100% tested yet... there surely will be bugs or errors (most of the time: nasal runtime error : props.setValue() with non number, etc.) CONTENTS ========= 1. A bit of history 2. Install onboard 1. Normal installation 2. Debugging installation 3. Without 3D interface 3. Global presentation 4. User's Manual 1. Powering ON 2. List of screens 3. The modes 4. Editing some text 5. FG integration 6. Examples 7. The future 1. A BIT OF HISTORY =================== Don't search on the market this device, it doesn't exists! :p Indeed I was looking how to create a GPS device in my favorite aircraft, I found the nice 3D object in the not less nice Grob-G115, which it was told me it is intented for the LX5000 gps (http://www.wingsandwheels.com/manuals.htm). So I began to write some nasal code, using the C++ implementation of KLN89 already built-in FG, to fit as much as possible the LX5000 specifications. But after some tries, I began to create on my own way the interface (which is much more funny for me than following a manual :)). The ZKV500 was born. (read ZaKharoV, which is my current nickname, from Proktor Zakharov in Sid Meyer's Alpha Centauri game :)) It keeps by default the very nice 3D object from Jon Stockill, a bit modified. I created also for this device a special font in order to make the LCD diplay more... lcd-compliant (see Fonts/lcd.README). 2. INSTALL THE ZKV500 ONBOARD ============================= 1. Normal installation For now the ZKV500 seats in Aircraft/Instruments-3d/zvk500/, making it easily available for all aircrafts. To install it, just add these lines in your config files, inside the section: Aircraft/Instruments-3d/zkv500/ZKV500.nas Aircraft/Instruments-3d/zkv500/MainScreens.nas Aircraft/Instruments-3d/zkv500/TurnpointScreens.nas Aircraft/Instruments-3d/zkv500/TaskScreens.nas Aircraft/Instruments-3d/zkv500/AirportScreens.nas [example from Lionceau: Aircraft/Lionceau/lionceau-base.xml] Please note that is mandatory for namespaces reasons. Then in your panel configuration file, just put the 3D model, as usual: Aircraft/Instruments-3d/zkv500/ZKV500.xml 0.002 -0.051 -0.022 [example from Lionceau: Aircraft/Lionceau/Models/Panel/front-panel.xml] Your ZKV500 is ready to be powered on! The ZKV500 has IO capacities: routes are red from $FGHOME/Routes and written in $FGHOME/Export, the bookmarks are red and written in $FGHOME/Export/bookmarks.xml An easy way to populate your $FGHOME/Routes directory is a perl script of my own (see the end of file for an how-to). You can also editing by hand, the format is simple and conform to the format used by the KLN89 TL 43.28838900 000.04963900 0 NBD TARBES NDB Xroads freq: 321 LFCB 42.800000 000.600000 2028 APT Bagneres de Luchon In a valley The less easy way is to edit your flightplan direcly from the ZKV500, but as it has very limited editing capacities, and the search of already-known waypoints is limited to airports, it is not a really recommended way. The $FGHOME/Export/bookmarks.xml file contains favorites points, it has quite the same format than a route file: ... LFBT 43.178643 -0.006341 1179.785445 Tarbes Ossun Lourdes no infos APT ... The ZKV500 is quite useful to create bookmarks on the fly. 2. Debugging installation if you want to debug the nasal, you can use the "debugging tool" I've created: - comment in your aircraft files all gps-related installation - edit the Aircraft/Instruments-3d/zkv500/*.nas files with your favourite text editor - in the Nasal console from FGside type: var zkv_dir = getprop("/sim/fg-root") ~ "/Aircraft/Instruments-3d/zkv500/"; io.load_nasal(zkv_dir ~ "zkv_dbg.nas", "zkv_dbg"); zkv_dbg.reload_zkv_code(); - click on "Execute" - find errors - modify source code then re-click on "Execute" until satisfaction (or death :D) 3. Without 3D interface if you want to use the zkv500 without the 3D interface and all installation steps as described above, type in a Nasal console: var zkv_dir = getprop("/sim/fg-root") ~ "/Aircraft/Instruments-3d/zkv500/"; io.load_nasal(zkv_dir ~ "zkv_dbg.nas", "zkv_dbg"); zkv_dbg.test(); 3. GLOBAL PRESENTATION ====================== The interface is simple: (http://seb.marque.free.fr/fichiers/flightgear/zkv500/presentation.png) * 4 knobs turning left (left mouse clic) or right (right mous clic) * 3 white buttons * 1 LCD display * 2 LEDs (red and green) enter escape start button button button PAGE|------------------------|SELECT KNOB| |KNOB | LCD DISPLAY | | 5 LINES | MODE| |ON/OFF KNOB|------------------------|KNOB red green led led -> PAGE knob allows you to cycle in the different pages available for each mode. -> SELECT knob allows yo to navigate in a page, or select element, or edit some simple text (depending of screen). -> MODE knob allows you to select a mode, and acces to the ZKV500 settings you can access this knob at any time, any screen. -> ON/OFF knob allows you to turn ON and OFF the ZKV500, note it is a knob because I plan to associate some sounds with the ZKV500, this knob then could be used to change the volume. The goal of each button depends of the displayed screen. 4. USER'S MANUAL ================ 1. Powering ON To power ON, just left click on the ON/OFF knob. Clicking again wil make it turning OFF. When powered you are on the ModeAndSettings screen. 2. Screens list *** ModeAndSettings *** From this screen you can change from a mode to another mode (see 4.3 Modes, below) START...enter in a mode PAGE....enter in settings pages (cycle) SELECT..modify settings the available settings are: * units you can change the displayed unit for altitude, distance and speed. the units are long named, on other screens only short name wilm be displayed. * thresolds you can change the thresold from when the ZKV500 will alert you about next waypoint approach, or will load the next waypoint into calculation. *** PositionMain *** This page gives you infos about the aircraft position. You find it in every modes. ENTER...save the position as a bookmark (entering in Edit screen) LAT: latitude in deg:min:sec LON: longitude in deg:min:sec ALT: altitude HDG: geographic cap (! not magnetic cap, or aircraft heading) SPD: speed *** Odometers *** This screen gives you odo-values. You can find it in every modes. ESCAPE...reset odometers, except TRIP ODO: travelled distance TRIP: total travelled distance TIME: elapsed time from last reset AVG HDG: average heading AVG SPD: average speed *** WindInfos *** This screens gives you infos about wind as it should be calculated by the GPS, indeed, as the calculation is already done elsewhere, it takes the value from /environnement/* node (btw I don't really know how to calculate correctly these values). You need to have a airspped > 10kts for having it work. This screen is available on every modes SPEED: windspeed FROM: the direction where the wind come from (geographic North) *** NavigationMain *** This screen gives the related position of the aircraft about the calcualted route. It is only available in TURNPOINT and TASK modes. ENTER...TURNPOINT mode: add the actual position to the route, TASK mode: jump to next waypoint START...save the route (mode TURNPOINT only) ID: Id of the waypoint to go [waypoint type] BRG: bearing from the aircraft to the waypoint (geographic) DST: remaining distance XCRS: course error in degree (in distance unit) TTW: remaining estimated time The graph represent the position of the aircraft along the leg. Each + means 1°, the | symbol represents the route, the little aircraft represents... the aircraft. *** AirportMain *** This screen gives infos about the nearest, or a specific searched airport (see SearcAirport screen, below). It is only reachable from AIRPORT mode. ENTER...add the airport to route ESCAPE..get the nearest airport START...add airport to bookmarks, and enter TURNPOINT mode, to go directly NEAREST or SEARCHED APT: OACI code of airport ELEV: airport altitude DIST: distance between aircraft and airport BRG: bearing from aircraft to airport (geographic) RWY: best runway calculated from known wind, it is to say not really useful when airport is very far away... ETE: estimated time enroute to go *** AirportInfos *** This screen gives infos about the airport (nearest or searched). It is only reachable from AIRPORT mode. SELECT...navigate in the runway list (not yet implemented) First line gives the full name of airport Lines below show the runways with the format heading (length in meters / width in meters) *** SearchAirport *** This screen allows you to search an airport from OACI code. It is reachable from AIRPORT mode. If the search is successful, the AirportMain screen is shown, in other case the text is erased, and you are invited to retry. SELECT...modify letter (from A to Z then 0 to 9, cycled) ENTER....next step ESCAPE...back to AirportMain screen, without search START....search the given OACI code *** TurnpointSelect *** This screen shows a list of already bookmarked gps points. It is only available in TURNPOINT mode. SELECT...navigate through the list (eventually through multiple pages) START....begin the navigation from actual position to the bookmark *** TurnpointInfos *** This screen is not yet implemented. It will gives infos about the bookmark *** TaskSelect *** This screen allows you to choose a route (if one available). It is only available in TASK mode. SELECT...navigate through the routes list (eventually through multiple pages) START....load the route, and begins navigation *** WaypointInfos *** Not yet implemented, will give infos about waypoint. Only available in TASK mode. *** WaypointsList *** This screen shows the list of waypoint loaded from a route. SELECT...navigate through the list *** WaypointEdit *** This screen allows you to name a gps point in order to bookmark it. SELECT...cycle letters (from A to Z then 1 to 9) ENTER....next step ESCAPE...abort saving bookmark START....save bookmark 3. the 4 modes *** POSITION *** The simpliest one, just give information about the aircraft position. You can save bookmarks from this mode (pressing ENTER in PositionMain screen). PAGE...cycle through these screens (both ways): PositionMain, Odometers, WindInfos *** AIRPORT *** Useful to know wher you can put you aircraft safely on the ground, gives other infos as the best runway, it is possible to search an airport (turn the PAGE knob until Search airport page), add the airport to a route or as a bookmark (automatically called by airports ID and name). PAGE...cycle through these screens (both ways) AirportMain, NavigationMain, PositionMain, Odometers, WindInfos, AirportInfos, SearchAirport *** TURNPOINT *** Useful mode to join a specific point of interest, or to navigate around. PAGE...cycle through these screens (both ways) TurnpointSelect, NavigationMain, PositionMain, Odometers, WindInfos, TurnpointInfos *** TASK *** Most useful mode :). Follow the route to go through long distances, without being lost at anytime (even with no VOR or NDB near enough to get capted by radios). Or if you aren't IFR skilled :D When approaching a waypoint, a red led blink (this can be set in ModeAndSettings screens) When on the point (idem), it loads autmatically the next point and calculate the leg infos When the last point is reached, it come back to TaskSelect screen to allow chosing an other route. PAGE...cycle through these screens (both ways) TaskSelect, NavigationMain, PositionMain, Odometers, WindInfos, WaypointInfos, WaypointsList 5. FG INTEGRATION ================= You can change the waypoints directly from the property tree (/instrumentation/gps) or using the GUI (Menu Instruments -> GPS Settings). Please note that, at this stage of development, I haven't yes set listeners on the properties, when changing the waypoint, new route is automatically calculated, but changing them don't call yet the correct mode and page. 6. PRACTICAL EXAMPLES ===================== 7. THE FUTURE ============= The ZKV500 still lacks many features I plan to implement. I stop adding features for now, as I want it to be the more bug-free possible before creating other bugs. 1. PLANNED FEATURES * integrated help * description pages (waypoints and airports) * more useful informations * make use of green led (for which use? surely depends of the above) * altitude control * two ways routes (toward and back) 2. PLANNED FEATURES LIMITED BY FG "API'S" * search for VOR/TAC, NDB and FIX capacities 2. NOT PLANNED FEATURES * graphical view of regions 8. ANNEXES ========== 1. creating flightplans with ./flightplan You can get ./flightplan from this link: http://seb.marque.free.fr/fichiers/scripts/perl/flightplan Make it executable, best to set $FGROOT and $FGHOME to respectives folders For creating a flightplan from LFPT to LFBD: $ ./flightplan -d lfpt -a lfbd --wpt This will write in $FGHOME/Routes a file named lfpt-lfbd.xml, suitable for the ZKV500 Sébastien MARQUE seb.marque@free.fr