รีวิวหุ่นยนต์แขนกล myCobot 280 Pi

แกะกล่อง myCobot 280 Pi

myCobot 280 Pi หุ่นยนต์แขนกลอเนกประสงค์ มีการทำงานข้อต่อแบบ 6 แกน ออกแบบและพัฒนาโดย Elephant Robotics โดยใช้ บอร์ด Raspberry Pi 4 เป็นส่วนประกอบหลักในการควบคุม มีขนาดกะทัดรัดและมั่นคง สำหรับการทำงานในพื้นที่ที่จำกัด อีกทั้งสามารถเขียนได้หลากหลายภาษา ใช้งานง่าย ฟังก์ชั่นครบครัน เหมาะสำหรับผู้ที่สนใจจะเริ่มเรียนรู้การเขียนโปรแกรมควบคุมหุ่นยนต์แขนกล เอาไว้ใช้ทำงานทดแทนหรือทำโครงงานวิศวกรรมศาสตร์ก็ถือว่าเหมาะสมเลยทีเดียว

myCobot Pi

myCobot 280 Pi มีระยะพื้นที่การทำงานเส้นผ่านศูนย์กลาง 280 มิลลิเมตร มีน้ำหนัก 850 กรัม รับน้ำหนักในการยกของได้ 250 กรัม ขับเคลื่อนด้วยเซอร์โวมอเตอร์แต่ละแกนรวม 6 แกน มี LED แสดงผลแบบ Matrix 5×5 อีกทั้งยังสามารถเชื่อมต่อกับชิ้นส่วน Lego ได้อีกด้วย

myCobot Pi Working Range

ควบคุมด้วยคอมพิวเตอร์ขนาดเล็ก Raspberry Pi 4B  ในการประมวลผล สามารถเชื่อมต่อกล้อง MyCobot 280 ในการใช้งานด้าน Image Processing มีพอร์ต USB 4 ช่อง  สามารถรับสัญญาณ WiFi  อีกทั้งยังเชื่อมต่อการแสดงผลออกจอด้วยพอร์ต Micro-HDMI ได้ รวมถึงพอร์ต Input/Output 40 Pin ที่เชื่อมต่ออุปกรณ์ต่างๆ อีกมากมาย ส่วนการเปิด-ปิดหุ่นยนต์สามารถกดได้เพียงปุ่มเดียว รวมถึงมีช่องต่ออะแดปเตอร์แปลงไฟอีกด้วย

myCobot Pi Port

ช่องใส่ SDCard อยู่ด้านใต้ของหุ่นยนต์ myCobot 280 Pi

myCobot Pi sdcard

 

อะแดปเตอร์แปลงไฟ Input 100-240 โวลล์ กระแสไฟฟ้าแบบสลับ โดยแปลงกระแสเป็นไฟฟ้ากระแสตรง Output 8.4 โวลล์ 5.0 แอมป์ 42 วัตต์ ซึ่งรองรับการใช้งานแบบต่อเนื่องได้

myCobot Pi Adapter

 

และอุปกรณ์เสริมต่างๆในชุดประกอบด้วย

  • แผ่นฐานยึด myCobot  :  Base-Flat
  • สกรูยึดแบบแรงดูด myCobot : Screw Fixing
  • กล้องเว็บแคม myCobot
  • ชุดหัวดูดปั้มลมแรงสูง myCobot : SuctionPump
  • อะแดปเตอร์แปลงไฟ
  • สายไฟเชื่อมต่อต่างๆ
  • ตัวต่อ LEGO  Connector

 

myCobot Pi Set

วิธีติดตั้งแผ่นฐานกับหุ่นยนต์ myCobot 280 Pi

อุปกรณ์เสริมแผ่นฐานยึดสกรูแบบตัวดูดสูญญากาศกับหุ่นยนต์ myCobot 280 Pi

myCobot Pi Base Flat Screw Fixing

ในการประกอบแผ่นฐานยึดกับหุ่นยนต์ myCobot 280 Pi หมุนสกรูลงไปกับรูที่อยู่บริเวณตรงมุมทั้ง 4 ด้าน

myCobot Pi Base Flat Screw Fixing2

เสร็จเรียบร้อยจะได้หน้าตาแบบนี้ครับ

myCobot Base Flat

ตัวต่อ LEGO Connector สามารถติดตั้งอุปกรณ์เสริมได้อย่างง่ายดายกับหุ่นยนต์ myCobot 280 Pi

myCobot LEGO Connector

จากนั้นนำ ตัวเชื่อมต่อ LEGO มาใส่ในช่องของแผ่นยึด สามารถออกแบบการติดตั้งได้ตามต้องการ

myCobot Pi Base Flat Grey

จากนั้นนำหุ่นยนต์ myCobot 280 Pi มาติดตั้งตามตำแหน่ง ในการติดตั้งเพื่อการยึดติดแบบสูญญากาศโดยสามารถหมุนสกรูลงไปให้แน่น เพียงเท่านี้ หุ่นยนต์ myCobot 280 Pi ก็สามารถยึดติดกับพื้นได้แล้ว และแนะนำว่าวัสดุที่จะติดได้ดี คือ กระจก, หินอ่อน, วัสดุที่เป็นผิวเรียบ

myCobot Screw Fixing

ระบบปฎิบัติการ Ubuntu

myCobot 280 Pi ถูกติดตั้งระบบปฎิบัติการ Ubuntu แบบ Linux มีโปรแกรมสามารถเขียนคำสั่งควบคุมได้ทั้งแบบ Block-Base Programming คือ myBlockly และ Python ด้วย VSCode

myCobot Pi Ubuntu

Python

myCobot 280 Pi สามารถเขียนโปรแกรมด้วยภาษา Python ได้ซึ่งเพิ่มความสามารถในการใช้กล้องเพื่อตรวจจับวัตถุต่างๆ ใช้งานร่วมกับ Library OpenCV ในทางด้านปัญญาประดิษฐ์ Image Processing, Machine Learning

myCobot Pi Python pymycobot

ROS

Robot Operating System (ROS) โดยใช้ Rviz เพื่อจำลองการเคลื่อนที่ของแขนกล และสามารถควบคุมระยะไกลผ่าน ROS ได้อีกด้วย

myCobot Pi ROS

คำสั่งโปรแกรมควบคุมหุ่นยนต์ MyCobot 280 Pi ด้วย MyBlockly

MyBlockly คือ เครื่องมือพัฒนาโปรแกรมแบบจำลอง (Visual) โดยใช้สัญลักษณ์ภาพแบบจิ๊กซอล แทนคำสั่งมาเรียงต่อกันตามเงื่อนไขที่ต้องการ ในเครื่องมีอนี้มีกลุ่มของสัญลักษณ์ที่ประกอบด้วย Logic, Loops, Math, Text, Lists, Colour, Variables, Functions ที่เป็นแบบพื้นฐานและยังมีฟังก์ชั่นในการควบคุมแขนกลและยังมีฟังก์ชั่นต่าง ๆ ที่ครบครันที่สำคัญเขียนง่ายมากครับ ส่วนในการ Run โปรแกรมที่เขียนสามารถคลิ๊กที่ Run ที่หัวมุมด้านขวา ที่นี้ เรามาดูคำสั่งที่น่าสนใจกันครับ

myCobot Pi MyBlockly

Time

เป็นคำสั่งการหน่วงเวลาโดยใช้คำสั่ง Sleep มีหน่วยเวลาเป็นวินาที

myCobot Pi MyBlockly Time

Raspi-GPIO

เป็นคำสั่งควบคุม gpio ย่อมาจาก general purpose input/output เรียกเป็นง่ายๆว่า พอร์ตเอนกประสงค์ คือเราสามารถควบคุม คอนโทรลให้เป็น HIGH หรือ LOW ได้ โดยที่จะสามารถควบคุมได้แต่ละ Pin ของบอร์ด Raspberry Pi

myCobot Pi MyBlockly Raspi GPIO

ATOM IO

