Editing Vessel Tutorial 1

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:
 
This documents my adventure transforming the stock ShuttlePB into a reasonably accurate model of the Surveyor lunar lander. There was a model on OrbitHangar, but it had wildly inaccurate mechanics, due partly to the fact that it was based on Vinka's Spacecraft.dll.
 
This documents my adventure transforming the stock ShuttlePB into a reasonably accurate model of the Surveyor lunar lander. There was a model on OrbitHangar, but it had wildly inaccurate mechanics, due partly to the fact that it was based on Vinka's Spacecraft.dll.
  
This tutorial assumes you have a working compiler which you know creates valid working DLLs from the OrbiterSDK sample code. I originally used the free Microsoft command-line compiler VC++ 2003, together with an editor called TextPad. I now use the [[Free Compiler Setup|free Microsoft IDE VC++ 2005]]. Setting this up is beyond the scope of this document. Check the rest of this Wiki, or the Orbiter forums.
+
This tutorial assumes you have a working compiler which you know creates valid working DLLs from the OrbiterSDK sample code. I happen to use the free Microsoft command-line compiler, together with an editor called TextPad. Setting up the [[Free Compiler Setup|free compiler]] and the editor is beyond the scope of this document. Check the rest of this Wiki, or the Orbiter forums.
  
 
= The Goal Spacecraft: Surveyor =
 
= The Goal Spacecraft: Surveyor =
Line 11: Line 11:
 
Functionally, Surveyor consists of a large solid-fueled main retro-rocket, three medium-sized throttleable liquid fueled vernier engines, and six cold-gas Reaction Control System (RCS) attitude control thrusters.
 
Functionally, Surveyor consists of a large solid-fueled main retro-rocket, three medium-sized throttleable liquid fueled vernier engines, and six cold-gas Reaction Control System (RCS) attitude control thrusters.
  
The Surveyor flight plan in its final minutes is one exciting ride, and obviously not good for humans. There is no possiblity of abort (two of the seven Surveyors, 2 and 4, crashed). The maximum acceleration is 9G's. And, it is very difficult to fly manually. It's a perfect job for a machine.
+
The Surveyor flight plan in its final minutes is one exciting ride, and obviously not good for humans. There is no possiblity of abort (Two of the seven Surveyors, 2 and 4, crashed). The maximum acceleration is 9G's. And, it is very difficult to fly manually. It's a perfect job for a machine.
  
 
Surveyor is launched on top of an Atlas-Centaur rocket, on a direct impact trajectory to the moon. Impact will occur after about 66 hours. About 16 hours after launch, it performs a single mid-course correction maneuver, which aims it to precisely impact at the desired landing point.  
 
Surveyor is launched on top of an Atlas-Centaur rocket, on a direct impact trajectory to the moon. Impact will occur after about 66 hours. About 16 hours after launch, it performs a single mid-course correction maneuver, which aims it to precisely impact at the desired landing point.  
  
Thirty minutes before impact, Surveyor maneuvers into a retrograde attitude. From here, its Altitude Marking Radar (AMR) will eventually be able to see the surface and measure the distance. The AMR locks on to the surface at about 200km, a little more than one minute before impact. Once the altitude reaches a pre-determined value called the altitude mark, it starts a short timer.  
+
Thirty minutes before impact, Surveyor maneuvers into a retrograde attitude. From here, its Altitude Marking Radar (AMR) will eventually be able to see the surface and measure the distance. The AMR locks on to the surface at about 200km, one minute before impact. Once the altitude reaches a pre-determined value called the altitude mark, it starts a short timer.  
  
 
At the altitude mark, the spacecraft is hurtling towards the ground at over 2.5km/s and will impact in less than one minute. For Surveyor 1, the altitude mark was about 110km, and the timer was about 7 seconds. Once the timer expires, the vernier engines light up, then one second later the main retro ignites for its 40 second burn. The main retro gets rid of 2.3km/s of speed, and leaves the spacecraft between 5km and 20km above the surface and travelling downwards at between zero and 230m/s. During this stage, the vernier engines are used to stabilize the spacecraft and compensate for any thrust misalignment in the main retro. The AMR is automatically jettisoned at main retro ignition, as it is no longer needed. In fact, it is stuffed into the nozzle of the main retro, and is blasted out by the retro ignition.
 
At the altitude mark, the spacecraft is hurtling towards the ground at over 2.5km/s and will impact in less than one minute. For Surveyor 1, the altitude mark was about 110km, and the timer was about 7 seconds. Once the timer expires, the vernier engines light up, then one second later the main retro ignites for its 40 second burn. The main retro gets rid of 2.3km/s of speed, and leaves the spacecraft between 5km and 20km above the surface and travelling downwards at between zero and 230m/s. During this stage, the vernier engines are used to stabilize the spacecraft and compensate for any thrust misalignment in the main retro. The AMR is automatically jettisoned at main retro ignition, as it is no longer needed. In fact, it is stuffed into the nozzle of the main retro, and is blasted out by the retro ignition.
  
