Astro is a custom-built quadruped robot designed and programmed by Matthew Cerniglia and Jack Ford as their senior project at The Haverford School. Built from the ground up, Astro can stand, trot, turn, and tilt freely in three dimensions on a variety of different surfaces.
This repository holds the full ROS 2 software stack behind Astro, covering gait planning, inverse and forward kinematics, leg control, tilting, dynamic stabilization, and low-level motor communication.
Astro was built during a three-week period during May with the goal of agile motion and exploration. The project touches nearly every layer of robotics: mechanical design, motor control, kinematics, and dynamic stabilization, all built and tuned by two high school seniors. We have now open-sourced the project with the hope that other students can learn how to build and program their own quadrupeds.
- Design and build a custom quadruped robot from scratch
- Simultaneously control 12 ODrive-driven motors over a single CAN bus
- Achieve a stable trot using real-time gait scheduling
- Implement full inverse and forward kinematics for leg control
- Enable tilting and orientation control in three dimensions
- Maintain dynamic stabilization using onboard IMU feedback
This project was presented to a panel of faculty, students, and parents on the last day of school. You can view our presentation slides here
Astro is powered by an onboard Jetson Orin Nano, mounted inside a 3D-printed frame. Nearly every structural component (legs, body, and feet) is 3D-printed, with two exceptions: four carbon fiber tubes run the length of the body for added structural support, and the feet are fitted with squash balls for grip and shock absorption.
We use 12 SteadyWin GIM8108-8 motors connected over a shared CAN bus for synchronized control. Power is supplied by two 24V LiPo batteries routed through a custom power-management PCB, and an onboard camera provides real-time video for monitoring and future vision-based work.
Astro/
├── quadruped_base/ # Core robot control, gait scheduling, IK, and leg logic
├── quadruped_control/ # Teleop and controller input utilities
├── ros_odrive/ # ODrive ROS 2 integration package
└── media/ # Images and visual assets for the project
- ROS 2
- ODrive ROS 2 CAN package
- Hardware drivers and package manifests defined in the workspace
Contributions are welcome. If you would like to report issues, suggest improvements, or help expand the robot platform, please open a GitHub issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
This work would not be possible without the unceasing help and support from Jacob Raeder, Jameson Maley, and Matt Ator. We also like to acknowledge that we drew inspiration from numerous previous quadrupeds, including but not limited to Boston Dynamic Spot, Unitree Go2, MIT Mini Cheetah, Stanford Pupper, and the Dingo.
