AI Toolsอ่าน 18 นาที

AI เปลี่ยนมือคุณให้เป็นตัวควบคุมอุปกรณ์จริงได้ไหม?

ControlAnything เขียนตัวเชื่อมต่อเมื่อขอท่าทางใหม่ในความเป็นจริงผสม ซินธิไซเซอร์ กิมบอล และการใช้เฮดเซตหนึ่งครั้งแสดงสิ่งที่ต้นแบบยืนยันได้

K
Ken Jo

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

ControlAnything เป็นต้นแบบวิจัยในบทความก่อนตีพิมพ์วันที่ 5 พฤศจิกายน 2026 ของ Bektur Ryskeldiev ซึ่งย้ายงานเชื่อมต่อบางส่วนมาทำเมื่อผู้ใช้ขอ ผู้สวมเลือกเป้าหมายในมุมมอง Meta Quest 3 พูดคำสั่ง แล้วรอให้เอเจนต์บน MacBook เขียนตัวเชื่อมต่อ สิ่งที่ได้อาจเป็นปุ่มเสมือน โปรแกรมอ่านการเคลื่อนไหวของมือ หรือทั้งสองอย่าง โครงการเปิดโค้ดและตัวอย่าง รวมถึงแบบจำลองบนเดสก์ท็อป

ตัวควบคุมที่สร้างให้ซินธิไซเซอร์ OP-1 Field ในวิดีโอบันทึกจากเฮดเซต ControlAnything

ภาพจากการบันทึก Quest 3 ของผู้เขียน Bektur Ryskeldiev แสดงตัวควบคุม OP-1 Field ที่สร้างในช่วงประเมิน Telli.sh ปรับขนาดภาพนิ่ง บทความและเฟรมต้นฉบับ · ข้อความสัญญาอนุญาต MIT ของวิดีโอโครงการ

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

ชี้อุปกรณ์เพื่อเริ่มคำขอ

ต้นแบบประกอบด้วยไคลเอนต์ WebXR เซิร์ฟเวอร์บนแล็ปท็อป เอเจนต์เขียนโค้ด และช่องทางเข้าถึงอุปกรณ์จำนวนหนึ่ง SAM 3.1 ขีดขอบวัตถุที่เป็นไปได้ในมุมมอง การจีบนิ้วเปลี่ยนวัตถุเป็นแท็ก และ Muse Spark ช่วยเสนอว่าวัตถุนั้นคืออะไร บทความถือว่าการระบุนั้นเป็นสมมติฐานที่ต้องเทียบกับหลักฐาน เช่น ชื่อพอร์ต MIDI หรือการตอบสนองอุปกรณ์ แท็กช่วยให้ผู้สวมอ้างถึงเป้าหมาย ส่วนพอร์ต บริดจ์เบราว์เซอร์ หรือตัวส่งการกดแป้นคือสิ่งที่ทำให้แล็ปท็อปสั่งการได้ บทความ ControlAnything ส่วน 3–4

สี่ขั้นแยกการเลือกเป้าหมาย การสร้างตัวเชื่อม การส่งคำสั่ง และการสังเกตผล

จากเป้าหมายที่เลือกสู่ผลที่เห็นหรือได้ยิน ภาพประกอบโดย Telli.sh

มองแท็กเหมือนป้ายกระเป๋า มันช่วยบอกว่าจะขยับอะไร แต่เส้นทางและปลายทางยังต้องยืนยัน การทดลองวันที่ 5 พฤศจิกายนเห็นความต่างนี้ชัด ทุกคำขอส่งไปที่แท็ก MacBook ที่ผู้เขียนสร้างไว้ก่อน เมื่อเป้าหมายจริงคือซินธิไซเซอร์ OP-1 Field หรือกิมบอล DJI Osmo Mobile 4 ผู้เขียนเรียกชื่อในคำขอ การทดลองจึงแสดงการเชื่อมต่ออุปกรณ์ที่ระบบรู้ช่องทางอยู่แล้ว ส่วนการเลือกซินธิไซเซอร์หรือกิมบอลที่ไม่รู้จักยังเปิดให้ทดลองต่อ

