• Stars
    star
    8,561
  • Rank 4,284 (Top 0.09 %)
  • Language
    Prolog
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A build-it-yourself, 6-wheel rover based on the rovers on Mars!

JPL Open Source Rover Project

The JPL Open Source Rover is an open source, build it yourself, scaled down version of the 6 wheel rover design that JPL uses to explore the surface of Mars. The Open Source Rover is designed almost entirely out of consumer off the shelf (COTS) parts. This project is intended to be a teaching and learning experience for those who want to get involved in mechanical engineering, software, electronics, or robotics.

A gallery of some community builds can be found here. Drive a simulated rover around straight from your browser: opensourcerover.jpl.nasa.gov

About the Project

Motivation

JPL is always looking to inspire the next generation of scientists, engineers, and roboticists to help us explore and learn about our solar system (and beyond!). We release the plans for this rover as a way to try and give budding enthusiasts a fun robotics project that will help teach them and get them involved in robotics sooner and at a lower cost.


Specifications & Technical Attributes

The specific attributes of the robot you build will depend slightly on the type of electronics and motors you buy for the system. The numbers shown below are for the version of the robot that contains exactly the parts that we suggest in our build documents and parts list. Below, you can see which parts could be changed for which spec upgrades.

Attribute Value [imperial] Value [SI]
Weight 28 [lbs] 12.7 [kg]
Footprint 24x14 [in] 60.96x30.48 [cm]
Battery Capacity 5200 [mAh] 5200 [mAh]
Battery Discharge Rate 8 [A] 8 [A]
Nominal Current Draw 1.2 [A] 1.2 [A]
Operating time 5 [hrs] (continual use) 5 [hrs] (continual use)
Approximate Max speed 68.8 [in/s] 1.75 [m/s]
Maximum 90 deg vertical scale 12 [in] 30.48 [cm]
Maximum height differential between sides 14 [in] 35.56 [cm]
Communication (in this guide) Xbox Controller
Cost (*) ~ $2,500

Again, the above statistics depend on which components you select when buying parts. One potential change is for the motors; you can, for example, select higher RPM motors (to drive your rover faster) at the sacrifice of max stall torque, which would potentially limit your rover's ability to climb. A selection of motors that would integrate easily with the rest of the suggested rover design can be found at GoBilda.

(*) Other open-source, cheaper alternatives exist but are slower, less strong, and are more fragile. See Additional Projects.


Communication

The best way to ask questions, reach maintainers, learn about modifications, and join the community of Open Source Rover builders is to join our Slack group:

Note: JPL and Caltech have no official affiliation with this forum; it is run by individuals of the general public. On these you can ask questions if you need help or clarification on any aspects of the project. Additionally, you can post and promote any modifications or addons that you have created on this project. We highly encourage additions and modifications to be posted so that this project and community can grow.


Features

This rover is designed to function similarly to the 6 wheel rover designs on Mars and employs a few of the major driving mechanics that the mars rovers use to traverse rocky surfaces:

  • Rocker-Bogie: The Rocker-Bogie suspension system allows all 6 wheels to continually be in contact with the ground while climbing over obstacles
  • Differential Pivot: Allows weight to be mechanically offloaded from one side of the rover to the other while climbing
  • 6-Wheel Ackerman Steering: Driving and steering/turning mechanism that governs where the wheels point and how fast each of them will move.

We chose a Raspberry Pi to be the "brain" of this rover for its versatility, accessibility, simplicity, and ability to add and upgrade your own modifications. Any method with which you can communicate with a Raspberry Pi (bluetooth, WiFi, USB devices, etc) can be interfaced into the control system of the robot.

Rover communication

In addition, here are the open communication ports and hardware on the Raspberry Pi:

  • 4 USB ports (3 if using Xbox controller)
  • RPi Camera port
  • 1 I2C Bus (0 if using LED Matrix screen)
  • 2 SPI Bus (1 if using LED Matrix screen)
  • 3.5mm Audio Jack
  • 13 GPIO pins (6 if using LED Matrix screen)

Using the above ports, you could theoretically drive the rover autonomously from the camera, via a USB dongle attached to anything (your own video game controller, a USB microphone, or many others... be creative!), or through any interface using the Pi's GPIO ports (distance sensors, accelerometers, and much more). We've only given you two simple ways to control the rover to start... we want you to come up with even more!

For the power system of the rover, there is also ample spare power which can be used for your own addons and upgrades. See the Electrical subsystem documentation for more specific details.


Maintenance Status

As an open-source hardware project, the rover is continuously improving. Please check ongoing projects, issues, pull requests, and the forum (see below) to see if any big changes are expected soon.

