HN เปิดตัว: D-POINT — สไตลัสดิจิทัลโอเพนซอร์สที่รองรับ 6 องศาอิสระ
(github.com/Jcparkyn)- D-POINT คือสไตลัสดิจิทัลโอเพนซอร์สที่ใช้การติดตามด้วยกล้องและการวัดแรงเฉื่อย เพื่อมอบอินพุตแบบ 6DoF, latency ต่ำ, การตรวจจับแรงกด และความแม่นยำระดับต่ำกว่ามิลลิเมตร
- ใช้งานได้บนพื้นผิวเรียบแทบทุกที่ และทำงานร่วมกับเว็บแคมสำหรับผู้บริโภคทั่วไป
- ตัวเครื่องประกอบด้วยชิ้นส่วนพิมพ์ 3D สองชิ้น ภายในมีเซ็นเซอร์วัดแรง แบตเตอรี่ Li-ion ที่ชาร์จผ่าน USB-C และบอร์ดพัฒนาแบบ Arduino สำหรับลอจิกและ Bluetooth
- กระบวนการประเมินท่าทางด้วยภาพใช้ OpenCV ตรวจจับ ArUco marker ที่พิมพ์ไว้ 8 จุดซึ่งติดอยู่ด้านหลังของสไตลัส จากนั้นทำ rolling shutter correction, PnP pose estimation และการแปลงพิกัด เพื่อคำนวณท่าทางอ้างอิงกับกล้อง รวมถึงตำแหน่งและทิศทางของปลายปากกาอ้างอิงกับพื้นผิววาดภาพ
- การหลอมรวมข้อมูลแรงเฉื่อยมีโครงสร้างที่รวมข้อมูลจาก accelerometer และ gyroscope เข้ากับค่าประมาณ VPE ด้วย Extended Kalman Filter และใช้ Rauch-Tung-Striebel algorithm เพื่อปรับแก้ค่าประมาณแบบเรียลไทม์
- ใช้อัลกอริทึมอัปเดตการวัดแบบเวลาเป็นลบเพื่อจัดการกับความหน่วงเวลาของเฟรมจากกล้อง และการติดตั้ง EKF ใช้ NumPy กับ Numba
- การวัดแรงเฉื่อยเป็นองค์ประกอบที่ช่วยลด latency ได้มากเมื่อเทียบกับการใช้งานที่ใช้เฉพาะกล้อง และช่วยปรับปรุงความแม่นยำกับอัตราการรายงานเมื่อมีการเคลื่อนไหวรวดเร็ว
- สร้างขึ้นเป็นส่วนหนึ่งของโปรเจกต์วิทยานิพนธ์ระดับปริญญาตรีด้านวิศวกรรมไฟฟ้า โดยโค้ดและไฟล์ออกแบบเปิดเผยสาธารณะแล้ว แต่ไม่ได้ตั้งใจให้เป็นโปรเจกต์ DIY แบบ “plug and play”
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เจ๋งมาก สิ่งที่ผมเคยได้แต่จินตนาการไว้ เขาเอามาทำจริงให้ใช้งานได้แล้ว
ตอนเล่น Elite: Dangerous ผมใช้ HOTAS กับแป้นเหยียบ และเอาแต่คิดอยู่เรื่อย ๆ ว่าน่าจะมีวิธีควบคุมยานอวกาศให้ดีกว่านี้ไหม เพราะยานอวกาศต้องจัดการไม่ใช่แค่ pitch, yaw, roll แต่รวมถึงแรงขับใน 6 ทิศทางด้วย
ผมอยากได้อุปกรณ์ที่พอขยับโมเดลยานอวกาศในมือ ยานใน Elite ก็ขยับเหมือนกันเป๊ะ ๆ และโปรเจกต์ที่ลิงก์ไว้ดูเหมือนจะทำแบบนั้นได้พอดี ส่วนแรงขับน่าจะควบคุมคล้าย ๆ กันด้วยมืออีกข้างได้
วิธีป้อนข้อมูล แบบใหม่ที่ไม่คุ้นเคยแบบนี้น่าทึ่งจริง ๆ และเมื่อมีความสามารถแบบนี้ จินตนาการก็ขยายออกไปได้มาก
ฝีมือจริงคงพอ ๆ เดิม แต่ถ้าโดนยำเละคงตลกกว่านี้
ทฤษฎีคือหัวน่าจะแม่นยำกว่ามือมาก ถ้าเอาสองอย่างมารวมกันก็น่าจะเล็งได้ดีขึ้น ฟังดูเหมือนต้องมองไปทางซ้ายแล้วใช้หางตามองจอ แต่จริง ๆ แล้ว ระบบเมาส์สองตัว พอใช้ได้ทีเดียว ผมอยากลองทำใหม่แบบสมัยใหม่ แต่จะดูเป็นเนิร์ดสุด ๆ ที่เอาแท่งประหลาดมาติดหัว ถึงอย่างนั้นผมก็ชอบสไตล์แบบนั้นนะ
ไอเดียของคุณก็เจ๋งมากเหมือนกัน น่าลองทำดู
https://en.m.wikipedia.org/wiki/SpaceOrb_360
https://www.tindie.com/products/vputz/orbotron-9001-version-...
https://old.reddit.com/r/EliteDangerous/comments/16xi20a/dua...
https://youtu.be/T2-IHgNYaKA
นี่เป็นโปรเจกต์วิทยานิพนธ์จบปริญญาตรีเหรอ! ถ้าไม่ได้คะแนนสูงสุดจากงานนี้ โลกนี้คงไม่มีความยุติธรรมแล้ว
ตอนผมเรียนปริญญาตรี เขาเน้น งานเชิงวิทยาศาสตร์ ดังนั้นความใหม่หรือความนำไปใช้ได้จริงจึงไม่สำคัญต่อคะแนน สิ่งสำคัญคือถ่ายทอดเนื้อหานั้นออกมาเป็นงานเขียนเชิงวิทยาศาสตร์ได้ดีแค่ไหน ผมยังไม่ได้อ่านบทความของโปรเจกต์นี้ เลยตัดสินในแง่คะแนนได้ยาก
เจ๋งมาก เห็นว่าใช้เว็บแคมแล้ว ทำให้สงสัยว่าในอนาคตเว็บแคมทั่วไปในปัจจุบันที่มีมุมมองเดี่ยวราว 78 องศา จะถูกแทนที่ด้วย เว็บแคมฟิชอายสเตอริโอ หรือไม่
เว็บแคมแบบนั้นอาจทำให้เกิดประสบการณ์ผู้ใช้ใหม่ ๆ เช่นเจสเจอร์ร่วมกับการติดตามดวงตา การโต้ตอบกับอุปกรณ์ต่อพ่วงอย่างสไตลัสนี้หรือพวงมาลัยสำหรับเกมแข่งรถ และการประชุมผ่านเว็บแคม 3D 180 องศาที่มีความยืดหยุ่นมากขึ้น รวมถึงความรู้สึกมีตัวตนแบบ VR
รู้สึกเหมือนยุคที่ใช้ พื้นที่ 3D ทั้งหมดหน้าจอคอมพิวเตอร์เป็นวิธีป้อนข้อมูลกำลังมาถึง และการใช้เว็บแคมของบทความต้นทางก็ดูเหมือนเป็นก้าวเล็ก ๆ ไปในทิศทางนั้น
ทุกวันนี้ยังมีคนลังเลกับสิ่งที่เรียกว่าเมาส์รุ่นใหม่อยู่เลย
การเพิ่มการควบคุมด้วยเจสเจอร์มือ/นิ้ว และอุปกรณ์ต่อพ่วงอย่างสไตลัสหรือเมาส์ ดูเหมือนเป็นขั้นต่อไปที่ชัดเจน แต่ดูเหมือนทั้งพวกเขาและใครอื่นก็ไม่ได้ทำแบบนั้น
ดี โดยเฉพาะส่วน การหลอมรวม
นี่คือความคิดที่ผุดขึ้นมาตอนสำรวจ “คีย์บอร์ดแล็ปท็อป… ท่ามือ, สไตลัส 3D, การแตะ” ถ้าเพิ่มปุ่มเข้าไปก็จะกลายเป็นเมาส์ 3D แต่พื้นที่ครอบคลุมของกล้องอาจเป็นปัญหา ตัวอุปกรณ์ส่วนใหญ่ข้างในว่าง และแบตเตอรี่ก็ทำให้บางลงได้อีก ผมยังพอพิมพ์ได้ระดับหนึ่งแม้ถือสไตลัสเรียว ๆ แบบตะเกียบ/แปรงสีฟันอยู่ แม้จะมีมาร์กเกอร์และปลายที่ใหญ่ผิดปกติก็ยังทำได้
ปลายขนาดใหญ่ที่ตัดมาจากลูกปิงปองประดับคริสต์มาสลื่นไถลบนคีย์บอร์ด ThinkPad ได้ค่อนข้างราบรื่น และยังให้พื้นที่สำหรับใส่เซ็นเซอร์แรงที่ไม่เล็กมากกับมาร์กเกอร์ปลายเพิ่มเติมด้วย สายแพริบบอนซิลิโคนแบบสายฝอยบาง ๆ ยืดหยุ่นได้เหมือนเชือก ตอนเริ่มต้นผมเลยผูกสไตลัสกับ Arduino ใช้ไปก่อน
ผมสงสัยว่าถ้าใช้ของอย่าง ตัวคลิก โลหะทรงเว้าเป็นปุ่มหนึ่งปุ่มหรือสามปุ่ม เซ็นเซอร์แรงเฉื่อยจะตีความอย่างไร
การแก้ไข rolling shutter ค่อนข้างเจ๋ง และไม่น่าใช่สิ่งที่ผมจะนึกออกเอง สงสัยว่าเขารู้อยู่ตั้งแต่แรกไหมว่ามันจะเป็นปัญหา หรือเพิ่งสังเกตเห็นหลังจากสร้างระบบส่วนที่เหลือเสร็จแล้ว
โดยปกติมันเล็กมากจนแทบไม่สังเกตเห็น แต่ในบางสถานการณ์มันเด่นชัดจริง ๆ เช่น ตอนหมุนปากกาโดยที่ปลายปากกาอยู่กับที่
สิ่งที่น่าประหลาดใจที่สุดคือวิธีแก้ของผมเป็นเพียงการประมาณความจริงแบบค่อนข้างหยาบ แต่กลับได้ผลดีมาก มีเทคนิคการประมวลผลที่ซับซ้อนกว่านี้มากมาย แต่สุดท้ายก็ไม่จำเป็น
สิ่งหนึ่งที่อยากลองคือ PnP ที่รับรู้ rolling shutter[1] ในทางทฤษฎีสามารถใช้ความบิดเบี้ยวจาก rolling shutter เพื่อประเมินทั้งท่าทางและความเร็วจากภาพเดียวได้พร้อมกัน
[1] https://www-sop.inria.fr/members/Philippe.Martinet/publis/20...
ผมชอบทุกอย่างที่เกี่ยวกับ 6DoF อยู่แล้ว และแม้ฮาร์ดแวร์กับการประมาณท่าทางด้วย computer vision จะทำได้ดี แต่สิ่งที่น่าประทับใจกว่ากลับเป็นพื้นผิวซอฟต์แวร์ที่วาดได้และหมุนได้
น่าสนใจว่ามันอาจใช้กับคอนโทรลอินเทอร์เฟซผู้ใช้แบบกายภาพบางอย่าง เช่น สไลเดอร์นิ้ว ที่ให้เอฟเฟกต์เดียวกันได้ เป็นโปรเจกต์ที่แสดงความสามารถในการแก้ปัญหาได้ดี และดูเหมือนจะทำออกมาได้ถูกทาง
อ้างอิงนิดหนึ่ง คอนโทรลเลอร์ 6DoF ตัวแรกที่ผมใช้ ถ้าไม่นับคอนโทรลเลอร์ WiiMote[1] ที่ดัดแปลงเป็นตัวรับ Bluetooth สำหรับ IR LED ก็คือ Logitech MX Air[2] ที่มาก่อนยุคของมัน
[1] https://web.cs.ucdavis.edu/~okreylos/ResDev/Wiimote/MainPage...
[2] https://www.cnet.com/reviews/logitech-mx-air-review/
เป็นโปรเจกต์ที่เจ๋งมาก เอกสารก็มีประโยชน์ และเป็นตัวอย่างใช้งานจริงที่ดีของการใช้ Kalman filter
เจ๋งจริง ๆ และตรงกับสิ่งที่ผมใฝ่ฝันไว้พอดี
หลังจากบริษัทเปลี่ยนไปทำงานทางไกลเต็มรูปแบบ ผมก็ยังคิดถึง เซสชันไวท์บอร์ด อยู่เสมอ วิธีที่ดีที่สุดที่ผมนึกออกคือเปิดเว็บแอปไวท์บอร์ดร่วมกันทั้งบน iPad เก่า ๆ กับเบราว์เซอร์เดสก์ท็อป จากนั้นแชร์หน้าจอจากเดสก์ท็อป แล้วใช้สไตลัสราคาถูกวาดบน iPad
มันก็ใช้ได้ค่อนข้างดี แต่ iPad ของผมเก่าเกินไปจนช้า และการเปลี่ยนเครื่องก็เป็นภาระ ถ้าใช้เว็บแคมทั่วไปกับสไตลัสที่เทคโนโลยีค่อนข้างต่ำได้ก็น่าจะดีกว่ามาก และอาจไม่ต้องพึ่งอุปกรณ์ภายนอกเลยด้วยซ้ำ
[1] https://wacomstore.ca/product/one-by-wacom-small/
ยอดเยี่ยม ชอบที่ไม่ต้องผูกติดกับแบรนด์ใดแบรนด์หนึ่ง เหมือนการซื้อ คีย์บอร์ดแมคคานิคอล
เจ๋งมาก
น่าจะมีประโยชน์กับ หุ่นยนต์ หรือ VR ด้วย กล้องตัวเดียวจะใช้ติดตามมือได้ด้วยไหมนะ?
คำถาม: ใช้ไจโร+มาตรความเร่งติดตามแรงกดได้ไหม? อย่างน้อยก็ระดับ “แตะ” ได้หรือเปล่า?
อีกคำถาม: ต้นทุนเท่าไร โดยเฉพาะ เซ็นเซอร์แรงกด
ในทางทฤษฎี ถ้ามีการประมาณท่าทางที่แม่นพอและปลายปากกาที่ยืดหยุ่นก็อาจทำได้ แต่ด้วยระดับความแม่นยำที่ผมได้มา มันยังไม่สมจริง
เซ็นเซอร์แรงกดผมซื้อมาในราคาประมาณ 20 ดอลลาร์ออสเตรเลีย แต่ในสหรัฐฯ หาได้ถูกกว่ามาก ประมาณ 5 ดอลลาร์(https://www.arrow.com/en/products/hsfpar003a/alps-electric) อย่างไรก็ตามมันเป็นชิ้นส่วนที่ค่อนข้างเฉพาะทาง จึงมีร้านที่ขายไม่มาก PCB แบบสั่งทำเพิ่มอีก 10 ดอลลาร์ออสเตรเลีย และ Arduino ประมาณ 20 ดอลลาร์ รายการชิ้นส่วนทั้งหมดอยู่ที่ https://github.com/Jcparkyn/dpoint/blob/main/setup-guide.md