Wright Flyer Presentation

Download Report

Transcript Wright Flyer Presentation

15413 - Software
Engineering
Introduction - Andrew Gallant
Overview requirements - Stephen Ulrich
Architectural Design & Hardware - Jeremy Degroat
Design
User Interface - Christopher Quirk
Wings, Canard, Rudder and Controls - Ranjit Jose
Environment - Yimin Yang
Interactive Test Program - Danny Lee
Results & lessons learned - Shane Torsell
Wright Flyer
Software Engineering
Introduction and Overview
What are we doing?
How we are doing it?
Why are we doing it that way?
Wright Flyer Project Goals
An interactive, graphical simulation of the
Wright Flyer.
A distributed HLA simulation.
Contextualize Software Engineering
through completion of the first spiral of a
major software project’s development.
Why the Wright Flyer
Project?
HLA was chosen to give the class
experience working with a professionally
developed and documented system.
Parallels projects to produce replicas for
centennial anniversary (AIAA in LA).
A project of sufficient scale to be
instructive in Software Engineering
principles
About the Wright Flyer
The first successful self-propelled,
heavier-than-air aircraft
Three flights before its destruction
Still an amazing piece of aeronautical
engineering
605lbs; 40ft x 20ft x 8ft; 586 ft2 foil
surface
Wind tunnel testing for their airfoils
Wright Flyer
Structure
Functional Requirements
Simulate the historical flights
Display various pieces of flight
information
Show flights from various points of view
Allow a human pilot
Record and playback simulated flights
“Soft” real time performance
Extensibility Requirements
Modular UI interface coding, for future
revisions or replacements.
Allow for multiple flyers, with collision
detection.
Later inclusion of wind tunnel test data.
Landing and take-off capabilities.
Plug and Play pilots (AI, human, script).
Non-Functional
Requirements
Design for later re-use.
Design for maintainable testability.
Design for re-use of others’ code.
Conforming to all HLA requirements
Wright Flyer
Software Engineering
Functional View of the
HLA Architecture
Live
Participants
Support
Utilities
Simulations
Live Player
Interfaces
Interface
Runtime Infrastructure
Federation Management
Declaration Management
Object Management
Ownership Management
Time Management
Data Distribution Management
Hardware Configuration
 Multiple machines with the following specifications:
Intel Pentium II 450 MHz
128 MB RAM
6 GB hard drive
ATI 3D Rage Pro
3Com Fast Etherlink XL 10/100
Apple Multiple Scan 17” monitor
Window NT 4.0 Workstation
Network Configuration
 Network Configuration
Netbar (on-demand hot-swappable internet service
via ethernet)
DHCP
HLA Version and Tools
RTI 1.3v6 (originally 1.3v5)
Based code on IF Spec. 1.3
Tools
OMDT
FMT/FVT/DCT
FEPW (Events)
Rational Rose Case Tool
Design Process
 Simplification of FEDEP
Requirements
Specifications (UML)
SOM/FOM
 OMDT Usage
 Prototype 1 (HLA designed)
“Exploratory”
 Prototype 2
“Evolutionary”
 Formal Test Suite
Federation Rules
 Rule 1: Must have an HLA Federation Object Model
(FOM)
 Rule 2: All object representation must be in the
federates, not in the runtime infrastructure (RTI).
 Rule 3: All exchange of FOM data among federates must
occur via the RTI.
 Rule 4: Federates must interact with the RTI in
accordance with the HLA interface specification.
 Rule 5: An attribute of an instance of an object must be
owned by only one federate at any given time.
Federate Rules
 Rule 6: Have an HLA Simulation Object Model (SOM).
 Rules 7: Be able to update/reflect any attributes of
objects in their SOM and send/receive SOM object
interactions.
 Rule 8: Be able to transfer/accept ownership of
attributes dynamically.
 Rule 9: Be able to vary the conditions under which they
provide updates of attributes of objects.
 Rule 10: Be able to manage local time in a way which
