MINIACFS USER'S GUIDE


1. Introduction
   1.1 Advanced Concepts Flight Simulator (ACFS)
   1.2 Miniature ACFS (miniACFS)
   1.3 Stone Soup Simulator (SSS)
2. Setup
   2.1 System Configuration
   2.2 Installation
   2.3 Configuration Options
3. Operation
   3.1 Starting the Simulation
   3.2 Shutting Down the Simulation
   3.3 Freezing the Simulation
   3.4 Running Processes in Standalone
   3.5 Display Configuration
   3.6 Command Line Entries
4. Scenario Construction
   4.1 Initial Positions (IP)
   4.2 Datalink
   4.3 CDU Scripts
   4.4 ATC Simulation
   4.5 Data Collection
5. Flying Examples
   5.1 Programming the miniACFS FMS
   5.2 Programming the SSS FMS
   5.3 Taking Off


1. Introduction

The miniACFS is a piloted aircraft simulation which represents a miniature 
(or desktop) version of the Advanced Concepts Flight Simulator (ACFS) 
located at the NASA Ames Crew-Vehicle Systems Research Facility (CVSRF). 

1.1 Advanced Concepts Flight Simulator (ACFS)

The ACFS is a full-mission six degree-of-freedom motion flight simulator 
which represents a generic commercial transport aircraft with the following 
characteristics:

   * Maximum gross weight 225,000 pounds
   * 200 passenger capacity
   * Twin engine, 41,000 pounds thrust (each engine)
   * Speed: .78 Mach; range 2500 miles
   * Two person flight crew
   * All-electric airplane (no hydraulics)
   * Fly-by-wire; active flight controls
   * Relaxed static margin; load alleviation
   * T-tail, low wing, supercritical airfoil
   * Composites for primary and secondary structures
   * High-density fuel

The ACFS has been described as containing aerodynamics and autoflight controls 
representative of a Boeing 757-class aircraft coupled with Boeing 747-400 
style flight instruments.

1.2 Miniature ACFS (miniACFS)

The miniACFS can be configured to run on one or more SGI workstations. The 
pilot displays consist of Primary Flight Displays (PFDs), which contain an 
Attitude Direction Indicator (ADI) and a Horizontal Situation Indicator (HSI), 
and Secondary Flight Displays (SFDs), which provide information on aircraft 
systems. Hardware devices are emulated through additional graphical displays. 
The Mode Control Panel (MCP) provides access to the autopilot and autothrottle 
systems. The Control Display Units (CDUs) provide access to the Flight 
Management System (FMS). The Navigation Display Control Panels (NDCPs) 
provide control over the HSI displays. The Aircraft Control Panels (ACPs) 
provide access to additional hardware controls such as throttles, flaps, 
speed brakes, and landing gear. Pilots can interact with this system via 
mouse or touchscreen inputs and an optional 3 degree-of-freedom joystick 
with integral button/lever box. 

1.3 Stone Soup Simulator (SSS)

The Stone Soup Simulator (SSS) represents a version of the miniACFS in which 
proprietary portions of the software have been replaced to enable limited 
distribution.  The following contributors provided software for the initial
release:

   * NASA Langley Research Center (LaRC) provided the software for
     the Flight Management System (FMS).
   * MIT Aeronautical Systems Laboratory (ASL) provided the software 
     for the autoflight/autothrottle system.
   * NASA Ames Propulsion Control Automation (PCA) Research Team 
     provided the flight surface control algorithms.

For more information regarding the SSS and miniACFS simulators see 
"http://olias.arc.nasa.gov/~johnk/sss/sss.html".


2. Setup

2.1 System Configuration

