บทความ

กำลังแสดงโพสต์จาก พฤษภาคม, 2017

Discussion

Discussion จากการออกแบบเพื่อให้หุ่นยนต์  ABB YUMI สามารถหยิบวัตถุที่มีความแตกต่างกันทั้งสีและรูปร่างทรงเรขาคณิต เพื่อนำมาประกอบเป็นชิ้นงานตามโจทย์ที่มนุษย์หรือผู้ใช้เป็นผู้กำหนด   ในโปรเจคนี้วัตถุที่ใช้เป็นบล็อคไม้ที่มีรูปร่างแตกต่างกัน 2 แบบ คือ ทรงสามเหลี่ยมด้านเท่ากับทรงสี่เหลี่ยมผืนผ้า และมีสีแตกต่างกัน 7 สี ได้แก่ สีแดง สีส้ม สีน้ำเงิน สีเขียวเข้ม สีเขียวอ่อน สีม่วง และสีเหลือง  การทดสอบการทำงานระหว่างผู้ใช้กับหุ่นยนต์ YUMI ได้ผลดังนี้ เมื่อผู้ใช้ทำการเลือกรูปร่าง สี เลเยอร์ และตำแหน่งของวัตถุที่ต้องการประกอบชิ้นงานให้เป็นรูปร่างต่าง ๆ ที่ต้องการ ผ่านทางหน้าจอคอมพิวเตอร์ที่เป็นส่วนของ Task Planning แล้วกดส่ง  คำสั่งดังกล่าวจะถูกส่งไปยังคอมพิวเตอร์ 2 ตัว คือส่วนของ Vision ซึ่งทำหน้าที่ในการตรวจหาวัตถุที่มีสี รูปร่างตามที่ผู้ใช้กำหนด และ Manipulator ซึ่งทำหน้าที่ในการหยิบและเคลื่อนย้ายวัตถุจากจุดเริ่มต้นไปยังตำแหน่งปลายทางที่โปรแกรมไว้ ผลการทดสอบพบว่า ระบบ Vision สามารถตรวจหาสีและรูปร่างของวัตตุที่ต้องการได้อย่างถูกต้อง...

References

References OpenCv ::  http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html ABB YUMI ::  http://new.abb.com/products/robotics/industrial-robots/yumi

Implementation : Vision Chapter 2

รูปภาพ
Vision-ColorDetection การทำงานนส่วนของ Vision จะทำหน้าที่เป็น Input รับข้อมูลสะภาพแวดล้อมทางกายภาพแล้วแปลงข้อมูลเป็นภาพสองมิติและสามมิติ โดยใช้อุปกรณ์ที่เรียกว่า Kinect แล้วทำการประมวลภาพผลเพื่อให้ได้ตำแหน่งของวัตถุที่สนใจเพื่อส่งให้ Task Planning ทำงานในขั้นต่อไป Input ภาพ RGB และ Depth จาก Kinect Output Position X,Y,Z Process 1.แปลงรูปภาพที่ได้จาก kinect แบบ (RGB) ให้เป็น HSV hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) lower_blue = np.array([140, 50 , 50 ]) upper_blue = np.array([180, 255 , 255 ]) # Threshold the HSV image to get only blue colors blue_mask = cv2.inRange(hsv, lower_blue, upper_blue) mask = blue_mask # Bitwise-AND mask and original image res = cv2.bitwise_and(frame,frame, mask = mask) 2.หา Contour blurred = cv2.GaussianBlur(gray, ( 5 , 5 ), 0 ) thresh = cv2.threshold(blurred, 50 , 250 , cv2.THRESH_BINARY)[ 1 ] image, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(cnt, contours,...

Design: Vision Chapter 2

