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 Computer (FMC). 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. 

For more information regarding the miniACFS part-task laboratory see 
"http://olias.arc.nasa.gov/facilities/part-task/part-task.html".

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 Computer (FMC).
   * 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.

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 
appears to 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 .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/.cshrc file for example).

   6. Modify the /etc/services file to include the following 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"
      "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"
      "atc-server      7400/tcp               # ECL  ATC service"
      "fmc-server      7600/tcp               # ECL  FMC service"
      "cds-server      7605/tcp               # ECL  CDS service"
      "cdu1-server     7610/tcp               # ECL  CDU1 service"
      "cdu2-server     7615/tcp               # ECL  CDU2 service"
      "sec-server      7620/tcp               # LJB  SECONDARY TASK service"
      (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 use either a graphical or hardware joystick. 
To use hardware joystick (ex. "flybox"), turn off "softstick_enable" option 
in "miniACFS/ast/data/ast_config.dat", and plug serial connection into 
port #1 or #2 (or both if using two joysticks for dual cockpit operation).
[Note: We use the "FlyBox" from BG Systems: 3272 Bryant Street, 
Palo Alto, CA 94306, Tel (415) 858-2628, Fax (415) 858-2685].

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

   1. Invoke the server_hosts_option in "miniACFS/acfs/data/acfs_config.dat".

   2. Modify the server host names in "miniACFS/acfs/data/server_hosts.dat".

   3. Configure the "miniACFS/command/sim" script to use remote shell 
      commands for starting up the server processes. [Note: this requires 
      configuring the "~/.rhosts" file].

   4. Configure the "miniACFS/command/cleanup" script to use remote shell 
      commands for cleaning up the server processes in the event of an 
      abnormal shutdown.

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" 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.

   4. Answer questions at the prompts.

      Example:

        "Enter Subject Number (or help): 1"

        "Enter Scenario id: ksfo28r"

        "Enter Exp. Condition (1 - 14): 14"

        "Enter s to start: s"

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

   6. Type "run".

3.2 Shutting Down the Simulation

A response of "ex" (or "exit") to the "UPLINK >" 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 "UPLINK >" 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 available simulation display processes:

   * Primary Flight Display processes: pfd1_exec, pfd2_exec
   * Secondary Flight Display processes: sfd1_exec, sfd2_exec, sfd3_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>. Note: The PFD and SFD displays do not currently support window 
refreshing.

Display processes can be repositioned or resized by modifying the 
process configuration file (ex. "miniACFS/pfd/data/pfd_config.dat"). 
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
    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 datalink message
    imp - Allows entry of impromptu uplink message
    cl - Clear current message
    hi - Print message history
    help - to see the command list

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/acfs/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 [

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,
   TIME_ZULU:		61200,
  ];

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

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

];! END OF LEG

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.

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/acfs/data/datalink.dat". 
This file must be processed, by running "miniACFS/acfs/program/dl_create_db" 
prior to running the simulation. The miniACFS provides for autoloading 
datalink messages into the FMC (see CDU Scripts) and the MCP. The current 
configuration displays the datalink message through the CDU (by pressing 
the "ATC" button on the CDU). [Note: The SSS does not currently support 
pages corresponding to the "ATC" (or "DATALINK" button, as a result there 
is no currently active pilot interface to accessing datalink messages].

4.3 CDU Scripts

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

4.4 ATC Simulation

The miniACFS simulation has been used with various air traffic control 
simulations and pseudo plane generators. The miniACFS communicates with 
the selected ATC simulation program through the "atc-server". The following 
are ATC and pseudo plane generators that 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.

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/acfs/work/dcs/dcs_exec.c", and then rebuilding the main 
acfs (or modsch) process [see programmer's guide]. The output file is 
stored in the "miniACFS/acfs/output" directory. The filename is in the 
format "DC_MMDDYY_HHMM.S#" where "MMDDYY" is the month, day and year, 
"HHMM" is the time in hours and minutes, and "#" is the subject number 
entered in when starting the simulation (ex. "DC_020597_0938.S01").

5. Flying Examples

5.1 Programming the miniACFS FMS

   1. Go to RTE page.

   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.

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

   8. Select the PORTE9 departure (ex. press 2L). 

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

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

   11. Go to RTE page.

   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 "10" 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. 15).

   3. Set target speed (ex. 180).

   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 desired flap schedule.