The spacecraft then drops the spent retro motor and continues down on the vernier engines. Using a separate four-beam Doppler radar and a simple analog computer, it throttles the engines such that it will reach a downward velocity of about 1.3m/s about 4m above the surface. It then cuts its engines and falls the rest of the way.
+
The spacecraft then drops the spent retro motor and continues down on the vernier engines. Using a seperate four-beam Doppler radar and a simple analog computer, it throttles the engines such that it will reach a downward velocity of about 1.3m/s about 4m above the surface. It then cuts its engines and falls the rest of the way.
  
 
= Why a custom DLL =
 
= Why a custom DLL =
Line 32: Line 32:
  
 
# '''''ALWAYS''''' test each change, no matter how small
 
# '''''ALWAYS''''' test each change, no matter how small
# For historical or real vessels, get good reference material
+
# For historical or real vessels, get good reference material.
 
# '''''NEVER''''' proceed to the next change if the last one doesn't work yet
 
# '''''NEVER''''' proceed to the next change if the last one doesn't work yet
 
# Start with something you know works
 
# Start with something you know works
Line 46: Line 46:
 
The best place to get references for NASA spacecraft is the [http://ntrs.nasa.gov/ NASA Technical Reports Server]. For this vessel, applicable reports are things such as:
 
The best place to get references for NASA spacecraft is the [http://ntrs.nasa.gov/ NASA Technical Reports Server]. For this vessel, applicable reports are things such as:
 
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19670029911_1967029911.pdf Surveyor Spaceraft A-21A Model Description] for spacecraft systems and such.  
 
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19670029911_1967029911.pdf Surveyor Spaceraft A-21A Model Description] for spacecraft systems and such.  
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19650014299_1965014299.pdf Final Report: Surveyor Vernier Thrust Chamber Assembly Development, Phase III] All the other documents refer to the fact that the Surveyor Vernier engines' specific impulse varies with thrust, but never says in what manner. Page 86 shows an Isp vs Thrust curve for the vernier engines
+
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19650014299_1965014299.pdf Final Report: Surveyor Vernier Thrust Chamber Assembly Development, Phase III] All the other documents refer to the fact that the Surveyor Vernier engines specific impulse varies with thrust, but never says in what manner. Page 86 shows an Isp vs Thrust curve for the vernier engines
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19660026658_1966026658.pdf Surveyor 1 mission report. Part 1 - Mission description and performance] Tells about the actual performance of the Surveyor 1 lander in excruciating detail. It includes such specifics as the exact launch window and translunar trajectory, before and after the midcourse maneuver.
+
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19660026658_1966026658.pdf Surveyor 1 mission report. Part 1 - Mission description and performance] Tells about the actual performance of the Surveyor 1 lander in excruciating detail.
 
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19660082318_1966082318.pdf Surveyor Terminal Guidance] Outlines a rather simple and surprisingly robust system for landing a Surveyor spacecraft with a stupid analog computer and a 4-beam landing radar
 