รูปภาพ
Vision-ColorDetection การทำงานนส่วนของ Vision จะทำหน้าที่เป็น Input รับข้อมูลสภาพแวดล้อมทางกายภาพแล้วแปลงข้อมูลเป็นภาพสองมิติและสามมิติ โดยใช้อุปกรณ์ที่เรียกว่า Kinect ติดไว้ที่ตำแหน่งด้านบนของ Work Space หันหน้าตั้งฉากเพื่อรับภาพเชื่อต่อกับ Computer แล้วทำการประมวลผลภาพเพื่อให้ได้ตำแหน่งของวัตถุที่สนใจแล้วส่งให้ Task Planning ทำงานในขั้นต่อไป Kinect Kinect เป็นอุปกรณ์ที่สามารถสร้างข้อมูลจากสภาพแวดล้อมเป็นภาพสี (RGB) ที่เป็น 2 มิติขนาด 640 x 480 pixel และข้อมูลระยะทาง (DEPTH) ระหว่างของสิ่งแวดล้อมกับตัว Kinect ขนาด 640 x 480 pixel เชื่อมต่อโดยตรงกับ Computer ดังรูปที่ 1 รูปที่ 1 การเชื่อมต่อระหว่าง Kinect กับ Computer Workspace พื้นที่การทำงานในการหาสีของวัตถุจะใช้พื้นที่ทั้งหมดมีขนาดประมาณ 22.5x 26.5 cm ดังรูปที่ 2 รูปที่ 2 พื้นที่ของการหาสีของวัตถุ Flowchart รูปที่ 3 Flow การหาสีของวัตถุ การตรวจจับวัตถุโดยการใช้  HSV (Object Detection using HSV space) ระบบสี HSV(Hue, Saturation, Value)หรือ HSB (Hue, Saturation, Brightness)เป็นระบบสีที่นิยมใช้...

Objective

Objective ออกแบบระบบให้สามารถทำงานร่วมกับคนได้ ศึกษาการทำงานของระบบหุ่นยนต์ ABB YUMI ศึกษาระบบการทำงานของ Vision robot ศึกษาการวางแผนการทำงานของหุ่นยนต์ สามารถนำองค์ความรู้ด้านต่างๆ มาทำงานร่วมกันได้

Path Manipulation

รูปภาพ
Path Manipulation         เริ่มต้นต้องเชื่อมต่อเข้าไปยัง Server ก่อนเพื่อรับข้อมูลคำสั่งจากส่วนอื่นๆ หลังจากที่เชื่อมต่อเข้าไปยัง Server เรียบร้อยแล้วสั่งการทำงานให้ ABB YUMI ไปยังตำแหน่ง home ของหุ่นยนต์เพื่อเป็นจุดอ้างอิงในการเคลื่อนที่ไปยังตำแหน่งต่างๆ หลังจากนั้นทำจะรอจนกว่าจะมีการส่งข้อมูลโปรโตคอลมายัง Path Manipulation ถ้าไม่มีจะอยู่ตำแหน่ง home ของหุ่นยนต์ต่อไป แต่ถ้ามีการส่งข้อมูลโปรโตคอลมายัง Path Manipulation จะทำการตัดข้อมูลและแปลงข้อมูลเป็นแบบใหม่และส่งไปยัง ABB YUMI program เมื่อ ABB YUMI ได้รับโปนโตคอลจากการตัดข้อมูลเรียบร้อยแล้วจะทำตามคำสั่งที่อยู่ออกแบบไว้ใน ABB YUMI program หลังจากที่ทำงานครบวงจรแล้ว ABB YUMI จะกลับไปยังตำแหน่ง home ของหุ่นยนต์ และถ้ายังเชื่อมต่อกับ Server อยู่จะวนรอฟังคำสั่งจาก  Path อื่นๆ แต่ถ้าตัดการเชื่อมต่อแล้วจะจบการทำงานของโปรแกรม 

Path Planning

รูปภาพ
Path Planning         เริ่มต้นกำหนดโจทย์ให้กับ ABB YUMI จากนั้นทำการเช็ค สีและรูปร่างที่โจทย์ต้องการในพื้นที่ Store ถ้ามีก็นำชิ้นงานไปประกอบได้เลยแต่ถ้าไม่มี  จะทำการขอข้อมูลสีจาก PATH VISION ก่อนซึ่ง PATH VISION จะทำการตรวจสอบสี และจะส่งจำแหน่งของ สีที่เราต้องการ  กลับไปยัง PATH PLANNING โดยลำดับการเลือกชิ้นงานจะทำตามลำดับที่บึนทึกไว้ในโจทย์ เมื่อได้ตำแหน่งของสีแล้วจะทำการส่ง โปรโตคอลไปยัง PATH MANIPULATION เพื่อทำการจับชิ้นงานไปยังพื้นที่ตรวจจับรูปร่าง PATH PLANNING จะทำการขอข้อมูลจาก PATH VISION อีกครั้งเพื่อทำการตรวจสอบรูปร่างว่าตรงตามที่โจทย์ต้องการหรือไม่ ถ้าตรงจะทำไปในพื้นที่การประกอบเลย แต่ถ้าไม่ตรงจะทำการเคลื่อนที่ชิ้นงานไปยังพื้นที่ Store ทันทีและทำการค้นหาสีและรูปร่างใหม่อีกครั้งนึง ซึ่งลักษณะการทำงานจะเป็นไปตาม flowchart ภาพที่ 1  ภาพที่ 1 Flowchart ภาพที่ 2 UI       จากรูปที่ 2 ผู้ใช้สามารถเลือกรูปร่างของชิ้นงานที่ต้องการนำมาประกอบได้ในช่อง Shape และสามารถเลือกสีของชิ้นงานที่ต้องการในช่อง Color...

