Lade Inhalt...

Jetpack Simulator

Documentation of the Google Earth jetpack simulator

von Prof. Dr.-Ing. Jörg Buchholz (Autor) Martin Glenn (Autor) Michael A. Speck (Autor)

Forschungsarbeit 2011 69 Seiten

Informatik - Programmierung

Leseprobe

1. Introduction

The Martin Jetpack[1] uses a two liter, four cylinder, two stroke engine with 200 horsepower and two ducted fans for vertical takeoff and landing. Roll, pitch, and yaw vanes (figure 1) allow the pilot to maneuver the jetpack with two sidesticks from hover to a maximum cruise speed of 100 kilometers per hour.

illustration not visible in this excerpt

Figure 1: The Martin Jetpack (simplified model)

The Google Earth jetpack simulator[2] allows you to fly a 3-D model of the jetpack at arbitrary locations in the 3-D environment of Google Earth. Besides pure fun, one purpose of this simulator is to demonstrate that a realistic JavaScript simulation of nonlinear six-degrees-of-freedom dynamics is possible in the Google Earth plugin and to provide you with an easily adaptable simulation framework for your own simulation projects.

2. Manual

2.1. Overview

A while[1] after you start the simulator[2], you see the web page in figure 2.

illustration not visible in this excerpt

Figure 2: Screenshot of the simulator web page

2.2. Teleportation

The upper row of the page (figure 3) allows you to choose the location where you want to fly the jetpack. You can enter the denomination of any location on Earth (even abbreviations like “Vegas”, “Everest”, ) in the text field.

illustration not visible in this excerpt

Figure 3: Teleportation

Geographical coordinates (latitude, longitude) like “-33.858, 151.215” (any idea, where that is?) are also possible. Additionally, some interesting places are pre-wired via the buttons in figure 3.

2.3. State information

The table (figure 4) in the upper right corner of figure 2 displays information (altitude, speed, attitude, ) about the current state of the jetpack and tells you the current frame rate of the simulation.

illustration not visible in this excerpt

Figure 4: Jetpack state information

A frame rate of more than about 25 gives you the impression of a smooth motion of the jetpack. The frame rate depends on the speed of your computer, your graphics card, your browser, and the complexity of the 3-D environment you are flying in. The frame rate is limited to a minimum of 10 frames per second.[2] If your computer cannot achieve 10 fps, the background of the fps text field turns red, real-time simulation is lost and the simulation becomes pretty bumpy. You might want to buy a faster computer in that case. It might also help to turn off anti-aliasing (and other fancy stuff) in your graphics card, to use a different browser, to reboot your computer, or to fly at a location with only a few 3-D buildings (e. g. “Ayers Rock”).

If you fly too fast too low, the altitude and the speed displays turn to red, indicating a potentially hazardous situation (with a real jetpack).

2.4. Camera

The two drop-down lists in figure 5 allow you to position the camera (view) in the 3-D environment.[3]

illustration not visible in this excerpt

Figure 5: View

Look at back of jetpack keeps the camera behind the jetpack all the time. If you yaw the jetpack, the camera orbits around the jetpack. You never see the front of the jetpack. The distance between the camera and the jetpack is defined by the second drop-down list.

Look north The camera moves along with the jetpack but always looks north. There fore, you can yaw the jetpack in front of you and see its sides and front.

Pilot’s view The camera sees the 3-D world as the pilot would see it.[4] You cannot see the jetpack. If the jetpack pitches or rolls, the camera rotates with the jetpack, seemingly tilting the 3-D environment.

2.5. Mouse control

There are nine buttons on the right hand side of the web page (figure 6) that you can use to control the motion of the jetpack.

illustration not visible in this excerpt

Figure 6: Mouse control

Just hover (keep) your mouse above one of the buttons to activate the corresponding control input. Do not forget to move the mouse away from the mouse control pad if you want to use the numeric keypad or a joystick.[5]

You can find detailed information about the function of the mouse control buttons in figure 8.

