A fully autonomous humanoid robot
This is a roughly two-foot-tall bipedal humanoid robot (built on an AiNex platform) that finds a ball, walks to it, grabs it, and throws it entirely on its own, no cloud, no remote control. Every bit of perception and control runs on-device on a Raspberry Pi. What began as a late-night “can it grab a ball?” experiment has grown into an ongoing research build with its own three-layer vision system, a self-trained neural detector, a learned visual memory, and even a YouTube show.
▶ Watch the build series: ROBOTICS ADVENTURES on YouTube
What it can do
- A fully autonomous find → walk → grab → throw loop, start to finish, with no human input
- A two-handed grab with a “grab gate” that refuses bad shots
- Gyro-closed-loop walking that keeps it balanced, and gets it back up after a fall
- Speech-timed hand gestures, it talks with its hands
- Learns new objects and skills by being shown them (learning by demonstration)
- Dances to the beat of a track, one move per beat
Perception & on-device machine learning
- Three-layer vision: a fast classic-CV tracker, a learned visual memory, and a neural object detector working together
- Visual memory built on neural embeddings with pgvector similarity search
- A YOLOv8 detector trained from the robot’s own auto-labeled camera footage (self-supervised), a replacement “eye” that had to earn its job
- Governed online learning with memory sanity-checks, so it learns from experience without corrupting itself
- All inference runs on-device, no cloud connection required
Hardware
- AiNex bipedal humanoid platform, two legs, articulated arms, and a head
- Raspberry Pi on-board controller (all compute happens here)
- Serial-bus servos driving the limbs
- Onboard camera, plus a custom-designed bracket for an upgraded “eye”
- IMU / gyro for balance and fall recovery
Software & motion stack
- Motion stack migrated from ROS 1 to ROS 2, with a dependency-free motion daemon and a ROS-agnostic mission layer
- A Gazebo digital twin for testing behaviors in simulation before running them on the real robot
- Python control, inverse kinematics, and computer vision throughout
The build log
The whole project is documented post by post, in order:
- Teaching a Humanoid to Grab a Ball: A Late-Night Robotics Log
- My Robot Picked Up the Ball, Threw It, and Did a Victory Dance, All By Himself
- He Fell. He Got Up. He Threw It Anyway.
- My Robot Learned to Say No (and Talk With His Hands)
- How My Robot Learned to See (and Trained His Own Replacement Eye)
- Porting My Robot from ROS 1 to ROS 2 (and His First Throw on the New Stack)
- A New Eye, and a Bracket I Made for It
- My Robot Learns Things by Being Shown Them
- I Taught My Robot to Dance to the Beat
- My Robot Has a YouTube Show Now: ROBOTICS ADVENTURES