เป็นคำสั่งควบคุม LED Matrix 5×5 ของหุ่นยนต์ที่อยู่บริเวณแขน โดยสามารถเปลี่ยนค่าได้ตามไฟ RGB โดยจะมีค่าที่ให้ป้อน 3 ค่า คือแม่สีทั้ง 3 สี ได้แก่ สีแดง สีน้ำเงิน สีเขียว ครับ อีกทั้งยังสามารถใช้ PWM Control ได้อีกด้วยครับ

myCobot Pi MyBlockly ATOM IO

สีของ LED จะเปลี่ยนตามคำสั่งที่เราป้อนลงไปครับ

myCobot Pi LED Matrix 5x5 1

Status

คำสั่งเปิด – ปิด สถานะการทำงานของหุ่นยนต์ MyCobot 280 Pi

myCobot Pi MyBlockly Status

MDI – Model and Operation

เป็นคำสั่งการควบคุมองศาการเคลื่อนที่ของแขนกลแต่ละแกน ได้ด้วยบล๊อคเดียว อีกทั้งสามารถป้อนข้อมูลได้พร้อมกันรวมถึงการควบคุมความเร็วได้ หรืออยากจะใช้โหมด Coordination ก็สามารถใช้งานได้ครับ เรียกได้ว่าเป็นการเขียนโปรแกรมที่ง่ายมาก ๆ ครับ

myCobot Pi MyBlockly MDI Control

JOG Model and Operation

เป็นคำสั่งการควบคุมองศาการเคลื่อนที่ของแขนกลแต่ละแกน แบบแยกบล๊อคการทำงาน เพิ่มความหลากหลายในการใช้งานมาก ๆ ครับ

myCobot Pi MyBlockly JOG Control

Running Status and Setting

เป็นคำสั่งการควบคุมความเร็วการเคลื่อนที่ของแขนกล รวมถึงบล๊อคคำสั่งในการเคลื่อนที่ไปยังองศาสูงสุดถึงต่ำสุดด้วยครับ

myCobot Pi MyBlockly Setting

 

การหาค่าตำแหน่งองศาต่างๆ ของหุ่นยนต์ในแต่ละแกน

ในการหาค่าองศาของแต่ละแกนโดยการอ่านค่าจากโปรแกรม ฟังก์ชั่นนี้เรียกได้ว่าเป็นฟังกชั่นที่ดีมาก ๆ ช่วยในการลดเวลาในการหาองศาต่าง ๆ  โดยคลิ๊กไปที่มุนด้านขวา

myCobot Pi MyBlockly Read Angles

จะมีหน้าต่างขึ้นมาในหัวข้อ Quick Move จากนั้นเราสามารถปรับองศาได้ด้วยมือแล้วคลิ๊กที่ปุ่ม Read Angles ค่าที่ได้จะถูกป้อนเข้าไปในบล๊อค Set Angle แบบ อัตโนมัติ

myCobot Pi MyBlockly Read Angles2 1

ทดสอบความแม่นยำของ MyCobot 280 Pi

ผมได้ทดสอบความแม่นยำการเคลื่อนที่ของหุ่นยนต์ myCobot 280 Pi ซึ่งผลการทดลองมีความแม่นยำ + –  5 % ให้ทำงานตามสีเป็นขั้นตอนและเปลี่ยนการแสดงผลของ LED Matrix 5×5 ให้ตรงกับสีนั้นตามวิดีโอที่อยู่ด้านล่างครับ

myCobot SuctionPump

ปั้มดูดที่สามารถเพิ่มความสามารถของหุ่นยนต์แขนกล myCobot 280 Pi เพิ่มความสามารถในการยกและเปลี่ยนตำแหน่งโดยการดูด วัตถุสามารถยกแล้วย้ายไปยังตำแหน่งอื่นได้ น้ำหนักสูงสุดของวัตถุที่ยกด้วย myCobot Suck Pump คือ 250 กรัม

รายละเอียดปั๊มดูด

  • ฟังก์ชัน: ดูดวัตถุเพื่อยก เคลื่อนย้ายตำแหน่ง
  • น้ำหนักสูงสุดของวัตถุที่จะยก: 250 g
  • วัสดุ: photopolymer / ไนลอน 7100
  • สี: ขาว
  • ขนาด: 94 x 74 x 51 mm
  • น้ำหนัก: 220 กรัม

