- OptiGap เป็นระบบที่พัฒนาขึ้นเพื่อระบุว่าเซ็นเซอร์งอที่จุดใด ในงาน soft robotics ซึ่งติดตั้งเซ็นเซอร์แบบเดิมได้ยากเพราะมีโครงสร้างยืดหยุ่น
- ช่องว่างอากาศ ที่สร้างไว้ภายในท่อนำแสงแบบยืดหยุ่นจะเปลี่ยนปริมาณการส่งผ่านแสงตามการงอ และใช้ความแตกต่างนี้เป็นแพตเทิร์นสัญญาณตามตำแหน่ง
- ไอเดียเริ่มจากการทดลองติดฟิลาเมนต์ TPU ใสขนาด 1.75mm สำหรับเครื่องพิมพ์ 3D เข้ากับสายวัดแล้วดัดงอ และตรวจดูการเปลี่ยนแปลงแบบเรียลไทม์ด้วย Raspberry Pi, VL53L0X, ZeroMQ และ Python GUI
- ช่วงแรกใช้ฟิลาเมนต์ TPU 3 เส้นกับตัวคัปเปลอร์ใยแก้วนำแสง 3:1 แต่ต่อมาพัฒนาเป็นโครงสร้างที่เล็กและเรียบง่ายขึ้น โดยใช้ ใยแก้วนำแสง PMMA ขนาด 500 ไมครอน ร่วมกับโฟโตไดโอด, IR LED และ STM32
- ระบบสุดท้ายจำแนกตำแหน่งการงอด้วย ตัวจำแนกแบบ Naive Bayes และการกรอง 2 ขั้นบน STM32 และต่อยอดไปถึงการผสานกับ EneGate, PCB ขนาดเล็ก, การตรวจสอบกับหุ่นยนต์นิ่มจริง และงานเชิงพาณิชย์
บทบาทของ OptiGap
- OptiGap เป็นระบบสำหรับระบุว่า จุดใดเกิดการงอ เมื่อเซ็นเซอร์ที่มีลักษณะคล้ายเชือกถูกดัด
- ความสามารถนี้คือการตรวจจับตำแหน่งการงอ หรือ bend localization
- พื้นที่ใช้งานหลักคือ soft robotics
- soft robotics ทำงานกับโครงสร้างที่ยืดหยุ่นหรือนิ่ม จึงมักมีกรณีที่ใช้ เซ็นเซอร์แบบดั้งเดิม ได้ยาก
- ชื่อ OptiGap มาจากการรวมคำว่า “optical” และ “gap”
- ใช้ ช่องว่างอากาศ ภายในท่อนำแสงแบบยืดหยุ่นเพื่อสร้างแพตเทิร์นโค้ดที่จำเป็นต่อการตรวจจับตำแหน่งการงอ
การทดลองที่เริ่มจากการค้นพบโดยบังเอิญ
- จุดเริ่มต้นคือการทดลองใช้วิธีที่แสงส่งผ่านท่อนำแสง หรือสายเคเบิลนำแสง มาเป็นเซ็นเซอร์ตรวจจับการงอ
- ระหว่างทดลองติดฟิลาเมนต์ TPU ใสขนาด 1.75mm สำหรับเครื่องพิมพ์ 3D เข้ากับสายวัด เมื่อดัดบริเวณที่มีเทปพันสายไฟติดอยู่ พบว่า ปริมาณการส่งผ่านแสงลดลงอย่างมาก
- ตั้งสมมติฐานว่า คราบกาวเหนียวของเทปพันสายไฟทำให้ฟิลาเมนต์ยืด และส่งผลให้การส่งผ่านแสงลดลง
- จากนั้นติดชิ้น TPU ที่ยาวขึ้นเข้ากับสายวัด แล้วดัดหลายตำแหน่งเพื่อสังเกตการเปลี่ยนแปลงของการส่งผ่านแสง
- เพื่อยืนยันผลแบบเรียลไทม์ จึงสร้างระบบวัดและแสดงผลอย่างง่ายขึ้น
- การตรวจสอบนี้กลายเป็นจุดเปลี่ยนสำคัญที่นำไปสู่การพัฒนา OptiGap
เข้ารหัสข้อมูลตำแหน่งด้วยช่องว่างอากาศ
- หากควบคุมตำแหน่งที่แสงอ่อนลงได้ ก็สามารถเข้ารหัสข้อมูลตำแหน่งที่งอไว้ภายในเซ็นเซอร์ได้
- วิธีใช้เทปพันสายไฟไม่เหมาะกับการใช้งานจริง จึงต้องมีโครงสร้างลดทอนแสงที่เสถียรและสม่ำเสมอกว่า
- ทางแก้คือการตัดฟิลาเมนต์แล้วเชื่อมกลับด้วยปลอกซิลิโคน โดยเหลือ ช่องว่างอากาศ ขนาดเล็กไว้ตรงกลาง
- ช่องว่างอากาศใช้ประโยชน์จากการเคลื่อนที่หรือการหมุนสัมพัทธ์ของหน้าตัดปลายท่อนำแสงทั้งสองด้าน
- เมื่อหน้าท่อนำแสงด้านหนึ่งเหลื่อมกับอีกด้าน สัดส่วนของแสงที่ส่งข้ามช่องว่างจะเปลี่ยนไป
- ยิ่งมุมงอมากขึ้น แสงที่หลุดออกจากช่องว่างก็ยิ่งมากขึ้น
- ความเข้มของสัญญาณแสงที่เปลี่ยนไปนี้ถูกเชื่อมโยงกับแพตเทิร์นที่ทราบอยู่แล้วและใช้เป็นสัญญาณเซ็นเซอร์
ช่องว่างอากาศหลายจุดและ Inverse Gray Code
- ขั้นต่อไปคือสร้างช่องว่างอากาศหลายจุดตามแนวท่อนำแสง TPU เส้นเดียว แล้ววัด แพตเทิร์นการลดทอน เมื่อถูกดัด
- ความเข้มแสงลดลงที่ช่องว่างอากาศแต่ละจุด และเมื่อมุมงอเพิ่มขึ้น การลดลงก็ยิ่งชัดเจน
- การทดลองนี้นำไปสู่สมมติฐานสุดท้ายว่า สามารถเข้ารหัสตำแหน่งการงอด้วยแพตเทิร์นช่องว่างอากาศ และถอดรหัสตำแหน่งด้วยตัวจำแนกแบบ Naive Bayes บนไมโครคอนโทรลเลอร์
- แนวคิดของ OptiGap คล้ายกับ absolute linear encoder
- linear encoder อ่านโค้ดตามตำแหน่งเพื่อวัดการเคลื่อนที่เชิงเส้น
- absolute encoder ส่งโค้ดเฉพาะของแต่ละตำแหน่งออกมาเพื่อระบุการกระจัด
- OptiGap เข้ารหัสตำแหน่งสัมบูรณ์ด้วยแพตเทิร์นช่องว่างอากาศที่ไวต่อการงอซึ่งจัดวางอยู่ในท่อนำแสงแบบขนาน และทำงานคล้ายเซ็นเซอร์ใยแก้วนำแสงเส้นเดียว
-
การเลือก Inverse Gray Code
- absolute encoder มักใช้ Gray code
- Gray code เป็นรหัสไบนารีที่ค่าต่อเนื่องสองค่าต่างกันเพียงหนึ่งบิต
- ใน OptiGap ค่าต่อเนื่องควรแตกต่างกันในจำนวนบิตให้มากที่สุดเท่าที่เป็นไปได้ เพื่อให้แยกแยะได้ง่าย
- เพื่อให้ตรงกับข้อกำหนดนี้ จึงใช้ Inverse Gray code
- Inverse Gray code เป็นรหัสไบนารีที่ค่าต่อเนื่องสองค่าต่างกันได้สูงสุด
n-1บิต - ในลำดับโค้ด จะตัดฟิลาเมนต์ที่ตำแหน่งซึ่งมีค่า
1เพื่อสร้างช่องว่างอากาศ - วิธีนี้ขยายไปยังจำนวนบิตใดก็ได้
- ต้นแบบใช้ 3 บิตเพื่อแทน 8 ตำแหน่ง
การสร้างต้นแบบและการย่อขนาด
- ต้นแบบ OptiGap รุ่นแรกทำจาก ฟิลาเมนต์ TPU ใสสำหรับเครื่องพิมพ์ 3D จำนวน 3 เส้น ที่มีแพตเทิร์นช่องว่างอากาศต่างกัน
- ใช้ ตัวคัปเปลอร์ใยแก้วนำแสง 3:1 เชิงพาณิชย์เพื่อรวมแสงจากทั้ง 3 เส้นเข้าสู่สายใยแก้วนำแสงเส้นเดียว
- ต้นแบบนี้เป็นขั้นตอนสุดท้ายในการตรวจสอบสมมติฐานและทฤษฎีการทำงานของ OptiGap
-
ลดขนาดด้วยใยแก้วนำแสง PMMA
- ต้นแบบช่วงแรกมีขนาดใหญ่และกินพื้นที่เพราะขนาดของฟิลาเมนต์เครื่องพิมพ์ 3D
- ใยแก้วนำแสงพลาสติก PMMA ถูกประเมินว่าเป็นทางเลือกที่เล็กและยืดหยุ่นกว่า
- ทดสอบใยแก้วนำแสง PMMA แบบไม่มีแจ็กเก็ตของ Industrial Fiber Optics, Inc. ขนาด 500, 750 และ 1000 ไมครอน เป็นเส้นเซ็นเซอร์
- ทั้งสามชนิดแสดงความยืดหยุ่นเพียงพอ และโดยรวมแล้ว ใยแก้วนำแสงขนาด 500 ไมครอน เหมาะสมที่สุด
-
ลดความซับซ้อนของทรานซีฟเวอร์แสง
- แทนที่จะใช้เซ็นเซอร์ ToF VL53L0X ที่ซับซ้อน เปลี่ยนมาใช้ชุด โฟโตไดโอดและ IR LED
- การเปลี่ยนนี้ลดความซับซ้อนของระบบและเพิ่มความเป็นโมดูลาร์
- การที่สามารถอ่านข้อมูลเซ็นเซอร์ด้วยไมโครคอนโทรลเลอร์ได้ ก็เป็นการปรับปรุงสำคัญเมื่อเทียบกับต้นแบบช่วงแรก
- ต่อมาสร้างระบบเดโมบนพื้นฐานของไมโครคอนโทรลเลอร์ STM32 ร่วมกับโฟโตไดโอดและ IR LED
การจำแนกแบบเรียลไทม์ที่รันบน STM32
- ในขั้นพัฒนาสุดท้าย ได้ผสาน ตัวจำแนกแบบ Naive Bayes เข้ากับไมโครคอนโทรลเลอร์ STM32 เพื่อถอดรหัสตำแหน่งการงอจากข้อมูลเซ็นเซอร์
- เหตุผลที่เลือกตัวจำแนกแบบ Naive Bayes มีสามข้อ
- มีประสิทธิภาพกว่าคำสั่ง if หรือตารางค้นหา
- รองรับข้อมูลใหม่หรือข้อมูลที่ไม่เคยเห็นมาก่อนได้
- มีโอกาสเพิ่มความแม่นยำได้โดยพิจารณาความสัมพันธ์ระหว่างตัวแปรอินพุตหลายตัว
- ตัวจำแนกเป็นโมเดลความน่าจะเป็นที่ใช้ทฤษฎีบทของ Bayes
- ในระบบนี้ คลาสหมายถึง ตำแหน่งการงอ
- ทำงานโดยพิจารณาว่าค่าที่วัดได้เป็นของคลาสใด
- การติดตั้งใช้งานใช้ Arm CMSIS-DSP library
-
การฟิตข้อมูลเซ็นเซอร์
- เพื่อผสานตัวจำแนก ข้อมูลเซ็นเซอร์ของแพตเทิร์นช่องว่างอากาศแต่ละแบบถูก ฟิตเข้ากับการแจกแจงแบบ Gaussian
- พัฒนา Python GUI เพื่อให้ติดป้ายกำกับและฟิตข้อมูลได้รวดเร็ว
- ใช้ GNB ของ scikit-learn หรือ Gaussian Naive Bayes
- ภายหลังปรับปรุง UI ให้รองรับการฟิตข้อมูลที่ทั่วไปและซับซ้อนมากขึ้น
- ความน่าจะเป็นของแต่ละคลาสถูกคำนวณแล้วบันทึกเป็นไฟล์เฮดเดอร์สำหรับใช้บนไมโครคอนโทรลเลอร์
-
การกรองข้อมูลเซ็นเซอร์
- เพื่อเพิ่มความแม่นยำของตัวจำแนก จึงติดตั้ง การกรอง 2 ขั้น บน STM32
- ขั้นแรกคือฟิลเตอร์ค่าเฉลี่ยเคลื่อนที่พื้นฐาน
- ขั้นที่สองคือ Kalman filter
- การกรองใช้เพื่อลดสัญญาณรบกวนเมื่อเทียบกับสัญญาณอินพุต
เดโม การผสานระบบ และขั้นต่อไป
- เดโมของ OptiGap รวมถึงกระบวนการประกอบและการทำงานของระบบเซ็นเซอร์สุดท้าย
- รายการเดโมประกอบด้วยการประกอบบนฟิลาเมนต์ TPU, การลดทอนแสงผ่านเซ็นเซอร์ OptiGap, การฟิตข้อมูลเซ็นเซอร์, การจำแนกเซกเมนต์ด้วยใยแก้วนำแสง PMMA และฟิลาเมนต์ TPU และการทำงานใต้น้ำ
- OptiGap ยังถูกผสานเข้ากับระบบขับเคลื่อนและตรวจวัดแบบโมดูลาร์ชื่อ EneGate
- การผสานนี้รวมถึงการออกแบบ PCB แบบกำหนดเองและการรวมระบบ โดยรายละเอียดเพิ่มเติมอยู่ใน วิทยานิพนธ์ ที่เผยแพร่ออนไลน์
- มีการสร้างต้นแบบ PCB ออปติคัลขนาดเล็กสำหรับเชื่อมต่อกับ PCB ของระบบ EneGate ด้วย
- OptiGap ยังถูกตรวจสอบกับระบบหุ่นยนต์นิ่มจริง
- รายละเอียดทั้งหมดจะกล่าวถึงในบทความ RoboSoft ชื่อ “Embedded Optical Waveguide Sensors for Dynamic Behavior Monitoring in Twisted-Beam Structures”
- งานวิจัยนี้ยังต่อยอดไปสู่งาน เชิงพาณิชย์ ด้วย
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เป็นงานวิจัยที่งดงาม และเอกสารก็ละเอียดมาก
ตอนแรกผมกำลังจะเขียนว่าในเชิงแนวคิดมันคล้ายกับการวัดการสะท้อนในโดเมนเวลามาก แต่ดูเหมือน Cindy Harnett จะเป็นอาจารย์ที่ปรึกษา จึงน่าจะรู้อยู่แล้ว :)
เจ๋งจริง ๆ ชอบแนวคิดที่ทำให้วัสดุมีการรับรู้ตัวเองมากขึ้นหรือตรวจสอบได้มากขึ้น ให้ความรู้สึกไซไฟมาก
งานวิจัยที่ผมทำก่อนงานปัจจุบันก็เฉียดกับสิ่งนี้อยู่นิด ๆ เลยยิ่งดีใจที่เห็นเรื่องนี้ขึ้นหน้าแรก งานของเราคือการเรียนรู้เมทริกซ์การส่งผ่านของไฟเบอร์ด้วยโครงข่ายประสาทเทียมค่าเชิงซ้อน ในสายงานออปติก ก่อนหน้านี้ทำกันด้วยการแพร่กระจายสมการ Maxwell แต่เราใช้โครงสร้างที่เรียบง่ายมาก ซึ่งฟิสิกส์จริง ๆ ลดรูปเหลือเป็นการคูณเมทริกซ์เชิงซ้อนเพียงตัวเดียว และทำผลงานได้ดีกว่า state of the art หลายลำดับขั้น จุดเชื่อมโยงกับงานวิจัยนี้คือเมื่อไฟเบอร์โค้งงอ ก็ต้องเรียนรู้เมทริกซ์ใหม่อีกครั้ง อาจเป็นไปได้ที่จะเรียนรู้การระบุลักษณะแบบมีพารามิเตอร์ เพื่อให้วัดอินพุต/เอาต์พุตไม่กี่ครั้งแล้วสร้างแบบจำลองรูปทรงสไปลน์ของไฟเบอร์ได้ แต่เรายังไปไม่ถึงขั้นนั้น
ถ้าสนใจ บทความวิจัยอยู่ที่นี่
บทความสาย CS: https://papers.nips.cc/paper_files/paper/2018/hash/148510031...
บทความสายฟิสิกส์: https://www.nature.com/articles/s41467-019-10057-8
ยอดเยี่ยมจริง ๆ ถ้าปรับแต่งอีกนิด ดูเหมือนจะผลิตจำนวนมากได้ด้วยความแม่นยำสูงมาก
การใช้งานก็กว้างขวางมาก ถ้าใช้เส้นโค้งเติมเต็มพื้นที่ น่าจะทำเซนเซอร์ 2D/3D ที่ให้การรับสัมผัสแก่หุ่นยนต์ได้อย่างคุ้มต้นทุน ถ้าพันไว้กับสิ่งอย่างท่อยืดหยุ่น ก็น่าจะมีความไวต่อทิศทางและใช้กับการรับรู้ตำแหน่งและการเคลื่อนไหวของร่างกายได้ด้วย ปัจจัยอื่นที่มีผลต่อช่องว่างอากาศ เช่น ความต่างของอุณหภูมิ ก็ดูมีโอกาสสูงที่จะตรวจจับและระบุตำแหน่งได้
ส่วนที่ว่า “ด้วยอาจารย์ที่ปรึกษาที่ยอดเยี่ยม” นั่นแหละคือประเด็นสำคัญ สิ่งนี้คือความแตกต่างระหว่างประสบการณ์ที่เลวร้ายกับประสบการณ์ที่ดี
เป็นบทความที่ยอดเยี่ยม อธิบายชัดเจนมาก และการใช้GIF กับภาพประกอบเพื่อสาธิตแนวคิดก็พอดีมาก
ผมเป็นแค่วิศวกรซอฟต์แวร์ที่มีความเข้าใจด้านนี้จำกัด แต่ก็อ่านเพลินตลอดและได้เรียนรู้เยอะมาก ทำได้ดีมาก และขอแสดงความยินดีกับปริญญาเอกด้วย
ไม่ใช่สิ่งเดียวกันเสียทีเดียว แต่นึกถึง DAS ที่ใช้สายไฟเบอร์ออปติกกับงานตรวจจับเสียงหลายแบบ โดยพื้นฐานแล้วเป็นแนวทางที่เหมือนทางเลือกแทน geophone/hydrophone
มีบทความจำนวนไม่น้อยที่ใช้ไฟเบอร์ใต้ทะเลกับงานเฝ้าระวังหลายอย่าง Luna Innovations ก็ใช้กับการประยุกต์ในอุตสาหกรรมอย่างการตรวจจับความเครียด และเท่าที่รู้ Schlumberger ก็มีสิทธิบัตรการตรวจจับด้วยไฟเบอร์เกี่ยวกับสตรีมเมอร์ลากจูงหลายฉบับ แต่ผมยังไม่เคยเห็นใช้กับหุ่นยนต์นิ่ม
แต่ไอเดียนี้เรียบง่ายในระดับพื้นฐานมาก จนดูเหมือนคนที่ฉลาดกว่าเรากลับมองข้ามไปโดยมาก
เป็นไอเดียที่น่าทึ่งจริง ๆ และเป็นงานที่ยอดเยี่ยม
ดูเหมือนข้อมูลเซนเซอร์จะมีโซนบอดค่อนข้างใหญ่ ลดระยะห่างระหว่างเซนเซอร์ก็น่าจะแก้ได้ง่าย ๆ ไม่ใช่หรือ?
การตรวจจับทิศทางที่โค้งงอจะมีประโยชน์ไหม? น่าจะทำได้ถ้าแบ่งท่อเหมือนโลโก้ Mercedes แล้วใส่ชุดเซนเซอร์ 3 ชุดไว้ในท่อภายนอกเดียว
มีวิธีตรวจจับการโค้งงอหลายจุดไหม? ด้วยโครงแบบปัจจุบัน ดูเหมือนแทบจะเป็นการ OR ค่ากัน ทำให้อ่านค่าผิดได้ อยากรู้ว่าจะมีวิธีแก้ที่ดีไหม
สุดท้ายมันกลายเป็นปัญหาการจับคู่เดลตาสัมพัทธ์ที่เปลี่ยนจากค่าที่อ่านได้ครั้งหนึ่งไปยังครั้งถัดไป อย่างไรก็ตามมีข้อควรระวังคือ ถ้าข้อต่อทุกจุดงอมาก ถึงจุดหนึ่งแสงจะไปไม่ถึงปลายทาง วิธีบรรเทาก็มีอยู่ แต่คอมเมนต์นี้ยาวเกินไปแล้ว
ผมกำลังมองหาเซนเซอร์ที่ตรวจจับได้อย่างแม่นยำว่าไม้กอล์ฟผ่านเหนือเซนเซอร์ใกล้แค่ไหน เร็วแค่ไหน และวงสวิงเป็นอย่างไร
แนวคิดคือทำกอล์ฟลอนช์มอนิเตอร์ที่ไม่ต้องตีลูกจริง เพื่อให้เล่นกอล์ฟจำลองในบ้านได้ เล่นไปพร้อมกับดู Masters ทางทีวีในห้องนั่งเล่น แต่ไม่ทำให้ทีวีพังด้วยลูกกอล์ฟ
สงสัยว่าใช้เซนเซอร์แบบนี้ตัวเดียวหรือหลายตัวรวมกันจะเหมาะไหม
อย่างที่บอกก่อนหน้า ผมว่าการใช้กล้องความเร็วสูงร่วมกับเทคโนโลยีสกัดโครงกระดูกแบบ Kinect น่าจะดีกว่ามาก แค่ PlayStation Eye กับเทคโนโลยีโอเพนซอร์สที่มีอยู่ก็น่าจะทำในโรงรถได้แล้ว
นี่ไม่ใช่เทคโนโลยีเดียวกับใน Nintendo Power Glove รุ่นแรกหรือ? https://www.youtube.com/watch?v=3g8JiGjRQNE
เขาใส่แสงเข้าไปในท่อแล้ววัดแสงนั้นเพื่อทริกเกอร์การกดปุ่ม ดังนั้นเมื่อคุณงอนิ้วหรือมือ ก็จะเกิดการทำงานขึ้น รุ่นถัด ๆ มาจึงเปลี่ยนกลไก
ผมไม่เข้าใจว่าจะเกิดอะไรขึ้นถ้าเซนเซอร์งอที่มากกว่าหนึ่งตำแหน่ง
ตอนต้นมีพูดถึงเซนเซอร์ ToF เลยคิดว่าจะดูการสะท้อนจากการงอแล้ววัดระยะไปถึงจุดนั้นด้วย แต่จริง ๆ ดูเหมือนไม่ใช่ ถ้างอเซนเซอร์สองจุด ดูเหมือนจะได้เพียงผลรวมของการลดทอนแบบลอการิทึมจากการงอทั้งสองจุด สมมติว่า “ความแรง” ของการงอเปลี่ยนค่าการลดทอนได้อย่างต่อเนื่อง ถ้าจะจำแนกชุดการงอใด ๆ สองจุด ก็ดูเหมือนต้องมีจำนวนเส้นใยเท่ากับจำนวนตำแหน่งช่วงว่าง
สงสัยว่าผมอ่านผิดหรือเปล่า หรือจริง ๆ ตั้งใจให้ใช้ในกรณีที่รู้ว่ามีการงอเพียงจุดเดียว
ตามย่อหน้า “Realtime Machine Learning on a Microcontroller” กลไกที่แปลงรูปคลื่นเป็นตำแหน่งจริงดูเหมือนอิงกับแบบจำลองเบย์เซียน