will allow them to coordinate data exchange with other
members of a federation.
Federation Management
Services
Federation Life Cycle functionality
create/destroy
join/resign
Federation Synchronization
Pause/Unpause (eventually)
Did not use Save/Restore functionality
Rumored save/restore failures in 1.3v5
Declaration Management
Services
Used the full range of declaration
management services
Attribute Publication/Subscription
Interaction Publication/Subscription
Object Management
Services
Registering, Discovering, and Deleting
Flyer instances
Updating/Reflecting
Interactions
simply send/receive
Ownership Management
Services
Ownership of the Pilot attribute can be
passed between multiple UI’s or Scripts to
allow various testing and manipulation.
Most other ownership situations resolved
by way of interactions.
Time Management
Services
Deemed non-critical.
RTI bus well-managed enough to handle our
requirements.
Close enough to real-time.
An early extension, however.
Handled play-back from the scripts group.
Data Distribution
Management
Was not used for the sake of simplicity.
Instead, use of Pilot and Flyer ids
instantiated.
Would be applied for any further work, to
reduce ambassador “spamming”.
Wright Flyer
Software Engineering
UI Specifications
Passive viewer, active pilot interface
Distributed HLA objects
Environment
Multiple Flyers
Swappable and extendable (strict
adherence to an API)
Class Associations
Environment
Cache
UIamb
FlyerView
FlyerStatus
RTI
Dialogs
Menus
Toolbars
RTIamb
•UI/HLA communications
Task
HLA call
Requesting Flyer
Creation, Deletion
Discovering Flyer
Creation, Deletion
Controlling Flyer
MakeNewFlyer(),
DestroyFlyer()
discoverObjectInstance,
deleteObjectInstance
MoveHipSaddle(),
MoveCanardControl()
Creating Flyer
RTI
MakeNewFlyer()
discoverObjectInstance
UI
registerObjectInstance
Flyer
Control
Destroying Flyer
RTI
DestroyFlyer()
UI
removeObjectInstance
Flyer
Control
deleteObjectInstance
Controlling a Flyer
RTI
MoveHipSaddle()
UI
Control
reflectAttributeValues
Flyer
updateAttributeValues
•UI/HLA comms (cont.)
Task
HLA call
Select Environment
GetFileList(), ChooseFile(),
UseRandom...()
Recording a script
StartRecording(),
StopRecording()
Playing back a script
StartPlayback()
Regain Flyer control from
script
RelinquishFlyerControl(),
FlyerControlRelinquished()
UI Technical Challenges
Dealing with multiple flyers
Ensuring a one-to-one relationship from
pilot to flyer
Defining our views in a general manner
Where we are
Things that work now:
Creating, joining, resigning, destroying
FedEx.
Requesting creation, destruction of a flyer
Notification of flyer creation, destruction
Controlling flyer
Reflecting position/orientation updates
Spot Flyer View
View Parameters
Wingman view:
lookAt relative to Flyer,
lookFrom relative to Flyer
Spot view:
lookAt relative to Flyer,
lookFrom relative to Ground
Pilot view:
lookAt relative to Flyer,
lookFrom relative to Flyer
Constant view:
lookAt relative to Ground,
lookFrom relative to Ground
Other Views
Radar View (not shown):
lookAt relative to Ground,
lookFrom relative to Ground
(just really high up)
Debug view:
For internal debugging info,
with logging levels
Wright Flyer
Software Engineering
Control Interactions
UI Interaction
Creation and Destruction of the Flyer.
Control of Hip Saddle and Canard Control.
Flyer Movement Calculations
Calculates movement of entire Flyer from pieces.
Environment
Request environment information
Wind, Air Pressure, Temperature, Elevation
Published Attributes
Flight State
Control Class Hierarchy
WFFederate
RTI:RTIambassador
FlightState
Engine
WCR
Flyer
WF Fed Ambassador
Component
PhysicalPilot
ControlObject
HipSaddle
CanardControl
Wing/Canard/Rudder Group
Simulate Individual Flyer Pieces
No direct HLA involvement.
Passive, methods called by Control Group.
Objects We Simulate
Airfoils
Engine
Physical Pilot
Strict Hierarchy of Parts
Assemblies to contain related airfoils.
Wright Flyer Physical Layout
Flyer Hierarchy
Rudder Assembly
Canard Assembly
Rudders
Canards
Wing Assemblies
Wings
Physical Simulation
Airfoil Lift/Drag Simulation
Simulated by the use of Force Vectors.
Based on historically valid equations using angle of
attack.
Lack of data forces some estimation of physical
constants.
Engine/Physical Pilot Simulation
Simple Lift and Drag calculations.
Simulation of Other Pieces of Flyer
Lift and Drag not simulated (control wires, structure,
etc.)
15-413 Software
Engineering
Responsibilities
Environment
Generate, maintain and publish the map data
Generate, maintain and publish the weather
data
Scripts
Provide mechanisms to record and playback
a given simulation
Environment
Map Data
Provide an elevation map representing the
simulation area.
Provide terrain features that appear in the
simulation area.
Weather Data
Provide predefined and randomly
generated wind, temperature, precipitation,
and pressure for the simulation.
Scripts
Record/Playback
Record the user control inputs, and weather
changes during the simulation.
Playback the recorded user control inputs,
and weather changes.
Wright Flyer
Software Engineering
Interactive Test Program (ITP)
 Fulfills requirement to design for maintainability
& testability
 Complements DMSO provided tools
 Allows easy execution of federation
 Captures data in distributed environment
(generic tool)
 Provides centralized debugging information store
 Customizes data display for special purposes
 Operates independently of RTI (minimal
interference)
 Allows automatic regression test with
scripting/replay
ITP Communication
network environment (Netbar - dynamic IP)
ITP
Integrated UI
TCP/IP
message
exchange
ITP-TCP/IP
TCP/IP
RTI
message
exchange
TCP/IP Federate RTI
API Client 1 API
TCP/IP Federate RTI
API Client N API
ITP-RTI
RTI BUS
Wright Flyer
Software Engineering
Results
Prototype I
Communication between federates on
different machines over the LAN by sending
interactions.
Prototype II
Object instantiation and registration with
attribute updates and reflections.
3D Wright Flyer model simulation using
OpenGL calls.
Results (cont.)
Network Performance
RTI 1.3v6 performed well in a slow network
~5,000 interactions sent & received per sec.
4 of the 6 services were used.
Results (cont.)
Code Freeze on 4/28/99 at 10 pm
Each federate working individually
Integration of UI and Control
Environment still external
ITP
Wright Flyer flying
Lessons Learned
Technical/HLA
Identical Configurations on participating
machines.
Same .fed and .rid files.
Same RTI_MESSAGE_VERSION and RTI versions.
HLA Education
Programmer’s Guide (General overview)
Interface Specifications (Services specifications)
HLA C++ API (Services details)
Lessons Learned (cont.)
Prototypes, Prototypes, & Prototypes.
Using prototypes to understand and explore
the capabilities of HLA.
Problematic issues identified early on.
More accurate estimate metrics on time
delivery.
Stepping stone (Prototype II) for final
system.
Prototype I should have been implemented
much earlier in the class.
Lessons Learned (cont.)
HLA specialists were clearly needed, but it
probably would have been better to have
integrated the HLA and Architecture teams.
Where federates were developed by more than
one team, communication and functionality
partitioning was not obvious.
Design issues needed to be surfaced and resolved
more quickly.
The Wright Flyer consists of WCR & Controls groups.
Inter-group communication is very important.