NOTE: A major mechanical and electrical revision of the OSR is due for July 2023. While the current version of the rover will remain supported, consider waiting for this new version. For details on this new version and its status, please join the Slack group and look for the #osr-upgrade channel. You can also see the latest documentation on the v2 branch.

Online 3D Model

There is also an Onshape model of the Open Source Rover. The model includes the state of the rover at each individual step throughout our build instructions! Therefore, you should be able to reference the online 3D model in addition to the photos in the build instructions as you are building to ensure your build is going well. NOTE: The most updated model and single source of truth are the SolidWorks assemblies and the OnShape model may be out of date.


Rover Mission Patch

Thank you to Lauren Schooley for creating a mission patch for the project. The patch is free for use as a team patch, for stickers, or decorating your rover. The design is released under the Creative Commons Attribution-NoDerivatives public license. A variety of file formats is available.


Skills Necessary

This project has elements in mechanical assembly/fabrication, uses a host of electrical components, and has software that will run it all. In order to complete this project, you will need to have some experience in the following:

  • Fabrication/Machining: Although most the parts are COTS there are a few modifications necessary to adapt them to the project. These modifications will be in the form of
    • Metal cutting using band saw/dremel
    • Drilling using drill press/hand drill
    • Filing and sanding for part cleanup
    • General Fabrication/Machining Safety
  • Electronics: This project uses components like motors, motor controllers, and batteries. It will be important to have experience with the following electrical processes.
    • Soldering
    • Electrical debugging
    • Wiring
    • Electrical Safety
  • Software: The rover's brain is a Raspberry Pi. All code can be found in the osr-rover-code repository along with step-by-step instructions to set it up. Basic familiarity with Linux, ROS, and Python will be helpful though.

Most of the above are skills that you can learn and pick up fairly quickly from watching videos and doing research on the internet, and throughout the project we try to give supplemental information on some of these as well. See the build documents for more information.


Tools Necessary

This project assumes you have some standard tools to help assemble the project. If you do not have any of the optional tools, we provide examples of online services that you can use to have the parts fabricated and sent to you.

Mandatory tools

  • SAE Hex Key set
  • SAE Wrench set
  • Pliers
  • Wire Snips
  • Wire Strippers
  • Solder Iron
  • Solder
  • Digital Multimeter
  • Hand Drill or Drill Press
  • Dremel, Band saw, or hand saw
  • Items for operating a Raspberry Pi (Keyboard, mouse, monitor, 5V micro USB power adapter)
  • Wire strippers, e.g. these

Optional Tools

  • 3D printer
  • Laser Cutter
  • Power Supply (to test without using battery)

Expected time commitment

In our experience, this project takes no less than 200 person-hours to build, and depending on the familiarity and skill level of those involved could be significantly more. Experienced builders may be able to build this project in this amount of time. However, this project is generally meant to be a teaching and learning tool. Throughout the documentation, we try to give supplemental information for those who might be new to this kind of project.

Disclaimer

Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise, does not constitute or imply its endorsement by the United States Government or the Jet Propulsion Laboratory, California Institute of Technology. Government sponsorship acknowledged.

By downloading, cloning, or otherwise using the contents of this repository, you agree to the terms specified in the attached DISCLAIMER.txt file.

Getting Started


Ordering parts

Parts Lists

The Master Parts List contains all the parts necessary to build the entirety of the robot as it is listed in our documentation. We recognize that you may want to change, add, and redesign some sections, so each of the individual build sections also contain a parts list for that corresponding section of the project. Note that these individual parts list recommend buying quantities necessary only for that section. Be sure to assess the quantities you need for common items (particularly screws, nuts, bolts, and other common hardware) if you are changing subassemblies.

Cart Share

In order to help this ordering process we have compiled a few links of a large number of these together already, if you wish to build exactly what is in our build documentation. Note that some of these parts might not be available or outdated. Please check the master parts list for the most up-to-date list of items.

McMaster Amazon Pololu Adafruit

Electronics

The easiest way to buy the electronics parts is to use the links (to e.g. Digikey) on the Kitspace pages:

Another way to order from Digikey is to upload the Digikey Bill of Materials at Digikey.com.

3D printing and Laser cutting

In addition to ordering all of the parts on the parts list, we recommend that some pieces be 3D printed and laser cut. If you do not have access to a 3D printer or laser cutter, we've added some online services as examples for where you can get those manufactured and shipped to you. You'll find instructions on this in the Body Build Doc, Corner Steering Build Doc, and Head Assembly Build Doc.

Printed Circuit Boards (PCBs)

The main electrical system of this rover relies on a custom printed circuit board (PCB) that handles the routing between the majority of the electrical components. This board greatly simplifies the build process and eliminates the need for you to route all the wires yourself. You can find the PCB board files at PCB Files.

