Skip to content
Back to Projects

Shared Human-Robot Control of Soccer Robots

July 1, 2025Completedacademic
control-systems python robotics human-robot-interaction

Overview

This BSc thesis project, conducted at Tech United (TU Eindhoven), focused on designing and implementing a shared human-robot control (SHRC) framework for the TURTLEs — Tech United's autonomous soccer robots competing in the RoboCup Middle Size League. The goal was to enable a single human operator to effectively control up to 5 robots simultaneously, serving as a research testbed for learning by demonstration.

Problem Statement

Fully autonomous multi-robot systems can struggle in unpredictable, adversarial environments like robot soccer. Pure teleoperation, on the other hand, does not scale — one operator cannot individually control 5 robots in real time. Shared control offers a middle ground: the human provides high-level intent while the robot autonomously handles low-level execution.

The key design challenge was determining how to blend human commands with autonomous behaviors such that the operator's cognitive workload remains manageable without sacrificing team performance.

System Architecture

The shared control logic was implemented in Python and integrated with the existing Tech United software stack via pyRTDB (Real-Time Database), enabling real-time inter-module communication. The framework was architecturally decoupled from the autonomous system through dedicated RTDB channels, allowing seamless switching between autonomous and shared-control modes.

# Simplified shared control blending logic
import numpy as np
 
def blend_velocity(
    human_cmd: np.ndarray,
    auto_cmd: np.ndarray,
    alpha: float
) -> np.ndarray:
    """Blend human and autonomous velocity commands.
 
    alpha = 1.0: full human control
    alpha = 0.0: full autonomous control
    """
    return alpha * human_cmd + (1.0 - alpha) * auto_cmd

Key Features

Field Boundary Impedance

A kinematic-based velocity limiting system prevents robots from leaving the field. As a robot approaches the boundary, its maximum allowed velocity is progressively reduced:

vmax(d)=vnommin(1,  ddthresh)v_{\max}(d) = v_{\text{nom}} \cdot \min\left(1,\; \frac{d}{d_{\text{thresh}}}\right)

where dd is the distance to the nearest boundary and dthreshd_{\text{thresh}} is the activation threshold.

Automatic Ball Intercept

When the operator commands a robot toward the ball, the system automatically computes an optimal intercept trajectory, accounting for ball velocity and robot dynamics.

Assisted Passing and Shooting

Corrective aim assistance uses PD controllers with adaptive gain scheduling and derivative filtering to smoothly adjust the robot's heading toward the target:

u(t)=Kp(t)e(t)+Kd(t)defdtu(t) = K_p(t) \cdot e(t) + K_d(t) \cdot \frac{de_f}{dt}

where Kp(t)K_p(t) and Kd(t)K_d(t) are adaptively scheduled gains and efe_f is the filtered error signal.

Validation

The framework was validated in both simulation and on physical robots. Results demonstrated:

  • Reduced operator cognitive workload compared to pure teleoperation
  • Smooth multi-agent human-robot collaboration during gameplay
  • Seamless integration with the existing autonomous pipeline

Technologies Used

Python, pyRTDB, ROS-like real-time architecture, PD control with gain scheduling, kinematic velocity limiting