ระบบมีข้อมูลช่วยตั้งแต่ก่อนท่าทางแรก โครงการระบุช่องทาง MIDI, Bluetooth และการกดแป้น บันทึกของเอเจนต์มีชื่อพอร์ต OP-1 หมายเลขตัวควบคุมตัวกรอง และวิธีขยับกิมบอลก่อนเริ่มการทดลอง ภาพจากกล้องอาจบอกว่าอุปกรณ์ดูเหมือนซินธิไซเซอร์ แต่ข้อมูลที่มีอยู่ก่อนบอกโปรแกรมว่าจะส่งค่าอะไร ไปที่ไหน และจำกัดให้อยู่ในช่วงที่ต้องการอย่างไร

โมเดลสร้างตัวควบคุมครั้งเดียว โปรแกรมอ่านมือทำงานซ้ำ

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

ความต่างนี้สำคัญกับการควบคุมต่อเนื่อง เช่น เสียงหรือการจัดเฟรมกล้อง ถ้าโมเดลภาษาต้องตัดสินค่าทุกครั้ง ทุกเฟรมจะกลายเป็นการตัดสินใจที่ช้า โปรแกรมเล็กใช้ความสูงมือแทนค่าพารามิเตอร์ จำกัดช่วง และตอบสนองเมื่อปล่อยได้ สำหรับการสั่งเปลี่ยนวิดีโอ โปรแกรมกำหนดท่าที่ตั้งใจทำและรอให้มือกลับสู่ท่ากลางก่อนพร้อมอีกครั้งได้ ตัวอย่างเหล่านี้แสดงทางเลือกในการออกแบบ ยังไม่ได้เป็นค่าพฤติกรรมที่วัดได้จากต้นแบบ

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

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

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

ปุ่มตัวกรอง กิมบอล และเบราว์เซอร์ต้องใช้หลักฐานต่างกัน

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

ตัวอย่างในการทดลองสิ่งที่ตัวควบคุมสร้างได้หลักฐานว่าทำงานสำเร็จ
ตัวกรอง OP-1 Fieldคำขอปุ่มตัวกรองได้ตัวควบคุมสองตัวผ่าน MIDIเอาต์พุตเครื่องดนตรีเปลี่ยนเมื่อป้อนเสียงทดสอบที่ควบคุม หรือมีคนได้ยิน
DJI Osmo Mobile 4โปรแกรมอ่านมือและปุ่มสี่ตัวเข้าถึงกิมบอลผ่านบริดจ์ Bluetoothเห็นการเคลื่อนหรือวัดตำแหน่งได้ในช่วงเดินทางที่กำหนด
Instagram Reels บน Chromeคำขอท่ามือได้โปรแกรมและปุ่มสามตัวผ่านการจำลองกดแป้นแท็บหรือรายการเป้าหมายเปลี่ยน ส่วนหน้าต่างอื่นไม่ถูกแตะ

ระบบบันทึกได้ว่ารับคำสั่งแล้ว แต่การตอบสนองจริงต้องสังเกตแยก

การตอบรับของช่องทางส่งและผลที่วัดได้ตอบคนละคำถาม ภาพประกอบโดย Telli.sh

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

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

การควบคุมแป้นพิมพ์มีปัญหาการระบุเป้าหมายเพิ่ม การกดแป้นอาจสำเร็จในระบบปฏิบัติการแต่ส่งผิดหน้าต่าง การทดสอบเบราว์เซอร์ควรเช็กแท็บที่ใช้งาน ตรวจว่าเนื้อหาที่ตั้งใจเปลี่ยน และยืนยันว่าหน้าต่างอื่นไม่ขยับ ยิ่งอินเทอร์เฟซตัวเชื่อมเป็นนามธรรม นิยามคำว่า “เสร็จแล้ว” ยิ่งสำคัญ

คำสั่งหยุดต้องใช้ได้ก่อนเชื่อใจท่าทาง

ControlAnything มีทางหยุดที่แยกจากโมเดล ผู้สวมหยุดการสร้างได้ ยกฝ่ามือทั้งสองขณะใช้ หรือกดเมนูข้อมือ โฮสต์ปิดตัวเชื่อมและส่งคำสั่งคืนสู่สถานะกลาง เช่น หยุดกิมบอลหรือปล่อยสถานะ MIDI โปรแกรมอ่านมือบนเฮดเซตอยู่ในเวิร์กเกอร์จำกัดสิทธิ์และถูกตรวจกับเฟรมสังเคราะห์ 480 เฟรมก่อนเปิดใช้ ระบบยังจำกัดการกระทำที่ประกาศไว้และช่วงค่าที่โปรแกรมส่งได้ ความปลอดภัยและการหยุดในบทความ

ตัวเชื่อมบนแล็ปท็อปต่างออกไป บทความอธิบายว่าเป็นโปรเซส Node ทั่วไปที่ใช้สิทธิ์ของผู้ใช้แล็ปท็อป ต้นแบบไม่ได้แยกโปรเซสที่สร้างนี้ไว้ในแซนด์บ็อกซ์ SDK จำกัดคำสั่งบนทางที่รองรับได้ แต่ตัวเชื่อมที่รันโค้ดทั่วไปยังมีสิทธิ์ของบัญชีที่เรียกใช้ รุ่นใช้งานจริงที่ไว้ใจได้ควรควบคุมสิทธิ์ตัวเชื่อมที่ระดับระบบปฏิบัติการและเปิดเฉพาะอุปกรณ์ที่คำขอต้องการ

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

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

เริ่มจากเป้าจำลองและจำกัดขอบเขตการทดลอง

README ระบุการจำลองเดสก์ท็อปที่ใช้ Node 22.12 ขึ้นไปและ Chrome หากไม่มีคีย์ API โครงการบอกว่าเซิร์ฟเวอร์เล่นผลตอบกลับที่บันทึกไว้ในโหมดข้อมูลตัวอย่างที่มีป้ายชัดเจน จึงดูตั้งแต่การติดแท็กจนถึงปุ่มที่สร้างได้ก่อนเพิ่มเฮดเซต การเรียกโมเดล หรืออุปกรณ์จริง ขอบเขตของการลองก็ชัด ข้อมูลตัวอย่างแสดงเส้นทางที่รู้แล้วในอินเทอร์เฟซ การประเมินจริงเริ่มเมื่อเปลี่ยนเป้าหมาย ท่าทาง หรือคำตอบของโมเดล คู่มือสาธิต ControlAnything

  1. อ่านคำแนะนำในที่เก็บและรันการจำลองในสภาพแวดล้อมที่ทิ้งได้ เปิดตัวจำลองและตัวเลียนแบบเฮดเซตบนเดสก์ท็อป จากนั้นติดแท็กแล็ปท็อปจำลองที่เปิดซินธิไซเซอร์เสมือน
  2. เลือกคำขอปุ่มหมุนที่เตรียมไว้และยืนยันว่าป้ายโหมดข้อมูลตัวอย่างแสดงอยู่ จดว่าอินเทอร์เฟซแสดงเป้าหมายอย่างไรและปุ่มพร้อมใช้เมื่อไร
  3. หมุนปุ่มเสมือน ยืนยันผลเปลี่ยนที่อุปกรณ์จำลองและทดสอบคำสั่งหยุดตามเอกสาร แยกสิ่งที่เห็นบนหน้าจอออกจากข้อความในล็อกของตัวเชื่อม
  4. เมื่อต้องสาธิตจริงภายหลัง ให้เลือกอุปกรณ์เสี่ยงต่ำที่ย้อนการควบคุมได้ จดผลคาดหวังก่อนส่งคำสั่ง เตรียมทางอิสระสำหรับเห็นหรือได้ยินความเปลี่ยนแปลงและหยุดอุปกรณ์

ในเวิร์กช็อปให้เริ่มจากซินธ์เสมือนที่แสดงผลให้เห็น ก่อนลองฟีเจอร์ที่เปิดบริการจริงหรือส่งแป้นบนโฮสต์ README แยกขั้นตอน Instagram Reels จากตัวอย่างจำลอง หากต้องการเข้าใจการจับคู่ท่ากับค่า เป้าทดสอบในเครื่องที่จำกัดขอบเขตให้ภาพชัดกว่า

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

ตัวควบคุมที่มีประโยชน์สร้างได้และยืนยันผลได้

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

แหล่งข้อมูล


หากต้องการเก็บบันทึกและการตัดสินใจจากการทดลองต้นแบบให้กลับมาค้นได้ สร้างบัญชี Telli.sh.


← กลับไปที่บล็อก