หน้าเว็บ

วันพฤหัสบดีที่ 19 กันยายน พ.ศ. 2556

Picking Robot EP.06 Black or White Object Testing

ตอนที่ 6 ฟังก์ชั่นตรวจสอบสีของกระป๋อง

การติดตั้งเซนเซอร์เช็คสีกระป๋อง

นอกจาก 4 ตัวที่ใช้เคลื่อนที่ตามเส้นแล้ว ยังมีตัวที่ 5 สำหรับเช็คกระป๋องอีกด้วย โดยติดตั้งเซนเซอร์ ZX-03 ไว้ที่ช่อง 22/A4 การอ่านค่าใช้คำสั่ง analog(4)

ทดสอบอ่านค่าสีของกระป๋อง แสดงผล GLCD

ก่อนอื่นต้องทดสอบอ่านค่ากระป๋องกันก่อนว่า ถ้าเอากระป๋องสีดำหรือสีขาวมาวางแล้ว ให้ผลที่แตกต่างกันอย่างไร โดยเขียนโปรแกรมตามนี้


การทดสอบอ่านสีกระป๋อง



ทดลองนำกระป๋องสีขาวมาเสียบเข้าที่ด้านหน้าของ Gripper ทดลองเลื่อนไปเลื่อนมาแล้วดูค่าน้อยที่สุดที่เป็นไปได้ที่จะเกิดขึ้นกับกระป๋องสีขาว บันทึกค่าเอาไว้ จากการทดลองอ่านค่าได้ 160




ทดลองนำกระป๋องสีดำมาเสียบเข้าที่ Gripper บ้าง แล้วอ่านค่ามากที่สุดที่เกิดขึ้นได้กับกระป๋องสีดำ จากการทดลองอ่านค่าได้ 40
นำทั้งสองค่ามาบวกกันหารสอง ก็ได้เป็นค่ากลางสำหรับแยกแยกกระป๋องสีขาวและกระป๋องสีดำ  ดังนั้นค่ากลางที่เกิดขึ้นนี้คือ (160+40 ) /2 = 100 

ลำดับเหตุการณ์กันก่อน

ก่อนจะเขียนฟังก์ชั่นอ่านค่าสี ลองมาลำดับเหตุการณ์การทำงานของหุ่นยนต์กันก่อน
1. หุ่นยนต์เดินออกจากจุดเริ่มต้น 
2. หุ่นยนต์เดินตามเส้น เจอเส้นตัด 3 แยกหรือ 4 แยก ให้เลี้ยวซ้ายหรือขวา หรือตรงไป (ฟังก์ชั่น LLL() RRR() FFF()
3. หุ่นยนต์เจอเส้นตัดทางแยก ตำแหน่งยกกระป๋อง (ฟังก์ชั่น PICK() )
4. หุ่นยนต์เดินตามเส้น เจอเส้นตัด 3 แยกหรือ 4 แยก ให้เลี้ยวซ้ายหรือขวา หรือตรงไป (ฟังก์ชั่น LLL() RRR() FFF()
5. หุ่นยนต์เจอเส้นตัดทางแยก ตำแหน่งวางกระป๋อง (ฟังก์ชั่น PUSH() )

ฟังก์ชั่นอ่านค่าสีจากกระป๋อง

จากลำดับเหตุการณ์ ส่วนที่จะแทรกเพิ่มเข้าไปสำหรับเช็คกระป๋องก็คือหัวข้อที่ 3 หลังจากยกกระป๋องเรียบร้อยแล้ว โดยอ้างอิงจากฟังก์ชั่น PICK() เดิมคือ

ตำแหน่งที่จะวางฟังก์ชั่นเช็คกระป๋อง จะต้องอยู่ก่อนกรอบเส้นประ "ถอยหลังหมุนตัวจนเจอเส้นตัด" ดังนั้นฟังก์ชั่น PICK() จะกลายเป็น

สำหรับฟังก์ชั่น BLACK() และฟังก์ชั่น WHITE()  ก็คือรูปแบบการทำงานตามข้อที่ 4 นั่นเอง โดยจะเดินไปเส้นทางไหน ก็วาดแผนที่เอาได้เลยครับ


ตัวอย่างฟังก์ชั่น WHITE()   







ตัวอย่างฟังก์ชั่น BLACK()


สังเกตุว่า ชุดคำสั่งถอยหลังหมุนตัวจนเจอเส้นตัดจากเดิมที่อยู่ในฟังก์ชั่น PICK() ถูกย้ายมาไว้ที่ฟังก์ชั่น WHITE() กับ BLACK()  เรียบร้อยแล้วครับ 




ไม่มีความคิดเห็น: