Project Info
Inspiration
We were inspired by the idea of making robots move more naturally — not through pre-programmed motions or scripts, but by understanding and reacting to human movement the same way humans do. Watching fighters and athletes move made us wonder: what if a robot could learn to mirror that instinctively, using only vision and sound? That curiosity turned into MIRAI — Machine Interaction through Real-time Awareness and Imitation, a system that lets a robot see you, follow you, and even understand your voice.
What it does
MIRAI allows a Unitree G1 humanoid robot to perceive, imitate, and respond to human behavior in real time. Using a camera and microphone, the robot can: Detect and mirror human upper-body movements with natural motion. Follow the user’s position as they move through space. Respond to voice commands such as “follow me,” “stop,” or “mirror mode.” The result is a robot that doesn’t just move — it interacts.
How we built it
We combined several cutting-edge tools and frameworks to bring MIRAI to life: MediaPipe and OpenCV for fast, real-time human pose detection and tracking from a camera feed. Pinocchio for inverse kinematics, converting human joint angles into robot joint configurations. SpeechRecognition for our speech-to-action pipeline, translating voice commands into behaviors that the robot executes. A lightweight Python control layer built on Unitree SDK2, which sends motion commands directly to the robot’s motors. Finally, we added motion smoothing and timing filters to eliminate jitter and make the robot’s imitation feel human — fluid, balanced, and reactive.
Challenges we ran into
Human-to-robot mapping: Translating human motion data into robotic joint space was a major challenge, given that human anatomy doesn’t directly match the robot’s structure. Latency issues: Early tests showed slight delays in movement response, which we mitigated through data smoothing and async pipelines. Balance and stability: The G1 needed custom calibration to maintain stability while performing large arm movements during imitation. Speech reliability: Background noise often interfered with command recognition, requiring dynamic audio filtering.
Accomplishments we're proud of
Achieved real-time motion imitation with minimal lag. Built a working speech-to-action system that allowed natural control of the robot. Developed a human-aware following mode, enabling the robot to track user position while maintaining a safe distance. Created an integrated control loop that combines vision, audio, and motor control — a step toward unified human-robot interaction. Seeing the robot shadow our movements and respond to our voice felt like the start of something bigger — almost like watching fiction turn into reality.
What we learned
The importance of synchronizing multimodal systems (vision + audio + actuation). Fine-tuning inverse kinematics requires both math and intuition. Smooth motion is more impactful than just accuracy — a small delay feels more human than a perfect but robotic response. Combining multiple AI pipelines (speech and pose) is surprisingly powerful when done in real time. Most importantly, we learned that true human-robot interaction isn’t just about sensors — it’s about creating presence.
What's next
We’re looking to expand MIRAI beyond shadowing and speech commands into intent recognition — where the robot predicts motion or responds emotionally to interaction cues. Our next milestones: Add gesture-based control and multi-person tracking. Port MIRAI to more robot platforms for teleoperation and rehabilitation robotics. Integrate LLMs for contextual speech understanding, allowing conversational coordination. Explore industrial and healthcare applications where intuitive motion mirroring could enhance safety and collaboration. MIRAI started as a boxing robot. It’s quickly becoming a framework for natural human-robot symbiosis.
Analysis
View
Metric
- 9
- 5
- 4
- 4
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- C++In code
- PythonIn code
2 of 2 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
200 KB
Source files
18
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
A-Mundanilkunathil/Unitree-G1
21 files · 202 KB · @ e1c2905
Structure
Application logic
18 files · 86%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python99%
- C++1%
- Shell0%
- Markdown0%
Share of indexed source by file size. Binary and vendored files are excluded.
Feature verification
Human-following mode (position tracking, safe distance)Verified
Robot follows the user's position as they move through space, maintaining a safe distance
Claimed on Devposthigh confidenceg1_vision_with_control.py:253— track_object() continuously detects a person and drives robot movement to follow themg1_vision_with_control.py:482— _control_from_offset computes forward/back/turn velocity to keep target within a safe distance band (safe_distance_min/max)
Inverse kinematics via PinocchioVerified
Pinocchio used for inverse kinematics, converting human joint angles into robot joint configurations
Claimed on Devposthigh confidenceg1_mediapipe_arms_pinnochio.py:71— PinocchioRightArmIK class builds a reduced Pinocchio model and solves damped least-squares IK from MediaPipe landmarksg1_mediapipe_arms_pinnochio.py:174— solve() runs an iterative Jacobian-based IK loop using pin.computeFrameJacobian
Motion smoothing / jitter filteringVerified
Motion smoothing and timing filters added to eliminate jitter and make imitation feel human
Claimed on Devpostmedium confidenceg1_mediapipe_arms_pinnochio.py:491— LowCmdWrite applies velocity-limited interpolation between current and target joint commands to smooth motion
Real-time human pose detection via MediaPipe/OpenCVVerified
Uses MediaPipe and OpenCV for real-time human pose detection and tracking from a camera feed
Claimed on Devposthigh confidenceg1_mediapipe_arms_pinnochio.py:280— mp.solutions.pose.Pose used to process camera frames and extract landmarksg1_mediapipe_arms_pinnochio.py:387— cv2.VideoCapture reads frames which are fed into MediaPipe pose.process
Unitree G1 humanoid robot control via Unitree SDK2Verified
A lightweight Python control layer built on Unitree SDK2 sends motion commands directly to the robot's motors
Claimed on Devposthigh confidenceg1_mediapipe_arms_pinnochio.py:14— imports unitree_sdk2py channel/LowCmd/LowState classes and publishes low-level motor commandsg1_high_level_control.py:1— separate high-level control file also builds on unitree_sdk2py clients
Upper-body arm imitation mapped to robot jointsVerified
Robot detects and mirrors human upper-body movements with natural motion
Claimed on Devposthigh confidenceg1_mediapipe_arms_pinnochio.py:350— process_landmarks extracts shoulder/elbow/wrist landmarks and solves IK to drive robot armtest_punch_mirror.py:314— maps human right hand landmarks to robot's left arm joints for mirroring
Integrated vision + audio + motor control loopCode-supported
Created an integrated control loop that combines vision, audio, and motor control
Claimed on Devpostlow confidenceg1_vision_with_control.py:15— combines vision detection (G1VisionDetector) with motor control (SimpleRobotController/LocoClient) but no audio component is wired into this or any other file
Natural language control of robot movements/gesturesCode-supported
Natural motion and voice-based control of robots; natural language commands mapped to robot actions
Claimed on Devpostmedium confidenceg1_nlp_control.py:251— LLMInterpreter.interpret_command takes free-text input and maps it to structured robot actions (walk, turn, gestures) via an LLM or pattern matchingg1_nlp_control.py:430— main() reads commands via input('You: ') i.e. typed text, not microphone/speech input, so this is text-based NL control rather than voice control
Voice command control ('follow me', 'stop', 'mirror mode') via SpeechRecognitionClaimed only
Robot responds to voice commands such as 'follow me', 'stop', or 'mirror mode', built using the SpeechRecognition library for a speech-to-action pipeline
Claimed on Devposthigh confidenceRobot access/setup via SSH to Unitree G1Blocked
README documents SSH connection details for the G1 robot
Claimed on readmehigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.