Implementation : Vision Chapter 1

รูปภาพ
Vision การทำงานนส่วนของ Vision จะทำหน้าที่เป็น Input รับข้อมูลสะภาพแวดล้อมทางกายภาพแล้วแปลงข้อมูลเป็นภาพสองมิติและสามมิติ โดยใช้อุปกรณ์ที่เรียกว่า Kinect แล้วทำการประมวลภาพผลเพื่อให้ได้ตำแหน่งของวัตถุที่สนใจเพื่อส่งให้ Task Planning ทำงานในขั้นต่อไป Process การทำงานของ Vision ส่วนที่ 1 จะรับหน้าที่ในการหารูปร่างของวัตถุชิ้นงานและตำแหน่งของชิ้นงานนั้น จากนนั้นจะส่งข้อมูลตำแหน่งและรูปร่างกับไปให้ Task Planning ดังนี้ 1 ) นำข้อมูล DEPTH ทำการเปลี่ยนจุดอ้างอิงของระยะทางจาก "ตัว Kinect" เป็นพื้นของพื้นที่การทำงานด้วย img_depth = (img_depth - CALIBRATE_FLOOR) * -1 เมื่อทำการแสดงค่าตำแหน่งสามมิติ x, y, z (มีความคลาดเคลื่อน) ของเครื่องหมาย "+" ที่อ้างอิงจากพื้นจะได้ได้ดังรูปที่ 1 รูปที่ 1 ภาพ RGB ที่ผ่านการกรองด้วย HSV space แล้วแสดงตำแหน่งของเครื่องหมาย "+" 2) ทำการเปลี่ยน color space ของภาพ RGB จาก RGB เป็น HSV จากนั้นทำการ threshold ภาพ HSV ที่มีค่า hue : 0 - 179, satuate : 0 - 255, value : 100 - 255 เพื่อทำการตัดพื้นหลังและแสงรบกวน  ทำการแปลงภ...

Programming Design : Path Manipulation

Design : Vision Chapter I

รูปภาพ
Vision การทำงานนส่วนของ Vision จะทำหน้าที่เป็น Input รับข้อมูลสะภาพแวดล้อมทางกายภาพแล้วแปลงข้อมูลเป็นภาพสองมิติและสามมิติ โดยใช้อุปกรณ์ที่เรียกว่า Kinect ติดไว้ที่ตำแหน่งด้านบนของ Work Space หันหน้าตั้งฉากเพื่อรับภาพเชื่อต่อกับ Computer แล้วทำการประมวลผลภาพเพื่อให้ได้ตำแหน่งของวัตถุที่สนใจแล้วส่งให้ Task Planning โดยมีการทำงานดังรูปที่ 1 รูปที่ 1 Vision Flowchart Diagram Kinect Kinect เป็นอุปกรณ์ที่สามารถสร้างข้อมูลจากสภาพแวดล้อมเป็นภาพสี (RGB) ที่เป็น 2 มิติขนาด 640 x 480 pixel และข้อมูลระยะทาง (DEPTH) ระหว่างของสิ่งแวดล้อมกับตัว Kinect ขนาด 640 x 480 pixel เชื่อมต่อโดยตรงกับ Computer ดังรูปที่ 2 รูปที่ 2 การเชื่อมต่อระหว่าง Kinect กับ Computer Kinect Server เนื่องจากการทำงานส่วนของ Vision มี 2 ส่วน โดยแต่ละส่วนนั้นจะแยกการทำงานอิสระจากกันและทำงานกันอยู่คนละเครื่อง  ดังนนั้นการส่งภาพจาก Kinect จงใช้การกระจายภาพผ่านทาง Network เพื่อให้ Vision แต่ละส่วนสามารถเข้าถึงข้อมูลเดียวกันได้พร้อมกันดังรูปที่ 3  พัฒนาโดยใช้ภาษา C# และใช้ Kinect SDK ในการเชื่อมต่อกับอุ...

