myCobot 280 JN + AIKit 3D Vision
รวม Error

คลังรวม Error Message แก้ทันทีที่เจอ

รวม error messages เป๊ะๆ ที่ผู้ใช้เห็นใน Terminal/Python/AIKit กด Ctrl+F (หรือ Cmd+F บน Mac) แล้ว paste ข้อความ error ที่เจอ จะข้ามไปยังคำตอบทันที

ถ้าไม่ใช่ข้อความ error แต่เป็นอาการ (เช่น แขนไม่ขยับ กล้องไม่ขึ้นภาพ) ดู การแก้ไขปัญหา แทน

Permission & Serial Errors

PermissionError: [Errno 13] could not open port '/dev/ttyTHS1'
สาเหตุ: user ไม่มีสิทธิ์เข้าถึงพอร์ต serial
วิธีแก้ทันที: terminal
sudo chmod 666 /dev/ttyTHS1

วิธีแก้ถาวร: เพิ่ม user เข้า dialout group

terminal
sudo usermod -a -G dialout $USER
# Logout แล้ว login ใหม่

📖 ดูเต็ม: บท 4.4.3

ls: cannot access '/dev/ttyTHS*': No such file or directory
สาเหตุ: Serial driver ไม่พร้อม หรือ Atom ไม่ตอบสนอง
แก้:
  1. เช็คว่าเปิดเครื่องครบ สวิตช์ที่ฐานเปิดอยู่
  2. ลอง ls /dev/tty* หาว่ามีพอร์ตอื่นมั้ย เช่น ttyACM0
  3. รีบูตเครื่อง sudo reboot
  4. ถ้ายังไม่เจอ ดู A.1
serial.serialutil.SerialException: could not open port
สาเหตุ: พอร์ตถูกใช้งานโดยโปรเซสอื่น หรือสายเสีย
แก้:
  1. เช็คว่ามีโปรแกรมอื่นเปิด port อยู่: sudo lsof /dev/ttyTHS1
  2. ปิด myBlockly / myStudio / โปรแกรมอื่นที่อาจใช้พอร์ตอยู่
  3. ลอง kill proceess ที่ค้าง
  4. ถอด-เสียบสาย USB-C ใหม่
OSError: [Errno 16] Device or resource busy
สาเหตุ: port กำลังถูกใช้งานโดย process อื่น
แก้: terminal
sudo lsof /dev/ttyTHS1
# ถ้าเห็น process — kill มัน
sudo kill -9 [PID]

Python Errors

ModuleNotFoundError: No module named 'pymycobot'
สาเหตุ: ไลบรารี pymycobot ยังไม่ติดตั้ง หรืออยู่ใน Python อีกตัว
แก้: terminal
pip3 install pymycobot --upgrade
# เช็ค version
python3 -c "import pymycobot; print(pymycobot.__version__)"
# ควรเห็น 4.0.4 หรือสูงกว่า

ถ้ายังไม่เจอ เช็คว่าใช้ python3 ไม่ใช่ python (Python 2)

ModuleNotFoundError: No module named 'cv2'
สาเหตุ: OpenCV ไม่ได้ติดตั้ง (ปกติ Image มาให้แล้ว!)
แก้: terminal
pip3 install opencv-python
# หรือ
sudo apt install python3-opencv
IndentationError: unexpected indent (ตอน paste โค้ดใน REPL)
สาเหตุ: Python REPL ไม่ชอบโค้ดที่มี indent แบบ paste โดยเฉพาะ for/if
แก้: ใช้ heredoc แทน REPL: terminal
python3 << 'EOF'
from pymycobot import MyCobot280
import time
mc = MyCobot280('/dev/ttyTHS1', 1000000)
for i in range(3):
    mc.send_angle(1, 50, 30)
    time.sleep(2)
EOF

ดู Quick Start Step 4 Pro tip

