The Mars Rover On-board Computer
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 165 | |
Author | ||
License | CC Attribution 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/39261 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
| |
Keywords |
35C3 Refreshing Memories114 / 165
2
5
6
7
8
9
10
11
12
13
15
16
17
22
26
29
30
31
33
37
38
39
40
44
45
48
49
53
54
55
57
59
60
62
65
66
69
70
72
73
74
77
80
82
83
84
85
86
87
89
92
94
100
104
105
106
107
108
111
113
114
115
116
117
119
121
122
123
124
127
132
133
136
139
141
143
144
145
146
148
149
150
154
155
156
157
158
159
160
161
162
163
164
165
00:00
Semiconductor memoryMusical ensemblePhysical systemComputerControl flowLevel (video gaming)Computer animationDiagram
00:38
Commodore VIC-20ComputerGame theoryMusical ensembleState observerChemical polarityExpressionMeasurementOrbitConnectivity (graph theory)Physical systemMassMetric systemNumberJSON
01:35
SurfaceDecision tree learning
02:18
Point (geometry)DistanceSeries (mathematics)MassPosition operatorComputer animation
03:05
Source codeMetreLevel (video gaming)
03:40
Semiconductor memoryMultiplication signMarginal distributionConfiguration spaceComputer animation
04:14
Gradient descentLevel (video gaming)Configuration spacePerfect groupNavigationCombinational logicSupersonic speedRight angleComputerSingle-precision floating-point formatSoftwareModul <Datentyp>
05:03
SpacetimeComputer hardwareSoftwareInformation privacySoftware engineeringMobile appData miningMultiplication signInformation managementWordPresentation of a groupComputer animation
05:55
Computer hardwareReliefThermal radiationSpacetimeRevision controlPhysical systemPowerPCWhiteboardComputer animationXML
06:30
EEPROMData storage deviceFlash memoryBefehlsprozessorWhiteboardRight angleEEPROMCASE <Informatik>Flash memoryComputerConnectivity (graph theory)Computer animation
07:15
Fluid staticsDigital electronicsError messageParity (mathematics)Element (mathematics)VotingThermal radiationEquivalence relationSpacetimeComputerMultiplication signThermal radiationWhiteboardCoprocessorComputer animation
07:58
Airy functionBefehlsprozessorAsynchronous Transfer ModeRead-only memoryCore dumpRevision controlKernel (computing)CountingSystem programmingWhiteboardComputer hardwareSoftwareReal-time operating systemRange (statistics)Digital photographySpacetimeComputer animation
08:42
Range (statistics)CASE <Informatik>SoftwareMachine codeConnectivity (graph theory)Computer architecturePrototypeMereologyComponent-based software engineeringAnalytic continuationLecture/ConferenceComputer animation
09:37
Read-only memoryResource allocationSpeicherbereinigungEmbedded systemTemplate (C++)Operator overloadingOperator (mathematics)Machine codeConstructor (object-oriented programming)Exception handlingInheritance (object-oriented programming)Physical systemAerodynamicsSemiconductor memoryException handlingTask (computing)Process (computing)SpeicherbereinigungSoftware developerSoftwareOperator (mathematics)MultiplicationResource allocationObject (grammar)Memory managementUnit testingLevel (video gaming)Different (Kate Ryan album)Electronic visual displayAreaCase moddingTemplate (C++)Inheritance (object-oriented programming)Virtual machineLeakFault-tolerant systemCondition numberComputer animation
11:34
ArchitectureSoftwareConnectivity (graph theory)YouTubeInterface (computing)Component-based software engineeringComputer architectureFunctional (mathematics)MereologyLevel (video gaming)Software testingPhysical systemSoftware developerExtension (kinesiology)Computer animationProgram flowchartLecture/Conference
12:34
Group actionProduct (business)Group actionCASE <Informatik>Atomic numberLevel (video gaming)Computer hardwareConnectivity (graph theory)Functional (mathematics)Direction (geometry)Database normalizationBackupComputer animation
13:23
AnwendungsschichtInterface (computing)BuildingGroup actionProduct (business)Sample (statistics)SurfaceSurfaceGroup actionSampling (statistics)Module (mathematics)Connectivity (graph theory)Form (programming)Machine codeSource codeComputer animationProgram flowchart
14:27
Physical systemUbiquitous computingEntire functionModule (mathematics)Mobile WebComputing platformPattern languageSoftware testingStructural loadAsynchronous Transfer ModeAdditionGroup actionExecution unitComputer animationLecture/Conference
15:07
Semiconductor memoryFormal verificationExecution unitValidity (statistics)Software testingMathematical analysisMachine codeComplete metric spaceTestbedSoftwareArmLevel (video gaming)CASE <Informatik>MereologyStructural loadFunctional (mathematics)Video game consoleMobile WebModule (mathematics)Computer animation
16:31
Physical systemExtension (kinesiology)Flash memoryMechanism designComputerSeries (mathematics)Process (computing)SoftwareRevision controlSoftware testingComputerSemiconductor memoryCASE <Informatik>BackupExpected valueComputer animation
17:22
ComputerAsynchronous Transfer ModeLocal ringPhysical systemBootingField programmable gate arrayDirection (geometry)Multiplication signDrill commandsComputer animation
17:59
ModemMessage passingBitPoint (geometry)Source codeBit rateLecture/Conference
18:43
Food energyVideo gameMereologyLecture/ConferenceMeeting/InterviewComputer animation
19:25
Physical systemDevice driverSequenceGraphische ProgrammierungLocal ringOrder (biology)Computer simulationRoboticsContext awarenessComputer animation
20:06
Point (geometry)Asynchronous Transfer ModeMetreDirection (geometry)Order (biology)Perspective (visual)JSONComputer animation
20:53
Selectivity (electronic)Real-time operating systemPhysical systemReal numberVisualization (computer graphics)NavigationSurface of revolutionInheritance (object-oriented programming)
21:45
Right angleUniform resource locatorGame controllerAreaDevice driverRoboticsSoftware testingMedical imagingRange (statistics)PixelMereologyDistanceSeries (mathematics)Computer animation
22:28
Geometric modelingCellular automatonImage resolutionRoboticsBit rateTraverse (surveying)Mobile appIntegrated development environmentPersonal area networkRadiusComputer animation
23:04
Reverse engineeringLevel (video gaming)Touch typingNumberTraverse (surveying)DistanceProcess (computing)Computer animation
23:41
Multiplication signRevision controlLevel (video gaming)AlgorithmRegular graphMathematical optimizationRoboticsAutonomic computingDirection (geometry)SoftwareComputer animation
24:15
System on a chipSoftwareVisualization (computer graphics)Disk read-and-write headNavigationComputer animation
24:54
ArmResultantComputer animation
25:33
Complete metric spaceError messageFlash memoryArmFitness functionMultiplication signComputerMedical imagingFlash memoryMultiplicationBootingComputer animation
26:44
View (database)ArmWhiteboardTriangulation (psychology)WritingAngleMedical imagingImage warpingMachine codeBitSoftware
27:37
VibrationSieve of Eratosthenes
28:31
InternetworkingMultiplication signLecture/ConferenceMeeting/Interview
29:03
Multiplication signExpected valueComputer animation
29:40
Computer simulationDifferent (Kate Ryan album)Condition numberTestbedType theoryMoment <Mathematik>
30:23
Large eddy simulationAreaSoftwareDifferent (Kate Ryan album)Bit rateBootingMereologySemiconductor memoryMultiplication signFlash memoryMultilaterationAddress spaceComputerData storage device
31:32
Condition numberComputer animation
32:15
Centralizer and normalizerDifferent (Kate Ryan album)Greatest elementWater vaporComputer animation
32:53
Total S.A.Gradient descentContext awarenessSurfaceSet (mathematics)MassSoftware
33:34
Computer-generated imageryMeeting/Interview
34:19
Green's functionSoftwarePattern languageException handlingSoftware engineeringFehlererkennungConnectivity (graph theory)Different (Kate Ryan album)Error messageMachine codeLevel (video gaming)Goodness of fitLecture/Conference
35:23
Semiconductor memoryConnectivity (graph theory)Medical imagingBackupActive contour modelChainNumberRegular graphError messagePattern recognitionMachine codeAlgorithm1 (number)
36:35
MIDISemiconductor memoryLevel (video gaming)NumberBitOperator (mathematics)RoboticsFrame problemSoftwareBit rateOperating systemDifferent (Kate Ryan album)Latent heatAutonomic computingDampingTerm (mathematics)Physical systemConnectivity (graph theory)Right angleComputer animation
38:57
Different (Kate Ryan album)Order (biology)SpeichermodellCausalityNumberShift operatorIncidence algebraTime zoneThermal expansionSpecial unitary groupParity (mathematics)SoftwareHash functionMereologySemiconductor memoryMultiplication signComputerPhysical systemComputerTelecommunicationDrill commandsBitProcess (computing)Ferry CorstenRoboticsCASE <Informatik>WebsiteMusical ensembleBuffer overflowLecture/Conference
Transcript: English(auto-generated)
00:19
The next talk will be presented by Break the System and the talk is entitled The Mars
00:26
Rover Onboard Computer. The stage is yours.
00:52
This took entirely too long, here we go.
01:02
Over the last 50 years a lot of missions have tried to reach Mars. Unfortunately Mars is hard and landing on Mars is even harder. So a lot of these failed, especially the landers. Funniest failure by the way is Mars Climate Orbiter which launched in 1999 and had one
01:23
component that used the imperial system and one component that used the metric system for measurements and when they tried to exchange numbers the thing came way too close to Mars and burned up in the atmosphere. Sojourner was the first cute little rover about this big, about the size of a skateboard
01:44
and deployed in 1997 to the Martian surface. Spirit and Opportunity, the Mars Exploration Rovers or MER, landed in 2004. They're about this large, the size of a golf cart I want to say and they're wildly
02:05
successful. Spirit was active from 2004 to 2010 whereas Opportunity was active for a full 14 years until just this summer when her solar panels got covered by a dust storm and she went
02:20
to sleep. She travelled for a distance of 45.16 kilometres, completing a full marathon before the end of her mission. Also funniest landing method ever with a series of airbags that's like bouncing across the Martian landscape.
02:42
Today I want to introduce you to Mars Science Laboratory, also known as Curiosity. Curiosity is a completely autonomous vehicle and she has to be because radio signals from Earth to Mars travel about between 10 and say 40 minutes depending on the positions
03:03
of Earth and Mars. She has an atomic power source, the MMRTG, so she's completely independent of solar power and Curiosity's top speed is 100 metres per hour. That's not a typo.
03:25
One of her coolest instruments is the freaking laser which she uses to zap stones from up to seven metres away, that's the other end of the stage here, and uses a spectrometer on the resulting gases to analyse them.
03:42
The rover has spent over 2,200 soles on Mars. A sol, by the way, is a Martian day. It takes about 24 hours and 40 minutes. During that time she drove almost 20 kilometres and she's still going. She exceeded her original mission requirement by a huge margin.
04:04
So say hi, Curiosity. Curiosity has been in different configurations. The cruise stage in interplanetary stage, navigating with star maps and making course
04:24
correction manoeuvres to plan the perfect arrival on Mars. The entry descent landing configuration with its combination of guidance thrusters, heat shields, supersonic parachutes, retro rockets, freaking sky crane, that's a whole other talk
04:43
right here, like that's not this talk, sadly. And finally, the rover configuration we see now. All of these configurations were controlled by a single onboard computer using sophisticated and very modular software.
05:00
So let's have a closer look at that today. Quick introduction. Hi, I'm Daniel. I'm a software engineer. I'm an amateur space nerd and I learnt a lot about space hardware and software when trying to build satellites for my startup. I work at Keepsafe, creating privacy-protecting apps.
05:22
Thanks for paying my hotel room, by the way. And I want to look at the Curiosity mission today through the lens of a person who writes software and uses hardware. A quick disclaimer, by the way. I've used work of these people here, Emily Lactawala, Dr. Catherine Weiss, and Dr. Mark
05:41
Mamone extensively in this talk, and I admire them greatly, but I didn't have the time to contact them. So if you find any and all mistakes in my presentation, they're mine and mine alone and not these people's mistakes. Let's talk about Curiosity's hardware.
06:03
This is the BAE RAD 750, a radiation-hardened version of the IBM PowerPC 750. Created by BAE Systems, it can be clocked up to 200 MHz and it's used in space a lot.
06:20
On Curiosity, this chip is clocked at 133 MHz. This is the chip, and this is the chip within its board. You see two different boards here, or board sizes here. As far as I know, Curiosity uses the board size on the right. On the board, we have 256 kilobytes of EEPROM, we have 256 megabytes of RAM, and
06:49
we have a whole lot of 2 gigs of flash storage. And we have all of that twice. In case something fails, the rover can switch from the A-side computer to the B-side computer.
07:02
They are both completely independent. They also have a few components that belong only to one side of the computer. For example, and this is going to be important later on, the navigation cameras. Of course, all of this is radiation-hardened, and there are a lot of techniques to radiation-harden
07:21
a chip and board, and this is another talk that I would like to hold some day, but today is also not this talk. So I'm going to leave you this slide and tell you that the last space shuttle used a 386 equivalent processor, Hubble has been upgraded to a 486, and the International
07:42
Space Station uses, or the command computers are using 386s. This is because radiation-hardening is hard and takes a lot of time until the chips come out, so space stuff is always very, very slow.
08:00
What kind of software can we run on this hardware? Turns out we're using VxWorks 6.7, a simple real-time operating system.
08:24
This screenshot is seven, but it looks cool. VxWorks is also used in other NASA spacecraft, various SpaceX spacecraft, the Boeing 787, the KUKA industrial robots of my hometown Augsburg, and also the Toshiba e-bridge
08:43
range of photocopiers. And before you ask, yes, it can run Java, but in this case, it doesn't.
09:04
The software that runs on Curiosity has a long lineage. There has been a continuous code base that started in the 90s when JPL wrote code for their prototype rovers, and then part of that was used in Sojourner, and then that
09:22
got rewritten and whatever, and was used in the Mars exploration rovers, and then it was ported from C to C++ and refactored into a component-based architecture for MSL, aka Curiosity. And yes, we are using C++.
09:42
Not full C++ as you'd use on a desktop phone. One thing that's missing is processes, for example. VxWorks gives you this concept of tasks, but they're not as independent as processes. They all use one big chunk of memory, and it's up to you to make sure that they don't
10:02
stomp all over each other. We also don't have exceptions, templates, Iostream, multiple inheritance, and the only operator we're overloading are the new and delete operators that are used to allocate new memory for objects or for things, and to deallocate that memory.
10:22
And they are overwritten by the custom memory allocator that JPL wrote for VxWorks. This is a pretty cool piece of software because it guarantees graceful access to these defined memory pools, and it has a well-defined behaviour for out-of-memory conditions, which
10:44
is very important, as you can imagine. It supports multiple pools in different areas of the RAM, so that's how you can separate your mod processes. It provides diagnostics. There's a display that shows you each new and delete operation, and it can also give
11:01
you a map of the RAM on request. The rover can even downlink a map of its RAM, if needed. The same allocator is also used for development on JPL's Unix machines, which is, of course, very helpful, and there's no garbage collection here, which would be too expensive.
11:24
Instead, you have to be very careful not to have any memory leaks, and these are usually enforced by unit tests. If I add a title of something, by the way, you should be able to Google it and watch
11:44
it on YouTube. Those talks are super interesting. One of the philosophies behind the flight software is its component-based architecture. Functions are grouped into components, and a component exports an interface and identifies
12:02
the interfaces that it needs to function. That means that you can replace any and all components of the system, as long as they export the same interface. It also means you can work on your own component without having to touch all the other parts of the system.
12:20
This is very helpful for development and also for testing and extensibility. You'll also notice that the components here are organised in layers. The lower-level components deal with the hardware directly. They turn switches, they move actuators, they prepare data for being sent back to
12:45
earth. They also abstract away redundancy components. There's a lot of redundant components where a thing is just twice in the rover in case one of them fails, and the lower levels will automatically fail over to a back-up
13:01
component without the upper levels having to know the intricate details of what exactly went wrong. So they will get a notification that says something went wrong, and I'm using the back-up, but they don't have to know how the back-up is activated or how it's being used. Further up, we have components that coordinate these very atomic functions into actions.
13:23
And finally, we have components that group these actions into whole activities like land on the surface, or take and analyse a surface sample. The land on the surface module, by the way, is not on here because it was deleted
13:41
right after the spacecraft actually landed on the surface. The most complex module in the whole codebase is the surface navigation module, which was in some form also used for the Mars exploration rovers already.
14:02
On Mer, it was about 21 per cent of the full codebase. For MSL or curiosity, it's about ten per cent of the whole codebase is just the surface navigation module, pathfinding, moving, that kind of stuff. There's about 100 individual or actually over 100 individual source code modules,
14:25
each with its own owner. Another philosophy is fault protection. Mobility and science modules should not have to worry about the spacecraft's safety.
14:41
Instead, the infrastructure in addition to providing the platform to do mobility and science must keep the system safe and away from the dreaded safe mode. Unsafe actions should not be allowed and should be blocked. The pattern here is fault should be detected and corrected as low in the layers as possible.
15:04
Finally, we have just loads and loads of testing. We have unit tests, we have static analysis, and we have validation and verification where we run code on the various test beds like this complete duplicate of curiosity
15:23
down on the ground. And then there's test as you fly. Once the software is uploaded, behaviours will be tried out and tested on Mars during the mission.
15:41
So this is really cool. Curiosity's flight software can be remotely updated from Earth. So engineers on the ground can change the software and introduce new functions and behaviours or tweak the landing code. The mobility module, by the way, the thing that allows the river to move her arm and
16:01
drive around was actually developed while the spacecraft was already in cruising stage towards Mars. It was not part of the launch load at all. It was uploaded once the rover was safely on the ground. It's kind of like the console you got for Christmas. You unpack it, you plug it in, and then it just has to update for a week in this
16:23
case. How does the software update mechanism work? First, the software update is uploaded into the active computer's RAM and run there.
16:43
And if the system behaves erroneously, it can reboot and load the old version from its flash storage. And the rover is going through an extensive series of tests to see if everything works as expected. If that passes, the software gets uploaded into the flash storage and booted from.
17:02
After another series of tests, that half of the computer is updated, and the process then gets repeated the same way for the other side, because we want to have both computers ready for anything in case we need to fail over to the backup computer.
17:23
Rover days start around 9 or 10 in the morning, local Martian time, when Curiosity boots up from her dream mode. While in dream mode, various FPGAs already flip on the heating system and prepare everything so that the rover is warm once the main computer is booting up.
17:43
And then she gets directions from the ground and sets off for her day. She drives, she collects data, she runs experiments, she drills, she zaps. It's pretty fun, but it's very exhausting.
18:01
The day ends shortly before sundown, when the last satellite pass occurs. And that is used to upload the last bits of data for the day before the rover goes back to sleep. Curiosity does have various antennas, and some of them could talk to Earth directly, but that would be at the speed of about a 14.4K modem.
18:24
Using the relay satellites, the data rate goes up to about 500 megabits per day. That's about 62 megabytes per day. So the data with the highest priority gets sent pretty quickly, and the rest can just follow at some point.
18:40
And then she needs to go to sleep. The MMRTG, the atomic power source, produces about 110 watts of energy. The rover needs 45 to 70 watts even while sleeping. 150 watts while she's awake, and up to 500 watts while driving.
19:04
So she spends most of her life asleep and recharging her batteries, being awake for about six hours each day. Lucky her. Next I want to talk about how the driving part actually works.
19:27
Rover drivers use a system called RSVP, the Rover Sequencing and Visualization Program to plan out drives. This has been used and updated over the years and has been used for previous rover missions as well.
19:43
In RSVP, the terrain data that Curiosity sends back is being reconstructed in 3D, and the human rover drivers can look at it, like, fly through it, do local simulations of activities, some sanity checking, does this really make sense in this context, and then send
20:03
orders to the rover. These orders could, for example, be blind driving. The easiest driving mode is blind driving. Just point the rover into any directions and go for 10 meters just blindly.
20:21
This is dangerous and cumbersome, however, because you can only drive as far as you can see, and even then, like, the further away things you can see, like, maybe there's things hidden by perspective, and then you have to wait for more orders from the ground. Even then, you might run into obstacles.
20:43
The thing, though, is that this is way easier computationally and way more predictable, so it was used a lot, especially in the beginning of the mission. Then we have visual odometry. Odometry is finding out how far you've come by counting wheel revolutions or other
21:03
things. The thing is, odometers and wheels don't work here because Curiosity can't detect slippage in real time, and the metal wheels, they slip a lot on rock and sand. Instead, what she does is she takes before and after pictures with her stereoscopic cameras and compares them.
21:22
She will auto-select various features in the terrain that she finds interesting and follow them along as she drives, so she will go and then see, like, a super interesting rock and just, like, look at the rock for a while and see how far she's come. This is all done on the rover. This is not being sent back to Earth or something, so this is a completely separate
21:43
system and it works very, very well. And then there's AutoNerf, where the rover drivers set a target or a destination location and the rover tries to find her way towards the target completely autonomously while avoiding the red no-go areas that are designated by ground control.
22:05
Curiosity has stereo cameras and takes pictures with them. Features in the image pair are correlated and triangulated to get the distance of these features. The range data must satisfy a series of tests before being seen as correct, like unclear
22:20
and misleading parts of the image, like pixels that are only in one of the images or parts of the rover are being ignored. Using these stereoscopic images, Curiosity will then create a geometric model of the surrounding terrain and subdivide it into grid cells of the resolution of the rover wheel. She will then rate each of these cells according to its traversability, how much she'd
22:45
like to drive there, taking into account slopes, steps, roughness, excessive tilt, and other environmental dangers like things that just stick out too much from the ground and would scratch her belly pan. These obstacles are expanded by the radius of the rover so that her center will not
23:05
touch these things and she will stay far enough away from them. This gridded traversability map is used for each step of the navigation. So she will then project a number of paths onto the map and evaluate them.
23:22
Is this safe? Will this get me closer to my destination? She then chooses the safest path that gets her closer to the goal and drives a short distance on that path. And after each step, the navigation process starts again until the goal is reached or no safe path is found or the rover is commanded to stop.
23:42
To find her way, Curiosity uses a version of A-Star Search optimized for driving tiny increments at a time between map updates. Because of this optimization, the algorithm is much faster and more efficient than regular A-Star Search and therefore better to use on the rover.
24:04
AutoNav is still too slow to use all the time, but as the mission went on, the rover did more and more autonomous driving because people learned how to trust the rover and give it the correct directions and also the software was improved over and over.
24:20
This is Curiosity looking back at her very first drive. She surprised the engineers here because she avoided a very, very tiny rock. You can see it at the top where this little corner is. So she went straight and then there was this rock and she was like, oh, this is very dangerous, I'm going to walk around. And we've seen this before. This is basically exactly that drive being replayed in higher speed in RSVP.
24:46
And look at the head moving around and also the other cameras. You can see them, but they also take pictures. And this is visual odometry in AutoNav working. All right, what other features do we have? We have the Ma Li camera.
25:01
The rover has an arm and at the end of that arm, there's a camera. Turns out it can actually take pictures of itself. For example, of the belly pan or of the wheels directly after landing to see if they survived the landing correctly. Using that arm, she can also take larger panoramas by taking multiple pictures and
25:23
therefore cover her entire body. This is what the result looks like. This is Curiosity's very first selfie. If you stitch them together, they look pretty cool. Like they are amazing pictures and I love to look at them.
25:40
The arm is usually photoshopped out because you will only see half the arm all the time because it doesn't fit into the panorama. Let me tell you about what happened on Sol 200. Suddenly, the rover couldn't save data anymore. Transmitting images live back to the ground worked fine, but saving them for later
26:01
upload would fail. The rover also rebooted multiple times without apparent reasoning. In the end, the engineering team decided to switch to the B-side computer. From there, they could assess the damage and it turns out that the A-side
26:23
computer has a fault in its flash. You can't really tell what it is, but they have now disabled half of the flash in the A-side's computer and this seems to work fine. Curiosity was on the B-side computer from then on.
26:41
This is more work than you can imagine because as I told you earlier, there are various cameras, especially the navigation cameras, that are directly connected to each of the boards. So if you switch from the A-side to the B-side, it turns out that the cameras are slightly offset.
27:01
This gives you different angles and these have to be programmed into the software, of course, or it will give you faulty data. Then it also turned out that during the heat in the Martian summer, these cameras warp slightly and this warp warps the images a little bit and that makes the triangulation of the stereoscopic images very hard.
27:25
So they also had to write code while on Earth just by looking at the pictures, how to calculate out this warping. It's a whole thing. Exactly one year after landing on Mars, Curiosity celebrated her first birthday.
27:45
This is SAM, an instrument that includes a very exactly controlled sieve that can sieve with these perfectly programmable vibrations. The first birthday after landing was programmed to play the following vibrations.
28:35
Imagine the tiny rover Curiosity sitting in the Martian desert just like singing a birthday song for herself.
28:44
This only happened once, by the way. You hear sometimes on the internet the rumor that this happens every year. It happens exactly once and the first birthday. It has been six birthdays, five birthdays since. So, and those were all just regular working days.
29:03
After some time on Mars, engineers noted that the wheels were getting torn up way quicker than expected. The wheels, they are only about a millimeter thick and they are made from machined aluminium. What happened was that Curiosity ended up in terrain that wasn't experienced by Oppie or Sojourner.
29:24
Normally, these small rocks, as you see on this picture, for example, when the rover drives over them, they get just pushed to the side or pushed into the ground. But this clearly is not happening here. The terrain is ripping deep gashes and holes into the wheels.
29:41
So, JPL engineers on the ground, like Amanda Steffi here, constructed various ground test beds that simulated different new ground conditions and tested the wheels to failure, as they say, so that they know exactly which types of terrain are the most dangerous to drive on. And it turns out that if you have rocks
30:01
that are cemented into the ground and they have very sharp edges at the top and they don't really move aside because they're completely fixed in place, then the back wheels will force the front wheels that can't really move because of the sharp rocks onto those rocks with the huge torque that the rover has
30:21
and this leads to these punctures. So, the driving software was changed to allow the wheels to move at different turn rates. So, to avoid this pushing onto the sharp rocks thing, also the rover has been very carefully steered out of the rocky areas and is now back on the more sandy areas that she prefers.
30:45
On sol 2172, that is September 15 of this year, another computer problem was detected. Curiosity was completely healthy but could not access parts of her memory
31:00
where she stores data for later uploads. This is clearly a serious problem but it doesn't endanger the rover's safety. You'll notice no reboots this time. For now, the rover was switched back to the A side and is merely doing science again,
31:20
while engineers in the background are trying to diagnose the problem. And you remember, the A side is safe as long as it doesn't address the faulty part of the flash. What does the future hold for Curiosity? So, Curiosity's primary mission was from 2012 to 2014
31:45
and she's still going strong in 2018, so that's pretty cool. Turns out, a few months ago at a conference in Toulouse, NASA and JPL engineers said that there were about 10 kilometers left in the wheels if conditions are about the same.
32:02
We can also expect the MMRTG power source to last for another 10 years or so, so if nothing happens, she will live on for a while. She has more or less already reached her goal. This is Mount Sharp, aka Aeolus Mons,
32:21
the central peak in Gale Crater. And Gale Crater was once filled with water and because there's lots of different sediments at the bottom of Gale Crater, there's a boatload of interesting science to be done here. And after driving for 20 kilometers,
32:43
Curiosity is now in the foothills, or as JPL calls them, the butts of Mount Sharp. So there's lots of cool stuff to look at. In about two years, we should see the arrival of Mars 2020.
33:01
Curiosity's sister rover. It has the same chassis and the same body, same software, more or less, slightly updated wheels, and a completely new set of science instruments. It will also be the very first rover to include a microphone so that we can hear
33:21
what the surface of Mars sounds like. And maybe, just maybe, if we listen close enough, we can hear a tiny, faraway birthday song.
33:56
Tears in my eyes, actually. What's left for today?
34:02
So I guess we have lots of questions. There are microphones here in the aisle, exactly, and we start with a microphone, too. Hi, thanks for the talk. Two small questions. First, why you call the rover a she?
34:21
And the second one, can you say something more about error handling? Does the software have different kinds of errors which are treated differently? Right, good question. So the first question was, why is it a she?
34:41
And it turns out that JP and NASA call all their rovers by female pronouns, so I just did the same, because it just seems nice. And the second question was about error handling. There is a whole pattern that is being discussed by Katherine Weiss, for example,
35:01
one of the software engineers and architects of the software, where there's a whole error detection pattern, and they do it all in the same way. They have three status codes, green, yellow, and red, where green is just everything is nominal. Yellow is something happened, but the lower level
35:20
component was able to fix it by, I don't know, like rooting something around, or switching to a backup component, or whatever. And then there's red, where the component just says, okay, something way higher up in the chain has to deal with this.
35:41
So this way, they can like bubble up these error status codes. Thanks. Okay, we have already more questions than we can take, I am afraid, but we continue with number five, please. Okay, thanks for your nice talk, and I want to know how does the image recognition works for the path finding?
36:01
Does the rover compare the images, or does it have a kind of lighter sensor, or how does it work? It is all just regular images, so there's no LIDAR. I'm looking at my backup slides just now, because I have a lot on this. So basically, I'll find it later. Basically, it's just regular image recognition.
36:22
There's an algorithm in there called Rockster, which can recognize rocks in the sand, like the ones you see here, actually, by their contours. And also, because you have stereoscopic images, you can calculate like a 3D map of the terrain.
36:40
Number four, please. Hello, I've heard that some components, or this echo, are controlled by Ross Robot Operating System, is that right? Robot something rating system? Ross Robot Operating System.
37:04
It might be true, I have to be honest, I haven't heard of that term before. So, that's the edge of my knowledge, apparently. Number eight, I guess. So, when the autonomous driving software was designed,
37:24
would be probably around 2005. Today we have autonomous cars being designed for pure cameras. Is NASA on a dead end, a different path?
37:43
Will they integrate what is being designed today for cars here? Or is this going to be completely in a different frame which is not compatible? Are they going to augment or rewrite from scratch?
38:02
So, I don't have any affiliation with NASA, but if you want to hire me, I'm here. I don't have any affiliation with NASA, so I can't speak for them. To me, it seems like it's two very different use scenarios where autonomous cars, like they use all kinds of detection specific to roads,
38:22
whereas the rover has to navigate a rocky terrain. But I can imagine, because there's a lot of research going on, and this research is public, that they might take the best bits of that research and integrate them. These people are incredibly smart.
38:42
Okay, we take one question from the number six. Is there a specific reason why there's no radar or LIDAR sensor included? Because I think that would make getting 3D images more easy. I do not know of a reason. It might be because it's just,
39:02
like the whole design is basically from the early 2000s. Maybe LIDAR wasn't good enough back then. What I can recommend to you, by the way, is this incredibly good book, How Curiosity Does Its Job, by Emily Lactawala from the Planetary Society. This will definitely answer this question, I imagine.
39:23
But I don't know. Number one, please. What about security? Are updates signed? Is communication encrypted? I know there's parity bits and hashes going on.
39:48
That's your answer? Number four, please. For six hours per day, now I'm not sure how many hours in Mars per day,
40:02
but how it's organized herself to work in different times per day, or it's in the same time every day? The rover always works in its own or in her own time zone. So if I say 10 o'clock, I mean 10 o'clock in the morning on Mars,
40:20
so about a few hours after the sun has risen. A Martian day, a sol, has about 24 hours and 39 something minutes. So it's very close to Earth Day, but there's some movement between Earth Days and Mars Days. So there's some offset that's worse and worse.
40:41
So for the first year or so, or maybe even two years, the JPL team that controlled the Mars rovers actually worked in shifts that corresponded to Martian days, and that led, of course, to night shifts, weekend shifts, all kinds of stuff. And they have since created this whole system where they can actually work just during the Earth Day,
41:05
and it results in about these 30 day stretches where the rover still gets new updates and orders every day. And then in between, there's always like a few days where the rover just sits there, doesn't have anything to do because the people need to sleep. And during that time,
41:21
it will just upload all the data that it has collected because of the slow uplink speed. Okay, two more, number five, and then number two, and then we close the session. Hi, great talk. On the two incidents when they had to switch the computer sides, do you know if they found out what the cause of that was?
41:42
Was it like cosmic rays frying something or the thermal expansion working? They did not. Like this is the thing, like there's also other incidents that I didn't talk about, like for example, the drill broke at some point. And in all of these cases, you can't really find out what's going on because to do that, you would have to go there, open the lid and just look in and see the things.
42:04
So like all they know is what their software can tell them. So their software can tell them it's crashing when it accesses this part of the memory. So don't hold it that way. Thanks.
42:20
Okay, and finally, number two. Hi, those two computers named A and B, are they of the same hardware design or are they different? They are, they're both the chip that I told you about earlier, the BAE 750. I'll be in the bar just outside the exit, the overflow bar. If you have any more questions, find me there.
42:43
Okay, with that, let's thank the speaker again. Thank you.