VDO

รูปภาพ
VDO's ABB YUMI           คลิปนี้จะอธิบายการทำงานส่วนต่างๆ ของการทำงานการหยิบ และวางชิ้นงานโดยการตรวจจับสีและรูปร่างของชิ้นงานและนำไปเรียงได้ตามคลิป วีดีโอ ที่ 1 ซึ่งเป็นโจทย์ปัญหาแบบที่ 1 จะเป็นการวางชิ้นงานแบบ 1 ชั้น  วีดีโอที่ 1 แสดงการทำงานตามโจทย์ปัญหาที่ 1       คลิปนี้จะแสดงระบบการทำงานตามโจทย์ปัญหาแบบที่ 2 เป็นการแก้ไขปัญหาจามโจทย์แบบ วางชิ้นงานแบบมากกว่า 1 ชั้น ซึ่งชิ้นงานจะวางซ้อนกันตามวีดีโอที่ 2 วีดีโอที่ 2  แสดงการทำงานตามโจทย์ปัญหาที่ 2

Programming Implementation : Path Manipulation

รูปภาพ
Path Manipulation -------------------------------------------------------------------------------------------------------------------------- >> ในส่วนของการควบคุมหุ่นยนต์  YUMI นั้นทางกลุ่มของผู้จัดทำได้ใช้วิธีติดต่อสื่อสารระหว่าง YUMI กับ Task Planning ด้วยการเชื่อมต่อ Socket โดยมี Main Server สำหรับเป็นสื่อกลางในการติดต่อสื่อสารของ Manipulation, Task Planning, Vision >>>> Main Server  <<<>>> Manipulator Client(YUMIKO_L) <<<>>> YUMI (Server)                                 <<<>>> Manipulator Client(YUMIKO_R) <<<>>> YUMI (Server) -------------------------------------------------------------------------------------------------------------------------- >> โดยที่ในการ Implementation ทางโปรแกรมในส่วนของ Manipulator นั้นมีการใช้ภาษาสำหรับเขียนโปรแกรมอยู่ 2 ภาษาด้วยกัน  >>>> ภาษ...

My team

รูปภาพ

Mechanical Implementation

รูปภาพ
Mechanical Implementation ชุดมือจับชิ้นงานครั้งแรกใช้แผ่นอลูมิเนียมในการทำเป็นตัวครอบแวคคั่ม ติดตั้งหัวยางแวคคั่มและบังคับให้ ABB YUMI จับไว้ปรากฎว่า ไม่สามารถควบคุมการทำงานได้หรือสั่งให้หยิบจับชิ้นงานได้ เนื่องจาก ABB YUMI มีระบบป้องกันความปลอดภัยเรื่องแรงต้านกลับในแต่ละส่วนของข้อต่อ เมื่อควบคุมให้ ABB YUMI ไปหยิบจับชิ้นงานจะมีแรงที่เกิดจากกาจับชุดมือจับส่วนนึงถูกส่งไปยังระบบ ABB YUMI ทำให้ระบบเกิดการเข้าใจผิดว่าการเคลื่อนที่ของ ABB YUMI เกิดการชน ทำให้หยุดการทำงานของระบบได้ และไม่สามารถหยิบจับชิ้นงานได้  ภาพที่ 1        จึงออกแบบชุดมือจับใหม่โดยถอดชุดมือจับของ ABB YUMI ออกและ ติดตั้งชุดมือจับชิ้นงานใหม่โดยใช้แวคคั่มในการดูดจับชิ้นงานและได้ออกแบบให้มีความสูงและตำแหน่งเหมือนกับชุดมือจับของ ABB YUMI ทำให้สามารถควบคุมการทำงานให้ไปหยิบจับชิ้นงาน และ การทำงานระบบต่างๆ ปกติ ภาพที่ 2          การออกแบบโต๊ะที่ใช้ในการประกอบชิ้นงานมีข้อผิดพลาดเรื่องพื้นโต๊ะมีลักษณะโค้ง ทำให้เกิดพื้นที่ต่างระดับขึ้น และไม่สามารถร...