6 ms·
I've been working for almost 4 years on the on-board flight software for the European Space Agency's Mars Rover to look for signs of water and life on Mars: "Ex
by calummurray 8y ago
I've been working for almost 4 years on the on-board flight software for the European Space Agency's Mars Rover to look for signs of water and life on Mars: "ExoMars". It is due to be launched in 2020.
Due to the embedded real-time, mission-critical aspect of the software, the strictness of the process and focus on documentation can be frustrating. The space industry typically doesn't keep pace with new technologies, so we're often stuck using "tried and tested" tools that can feel antiquated. I sometimes feel jealous of developers at agile startups keeping pace with the most new technologies and frameworks that are desirable.
But the knowledge that I will have a significant amount of code that will (hopefully) run on another planet in the search for extraterrestrial life - something I can consider one of the most important thing our species should be doing - is extremely rewarding and motivating.
- nlh 8y agoThat is so deeply awesome. Can you tell us a bit more detail about the systems and how they work? C? Assembly?
- mywacaday 8y agoTwo years ago I moved from the Finance Industry to Life sciences, the burden of documentation and regulation is something to consider if you want to move into any regulated industry if you are used to agile. Up until now I never thought a bank could move an order of magnitude faster than anyone.
- calummurray 8y agoWe have a little bit of assembly for processor-specific startup housekeeping, but that's mostly reused with small modifications for different boards. The rest of the code base is entirely C, managing functions such as ground communications, mobility (locomotion, navigation and control), thermal management, power management, fault detection and recovery, payload (e.g. science instrument) management and mission planning. We need 100% branch code coverage at unit test level, and have function validation tests written in Java that validate the software against the requirements, running on simulated hardware. Similar tests are run against simulators with progressively more hardware-in-the-loop for more confidence.
- rubicon33 8y agoAre there any helpful frameworks or tools for unit testing firmware projects written in C? I'd really love to know what you guys are doing!
- jnbiche 8y agoI'd also love to hear what tools the ESA is using for unit testing, test coverage, etc. in C. But for small C projects at least, I've found the CuTest framework to work well: http://cutest.sourceforge.net/ http://cutest.sourceforge.net/
- 8_hours_ago 8y agoI am also interested in what ESA is using... I have used VectorCAST to generate MC/DC coverage reports for C programs. The interface is a pain to deal with and it crashed regularly, but it did the job.
- calummurray 8y agoHate to disappoint you, but we also use VectorCAST for unit test code coverage.
- komali2 8y agoSee that sounds shitty to you man but I just had an issue where I couldn't upgrade to Webpack 4 because some critical modules were out of date, but I have to upgrade to webpack 4 because other modules are claiming they'll be dependent on it soon (or I need to use deprecated modules). When stuff like this happens I'm like... why did I choose web dev...
- marsRoverDev 8y agoFor reference, I used to be in web/mobile dev before working with OP. You can always transfer over, as to be honest a lot of the skills are transferable. That said, space code has its own versions of webpack dependency hell...
- 8y ago
- nomy99 8y agoI wonder what your functional tests are like? Do you do dry runs of the robot on mars like surface?
- calummurray 8y agoYes, to test mobility (locomotion and navigation) we have a prototype model that we operate in an environment as close to the Mars surface as possible (representative sand, slopes and rocks etc.)
- nomy99 8y agoMost software projects functional tests are sequentially executed and don't have intricate failure driven scenarios(not to the extent of a robot on mars). I mean the robot is prone to unpredictable damage on an uneven surface. There is also the issue of signal loss + delay in transmission. If you are writing code for the transmission engine module for example, would you write test cases for all connected subsystems that might fail? If so, I imagine the dependency between systems probably gets really complicated and almost impossible to remember. So how do you ensure all systems respond and behave correctly in all possible known and unknown failure scenarios. Edit: I just realized this is no different than writing code for cars. I guess there are protocols in place and as long as your parts conform to the standards, the complexity is reduced.
- tabtab 8y agoTry my back-yard: the sprinklers broke and we procrastinated fixing them.
- thruflo22 8y agoThe yard in the middle of the Atlas Building on the Harwell Campus? We've been adapting some of the work that the RAL Space team did on the ExoMars Rover for use in farming. We're in London (based in Makerversity atm) if you fancy a chat :)
- marsRoverDev 8y agoSimilar - the facility in Stevenage; there's a sand dune in a warehouse next to the station on the left hand side (when travelling towards cambridge).
- mstade 8y ago> I sometimes feel jealous of developers at agile startups keeping pace with the most new technologies and frameworks are desirable. Funny how the grass is always greener... Many times I feel like the grumpy ol' man, shaking my fist at the young'uns for not recalling the lessons of yesteryear when jumping on the latest tech band wagon. There's definitely balance to be had, calibrated accordingly with your appetite for risk, but in my experience the "boring" tech almost always wins the cost/benefit equation. Too many times have I seen new developments fall into the "instant legacy" category simply because the tech they use isn't yet well known and explored (to them, or at all.)
- davedx 8y agoMay I ask where you are based?
- lifeformed 8y agoEarth.
- eat_veggies 8y agoFor now :)
- marsRoverDev 8y agoJust outside of London.
- rorykoehler 8y agoWill your location be impacted by brexit?
- deleted 8y ago[deleted]
- imhoguy 8y agoI don't think UK membership in ESA may be impacted with brexit. Norway and Switzerland are members of ESA but not EU.
- calummurray 8y agoThis is right. As long as the UK continues to contribute to ESA funds, we should get commensurate work in return ("geo-return"). However, our involvement in projects coming from the European Commission (EC), which is EU-related, such as the Copernicus programme ("Sentinel" satellites) could be negatively impacted.
- marsRoverDev 8y ago
- mediocrejoker 8y agoThis sounds like my dream job.
- tootie 8y agoI would trade every line of JSX I've ever even looked at to work on something like that.
- theyinwhy 8y agoA colleague of mine is working on ESA mars projects as well, a mars propellant drone and a mars suite. To my surprise, they are using golang.