การเปิดเครื่องและทดสอบครั้งแรก
เมื่อประกอบและตรวจสอบทุกอย่างเรียบร้อยแล้ว บทนี้จะนำท่านเข้าสู่ขั้นตอนการเปิดเครื่องครั้งแรก และการทดสอบเบื้องต้นเพื่อให้แน่ใจว่าทุกอุปกรณ์ทำงานได้ปกติ
4.1 ลำดับการเปิดเครื่อง
เพื่อความปลอดภัยและป้องกันความเสียหายของอุปกรณ์ ควรเปิดเครื่องตามลำดับ:
- ตรวจสอบว่าได้เชื่อมต่อสายอุปกรณ์ทั้งหมดเรียบร้อย
- เสียบ Adapter ของ myCobot 280 JN (12V/5A) เข้ากับเต้ารับ Adapter ดำสีเทาที่มากับกล่อง
- เปิดสวิตช์ Power ที่ฐานของหุ่นยนต์ Jetson Nano ภายในจะเริ่มบูทพร้อมกัน
- เปิดสวิตช์ของปั๊มสุญญากาศ (ถ้าใช้งาน)
- รอประมาณ 30-60 วินาที จนระบบ Ubuntu บูทเสร็จและแสดงหน้า Login
Jetson Nano ฝังอยู่ภายใน base ของ myCobot 280 JN การเปิดสวิตช์ Power ที่ฐานจะเปิดทั้งสองส่วนพร้อมกัน ไม่จำเป็นต้องเปิดแยก
4.2 การเข้าสู่ระบบ Ubuntu
Jetson Nano ที่จัดส่งพร้อมชุด AIKit ได้ติดตั้งระบบปฏิบัติการ Ubuntu พร้อมโปรแกรมทั้งหมดที่จำเป็นมาแล้ว ใช้ข้อมูลต่อไปนี้ในการเข้าสู่ระบบ:
| รายการ | ค่า |
|---|---|
| Username | er |
| Password | Elephant |
Password ของระบบเป็นค่าเริ่มต้นที่กำหนดโดยผู้ผลิต
แนะนำให้เปลี่ยน Password ใหม่หลังจากใช้งานครั้งแรก เพื่อความปลอดภัย โดยใช้คำสั่ง passwd
4.3 ทัวร์หน้า Desktop และเครื่องมือที่มี
เมื่อล็อกอินเข้า Ubuntu Mate ครั้งแรก จะเห็นหน้า Desktop ที่ Elephant Robotics จัดเตรียมไว้แล้ว มีไอคอนทางลัด (Shortcut) ไปยังเครื่องมือสำคัญที่ผู้ใช้ ไม่ต้องติดตั้งเพิ่ม ระบบมาพร้อม Python + ROS1/ROS2 + myStudio + myBlockly ครบในตัวแล้ว
4.3.1 ไอคอนบน Desktop
| # | ไอคอน | หน้าที่ |
|---|---|---|
| er's Home / Trash / Network Servers | ทางลัดไป Home folder, ถังขยะ, และ Network folder ของ Ubuntu Mate มาตรฐาน | |
| 1 | Home / Github - Elephant Robotics | ลิงก์ Bookmark ไปเว็บไซต์หลักและ GitHub ของผู้ผลิต เปิดในเบราว์เซอร์ |
| 2 | myCobot Test Tool | เครื่องมือ GUI ทดสอบการทำงานของแขนกล ดูสถานะ joint, ขยับด้วย slider, ตรวจ servo |
| 3 | myStudio | โปรแกรม Burn Firmware ของบอร์ด Atom / Basic ดู บทที่ 12.8 |
| 4 | myBlockly | เขียนโปรแกรมแบบลากบล็อก เหมาะกับมือใหม่ ดู บทที่ 9 |
| 5 | ROS1 Shell / ROS2 Shell | เปิด Terminal ที่ตั้งค่า ROS environment พร้อมใช้ ไม่ต้องรัน source setup.bash เอง ดู บทที่ 10 |
| 6 | User Manual - CN / EN | คู่มือต้นฉบับ PDF จาก Elephant Robotics ภาษาจีนและอังกฤษ (คู่มือฉบับภาษาไทย = เว็บที่คุณกำลังอ่านอยู่นี้) |
4.3.2 Taskbar เครื่องมือด่วน
| # | ปุ่ม | หน้าที่ |
|---|---|---|
| 1 | Terminal | เปิด command line ใช้บ่อยที่สุด รันคำสั่ง Linux + Python |
| 2 | File Manager (Caja) | เปิดดูไฟล์/โฟลเดอร์แบบกราฟิก คล้าย File Explorer |
| 3 | Notepad / Text Editor | เปิดแก้ไขไฟล์ .py, .txt, .yaml ฯลฯ |
| 4 | Vim | Text editor ใน Terminal สำหรับโปรแกรมเมอร์ระดับสูง |
| 5 | Show Desktop | ย่อหน้าต่างทั้งหมดเพื่อเห็น Desktop |
| 6 | CPU / Memory Monitor | เห็นการใช้งาน CPU และ RAM แบบ real-time ใช้ดูตอนรัน YOLOv8 |
| 7 | Trash | ถังขยะของระบบ |
แทนที่จะคลิกไอคอน Terminal ที่ Taskbar ทุกครั้ง ใช้คีย์ลัด Ctrl+Alt+T ก็เปิดได้ทันทีจากทุกหน้าจอ
4.3.3 ซอฟต์แวร์ที่ติดตั้งมาแล้ว
Elephant ติดตั้งสิ่งต่อไปนี้มาให้ใน Image ของ Jetson Nano:
Python 3 + pymycobot
ควบคุมหุ่นยนต์ผ่าน Python ไม่ต้อง pip install เพิ่ม
ROS Noetic (ROS1)
พร้อมแพ็คเกจ mycobot_ros + rviz + MoveIt
myBlockly
เขียนโปรแกรมแบบลากบล็อก รันได้ทันที
myStudio
Burn firmware ของบอร์ด Atom/Basic
OpenCV + NumPy
ประมวลผลภาพและคำนวณ matrix
PyTorch + YOLOv8
Deep Learning รองรับ CUDA บน Jetson Nano
Image ของ Elephant ตั้งค่า VNC Server ไว้แล้ว ทำให้ คอนโทรลหน้าจอจาก PC ภายนอกได้แบบ Remote Desktop (สำคัญตอนต้องการพัฒนาโดยไม่ต่อจอ HDMI โดยตรง)
ตรวจ IP ของ Jetson ด้วยคำสั่ง hostname -I ใน Terminal:
hostname -I
hostname -I ค่าแรก (IPv4 เช่น 172.16.7.108) คือ IP ที่ใช้กับ VNC Viewer ส่วนตัวเลขยาวๆ ที่มี : เป็น IPv6 (ไม่จำเป็นต้องใช้)คัดลอกเฉพาะ IPv4 ค่าแรก (ตัวเลข 4 กลุ่มคั่นด้วย .) ไปใส่ใน VNC Viewer เช่น
RealVNC Viewer หรือ TigerVNC บน PC port มาตรฐาน :5900 หรือ :5901
ไอคอนทั้งหมดเป็น Shortcut ไปยังโปรแกรมที่ติดตั้งใน /home/er/
การลบไอคอนไม่ลบโปรแกรม แต่ถ้าเผลอลบโฟลเดอร์เป้าหมายในระบบ
อาจต้อง เบิร์น Image ใหม่
4.4 การตรวจสอบอุปกรณ์เบื้องต้น
หลังจากเข้าสู่ระบบ Ubuntu แล้ว ควรตรวจสอบว่าอุปกรณ์ทุกชิ้นเชื่อมต่ออย่างถูกต้องและพร้อมใช้งาน
Terminal = หน้าต่างพิมพ์คำสั่ง (เหมือน Command Prompt ใน Windows)
เปิดด้วยปุ่ม Ctrl+Alt+T หรือคลิกไอคอน Terminal ใน Taskbar
วิธีใช้: พิมพ์คำสั่ง กด Enter จะมีข้อความตอบกลับด้านล่าง
คัดลอกผลลัพธ์: ลากเลือกข้อความ กด Ctrl+Shift+C (Ctrl+C ปกติใน Terminal คือยกเลิกคำสั่ง)
4.4.1 ตรวจสอบการเชื่อมต่อ USB
เปิด Terminal (กด Ctrl+Alt+T) แล้วพิมพ์:
terminallsusb
ผลลัพธ์ที่ควรเห็น (ของคุณอาจมีบรรทัดมากกว่านี้ แต่ต้องมี 2 บรรทัดนี้):
Bus 001 Device 003: ID 0403:6001 Future Technology Devices, Inc.
Bus 001 Device 004: ID 8086:0b3a Intel Corp. RealSense
- ✅ บรรทัดที่มี
Future Technology Devices= myCobot 280 JN - ✅ บรรทัดที่มี
Intel Corp.หรือชื่อกล้อง = 3D Vision Camera - ❌ ถ้าไม่เห็นบรรทัดใดบรรทัดหนึ่ง ตรวจสาย USB และดู A.2
4.4.2 ตรวจสอบพอร์ต Serial ของ myCobot
พอร์ต Serial เป็น "ช่องสื่อสาร" ที่ Python ใช้ส่งคำสั่งไปหุ่นยนต์
terminalls /dev/ttyTHS*
ผลลัพธ์ที่ควรเห็น:
/dev/ttyTHS1 /dev/ttyTHS2
ใช้ ttyTHS1 เป็นพอร์ตหลัก (ttyTHS2 เป็น spare/debug ไม่ใช้)
✅ เห็น /dev/ttyTHS1 (และ ttyTHS2) ตามที่คาด ไปขั้นต่อไปได้
⚠️ ถ้าเห็น /dev/ttyACM0 แทน ใช้ได้แต่ต้องแก้พอร์ตในโค้ดด้วย
❌ ถ้าได้ ls: cannot access '/dev/ttyTHS*': No such file ดู A.1
4.4.3 เปิดสิทธิ์ใช้พอร์ต Serial
ก่อนรันสคริปต์ Python ครั้งแรก ต้องเปิดสิทธิ์ให้ user ปกติเข้าถึง /dev/ttyTHS1 ได้
(ถ้าไม่ทำจะเจอ Permission denied):
sudo chmod 666 /dev/ttyTHS1
ระบบอาจถามรหัสผ่าน พิมพ์ Elephant แล้วกด Enter
(หมายเหตุ: Linux จะไม่แสดงตัวอักษรขณะพิมพ์รหัส ไม่มี ●●● ขึ้น เป็นเรื่องปกติ )
sudo chmod 666 ไม่มี output ขึ้น เพราะ Linux ใช้หลัก "silence = success" ถ้าคำสั่งสำเร็จจะไม่แสดงอะไร แค่กลับมา prompt er@nano:~$ รอคำสั่งใหม่กฎพื้นฐานของ Linux คำสั่งที่ทำงานสำเร็จส่วนใหญ่จะไม่แสดงอะไรเลย
แค่กลับมาที่ prompt รอคำสั่งใหม่ ถ้าเห็นข้อความสีแดงหรือคำว่า Error/Permission denied ค่อยกังวล
ทดสอบว่าได้ผลจริงด้วย ls -l /dev/ttyTHS1 ต้องเห็น crw-rw-rw- ที่หน้าบรรทัด
คำสั่ง chmod 666 ด้านบนจะใช้ได้แค่จน Reboot ครั้งถัดไป ถ้าอยากให้ถาวร เพิ่ม user เข้า group dialout:
sudo usermod -a -G dialout $USER
แล้ว logout/reboot ครั้งเดียวเพื่อให้สิทธิ์มีผล หลังจากนี้ไม่ต้อง chmod อีก
4.5 การทดสอบการเชื่อมต่อกับ myCobot
ตรวจ ทุกข้อ ก่อนกด Enter ที่คำสั่ง send_angles()
- หุ่นยนต์ตั้งบนโต๊ะที่มั่นคง ไม่โยก
- มีพื้นที่ว่างรอบแขน ≥ 50 cm ในทุกทิศทาง
- ไม่มีคน/มือ/หน้า อยู่ในรัศมีการเคลื่อนที่
- ไม่มีของวางบนปลายแขนเกิน 250 g
- เก็บสายไฟ/สาย USB ให้พ้นทางเคลื่อนแขน (ไม่พันกัน)
- รู้วิธี หยุดฉุกเฉิน: ปิดสวิตช์ Power ที่ฐานหุ่นยนต์ทันที
- คน 1 คนพร้อมที่จะปิดสวิตช์ ถ้าหุ่นยนต์เคลื่อนผิดทาง
เมื่อเช็คครบแล้ว ก่อนรันโค้ดควรตรวจว่า pymycobot ติดตั้งสำเร็จ:
terminalpython3 -c "import pymycobot; print(pymycobot.__version__)"
ควรเห็นเลข version เช่น 4.0.4 หรือใหม่กว่า:
4.0.4) ถ้าได้ ModuleNotFoundError ให้รัน pip3 install pymycobot --upgrade ก่อนเมื่อ pymycobot พร้อมแล้ว ทดสอบเชื่อมต่อด้วยโค้ดสั้นๆ ผ่าน heredoc (ใช้แทน REPL ง่ายกว่าสำหรับ paste):
terminalpython3 << 'EOF'
from pymycobot import MyCobot280
import time
mc = MyCobot280('/dev/ttyTHS1', 1000000)
time.sleep(1)
# อ่านค่าปัจจุบันของแขน — ไม่สั่งเคลื่อน
print("Angles:", mc.get_angles())
print("Coords:", mc.get_coords())
EOF
ผลลัพธ์ที่ควรเห็น list 6 ตัวเลข (ค่าจริงขึ้นกับท่าของแขนตอนนี้ ไม่จำเป็นต้องเป็น 0.0 ถ้ายังไม่ได้กลับ Home):
Angles: [-0.79, -0.08, -0.52, -0.61, 0.43, 0.79]
Coords: [47.5, -63.7, 419.8, -91.23, 0.8, -90.36]
ถ้าได้ผลแบบในรูป (มี 6 ค่าตัวเลขจริง) = เชื่อมต่อสำเร็จ! ต่อไปลองสั่งเคลื่อนกลับ Home:
terminalpython3 -c "from pymycobot import MyCobot280; import time; mc = MyCobot280('/dev/ttyTHS1', 1000000); time.sleep(1); mc.send_angles([0,0,0,0,0,0], 30); time.sleep(3); print('Home:', mc.get_angles())"
หลังคำสั่งนี้ แขนจะเคลื่อนกลับท่าตั้งตรง และ get_angles() ควรคืนค่าใกล้ [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
✅ หุ่นยนต์เคลื่อนที่ ได้ยินเสียง servo + เห็นแขนกลับท่าตรง
✅ print แสดงค่ามุม list 6 ตัวเลขใกล้ ๆ 0
❌ error Permission denied ดู A.6.1
❌ print ออกมาเป็น None หรือ [] port ไม่เชื่อมจริง ตรวจ 4.4 ใหม่
❌ error ModuleNotFoundError pip3 install pymycobot --upgrade --user
คู่มือนี้ใช้คลาส MyCobot280 (จาก from pymycobot import MyCobot280)
ซึ่งเป็น API รุ่นใหม่ของ pymycobot
หากใช้ pymycobot เวอร์ชันเก่ามาก ๆ และต้องการ class เดิม
สามารถใช้ from pymycobot.mycobot import MyCobot แทนได้
API methods เหมือนกัน รายละเอียดเพิ่มเติมดูใน บทที่ 8.1
หากระบบทำงานถูกต้อง หุ่นยนต์จะเคลื่อนที่กลับสู่ตำแหน่งเริ่มต้น และคำสั่ง print จะแสดงค่ามุมของข้อต่อทั้ง 6 ออกมา
ก่อนสั่งให้หุ่นยนต์เคลื่อนที่ ตรวจสอบให้แน่ใจว่าไม่มีสิ่งของหรือมนุษย์อยู่ในรัศมีการทำงาน เพราะหุ่นยนต์จะเคลื่อนที่ทันทีที่รับคำสั่ง
4.5.1 ทางเลือก myCobot Test Tool (GUI)
ถ้าไม่อยากเขียน Python Elephant มี GUI Test Tool ติดตั้งมาให้แล้ว
เปิดจาก Desktop หรือดับเบิลคลิกที่ ~/mycobottestool/
UI เป็นภาษาจีน นี่คือคำแปลส่วนสำคัญ:
| ส่วน | จีน | ไทย |
|---|---|---|
| เลือกพอร์ต | 选择串口 | Select Serial Port เลือก /dev/ttyTHS1 |
| เลือกรุ่น | 选择设备 | Select Device เลือก myCobot 280 for M5 (ไม่ใช่ JN! เพราะ Test Tool ออกแบบสำหรับ M5 เดิม แต่ใช้กับ JN ได้) |
| เลือก Baud | 选择波特率 | Baudrate 1000000 (ไม่ใช่ 115200 default!) |
| 1. เชื่อมต่อ | 连接 / 断开 | Connect / Disconnect |
| 2. Burn Firmware | basic烧录 / atom烧录 | Burn firmware ลง Basic Board หรือ Atom Board |
| 3. ตรวจการเชื่อมต่อ | 开始检测 | Start Detection |
| 5. Calibrate | 校准零位 / 校准舵机参数 | Calibrate Home Position / Calibrate Servo |
| 6. เปิด-ปิด servo | 所有关节上电 / 下电 | Power On / Off All Joints |
| 7. ปล่อย servo | 放松所有关节 | Release All Joints (จับขยับเองได้) |
| 9. ทดสอบ LED Atom | 颜色测试 / 按钮测试 | Color Test / Button Test |
| 10. Aging test | 空载运行 / 负载运行 | Run with no-load / with load (สำหรับ stress test) |
| หยุด / กลับ Home | 停止 / 回到零位 | Stop / Return to Home |
ก่อนกดปุ่ม 连接 (Connect):
1. เปลี่ยน 选择串口 (Port) /dev/ttyTHS1 (default คือ NO Port)
2. เปลี่ยน 选择波特率 (Baud) 1000000 (default คือ 115200 ใช้ไม่ได้!)
3. 选择设备 (Device) ปล่อยไว้ที่ myCobot 280 for M5
4.6 การทดสอบกล้อง 3D Vision
4.6.1 ตรวจว่าระบบเห็นกล้อง
ก่อนจะรันโค้ด OpenCV ตรวจก่อนว่ามี /dev/video* ปรากฏ:
ls /dev/video*
ผลลัพธ์ที่ควรเห็น อย่างน้อย 1 device (กล้อง 3D Vision มัก register 2 video devices สำหรับ RGB + Depth):
/dev/video0 /dev/video1
/dev/video0 (RGB stream) และ /dev/video1 (Depth/IR stream)กล้อง 3D Vision (Intel RealSense หรือคล้าย) มี 2 sensors ภายในตัวเดียว: ตัวแรก = RGB camera ปกติ, ตัวที่สอง = Depth/IR sensor
OpenCV ใช้ VideoCapture(0) ปกติจะได้ stream RGB
ถ้าอยากใช้ Depth ใช้ VideoCapture(1)
❌ ถ้า ls: cannot access '/dev/video*' = ไม่มีกล้องเสียบ ตรวจสายและรีบูตอีกที
4.6.2 ทดสอบด้วย OpenCV
ทดสอบกล้อง 3D Vision ด้วยโค้ดสั้น ๆ ดังนี้:
python camera_test.pyimport cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('Camera Test', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
บันทึกเป็นไฟล์ camera_test.py แล้วรันด้วยคำสั่ง:
python3 camera_test.py
หากกล้องทำงานปกติ จะปรากฏหน้าต่างแสดงภาพจากกล้องแบบ Real-time กด q เพื่อปิดโปรแกรม
หากไม่เห็นภาพ ลองเปลี่ยนค่า VideoCapture(0) เป็น
VideoCapture(1) หรือ VideoCapture(2)
เพราะหมายเลขกล้องอาจเปลี่ยนตามลำดับการต่อ USB
4.7 การทดสอบปั๊มสุญญากาศ
ทดสอบการเปิด-ปิดปั๊มสุญญากาศผ่าน GPIO:
pythonimport Jetson.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(20, GPIO.OUT) # Pin 38 = BCM 20 (ดูดอากาศ)
GPIO.setup(21, GPIO.OUT) # Pin 40 = BCM 21 (ปล่อยอากาศ)
# เปิดปั๊ม (ดูด) — 0 = ON (logic invert)
GPIO.output(20, 0)
GPIO.output(21, 1)
time.sleep(3)
# ปิดปั๊ม + ปล่อยอากาศ — 1 = OFF
GPIO.output(20, 1)
GPIO.output(21, 0)
time.sleep(1)
GPIO.output(21, 1)
GPIO.cleanup()
เมื่อรันโปรแกรมนี้ ปั๊มจะดูดอากาศ 3 วินาที แล้วปล่อยอากาศ 1 วินาที
Jetson.GPIO ของ AIKit ใช้ Logic Invert:
เอาต์พุต 0 = ON (เปิดสุญญากาศ), 1 = OFF (ปิด)
ซึ่งต่างจากบอร์ดทั่วไป โปรดอย่าสลับลำดับใน GPIO.output()
วางวัตถุพื้นผิวเรียบ เช่น แผ่นพลาสติก ใต้หัวดูดสุญญากาศก่อนทดสอบ เพื่อสังเกตว่าปั๊มสามารถดูดติดได้หรือไม่
4.8 การ Calibrate ครั้งแรก
หลังจากทดสอบอุปกรณ์ทั้งหมดในหัวข้อ 4.4-4.7 ผ่านแล้ว ขั้นตอนสุดท้ายก่อนเริ่มใช้งานจริงคือการปรับเทียบระบบ (Calibration) เพื่อให้กล้องและหุ่นยนต์ทำงานร่วมกันได้อย่างแม่นยำ
การ Calibrate เป็นขั้นตอนบังคับก่อนใช้งานครั้งแรกเสมอ หากข้ามขั้นตอนนี้ หุ่นยนต์จะหยิบวัตถุไม่ตรงตำแหน่ง รายละเอียดขั้นตอนการ Calibrate ดูได้ใน หัวข้อ 5.5
4.9 การรัน Demo Pick & Place ครั้งแรก
เมื่อ Calibrate เสร็จแล้ว ผู้ใช้งานสามารถทดลองรันโปรแกรม Pick & Place ตัวอย่างเพื่อยืนยันว่าระบบทั้งหมดทำงานได้สมบูรณ์:
- เปิด Terminal แล้วเข้าโฟลเดอร์โปรแกรม:
cd Doc - รันโปรแกรมหลัก:
python3 camera_detect.py - หน้าต่าง GUI จะปรากฏขึ้น เลือกอัลกอริทึม Color Detection (เริ่มจากแบบง่ายที่สุดก่อน)
- วางลูกบาศก์สีแดง 1 ก้อนในพื้นที่ทำงาน (ภายในกรอบที่เห็นในภาพกล้อง)
- กดปุ่ม Start ระบบจะตรวจจับ เคลื่อนแขนไปเหนือวัตถุ ดูด ยก วางในตำแหน่งปลายทาง
ระหว่าง Demo ห้ามนำมือเข้าไปในพื้นที่ทำงาน หากต้องการหยุดฉุกเฉิน ให้ปิดสวิตช์ที่ฐานหุ่นยนต์ทันที
หากระบบทำงานครบ 1 รอบ (Cycle) สำเร็จ ถือว่าระบบพร้อมใช้งานจริง สามารถเริ่มศึกษา บทที่ 5 เพื่อพัฒนาโปรแกรมของตนเองได้