Back to projects
RoboticsAlgorithms
2025

Humanoid Tennis Manipulation

Autonomous tennis system with a 29-DOF humanoid using hybrid IK and whole-body control.

The Problem

I developed an autonomous tennis/table-tennis system for the 29-DOF Unitree G1 humanoid, designed to detect and strike virtual targets in real-time. The core of the system is a custom 100 Hz control node built on a Finite State Machine (IDLE, SWING, RETURN) that manages the robot's full kinematic chain, including the waist joints for an expanded reachable workspace. I implemented a robust Hybrid Inverse Kinematics pipeline, combining a Newton–Raphson solver for initial target acquisition with Damped Least-Squares (DLS) differential IK for smooth trajectory tracking. To ensure stability and avoid wrist singularities, I formulated the control problem using a reduced 5×7 Jacobian (for a 5D end-effector task with 3 position + 2 orientation components using the 7 right-arm joints) and utilized quintic time-scaling to generate singularity-free, human-like swing motions with zero velocity at the endpoints.

Approach

The core of the solution involves a custom pipeline built with Python, ROS 2, RViz, Unitree G1, NumPy. I prioritized modularity and performance, ensuring the system can run in real-time constraints.

Results

5DRedundancy-Aware IK
≤5 IK IterationsStable Newton–Raphson convergence
Humanoid Tennis Manipulation 1

Tech Stack

PythonROS 2RVizUnitree G1NumPy

Tags

#ROS 2#Inverse Kinematics#Damped Least Squares#Newton-Raphson