Orodha ya maudhui:

Jetson Nano Mafundisho ya Kugundua Kitu cha Roboti Mara nne: Hatua 4
Jetson Nano Mafundisho ya Kugundua Kitu cha Roboti Mara nne: Hatua 4

Video: Jetson Nano Mafundisho ya Kugundua Kitu cha Roboti Mara nne: Hatua 4

Video: Jetson Nano Mafundisho ya Kugundua Kitu cha Roboti Mara nne: Hatua 4
Video: Распознавание номеров авто с YOLOv7 + OCR на Google Colab | Учебник ANPR/ALPR 2023 2024, Juni
Anonim
Image
Image

Nvidia Jetson Nano ni kitanda cha msanidi programu, ambacho kina SoM (Mfumo wa Moduli) na bodi ya wabebaji rejea. Inalenga hasa kuunda mifumo iliyoingia ambayo inahitaji nguvu kubwa ya usindikaji kwa ujifunzaji wa mashine, maono ya mashine na matumizi ya usindikaji wa video. Unaweza kutazama hakiki ya kina juu yake kwenye kituo changu cha YouTube.

Nvidia amekuwa akijaribu kumfanya Jetson Nano kuwa rafiki-rahisi na rahisi kukuza miradi na iwezekanavyo. Walizindua hata kozi kidogo juu ya jinsi ya kujenga roboti yako na Jetson Nano, siku chache baada ya bodi hiyo kuzinduliwa. Unaweza kupata maelezo kuhusu mradi huo hapa.

Walakini mimi mwenyewe nilikuwa na shida chache na Jetbot kama mradi:

1) Haikuwa EPIC ya kutosha kwangu. Jetson Nano ni bodi ya kupendeza sana na ina uwezo mkubwa wa usindikaji na kutengeneza robot rahisi ya magurudumu nayo ilionekana kama kitu… cha kusisimua kufanya.

2) Chaguo la maunzi. Jetbot inahitaji vifaa fulani ambavyo ni ghali / vinaweza kubadilishwa na njia zingine - kwa mfano hutumia fimbo ya furaha kwa mawasiliano. Inaonekana kama ya kufurahisha, lakini je! Ninahitaji kijiti cha kufurahisha kudhibiti roboti?

Kwa hivyo, mara tu baada ya kumkabidhi Jetson Nano nilianza kufanya kazi kwenye mradi wangu mwenyewe, Jetspider. Wazo lilikuwa kuiga demos za msingi ambazo Jetbot alikuwa nazo, lakini na vifaa vya kawaida zaidi na vinavyotumika kwa miradi anuwai.

Hatua ya 1: Andaa vifaa vyako

Andaa vifaa vyako
Andaa vifaa vyako

Kwa mradi huu nilitumia mfano wa mapema wa Zuri robot iliyopangwa mara nne, iliyotengenezwa na Zoobotics. Ilikuwa imelala karibu na maabara ya kampuni yetu kwa muda mrefu. Niliiweka mlima wa mbao uliokatwa na laser kwa Jetson Nano na mlima wa kamera. Ubunifu wao ni wa wamiliki, kwa hivyo ikiwa kwa roboti yako ya Jetson Nano unataka kuunda kitu kama hicho, unaweza kuangalia mradi wa Meped, ambao ni sawa na nne na muundo wa chanzo wazi. Kwa kweli, kwa kuwa hakuna mtu alikuwa na nambari ya chanzo ya Mdhibiti Mdogo wa Zuri (Arduino Mega) katika maabara yetu, nilitumia nambari kutoka Meped na marekebisho kadhaa madogo kwa miguu / miguu iliyowekwa.

Nilitumia web-cam inayofaa ya USB Raspberry Pi na dongle ya Wifi USB.

Jambo kuu ni kwamba kwa kuwa tutatumia Pyserial kwa mawasiliano ya serial kati ya microcontroller na Jetson Nano, mfumo wako kimsingi unaweza kutumia aina yoyote ya microcontroller, maadamu inaweza kuingiliwa na Jetson Nano na kebo ya serial ya USB. Ikiwa roboti yako inatumia motors DC na dereva wa gari (kwa mfano L298P-based) inawezekana kushughulikia moja kwa moja dereva wa gari na Jetson Nano GPIO. Lakini, kwa bahati mbaya, kwa kudhibiti servos unaweza kutumia microcontroller nyingine au dereva wa servo wa I2C, kwani Jetson Nano hana vifaa vya GPIO PWM.

Kwa muhtasari, unaweza kutumia aina ya roboti na microcontroller yoyote ambayo inaweza kushikamana na Jetson Nano kwa kutumia kebo ya data ya USB. Nilipakia nambari ya Arduino Mega kwenye ghala ya github kwa mafunzo haya na sehemu inayofaa kuingiliana na Jetson Nano na Arduino iko hapa:

ikiwa (Serial haipatikani ()) {switch (Serial.read ()) {

{

kesi '1':

mbele ();

kuvunja;

kesi '2':

nyuma ();

kuvunja;

kesi '3':

pinduka_kulia ();

kuvunja;

kesi '4':

pinduka_kushoto ();

kuvunja;

Tunaangalia ikiwa kuna data inapatikana, na ikiwa iko, pitisha kwa muundo wa kudhibiti kesi-ya-kesi. Makini, data kutoka kwa serial huja kama wahusika, angalia alama moja ya nukuu kuzunguka nambari 1, 2, 3, 4.

Hatua ya 2: Sakinisha Vifurushi vya Lazima

Kwa bahati nzuri kwetu, picha chaguo-msingi ya mfumo wa Jetson Nano huja na vitu vingi vilivyowekwa tayari (kama OpenCV, TensorRT, nk), kwa hivyo tunahitaji tu kusanikisha vifurushi vingine kadhaa ili kufanya nambari ifanye kazi na kuwezesha SSH.

Wacha tuanze kwa kuwezesha SSH ikiwa unataka kufanya kazi zingine zote kwa mbali.

sasisho la sudo apt

Sudo apt kufunga opensh-server

Seva ya SSH itaanza kiatomati.

Ili kuungana na mashine yako ya Ubuntu juu ya LAN unahitaji tu kuweka amri ifuatayo:

jina la mtumiaji ssh @ ip_address

Ikiwa una mashine ya Windows, utahitaji kusanikisha mteja wa SSH, kwa mfano Putty.

Wacha tuanze kwa kufunga Meneja wa Kifurushi cha Python (pip) na Mto kwa ujanjaji wa picha.

Sudo apt kufunga python3-pip python3-pil

Kisha tutaweka hazina ya Jetbot, kwa kuwa tunategemea sehemu kadhaa za mfumo wake wa kugundua kitu.

Sudo apt kufunga python3-smbus python-pyserial

clone ya git

cd jetbot

sudo apt-kupata kufunga cmake

sudo python3 setup.py kufunga

Mwishowe onyesha ghala langu la Github kwa mradi huu kwenye folda yako ya nyumbani na usakinishe Flask na vifurushi vingine kwa udhibiti wa kijijini wa roboti ukitumia seva ya wavuti.

clone ya git

cd

sudo pip3 kufunga -r mahitaji-opencv

Pakua mfano wa SSD iliyochaguliwa mapema (Kivinjari cha Risasi Moja) kutoka kwa kiunga hiki na uweke kwenye folda ya jetspider_demos.

Sasa sisi ni vizuri kwenda!

Hatua ya 3: Endesha Msimbo

Endesha Nambari
Endesha Nambari

Nilitengeneza demo mbili kwa Jetspider, ya kwanza ni usafirishaji rahisi, sawa na ile niliyotengeneza mapema kwa Banana Pi rover na ya pili hutumia TensorRT kugundua kitu na hutuma amri za harakati juu ya unganisho la serial kwa mdhibiti mdogo..

Kwa kuwa nambari nyingi ya nambari ya televisheni imeelezewa kwenye mafunzo yangu mengine (nilifanya tu tundu ndogo, kurekebisha usambazaji wa video) hapa nitazingatia sehemu ya Kugundua Kitu.

Hati kuu ya kitu kinachofuata ni object_following.py katika jetspider_object_following, kwani televisheni ni spider_teleop.py katika jetspider_teleoperation.

Kitu kinachofuata script huanza na kuagiza moduli zinazohitajika na kutangaza vigeuzi na visa vya darasa. Kisha tunaanza Flask web server na laini hii

app.run (host = '0.0.0.0', Threaded = Kweli)

Mara tu tutakapofungua anwani ya 0.0.0.0 (localhost) katika kivinjari chetu au anwani ya Jetson Nano kwenye mtandao (inaweza kuangalia na amri ya ifconfig), kazi hii itatekelezwa

faharisi ya def ():

Inatoa templeti ya ukurasa wa wavuti tunayo kwenye folda ya templeti. Template ina chanzo cha video kilichowekwa ndani, kwa hivyo ikimaliza kupakia, def video_feed (): itatekelezwa, ambayo inarudisha kitu cha Jibu ambacho kimeanzishwa na kazi ya jenereta.

Siri ya kutekeleza sasisho za mahali (kusasisha picha kwenye ukurasa wa wavuti kwa mkondo wetu wa video) ni kutumia majibu ya anuwai. Majibu ya Multipart yanajumuisha kichwa ambacho kinajumuisha moja ya aina za yaliyomo anuwai, ikifuatiwa na sehemu, zilizotengwa na alama ya mpaka na kila moja ina sehemu yake maalum aina ya yaliyomo.

Katika def gen (): kazi tunatekeleza kazi ya jenereta kwa kitanzi kisicho na mwisho ambacho kinakamata picha hiyo, na kuituma kutofautisha (img): kazi, ikitoa picha itumwe kwa ukurasa wa wavuti baada ya hapo.

def execute (img): kazi ni pale ambapo uchawi wote hufanyika, inachukua picha, kuibadilisha na OpenCV na kuipitisha kwa mfano wa darasa la Jetbot ObjectDetector "mfano". Inarudisha orodha ya upelelezi na tunatumia OpenCV kuteka mstatili wa bluu karibu nao na kuandika maelezo na darasa lililogunduliwa na kitu. Baada ya hapo tunaangalia ikiwa kuna kitu cha kupendeza kimetambuliwa_kuchunguzwa_katika = [d kwa d katika upelelezi [0] ikiwa d ['lebo'] == 53]

Unaweza kubadilisha nambari hiyo (53) kuwa nambari nyingine kutoka kwa mkusanyiko wa data wa CoCo ikiwa unataka roboti yako ifuate vitu vingine, 53 ni tufaha. Orodha nzima iko katika faili za categories.py.

Mwishowe ikiwa hakuna kitu kilichogunduliwa kwa sekunde 5 tunasambaza herufi "5" kwa roboti kusimama juu ya safu. Ikiwa kitu kinapatikana tunahesabu ni umbali gani kutoka katikati ya picha na kutenda ipasavyo (ikiwa karibu na kituo, nenda moja kwa moja (herufi "1" kwenye serial), ikiwa kushoto, nenda kushoto, nk). Unaweza kucheza na maadili hayo kuamua bora kwa usanidi wako!

Hatua ya 4: Mawazo ya Mwisho

Mawazo ya Mwisho
Mawazo ya Mwisho

Huu ndio muhtasari wa demo ya Kufuatilia, ikiwa unataka kujua zaidi juu ya Flask webserver Video Streaming, unaweza kuangalia mafunzo haya mazuri na Miguel Grinberg.

Unaweza pia kuangalia daftari la kugundua kitu cha Nvidia Jetbot hapa.

Natumai utekelezaji wangu wa demos za Jetbot zitasaidia kujenga roboti yako kwa kutumia mfumo wa Jetbot. Sikutekeleza onyesho la kuzuia kikwazo, kwani nadhani uchaguzi wa mtindo hautatoa matokeo mazuri ya kuzuia kikwazo.

Niongeze kwenye LinkedId ikiwa una swali lolote na ujiandikishe kwenye kituo changu cha YouTube ili upate arifa kuhusu miradi ya kufurahisha zaidi inayojumuisha ujifunzaji wa mashine na roboti.

Ilipendekeza: