This space shows an automated lunar lander. It begins at a high altitude, and uses it's thrusters to slow itself down, to touch the surface gently. After waiting for a period of time, it will return to the beginning of it's path, and repeat the process.
Things to note are the status panel in the upper-right of the display. This shows Current Thrust (calculated by the Space Vehicle code), Current Speed and Target Speed. The Space Vehicle code increases or decreases the amount of thrust used in order to adjust it's speed to match the Target Speed at that point of it's descent.
The text box under each of these headings show the current value in numbers, updated per frame. Thrust is shown in newtonmeters per second, while the speed values are shown in meters per second.
Note: The speed shown is the vertical component of it's actual velocity.
The slider bar below that gives a more visual representation. The Thrust bar shows from 0 to the specified upper limit (currently 40000 nm/s), while the speed bars show from -10m/s to 10m/s, which are the limits used in this demonstration.
Also shown on this panel are the attitude thrusters. The checkboxes on the GUI will highlight as each thruster is fired, matching the representation in the 3D display. The particle effect shown is representative of the thruster gas freezing into particles after being fired.
On approach to the ground, a particle effect is shown representing the main drives affect on the surface dust. As the lander approaches the ground, the velocity of the displaced dust increases, reaching a maximum speed when landed.
There is a shock absorbtion built in to the legs of the lander. These sliding struts absorb the impact of the landing, allowing the lander to come to a smooth stop. Some bounce occurs, as with the real-world absorbers we based this behaviour on.
Click here to download the PDF version of this Controls guide.
The camera is attached to the lander vehicle. It can be controlled with the following keys:
Up, W : Forward
Down, S : Backward
Left : Turn Left
Right : Turn Right
A : Sidestep Left
D : Sidestep Right
PageUp : Look Up
PageDown : Look Down
Also, mouse movement controls the direction the camera faces.
This demonstration has two main parts, a Space Vehicle Agent, and a Waypoint Manager.
An Agent is a logical entity that is responsible for representing conceptual entity, in this case a lander vehicle. The Agent Implementation is the code that controls all the visual and physical components that make up the conceptual entity.
The Waypoint Manager uses a series of points in 3D space to control the Agent. Specifically, the Waypoint Manager tells the Agent that it needs to move at a certain speed, in a certain direction. It is the responsibility of the Agent Implementation to actually make this occur, and in the case of the Space Vehicle Agent, is done by altering the thrust being applied to the physical bodies that make up the visual lunar lander.
The Waypoint Manager is provided at system startup with a series of waypoints that approach the surface. As the waypoints get closer to the ground, they are closer together, allowing greater resolution in controlling the Space Vehicle Agent. At each waypoint, the target velocity is decresed, and the Waypoint Manager repeatedly informs the Agent Implementation of this decreasing speed. Note that the Agent Manager blends speeds between waypoints, so that the rate of deceleration is constant across the whole path, rather then being applied at once as the Agent reaches the Waypoint.
After the Agent reaches the last Waypoint on the path, the Waypoint Manager waits a specified amount of time (in this demonstration, 10 seconds) before beginning again at the first waypoint. This makes the Space Vehicle accelerate to return to the first Waypoint, then begin the descent again.
The Space Vehicle state display, and in-world effects such as the particle systems, are controlled by the Space Vehicle Agent Implementation code. These are visual representations of information that is calculated internally to the Implementation, in response to being commanded to reach certain speeds. The Implementation also adjusts the applied thrust to keep the visual/physical representation upright, and uses parts of the GUI as well as the particle effects of the thrusters to display this.
Each frame, the Implementation calculates the difference between its current speed, and its target speed. It calculates the amount of thrust to be applied, based on the difference in speeds and a multiplier value. The thrust applied is limited to specified ranges.
The values used in the internal calculation are provided in the Agent Specification file. This file also includes properties to be used in the physical simulation of contacts between objects, as well as the models and scenegraph to be used to visually represent the craft.