myCobot Endeffector SuctionPump

การติดตั้ง myCobot SuctionPump กับ myCobot 280 Pi

ใช้ ตัวต่อ LEGO Connector ใส่เข้ากับ myCobot SuctionPump

myCobot Pi Suction install

เพียงเท่านี้ก็สามารถติดตั้ง myCobot SuctionPump กับ myCobot 280 Pi ได้อย่างง่ายดาย

myCobot Pi Suction install Complete

การเชื่อมต่อสายไฟระหว่าง myCobot SuctionPump กับ myCobot 280 Pi

ทำได้โดยการเสียบสาย Connector ไปยัง GPIO ของตัว Raspberry Pi โดยมีสายอยู่ 4 เส้น ได้แก่ 5V, GNd, G2 (GPIO21), G5 (GPIO22)

myCobot Pi Endeffector SuctionPump Port

การเสียบสายจะใช้สายไฟแบบ Dupoint แบบตัวผู้ เสียบเข้าไปที่จุดเชื่อมต่อ GPIO โดยจะเสียบสายอยู่ 4 เส้น  ได้แก่ 5V, GNd, G2 จะเชื่อมต่อกับ (GPIO21), G5 จะเชื่อมต่อ (GPIO22)

myCobot Pi wirring Suction

 

การใช้คำสั่งการทำงานของ myCobot SuctionPump ด้วย myBlockly

โดยไปที่หัวข้อ Rasp GPIO อันดับแรกเราจะต้องใช้บล๊อคคำสั่ง Set Mode BCM ก่อนเพื่อเป็นการทำงานของ Pin GPIO จากนั้นเราจะใช้ บล๊อคคำสั่ง Set pin Mode 20 และ 21 Set เลือกเป็น OUT เพื่อ ตั่งค่าการทำงานของ Pin 20 และ 21 เป็นโหมดแบบ OUTPUT

ในการสั่งงานจะใช้ 2 บล๊อคในการควบคุม myCobot SuctionPump

โดย สั่งให้ทำงาน ใช้บล๊อคคำสั่ง Set pin 20 Output เลือกเป็น HIGH และ Set pin 21 Output เลือกเป็น HIGH

สั่งให้หยุดทำงาน ใช้บล๊อคคำสั่ง Set pin 20 Output เลือกเป็น LOW และ Set pin 21 Output เลือกเป็น LOW

เพียงเท่านี้ก็สามารถเปิด – ปิด การทำงานของ  myCobot SuctionPump ได้แล้วครับ

MyCobot 280 Pi Blocky Suction

 

ทดสอบการทำงานในการยกและเปลี่ยนตำแหน่งโดยการดูดชิ้นงาน

ผมได้ทดสอบแขนกลทำงานร่วมกันกับปั้มดูด ในการเคลื่อนย้านตำแหน่งไปยังจุดที่ต้องการตามสีของชิ้นงานที่กำหนดตามลำดับ ซึ่งผลจากการทดสอบในการทำงานของปั้มดูดจะใช้เวลานานให้การดูดชิ้นงาน และหากชิ้นงานมีน้ำหนักเบาจะใช้เวลาในการปล่อยพอสมควร แต่การทำงานของแขนกลสามารถทำงานได้แม่นยำเป็นอย่างดี ดูได้จากวิดีโอการทดสอบครับ

MyCobot 280 Camera

น้ำหนักเบา ติดตั้งบนแขนหุ่นยนต์ในเวลาไม่กี่นาที Plug-and-play สะดวกและรวดเร็วมาก การออกแบบที่กะทัดรัดและไดรฟ์ข้อมูลขนาดเล็กช่วยให้คุณไม่ต้องกังวลกับการใช้พื้นที่มากเกินไป กล้องไมโคร USB ขนาดเล็กพิเศษ ใช้สีมุมกว้างความละเอียดสูง 720P ด้วยการเชื่อมต่อความเร็วสูง USB2.0 มาตรฐาน ใช้งานได้หลากหลาย เหมาะสำหรับการจดจำใบหน้า, หน้าจออัจฉริยะ, การจัดส่งด่วนอัจฉริยะ, ตู้หยอดเหรียญอัตโนมัติ, รหัสสแกน, การควบคุมการเข้าใช้งาน, อุปกรณ์ทางการแพทย์และอื่น ๆ

