Objective of our project

To test our skills we decided to make the MARS robot play catch. The custom development we did can be found in more detail throughout the website. To see full details of the code, feel free to visit our GitHub repository as well.

Mars playing ball

Vision & Perception

To interact with the world, MARS needed to see it. We developed a custom computer vision pipeline using OpenCV to compensate for the lack of native detection tools. Our system uses morphological filtering and contour detection to isolate objects from the background, while a custom Foxglove visualization allows us to debug the robot's perception logic in real-time.

Computer Vision Processing

Planning

Intelligent motion requires more than just knowing where to go—it requires a strategy for getting there. We implemented a Bézier curve trajectory generator to ensure smooth, continuous robot navigation, avoiding the jerky motion of simple point-to-point drivers. For the arm, a multi-stage planning algorithm operates in 3D task space, coordinating complex pickup sequences while preventing collisions.

Actuation

Execution is just as critical as planning. Our system utilizes a closed-loop feedback controller running at 20Hz to precisely track generated trajectories, correcting errors in real-time. The manipulation subsystem orchestrates 5-DOF inverse kinematics and PWM-controlled gripping, ensuring reliable physical interaction with the target object.

Work in progress

It has been a long process with long nights, a lot of figuring out but also some successes along the way.

Results Video Demo

Here is a video demonstrating the final outcome of our project. Watch as the MARS robot successfully detects, plans, and actuates to play catch with the ball!

Main Learnings

Working on an industry project has the side effect of having to adapt from the class learned code, to a new robot. This comes with new working libraries, non-existing libraries and completely new environments.

We learned how to make a queue

Instead of using a centralized job queue, we implemented a distributed state machine where each node publishes a completion flag (boolean) to strictly trigger the next step in the processing chain.

We learned about morphological operations to filter images using a kernel

Morphological operations use a kernel (a small matrix) to apply non-linear filtering techniques like erosion and dilation to binary or grayscale images, primarily to clean up noise and shape objects.

Dynamic Trajectory Planning

Initial long-range detections are often noisy. We implemented a continuous update loop where the planner refines the robot's path in real-time as the perception module generates higher-confidence target coordinates during the approach.

Specific Innate behavior

Hardware imperfections and friction cause non-deterministic behavior. We learned that open-loop commands fail to produce straight lines, necessitating active feedback control to continuously correct the robot's heading.

Meet the Team

The engineers behind this Intro to Robotics project.

Siddharth Singh

Siddharth Singh

MEng Mechanical Engineering
Siddharth is a ME MEng student interested in Robotics design and control. He is well-versed in the product development cycle, and has developed an autonomous RC vehicle in the past. He loves working on cutting-edge electromechanical systems that help solve problems.
Main Contribution Perception and visualization
Rishi Krishnan Anand

Rishi Krishnan Anand

MEng Mechanical Engineering
Rishi is a Master’s student in Mechanical Engineering with a background in automotive design. He has also developed a fully working thermochemical reactor and is interested in addressing thermal design challenges in robotics.
Main Contribution Planning and driving
Xander David Steele

Xander Steele

MEng EECS
Xander is an EECS MEng student interested in Hardware design. He has extensive experience designing circuits and PCB designs for a broad range of uses. He is passionate about entering the medical device design industry as a hardware designer.
Main Contribution Gripping
Zev B. Schuman

Zev B. Schuman

MEng Mechanical Engineering
Zev is a ME MEng student interested in Robotics design and control. He has experience developing products in a few industries, including space, robotics, and general hardware. He is passionate about the design cycle and creating systems with the potential to make a real impact.
Main Contribution Support with content for website
Lennart Peus

Lennart Peus

MEng Mechanical Engineering
Lennart did his EECS undergrad at KU Leuven (Belgium), but then started his MEng degree in Mechanical Engineering at UC Berkeley to get more knowledge about robot and control design from a hardware perspective.
Main Contribution Communication, website and media