หน้าแรก ดูโปรเจกต์ทั้งหมด
Hard

โปรเจกต์ Santa ที่ตัดสินว่าใครเป็นเด็กดีหรือเด็กดื้อ (ด้วย Nerf Gun)

Santa ใช้ Computer Vision เพื่อตัดสินว่าคนไหนเป็นเด็กดีหรือเด็กดื้อ ถ้าเป็นเด็กดีจะมี Robot โยนลูกอมให้ แต่ถ้าเป็นเด็กดื้อจะโดน Nerf Gun

โปรเจกต์ Santa ที่ตัดสินว่าใครเป็นเด็กดีหรือเด็กดื้อ (ด้วย Nerf Gun)

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

รายการอุปกรณ์และเครื่องมือ

1x Nerf gun
-
1x MG 996R High Torque Servo Motor
🛒 สั่งซื้อ
1x SO-ARM100
-
1x Raspberry Pi 3
-
1x USB Speaker
-
1x Webcam, Logitech® HD Pro
-
1x Ultrasonic Sensor - HC-SR04 (Generic)
🛒 สั่งซื้อ

แอปพลิเคชันและแพลตฟอร์ม

รายละเอียดและวิธีทำ

เมื่อ Computer vision เปิดตัวครั้งแรก ผมทำในสิ่งที่คนปกติทั่วไปเขาทำกัน นั่นคือการสร้าง Santa ขนาดเท่าตัวจริงที่คอยตัดสินคนอื่น มันถูกโปรแกรมให้ตัดสินใครก็ตามหรืออะไรก็ตามที่มันเห็น และระบุว่าเป็นเด็กดี (nice) หรือเด็กดื้อ (naughty) โดยมีบทสนทนาที่สนุกสนานและเข้ากับธีม มันก็สนุกดีนะ แต่ความตื่นเต้นมันหายไปไหนล่ะ? ตัดภาพมาที่ 2 ปีให้หลัง Santa เวอร์ชันนี้สามารถลงมือทำได้จริงๆ แล้ว ถ้า Santa ตัดสินว่าใครเป็นเด็กดี (nice) Robot arm จะเอื้อมมือลงไปในชามขนมแล้วขว้างขนมใส่พวกเขา แต่ถ้าพวกเขาเป็นเด็กดื้อ (naughty) Nerf gun จะเริ่มทำงานและระดมยิงใส่พวกเขา นี่แหละฤดูกาลแห่ง Nerf และความวุ่นวาย!

The Setup

โปรเจกต์นี้ทำงานบน Raspberry Pi และเสียงจะเล่นผ่าน USB speaker โดยใช้ Webcam สำหรับ Computer vision ซึ่งเราจะจับภาพและประมวลผล Frame ในเวลาที่เหมาะสม เราใช้ Ultrasonic sensor เพื่อตรวจจับว่ามีคนเดินผ่านหน้ากล้องหรือไม่ เพื่อที่เราจะได้ไม่ต้องคอยมองหาคนตลอดเวลา และอย่างที่เราจะกล่าวถึงต่อไป โปรเจกต์นี้ใช้ API แบบเสียเงิน ดังนั้นแม้ว่ามันจะมีราคาไม่สูงนัก แต่มันก็สมเหตุสมผล (และประหยัดกว่า) ที่จะไม่ให้มันทำงานทิ้งไว้ตลอดเวลา

Adding the Nerf Gun

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

Candy Throwing Robot

ก่อนหน้านี้ผมเพิ่งสร้าง Robot arm สำหรับขว้างขนมขึ้นมา และตั้งใจจะใช้สำหรับวัน Halloween (ด้วยเหตุผลที่ชัดเจน) แต่สุดท้ายผมกลับไปสร้างป้อมปราการจากกล่องลังขนาดมหึมาแทน ผมเลยนึกได้ว่านี่คือส่วนประกอบที่สมบูรณ์แบบสำหรับ Judgmental Santa โดยเขาจะได้มีอะไรทำเมื่อตัดสินว่าใครบางคนเป็นเด็กดี (nice)