mc.get_angles() คืน [] (list ว่าง) หรือ None
สาเหตุ: Serial ยังไม่พร้อมตอนสร้าง MyCobot280 object
แก้: ใส่ time.sleep(1) หลัง constructor: python
mc = MyCobot280('/dev/ttyTHS1', 1000000)
time.sleep(1)  # ← สำคัญ!
mc.power_on()
time.sleep(0.5)
print(mc.get_angles())
TypeError: send_angle() got unexpected keyword argument
สาเหตุ: ใช้ keyword argument ที่ pymycobot version นั้นไม่รู้จัก (API เปลี่ยน)
แก้: ใช้ positional arguments แทน: python
# ❌ ผิด
mc.send_angle(joint=1, angle=50, speed=30)

# ✅ ถูก
mc.send_angle(1, 50, 30)

Motion Errors

❌ Joint angle out of range / LED แดงค้าง
สาเหตุ: ส่งมุมเกินขีดจำกัด ±165° (หรือ ±175° สำหรับ J6)
แก้: python
def safe_angles(angles):
    limits = [165, 165, 165, 165, 165, 175]
    return [max(-l, min(a, l)) for a, l in zip(angles, limits)]

mc.send_angles(safe_angles(my_angles), 30)

ถ้า LED แดงค้าง mc.release_all_servos() แล้วส่งคำสั่งกลับ Home ใหม่

❌ แขนค้าง ไม่ขยับเลย ส่งคำสั่งแล้วไม่ทำอะไร
สาเหตุที่เป็นไปได้:
  1. Servo ยังไม่ power on ลอง mc.power_on() ก่อนส่งคำสั่ง
  2. หรือ servo อยู่ใน released state สั่ง mc.power_on()
  3. หรือ Atom firmware ค้าง ดู บท 12.8 เพื่อ burn ใหม่
  4. หรือ baud rate ผิด ต้องเป็น 1000000 ไม่ใช่ 115200
❌ แขนเคลื่อนกระตุก/สั่น/ไม่นุ่ม
สาเหตุ: speed สูงเกิน + ไม่มี sleep ระหว่างคำสั่ง
แก้: python
# ❌ ผิด — กระตุกแน่
for pose in poses:
    mc.send_angles(pose, 80)

# ✅ ถูก — ใส่ sleep
for pose in poses:
    mc.send_angles(pose, 40)
    time.sleep(2)  # รอให้เคลื่อนถึง

# ✅ ดีกว่า — ใช้ sync (รอจนถึงจริงๆ)
for pose in poses:
    mc.sync_send_angles(pose, 40, timeout=10)

Vacuum / Gripper Errors

❌ ปั๊มทำงานเองตอนเปิดเครื่อง
สาเหตุ: Logic Invert GPIO default = LOW = ปั๊ม ON
แก้: เขียน HIGH ใน script ก่อนเริ่มงานทุกครั้ง python
import Jetson.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(20, GPIO.OUT)
GPIO.output(20, 1)  # ← OFF ก่อน (logic invert)
GPIO.output(21, 1)

📖 ดูเต็ม: Cheatsheet Vacuum

❌ Gripper ไม่ปิด/ไม่ตอบ set_gripper_state()
สาเหตุ: Gripper ไม่ได้ต่อขั้ว I2C หรือ Atom firmware เก่า
แก้:
  1. เช็คขั้วต่อ Gripper ที่ flange ดูใน บท 3
  2. Burn Atom firmware ใหม่ด้วย myStudio (ดู บท 12.8)
  3. ทดสอบด้วย mc.is_gripper_moving() ถ้า return None = ไม่ตอบ

Camera / Vision Errors

cv2.VideoCapture(0) ได้แต่ภาพดำ / ret = False
สาเหตุ: Camera index ไม่ถูก หรือกล้องไม่เสียบ
แก้: terminal
# ลิสต์ video devices
ls /dev/video*
v4l2-ctl --list-devices

# ลองทุก index
python3 -c "
import cv2
for i in range(5):
    cap = cv2.VideoCapture(i)
    print(f'Index {i}: {cap.isOpened()}')
    cap.release()
"

