
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12


Nvidia Jetson Nano เป็นชุดเครื่องมือสำหรับนักพัฒนา ซึ่งประกอบด้วย SoM (ระบบบนโมดูล) และบอร์ดผู้ให้บริการอ้างอิง โดยมีเป้าหมายหลักในการสร้างระบบฝังตัวที่ต้องการพลังการประมวลผลสูงสำหรับการเรียนรู้ของเครื่อง แมชชีนวิชัน และการประมวลผลวิดีโอ คุณสามารถรับชมรีวิวโดยละเอียดได้ที่ช่อง YouTube ของฉัน
Nvidia พยายามทำให้ Jetson Nano เป็นมิตรกับผู้ใช้และง่ายต่อการพัฒนาโครงการให้มากที่สุด พวกเขายังเปิดตัวหลักสูตรเล็ก ๆ น้อย ๆ เกี่ยวกับวิธีการสร้างหุ่นยนต์ของคุณด้วย Jetson Nano วันหลังจากเปิดตัวบอร์ด คุณสามารถดูรายละเอียดเกี่ยวกับโครงการดังกล่าวได้ที่นี่
อย่างไรก็ตาม ตัวฉันเองมีปัญหาเล็กน้อยกับ Jetbot เป็นโครงการ:
1) มันไม่เพียงพอสำหรับฉัน Jetson Nano เป็นบอร์ดที่น่าสนใจมากที่มีความสามารถในการประมวลผลที่ยอดเยี่ยม และการสร้างหุ่นยนต์ล้อธรรมดาที่ดูเหมือนเป็น … สิ่งที่ทำได้ยาก
2) การเลือกฮาร์ดแวร์ Jetbot ต้องการฮาร์ดแวร์บางอย่างที่มีราคาแพง/สามารถแทนที่ด้วยทางเลือกอื่นได้ เช่น ใช้จอยสติ๊กสำหรับการดำเนินการทางไกล ฟังดูน่าสนุก แต่ฉันจำเป็นต้องมีจอยสติ๊กเพื่อควบคุมหุ่นยนต์หรือไม่?
ดังนั้น ทันทีที่ฉันได้ใช้ Jetson Nano ฉันก็เริ่มทำงานในโครงการของตัวเอง นั่นคือ Jetspider แนวคิดคือการทำซ้ำการสาธิตขั้นพื้นฐานที่ Jetbot มี แต่มีฮาร์ดแวร์ทั่วไปมากกว่าและใช้ได้กับโครงการที่หลากหลายมากขึ้น
ขั้นตอนที่ 1: เตรียมฮาร์ดแวร์ของคุณ