The easiest way to order the PCBs is through the links (to e.g JLCPCB) on the Kitspace pages:

You can also download the "Gerber" files there (a typical file format for PCBs) and upload them to any other PCB service that doesn't have a direct link on Kitspace.


Rover Build Roadmap

Rover build roadmap

Above is an example roadmap of how you can build the rover and which parts of the build are dependent on the other sections. It is broken down into 5 stages:

  • Stage 1: Start getting all the parts!

  • Stage 2: Once you have all the parts, everything in stage 2 can be completed in parallel. It is highly recommended to start on the electrical testing of components outside the robot before doing any electrical work inside the completed robot body. You can also work on the software at any stage between here and the end.

  • Stage 3: During stage 3, the mechanical subassemblies should all be assembled and start to be integrated together. There should be some amount of testing done on the electrical system, as well as some progress on the software.

  • Stage 4: The rover is mechanically built and all subassemblies integrated together. During stage 4, you begin the integration of the electrical components and the various power and data wires that run throughout the rover.

  • Stage 5: Once the electronics are all powered and communicating, you need to test and calibrate all the motors in the system.

  • Stage 6: After everything has been tested and calibrated and the software is up and running, the robot will be fully functioning and built!

  • Stage 7: Add your own upgrades! We chose Raspberry Pi as the brain of the project so that it should be easy to add, change, and upgrade to build exciting things on top of this already cool robot. Some upgrade ideas to get you brainstorming: sonar for collision detection, IMU for orientation / closed-loop driving / obstacle mapping, camera for object identification and tracking, sensor packages (temperature, pressure, humidity), solar panels, or even a robotic arm!


Getting help / joining the community

If you have any questions or run into problems during your build, please search for answers and/or reach out on Github Discussions. Please also take a look at the list of open issues. If you think there is an error or a part is missing, please create a new issue.


Project Team

These were the original creators of this project. Now, this open-source repository is run by volunteer maintainers from the community.

Project Lead

Michael (Mik) Cox

Development Team

Eric Junkins and Olivia Lofaro

Special Thanks To

Magdy Bareh, Michelle Viotti, Tom Soderstrom, Dave Gallagher, Jim Rinaldi, Molly Bittner, Christine Fuller, Billy Allen, and Charles Dandino

Additional Projects

We recognize that there might be a some individuals, hobbyists, and groups that might be hesitant or unable to build the Open Source Rover due to skills/tools necessary, or budgetary constraints. Here are some other open-source alternatives.

More Repositories

1

osr-rover-code

Code that runs on the Open Source Rover
Python
425
star
2

Pulse

A pendant to warn you when you touch your face
261
star
3

autoRIFT

A Python module of a fast and intelligent algorithm for finding the pixel displacement between two images
Python
214
star
4

embedded-gcov

GCC/gcov code coverage data extraction from the actual embedded system, without requiring a file system, or an operating system, or standard C libraries.
C
173
star
5

COVID-19-respirators

JPL designed 3D and tested printed respirators to help with the COVID-19 pandemic response.
G-code
129
star
6

osr-android-app

Android application used to control the Open Source Rover
Java
73
star
7

m2020-urdf-models

Perseverance and Ingenuity URDF models used for operations visualization
71
star
8

captoolkit

NASA’s Cryosphere Altimetry Processing Toolkit
Jupyter Notebook
56
star
9

explorer-1

JPL's Design System
Vue
51
star
10

rosa

ROSA is an AI Agent designed to interact with ROS-based robotics systems using natural language queries. ROSA helps robot developers inspect, diagnose, understand, and operate robots.
Python
42
star
11

fastcat

C++ EtherCAT Device Command & Control Library
C++
41
star
12

its_live

Tool repository for accessing and working with ITS_LIVE data.
Python
40
star
13

LiveViewOpenCL

Open Source real-time visualization tools for Imaging Spectrometer development
C++
36
star
14

launchbox

A runtime environment for web applications.
Python
27
star
15

spoc_lite

A light-weight, experimental terrain classifier for Mars rovers
C++
27
star
16

ION-DTN

NASA Open Source ION Software implementation of Delay Tolerant Networking. ION development is managed by the Jet Propulsion Lab; regression testing and code management are provided by Ohio University.
C
23
star
17

regvue

Modern Hardware/Software Interface (HSI) Documentation
Vue
21
star
18

Waveport

Waveport Scattering Library
TeX
21
star
19

ASSESS

Automatic Semantic Search Engine for Suitable Standards
Python
21
star
20

FlightView

Real-time tools for Imaging Spectroscopy Data
C++
20
star
21

jsd

Just SOEM Drivers
C
18
star
22