myCobot Camera

myCobot Pi imageProcessing

การติดตั้ง myCobot SuctionPump + myCobot 280 Camera + myCobot 280 Pi

ที่นี้ผมจะใช้ MyCobot 280 Camera ร่วมกับ myCobot SuctionPump โดยใช้ตัวต่อ LEGO Connector ใส่เข้ากับ myCobot SuctionPump

myCobot Pi Suction install with myCobot Camera

จากนั้นนำ MyCobot 280 Camera มาประกบกันกับ myCobot SuctionPump

myCobot Pi Suction install with myCobot Camera Complete

จากนั้นนำตัวต่อ LEGO Connector ใส่เข้ากับ MyCobot 280 Camera แล้วมาติดตั้งกับ MyCobot 280 Pi ครับ

myCobot Pi Suction install with myCobot Camera2

เสร็จสมบูรณ์ครับเรียกได้ว่าง่ายมากๆครับ

myCobot Pi Suction install with myCobot Camera Complete

การติดตั้ง OpenCV and Numpy โดยใช้ pip

ในการเตรียมความพร้อมในการเขียนโปรแกรม Image Processing จะต้องทำการติดตั้ง Library 2 ตัว ครับ นั่นคือ Opencv และ Numpy

โดยสามารถติดตั้งได้ผ่าน Terminal ใน OS ของหุ่นยนต์ครับ

OpenCV คือไลบรารีที่นิยมสำหรับการประมวลผลภาพขั้นพื้นฐาน เช่น การเบลอภาพ การผสมภาพ การเพิ่มคุณภาพของภาพ เพิ่มคุณภาพของวิดีโอ การรู้จดจำวัตถุต่าง ๆ ในภาพ หรือ การตรวจจับใบหน้าหรือวัตถุต่าง ๆ ในภาพและวิดีโอ และการแยกสีที่เรานำมาใช้ในโปรเจคนี้


Numpy เป็นโมดูลส่วนเสริมของ Python ที่มีฟังก์ชัน เกี่ยวกับคณิตศาสตร์และการคำนวณต่างๆ มาให้ใช้งาน โดยทั่วไปจะ เกี่ยวกับการจัดการข้อมูลชุด (Array) และเมทริกซ์

Image Thresholding

Threshold คือ หนึ่งในเทคนิคการคัดแยกวัตถุออกจากภาพพื้นหลัง โดยการรับภาพสีเทามาแปลงเป็นภาพไบนารีที่มีค่าพิกเซลเป็น 0 หรือ 255 ด้วยการกำหนดค่าคงที่ขั้นต่ำมาเทียบกับค่าพิกเซลในแต่ละพื้นที่ของภาพสีเทา เพื่อทำการเปลี่ยนค่าพิกเซลนั้นเป็น 0 หรือ 255 โดยผมเขียนโปรแกรมด้วยภาษา Python ผ่าน VSCode  ซึ่งจะใช้วัตถุ 3 สีในการตรวจจับ ในขั้นต่อนี้จะต้องทำการหาวัตถุสีแดงก่อนครับ ค่าที่ได้จะไม่มีตายตัวนะครับ ขึ้นอยู่กับแสงแต่ละพื้นที่ด้วยครับ ก็จะได้ค่าตามนี้ครับ lowerR = np.array([142, 114, 181]) upperR = np.array([194, 255, 255])

myCobot Pi Thresholding Red

หาค่าของวัตถุสีน้ำเงินค่าที่หาได้ดังนี้ครับ lowerB = np.array([83, 228, 206]) upperB = np.array([106, 255, 255])

myCobot Pi Thresholding Blue

หาค่าของวัตถุสีเขียวค่าที่หาได้ดังนี้ครับ lowerG = np.array([54, 82, 228]) upperG = np.array([81, 255, 255])

myCobot Pi Thresholding Green

โค้ดตัวอย่างการหาค่า Thresholding (Python)

