Unitree G1 - Moving the arms/hands - Dev w/ G1 Humanoid P.3
Summary
The Unitree G1 humanoid robot's arm control was developed to achieve Cartesian movement, addressing the SDK's limitation to only joint-level control. The developer successfully implemented this by manually collecting approximately 50 samples for each of six actions: up, down, left, right, forward, and backward. These samples, comprising starting and ending joint positions mapped to directions, were used to train a simple scikit-learn MLP model with two hidden layers, each containing 32 neurons. This approach enabled basic, albeit imperfect, Cartesian hand control on the physical robot. Other project updates include uploading development files to GitHub, fixing occupancy grid inaccuracies caused by a flipped LiDAR unit and O3 software, attempting to display battery percentage (unsupported by SDK), increasing the robot's walking speed, and implementing an E-stop via a remote control. Simulator testing for the trained arm policy revealed discrepancies, likely due to joint labeling issues, but the policy's effectiveness and the robot's powerful arm capabilities were confirmed on the actual hardware.
Key takeaway
For robotics engineers developing custom arm control for platforms like the Unitree G1, you should anticipate SDK limitations for high-level Cartesian movement. Instead of complex reinforcement learning or simulator debugging, consider collecting small datasets of human-demonstrated joint movements. Training a simple regressor on ~50 samples per action can yield functional Cartesian control, but always implement smooth gradient-based transitions for new positions to mitigate the robot's powerful and potentially violent movements.
Key insights
Direct Cartesian control for robot arms can be achieved through simple supervised learning from human-demonstrated joint movements.
Principles
- SDK limitations often necessitate custom control solutions.
- Messy, accurate human-demonstrated data can train effective robot policies.
- Robot arm movements can be surprisingly forceful and fast.
Method
Collect ~50 human-demonstrated joint position samples per Cartesian action (up, down, etc.). Train a simple MLP regressor (e.g., scikit-learn, 2x32 neurons) to map start positions and commands to target end positions.
In practice
- Use a gradient for new joint positions to prevent violent movements.
- Isolate arm control topics to maintain leg balance.
- Consider manual data collection for specific, limited actions.
Topics
- Unitree G1
- Humanoid Robotics
- Cartesian Control
- Robot Arm Kinematics
- Supervised Learning
- Scikit-learn MLP
- Robot Safety
Best for: AI Engineer, Robotics Engineer, Machine Learning Engineer
Related on AIssential
Editorial summary, takeaway, and curation by AIssential. Original article published by sentdex.