Humanoid Soccer Robot
A modular software framework for autonomous humanoid soccer robots, and the code base behind Team Parand's RoboCup wins.

- 1stRoboCup 2015, China (Teen-Size)
- 3rdRoboCup 2014, Brazil (Teen-Size)
- ~30%faster walking
- ~50%fewer falls
From 2012 to 2016, Team Parand developed this framework as the base code for its humanoid robots in RoboCup competitions. I led the software team, coordinating planning, implementation, testing and integration for international events. The team placed first in the Teen-Size league at RoboCup 2015 in China and third at RoboCup 2014 in Brazil.
The framework is organized as independent modules connected by a low-level communication layer, so sensors, actuators and control logic can interact in real time.
Vision and head control
The vision module tells the robot where it is on the field and where the ball and goals are. Field objects are sampled into a color table in HSV space, which holds up better than RGB under changing light, and then Hough line and circle detection find the goal and ball. Built on EmguCV, it processes about 29 frames per second, and PID controllers steer the head to search for and track the ball.
Locomotion and balance
Motion editor
Static motions such as standing, kicking, getting up and blocking are designed as keyframes. The team's motion editor, modeled on Robotis RoboPlus, manages pages and steps, torque on/off and mirroring, and uses Bézier curves to make motions smoother and more human-like.
Walk engine and stabilization
Omnidirectional walking comes from a four-phase center-of-mass shifting gait generator, alongside a port of the Darwin-OP walk engine to C#. A trajectory-based gait engine raised walking speed by about 30%. IMU feedback with PID control, plus arm, hip and ankle strategies, stabilizes the center of mass and cut falls by about half.
Configuration and monitoring
All robot settings live in XML files. This module lets operators view and edit them safely, reducing configuration mistakes, and charts the robot's balance and movement to help with debugging.
Networking and behavior
Teammates share their distance to the ball over Wi-Fi, so only the closer robot goes for it while the other holds back and covers, taking over if the first robot falls or loses the ball. Referee commands arrive over UDP from the referee console.
A finite-state machine drives autonomous play, choosing the right behavior for the current game situation, with a match-settings interface on top for quick adjustments during a game.