StarArm 102 - Robotic Arm Teleoperation System
๐ Project Overview
StarArm 102 is a 6+1 DOF robotic arm teleoperation project that lets a Leader Arm remotely control a Follower Arm in real time. The project provides three control methods for robotics research, teleoperation training, AI dataset collection, and similar scenarios.
โจ Key Features
- ๐ Open source, low cost, and easy to access
A fully open-source design that lowers the barrier to learning and deployment.
Available in two purchase options: a pre-assembled system for out-of-the-box use, or a DIY kit for teaching and hands-on practice.
- โ๏ธ High control frequency
6 active joints + 1 end effector.
The joint configuration strictly follows the Pieper criterion and supports analytical inverse kinematics, making the algorithms transparent and easy to teach or extend.
- ๐น๏ธ Cross-platform compatibility and plug-and-play operation
Supports direct bare-metal teleoperation without extra software.
Deeply compatible with both LeRobot and ROS2 ecosystems.
Covers the full real-robot workflow: data collection -> simulation -> model training -> physical deployment.
- ๐ Complete learning resources
Includes tutorials, API documentation, and example code from beginner to advanced levels.
Suitable for university teaching, research experiments, and self-learning by individual developers.
- ๐ LD model: a highly compatible teleoperation leader arm
Star Arm 102-LD can perfectly teleoperate the FL model in the same series.
It is also directly compatible with reBot and other robotic arms that share the same or a similar kinematic structure.
One leader arm can drive multiple arms, greatly reducing the cost of building a teleoperation system.
๐ง Arm Specifications
| Star Arm 102-LD | Star Arm 102-FL | |
|---|---|---|
| DOF | 6+1 | 6+1 |
| Accuracy | - | 5-8mm |
| Suggested Maximum Payload | - | 300g |
| Joint Range | Joint 0: ยฑ120ยฐ Joint 1: ยฑ163ยฐ Joint 2: 0ยฐ~270ยฐ Joint 3: ยฑ88ยฐ Joint 4: ยฑ66ยฐ Joint 5: ยฑ168ยฐ Gripper: 0~336ยฐ |
Joint 0: ยฑ120ยฐ Joint 1: ยฑ163ยฐ Joint 2: 0ยฐ~270ยฐ Joint 3: ยฑ88ยฐ Joint 4: ยฑ66ยฐ Joint 5: ยฑ168ยฐ Gripper: 0~200ยฐ |
| Servos | RA8-U01H-M for joints #0, #1, #2, and #3; RA8-U02H-M for joint #4; RA8-U03H-M for joints #5 and #6; |
RA8-U25H-M for joints #0, #3, #5, and #6; RX8-U45H-M for joints #1 and #2; RA8-U25H-M for joint #4; |
| Communication Hub | UC-01 | UC-01 |
| Communication Method | UART | UART |
| Power Supply (optional) | 12V2A / XT30 | 12V10A / XT30 |
| Tools and Bolts | Screws, threadlocker, woodworking clamp, spare PCB (UC01), DC power pigtail (5.5ร2.5mm jack), 200mm servo lead wire | Screws, threadlocker, woodworking clamp, spare PCB (UC01), DC power pigtail (5.5ร2.5mm jack), 200mm servo lead wire |
| Angle Sensor | 12-bit magnetic encoder | 12-bit magnetic encoder |
| Weight | 663g | 791g |
| Recommended Operating Temperature Range | 0-40ยฐC | 0-40ยฐC |
| Works with LeRobot | โ | โ |
| Works with ROS 2 | โ | โ |
| Works with MoveIt | - | โ |
| Works with Gazebo | - | โ |
๐ Quick Start
System Requirements
| Item | Requirement |
|---|---|
| Operating System | Ubuntu 22.04 |
| ROS Version | ROS2 Humble |
| Hardware | StarArm 102 robotic arm (Leader + Follower) |
| Driver | CH340 USB Driver |
Installation Methods
Method 1: Python bare-metal teleoperation (recommended for beginners)
# 1. ๅฎ่ฃ
ไพ่ต
pip install pyserial fashionstar-uart-sdk
# 2. ่ฟ่ก็จๅบ
sudo chmod 777 /dev/ttyUSB*
python3 ./Python_SDK/stararm102_ro.py
Method 2: ROS2 HUMBLE
# ๅ่ ROS2_HUMBLE/README.md ้
็ฝฎ่ฏดๆ
Method 3: LeRobot framework
# ๅ่ Lerobot/README.md ้
็ฝฎ่ฏดๆ
๐ Project Structure
Star-Arm-102/
โโโ Python_SDK/ # Python SDK ๆงๅถๆนๅผ
โ โโโ stararm102_ro.py # ไธปไปๆงๅถ็จๅบ
โ โโโ README.md # ่ฏฆ็ปไฝฟ็จๆๆกฃ
โโโ ROS2_HUMBLE/ # ROS2 ๆงๅถๆนๅผ
โ โโโ src/
โ โโโ robo_driver/ # ๆบๆขฐ่็กฌไปถ้ฉฑๅจ่็น
โ โโโ stararm102_description/ # ๆบๆขฐ่URDFๆจกๅๆ่ฟฐ
โ โโโ stararm102_gazebo/ # Gazeboไปฟ็็ฏๅข้
็ฝฎ
โ โโโ stararm102_moveit_config/ # MoveIt2่ฟๅจ่งๅ้
็ฝฎ
โ โโโ stararm102_controller/ # ๆบๆขฐ่ๆงๅถๅจ
โ โโโ arm_moveit_read/ # ไฝๅงฟ่ฏปๅ่็น
โ โโโ arm_moveit_write/ # ไฝๅงฟๅๅ
ฅ่็น
โ โโโ arm_read_pose/ # ๅฎๆถไฝๅงฟ่ฏปๅ
โ โโโ ros2_bag_recorder/ # ็คบๆ่ฝจ่ฟนๅฝๅถ
โ โโโ robo_interfaces/ # ่ชๅฎไนROS2ๆฅๅฃ
โโโ Lerobot/ # Lerobot ๆกๆถๆงๅถๆนๅผ
โ โโโ lerobot-robot-stararm102/ # Follower ๆบๅจไบบ้
็ฝฎ
โ โโโ lerobot-teleoperator-stararm102/ # Leader ้ฅๆไฝๅจ
โ โโโ stararm102_en.md # Lerobot ไฝฟ็จๆๆกฃ๏ผ่ฑๆ๏ผ
โ โโโ stararm102.md # Lerobot ไฝฟ็จๆๆกฃ
โ โโโ README.md # ไฝฟ็จๆญฅ้ชค
โโโ README.md # ๆฌๆๆกฃ
๐ฏ Control Method Comparison
| Feature | Python SDK | ROS2 HUMBLE | Lerobot |
|---|---|---|---|
| Difficulty | โญ Easy | โญโญโญ Medium | โญโญโญโญโญ Advanced |
| Real-time Performance | โญโญโญโญโญ | โญโญโญ | โญโญโญ |
| Extensibility | โญโญ | โญโญโญโญโญ | โญโญโญโญ |
| Typical Use Cases | Quick testing, education | Robotic system integration | AI training, research |
๐ง Hardware Connection
Connection Topology
โโโโโโโโโโโโโโโโโโโ
โ โ
โ ่ฎก็ฎๆบ โ
โ (Ubuntu 22.04) โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ
USB USB
โ โ
โโโโโโโโดโโโโโโโ โโโโโโโโดโโโโโโโโโ
โ โ โ โ
โ Leader Arm โ โ Follower Arm โ
โ(StarArm 102)โ โ (StarArm 102) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
Device Detection
# ๆฅ็ๆๆ USB ่ฎพๅค
lsusb
# ๆฅ็ไธฒๅฃ่ฎพๅค
ls -l /dev/ttyUSB*
# ่ตไบๆ้
sudo chmod 777 /dev/ttyUSB*
๐ Joint Mapping
The StarArm102 robotic arm has 7 joints in total (6 DOF + 1 rotating gripper):
| Joint | Angle Range | Description |
|---|---|---|
| Joint1 | -130ยฐ ~ 130ยฐ | Base rotation |
| Joint2 | -90ยฐ ~ 90ยฐ | Shoulder pitch |
| Joint3 | -90ยฐ ~ 90ยฐ | Elbow pitch |
| Joint4 | -90ยฐ ~ 90ยฐ | Wrist rotation |
| Joint5 | -90ยฐ ~ 90ยฐ | Wrist pitch |
| Joint6 | -130ยฐ ~ 130ยฐ | Wrist yaw |
| Gripper (joint7_left) | -90ยฐ ~ 90ยฐ | Rotating gripper |
๐ Note: The rotating gripper is controlled through
joint7_left, whilejoint7_rightis the linked joint that automatically mirrors the motion in reverse.
โ ๏ธ Safety Notes
- Check before operation: Make sure there are no obstacles around the robotic arm and that the workspace is safe.
- Emergency stop: Press
Ctrl+Cat any time while the program is running to stop immediately. - Joint limits: Safe angle limits are configured automatically to prevent out-of-range motion.
- Power management: Ensure stable power delivery to the robotic arm and avoid voltage fluctuations.
๐ Troubleshooting
Common Issues
Q1: Cannot find the /dev/ttyUSB0 device?
# ๆฃๆฅ USB ่ฎพๅค
ls -l /dev/ttyUSB*
# ๆฃๆฅ USB ่ฎพๅคไฟกๆฏ
lsusb
# ๆฅ็ไธฒๅฃๆฅๅฟ
sudo dmesg | grep ttyUSB
# ๅฆๆ่ขซ brltty ๅ ็จ๏ผๅธ่ฝฝๅฎ
sudo apt remove brltty
# ่ตไบๆ้
sudo chmod 777 /dev/ttyUSB*
Q2: serial port connection failed?
- Check whether the USB cable is loose.
- Confirm that the robotic arm is powered on.
- Try a different USB port.
- Verify that the driver is installed correctly.
Q3: Control frequency is too low?
- Check whether serial port communication is working properly.
- Reduce the load from other running programs.
- Use a USB 3.0 port for better performance.
Q4: Robotic arm connection failed?
- Check whether the USB cable is properly connected.
- Confirm that the robotic arm is powered on.
- Check the servo communication status.
- Try a different USB port.
๐ Detailed Documentation
Choose the control method you need:
- ๐ Python SDK Guide - Recommended. The simplest option to get started with.
- ๐ ROS2 HUMBLE Guide - Suitable for robotic system integration.
- ๐ Lerobot Guide - Suitable for AI training and research.
๐ License
This project is open sourced under the MIT License.
๐ฅ Acknowledgments
- Thanks to FashionStar for the hardware support and SDK.
๐ Related Links
- FashionStar Official Website
- Lerobot Framework
- ROS2 Official Documentation
- MoveIt2 Official Documentation