its_live_production

A NASA MEaSUREs project to provide automated, low latency, global glacier flow and elevation change datasets
Python
17
star
23

Cassini_RADAR_Software

Public release of Cassini SAR processor, preprocessor, and topography from SAR processor.
C
17
star
24

SPOC

A website showcasing SPOC (Soil Property and Object Classification), a deep learning-based terrain classifier for Mars rovers
HTML
14
star
25

pmapper

Super resolution, deconvolution, demosaicing, oh my!
Python
13
star
26

tiledwms

C++
12
star
27

django-launchbox

A plugin for your Django app to assist in integrating with Launchbox.
Python
12
star
28

sstmp

Solar System Treks Mosaic Pipeline
Python
12
star
29

stellar

A CSS implementation of the Stellar design system for spacecraft operation tools.
SCSS
11
star
30

itslive-py

Python client for ITSLIVE glacier ice velocities.
Python
11
star
31

cortex

Modern data infrastructure for robotics projects.
Python
10
star
32

itslive-explorer

Jupyter Notebook
10
star
33

react-stellar

A React implementation of the Stellar design system for spacecraft operations tools
TypeScript
10
star
34

COVID-19-papr

JPL Designed Powered Air-Purifying Respirator (PAPR)
10
star
35

golaborate

Go servers/services for remote and autonomous testbeds and labs
Go
9
star
36

fcat

FCAT ROS2 Node
C++
9
star
37

ngdcs

NGDCS Imaging Spectroscopy Airborne Flight Computer Code
C
6
star
38

ScanBarcodes

ScanBarcodes is a SwiftUI view that scans barcodes using an iPhone or iPad camera.
Swift
6
star
39

ion-core

A streamlined packaging of core DTN features from the ION-DTN open source software
Makefile
6
star
40

lowfssim

Roman-CGI optical model of LOWFS
Python
5
star
41

coralign

Coronagraph alignment and calibration software
Jupyter Notebook
5
star
42

guiss

Python
4
star
43

design-challenge-multiphysics

Optical instrument design challenge
4
star
44

ion-network-model

The DTN Network Model Visualization Tool offers an essential graphical tool to create and edit a network of hosts, IP address assignment, and connections and captures them in a JSON model file. It can be ported into the ION Configuration Tool (https://github.com/nasa-jpl/ion-config-tool) to generate configuration files the ION software uses.
JavaScript
4
star
45

gpsGUI

EFIS-style GPS and IMU Visualization, Logging, and Log-Playback software for the ATLANS A7
C++
3
star
46

pyion

3
star
47

svelte-stellar

A Svelte implementation of the Stellar design system for spacecraft operations tools.
Svelte
3
star
48

ocean-model-interfaces

C++ interfaces that provide access to ocean model data sets.
C++
3
star
49

ion-config-tool

The ION Configuration Tool provides both command line and browser interfaces for creating and editing configuration files for the Interplanetary Overlay Network (ION) software, an implementation of Delay/Disruption Tolerant Networking technology.
JavaScript
3
star
50

golaborate-clients

clients for Golaborate in python and Matlab
Python
2
star
51

ScanBarcodesDemo

Wrapper demo app for the ScanBarcodes Swift package for iOS
Swift
2
star
52

MoonDiff

HTML
2
star
53

LLM_Exploration_Workflows

A Space for exploring and developing workflows related to LLMs using Open Source technologies
2
star
54

nasa-jpl.github.io

2
star
55

golaborate-docs

Documentation about Golaborate
2
star
56

SAAS

Simulation for the Analysis of Autonomy at the System Level
Python
2
star
57

itslive-ieee

ITS_LIVE @ IEEE Computing in Science & Engineering Manuscript
Jupyter Notebook
1
star
58

its_live_projects

Jupyter Notebook
1
star
59

fcat_msgs

ROS2 Message Definitions for FCAT node
CMake
1
star
60

launchbox-demo-service

Demo of a simple Launchbox service
HTML
1
star
61

USGS-DARPA-challange-resources

1
star
62

launchbox-plugin

A python helper class for integrating Launchbox plugins
Python
1
star
63

lunasynth

1
star
64

example-site

An example of a GitHub.io Project site in the nasa-jpl Organization
1
star
65

protospace-cad-renderer

Web based ProtoSpace model renderer
JavaScript
1
star
66

GMI

MACOS Generic Matlab Interface
Fortran
1
star
67

uavsar-wildfire

Jupyter Notebook
1
star
68

macos

Modeling and Analysis for Controlled Optical Systems
Fortran
1
star
69

TetherCAD

A python library providing tools for the design and high-level analysis of electromechanical tethers, for robotics, space, or other applications!
Python
1
star