
JPL Open-Source Rover Project Based on the Rovers on Mars - ghosthamlet
https://github.com/nasa-jpl/open-source-rover
======
TaylorAlexander
My coworker Liv designed that! I don’t know the original purpose but it’s a
fun project.

I’ve also got my own open source Rover design if you like this kind of thing:

[https://youtu.be/DXPmqCd0r04](https://youtu.be/DXPmqCd0r04)

~~~
jacobolus
It’s very confusing having the frame rate of the camera and the rotation of
the wheels in sync so that the wheels appear completely stationary while the
rover drives forward.

~~~
TaylorAlexander
Right! It was weird to watch when editing.

------
elkos
If you are interested in other open-source space technologies feel free to
check out Libre Space Foundation's
([https://libre.space](https://libre.space)) code repositories
([https://gitlab.com/librespacefoundation/](https://gitlab.com/librespacefoundation/))

We aren't NASA or JPL but a non-profit based in Greece. We already run SatNOGS
(a network of satellite ground-stations), UPSat (the 1st satellite with
components mainly under the CERN Open Hardware License) and on the side we
work on amateur high power rocketry telemetry and PocketQubes.

~~~
tomp
Awesome! Can I contribute? In other words, how can I, as an experienced
backend developer (Java, Python, Scala, Ocaml, some C/C++) but a complete
newbie in space, hardware and/or realtime systems, contribute?

~~~
elkos
Hey tomp. Of course you can. Most of our source code for SatNOGS is actually
Python (and Django) and there is a lot you can do with C++ too. Check out our
forums and don't hesitate to introduce yourself to the rest of the community
[https://community.libre.space/t/new-users-
welcome/29/278](https://community.libre.space/t/new-users-welcome/29/278) feel
free to also hang-around over our IRC channels at the freenode server #satnogs
Matrix bridged here
[https://riot.im/app/#/room/#satnogs:matrix.org](https://riot.im/app/#/room/#satnogs:matrix.org)
or #librespace Matrix bridge
[https://riot.im/app/#/room/#librespace:matrix.org](https://riot.im/app/#/room/#librespace:matrix.org)

------
tomp
if anyone has worked at JPL or similar, what's the best resource for learning
how to make an _actual_ Mars/Moon rover?

I'm very curious about things like, what kind of wheels you need for regolith,
how to manage extreme temperatures (electronics, motors, batteries, cameras),
how communication works (could you have a remotely-operated lunar rover?),
dealing with radiation (SpaceX works with consumer electronics AFAIK, but they
mostly fly within Earth's magnetosphere, which ... changes things).

Any replies or emails would be extremely appreciated.

~~~
ncol
Haven't worked in this field, but here are some episodes discussing the topic:

[https://www.youtube.com/watch?v=nJLOZDPTp3I](https://www.youtube.com/watch?v=nJLOZDPTp3I)

[https://www.youtube.com/watch?v=ADJwChUtdDQ](https://www.youtube.com/watch?v=ADJwChUtdDQ)

[https://theamphour.com/334-an-interview-with-gerry-
roston/](https://theamphour.com/334-an-interview-with-gerry-roston/)

[https://theamphour.com/220-an-interview-with-shaun-meehan-
do...](https://theamphour.com/220-an-interview-with-shaun-meehan-doctiloquent-
dove-deployer/)

[https://theamphour.com/401-an-interview-with-brent-and-
bryce...](https://theamphour.com/401-an-interview-with-brent-and-bryce-salmi/)

[https://www.youtube.com/watch?v=FzRP1qdwPKw](https://www.youtube.com/watch?v=FzRP1qdwPKw)

I think what you are talking about is mostly just normal engineering in the
sense that the process is similar. What really makes space unique isn't space
as such but that there is no real-world (real-space?) testing, no inspections
after the fact or do-overs.

~~~
joshvm
>I think what you are talking about is mostly just normal engineering in the
sense that the process is similar. What really makes space unique isn't space
as such but that there is no real-world (real-space?) testing, no inspections
after the fact or do-overs.

This is sort of true?

Spacecraft of all types are subject to a battery of physical tests before
launch. This includes vacuum testing, thermal cycling and vibration (where
many parts fail). There are normally duplicate components produced for
different purposes. Some are just for testing the fit, others are to check
that thermal expansion isn't a problem and so on. The actual flight hardware
itself is usually tested as well, since it's designed to be repeatedly
stressed within certain physical limits.

NASA has duplicate rovers in the lab that commands are tested on. Before a
mission plan is uploaded, it's tested on the ground system to make sure that,
for example, an inspection arm doesn't collide with the body of the rover.
Modern rovers like curiosity are reasonably good at self-inspection, since it
can take a 360 selfie. The rover is covered with calibration points, for
example to measure how much dust is covering things and how far the wheels
have worn down.

A lot of "testing" is gained through experience. Satellite manufacturers know
what designs work based on prior designs. NASA learns a lot every time they
put a new rover on Mars. Rover missions (like Curiosity, Spirit/Opportunity,
etc) tend to outperform their original specs because the engineering is so
conservative.

In very rare cases astronauts have done in-space inspections - for example the
repairs to Hubble. The ISS is also used as a space-based testing laboratory
for hundreds of different projects.

(I've worked in a space science laboratory where satellites were routinely
tested, and indirectly on rover data).

~~~
ncol
Sure. I would put that sort of more in the high level engineering than "real-
world testing" though. I mean if you are Waymo you can drive around for a year
and see what happens. If you are Audi you can still repair some fault after
delivery and redesign the next model year. It is when you can't do that you
need high levels of quality assurance, integration, fault tolerance etc. If
anyone could teleport small objects to Mars it would soon be littered with
smart phones in aluminium foil regardless of how harsh the environment is ;)

------
gabcoh
This seems really awesome, but my God is it expensive. Maybe I am not reading
correctly but it seems like just the nuts and bolts from McMaster cost $230
and that's still excluding the electronics and additional hardware! I guess
I'll have to save up a bit before I can play with my own minituare rover.

edit: the motors also are going to cost around $500

~~~
lorenzhs
Regarding the motors, they wouldn't be suitable for this particular project
but you can buy broken hoverboards _really_ cheaply. Where I live you can get
stripped ones (no battery, no logic board, but you can get hoverboard logic
boards on AliExpress for under 20€) for 10€ and returned ones (99% of the time
it's a dead battery) for 35€. The motors are fantastic and powerful (~350W
each), and you can build lots of stuff with them. There's a great talk on how
to use these things to build all kinds of moving objects (armchairs,
bobbycars, motorised cargo carriers:
[https://twitter.com/JanHenrikH/status/1023218344282021888](https://twitter.com/JanHenrikH/status/1023218344282021888),
...) at
[https://www.youtube.com/watch?v=qnQSL9DBPaE](https://www.youtube.com/watch?v=qnQSL9DBPaE).
You can motorise anything this way for around 100€. The only thing that's hard
to come by cheaply is the battery.

~~~
fest
> The only thing that's hard to come by cheaply is the battery.

Dead laptop and power tool battery packs usually have at least some useable
18650 cells in them. A friend has built more than one battery pack for
electric scooter out of harvested cells.

You do have to know what you're doing when working with unprotected cells
though.

~~~
lorenzhs
Yes it's easy enough to get unprotected cells, but the hoverboard batteries
usually have short circuit and undervoltage protection, both of which are very
nice to have as a beginner. If you know what you are doing you can also get RC
hobby batteries for not too much money.

------
iwakura
This is great. But it's a little discouraging to see the project only use the
US Customary units considering this is a science project. I was under the
impression that NASA used SI.

~~~
squarefoot
I think it's aimed at students, schools etc. Its purpose should be to attract
people to science so it has to be less intimidating, hence the choices of the
Raspberry PI or the phone app or the Xbox gamepad to control it.

~~~
_verandaguy
It's a weird world where kids are more scared of the metric system than they
are of a credit card-sized Linux computer with its guts showing.

~~~
squarefoot
It probably is just a matter of being used to it. In the EU we are used to the
metric system, but are ok with screen or hard disk sizes expressed in inches
to the point if some brand advertising offered a 1.5 meter wide screen TV most
of us would look for a calculator to make the conversion, including myself. If
we changed to the metric system also for TV sizes, most people would find it
uncomfortable at first, but probably would adapt in months.

------
ReedJessen
The fact that this level of work is given away for free with the intent of
making the world a better place makes my heart dance.

I am so optimistic for the future of humanity.

------
craftyguy
It's interesting that the rover code itself is written in python. That makes
it more approachable..

~~~
rurban
You can be 100% sure that no python code is on Mars. Not even Common Lisp
which is much more secure and performant is on Mars.

The real rover code is all hardcore C. Erann Gat gave a presentation on the
Lisp Conference about the JPL rover code and simulation.

~~~
macintux
I'm a bit disappointed they're not using Forth.

------
4lch3m1st
This is beautiful, and a wonderful project to develop along with some friends.
JPL nailed it.

------
xupybd
Man I hope someone like Massdrop can find a way to source these parts a little
cheaper. It seems to me that there has to be a way to build this thing for at
least half that price.

------
rsync
How difficult would it be to add a self-leveling platform to a vehicle like
this ?

I have seen open source self-leveling _two_ wheeled platforms (segway without
the yoke) but I have not seen a self leveling platform on a 4-6 wheeled
vehicle like this one ...

------
pjmlp
A mix of Python and Java regarding the software stack.

------
rurban
Python? God riddance! The real rover code was in C, and the simulator in lisp.

------
xvilka
Looks more like a toy rover project, rather than "an open source rover
project". Hoped they will make open source substantial (even if simplified)
part of the rover project, so space startups can reuse and improve it.

~~~
craftyguy
Why couldn't this be re-used to some degree for a rover in non-Earth with
tougher, more resilient hardware?

~~~
marsRoverDev
The hardware we use for non-earth stuff is effectively arduino-level (ok,
maybe not exactly - but on the order of 70-100Mhz) because of the constraints
put upon it by the radiation hardened hardware. Writing python is a trade-off
between computer resources and developer time; we've got a lot of developer
time and not a lot of hardware resource, so we write in compiled languages.

There are also some safety implications centered around determinism etc which
mean interpreted languages are a bit more gray area; with a well understood
compiler and language you understand what the code is doing better, and you
know it will run the same every time. That may be the case with python if you
understand the whole shebang, but not that many people do... And if you have
that level of knowledge of python, you may as well be writing C or C++.

~~~
tomp
Do you find C/C++ acceptable from a safety/reliability perspective, or do you
write in safer languages (Fortran, Ada)?

AFAIK critical software coding standards forbid dynamic memory allocation, so
things like stack overflows, null dereference or out-of-memory errors can't
happen, but array-out-of-bounds exceptions can still get you. On the other
hand, static verification tools catch most of that.

~~~
marsRoverDev
C/C++ is fine as long as you adhere to coding standards like MISRA and you
_thoroughly test it_. Our code for example, is unit tested, then we have java
tests running on a server-based simulator, then other independently written
java tests running on test benches that more closely represent the spacecraft
itself, then a replica of the spacecraft.

The industry used to use Fortran / Ada quite extensively, and depending on
company/organisation and team, might still do so. Things like the F-35 are
written in C++, which is where I can see these things heading.

