A comprehensive robotic arm control system featuring computer vision-based gesture control, inverse kinematics, and WiFi-based Arduino control.
robo_arm_demo.mp4
The system consists of three main components:
- Hardware: 6-DOF robotic arm with servo motors
- Arduino Controller: WiFi-enabled Arduino Nano 33 IoT with PCA9685 servo driver
- Computer Vision Control: Python scripts (eg. run on a laptop) for gesture recognition and arm control
robot_arm/
├── 6_dof_arm.FCStd # FreeCAD design files for the robotic arm
├── 6_dof_arm.ino # Arduino firmware for WiFi control and servo management
├── CV_Steering/ # Computer vision control scripts
│ ├── environment.yaml # Conda environment configuration
│ ├── arm_control.py # Basic arm control with inverse kinematics
│ ├── arm_control_ik.py # Advanced inverse kinematics calculations
│ ├── gesture_control_working.py # Hand gesture-based control
│ ├── hand_distance_tracking.py # Hand distance/position tracking
│ ├── eye_tracking.py # Eye tracking for potential control input
│ ├── video_slider_control.py # Video-based slider control with TCP communication
│ └── [video files] # Recorded demonstrations
└── README.md # This file
| Component | Quantity | Description | Price Range |
|---|---|---|---|
| Arduino Board | 1 | Arduino UNO R4 WiFi - WiFi-enabled microcontroller | $45-55 |
| Servo Motors | 6 | ZOSKAY Coreless Digital Servos - MG996R 55g Metal Gear (13kg torque) | $30-40 |
| PCA9685 Driver | 1 | HiLetgo PCA9685 16-Channel PWM - I2C servo driver module | $8-12 |
| Buck Converter | 1 | Seloky Adjustable Buck Converter - 12V to 5V voltage regulation | $12-18 |
| 2S LiPo Battery | 1 | Zeee 5200mAh 2S LiPo - 7.4V power source | $25-35 |
| Component | Quantity | Description | Price Range |
|---|---|---|---|
| Jumper Wires | 1 set | Male-to-male, male-to-female, female-to-female | $5-10 |
| XT60 Connectors | 2 pairs | Battery and power distribution connectors | $8-12 |
| 3D Printed Parts | 1 set | Arm segments, brackets, and mounting hardware | $0-20* |
Total Estimated Cost: $150-250 USD
| Joint | Name | Min (°) | Max (°) | Neutral (°) | PCA9685 Pin |
|---|---|---|---|---|---|
| 1 | Base Rotation | 17 | 117 | 67 | 0 |
| 2 | Shoulder | 25 | 125 | 96 | 1 |
| 3 | Elbow | 43 | 133 | 126 | 2 |
| 4 | Wrist Pitch | 44 | 134 | 67 | 3 |
| 5 | Wrist Roll | 45 | 135 | 101 | 4 |
| 6 | Gripper | 70 | 105 | 105 | 5 |
- WiFi Access Point: Creates network "RobotArmController" (password: "robotics123")
- Web Interface: HTML-based control panel accessible at
192.168.4.1 - REST API:
/api/setServosendpoint for programmatic control - Servo Management: Automatic angle constraints and position validation
The Arduino expects HTTP requests in the format:
GET /api/setServos?joint1=67&joint2=96&joint3=126&joint4=67&joint5=101&gripperAction=open
- Real-time servo position sliders
- Gripper open/close controls
- Current position display table
- 3D visualization canvas (JavaScript-based)