Mündəricat:

Jetson Nano Dörd Dördlü Robot Cisimlərin Alınması Dərsliyi: 4 addım
Jetson Nano Dörd Dördlü Robot Cisimlərin Alınması Dərsliyi: 4 addım

Video: Jetson Nano Dörd Dördlü Robot Cisimlərin Alınması Dərsliyi: 4 addım

Video: Jetson Nano Dörd Dördlü Robot Cisimlərin Alınması Dərsliyi: 4 addım
Video: Mini Pupper 2: Open-Source, ROS2 Robot Kit for Dreamers 2024, Iyun
Anonim
Image
Image

Nvidia Jetson Nano, SoM (Sistemdəki Modul) və istinad daşıyıcısı lövhəsindən ibarət bir geliştirici dəstidir. Əsasən maşın öyrənmə, maşın görmə və video emal tətbiqləri üçün yüksək işləmə gücü tələb edən quraşdırılmış sistemlərin yaradılması üçün nəzərdə tutulmuşdur. Bunun YouTube kanalımda ətraflı araşdırmasını izləyə bilərsiniz.

Nvidia, Jetson Nano'yu mümkün qədər istifadəçi dostu və inkişaf etdirilməsi asan layihələr halına gətirməyə çalışır. Lövhənin işə salınmasından bir neçə gün sonra robotunuzu Jetson Nano ilə necə quracağınıza dair kiçik bir kurs da başladılar. Layihə haqqında ətraflı məlumatı burada tapa bilərsiniz.

Ancaq özüm bir layihə olaraq Jetbot ilə bir neçə problem yaşadım:

1) EPIC mənim üçün kifayət deyildi. Jetson Nano, əla işləmə qabiliyyətinə malik olan və çox sadə bir təkərli robot hazırlayan çox maraqlı bir lövhədir.

2) Avadanlıq seçimi. Jetbot, bahalı/başqa alternativlərlə əvəz edilə bilən bir aparat tələb edir - məsələn, teleoperasiya üçün joystickdən istifadə edirlər. Əyləncəli səslənir, amma robotu idarə etmək üçün bir joystickə ehtiyacım varmı?

Əllərimi Jetson Nanoya aldıqdan dərhal sonra öz layihəm olan Jetspider üzərində işləməyə başladım. Fikir, Jetbot -un əsas demolarını təkrarlamaq idi, lakin daha çox ümumi avadanlıqlarla və daha geniş çeşidli layihələrə tətbiq edilə bilərdi.

Addım 1: Avadanlıqlarınızı hazırlayın

Avadanlığınızı Hazırlayın
Avadanlığınızı Hazırlayın

Bu layihə üçün Zoobotics tərəfindən hazırlanan Zuri quadruped robotunun ilk prototipindən istifadə etdim. Uzun müddət şirkətimizin laboratoriyasında yatdı. Jetson Nano üçün lazerlə kəsilmiş taxta montaj və kamera montajı ilə təchiz etdim. Onların dizaynı özəldir, buna görə də Jetson Nano robotunuz üçün bənzər bir şey yaratmaq istəyirsinizsə, açıq mənbə dizaynı ilə bənzər bir dördlü Meped layihəsinə baxa bilərsiniz. Əslində laboratoriyamızda Zurinin mikro nəzarətçisi (Arduino Mega) üçün heç kimin mənbə kodu olmadığından Meped kodunu ayaq/ayaq ofsetində kiçik düzəlişlərlə istifadə etdim.

Adi USB Raspberry Pi uyğun veb-kamera və Wifi USB dongle istifadə etdim.

Əsas odur ki, mikro nəzarətçi ilə Jetson Nano arasında ardıcıl ünsiyyət üçün Pyserial -dan istifadə edəcəyimizdən, USB seriyalı kabel ilə Jetson Nano ilə əlaqə qura bilsəniz, sisteminiz hər cür mikrokontrolördən istifadə edə bilər. Robotunuz DC mühərrikləri və motor sürücüsü (məsələn, L298P əsaslı) istifadə edirsə, Jetson Nano GPIO ilə motor sürücüsünü birbaşa əlaqələndirmək mümkündür. Təəssüf ki, servoları idarə etmək üçün yalnız başqa bir mikrokontrolördən və ya xüsusi I2C servo sürücüsündən istifadə edə bilərsiniz, çünki Jetson Nano'da GPIO PWM aparatı yoxdur.

