สารบัญ:

หุ่นยนต์ค้นหาและกำจัดระยะไกลที่ควบคุมด้วย Leap Motion: 5 ขั้นตอน
หุ่นยนต์ค้นหาและกำจัดระยะไกลที่ควบคุมด้วย Leap Motion: 5 ขั้นตอน

วีดีโอ: หุ่นยนต์ค้นหาและกำจัดระยะไกลที่ควบคุมด้วย Leap Motion: 5 ขั้นตอน

วีดีโอ: หุ่นยนต์ค้นหาและกำจัดระยะไกลที่ควบคุมด้วย Leap Motion: 5 ขั้นตอน
วีดีโอ: ช้อมเตะกระติก!! บักปรอบ E.P 999 #short 2024, พฤศจิกายน
Anonim
Image
Image

ในการเข้าร่วม Leap Motion #3D Jam ของฉัน ฉันตื่นเต้นที่จะสร้างหุ่นยนต์ค้นหา/กู้ภัยที่ควบคุมด้วยท่าทางไร้สายนี้โดยใช้ Raspberry Pi โปรเจ็กต์นี้สาธิตและให้ตัวอย่างง่ายๆ เกี่ยวกับวิธีการใช้ท่าทางมือ 3 มิติแบบไร้สายเพื่อควบคุมและโต้ตอบกับสิ่งของที่จับต้องได้

เนื่องจากโปรเจ็กต์นี้ใช้เฟรมเวิร์ก WebIOPi IoT ยอดนิยมบน Raspberry Pi จึงสามารถขยายเพื่อควบคุมและเชื่อมต่อโดยทั่วไปกับเซนเซอร์/ฮาร์ดแวร์/อิเล็กทรอนิกส์ใดๆ ที่สามารถเชื่อมต่อกับ Raspberry Pi ได้ง่ายมาก

สถานการณ์ที่เป็นไปได้บางอย่างที่ฉันจินตนาการถึงผู้สร้างคนอื่นๆ อาจใช้โปรเจ็กต์นี้เป็นเฟรมเวิร์กพื้นฐานในการสร้าง:

1. หุ่นยนต์กำจัดระเบิดด้วยท่าทางระยะไกล (ใช้ OWI Arm เป็นต้น)

2. การผ่าตัดทางไกลโดยแพทย์

3. นิทรรศการศิลปะเชิงโต้ตอบที่ควบคุมด้วยท่าทางสัมผัสหรือเนื้อหาเพื่อการศึกษา

4. ความเป็นไปได้ / การบูรณาการอื่น ๆ ที่ไม่มีที่สิ้นสุด (ฉันถูก จำกัด ด้วยจินตนาการของฉัน:))

ขั้นตอนที่ 1: ภาพรวม

การทำความเข้าใจ WebIOPi Framework
การทำความเข้าใจ WebIOPi Framework

โปรเจ็กต์นี้อนุญาตให้ผู้ใช้ควบคุมหุ่นยนต์แบบโต้ตอบโดยใช้ท่าทางมือ 3 มิติผ่าน Leap Motion ที่เชื่อมต่อกับพีซี

Raspberry Pi ออนบอร์ด Robot ยังมีเว็บแคม USB ที่สตรีมวิดีโอสดกลับไปยังผู้ใช้ซึ่งสามารถมองเห็นได้บนเว็บเบราว์เซอร์ ไลบรารี LeapMotion JavaScript ที่ฝังอยู่ในหน้าเว็บนี้จะประมวลผลท่าทางของมือและส่งสัญญาณควบคุมกลับไปที่ Robot ซึ่งจะย้ายตามนั้น

Raspberry Pi บน Robot ได้รับการกำหนดค่าเป็น Hotspot (โหมด AP) โดยใช้ดองเกิล USB WiFi ที่เชื่อมต่ออยู่ ซึ่งช่วยให้พีซี/อุปกรณ์ของเราสามารถเชื่อมต่อโดยตรงกับ Raspberry Pi และควบคุมผ่านหน้าเว็บได้ Raspberry Pi ยังสามารถกำหนดค่าให้ทำงานในโหมดไคลเอนต์ได้ โดยจะเชื่อมต่อแบบไร้สายกับ AP ของเราเตอร์ WiFi ที่พีซี/อุปกรณ์เชื่อมต่ออยู่แล้ว