The miniACFS can be configured to run on one or more SGI workstations. It 
currently runs on either IRIX 5.3 or IRIX 6.2 operating systems. The system 
requires both C and FORTRAN (f77) compilers to be installed in order to 
rebuild the simulation. For IRIX 5.3, patches 313 and 483 must be installed. 
For IRIX 6.2, the suggested compiler is FORTRAN 7.0, however the system 
can also be supported by using FORTRAN 6.2 with patches 1569, 1572, 1584, 
and 1684. The simulation is currently only configured to run under C-shell. 
It is also recommended that the "click to get keyboard focus" option be turned 
off so simulation display windows will not be automatically "pushed" and 
"popped".

2.2 Installation

   1. Copy the miniACFS directory and associated files to the desired location.

   2. Copy the sample.miniACFSrc file (from the miniACFS/MISC directory) into 
      your home directory (i.e. ~/.miniACFSrc).

   3. Modify the first line in the ~/.miniACFSrc file (which sets MINIACFS_DIR)
      to point to the miniACFS directory.

   4. If using korn shell, add the line "exec csh" to the bottom of the 
      ~/.profile file (in order to use c-shell for all spawned processes).
      (See miniACFS/MISC/.profile file for example).

   5. Add the line "source ~/.miniACFSrc" to the ~/.cshrc file (in order to 
      set the appropriate aliases for all spawned processes).
      (See miniACFS/MISC/sample.cshrc file for example).

   6. Modify the /etc/services file to include the following services: 

      #
      # miniACFS services
      #
      pfd1-server     7005/tcp               # ECL  PFD1 service
      pfd2-server     7010/tcp               # ECL  PFD2 service
      mcp-server      7100/tcp               # ECL  MCP service
      sfd1-server     7200/tcp               # ECL  SFD1 service
      sfd2-server     7210/tcp               # ECL  SFD2 service
      sfd3-server     7220/tcp               # ECL  SFD3 service
      sfd4-server     7230/tcp               # ECL  SFD4 service
      ast-server      7300/tcp               # ECL  AST service
      ndcp1-server    7310/tcp               # ECL  NDCP1 service
      ndcp2-server    7320/tcp               # ECL  NDCP2 service
      acp1-server     7330/tcp               # ECL  ACP1 service
      acp2-server     7340/tcp               # ECL  ACP2 service
      acp3-server     7350/tcp               # ECL  ACP3 service
      acp4-server     7360/tcp               # ECL  ACP4 service
      fms-server      7600/tcp               # ECL  FMS service
      cds-server      7605/tcp               # ECL  CDS service
      cdu1-server     7610/tcp               # ECL  CDU1 service
      cdu2-server     7615/tcp               # ECL  CDU2 service
      audio1-server   7640/tcp               # ECL  AUDIO1 service
      audio2-server   7650/tcp               # ECL  AUDIO2 service
      dts-server      7700/tcp               # TP   DTS service
      dd-server       7710/tcp               # TP   DD service

      # PACS/CTAS/SECTOR/ASLATC Services

      atc-server      7020/tcp        # new CTAS???
      ctas-server     101101/tcp      # CTAS communications manager
      aslatc-server   7030/tcp
      sector-server   7040/tcp
      monitor-server  7045/tcp

      (See miniACFS/MISC/services file for example). 
      [Note: This requires root privilege].
      [Note: Port numbers may need to be changed for individual machines].

2.3 Configuration Options

The miniACFS is configured to run on either a single or distributed SGI 
workstations. To run on more than one machine:

   1. Modify the "LOGICALS" file in "miniACFS/LOGICALS". "LOCALHOST" is 
      the keyword which specifies that the server host name is the same 
      as the host name.

   2. Configure the "miniACFS/command/sim" (or "sim.<xxx>") script to run 
      the server scripts (ex. "serv_pfd1") of the desired processes, with 
      the configuration file name (ex. "pfd_config.dat") as an optional 
      argument (ex. "serv_pfd1 pfd_config.dat"). The server scripts will 
      run the corresponding process (ex. "pfd1_exec") on the host specified 
      in the "LOGICALS" file. [Note: Running on remote hosts will require 
      configuration of the "~/.rhosts" file].

   3. To configure the "miniACFS/command/sim" (or "sim.<xxx>") script to 
      run on dual-headed machines, set the DISPLAY environment variable 
      (ex "setenv DISPLAY 0.0") prior to running the server script. The 
      server script will pass the currently defined DISPLAY variable to 
      the host selected in the "LOGICALS" file.

   3. Configure the "miniACFS/command/cleanup" (or "cleanup.<xxx>") script 
      to use remote shell commands for cleaning up the server processes 
      in the event of an abnormal shutdown.

