The Lunar Rover!!!
A future lunar base will have a ton of jobs for robotics to complete – I decided to narrow the scope of my project down to transporting supplies.
To resupply a lunar base, you’ll need to send a lander. The types of supplies will probably include food, water, oxygen, equipment, tools, new habitat modules, scientific instruments, the list goes on and on. It could be simpler to have an astronaut move the cargo, however, space suits have terrible mobility. An astronaut can’t even pick up a tool if they drop it, and some of the supplies will be too heavy to realistically move without some form of assistance.
In short, robotics are going to be a key technology for ensuring a crewed lunar base runs smoothly
My rover uses ROS2 (robot operating system 2) for it’s control, communications, and navigation. ROS is a super versatile robotics library and it’s used in a ton of industry applications. So far, I’ve used ROS2, RViz (robot visualization software) and Gazebo (A physics simulation built for ROS) to simulate my rover in lunar terrain.
The key things I learnt through this simulation were:
- ROS Fundamentals – topics, nodes, communications.
- Coding a URDF file for the rover & visualizing it with RViz
- Setting up a Gazebo simulation
- Coding the steering control using ROS libraries.
My rover is technically pretty simple. I’m using a Raspberry Pi 4B as the rover computer. The pi sends motor commands to an Arduino Nano, which converts those motor commands into a PWM (pulse width modulation) signal.
PWM is basically a way to control the voltage going into a device without actually changing the voltage of the power supply. You “pulse” the voltage on and off, and the average of the amount of time the voltage is on is how much “power” the system gets.

That PWM signal goes to a motor controller, which amplifies the signal to a usable voltage for the motors. So far I’ve wired up 1 motor, but the final version is going to have 4.

Roadblocks & Challenges
This project didn’t come without it’s roadblocks though. I struggled for a bit with figuring out exactly what parts I needed to get for a while, since it’s hard to know what you’ll need to get started with robotics. Currently, I’ve been struggling with getting serial-usb connection working with the Raspberry Pi and the Arduino, which has been a major blocker in me continuing this project.
Next Steps:
These are just the first steps for this project. I plan on 3D printing a chassis for the rover and testing it out in a sandbox once I get past the software roadblocks I’m facing currently.
Once I have the base rover built, I want to include a linear actuation system, possibly including a magnet, or a robotic arm to pick up and move supplies. The goal is to have a prototype that can successfully move a mockup of some lunar cargo from one location (a lander) to another (a habitat)