Robot arm รุ่นนี้คือ SO-ARM100 ที่ผมได้มาจาก Seeed มันถูกออกแบบมาให้ใช้โดยมี Leader arm ที่เราขยับไปมาเพื่อให้ Follower arm เลียนแบบท่าทาง แต่ผมใช้วิธีเขียน Code ให้มันเคลื่อนที่ตามชุดคำสั่งเพื่อเอื้อมลงไปในชามขนม ง้างกลับ และเคลื่อนไปข้างหน้าอย่างรวดเร็วพร้อมกับเปิดมือออกเพื่อขว้างขนม ตัวแขนเริ่มมีปัญหาค่อนข้างมากในช่วงนั้น (น่าจะมาจากการสึกหรอ) ผมจึงตัดสินใจปรับเปลี่ยนเส้นทางการเคลื่อนที่ให้ง่ายขึ้น เพื่อให้มันไม่ต้องสู้กับแรงโน้มถ่วงมากเกินไป แม้ว่าจะขว้างขนมได้ไม่ดีเท่าเดิมแต่ก็ยังทำงานได้สำเร็จ

อีกหนึ่งข้อดีคือ การตั้งค่า Robot arm จำเป็นต้องใช้โต๊ะตัวเล็กๆ ซึ่งผมก็ได้ใช้ Duct tape พันติดไว้ วิธีนี้ทำให้แขนกลมีที่อยู่และมีที่วางชามขนม แถมยังเป็นจุดที่เหมาะสำหรับติดตั้ง Ultrasonic sensor ได้อย่างแนบเนียน เพราะถ้าเอาไปวางไว้บนตัวหรือรอบๆ ตัว Santa มันจะดูเกะกะสายตาเกินไป

Code

มี Code แนบมาให้ด้วย ดังนั้นนี่คือรายละเอียดเพิ่มเติมเกี่ยวกับการทำงาน หลังจาก Ultrasonic sensor ตรวจจับคนได้แล้ว เราจะส่ง Frame จาก Webcam ไปยัง OpenAI vision API พร้อมกับ Prompt ที่ละเอียดและชัดเจน ในตอนท้ายของ Prompt เรากำหนดวิธีการจบคำตอบให้ชัดเจนมาก เพื่อให้เราได้รับคำตอบเป็นคำว่า "nice" หรือ "naughty" เท่านั้น เรานำค่าที่ได้ไปรัน Flow ที่เกี่ยวข้อง หากเป็น Flow ของเด็กดี (nice) เราจะมีกระบวนการ Lerobot ที่สั่งให้แขนกลขยับตามลำดับเพื่อขว้างขนม หากเป็น Flow ของเด็กดื้อ (naughty) เราจะสั่งให้ Servo ขยับเพื่อเปิดระบบ Nerf gun จากนั้นสั่งให้ Servo อีกตัวเหนี่ยวไก รอสักครู่ แล้วจึงเลื่อนกลับไปยังตำแหน่งเริ่มต้น แน่นอนว่าสิ่งนี้เกิดขึ้นหลังจากที่ Santa ได้พูดแสดงความคิดเห็นออกมาแล้ว โดย Santa ถูกสั่งมาเป็นพิเศษให้พูดถึงสิ่งที่เขาเห็น เพื่อให้ชัดเจนว่าเขา "มองเห็น" ใครก็ตามหรืออะไรก็ตามที่อยู่ตรงหน้าจริงๆ

The Result

เมื่อนำ AI vision flow ฮาๆ มารวมกับ Nerf gun และ Robot arm ผลที่ได้คือความสนุกสนานในบรรยากาศคริสต์มาสจริงๆ การประกอบเวอร์ชันนี้ได้รับแรงบันดาลใจเป็นพิเศษจากการรวมญาติครั้งใหญ่ในปีนี้ และการที่มี Judgmental Santa มาร่วมงานด้วยก็ทำให้บรรยากาศสนุกสนานมากจริงๆ

หวังว่าคุณจะสนุกกับผลงานสุดเพี้ยนชิ้นนี้ สุขสันต์วันคริสต์มาสครับ

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: a-santa-that-deems-people-naughty-and-nice-with-a-nerf-gun-4dded4
4500 บาท
PromptPay QR Code

ประเมินราคาอัตโนมัติ + Reference Code

อยากได้งานคล้ายโปรเจคนี้ ให้ AI ประเมินราคาก่อน

กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ

คำถามให้ AI ประเมินแม่นขึ้น

หลังส่งฟอร์ม ระบบจะโชว์ Reference Code ให้ copy แล้วกด Add LINE เพื่อคุยต่อ ข้อมูลส่วนตัวจะไม่ถูกส่งเข้า GA4

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...