สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
โดย dvillevaldMy Githubติดตามเกี่ยวกับ: ฉันชอบแอปพลิเคชัน AI และการเรียนรู้ของเครื่อง โดยเฉพาะในวิทยาการหุ่นยนต์ ข้อมูลเพิ่มเติมเกี่ยวกับ dvillevald »
สอนหุ่นยนต์ของคุณให้ค้นหาเส้นทางในเขาวงกตของกรวยจราจรโดยใช้กล้องและโมเดลการเรียนรู้เชิงลึกล้ำสมัย
เสบียง
-
NVIDIA JetBot
หน้า Bill of Materials ของ NVIDIA JetBot Wiki แสดงรายการทุกสิ่งที่คุณต้องการเพื่อสร้าง JetBot พร้อมกับการซื้อลิงก์จากผู้ขายยอดนิยม
-
คอมพิวเตอร์ที่มี NVIDIA GPU
จำเป็นต้องฝึกโมเดล
- BlueDot Trading 4” RC Racing Agility Cones, สีส้ม – ชุด 20
ขั้นตอนที่ 1: แรงจูงใจ
ทุกครั้งที่ฉันขับรถในพื้นที่หดตัว ฉันคิดว่าการที่รถที่ขับด้วยตนเองจะขับผ่านกรวยจราจรนั้นท้าทายเพียงใด ปรากฎว่ามันไม่ใช่เรื่องยากสำหรับ JetBot ใหม่ของ NVIDIA - ด้วยภาพเพียงไม่กี่ร้อยภาพ คุณสามารถฝึกโมเดลการเรียนรู้เชิงลึกที่ล้ำสมัยเพื่อสอนหุ่นยนต์ของคุณถึงวิธีค้นหาเส้นทางในเขาวงกตของกรวยจราจรของเล่น โดยใช้กล้องออนบอร์ดเท่านั้นและไม่มีเซ็นเซอร์อื่นๆ
ขั้นตอนที่ 2: NVIDIA JetBot & ภาพรวมโครงการ
JetBot เป็นหุ่นยนต์โอเพ่นซอร์สที่ใช้ NVIDIA Jetson Nano kit คุณสามารถดูคำแนะนำโดยละเอียดเกี่ยวกับวิธีสร้างและตั้งค่าได้ที่นี่
โปรเจ็กต์นี้เป็นตัวอย่างการหลีกเลี่ยง Collision ที่แก้ไขแล้วจาก NVIDIA JetBot Wiki ประกอบด้วยสามขั้นตอนหลัก แต่ละขั้นตอนอธิบายไว้ในสมุดบันทึก Jupyter ที่แยกจากกัน:
- รวบรวมข้อมูลบน JetBot - สมุดบันทึก data_collection_cones.ipynb
- ฝึกโมเดลบนเครื่อง GPU อื่น - โน้ตบุ๊ก train_model_cones.ipynb
- เรียกใช้การสาธิตสดบน JetBot - โน้ตบุ๊ก live_demo_cones.ipynb
คุณสามารถค้นหาสมุดบันทึก Jupyter ทั้งสามเครื่องได้ที่นี่
ขั้นตอนที่ 3: สร้าง JetBot และอัปโหลด Jupyter Notebooks
- สร้างและตั้งค่า JetBot ตามที่อธิบายไว้ที่นี่
- เชื่อมต่อกับหุ่นยนต์ของคุณโดยไปที่ https://:8888ลงชื่อเข้าใช้ด้วยรหัสผ่านเริ่มต้น jetbot
- ปิดโน้ตบุ๊กที่ทำงานอยู่อื่น ๆ ทั้งหมดโดยเลือกเคอร์เนล -> ปิดเครื่องเคอร์เนลทั้งหมด…
- ไปที่ ~/Notebooks/
- สร้างโฟลเดอร์ย่อยใหม่ ~/Notebooks/traffic_cones_driving/
- อัปโหลด data_collection_cones.ipynb และ live_demo_cones.ipynb ไปที่ ~/Notebooks/traffic_cones_driving/
สำคัญ: โน้ตบุ๊ก Jupyter data_collection_cones.ipynb และ live_demo_cones.ipynb ที่อ้างอิงในคำแนะนำนี้ควรรันบน JetBot ในขณะที่ train_model_cones.ipynb - บนคอมพิวเตอร์ที่มี GPU
ดังนั้นเราต้องอัปโหลด data_collection_cones.ipynb และ live_demo_cones.ipynb ไปยัง JetBot และวางไว้ใน ~/Notebooks/traffic_cones_driving/
ขั้นตอนที่ 4: รวบรวมข้อมูลการฝึกบน JetBot
เราจะรวบรวมชุดข้อมูลการจำแนกรูปภาพที่จะใช้เพื่อช่วยให้ JetBot ทำงานบนเขาวงกตของกรวยจราจร JetBot จะเรียนรู้วิธีประมาณความน่าจะเป็นของสี่สถานการณ์ (คลาส):
- ฟรี - เมื่อปลอดภัยที่จะก้าวไปข้างหน้า
- บล็อค - เมื่อมีสิ่งกีดขวางหน้าหุ่นยนต์
- ซ้าย - เมื่อหุ่นยนต์ควรหมุนไปทางซ้าย
- ขวา - เมื่อหุ่นยนต์ควรหมุนไปทางขวา
ในการรวบรวมข้อมูลการฝึกอบรมบน JetBot เราจะใช้สมุดบันทึก Jupyter data_collection_cones.ipynb ซึ่งมีคำแนะนำโดยละเอียดเกี่ยวกับวิธีการดำเนินการ เมื่อต้องการเรียกใช้สมุดบันทึกนี้บน JetBot ให้ทำตามขั้นตอนถัดไป:
- เชื่อมต่อกับหุ่นยนต์ของคุณโดยไปที่ https://:jetbot-ip-address::8888
- ลงชื่อเข้าใช้ด้วยรหัสผ่านเริ่มต้น jetbot
- ปิดโน้ตบุ๊กที่ทำงานอยู่อื่น ๆ ทั้งหมดโดยเลือกเคอร์เนล -> ปิดเครื่องเคอร์เนลทั้งหมด…
- ไปที่ ~/Notebooks/traffic_cones_driving/
- เปิดและทำตาม data_collection_cones.ipynb notebook
ขั้นตอนที่ 5: ฝึก Neural Network บนเครื่อง GPU
ต่อไป เราจะใช้ข้อมูลที่เก็บรวบรวมเพื่อฝึกโมเดลการเรียนรู้เชิงลึก AlexNet อีกครั้งบนเครื่อง GPU (โฮสต์) โดยเรียกใช้ train_model_cones.ipynb
โปรดทราบว่า train_model_cones.ipynb เป็นโน้ตบุ๊ก Jupyter ตัวเดียวในบทช่วยสอนนี้ซึ่งไม่ได้รันบน JetBot
- เชื่อมต่อกับเครื่อง GPU ที่ติดตั้ง PyTorch และเซิร์ฟเวอร์ Jupyter Lab ทำงานอยู่
- อัปโหลดสมุดบันทึก train_model_cones.ipynb ไปยังเครื่องนี้
- อัปโหลดไฟล์ dataset_cones.zip ที่คุณสร้างในสมุดบันทึก data_collection_cones.ipynb และแตกชุดข้อมูลนี้ (หลังจากขั้นตอนนี้ คุณจะเห็นโฟลเดอร์ชื่อ dataset_cones ปรากฏในไฟล์เบราว์เซอร์)
- เปิดและทำตามสมุดบันทึก train_model_cones.ipynb เมื่อสิ้นสุดขั้นตอนนี้ คุณจะสร้างแบบจำลอง - ไฟล์ best_model_cones.pth ซึ่งจะต้องอัปโหลดไปยัง JetBot เพื่อเรียกใช้การสาธิตสด
ขั้นตอนที่ 6: เรียกใช้การสาธิตสดบน JetBot
ขั้นตอนสุดท้ายนี้คือการอัปโหลด model best_model_cones.pth ไปยัง JetBot และเรียกใช้
- ขับเคลื่อนหุ่นยนต์ของคุณจากชุดแบตเตอรี่ USB
- เชื่อมต่อกลับไปยังหุ่นยนต์ของคุณโดยไปที่ https://:jetbot-ip-address::8888
- ลงชื่อเข้าใช้ด้วยรหัสผ่านเริ่มต้น jetbot
- ปิดโน้ตบุ๊กที่ทำงานอยู่อื่น ๆ ทั้งหมดโดยเลือกเคอร์เนล -> ปิดเครื่องเคอร์เนลทั้งหมด…
- ไปที่ ~/Notebooks/traffic_cones_driving
- เปิดและทำตาม live_demo_cones.ipynb notebook
เริ่มด้วยความระมัดระวังและให้ JetBot มีพื้นที่เพียงพอที่จะเคลื่อนที่ไปรอบๆ ลองใช้การกำหนดค่ากรวยที่แตกต่างกันและดูว่าหุ่นยนต์ทำงานได้ดีเพียงใดในสภาพแวดล้อมต่างๆ แสง ฯลฯ ในขณะที่โน้ตบุ๊ก live_demo_cones.ipynb จะอธิบายรายละเอียดทุกขั้นตอนอย่างละเอียด แผนภูมิต่อไปนี้แสดงตรรกะของการเคลื่อนที่ของหุ่นยนต์ตามความน่าจะเป็นที่คาดการณ์โดยรุ่นต่างๆ
โน้ตบุ๊กยังอธิบายวิธีจัดเก็บประวัติการเคลื่อนที่ของหุ่นยนต์ด้วยความน่าจะเป็นอิสระ/ซ้าย/ขวา/บล็อกที่คาดการณ์โดยรุ่น และวิธีการสร้างวิดีโอ FPV (มุมมองบุคคลที่หนึ่ง) สองรายการ (ที่อัตรา 1 เฟรมต่อวินาทีและ 15 เฟรมต่อวินาที) พร้อมระบบตรวจวัดระยะไกลและ ข้อมูลการกระทำของ JetBot สิ่งเหล่านี้มีประโยชน์สำหรับการดีบัก การปรับแต่งคอนโทรลเลอร์ PID และการปรับปรุงโมเดล
ขอให้สนุกและแจ้งให้เราทราบหากคุณมีคำถาม!:-)
รหัสมีอยู่ใน Github