2.6. Help pages

A line of hyperlinks (figure 7) leads you to pages that give you additional information about the use of mouse, numeric keypad, and joystick to control the motion of the jetpack.

illustration not visible in this excerpt

Figure 7: Help pages

The explaining figures (figure 8, figure 9, and figure 10) are screenshots of the corresponding web pages.

Mouse Help

illustration not visible in this excerpt

Figure 8: Mouse help page

Keyboard Help

illustration not visible in this excerpt

Figure 9: Keyboard help page

illustration not visible in this excerpt

Figure 10: Joystick help page

2.7. Hyperlinks

In the lower right corner of the web page you can find the hyperlinks displayed in figure 11.

illustration not visible in this excerpt

Figure 11: Hyperlinks

Wanna fly the real thing? This link leads you the homepage of the Martin Jetpack[1], where you can find technical and commercial details about the jetpack and the Martin Aircraft Team and read news about the latest developments.

Discussions? This link allows you to discuss all jetpack simulator related topics in the homonymous Google Group. Bug reports and improvement suggestions are highly welcome!

Documentation? Guess what you are just reading it.

2.8. Known issues & To-dos

A project like this jetpack simulator can never be finished. You can always think of new features and gimmicks that might improve the realism and increase the fun factor; all it takes is time. Maybe later .

- There seems to be a plugin or JavaScript graphics engine bug Google, are you listening? that makes parts of the closest 3-D objects disappear if you fly towards the camera with high speed. Just press 2 on the numeric keypad and watch (parts of) the fans disappear.
- Let there be wind! Steady wind, turbulence, gusts, and shear wind would be nice to have.
- Size matters! Some of you might have a very large (or small) screen (resolution) and might want to adjust the plugin window size.
- Speed matters (even more)! Your computer should definitely be of this century if you want to enjoy the simulator. Switching on anti-aliasing in your graphics card menu makes the 3-D objects look much better but slows down the simulation. Unbelievable, but true: Internet Explorer 9 seems to simulate up to two times faster than Firefox 4 and Chrome 11.
- W-A-S-D? Gamers are used to certain key combinations (W: forward, A: left, ). Unfortunately, the Google Earth plugin reclaims most of these keys for its own use. We have to find out how to prevent the plugin from hijacking these keys. Any idea?
- More realism! Rotating blades, vanes, and sidesticks, a 3-point bending landing gear and a realistic 3-D human pilot model would look great! On the down side: Rotating parts are extra 3-D objects that have to be synchronized with each other very carefully. A halfway decent 3-D pilot would consist of a huge amount of polygons further decreasing the frame rate.
- Euler integration (section 3.2.27) of the differential equation system has drawbacks regarding speed and stability. A higher-order algorithm (Runge-Kutta, ) will achieve significant performance improvement.
- The frame end event listener starts a new simulation step as soon as the previous one has finished (figure 13) using up all available computing power. While this behavior ensures a maximum frame rate on slow computers, a frame rate of 60 on a fast computer is not really necessary for a smooth simulation. Instead of this Eating up the CPU we should rather implement a real-time simulation environment that does one simulation step, sets an appropriate timer, releases the CPU, goes to sleep, and is waked up by the operating system for the next simulation step.

3. Behind the scenes

This section goes through all of the simulator source code (HTML and JavaScript) line by line, explains unusual coding schemes and gives mathematical background information on common simulation problems. The idea is to provide you with a modular simulation template framework that you can easily adapt to your own simulation tasks and needs.

It would have been very easy to code direct open loop jetpack motion: Press that button and the jetpack moves forward. Press that button and the jetpack rotates. But we deliberately chose to program the complete nonlinear set of vectorial differential equations that describe the general six-degrees-of-freedom motion of a homogenous mass. You can use the function kinematics and its sub-functions for the simulation of any kind of moving object (car, ship, train, aircraft, balloon, ball, ) without any alteration. There is no need to deeply understand the mathematics of the differential equation system; Just use your own external_forces_and_moments function to model the specific forces and moments that induce the motion of your object, load your own 3-D model (create_jetpack) and see your object move.

3.1. The web page

The simulator web page[2] is just a typical HTML page:

illustration not visible in this excerpt

3.1.1. JavaScript references

The simulator functionality is provided by JavaScript references. The first line is an external reference to the general Google API (Application Programming Interface)

illustration not visible in this excerpt

that will later allow us to embed and display the Google Earth environment on the web page. Google recommends to sign up for your own API key[3].[4] gives you some background information.

The second external reference points to the Google Maps API

illustration not visible in this excerpt

that we need in order to have Google’s geocoder find the geographical coordinates of arbitrary landmarks, cities, and streets. In[5] you can find more information about the use of the Google Maps API.

Most of the simulator’s equations are expressed using vectors and matrices. Since JavaScript does not supply native vector/matrix support, we include (and extend) an external library[6] for that purpose:

illustration not visible in this excerpt

For maintenance reasons, we outsource some simulator functions into their own files:

Abbildung in dieser Leseprobe nicht enthalten

The main simulator file holds the majority of the functions to solve the differential equation system and to display the corresponding motion of the jetpack:

Abbildung in dieser Leseprobe nicht enthalten

All functions are explained in detail in section 3.2.

3.1.2. Styles

Some CSS (Cascading Style Sheets) defines the design of the simulator page:

illustration not visible in this excerpt

This ends the header section of the web page.

3.1.3. Body

The body tag defines two functions that are called when you press a key on the keyboard or release the key:

Abbildung in dieser Leseprobe nicht enthalten

The first line of the web page (figure 2) includes a headline,

illustration not visible in this excerpt

a text field where you can input a new destination, the corresponding Enter button,

illustration not visible in this excerpt

and a few buttons suggesting some interesting predefined places to fly the jetpack:

illustration not visible in this excerpt

The main display area (figure 2) is divided into two parts. On the left hand side, a big region (800 by 1000 pixel) is reserved for the graphical Google Earth environment, the 3-D map including the jetpack:

illustration not visible in this excerpt

On the right hand side, a table outputs information about the current state of the jetpack, including altitude, (vertical) speed, and the three Euler angles (pitch, roll, and yaw) describing the attitude of the jetpack with respect to the Earth.

illustration not visible in this excerpt

Additionally, the simulation frequency (frames per second) is displayed. The frame rate is limited to a minimum of 10 fps, in which case real-time simulation is lost and the problem is indicated by a red background color:

illustration not visible in this excerpt

Two drop-down lists offer you the choice between different views at the scene:

illustration not visible in this excerpt

The next table holds the nine buttons you can hover above to control the jetpack:

illustration not visible in this excerpt

Links to three help pages provide information about how to use the mouse, the keyboard, and the joystick to control the jetpack:

<span class="style5">

[...]


[1] Google Earth needs a few seconds (depending on your internet connection speed) to download the ground images, the 3-D buildings, and the 3-D jetpack model.

[2] The simulation would become unstable with a frame rate less than 10 fps.

[3] Make sure the focus is not on one of the drop-down lists if you start using the keypad. Otherwise, you might inadvertently select other entries of the list.

[4] To be honest, the camera is fixed at the center of gravity of the jetpack which is quite a bit lower than the head of the pilot.

[5] We would like to recommend to use the numeric keypad or a joystick instead of the mouse for precise control. With the mouse, you cannot command more than one control input at a time. And it is tedious to emulate small inputs by short impulses which is a common control strategy with the keypad.

Details

Seiten
69
Jahr
2011
ISBN (eBook)
9783656013259
Dateigröße
5.4 MB
Sprache
Englisch
Katalognummer
v178979
Institution / Hochschule
Hochschule Bremen
Schlagworte
Martin Jetpack Simulator Google Earth API Flight Control JavaScript Aerodynamics Simulation Kinematics Joystick

Autoren

Teilen

Zurück

Titel: Jetpack Simulator