สำหรับโครงการนี้ ฉันใช้ต้นแบบของหุ่นยนต์ Zuri quadruped รุ่นแรกๆ ที่สร้างโดย Zoobotics มันวางอยู่ทั่วไปในห้องแล็บของบริษัทเราเป็นเวลานาน ฉันติดตั้งเมาท์ไม้ที่ตัดด้วยเลเซอร์สำหรับ Jetson Nano และตัวยึดกล้อง การออกแบบของพวกเขาเป็นกรรมสิทธิ์ ดังนั้นหากคุณต้องการสร้างสิ่งที่คล้ายคลึงกันสำหรับหุ่นยนต์ Jetson Nano ของคุณ คุณสามารถดูโครงการ Meped ซึ่งคล้ายกับการออกแบบโอเพ่นซอร์สสี่ส่วน อันที่จริง เนื่องจากไม่มีใครมีซอร์สโค้ดสำหรับไมโครคอนโทรลเลอร์ของ Zuri (Arduino Mega) ในห้องแล็บของเรา ฉันจึงใช้โค้ดจาก Meped โดยมีการปรับค่าขา/เท้าเล็กน้อย
ฉันใช้เว็บแคมที่เข้ากันได้กับ USB Raspberry Pi ปกติและดองเกิล Wifi USB
ประเด็นหลักคือ เนื่องจากเราจะใช้ Pyserial สำหรับการสื่อสารแบบอนุกรมระหว่างไมโครคอนโทรลเลอร์กับ Jetson Nano ระบบของคุณจึงสามารถใช้ไมโครคอนโทรลเลอร์ได้ทุกประเภท ตราบใดที่สามารถเชื่อมต่อกับ Jetson Nano ด้วยสายเคเบิลอนุกรม USB หากหุ่นยนต์ของคุณใช้มอเตอร์กระแสตรงและตัวขับมอเตอร์ (เช่น แบบ L298P) คุณสามารถเชื่อมต่อไดรเวอร์มอเตอร์กับ Jetson Nano GPIO ได้โดยตรง แต่น่าเสียดายที่สำหรับการควบคุมเซอร์โว คุณสามารถใช้ไมโครคอนโทรลเลอร์ตัวอื่นหรือไดรเวอร์เซอร์โว I2C โดยเฉพาะ เนื่องจาก Jetson Nano ไม่มีฮาร์ดแวร์ GPIO PWM
โดยสรุป คุณสามารถใช้ประเภทของหุ่นยนต์กับไมโครคอนโทรลเลอร์ใดๆ ที่สามารถเชื่อมต่อกับ Jetson Nano โดยใช้สายเคเบิลข้อมูล USB ฉันอัปโหลดโค้ดสำหรับ Arduino Mega ไปยังที่เก็บ github สำหรับบทช่วยสอนนี้ และส่วนที่เกี่ยวข้องกับการเชื่อมต่อ Jetson Nano กับ Arduino อยู่ที่นี่:
ถ้า (Serial.available ()) {switch (Serial.read ()) {
{
กรณีที่ '1':
ซึ่งไปข้างหน้า();
หยุดพัก;
กรณีที่ '2':
กลับ();
หยุดพัก;
กรณีที่ '3':
เลี้ยวขวา();
หยุดพัก;
กรณีที่ '4':
เลี้ยวซ้าย();
หยุดพัก;
เราตรวจสอบว่ามีข้อมูลอยู่หรือไม่ และหากมี ให้ส่งต่อไปยังโครงสร้างการควบคุมกรณีสวิตช์ โปรดทราบว่าข้อมูลจากอนุกรมมาเป็นอักขระ สังเกตเครื่องหมายอัญประกาศเดี่ยวรอบตัวเลข 1, 2, 3, 4
ขั้นตอนที่ 2: ติดตั้งแพ็คเกจที่จำเป็น
โชคดีสำหรับเรา อิมเมจระบบเริ่มต้นของ Jetson Nano มาพร้อมกับสิ่งต่างๆ มากมายที่ติดตั้งไว้ล่วงหน้า (เช่น OpenCV, TensorRT เป็นต้น) ดังนั้นเราจึงจำเป็นต้องติดตั้งแพ็คเกจอื่นสองสามตัวเพื่อให้โค้ดใช้งานได้และเปิดใช้งาน SSH
เริ่มต้นด้วยการเปิดใช้งาน SSH ในกรณีที่คุณต้องการทำงานที่เหลือทั้งหมดจากระยะไกล
sudo apt อัปเดต
sudo apt ติดตั้ง openssh-server
เซิร์ฟเวอร์ SSH จะเริ่มทำงานโดยอัตโนมัติ
ในการเชื่อมต่อกับเครื่อง Ubuntu ของคุณผ่าน LAN คุณจะต้องป้อนคำสั่งต่อไปนี้:
ssh username@ip_address
หากคุณมีเครื่อง Windows คุณจะต้องติดตั้งไคลเอ็นต์ SSH เช่น Putty
เริ่มต้นด้วยการติดตั้ง Python Package Manager(pip) และ Pillow สำหรับการปรับแต่งภาพ
sudo apt ติดตั้ง python3-pip python3-pil
จากนั้นเราจะติดตั้งที่เก็บ Jetbot เนื่องจากเราใช้เฟรมเวิร์กบางส่วนในการตรวจจับวัตถุ
sudo apt ติดตั้ง python3-smbus python-pyserial
โคลน git
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py ติดตั้ง
ในที่สุด โคลนที่เก็บ Github ของฉันสำหรับโครงการนี้ไปยังโฟลเดอร์หลักของคุณ และติดตั้ง Flask และแพ็คเกจอื่นๆ สำหรับการควบคุมระยะไกลของหุ่นยนต์โดยใช้เว็บเซิร์ฟเวอร์
โคลน git
ซีดี
sudo pip3 ติดตั้ง -r ข้อกำหนด-opencv
ดาวน์โหลดโมเดล SSD (Single Shot Detector) ที่ผ่านการฝึกอบรมล่วงหน้าจากลิงก์นี้ และวางไว้ในโฟลเดอร์ jetspider_demos
ตอนนี้เราไปได้ดีแล้ว!
ขั้นตอนที่ 3: เรียกใช้รหัส

ฉันทำการสาธิตสองครั้งสำหรับ Jetspider อันแรกเป็นการ teleopration แบบง่าย ๆ คล้ายกับที่ฉันทำก่อนหน้านี้สำหรับ Banana Pi rover และอันที่สองใช้ TensorRT สำหรับการตรวจจับวัตถุและส่งคำสั่งการเคลื่อนไหวผ่านการเชื่อมต่อแบบอนุกรมไปยังไมโครคอนโทรลเลอร์.
เนื่องจากโค้ด teleopration ส่วนใหญ่ได้อธิบายไว้ในบทช่วยสอนอื่นๆ ของฉัน (ฉันได้ทำการปรับแต่งเล็กน้อยเท่านั้น โดยจะลดระดับการส่งสัญญาณวิดีโอใหม่) ที่นี่ ฉันจะเน้นที่ส่วนการตรวจจับวัตถุ
สคริปต์หลักสำหรับวัตถุที่ตามมาคือ object_following.py ใน jetspider_object_following สำหรับ teleoperation คือ spider_teleop.py ใน jetspider_teleoperation
สคริปต์ที่ตามมาของอ็อบเจ็กต์เริ่มต้นด้วยการนำเข้าโมดูลที่จำเป็นและประกาศตัวแปรและอินสแตนซ์ของคลาส จากนั้นเราเริ่มเว็บเซิร์ฟเวอร์ Flask ด้วยบรรทัดนี้
app.run(host='0.0.0.0', threaded=True)
ทันทีที่เราเปิดที่อยู่ 0.0.0.0 (localhost) ในเว็บเบราว์เซอร์ของเราหรือที่อยู่ Jetson Nano บนเครือข่าย (สามารถตรวจสอบได้ด้วยคำสั่ง ifconfig) ฟังก์ชันนี้จะถูกดำเนินการ
ดัชนี def ():
มันแสดงเทมเพลตหน้าเว็บที่เรามีในโฟลเดอร์เทมเพลต เทมเพลตมีแหล่งที่มาของวิดีโอฝังอยู่ ดังนั้นเมื่อโหลดเสร็จแล้ว def video_feed(): จะถูกดำเนินการ ซึ่งจะส่งคืนออบเจกต์ Response ที่เริ่มต้นด้วยฟังก์ชันตัวสร้าง
เคล็ดลับในการใช้การอัปเดตแบบแทนที่ (การอัปเดตรูปภาพในหน้าเว็บสำหรับสตรีมวิดีโอของเรา) คือการใช้การตอบสนองแบบหลายส่วน การตอบสนองแบบหลายส่วนประกอบด้วยส่วนหัวที่มีประเภทเนื้อหาแบบหลายส่วนประเภทใดประเภทหนึ่ง ตามด้วยส่วนต่างๆ คั่นด้วยเครื่องหมายขอบเขต และแต่ละรายการมีประเภทเนื้อหาเฉพาะส่วนของตนเอง
ใน def gen(): ฟังก์ชั่นเราใช้ฟังก์ชันตัวสร้างในลูปอนันต์ซึ่งจับภาพส่งไปที่ def ดำเนินการ (img): ฟังก์ชั่นให้ภาพที่จะส่งไปยังหน้าเว็บหลังจากนั้น
def execute(img): ฟังก์ชั่นเป็นที่ที่เวทย์มนตร์เกิดขึ้น มันใช้รูปภาพ ปรับขนาดด้วย OpenCV และส่งผ่านไปยัง "โมเดล" คลาสอินสแตนซ์ของ Jetbot ObjectDetector ส่งคืนรายการการตรวจจับ และเราใช้ OpenCV เพื่อวาดสี่เหลี่ยมสีน้ำเงินรอบๆ และเขียนคำอธิบายประกอบด้วยคลาสที่ตรวจพบวัตถุ หลังจากนั้นเราตรวจสอบว่ามีวัตถุที่เราสนใจหรือไม่ที่ตรวจพบการจับคู่_detections = [d สำหรับ d ในการตรวจจับ[0] ถ้า d['label'] == 53]
คุณสามารถเปลี่ยนหมายเลขนั้น (53) เป็นหมายเลขอื่นจากชุดข้อมูล CoCo หากคุณต้องการให้หุ่นยนต์ของคุณติดตามวัตถุอื่น 53 คือแอปเปิ้ล รายการทั้งหมดอยู่ในไฟล์ types.py
สุดท้าย หากตรวจไม่พบวัตถุใดๆ เป็นเวลา 5 วินาที เราจะส่งอักขระ "5" เพื่อให้หุ่นยนต์หยุดเหนือซีเรียล หากพบวัตถุ เราจะคำนวณว่าวัตถุนั้นอยู่ห่างจากศูนย์กลางของภาพเท่าใดและดำเนินการตามนั้น (หากอยู่ใกล้ศูนย์กลาง ให้เดินตรงไป (อักขระ "1" ในอนุกรม) หากอยู่ทางซ้าย ให้ไปทางซ้าย เป็นต้น) คุณสามารถเล่นกับค่าเหล่านั้นเพื่อกำหนดสิ่งที่ดีที่สุดสำหรับการตั้งค่าเฉพาะของคุณ!
ขั้นตอนที่ 4: ความคิดสุดท้าย

นี่คือส่วนสำคัญของการสาธิต ObjectFollowing หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการสตรีมวิดีโอเว็บเซิร์ฟเวอร์ของ Flask คุณสามารถดูบทช่วยสอนที่ยอดเยี่ยมนี้โดย Miguel Grinberg
คุณสามารถดูโน้ตบุ๊ก Nvidia Jetbot Object Detection ได้ที่นี่
ฉันหวังว่าการสาธิต Jetbot ของฉันจะช่วยสร้างหุ่นยนต์ของคุณโดยใช้กรอบงาน Jetbot ฉันไม่ได้ใช้การสาธิตการหลีกเลี่ยงสิ่งกีดขวาง เนื่องจากฉันคิดว่าการเลือกแบบจำลองจะไม่ให้ผลลัพธ์การหลีกเลี่ยงสิ่งกีดขวางที่ดี
เพิ่มฉันใน LinkedId หากคุณมีคำถามใดๆ และสมัครรับข้อมูลจากช่อง YouTube ของฉัน เพื่อรับการแจ้งเตือนเกี่ยวกับโครงการที่น่าสนใจอื่นๆ ที่เกี่ยวข้องกับการเรียนรู้ของเครื่องและหุ่นยนต์
แนะนำ:
การติดตั้งซอฟต์แวร์ Arduino (IDE) บน Jetson Nano Developer Kit: 3 ขั้นตอน

ในการติดตั้งซอฟต์แวร์ Arduino (IDE) บน Jetson Nano Developer Kit: คุณจะต้องใช้ Jetson Nano Developer Kit ใช่ไหม การเชื่อมต่ออินเทอร์เน็ตกับบอร์ด jetson ของคุณโดยใช้แจ็คอีเทอร์เน็ตหรือการ์ด wifi ที่ติดตั้งไว้
บทช่วยสอนของ Nvidia Jetson Nano - ดูครั้งแรกด้วย AI & ML: 7 ขั้นตอน

บทช่วยสอนของ Nvidia Jetson Nano | ดูครั้งแรกด้วย AI & ML: ว่าไงพวก! Akarsh จาก CETech วันนี้เราจะมาดู SBC ใหม่จาก Nvidia ซึ่งเป็น Jetson Nano โดย Jetson Nano มุ่งเน้นไปที่เทคนิคปัญญาประดิษฐ์เช่นการจดจำภาพ ฯลฯ เราจะทำการบูทครั้งแรก t
เริ่มต้นใช้งาน RPLIDAR ราคาประหยัดโดยใช้ Jetson Nano: 5 ขั้นตอน

เริ่มต้นใช้งาน RPLIDAR ราคาประหยัดโดยใช้ Jetson Nano: ภาพรวมโดยย่อLight Detection and Ranging (LiDAR) ทำงานในลักษณะเดียวกับที่ใช้เครื่องวัดระยะแบบอัลตราโซนิคพร้อมพัลส์เลเซอร์แทนคลื่นเสียง Yandex, Uber, Waymo และอื่น ๆ กำลังลงทุนอย่างหนักในเทคโนโลยี LiDAR สำหรับการปร
เริ่มต้นใช้งาน NVIDIA Jetson Nano Developer Kit: 6 ขั้นตอน

เริ่มต้นใช้งาน NVIDIA Jetson Nano Developer Kit: ภาพรวมคร่าวๆ ของ Nvidia Jetson NanoJetson Nano Developer Kit เป็นคอมพิวเตอร์บอร์ดเดี่ยวขนาดเล็กที่มีประสิทธิภาพ ซึ่งช่วยให้คุณเรียกใช้เครือข่ายประสาทเทียมหลายตัวพร้อมกันสำหรับแอปพลิเคชันต่างๆ เช่น การจำแนกภาพ การตรวจจับวัตถุ การแบ่งส่วน และคำพูด โปร
แกะกล่อง Jetson Nano และการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับการสาธิต Two Vision: 4 ขั้นตอน

แกะกล่อง Jetson Nano และการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับการสาธิต Two Vision: สรุปอย่างที่คุณทราบ ตอนนี้ Jetson Nano เป็นผลิตภัณฑ์ระดับดาว และสามารถปรับใช้เทคโนโลยีโครงข่ายประสาทเทียมกับระบบฝังตัวได้อย่างกว้างขวาง นี่คือบทความแกะกล่องของรายละเอียดของผลิตภัณฑ์ กระบวนการในการเริ่มต้น และการสาธิตภาพสองภาพ…จำนวนคำ:800