The miniACFS is configured to use either a graphical or hardware joystick. 
To use the "flybox" hardware joystick:

   1. Turn on the "flybox_enable" option and turn off the "softstick_enable" 
      option in "miniACFS/ast/data/ast_config.dat".

   2. Plug the serial connection into port #1 or #2 (or both if using two 
      joysticks for dual cockpit operation).

      [Note: The following requires root privilege].
      If using port 1 (SGI alt console), you may need to:

         a. Turn off the "respawn" option in "/etc/inittab".
            For example, change:
               t1:23:respawn:/sbin/getty ttyd1 co_9600  # alt console
            to:
               t1:23:off:/sbin/getty ttyd1 co_9600      # alt console

         b. Type in "init q" to activate change in inittab (or reboot).

         c. Change the permission of /dev/ttyd1 to 666.
            For example: chmod 666 /dev/ttyd1
       
   3. For additional information on the "FlyBox", contact BG Systems: 
      3272 Bryant Street, Palo Alto, CA 94306
      Tel (415) 858-2628, Fax (415) 858-2685,
      http://www.bgsystems.com/products/FlyBox.html


3. Operation

3.1 Starting the Simulation

   1. Open a shell window.

      The opened shell window, referred to as the operator window, 
      is where the operator sends commands to the UNIX shell, when 
      starting the simulation, and to the main program, when running 
      the simulation.

   2. Type "cmd" in the new shell window.

      The command "cmd" changes the current directory to the 
      "miniACFS/command" directory for starting the simulation.

   3. Type "sim" (or "sim.<xxx>") in the same window.

      The "sim" script starts all servers on their desired hosts 
      before starting the main program. This script file may be 
      customized to support different configurations.

      To run with a scenario file, type in "sim" followed by the 
      scenario file name (ex. "sim ksfo28r.dat").

      To run with a default IP point, type in "sim" followed by the 
      default IP number (ex. "sim 1").

      Note: Running "sim" without specifying a scenario file name, 
      or a default IP number, results in simulation intializing at 
      a default IP point (currently default IP number 11).

   4. Wait for "Enter ru(n) >" prompt.

   5. OPTIONAL: Setting the "Subject Number" and "Exp. Condition".

      If you wish to set the "Subject Number", enter "sn" followed 
      by the subject number (ex. "sn 1"). Note: The "Subject Number" 
      appears in the data collection output file.

      If you wish to set the "Exp. Condition", enter "ec" followed 
      by the experiment condition number (ex. "ec 14"). Note: The 
      "Exp. Condition" enables different software options for various 
      experimental conditions (default is 0).

   6. Type "run".

3.2 Shutting Down the Simulation

A response of "ex" (or "exit") to the "Input>" prompt will cause the 
simulation to shutdown gracefully. If an error occurs during shutdown, 
the "cleanup" script, located in the "miniACFS/command" (or "cmd") 
directory, may be used to kill all simulation processes.

3.3 Freezing the Simulation

A response of "fr" (or "freeze") at the "Input>" prompt will cause the 
aircraft to freeze at its current state. Some of the cockpit interfaces 
may still be active, but it is advised not to make any changes to them 
while in freeze mode. Typing in "ru" (or "run") will cause the simulation 
to resume run mode.

3.4 Running Processes in Standalone

Processes can also be run in standalone mode. This can be useful for 
demonstrating a display without bringing up the entire simulation. 
For example, to run PFD1 in standalone mode, enter "pfdp" to go to the 
"miniACFS/pfd/program" directory, and then enter "pfd1_exec a". The "a" 
argument instructs the process to run in standalone mode, while the "c" 
argument instructs the process to wait for a client connection.

