Monthly Archive for May, 2009

X30 live tracking system

africatrack

There is live feed from on-board system (it draws orbital view most of the time, sometimes engine states too), and image feed from main simulator (and second computer if it’s active). The page updates every three seconds, and right now it’s disabled (when it’s not disabled, you can reach it here).

On-board system (X30NAV) sends updates image on server, and there is little daemon running on every of simulation computers that takes screenshot every three seconds. Everything is simple, and it works good so far.

By the way, I’ve set up page with mission schedules, I’ll update it as the missions are done. You can find it here: http://phoenix.wireos.com/x30sched.html

XS4 report

(Sorry for 1 week delay, because I was away for some time, and didn’t have time to write blog post before I left, preparing for some exam stuffs).

Mission XS4 goal was to reach orbit as high as possible (initial target was 1,000,000 feet). The vehicle used was Storm (X-30, I gave special name to every X-30 I use, so it seems like there’s several of them. If one of them crashes, I’ll remove it).

This is not much of a report, but just pictures I took. This was the first part, atmospheric ascent to about 170,000 feet. You can see jet engines working here, with afterburner active (the visual representation might not match how real exhaust would look though).
screenshot_17

Then when jet engines stopped being effective, I switched to rocket engines, and kept firing them till I reached speed of about 15200 knots (slightly less than orbital velocity):
screenshot_18
screenshot_20

From here I used OMS (orbital manuevering system) to control velocity (I kept it constantly slightly over orbital velocity), and kept vertical speed before I reached height of 1,200,000 feet. Originally I planned 1,000,000 feet, but seeing how smoothly it was going I decided to stop at 1,200,000 feet. I performed three vertical speed corrections (initial vertical speed was 40,000 feet per minute, at 700,000 feet I decreased it to 30,000 feet per minute, at 900,000 feet I decreased it to 20,000 feet per minute, at 1,100,000 I decreased it to 10,000 feet per minute, before finnaly stopping at 1,200,000 feet).
screenshot_43

After some time (about 90 minutes) on high orbit I started descend to low orbit (from 360km to 124km), which would prepare me for smooth reentry into atmosphere.
I did two circles around earth, before finnaly performing reentry (3500 miles away from Edwards AFB, at velocity of 7,6 km/sec, 124 km orbit). I did engine burn so my speed decreased by about 600-1000 knots, and then performed atmospheric reentry. This is a picture with camera facing towards velocity vector, and as you can see the X-30 enters atmosphere almost sideways, belly towards wind.
screenshot_51

I landed safely at Edwards AFB, after 233 minutes of flight (about 200 minutes of orbital flight). At the very same spot I started from!
screenshot_68

X-30 monitoring system

I’ve setup a small web page which shows live update of X-30’s on-board system, and screenshots from two viewpoints, which update at realtime. Here is how it looks right now:
website

It requires three computers to run – one computer runs on-board system, another computer is the primary simulator, and there’s also a small laptop which runs another copy of simulator, which just shows the X-30 from another view. If everything goes well, these views should update once in 4 seconds, and you can watch them live-ish.

Edit: it seems that I can’t use other laptop cause it was taken away, so I’m afraid there will be only one camera view.

Mission schedule

Small mission schedule, X-30 missions I plan to do, and missions I already did.

  • XS1: [finished] Duration: 1 hour
  • Atmosphere test, reaching height of 70,000ft and 4 mach speed. Landing test.


  • XS2: [finished, 19 May 2009] Duration: 2.5 hours
  • Orbital test, reentry test. Orbit 435,000ft.


  • XS3: [finished, 21 May 2009] Duration: 2.5 hours
  • Another reentry test. Orbit 420,000ft. Early test of the new on-board system (X30NAV).


  • XS4: [planned, 24 May 2009, 17:00 GMT+2] Duration: 5 hours
  • High orbit test. Test of the updated X30NAV system. Mission plan:

    1. 0 min – 30 min: reach 450,000ft orbit
    2. 30 min – 70 min: try to reach 1,000,000ft orbit
    3. 70 min – 160 min: stay on orbit, possibly try to move slightly higher. Test how X-Plane handles altitude over 1,000,000 feet.
    4. 160 min – 270 min: descent to 400,000ft
    5. 270 min – 300 min: perform reentry


  • XS5: [planned, tba] Duration: 2.5 hours
  • X-Plane navigation system behaviour test over polar caps.


  • XS6: [planned, tba] Duration: unknown
  • high-atmosphere flight test (KEDW – UKKM – KEDW)

    XS3 & X-30 on-board computer prototype

    Here comes third X-30 mission from me – XS3. Primary mission objective – field test of new on-board computer system, and some minor device tests. It was successful. Mission parameters were same as in XS2, I used same orbit. This time I did reentry at 4500 miles away from Edwards, and still somehow ended up 1000 miles early. It seems I can do really fast atmospheric reentry! Which is really good, because this time entry was even softer.

    All mission parameters almost match XS2, so I won’t repeat them here. Instead, I’ll focus on the primary objective – the new on-board computer I’m working on. From technical point of view it’s a computer program which runs on a second computer, and links to simulator to gather data from sensors (from the simulator itself).

    It has 4 screens (right now, but only two work):

    • Computer debug screen: allows debugging on-board computer, displays raw data from all available sensors
    • Orbital view: tracks orbit status and parameters, displays some helpful data
    • Launch status: helps to reach orbit, right now doesn’t do anything
    • Reentry status: helps to do reentry, and possibly in future will automatically do it itself

    This is how the setup looks like (the second computer is fed with data from the primary one using X-Planes data output):
    img_2620

    Here’s screenshot from the game, close to reentry point, you can see England in distance:
    screenshot_13

    Here’s screenshot of on-board computer (it runs in low resolution, and it looks really neat that way):
    x30feed3

    And as a bonus, it actually sends the image of on-board display to my local web server each second, so whenever I’m flying a realtime view of orbit, aircraft state, etc, is present (the link is http://phoenix.wireos.com/x30feed.jpg, but it obviously works only when system is active). I’m gonna post a planned schedule of next XS4 mission, which will target testing how X-Plane handles altitude over 1,000,000 feet.

    First successful X-30 landing

    I did full launch and reentry! And 1.5 hours of orbitting around earth (slightly less than a circle around our planet).

    I name this mission XS2, it’s the second “serious” mission. It was a complete success – the craft was preserved completly. I finnaly computed and tested the best launch and reentry profiles, and by the end of mission I still had 20% of jet fuel left, and 50% of rocket fuel left (although this was malfunction, see below).

    X-30 is hybrid scramjet/rocket engine aircraft, which is designed to reach orbit first by running on scramjets, and gaining about 20 Mach of speed, and then engaging rocket engines, reaching the target height:
    screenshot_11
    screenshot_13

    More technical details (random ones, which I found interesting):

    • Base of operations: Edwards AFB, choosen for it’s big runway, ideal location (desert gives good weather), and generally I like this airport.
    • Orbit height: 433000ft .. 435000ft (free orbit, no velocity correction to keep specific height)
    • Orbital velocity: 15232 knots
    • Total mission time: 2.5 hours
    • Base heading (at Edwards AFB): 210 (mag)
    • Launch average g-load: 1.2 G axial, 0.6G normal
    • Reentry average g-load: 3.0G normal
    • Wing lift to drag ratio during reentry avg: 4 to 6
    • Altitude when jets were switched to rockets: 173500ft

    Technical problems encountered:

    • Rocket engines failed to reignite (once reached orbit the engines stopped working, without computer indicating any failures. It seems that fuel pumps just stopped and would not come back online. This might be X-Plane bug. Had to use the orbital manuevering system to start descend)
    • Data output HUD failed (a bug in X-Plane caused textures to be corrupted, so the raw data output HUD stopped working about 2.2 hours after mission start. This did not affect anything, as data raw output is only useful during reentry, for receiving angle data). All regular instruments worked fine.
    • Autopilot does not work – this seems to be problem in X-Plane. X-30’s default autopilot allows for locking pitch and wing level, which is not really neccessary, but its nice feature when it works
    • Autostability system problems – the system is too violent, should be tuned down. It had to be disabled during most of the flight, except for part of reentry.
    • Reentry was performed at 5550nm away from Edwards AFB, which was off by 1000nm (luckily X-30 can fly without problem, so this distance was not a problem)

    Raw data output from on-board systems: data_x30_xs2.txt

    OpenGBH ped collisions

    They works now, and you can walk everywhere and even on slopes, but there are some problems. I’m going to rewrite pedestrian collisions handling. Right now it checks if next position ped might occupy is solid, then it bumps against that spot (it checks on each axis separately). This leads to problem that on slopes it’s fairly jumpy, no matter what you do – so I will go for GTA2 approach, and instead of doing next-point collision I will do collision between neighbour blocks.

    This should be faster, and look a lot nicer – the peds now will have “falling” flag, if they are not on ground it’s set, and if there is suddnly air block under them, it’s also set, but if you land on something, it’s reset – and all movement is tied to that surface, no matter what.

    pedcol

    The original collision detection was performed as following: to test whether point is inside given block, we test if all faces face outwards, away from the point. This can be done by testing angle between each faces normal, and point in space. But to test angle we need point of reference!

    It’s not a hard task – we can pick any of three points in triangle (or 4 points in quad) as reference point – the angles might differ, but if face faces away from the point, the angle will always be over 90 degrees.

    Illustration:
    illust0

    The bold arrow shows face normal, we are using a as point of reference. Now, to find angle between point and normal, we need to find their angle in local coordinate system based in point a. This means we receive two vectors:
    an = n (normal in coord system which starts at a)
    ap = p – a (coordinate of target point, in coord system which starts at a)

    Now, the angle between them is a simple dot product:
    dot = an . ap

    Note: we are not interested in actual angle, just testing if the angle is over 90 degrees or under. This means you just compare dot to zero, and if it’s less then this face is facing outwards. For collision to happen all faces must be facing outwards.

    We are not normalizing the normal, an, ap because their magnitude does not affect sign of dot

    True story

    This is my crude comic about a true story of how a game was designed – although it wasn’t started being developed (it’s on the prototype stage), here I try to give you general idea how the concept was created:
    theblob

    The idea was that there would be a mouse, and if you press SHIFT or run into wall really hard, it would blobify into a ball of fur. Although then producer came, barked at the team for making too complex ideas, and the decision was to limit the idea to just a charismatic blob named Erik