Სარჩევი:
- ნაბიჯი 1: მოამზადეთ თქვენი აპარატურა
- ნაბიჯი 2: დააინსტალირეთ საჭირო პაკეტები
- ნაბიჯი 3: გაუშვით კოდი
- ნაბიჯი 4: საბოლოო აზრები
ვიდეო: Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steps
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
Nvidia Jetson Nano არის დეველოპერის ნაკრები, რომელიც შედგება SoM (System on Module) და საცნობარო გადამზიდავი დაფისგან. ის უპირველეს ყოვლისა მიზნად ისახავს ჩამონტაჟებული სისტემების შექმნას, რომლებიც საჭიროებენ მაღალ გადამამუშავებელ ძალას მანქანათმცოდნეობის, მანქანათვალიერების და ვიდეო დამუშავების პროგრამებისთვის. თქვენ შეგიძლიათ ნახოთ დეტალური მიმოხილვა ამის შესახებ ჩემს YouTube არხზე.
Nvidia ცდილობს Jetson Nano მაქსიმალურად მოსახერხებელი და ადვილად განავითაროს პროექტები. მათ დაიწყეს მცირე კურსი იმის შესახებ, თუ როგორ უნდა ავაშენოთ თქვენი რობოტი ჯეტსონ ნანოსთან ერთად, დაფის ამოქმედებიდან რამდენიმე დღის შემდეგ. ამ პროექტის შესახებ დეტალები შეგიძლიათ იხილოთ აქ.
თუმცა მე თვითონ მქონდა რამდენიმე პრობლემა Jetbot– თან, როგორც პროექტი:
1) ეს არ იყო საკმარისი EPIC ჩემთვის. Jetson Nano არის ძალიან საინტერესო დაფა, რომელსაც აქვს დიდი დამუშავების უნარი და აკეთებს უბრალო ბორბლიანი რობოტს, რომელიც უბრალოდ ძალიან დამთრგუნველ საქმეს ჰგავდა.
2) ტექნიკის არჩევანი. Jetbot მოითხოვს ტექნიკას, რომელიც ძვირია/შეიძლება შეიცვალოს სხვა ალტერნატივებით - მაგალითად, ისინი იყენებენ ჯოისტიკს ტელეოპერაციისთვის. გასართობად ჟღერს, მაგრამ მართლა მჭირდება ჯოისტიკი რობოტის გასაკონტროლებლად?
ასე რომ, მაშინვე მას შემდეგ რაც მე მივიღე ხელი ჯეტსონ ნანოზე დავიწყე მუშაობა საკუთარ პროექტზე, Jetspider. იდეა იყო გაემეორებინა ძირითადი დემო Jetbot, მაგრამ უფრო გავრცელებული ტექნიკით და ვრცელდებოდა უფრო ფართო პროექტებზე.
ნაბიჯი 1: მოამზადეთ თქვენი აპარატურა
ამ პროექტისათვის მე გამოვიყენე ზურის ოთხფეხა რობოტის ადრეული პროტოტიპი, რომელიც დამზადებულია Zoobotics– ის მიერ. ის დიდი ხანი იწვა ჩვენი კომპანიის ლაბორატორიაში. მე აღჭურვილია ლაზერულად მოჭრილი ხის მთაზე ჯეტსონ ნანოსთვის და კამერის დასაყენებლად. მათი დიზაინი არის საკუთრების უფლება, ასე რომ, თუ თქვენი Jetson Nano რობოტისთვის გსურთ შექმნათ მსგავსი რამ, შეგიძლიათ გადახედოთ Meped პროექტს, რომელიც მსგავსია ოთხკუთხედის ღია კოდის დიზაინით. სინამდვილეში, ვინაიდან ჩვენს ლაბორატორიაში არავის ქონდა წყაროს კოდი ზურის მიკროკონტროლერისთვის (არდუინო მეგა), მე გამოვიყენე მეპედის კოდი ფეხების/ტერფების ოფსეტური მცირე ცვლილებებით.
მე გამოვიყენე ჩვეულებრივი USB Raspberry Pi თავსებადი ვებ – კამერა და Wifi USB დონგლი.
მთავარი ის არის, რომ ვინაიდან ჩვენ ვიყენებთ Pyserial– ს მიკროკონტროლერსა და Jetson Nano– ს შორის სერიული კომუნიკაციისთვის, თქვენს სისტემას არსებითად შეუძლია გამოიყენოს ნებისმიერი ტიპის მიკროკონტროლერი, რამდენადაც ის შეიძლება Jetson Nano– სთან იყოს დაკავშირებული USB სერიული კაბელით. თუ თქვენი რობოტი იყენებს DC ძრავებს და საავტომობილო დრაივერს (მაგალითად, L298P– ზე დაფუძნებული), შესაძლებელია ძრავის დრაივერის პირდაპირ დაკავშირება Jetson Nano GPIO– სთან. სამწუხაროდ, სერვისების გასაკონტროლებლად შეგიძლიათ გამოიყენოთ მხოლოდ სხვა მიკროკონტროლერი ან გამოყოფილი I2C სერვო დრაივერი, რადგან ჯეტსონ ნანოს არ გააჩნია აპარატურა GPIO PWM.
მოკლედ რომ ვთქვათ, შეგიძლიათ გამოიყენოთ რობოტის ტიპი ნებისმიერი მიკროკონტროლით, რომელიც შეიძლება დაუკავშირდეს Jetson Nano– ს USB მონაცემთა კაბელის გამოყენებით. მე ავტვირთე Arduino Mega– ს კოდი github საცავში ამ გაკვეთილისთვის და ის ნაწილი, რომელიც ეხება Jetson Nano– ს Arduino– სთან დაკავშირებას, აქ არის:
if (Serial.available ()) {switch (Serial.read ()) {
{
საქმე '1':
წინ ();
შესვენება;
საქმე '2':
უკან ();
შესვენება;
საქმე '3':
turn_right ();
შესვენება;
საქმე '4':
turn_left ();
შესვენება;
ჩვენ ვამოწმებთ, არის თუ არა მონაცემები ხელმისაწვდომი, და თუ არის, გადავიტანოთ გადართვის საქმის კონტროლის სტრუქტურაში. მიაქციეთ ყურადღება, რომ სერიალის მონაცემები მოდის სიმბოლოების სახით, შენიშნეთ ერთი ციტატა 1, 2, 3, 4 რიცხვების გარშემო.
ნაბიჯი 2: დააინსტალირეთ საჭირო პაკეტები
ჩვენთვის საბედნიეროდ, ნაგულისხმევი Jetson Nano სისტემის გამოსახულებას გააჩნია ბევრი დაინსტალირებული პერსონალი (როგორიცაა OpenCV, TensorRT და ა.შ.), ამიტომ ჩვენ გვჭირდება მხოლოდ რამდენიმე სხვა პაკეტის დაყენება, რათა კოდმა იმუშაოს და SSH ჩართოს.
დავიწყოთ SSH– ის ჩართვით იმ შემთხვევაში, თუ გსურთ დანარჩენი სამუშაოს დისტანციურად შესრულება.
sudo apt განახლება
sudo apt install installsh-server
SSH სერვერი ავტომატურად დაიწყება.
თქვენს Ubuntu მანქანასთან LAN– ით დასაკავშირებლად საჭიროა მხოლოდ შემდეგი ბრძანების შეყვანა:
ssh მომხმარებლის სახელი@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 დააინსტალირეთ cmake
sudo python3 setup.py ინსტალაცია
საბოლოოდ დააბლოკე ჩემი Github საცავი ამ პროექტისთვის თქვენს სახლის საქაღალდეში და დააინსტალირეთ Flask და სხვა პაკეტები რობოტის დისტანციური მართვისთვის ვებ სერვერის გამოყენებით.
git კლონი
cd
sudo pip3 install -r მოთხოვნები -opencv
ჩამოტვირთეთ წინასწარი SSD მოდელი (ერთი კადრის დეტექტორი) ამ ბმულიდან და განათავსეთ იგი jetspider_demos საქაღალდეში.
ახლა ჩვენ კარგად ვართ წასული!
ნაბიჯი 3: გაუშვით კოდი
მე გავაკეთე ორი დემო Jetspider– ისთვის, პირველი არის მარტივი ტელეოპერაცია, ძალიან ჰგავს იმას, რაც ადრე გავაკეთე Banana Pi როვერზე და მეორე იყენებს TensorRT ობიექტების გამოვლენისთვის და აგზავნის მოძრაობის ბრძანებებს სერიული კავშირისთვის მიკროკონტროლერთან რა
ვინაიდან ტელეოპერაციის კოდის უმეტესი ნაწილი აღწერილია ჩემს სხვა გაკვეთილში (მე მხოლოდ მცირედი შესწორებები გავაკეთე, ვიდეოს გადაცემასთან მიმართებაში) აქ მე გავამახვილებ ყურადღებას ობიექტის გამოვლენის ნაწილზე.
ობიექტის შემდგომი ძირითადი სკრიპტი არის object_following.py jetspider_object_following, ტელეოპერაციისთვის spider_teleop.py jetspider_teleoperation– ში.
სკრიპტის შემდგომი ობიექტი იწყება საჭირო მოდულების იმპორტით და ცვლადების და კლასის მაგალითების გამოცხადებით. შემდეგ ჩვენ ვიწყებთ Flask ვებ სერვერს ამ ხაზით
app.run (მასპინძელი = '0.0.0.0', ძაფიანი = ჭეშმარიტი)
როგორც კი ჩვენ ვხსნით 0.0.0.0 (localhost) მისამართს ჩვენს ბრაუზერში ან Jetson Nano მისამართს ქსელში (შეგიძლიათ შეამოწმოთ ifconfig ბრძანებით), ეს ფუნქცია შესრულდება
def ინდექსი ():
ის ჩვენს ვებ გვერდის შაბლონს თარგების საქაღალდეში აქცევს. შაბლონს აქვს ჩაშენებული ვიდეო წყარო, ასე რომ მას შემდეგ რაც დასრულდება ჩატვირთვა, def video_feed (): შესრულდება, რომელიც აბრუნებს საპასუხო ობიექტს, რომელიც ინიციალიზებულია გენერატორის ფუნქციით.
საიდუმლო განახლების განხორციელების საიდუმლოება (სურათის განახლება ვებ გვერდზე ჩვენი ვიდეო ნაკადისათვის) არის მრავალპარტიული პასუხის გამოყენება. მრავალნაწილიანი პასუხები შედგება სათაურისგან, რომელიც მოიცავს ერთნაირად მრავალნაწილოვან შინაარსს, რასაც მოჰყვება ნაწილები, რომლებიც გამოყოფილია სასაზღვრო მარკერით და თითოეულს აქვს თავისი ნაწილის კონკრეტული შინაარსის ტიპი.
Def gen (): ფუნქციაში ჩვენ განვახორციელებთ გენერატორის ფუნქციას უსასრულო მარყუჟში, რომელიც იღებს სურათს, აგზავნის მას def execute (img): ფუნქციისთვის, რის შედეგადაც ვიღებთ სურათს, რომელიც უნდა გავგზავნოთ ვებ გვერდზე ამის შემდეგ.
def execute (img): ფუნქცია არის იქ, სადაც ხდება მთელი მაგია, იღებს სურათს, ზომავს მას OpenCV– ით და გადასცემს მას Jetbot ObjectDetector კლასის მაგალითზე „მოდელი“. ის ბრუნდება დააბრუნებს აღმოჩენების სიას და ჩვენ ვიყენებთ OpenCV- ს მათ გარშემო ლურჯი ოთხკუთხედების დასახატად და ანოტაციების დასაწერად ობიექტის აღმოჩენილი კლასით. ამის შემდეგ ჩვენ ვამოწმებთ, არის თუ არა ჩვენი ინტერესის ობიექტი გამოვლენილი შესატყვისი_დადგენები = [d for d in detections [0] თუ d ['label'] == 53]
თქვენ შეგიძლიათ შეცვალოთ ეს რიცხვი (53) სხვა რიცხვზე CoCo მონაცემთა ნაკრებიდან, თუ გსურთ თქვენი რობოტი დაიცვას სხვა ობიექტები, 53 არის ვაშლი. მთელი სია არის categories.py ფაილში.
დაბოლოს, თუკი რაიმე ობიექტი 5 წამის განმავლობაში არ არის აღმოჩენილი, ჩვენ რობოტს ვუგზავნით სიმბოლოს "5" სერიალზე. თუ ობიექტი აღმოჩენილია, ჩვენ გამოვთვლით რა მანძილია სურათის ცენტრიდან და ვიმოქმედებთ შესაბამისად (თუ ცენტრთან ახლოს, პირდაპირ მიდიხართ (სერიალში სიმბოლო 1), თუ მარცხნივ, მარცხნივ და ა.შ.). თქვენ შეგიძლიათ ითამაშოთ ამ ღირებულებებით, რათა დაადგინოთ საუკეთესო თქვენი კონკრეტული კონფიგურაციისთვის!
ნაბიჯი 4: საბოლოო აზრები
ეს არის ObjectFollowing დემოს არსი, თუ გსურთ მეტი იცოდეთ Flask webserver ვიდეო ნაკადის შესახებ, შეგიძლიათ გადახედოთ მიგელ გრინბერგის ამ დიდ სამეურვეოს.
თქვენ ასევე შეგიძლიათ ნახოთ Nvidia Jetbot ობიექტის გამოვლენის რვეული აქ.
ვიმედოვნებ, რომ Jetbot– ის დემონების განხორციელება დაეხმარება თქვენი რობოტის შექმნას Jetbot ჩარჩოს გამოყენებით. მე არ განვახორციელე დაბრკოლებების თავიდან აცილების დემო, რადგან ვფიქრობ, რომ მოდელის არჩევანი არ გამოიღებს დაბრკოლების თავიდან აცილების კარგ შედეგს.
დამამატეთ LinkedId– ზე, თუ თქვენ გაქვთ რაიმე შეკითხვა და გამოიწერეთ ჩემი YouTube არხი, რათა მიიღოთ შეტყობინება უფრო საინტერესო პროექტების შესახებ, რომელიც მოიცავს მანქანათმცოდნეობას და რობოტიკას.
გირჩევთ:
Heatpump Error Detection and Alarm ESP8266, Openhab, Telegram, Battery Powered MQTT: 5 Steps
Heatpump Error Detection and Alarm ეს შეცდომა არ არის ადვილად შესამჩნევი, ვინაიდან არ არის წითელი შუქი ან რამე, მხოლოდ მცირე 'P' პატარა LCD ეკრანზე. ამიტომ მე გავაკეთე ეს დეტექტორი შეცდომის გამოსავლენად და
დააინსტალირეთ Arduino Software (IDE) Jetson Nano დეველოპერის ნაკრებზე: 3 ნაბიჯი
დააინსტალირეთ Arduino პროგრამული უზრუნველყოფა (IDE) Jetson Nano დეველოპერის ნაკრებზე: თქვენ დაგჭირდებათ Jetson Nano დეველოპერის ნაკრები? ინტერნეტი თქვენს jetson დაფაზე Ethernet jack- ის ან დაყენებული wifi ბარათის გამოყენებით
Nvidia Jetson Nano Tutorial - პირველი ნახვა AI და ML– ით: 7 ნაბიჯი
Nvidia Jetson Nano Tutorial | პირველი ნახვა AI & ML– ით: ჰეი, რა ხდება ბიჭებო! აქარში აქ CETech– დან. დღეს ჩვენ ვაპირებთ შევხედოთ ახალ SBC– ს Nvidia– დან, რომელიც არის Jetson Nano, Jetson Nano ორიენტირებულია ხელოვნური ინტელექტის ტექნიკაზე, როგორიცაა გამოსახულების ამოცნობა და ა.შ. ჩვენ პირველად ჩავტვირთავთ
დაწყება იაფფასიანი RPLIDAR– ით Jetson Nano– ს გამოყენებით: 5 ნაბიჯი
იაფფასიანი RPLIDAR– ის დაწყება Jetson Nano– ს გამოყენებით: მოკლე მიმოხილვა სინათლის გამოვლენა და დიაპაზონი (LiDAR) მუშაობს ისევე, როგორც ულტრაბგერითი დიაპაზონის ლაზერული პულსი ხმის ტალღების ნაცვლად. Yandex, Uber, Waymo და სხვები დიდ ინვესტიციებს ჩადებენ LiDAR ტექნოლოგიაში თავიანთი ავტონომიური ავტომობილისთვის
Arduino Light Detection Tutorial: 3 ნაბიჯი (სურათებით)
Arduino Light Detection Tutorial: ამ გაკვეთილის დასრულების შემდეგ თქვენ შეისწავლით თუ როგორ შეგიძლიათ აღმოაჩინოთ ცვლილებები თქვენს გარშემო არსებული სინათლის დონეებში. ამ პროექტის ნაწილები უზრუნველყო კუმანმა. თქვენ შეგიძლიათ იპოვოთ ისინი Arduino UNO Starter Kit– ში