3.5 Display Configuration

The following consists of the primary simulation display processes:

   * Primary Flight Display processes: pfd1_exec, pfd2_exec
   * Secondary Flight Display processes: sfd1_exec, sfd2_exec, 
     sfd3_exec, sfd4_exec
   * Mode Control Panel process: mcp_exec
   * Control Display Unit processes: cdu1_exec, cdu2_exec
   * Navigation Display Control Panel processes: ndcp1_exec, ndcp2_exec
   * Aircraft Control Panel processes: acp1_exec, acp2_exec, acp3_exec,
     acp4_exec
   * AST process (Soft Joystick Display Option): ast_exec

Activation of any of the aircraft controls displayed on the screen is 
carried out by using the left mouse button (or optional touchscreen). 
The display windows can be "popped" by pressing <Alt-F1>, "pushed" by 
pressing <Alt-F3>, "moved" by pressing <Alt-F7>, or "iconized" by pressing 
<Alt-F9>.

Display processes can be repositioned or resized by modifying the 
process configuration file specified in the "sim" command. For example, 
the command "serv_pfd1 pfd_config.dat" specifies that the configuration 
file "miniACFS/pfd/data/pfd_config.dat" is to be used to set the 
configurable display variables for "pfd1_exec". If no configuration file 
is specified, the default display parameters are used. 

For processes which display aircraft controls, the configuration file 
also contains a "sound_on" option which, when invoked, enables a "click" 
sound to provide aural feedback on mouse button actions. Note: Running 
a display process in standalone mode prints the window position upon 
shutdown.

3.6 Command Line Entries

Various commands can be input on the command line. Typing 'help' at the
command line produces the following command list:

     Available Commands: 
   ru - Run simulation
   fr - Freeze simulation
   re - Reset simulation
   ex - Exit simulation
   qu - Exit simulation
   co <>- Records comment <> to data collection
   fail - pca surface failure
   ip # - Sets initial position to # (or scenario file name)
   sn # - Sets subject number to #
   ec # - Sets experimental condition to #
   sf # - Sets speed factor to #
   wd # - Sets wind direction to # (deg)
   ws # - Sets wind speed to # (knots)
   tb # - Sets turbulence magnitude to # (0-9)
   msg# - Where msg# is # of a canned message
   imp - Allows entry of impromptu uplink message
   cl - Clear current message
   cc - Ctas Connection 1: on 0: off
   ds - Datalink Setup 0: cdu only 1: cdu + ddr
   hi - Print message history
   help - to see this message


4. Scenario Construction

The miniACFS uses files for configuring an experiment run.

4.1 Initial Positions (IP)

Files containing flight initial position information are stored in the 
"miniACFS/host/scenario" directory. These files may also contain condition
based event triggers, such as aircraft malfunctions. The miniACFS can be 
initialized on the ground or in the air. An example of a scenario file 
containing an initial position on the ground is as follows:

!*******************************************************************
!  BASE SCENARIO
!               A/C ON GROUND
!  		SFO END RUNWAY 28R
!******************************************************************
!******************************************************************
! Event:   None.
!******************************************************************

LEG [

SIM_IC:
 [ INIT_MAGVAR:         16.0,
  ];

AC_IC:
 [ CARGO_WEIGHT: 	42638.0,
   PAYLOAD_FILL_RATE: 	0.0,
   AUTO_PAYLOAD_FILL:	0,
   LEFT_FUEL:		20000.,
   RIGHT_FUEL:		20000.,
   FUEL_FILL_RATE: 	0.,
   AUTO_FUEL_FILL:	0,
   ALTITUDE:		25.0,
   SPEED:		0.0,
   FLAP:		0,
   HEADING:		282.0,
   LONGITUDE:		-122.356865331532,
   LATITUDE:		37.6135105267167,
   CALL_SIGN:		"NASA12",
   FMS_INIT_SCRIPT:	200,
  ];

FROM_CITY: !San Francisco
 [ LONGITUDE:	-122.1622807,
   LATITUDE:	37.53271560,
 ];

TO_CITY: !Los Angeles
 [ LONGITUDE:	-118.431111,
   LATITUDE:	33.933306,
 ];

];! END OF LEG

