AV-Portal 3.23.2 (82e6d442014116effb30fa56eb6dcabdede8ee7f)

Code in Spaaaaaace!!!!!

Video in TIB AV-Portal: Code in Spaaaaaace!!!!!

Formal Metadata

Code in Spaaaaaace!!!!!
Title of Series
Number of Parts
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
How do you write software that needs to perform perfectly a decade from now as it hurtles by an unexplored planet at thirty thousand miles per hour? Welcome to the world --- er, universe :) --- of interplanetary spacecraft flight software, where "launching" your software takes on a whole new meaning. Cosmic rays, constrained memory, execution time limits, and billions of miles between maintainer and program are a few of the challenges we'll explore in this talk. Before running the New Horizons spacecraft as a flight controller for the first-ever reconnaissance of Pluto and Charon, Katie wrote flight software for that spacecraft and one of the scientific instruments aboard a Mercury orbiter. She loves practicing the Way of Tea and mucking about in caves.
Software Personal digital assistant Code Bit XML Computer programming
Trajectory Building Scheduling (computing) Distribution (mathematics) Euler angles Multiplication sign Direction (geometry) Real-time operating system Mereology Food energy Computer programming Computer Neuroinformatik Formal language Programmer (hardware) Semiconductor memory Gravitation Bus (computing) Thermal radiation Diagram Recursion Determinant Error message Position operator Physical system Constraint (mathematics) Data recovery Software developer Moment (mathematics) Physicalism Sound effect Determinism Special unitary group Bit Database transaction Instance (computer science) Control flow Orbit Arithmetic mean Telecommunication Order (biology) System programming Escape character Resultant Spacetime Point (geometry) Functional (mathematics) Atomic nucleus Open source Coprocessor Element (mathematics) 2 (number) Number Power (physics) Frequency Programmschleife Term (mathematics) Computer hardware Acoustic shadow Operations research Standard deviation Information Key (cryptography) Duplex (telecommunications) Memory management Horizon Computer network Total S.A. Machine code Software maintenance Limit (category theory) Leak Power (physics) Database normalization Voting Loop (music) Software Logic Computer hardware Thermal radiation Network topology Kinetic energy Point cloud Gravitation Iteration Collision
Laptop Point (geometry) Statistics Open source Multiplication sign Data storage device Neuroinformatik 2 (number) Read-only memory Linear programming Operating system Atomic nucleus Operations research Assembly language Tape drive Open source Horizon Magnetoresistive random-access memory Mass Core dump Coprocessor Digital electronics Befehlsprozessor System programming Physical system
Freeware Power (physics)
hi I'm Katie I've developed some software that's running and has run on spacecraft that have gone to other planets in one case flying by Pluto last summer which is all you balista little planet anyway I thought it would be interesting to tell you a little bit about what is like to program for a spacecraft because it's so different from other kinds of programming so you can conceptualize if
you're a programmer a spacecraft as a network of embedded computers and the reason I've made these clouds is because these are functions that a spacecraft does and you might group them among different computers on the spacecraft like you might have one computer doing command and data handling you might have many computers or you typically have many computers running the scientific instruments and that code is typically developed entirely independently from the rest of the spacecraft or you might have a couple of these functions in these clouds being performed by one computer so just to give you an idea like there are definitely multiple computers on any any moderately sophisticated spacecraft so what I'm going to talk about applies to most of them so I'm starting from the very
beginning as it's kind of what was originally a thought experiment for myself but I think sharing my reasoning like if I kept asking why again and again and again I get to the very beginning which is space is big we can all agree on that and as a result spacecraft that need to explore different things I have to go far away I'm gonna be talking about spacecraft that are interplanetary meaning they go beyond Earth's orbit and that means since they're far away the access is remote here but radio signals and those radio signals can take a long time to get to where they're going for instance from the earth to the moon takes about 1.5 seconds for a signal each way to Mars it can take between 4 and 24 minutes depending on the respective positions of our planets in their orbits to get to New Horizons which is a spacecraft I'm still running which just flew by gluto last summer it takes five hours each way and the Voyager spacecraft which are the farthest currently operating spacecraft that we've got it's eighteen and a half and fifteen and a half hours respectively for each of those two spacecraft so we need to work so a spacecraft that's that far away needs to be able to act independently it needs to be able to recover from faults and operate autonomously another fact earth is a gravity well which means that space is expensive to get to or at least it currently is and when I say expensive it currently and forever will be expensive in terms of kinetic energy in a sense that like the escape speed is always going to be eleven point two kilometers per second and weird of course we're still using rockets and there's a really interesting Wikipedia article on non rocket space launch if you want to look that up that goes to into alternatives but for right now space is expensive to get to in terms of energy and money so spacecraft are expensive to build and launch it takes about ten or ten thousand dollars to twenty five thousand dollars per kilogram to get from Earth to just two low-earth orbit and that is far from getting you to interplanetary space so launch costs turn out to be a large part of the cost of developing a spacecraft so I said expensive to build and launch and I'm gonna get into the building part in a little bit but just to talk about some of the total costs like Discovery Program missions like messenger and Mars Pathfinder and Kepler or like a few hundred million dollars new new frontiers missions like New Horizons are like up to seven hundred million and then flagship NASA missions are like two to three billion dollars that's like the voyagers Mars Science Laboratory and the upcoming Europa mission as a result of being expensive interplanetary missions are rare and so the people who run them and pay for them are a little averse to risk so we need spacecraft to be highly reliable and to act very predictably as a result we tend to choose real time where we tend to we always pretty much choose real time operating systems and use deterministic languages and techniques so real time operating systems some examples of those are QNX vxworks nucleus Artem's RT linux so there's a number of open source as well as proprietary real-time operating systems and the key thing about real-time operating systems is not that they're fast the key thing is that they are predictable they guarantee a reaction within a certain amount of time and timing on a spacecraft can be critical especially at times like if you're firing thrusters to change your trajectory or your attitude your orientation if you're using scientific instruments to measure something you need to do it at the right time especially if you're moving you're probably moving pretty fast and the thing you're measuring is probably not not moving very fast compared to you or you might need to avoid a hazard like if you're flying close to the Sun and you have a Sun shield you really really need to have that Sun shield in between you and the Sun where you are the electronics and or else you will die quickly so you need to operate like autonomously and like with a very very guaranteed quick reaction time so determinism is another important part and one of the main ways that we achieve determinism is by avoiding dynamic memory allocation after initialization which it sounds like a big sacrifice to make for a programmer but we all know that dynamic memory allocation can lead to slow and possibly indeterminate access times it can lead to memory leaks as we just heard it can lead to heat fragmentation so we do not use dynamic memory in that way another tenant of the Church of deterministic programming is avoiding recursion we use loops that must have a statically determine abound on the number of iterations we don't use direct or indirect recursion so you can Google NASA coding standard for more information a lot of it is simple defensive coding practices but some like avoiding dynamic memory allocation and recursion are much more about being predictable and deterministic so some examples of languages we use in order to achieve deterministic code are C is a big one ADA which I haven't personally used forth so these are languages we've been using for the past like few decades or so to program computers that run spacecraft another another aspect of the determinism is that we need the data buses that connect these computers on this network onboard the spacecraft to be deterministic if you remember earlier net networks they were subject to collisions and the way you would back off from collisions would be with random back off periods random is like Anathem do deterministic behavior completely so he couldn't use anything like that so we have data buses and data bus standards that are not just deterministic but completely determined completely scheduled where every transaction has a time slot that it happens so everything happens exactly according to a schedule there are newer standards though coming out for spacecraft data buses that are more akin to modern networks modern Ethernet and Wi-Fi networks in that there are full duplex and point-to-point and packet switch and so code they kind of avoid collisions and maintain determinism that way so going on to hardware if you are a spacecraft you probably don't have a lot of electrical power to work with if you're far from the Sun you need to use non solar power and plutonium-238 is in a bit of short supply at the moment if you google NASA's plutonium problem you'll find out about some of the reasons why if you're on or orbiting a planet you have nights you're in the shadow of the planet so limited power other aspects of space that affect hardware it has radiation and you'll notice I've introduced a loop into this diagram regarding the market for radiation hardened Hardware where since spacecraft are expensive to be able to launch missions are rare meaning the market for radiation Hardware is limited meaning it's expensive so we need to resist these radiation effects especially in the semiconductors and electronics onboard the spacecraft you can't just shield the spacecraft with aluminum or something the high-energy particles don't care about your shield angry so there's a bunch of things to do with physical design error correcting memory redundant elements voting logic where the memory there's like three bits for every one bit and the three bits vote on on who's right and watchdog timers which are basically like Deadman switch that the processor presses every second or something otherwise it gets reset so we select older Hardware which means for software developers we have resource constraints like the following
so the Voyager missions had main processor that was eight thousand instructions per second point zero zero eight mips used the digital tape recorder it did not have an operating system and it was programmed in assembly language you can see the stats there for New Horizons which is the spacecraft that I programmed and helped run and an upcoming mission with slightly better stats but of course if you compare this to a modern computer or laptop or possibly even your phone it's not that impressive but I hope I've kind of explained why that is the future open-source reuse don't have time to go into that but that is the future