1 of 18

Humanoid Robot Dancing and Running

1 September 2026

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan

Inclusive, Self-Reliant, Sustainable 

Universitas Gadjah Mada Team

2 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

Running

Result

The Methode

The Controller

3 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Methode: Deep Reinforcement Learning

    • Classical control (DCM/DIP/CPG) handles nominal walking but can't adapt to disturbances or speed changes on its own
    • We used policy-based RL: Proximal Policy Optimizatioin

WHAT is Deep Reinforcement Learning?

    • A residual policy trained via reinforcement learning, layered on top of classical control (DCM/DIP/CPG)
    • Learns to correct gait parameters rather than manual fine-tuned

WHY Deep Reinforcement Learning

4 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Architecture

Training hyperparameters

lr = 3×10⁻⁴, 4 epochs, 4 minibatches, gradient clip 0.5, horizon 64, 256 parallel environments.

Observation: 18 dimensions

Action: 6-dimensional residual

5 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

PPO Algorithm

Advantage is estimated with GAE(λ):

Clipped objective function:

Total Loss:

6 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Reward Design

Velocity tracking (exponential)

Flight-phase bonus

Energy penalty

Posture stability penalty

Total Reward per Steps:

7 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

Curriculum Learning & Training

Curriculum Learning

Promotion gate:

    • fall rate ≤5%
    • finish rate ≥95%
    • tracking error <0.05 m/s

Training

PHASE 1: PRE-TRAINED WALK

PHASE 2: SPRINT CURICULLUM

    • 100 updates
    • completion 0.8% → context for Phase 2
    • 4.003 m/s avg
    • 256/256 finish
    • 0% fall rate
    • 5.16 s finish time

Finish Time: 120s

8 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Controller

Feedback-based PID Control

Central Pattern Generator - Gait Generator

DCM Capture Step

PPO Algorithm

9 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

Dancing

The Methode

The Controller

10 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Result: Tutting Dance

11 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Result: Tari Kecak Bali

12 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Result: Ateez San at City vs ATM

13 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Methode: PoseSeq

    • Keyframe and Adjust ZMP
    • Trial and Error with its controller

14 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

The Methode: PoseSeq

    • Number of frames are exported into .csv
    • Use it in controller options and use the controller module

15 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

DanceController: Motion Playback & Balance Control

Purpose

    • Execute pre-generated humanoid dance motion in Choreonoid/AISTSimulator.
    • Read joint trajectories from a CSV file.
    • Generate joint position targets based on simulation time.
    • Apply additional balance correction using IMU feedback

CSV Motion Trajectory ⟶ Time-Based Interpolation ⟶ Joint Position Reference ⟶ Balance Feedback ⟶ Corrected Joint Target ⟶ Humanoid Robot

16 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

CSV Loading & Joint Trajectory Interpolation

    • Load Motion Data

    • Linear Interpolation

The controller finds two neighboring motion frames and calculates the intermediate joint position

    • Joint Command

The interpolated position is sent to each joint as its target position:

ioBody->joint(i)->q_target() = target;

Why Interpolation?

It prevents sudden jumps between motion frames and produces a smoother joint trajectory during simulation.

17 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

IMU-Based Balance Feedback

Sensors Used

    • Accelerometer: estimates body pitch and roll tilt.
    • Gyroscope: measures pitch and roll angular velocity.

The correction is limited to prevent excessive ankle movement and unstable feedback.

Tilit Estimation

pitchTilt = atan2(-a.x(), a.z());

rollTilt = atan2(a.y(), a.z());

PD Feedback

Correction=KP​×Tilt+KD​×AngularVelocity

Correction Limitation

maxCorr = 0.35 rad ≈ 20°

This is a simplified IMU-based ankle strategy, not a full ZMP preview controller. It is mainly intended to compensate for small balance disturbances

18 of 18

ugm.ac.id

Merakyat, Mandiri, Berkelanjutan | Inclusive, Self-Reliant, Sustainable 

“THANKYOU”

“TERIMAKASIH”