An example of a scenario file containing an initial position in the air 
(which also contains optional ATC information) is as follows:

!*****************************************************
!  CTAS 1 Scenario - Northeast of CEDAR CREEK
!
!****************************************************

!
!   	LEG 1
!

LEG [

SIM_IC:
 [ INIT_MAGVAR:         8.0,
   SECTOR_ACID:		62,
   SECTOR_CTRL:		62,
  ];

AC_IC:
 [ CARGO_WEIGHT: 	42638.0,
   PAYLOAD_FILL_RATE: 	0.0,
   AUTO_PAYLOAD_FILL:	0,
   LEFT_FUEL:		20000.,
   RIGHT_FUEL:		20000.,
   FUEL_FILL_RATE: 	0.,
   AUTO_FUEL_FILL:	0,
   ALTITUDE:		33000.0,
   SPEED:		280.0,
   FLAP:		0.0,
   HEADING:		82.0,
   LONGITUDE:		-99.2,
   LATITUDE:		32.2,
   CALL_SIGN:		"NASA12",
   FMS_INIT_SCRIPT:	100,
  ];

FROM_CITY: 
 [ LONGITUDE:	-122.37333,
   LATITUDE:	37.61833,
 ];

TO_CITY:
 [ LONGITUDE:	-97.041453,
   LATITUDE:	32.896432,
 ];

];! END OF LEG 1

The altitude, latitude, longitude, heading, velocity and flap setting 
define the aircraft's state at startup. West longitude is specified by 
a negative number. TIME-ZULU indicates the simulated time at startup. 
If TIME-ZULU is not specified, the current time is used.

4.2 Datalink

The miniACFS has a datalink capability in which datalink messages can be 
sent from the operator window to the cockpit. The operator's datalink 
interface allows for both constructing messages and sending canned 
messages. Canned messages are stored in "miniACFS/host/data/datalink.dat". 
This file must be processed by running "dl_create_db" , in the 
"miniACFS/host/program" directory, prior to running the simulation.

The miniACFS provides for the autoloading of datalink messages into the FMS 
(see CDU Scripts) and the MCP. The current configuration accesses the 
datalink message through the CDU (by pressing the "ATC" button on the CDU). 
[Note: The SSS accesses datalink messages by pressing the "DATALINK" button 
on the CDU].

Prior to receiving datalink messages, logon to an ATC system.

   1. Go to ATC page (ex. press ATC) [or DATALINK for the SSS].

   2. Enter FLT NO (ex. type "NASA1" into the scratchpad, 
      then press 2L).

   3. Enter LOGON TO (ex. type "EXP", for experimental,
      into the scratchpad, then press L1).

   4. Select the SEND prompt to send the logon datalink 
      message (ex. press R1).

4.3 CDU Scripts

The miniACFS provides for autoloading datalink messages into the FMS. The 
file "miniACFS/fms/data/cdu_script.dat" is used to emulate button presses 
for each datalink message.

The "FMS_INIT_SCRIPT" field, in the scenario file, can to used to run the 
specified autoloading script at initialization.

4.4 ATC Simulation

The miniACFS simulation has been used with various air traffic control 
simulations and pseudo plane generators. The miniACFS can be made to 
communicate with select ATC simulation programs through the "atc-server". 
The miniACFS can also be made to communicate with other miniACFS simulations 
by specifying "MULTICAST" in place of the selected "atc-server". The following 
ATC and pseudo plane generators have been used with the miniACFS:

   * Sector is an ATC simulation that conforms with current ATC displays.

   * ASLATC, developed by MIT's Aeronautical Systems Laboratory, is an 
     ATC simulation that contains a robust traffic generator. It can be 
     used to generate pseudo aircraft for the miniACFS simulation.

   * CTAS, the Center Tracon Automation System, is a system being developed 
     at Ames that is considered a next generation ATC system.

   * PAS, the Pseudo Aircraft System, is a pseudo plane generator which 
     is normally used with CTAS.

