Sổ tay SO-101
Hướng dẫn lắp đặt, vận hành và lập trình cánh tay robot SO-101 (5 khớp + tay kẹp, mã nguồn mở của TheRobotStudio). Mọi thao tác trong sổ tay đều làm được trên trình mô phỏng.
1. Tổng quan robot
Mô hình 3D trong trình mô phỏng được nạp trực tiếp từ file URDF và STL chính thức của SO-101, nên hình dạng, kích thước và giới hạn khớp giống robot thật. Mở tab Lắp ráp và kéo thanh Hình nổ để xem từng chi tiết.
| Thông số | Giá trị |
|---|---|
| Số khớp | 5 khớp quay + 1 khớp tay kẹp, mỗi khớp một servo Feetech STS3215 |
| Tầm với | khoảng 410 mm tính tới TCP (trình mô phỏng tự tính từ URDF) |
| TCP | 98 mm từ khớp xoay cổ tay |
| Điều khiển | Bo Waveshare bus-servo, nguồn 12 V, nối máy tính qua USB |
| Chi tiết in 3D | Đế, giá servo, cánh tay trên, cẳng tay, khớp cổ tay, tay kẹp (PLA) |
| Khớp | Tên trong URDF | Chức năng | Giới hạn |
|---|---|---|---|
| J1 | shoulder_pan | Xoay cánh tay quanh trục đứng | −109° … +109° |
| J2 | shoulder_lift | Nâng/hạ cánh tay trên | −100° … +100° |
| J3 | elbow_flex | Gập cẳng tay | −96° … +96° |
| J4 | wrist_flex | Gật cổ tay | −94° … +94° |
| J5 | wrist_roll | Xoay tay kẹp | −157° … +162° |
| Kẹp | gripper | Mở/đóng ngàm kẹp | −10° … +100° |
Thứ tự lắp ráp (14 chi tiết + cụm tay kẹp)
- Đế
- Giá đỡ servo đế
- Servo J1 (ID 1)
- Tấm gắn bo điều khiển
- Khớp xoay vai
- Giá servo vai
- Servo J2 (ID 2)
- Cánh tay trên
- Servo J3 (ID 3)
- Cẳng tay
- Giá servo cổ tay
- Servo J4 (ID 4)
- Khớp gập cổ tay
- Servo J5 (ID 5)
Cụm tay kẹp (thân kẹp, servo ID 6, ngàm di động) lắp ở bước B6 của phần Lắp đặt.
2. An toàn
- Thử nút E-STOP (mô phỏng) trước khi chạy. Khi nhấn, mô-men mọi servo bị ngắt.
- Chế độ T1 (tay) giới hạn 25% tốc độ, dùng khi dạy điểm. Chế độ AUTO chỉ bật khi tay người đã ra khỏi vùng làm việc.
- Bộ điều khiển báo ALARM và dừng robot khi: vượt giới hạn khớp, điểm đích ra ngoài tầm với, đầu kẹp chạm bàn.
3. Lắp đặt
Thực hiện tuần tự trong tab Lắp đặt của trình mô phỏng. Bước sau chỉ mở khi bước trước hoàn thành.
B1. Cố định đế lên bàn
B2. Đấu nguồn 12 V và cáp USB
B3. Bật nguồn bộ điều khiển
Máy tính nhận cổng serial (ví dụ /dev/ttyACM0), 6 servo trả lời. Servo chưa giữ mô-men.
B4. Thử E-STOP (mô phỏng)
Nhấn nút đỏ ở góc khung 3D, sau đó nhả. Bộ điều khiển xác nhận mạch dừng khẩn hoạt động.
B5. Hiệu chuẩn (calibration)
Robot chạy chậm từng khớp J1 → J5 về tư thế tham chiếu để ghi offset encoder. Trước bước này toạ độ hiển thị ???.
B6. Lắp cụm tay kẹp, khai báo TCP và tải
Gắn cụm tay kẹp, TCP 98 mm từ khớp xoay cổ tay. Nhập khối lượng vật (≤ 0.2 kg).
B7. Cài vùng an toàn (mô phỏng)
Bật giới hạn bán kính bằng tầm với của robot (vòng xanh trên bàn). Sau bước này tab Điều khiển và Lập trình được mở.
4. Vận hành
Jog từng trục
Kéo thanh trượt J1–J5. Robot di chuyển theo tốc độ override hiện tại.
Jog Descartes
Các nút X±, Y±, Z± dịch TCP theo hệ toạ độ robot (gốc tại tâm đế, X hướng ra trước, Y sang trái, Z lên trên). Tay kẹp luôn giữ hướng thẳng xuống. Chọn bước 5, 20 hoặc 50 mm.
MoveL đến toạ độ
Nhập X, Y, Z (mm) rồi bấm Đi. Nếu điểm ngoài tầm với, bộ điều khiển từ chối và ghi lý do vào nhật ký.
Gắp vật
- Mở kẹp, jog TCP tới trên phôi khoảng 60 mm.
- Hạ xuống Z = 14 mm (tâm phôi lập phương 28 mm).
- Đóng kẹp. Nhật ký báo “Đã kẹp vật”.
- Nâng lên trước khi di chuyển ngang để tránh va chạm.
5. Lập trình RXL
RXL là ngôn ngữ lệnh đơn giản của bộ điều khiển: mỗi dòng một lệnh, # bắt đầu chú thích, không phân biệt hoa thường. Viết trực tiếp trong tab Lập trình, hoặc jog robot rồi bấm + MOVEJ / + MOVEL để chèn điểm hiện tại.
| Lệnh | Ý nghĩa | Ví dụ |
|---|---|---|
MOVEJ j1 j2 j3 j4 j5 | Chạy nội suy khớp tới góc các trục (độ). Nhanh, quỹ đạo cong. | MOVEJ 0 1 -2.3 86.7 0 |
MOVEL x y z | Đưa TCP tới toạ độ (mm), kẹp hướng xuống. | MOVEL 184 88 80 |
MOVEL TÊN | Đi tới điểm đã khai báo bằng POINT. | MOVEL BIN |
POINT TÊN = x y z | Khai báo điểm có tên, dùng lại nhiều lần. | POINT BIN = 0 -220 88 |
GRIP OPEN | CLOSE | Mở hoặc đóng tay kẹp (0.45 s). | GRIP CLOSE |
WAIT giây | Dừng chờ. | WAIT 0.5 |
SPEED % | Đặt tốc độ override 1–100%. | SPEED 25 |
LOOP n … END | Lặp khối lệnh n lần. Bỏ n để lặp mãi đến khi bấm Dừng. | LOOP 3 |
LOG "nội dung" | Ghi dòng vào nhật ký. | LOG "Xong" |
Bấm Kiểm tra cú pháp trước khi chạy. Lỗi được báo kèm số dòng, ví dụ dòng 7: MOVEL cần 3 số.
6. Ví dụ chương trình
Gắp một phôi bỏ vào thùng
# Phôi đỏ ở (184, 88), thùng ở (0, -220) POINT TREN_PHOI = 184 88 80 POINT BIN = 0 -220 88 MOVEJ 0 1 -2.3 86.7 0 GRIP OPEN MOVEL TREN_PHOI SPEED 25 MOVEL 184 88 14 GRIP CLOSE MOVEL TREN_PHOI SPEED 60 MOVEL BIN MOVEL 0 -220 48 GRIP OPEN MOVEL BIN
Chạy thử vòng lặp
SPEED 50 LOOP 3 MOVEL 200 -80 60 MOVEL 200 80 60 END LOG "Chạy thử xong"
Nút Nạp mẫu gắp–thả sinh chương trình đầy đủ cho cả 3 phôi.
7. Mã lỗi & xử lý
| Thông báo | Nguyên nhân | Xử lý |
|---|---|---|
| Jx vượt giới hạn mềm | Góc đích ngoài phạm vi trục | Reset lỗi, chọn điểm khác |
| Điểm nằm ngoài tầm với | Không có nghiệm động học | Đưa điểm gần đế hơn hoặc nâng Z |
| Vượt vùng an toàn | Bán kính lớn hơn tầm với | Reset lỗi, sửa toạ độ |
| Va chạm: đầu kẹp chạm sàn | Z quá thấp | Reset lỗi, Servo ON, jog Z+ |
| Không thể chạy | Servo OFF, E-STOP hoặc còn lỗi | Nhả E-STOP → Reset → Servo ON |
8. Bảo trì định kỳ
| Chu kỳ | Việc cần làm |
|---|---|
| Mỗi lần dùng | Kiểm tra cáp bus không bị kẹt hoặc lỏng, vít đế còn chặt |
| Hằng tháng | Siết lại vít các chi tiết in 3D, vệ sinh ngàm kẹp |
| Khi lệch vị trí | Chạy lại hiệu chuẩn, thay servo nếu kêu hoặc nóng bất thường |