โดยมีการ import โมดูล 2 ตัว ได้แก่ cv2 ในการจัดการภาพ และ numpy ในการจัดการข้อมูลชุด (Array) และเมทริกซ์

การทำงาน myCobot 280 Pi ร่วมกับ สายพานลำเลียง เพื่อคัดแยกสีของวัตถุ (Color Sorting)

ในการทำงานระหว่าง myCobot 280 Pi ร่วมกับสายพานลำเลียงเพื่อคัดแยกสีของวัตถุ แยกเป็น 2 ส่วน

  1. ส่วนของสายพานใช้บอร์ด Arduino ในการควบคุมมอเตอร์ของสายพานและเขียนโปรแกรมตรวจสอบเงื่อนไขเซนเซอร์วัดระยะในการหยุดของวัตถุให้ตรงตามตำแหน่งของสายพาน
  2. ในส่วนของ myCobot 280 Pi จะทำการตรวจจับสีที่คัดได้จากการ Image Thresholding และเขียนเงื่อนไขหากตรวจพบเจอสีที่ต้องการจำนวน 3 สี ได้แก่ สีแดง สีน้ำเงิน สีเขียว จากนั้นจะทำการดูดยกด้วย myCobot SuctionPump เคลื่อนย้านไปใส่ในถังสีตามที่ถูกต้อง โดยผมตั้งค่าตำแหน่งของแขนกลไว้ 4 ตำแหน่ง 1. ตำแหน่งกล่องสีแดง 2. ตำแหน่งกล่องสีน้ำเงิน 3. ตำแหน่งกล่องสีเขียว 4. ตำแหน่งเริ่มต้นในการตรวจจับวัตถุสี ซึ่งความสะดวกสบายในการหาตำแหน่ง ของ myCobot 280 Pi สามารถใช้มือจับแขนกลเคลื่อนที่ไปยังตำแหน่งนั้นแล้วอ่านค่าจาก Serial Monitor ได้เลย และนำค่าที่ได้มาใส่ในโปรแกรมซึ่งเป็นจุดที่ดีมาก ๆ ในการหาตำแหน่งต่าง ๆ

myCobot Pi Conveyor Color Sorting

โค้ดตัวอย่าง myCobot 280 Pi Color Sorting

โดยมีการเรียกใช้ library MyCobot  ในการใช้คำสั่งควบคุมองศาแขนกลของหุ่นยนต์แต่ละแกน มีการใช้ library GPIO ในการสั่งงานเปิด-ปิด myCobot SuctionPump ใช้ library cv2 ในการจัดการภาพ และ numpy ในการจัดการข้อมูลชุด (Array) และเมทริกซ์

วิดีโอตัวอย่าง myCobot 280 Pi Color Sorting

 

Highlight myCobot 280 Pi Color Sorting

ผมต้องขอขอบคุณบริษัท Elephant Robotics ที่ส่งชุดหุ่นยนต์ myCobot 280 Pi พร้อมอุปกรณ์เสริมมาให้รีวิวและได้ทดลองเล่น

myCobot 280 Pi ยังมีลูกเล่นอีกมากมาย เหมาะสำหรับผู้ที่เริ่มต้นในการเรียนรู้การศึกษาเกี่ยวกับหุ่นยนต์แขนกลในราคาเริ่มต้น $799 (~30,000฿) สามารถนำไปใช้ในการเรียนการสอนในห้องเรียนในชั้นการศึกษาระดับมัธยมไปจนถึงระดับมหาวิทยาลัย เพื่อต่อยอดนำไปใช้งานด้านอุตสาหกรรม ถือว่า myCobot 280 Pi  ตอบโจทย์มากๆ ในการเรียนรู้ อีกทั้งยังเขียนโปรแกรมได้ง่ายมาก ๆ สามารถอ่านค่าองศาได้ อีกทั้งยังสามารถศึกษาการคำนวณการเคลื่อนที่ด้วย Foward – Inverse Kinematics ได้อีกด้วย

หากท่านใดที่สนใจสามารถศึกษาเพิ่มเติมร้านค้า Elephant Robotics

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
โฆษณา