4.5 Data Collection

During a run, data can be collected to record selected aircraft state 
and pilot action variables. The amount and rate of data collected can be 
easily tailored to an experiment by modifying the date collection file,
"miniACFS/host/work/dcs/dcs_exec.c", and then rebuilding the main 
host (or modsch) process [see programmer's guide]. The output file is 
stored in the "miniACFS/host/output" directory. The filename is in the 
format "DC_MMDDYY_HHMM.<host name>" where "MMDDYY" is the month, day 
and year, and "HHMM" is the time in hours and minutes.


5. Flying Examples

The following is an example for programming the FMS, after initializing 
the simulation with the "ksfo28r" scenario file, along with a sample 
procedure for taking off.

5.1 Programming the miniACFS FMS

   1. Go to RTE page (ex. press RTE).

   2. Enter COMPANY RTE (ex. type "SFOLAX01J" into the scratchpad, 
      then press 2L).

   3. Go to PERF INIT page (ex. press INIT REF, then press 6L and 
      then press 3L).

   4. Enter ZFW (i.e. zero fuel weight) (ex. type "160" into the scratchpad, 
      then press 3L).

   5. Enter RESERVES (ex. type "5" into the scratchpad, then press 4L).

   6. Go to DEPARR page (ex. press DEP ARR).

   7. Go to the DEPARTURES page (ex. press 1L).

   8. Select the PORTE1 departure (ex. press NEXT PAGE, then press 3L). 

   9. Select the transition AVE (ex. press 2L).

   10. Select Runway 28R (ex. press 2R). 

   11. Go to RTE page (ex. press RTE).

   12. Activate the flight plan (ex. press 6R from RTE page).

   10. Execute the flight plan (ex. press EXEC button).

5.2 Programming the SSS FMS

   1. Go to POS INIT page (ex. press 6R on IDENT page).

   2. Enter the LAST POS (i.e. last position) into the SET INS POS
      (ex. press 1R then press 4R).

   3. Go to RTE page (ex. press 6R on POS INIT page).

   4. Enter COMPANY RTE (ex. type "KSFOKLAX001" into the scratchpad, 
      then press 2L).

   5. Go to PERF page (ex. press 6R on RTE page).

   6. Enter ZFW (i.e. zero fuel weight) (ex. type "160" into the scratchpad, 
      then press 3L).

   7. Enter RESERVES (ex. type "5" into the scratchpad, then press 4L).

   8. Go to TAKEOFF page (ex. press 6R twice from PERF page).

   9. Enter FLAP (i.e. takeoff flaps) (ex. press "25" into the scratchpad, 
      then press 1L).

   10. Go to RTE page (ex. press 6R from TAKEOFF page).

   11. Activate the flight plan (ex. press 6R from RTE page).

   12. Execute the flight plan (ex. press EXEC button).

5.3 Taking Off

   1. Set landing gear down.

   2. Set flaps (ex. 25).

   3. Set target speed (ex. 145).

   4. Set target altitude (ex. 27000).

   5. Turn the left flight director on (ex. flip left F/D switch).

   6. Turn the autothrottles on (ex. flip A/T switch).

   7. Select THR mode.

   8. At takeoff speed, pull back on the joystick.

      Note: Joystick options include a graphical "soft" joystick 
      display or a hardware "flybox" joystick. For simulation without 
      a joystick, select CMDC (to engage autopilot) and then select 
      FLCH (for flight level change).

   9. When a positive rate of climb has been established, raise the gear.

   10. To engage the FMS, select LNAV and VNAV buttons.

   11. Raise flaps according to flap schedule.