Xülasə etmək üçün, USB məlumat kabelindən istifadə edərək Jetson Nano ilə əlaqələndirilə bilən hər hansı bir mikro nəzarətçi ilə bir robot növündən istifadə edə bilərsiniz. Arduino Mega kodunu bu dərs üçün github anbarına yüklədim və Jetson Nano ilə Arduino ilə əlaqə qurmaqla əlaqəli hissə burada:

if (Serial.available ()) {switch (Serial.read ()) {

{

hal '1':

irəli ();

fasilə;

hal '2':

arxa ();

fasilə;

hal '3':

sağa dönün();

fasilə;

hal '4':

turn_left ();

fasilə;

Mövcud məlumatların olub olmadığını yoxlayırıq və əgər varsa onu keçid qutusu idarəetmə quruluşuna ötürürük. Diqqət yetirin ki, serialdakı məlumatlar simvol olaraq gəlir, 1, 2, 3, 4 rəqəmləri ətrafında tək dırnaq işarəsinə diqqət yetirin.

Addım 2: Lazımi Paketləri Qurun

Xoşbəxtlikdən, bizim üçün standart Jetson Nano sistem görüntüsü əvvəlcədən quraşdırılmış bir çox şeyi (məsələn, OpenCV, TensorRT və s.) Gəlir, buna görə də kodu işə salmaq və SSH-ni aktivləşdirmək üçün yalnız bir neçə başqa paket quraşdırmalıyıq.

Qalan bütün işləri uzaqdan etmək istəsəniz SSH -ni işə salmağa başlayaq.

sudo apt yeniləmə

sudo apt install openssh-server

SSH server avtomatik olaraq başlayacaq.

LAN vasitəsilə Ubuntu maşınınıza qoşulmaq üçün aşağıdakı əmri daxil etməlisiniz:

ssh istifadəçi adı@ip_address

Windows maşınınız varsa, SSH müştərisini qurmalısınız, məsələn Putty.

Python Package Manager (pip) və görüntü manipulyasiyası üçün Yastıq quraraq başlayaq.

sudo apt install python3-pip python3-pil

Sonra obyekt aşkarlanmasını həyata keçirmək üçün çərçivəsinin bəzi hissələrinə güvəndiyimiz üçün Jetbot anbarını quraşdıracağıq.

sudo apt install python3-smbus python-pyserial

git klonu

cd jetbot

sudo apt-get install cmake

sudo python3 setup.py quraşdırın

Nəhayət, bu layihə üçün Github depomuzu ev qovluğuna kopyalayın və veb serverdən istifadə edərək robotun uzaqdan idarə edilməsi üçün Flask və digər paketləri quraşdırın.

git klonu

cd

sudo pip3 install -r tələbləri -opencv

Əvvəlcədən hazırlanmış SSD (Tək Şəkil Dedektoru) modelini bu linkdən yükləyin və jetspider_demos qovluğuna yerləşdirin.

İndi getmək yaxşıdır!

Addım 3: Kodu işə salın

Kodu işlədin
Kodu işlədin

Jetspider üçün iki demo hazırladım, birincisi, əvvəllər Banana Pi gəzintisi üçün etdiyimə çox bənzəyən sadə bir teleoprasyondur, ikincisi isə obyekt aşkarlanması üçün TensorRT istifadə edir və hərəkət əmrlərini mikro nəzarətçiyə serial bağlantısı üzərindən göndərir..

Teleoprasiya kodunun çox hissəsi digər dərsliyimdə təsvir edildiyi üçün (yalnız bəzi kiçik çimdiklər düzəltdim, video ötürülməsini tənqid etdim) burada Obyekt Algılama hissəsinə diqqət yetirəcəyəm.

Obyekt izləmə üçün əsas skript jetspider_object_following -də object_following.py, teleoperasiya isə jetspider_teleoperation -da spider_teleop.py -dir.

Skriptdən sonrakı obyekt, lazımi modulların idxalı və dəyişənlərin və sinif nümunələrinin elan edilməsi ilə başlayır. Sonra bu xətt ilə Flask veb serverini işə salırıq

app.run (host = '0.0.0.0', yivli = Doğru)

Veb brauzerimizdə 0.0.0.0 (localhost) ünvanını və ya şəbəkədəki Jetson Nano ünvanını açan kimi (ifconfig əmri ilə yoxlaya bilərik) bu funksiya yerinə yetiriləcək

def indeksi ():

Şablonlar qovluğunda olan veb səhifə şablonunu göstərir. Şablonun içərisində video mənbəyi var, buna görə yükləmə başa çatdıqda, def video_feed (): icra olunacaq, bu da generator funksiyası ilə işə salınmış bir Cavab obyektini qaytarır.

Yerində yeniləmələri həyata keçirməyin sirri (video axınımız üçün veb səhifədəki görüntünün yenilənməsi) çox tərəfli cavab istifadə etməkdir. Çox hissəli cavablar, çox hissəli məzmun növlərindən birini, ardınca isə bir hissə işarəsi ilə ayrılan və hər birinin özünəməxsus məzmun növünə malik olan hissələrindən ibarətdir.

Def gen (): funksiyasında, jeneratör funksiyasını, görüntünü tutan, def execute (img): funksiyasına göndərən və bundan sonra veb səhifəyə göndəriləcək bir şəkil verən sonsuz bir döngədə tətbiq edirik.

def execute (img): funksiya bütün sehrlərin olduğu yerdir, bir şəkil çəkir, OpenCV ilə ölçüsünü dəyişir və Jetbot ObjectDetector sinif nümunəsinə "model" ə ötürür. Algılamaların siyahısını qaytarır və onların ətrafında mavi düzbucaqlılar çəkmək və obyekt aşkarlanan siniflə əlaqədar şərhlər yazmaq üçün OpenCV -dən istifadə edirik. Bundan sonra, maraqlandığımız bir obyektin olub olmadığını yoxlayırıq

Robotunuzun digər obyektləri izləməsini istəyirsinizsə, bu nömrəni (53) CoCo verilənlər bazasından digər nömrəyə dəyişə bilərsiniz, 53 bir alma. Bütün siyahı category.py faylındadır.

Nəhayət, 5 saniyə ərzində heç bir obyekt aşkar edilmədikdə, robotun serialın üzərində dayanması üçün "5" xarakterini ötürürük. Bir obyekt tapılarsa, görüntünün mərkəzindən nə qədər uzaq olduğunu hesablayırıq və buna uyğun hərəkət edirik (mərkəzə yaxındırsa düz gedin (serialda "1" xarakteri), solda sola gedin və s.). Xüsusi quruluşunuz üçün ən yaxşısını təyin etmək üçün bu dəyərlərlə oynaya bilərsiniz!

Addım 4: Son Fikirlər

Son Fikirlər
Son Fikirlər

Flask veb serveri Video axını haqqında daha çox bilmək istəyirsinizsə, bu ObjectFollowing demosunun mahiyyəti budur, Miguel Grinberqin bu möhtəşəm dərsinə baxa bilərsiniz.

Nvidia Jetbot Object Detection notebookuna da buradan baxa bilərsiniz.

Ümid edirəm Jetbot demo tətbiqlərim robotunuzu Jetbot çərçivəsindən istifadə edərək qurmağa kömək edəcək. Maneə qaçmaq demosunu tətbiq etmədim, çünki model seçiminin maneələrdən qaçmaq üçün yaxşı nəticələr verməyəcəyini düşünürəm.

Hər hansı bir sualınız varsa məni LinkedId -ə əlavə edin və YouTube kanalıma abunə olun ki, maşın öyrənmə və robototexnika ilə bağlı daha maraqlı layihələr haqqında xəbərdar olasınız.

Tövsiyə: