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.
Table of Contents
1. Introduction
2. Manual
2.1. Overview
2.2. Teleportation
2.3. State information
2.4. Camera
2.5. Mouse control
2.6. Help pages
2.7. Hyperlinks
2.8. Known issues & To-dos
3. Behind the scenes
3.1. The web page
3.1.1. JavaScript references
3.1.2. Styles
3.1.3. Body
3.2. The JavaScript code
3.2.1. setSingleElement
3.2.2. constants
3.2.3. simulator
3.2.4. create_ge_instance
3.2.5. initialize
3.2.6. instantiation_failure
3.2.7. create_jetpack
3.2.8. simulate
3.2.9. inputs
3.2.10. poll_joystick
3.2.11. external_forces_and_moments
3.2.12. ducts
3.2.13. vanes
3.2.14. aerodynamics
3.2.15. ground
3.2.16. controllers
3.2.17. yaw_controller
3.2.18. altitude_controller
3.2.19. pitch_controller
3.2.20. roll_controller
3.2.21. brake_controller
3.2.22. kinematics
3.2.23. position_ode
3.2.24. attitude_ode
3.2.25. velocity_ode
3.2.26. rate_ode
3.2.27. integrate
3.2.28. update_view
3.2.29. update_shadow
3.2.30. output
3.2.31. key_down
3.2.32. key_up
3.2.33. Button_go_there_onclick
3.2.34. Button_christchurch_onclick
Objectives and Topics
The primary objective of this work is to provide a realistic, adaptable JavaScript simulation framework for the Martin Jetpack within the Google Earth plugin environment. It demonstrates how nonlinear six-degrees-of-freedom dynamics can be simulated in a browser-based 3D environment.
- Implementation of nonlinear flight dynamics and control systems.
- Integration of Google Earth API for 3D geographical visualization.
- Development of modular simulation source code for extensible projects.
- Control interface implementation utilizing mouse, keyboard, and joystick inputs.
Excerpt from the Book
3.2.14. aerodynamics
Our aerodynamic model resembles the simplicity of the ducts and vanes models. We just want to model the fact that an unaccelerated motion in the atmosphere is damped out by drag. A velocity of the jetpack should therefore automatically slow down without any extra control input. Therefore, we create an aerodynamic drag vector D, pointing into the opposite direction of the jetpack’s velocity vector, having a magnitude proportional to the square of the norm of the velocity vector:
D = -4 |V| V^0 = -4 |V|^2 V / |V| = -4 |V|V
After extracting the body frame velocity vector from the state vector
function aerodynamics() {
var velocity = Vector.create([state.e(4), state.e(5), state.e(6)]);
we compute the velocity norm
var norm_velocity = velocity.modulus();
and calculate and add the drag force to the force accumulator:
external_force = external_force.add(velocity.x(-4 * norm_velocity));
The aerodynamic drag moment is calculated in a similar way: The counteracting drag moment vector is proportional to the square of the angular velocity vector norm:
var angular_velocity = Vector.create([state.e(10), state.e(11), state.e(12)]);
var norm_angular_velocity = angular_velocity.modulus();
external_moment = external_moment.add(angular_velocity.x(-4 * norm_angular_velocity));
}
Summary of Chapters
1. Introduction: Briefly introduces the Martin Jetpack's propulsion system and mechanical components.
2. Manual: Provides user instructions for operating the simulator, including navigation, controls, and help features.
3. Behind the scenes: Details the technical implementation, source code structure, and mathematical foundations of the simulation environment.
Keywords
Jetpack Simulator, Google Earth Plugin, JavaScript, Nonlinear Flight Dynamics, Flight Control, Six-Degrees-of-Freedom, Aerodynamics, Numerical Integration, Euler Angles, Joystick Interface, Web-based Simulation, Martin Jetpack, Differential Equations, Control Systems, 3D Visualization
Frequently Asked Questions
What is this work about?
This work provides a detailed manual and technical documentation for a web-based Martin Jetpack flight simulator implemented in JavaScript using the Google Earth API.
What are the central topics?
The central topics include realistic 3D flight simulation, the implementation of nonlinear differential equations for flight dynamics, and the integration of diverse user control interfaces.
What is the primary research goal?
The goal is to demonstrate that a realistic JavaScript-based simulation of nonlinear six-degrees-of-freedom dynamics is achievable within the Google Earth plugin framework.
Which scientific method is used?
The simulator employs numerical integration of nonlinear vectorial differential equations to calculate the motion of the jetpack based on forces and moments.
What is covered in the main section?
The main section (Behind the scenes) analyzes the source code, explains the control logic (yaw, altitude, pitch, roll), and defines the mathematical models for kinematics and force calculation.
What are the defining keywords?
Key terms include Jetpack Simulator, Flight Dynamics, JavaScript, Google Earth, Numerical Integration, and Control Systems.
How is the joystick input handled?
The simulator uses a specific joystick wrapper that maps axes and button states to control variables, applying a dead-zone filter to compensate for hardware imprecision.
How does the brake controller function?
The brake controller acts as a cascade control system that uses horizontal velocity feedback to generate pitch and roll commands, effectively decelerating the jetpack automatically.
- Quote paper
- Prof. Dr.-Ing. Jörg Buchholz (Author), Martin Glenn (Author), Michael A. Speck (Author), 2011, Jetpack Simulator, Munich, GRIN Verlag, https://www.hausarbeiten.de/document/178979