*[http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19660082318_1966082318.pdf Surveyor Terminal Guidance] Outlines a rather simple and surprisingly robust system for landing a Surveyor spacecraft with a stupid analog computer and a 4-beam landing radar
*[http://www.google.com/help/features.html#calculator Google Calculator] Just type some calculation in the search box. The calculator especially excels at unit conversions. You don't have to go to that link, you can type a calculation in the Google search box on its [http://www.google.com/ main page].
+
*[http://www.google.com/help/features.html#calculator Google Calculator] Just type in the search box, some calculation. The calculator especially excels at unit conversions. You don't have to go to that link, you can type a calculation in the Google search box on its [http://www.google.com/ main page].
  
 
= The Starting Point =
 
= The Starting Point =
Line 94: Line 94:
 
  END_SHIPS
 
  END_SHIPS
  
If, at any point in this tutorial, it doesn't work, track down and try to identify what could have gone wrong. Since the most common symptom of failure is a Crash to Desktop (CTD) you won't have much help debugging, so keeping the changes small from version to version will help out a lot.
+
If at any point in this tutorial, if it doesn't work, track down and try to identify what could have gone wrong. Since the most common symptom of failure is a Crash to Desktop (CTD) you won't have much help debugging, so keeping the changes small from version to version will help out a lot.
  
 
= Meshes =
 
= Meshes =
  
Creating meshes is beyond the scope of this document. Since I am in a hurry and not primarily interested in artwork, I borrowed the mesh from ''Surveyor1-1.zip'' [http://www.orbithangar.com/download.php?ID=859] by Jim Williams, posted on OrbitHangar.  
+
Creating meshes is beyond the scope of this document. Since I am in a hurry and not primarily interested in artwork, I borrowed the mesh from ''Surveyor1-1.zip'' by Jim Williams, posted on OrbitHangar.  
  
If you are following along, get that add-on, and get the meshes out of it. Rename ''Surveyor-deployed.msh'' as ''Surveyor-Lander.msh''. Copy this mesh to Orbiter\Meshes, and copy all the .dds files to Orbiter\Textures.
+
If you are following along, get that add-on, and get the meshes out of it. Rename ''Surveyor-deployed.msh'' as ''Surveyor-Lander.msh'' . Copy this mesh to Orbiter\Meshes , and copy all the .dds files to Orbiter\Textures .
  
Now, to use this mesh. In Surveyor.cpp, look for the method Surveyor::clbkSetClassCaps. Near the end, change the line (Note that it doesn't say ShuttlePB, remember that you searched-and-replaced that out)
+
Now, to use this mesh. In Surveyor.cpp, look for the method Surveyor::clbkSetClassCaps . Near the end, change the line (Note that it doesn't say ShuttlePB, remember that you searched-and-replaced that out.)
  
 
   // visual specs
 
   // visual specs
Line 112: Line 112:
 
   AddMesh("Surveyor-Lander");
 
   AddMesh("Surveyor-Lander");
  
Compile and test it. Notice that the spacecraft now looks like Surveyor, but it flies like ShuttlePB. Also note that the legs are not on the surface. Go ahead and take Surveyor for a spin, and put it in orbit around the moon. It will be much easier to test the vernier and RCS engines in space. Do a QuickSave, rename the QuickSave to something sensible like ''Surveyor in Orbit.scn'' and use the new scenario from now on.
+
Compile and test it. Notice that the spacecraft now looks like Surveyor, but it flies like ShuttlePB. Also note that the legs are not on the surface. Go ahead and take Surveyor for a spin, and put it in orbit around the moon. It will be much easier to test the verner and RCS engines in space. Do a QuickSave, rename the QuickSave to something sensible like ''Surveyor in Orbit.scn'' and use the new scenario from now on.
  
 
= Vehicle coordinate system =
 
= Vehicle coordinate system =
  
As described in the Orbiter API guide, vessels use a left-handed coordinate system. Even though Surveyor looks nothing like and is flown nothing like an airplane, an airplane is still a useful model to describe the coordinate system. Imagine yourself sitting in the pilot's seat of an airplane. The X axis is the "left-to-right" axis. +X points out to the right wing, and -X points out to the left wing. The Y axis is the "up-to-down" axis. +Y points up, in the direction of the vertical tail fin, and -Y points down in the direction of the wheels. The Z axis is the "front-to-back" axis. +Z points to the nose, and -Z points back to the aft end of the plane. In an conventional airplane or rocket, the engine's thrust vector points towards +Z. The exhaust streams out the back towards -Z. We are going to use this coordinate system, also, as it almost matches the historical Surveyor. On it, +Z and -Z are reversed and the whole thing is a right-handed system.
+
As described in the Orbiter API guide, vessels use a left-handed coordinate system. Even though Surveyor looks nothing like and is flown nothing like an airplane, an airplane is still a useful model to describe the coordinate system. Imagine yourself sitting in the pilot's seat of an airplane. The X axis is the "left-to-right" axis. +X points out to the right wing, and -X points out to the left wing. The Y axis is the "up-to-down" axis. +Y points up, in the direction of the vertical tail fin, and -Y points down in the direction of the wheels. The Z axis is the "front-to-back" axis. +Z points to the nose, and -Z points back to the aft end of the plane. In an conventional airplane or rocket, the engines thrust vector points towards +Z. The exhaust streams out the back towards -Z. We are going to use this coordinate system, also, as it almost matches the historical Surveyor. On it, +Z and -Z are reversed and the whole thing is a right-handed system.
  
 
So, imagine yourself again sitting in the pilot seat of Surveyor. The engines and legs are behind you, on the back of your seat, and the antenna and solar panel stick out ahead of you. When you are on approach to landing, you will have your back to the surface of the Moon and your face straight up towards the stars.
 
So, imagine yourself again sitting in the pilot seat of Surveyor. The engines and legs are behind you, on the back of your seat, and the antenna and solar panel stick out ahead of you. When you are on approach to landing, you will have your back to the surface of the Moon and your face straight up towards the stars.
Line 244: Line 244:
  
 
Continue to [[Vessel Tutorial 2]]
 
Continue to [[Vessel Tutorial 2]]
 
[[Category: Articles]]
 
[[Category:Tutorials]]
 
[[Category:Add-on tutorials]]
 

Please note that all contributions to OrbiterWiki are considered to be released under the GNU Free Documentation License 1.2 (see OrbiterWiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)