กล้อง 3D Vision register เป็น /dev/video0 + /dev/video1 ลองทั้งคู่

❌ Camera เปิดได้แต่ภาพดำหรือ frozen
สาเหตุ: Power / USB bandwidth ไม่พอ
แก้:
  1. ใช้พอร์ต USB 3.0 ไม่ใช่ USB 2.0
  2. ลดความละเอียด: cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
  3. ถ้ามี USB Hub ใช้แบบ powered (มีไฟแยก)
❌ ArUco Marker ไม่ถูกตรวจจับ
สาเหตุที่พบบ่อย:
  1. ใช้ Dictionary ไม่ตรงกับ marker Elephant ใช้ DICT_6X6_250
  2. แสงไม่พอ ต้อง ≥ 300 lux
  3. Marker ขนาดเล็กเกินใน frame ขยับใกล้กล้องขึ้น
  4. OpenCV version ใหม่: ใช้ aruco.ArucoDetector() แทน detectMarkers()

System / Linux Errors

No space left on device
สาเหตุ: TF Card เต็ม (ปกติ 64GB หมดได้เร็วถ้าโหลด YOLO models)
แก้: terminal
# เช็คพื้นที่
df -h

# ลบ apt cache
sudo apt clean
sudo apt autoremove

# ลบ PyTorch cache
rm -rf ~/.cache/torch

# หาไฟล์ใหญ่ๆ
du -h ~/* | sort -rh | head -10
❌ ระบบบูทไม่ขึ้น / Kernel Panic / หน้าจอดำ
สาเหตุ: TF Card เสีย หรือ filesystem corrupted
แก้: ต้อง Burn Image ใหม่ ดู บท 12 การกู้คืนระบบ เต็ม
⚠️ Jetson ร้อน ลด performance / รีบูตเอง
สาเหตุ: อุณหภูมิ > 70°C thermal throttling
แก้:
  1. เช็คอุณหภูมิ: sudo tegrastats ดู column thermal
  2. ตรวจว่าพัดลม Jetson หมุน (ในฐาน)
  3. ย้ายไปที่อุณหภูมิห้องเย็น (< 30°C)
  4. ลดโหมดเป็น 5W: sudo nvpmodel -m 1
❌ Wi-Fi ไม่เชื่อมต่อ
สาเหตุ: driver / config / สัญญาณ
แก้: terminal
# เช็ค interface
ip a

# Restart NetworkManager
sudo systemctl restart NetworkManager

# CLI connect
nmcli device wifi list
nmcli device wifi connect "SSID" password "PASSWORD"

ROS Errors

Unable to register with master node [http://localhost:11311]
สาเหตุ: roscore ยังไม่ได้รัน
แก้: terminal
# Terminal 1: รัน roscore
roscore

# Terminal 2: รัน script ของคุณ
rosrun your_package your_node.py
❌ MoveIt: No motion plan found in available time
สาเหตุ: target pose อยู่นอก workspace หรือมี collision
แก้:
  1. เช็ค target อยู่ใน workspace (±281mm รอบฐาน, Z: -70 ถึง +413mm)
  2. เพิ่ม planning_time: group.set_planning_time(10.0)
  3. ลองเปลี่ยน planner: group.set_planner_id("RRTConnect")
  4. ลด pose constraint บางครั้ง orientation แม่นเกินไป

myBlockly Errors

❌ Run แล้วได้ Timeout / ไม่มีอะไรเกิดขึ้น
สาเหตุ: port หรือ baud ผิดใน Init block
แก้: ในบล็อก Init MyCobot 280:
  • Port: เปลี่ยนเป็น /dev/ttyTHS1 (default /dev/ttyS0 ใช้ไม่ได้!)
  • Baud: เปลี่ยนเป็น 1000000 (default 115200 ใช้ไม่ได้!)

📖 ดู บท 9.2

🆘
ยังหาคำตอบไม่เจอ?

ลองค้นใน:

หรือถ่ายภาพหน้าจอ error ส่งไปที่ Facebook Group / Line OA ของ Synergy