OpenMind

SocioGesture

Real-time and adaptive social gesture perception for human-robot interaction.

Drop the G1 recording here to fill this frame assets/demo.mp4
A greeter-robot session on a Unitree G1. Detection, tracking, whole-body pose estimation and gesture recognition all run on the robot's onboard Jetson Thor, with no cloud inference in the loop. Recorded indoors and outdoors with participants who never appear in training data.

Abstract

Robots interacting with people must recognize not only explicit commands, but also social cues such as invitations, refusals, and unavailability. In real deployments these cues have to be inferred from noisy onboard perception, under partial occlusion, shifting viewpoints and a hard latency budget.

SocioGesture pairs a compact confidence-aware body-hand skeleton representation with a lightweight dual-stream model that fuses body motion and hand articulation in a single forward pass. Training on deliberately corrupted skeletons — missing hands, occluded arms, keypoints that flicker in and out — buys robustness without costing anything at inference time. On a social gesture dataset collected in mixed indoor and outdoor settings, the system generalizes to held-out subjects, holds up under structured joint occlusion, and runs in real time on a robot-mounted edge device.

During deployment the robot saves the interaction segments it was unsure about. Those clips are labeled offline and folded back in, which lets the gesture vocabulary grow without eroding the classes the robot already handled.

What the robot actually does

Every gesture resolves to one conservative action. Above the confidence threshold the robot commits; below it, it holds position and files the clip away instead of guessing.

come
Approach
wave
Wave back
stop
Halt
phone call
Wait, keep distance
occupied
Wait, keep distance
idle, facing
Approach and engage
scratch head
Approach and engage
distractor for hand-to-head cues
handshake
Approach and shake hands
learned after deployment
salute
Approach and salute
learned after deployment
thumbs up
Approach and acknowledge
learned after deployment
not sure
Hold position, save the segment for offline labeling
below 0.7 confidence
Approach or engage Do not approach Defer and learn later

It fits in a camera frame

A 30 FPS camera leaves 33 ms per frame. The full one-person stack spends 25 ms of it on the robot's Jetson Thor, so recognition keeps pace with the video rather than lagging behind it.

0 ms33 ms frame budget
Person detection, YOLO11n at FP165 ms
Tracking, BoT-SORT1 ms
Whole-body pose, RTMW-l at FP168 ms
Skeleton gesture model11 ms
One person, end to end25 ms
Three people in frame42 ms

The recognizer itself is 1.3 M parameters and 2.3 GFLOPs, evaluated in one forward pass rather than an ensemble of joint, bone and motion streams.

Occlusion is survivable

Hands and arms carry most of the signal and are exactly what the pose estimator loses first.

Accuracy under structured occlusion, held-out subjects. Masking both hands or a whole arm collapses a normally-trained model.
TrainingHands hiddenArm hidden
Standard31.828.3
Occlusion-aware84.979.5

New gestures, old ones intact

Uncertain clips from deployment were labeled offline, verified, then folded back in.

Expanding the vocabulary from 7 to 10 gestures on a held-out 5-subject test set. Rehearsal keeps the original classes exactly where they were.
Clip accuracyBeforeAfter
All 10 gestures64.687.9
Original 798.598.5
Added 367.6

Live, on the G1 with five people who appear nowhere in the training, fine-tuning or offline test data: 146 of 150 trials recognized correctly. When the robot did act, it chose the right behavior 98.3% of the time, and no stop gesture ever produced an approach. The failures are almost all the robot declining to move, which is the direction we want it to fail in.

Code and dataset

We're preparing the dataset and evaluation code for release and will link them here once they're ready. If you'd like early access for a specific comparison, get in touch — wendy@openmind.com.

Citation

Update the eprint number and year once the arXiv identifier is assigned.

@article{fu2026sociogesture,
  title   = {SocioGesture: Real-Time and Adaptive Social Gesture
             Perception for Human-Robot Interaction},
  author  = {Fu, Wenjin and Wu, Li-Fan and Peter, Jerin and
             Huyen, Chip and Chen, Boyuan and Liphardt, Jan},
  journal = {arXiv preprint arXiv:XXXX.XXXXX},
  year    = {2026}
}