โปรเจ็กต์นี้ใช้ WebIOPi (https://webiopi.trouch.com/) ซึ่งเป็นเฟรมเวิร์ก IoT ยอดนิยมสำหรับ Raspberry Pi ด้วยการใช้ Weaved IoT Kit (หรือผ่านการส่งต่อพอร์ตบนเราเตอร์) หุ่นยนต์นี้สามารถควบคุมและ/หรือรับข้อมูลจากส่วนใดส่วนหนึ่งของโลกได้จากระยะไกล

ส่วนประกอบต่อไปนี้ใช้สำหรับสร้างโครงการ:

  1. Raspberry Pi B (เข้ากันได้กับ Raspberry Pi B+ 100%)
  2. Logitech USB Webcam (เล็ก 1.3 ล้านพิกเซล)
  3. L293D Motor Driver IC และ Breakout Shield
  4. USB WiFi Dongle สำหรับ Raspberry Pi
  5. USB Power Bank สำหรับ Raspberry Pi
  6. แบตเตอรี่ภายนอก 4V/1.5A สำหรับขับมอเตอร์หุ่นยนต์

ขั้นตอนที่ 2: การสร้างโปรเจ็กต์

การติดตั้ง WebIOPi การเขียนโค้ดแบบกำหนดเอง และการกำหนดค่าเว็บแคม:

คำแนะนำในการติดตั้ง WebIoPi พื้นฐานของเฟรมเวิร์ก และตัวอย่างมากมายมีอยู่ที่หน้าโครงการที่นี่:

เพื่อให้ได้ฟังก์ชัน LeapMotion ที่ฝังอยู่บนหน้าเว็บทริกเกอร์การดำเนินการ GPIO บน Raspberry Pi เราได้ใช้มาโครซึ่งมีรายละเอียดอยู่ที่นี่:

ฉันได้เขียนบันทึกการเริ่มต้นเกี่ยวกับกระบวนการข้างต้นที่แนบมาด้วย

การติดตั้งและกำหนดค่าเว็บแคม

เรากำลังใช้ MJPG-Streamer เพื่อสตรีมฟีดวิดีโอจาก Raspberry Pi กลับไปยังเบราว์เซอร์ผ่านเว็บแคม USB ที่เชื่อมต่อกับ Pi โปรดปฏิบัติตามคำแนะนำในการตั้งค่าและสร้างที่ระบุไว้ที่นี่ https://blog.miguelgrinberg.com/post/how-to-build-… เพื่อให้ MJPG-Streamer ทำงานบน Raspberry Pi

การกำหนดค่า Raspberry Pi เป็น AP/Hotspot

ในการตั้งค่า Raspberry Pi เป็น Hostpot โปรดทำตามคำแนะนำที่ให้ไว้ที่นี่: https://elinux.org/RPI-Wireless-Hotspot ฉันกำหนดค่า IP แบบคงที่ของ Raspberry Pi เป็น 192.168.42.1 ซึ่งเป็นสิ่งที่เราจะพิมพ์ลงในเบราว์เซอร์เมื่อ Pi บูทเข้าสู่โหมด AP

บริการ WebIOPi, MJPG-Streamer และ WiFi hotspot ได้รับการกำหนดค่าให้ทำงานอัตโนมัติเมื่อบู๊ต ซึ่งช่วยให้เราสามารถเปิดเว็บเบราว์เซอร์โดยตรงและเชื่อมต่อกับ Robot หลังจากที่บูทเครื่อง ไฟล์ rc.local ที่มีอยู่ใน repo ใช้เพื่อเรียกใช้เว็บแคมขณะบู๊ต

ขั้นตอนที่ 3: คำแนะนำในการสร้าง/เดินสาย

4 GPIO ของ Raspberry Pi คือ GPIO 9, 11, 23 และ 24 เชื่อมต่อกับ L293D Motor Driver IC ซึ่งขับเคลื่อนมอเตอร์ตามลำดับหลังจากได้รับคำขอมาโครจากหน้าเว็บที่ให้บริการโดยเฟรมเวิร์ก Webiopi ดองเกิล USB WiFi และเว็บแคม USB Logitech เชื่อมต่อกับพอร์ต USB 2 พอร์ตที่มีอยู่ใน Raspberry Pi ธนาคารพลังงาน 5V 4000 Mah จ่ายพลังงานหลักให้กับ Pi ใช้แบตเตอรี่ตะกั่วกรดขนาด 4V 1.5A เพื่อขับเคลื่อนมอเตอร์

หมายเหตุ: เนื่องจากกระแสไฟขาออกสูงสุดของพาวเวอร์แบงค์ที่ฉันใช้คือ 1,000 มิลลิแอมป์ชั่วโมง ฉันจึงต้องใช้แบตเตอรี่ตะกั่วกรดภายนอกเพื่อขับเคลื่อนมอเตอร์ หากคุณมีพาวเวอร์แบงค์ที่ให้ >= 2000Mah คุณสามารถขับมอเตอร์จากราง 5V บน Pi ได้โดยตรง (ฉันไม่แนะนำสิ่งนี้สำหรับมอเตอร์ที่ใช้พลังงานมาก)

ส่วนย่อยที่สำคัญ 3 ส่วนของโปรเจ็กต์ LeapMotion Javascript API, WebIOPi และ MJPG-Streamer และการทำงาน/การตั้งค่าพื้นฐานมีรายละเอียดคร่าวๆ ด้านล่าง

ขั้นตอนที่ 4: ทำความเข้าใจ WebIOPi Framework

ส่วนหน้าที่แสดงบนเบราว์เซอร์เขียนด้วยภาษา HTML (ชื่อไฟล์:index.html) และจาวาสคริปต์ ส่วนส่วนหลังที่ขับเคลื่อน GPIO จะเขียนด้วยภาษา Python (ชื่อไฟล์: script.py) หมายเหตุโดยละเอียดเกี่ยวกับการสร้าง WebApp แบบกำหนดเองตามกรอบงาน WebIOPi จะถูกแนบเป็นบันทึกย่อใน Bitbucket repo

มาโครแบบกำหนดเองที่กำหนดไว้ในสคริปต์ Python สามารถเรียกใช้งานได้จากไฟล์ HTML

เช่น webiopi().callMacro("go_forward"); นี่คือการเรียกแบบกำหนดเองไปยังแมโคร go_forward ที่กำหนดไว้ในสคริปต์ Python ที่จัดการกระบวนการขับเคลื่อนมอเตอร์ทั้งสองในทิศทางไปข้างหน้า

ลำดับชั้นของไดเร็กทอรีของตำแหน่งที่เก็บไฟล์บน Pi จะแสดงอยู่ในภาพที่แนบ

โฟลเดอร์ Robot ประกอบด้วยโฟลเดอร์ย่อยเหล่านี้:

  • html: มี index.html
  • หลาม: มี script.py
  • mjpg-streamer-r63: มีไฟล์บิลด์และสามารถเรียกใช้งานได้เพื่อเรียกใช้ Webcam

MJPG-Streamer: สตรีมวิดีโอสดจากเว็บแคม USB ทำงานบนพอร์ต 8080 ของ Pi โดยค่าเริ่มต้น ในการดูสตรีมด้วยตนเอง ให้ไปที่ RASPBERRYPI_IP:8080 บนเบราว์เซอร์หลังจากเปิดเว็บแคม

รหัส LeapMotion:

ข้อมูลโค้ดจากตัวอย่างที่ให้ไว้ใน LeapMotion SDK ถูกฝังลงในไฟล์ index.html ต้องเพิ่มไฟล์ leap.js ของ LeapMotion ลงในโฟลเดอร์ html ในไดเรกทอรีโครงการบน Raspberry Pi

พารามิเตอร์ palmPosition ที่ส่งโดย LeapMotion ใช้เพื่อกำหนดว่ามาโครใดที่จะทริกเกอร์บน Raspberry Pi

ขั้นตอนที่ 5: เรียกใช้โครงการ

เพียงเปิด Raspberry Pi แล้วรอประมาณหนึ่งนาที คุณจะเห็น hotpsot RaspberryPi ใหม่ปรากฏขึ้น เชื่อมต่อกับฮอตสปอตนี้และเปิดที่อยู่ IP แบบคงที่ในเบราว์เซอร์: 192.168.42.1:8000 8000 เป็นพอร์ตเริ่มต้นของ WebIOPi

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

คุณสามารถแสดงความคิดเห็นได้หากต้องการความช่วยเหลือหรือมีคำถามเกี่ยวกับโครงการ กระโดดอย่างมีความสุข!

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

แนะนำ: