Բովանդակություն:
- Քայլ 1: Պատրաստեք ձեր սարքավորումները
- Քայլ 2: Տեղադրեք անհրաժեշտ փաթեթները
- Քայլ 3: Գործարկեք ծածկագիրը
- Քայլ 4: Վերջնական մտքեր
Video: Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steps
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Nvidia Jetson Nano- ն մշակողի հավաքածու է, որը բաղկացած է SoM- ից (System on Module) և տեղեկատու կրիչի տախտակից: Այն հիմնականում ուղղված է ներկառուցված համակարգերի ստեղծմանը, որոնք պահանջում են բարձր վերամշակման հզորություն մեքենայական ուսուցման, մեքենայական տեսողության և տեսամշակման ծրագրերի համար: Դրա մանրամասն ակնարկը կարող եք դիտել իմ YouTube ալիքում:
Nvidia- ն փորձում է Jetson Nano- ն դարձնել հնարավորինս օգտագործողի համար հարմարավետ և հեշտ նախագծեր: Նրանք նույնիսկ սկսեցին մի փոքրիկ դասընթաց այն մասին, թե ինչպես կարելի է կառուցել ձեր ռոբոտը etsեթսոն Նանոյի հետ, տախտակի գործարկումից օրեր անց: Այդ նախագծի մանրամասներին կարող եք ծանոթանալ այստեղ:
Այնուամենայնիվ, ես ինքս մի քանի խնդիր ունեի Jetbot- ի հետ որպես նախագիծ.
1) Դա ինձ համար բավական էր EPIC- ը: Jetson Nano- ն շատ հետաքրքիր տախտակ է ՝ մշակման մեծ հնարավորություններով և դրանով պատրաստելով պարզ անիվային ռոբոտ, այն կարծես շատ… ճնշող անելիք էր:
2) Սարքավորման ընտրություն: Jetbot- ը պահանջում է որոշ սարքավորումներ, որոնք թանկ են/կարող են փոխարինվել այլընտրանքներով, օրինակ ՝ նրանք հեռահաղորդակցության համար օգտագործում են ջոյստիկ: Կարծես զվարճալի է, բայց արդյո՞ք ինձ իսկապես անհրաժեշտ է «ռոքոտ» կառավարելու համար «ջոյսթիկ»:
Այսպիսով, Jetson Nano- ի ձեռքից անմիջապես հետո ես սկսեցի աշխատել իմ սեփական նախագծի վրա `Jetspider: Գաղափարն էր կրկնել Jetbot- ի ունեցած հիմնական ցուցադրումները, բայց ավելի սովորական սարքավորումներով և կիրառելի ավելի մեծ բազմազան նախագծերի համար:
Քայլ 1: Պատրաստեք ձեր սարքավորումները
Այս նախագծի համար ես օգտագործեցի uriուրի չորքոտանի ռոբոտի նախատիպը, որը պատրաստել էր Zoobotics- ը: Այն երկար ժամանակ պառկած էր մեր ընկերության լաբորատորիայում: Ես այն հագեցրեցի Jetson Nano- ի համար լազերային կտրված փայտե հենարանով և տեսախցիկի ամրացմամբ: Նրանց դիզայնը սեփականություն է, այնպես որ, եթե ձեր Jetson Nano ռոբոտի համար ցանկանում եք նման բան ստեղծել, կարող եք դիտել Meped նախագիծը, որը բաց կոդով նման քառապատիկ է: Իրականում, քանի որ մեր լաբորատորիայում ոչ ոք չուներ uriուրիի միկրոկառավարիչի (Arduino Mega) աղբյուրի կոդը, ես օգտագործեցի Meped- ի ծածկագիրը ՝ ոտքերի/ոտքերի օֆսեթում աննշան ճշգրտումներով:
Ես օգտագործեցի սովորական USB Raspberry Pi համատեղելի վեբ-տեսախցիկ և Wifi USB դոնգ:
Հիմնական բանը այն է, որ քանի որ մենք պատրաստվում ենք օգտագործել Pyserial- ը միկրոկոնտրոլերի և Jetson Nano- ի միջև սերիական հաղորդակցության համար, ձեր համակարգն, ըստ էության, կարող է օգտագործել ցանկացած տեսակի միկրոկոնտրոլեր, քանի դեռ այն կարող է միացվել Jetson Nano- ի հետ USB սերիալային մալուխի հետ: Եթե ձեր ռոբոտը օգտագործում է DC շարժիչներ և շարժիչի վարորդ (օրինակ ՝ L298P- ի վրա հիմնված), ապա հնարավոր է անմիջականորեն միացնել շարժիչի վարորդին Jetson Nano GPIO- ի հետ: Բայց, ցավոք, սերվերը վերահսկելու համար կարող եք օգտագործել միայն մեկ այլ միկրոկոնտրոլեր կամ նվիրված I2C սերվո վարորդ, քանի որ etsեթսոն Նանոն չունի ապարատային 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 տեղադրել opensh-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 install cmake
sudo python3 setup.py տեղադրել
Վերջապես, այս նախագծի իմ Github պահեստը կլոնավորեք ձեր տնային թղթապանակում և տեղադրեք Flask և որոշ այլ փաթեթներ ռոբոտի հեռակառավարման վեբ սերվերի միջոցով:
git կլոն
CD
sudo pip3 install -r պահանջներ -opencv
Ներբեռնեք նախապես պատրաստված SSD (Single Shot Detector) մոդելը այս հղումից և տեղադրեք այն jetspider_demos պանակում:
Հիմա մենք լավ ենք գնում:
Քայլ 3: Գործարկեք ծածկագիրը
Ես երկու ցուցադրում արեցի Jetspider- ի համար, առաջինը պարզ հեռուստատեսություն է, որը շատ նման է նախկինում Banana Pi արբանյակի համար արվածին, իսկ երկրորդը ՝ TensorRT- ն օբյեկտների հայտնաբերման համար և շարժական հրամաններ է ուղարկում միկրոկառավարիչին սերիական միացման միջոցով:.
Քանի որ հեռաօգտագործման կոդի մեծ մասը նկարագրված է իմ մյուս ձեռնարկում (ես ընդամենը մի քանի փոքր փոփոխություններ եմ կատարել, որոնք վերաբերում են տեսանյութերի փոխանցմանը), այստեղ ես կկենտրոնանամ օբյեկտի հայտնաբերման մասի վրա:
Հետևյալ օբյեկտի հիմնական սցենարը object_following.py է jetspider_object_following- ում, հեռագործության համար 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_feed ():
Տեղում թարմացումներ իրականացնելու գաղտնիքը (վիդեո էջի պատկերի թարմացումը մեր տեսահոսքի համար) բազմակի պատասխան օգտագործումն է: Բազմակողմանի պատասխանները բաղկացած են մի վերնագրից, որը ներառում է բազմաբնույթ բովանդակության տեսակներից մեկը, որին հաջորդում են այն հատվածները, որոնք առանձնացված են սահմանային նշիչով և յուրաքանչյուրն ունի իր մասի հատուկ բովանդակության տեսակը:
Def gen (): գործառույթում մենք գեներատորի գործառույթն իրականացնում ենք անսահմանափակ հանգույցում, որը գրավում է պատկերը, ուղարկում այն def execute (img):
def execute (img). ֆունկցիան այնտեղ է, որտեղ տեղի է ունենում ողջ կախարդանքը, այն վերցնում է մի պատկեր, չափափոխում այն OpenCV- ով և փոխանցում այն Jetbot ObjectDetector դասի «մոդել» օրինակին: Վերադառնում է վերադարձնում հայտնաբերումների ցուցակը, և մենք օգտագործում ենք OpenCV ՝ դրանց շուրջը կապույտ ուղղանկյուններ գծելու և օբյեկտների հայտնաբերված դասի հետ ծանոթագրություններ գրելու համար: Դրանից հետո մենք ստուգում ենք, թե կա՞ արդյոք մեզ հետաքրքրող օբյեկտ հայտնաբերված համապատասխանող_դետեկցիաներ = [d համար հայտնաբերումների համար d [0], եթե d ['label'] == 53]
Եթե ցանկանում եք, որ ձեր ռոբոտը հետևի այլ օբյեկտների, 53 -ը խնձոր է, կարող եք այդ թիվը (53) փոխել այլ համարի: Ամբողջ ցանկը գտնվում է categories.py ֆայլում:
Վերջապես, եթե 5 վայրկյան օբյեկտ չբացահայտվի, մենք ռոբոտին փոխանցում ենք «5» նշանը սերիայի վրայով կանգ առնելու համար: Եթե օբյեկտը գտնվի, մենք հաշվարկում ենք, թե որքան հեռու է այն պատկերի կենտրոնից և գործում ենք համապատասխանաբար (եթե կենտրոնին մոտ է, ուղիղ գնա (սերիայի «1»), եթե ձախ կողմում, ձախ և այլն): Դուք կարող եք խաղալ այդ արժեքների հետ ՝ որոշելու համար լավագույնը ձեր կոնկրետ կազմաձևի համար:
Քայլ 4: Վերջնական մտքեր
Սա ObjectFollowing դեմո ցուցադրման էությունն է, եթե ցանկանում եք ավելին իմանալ Flask webserver Video հոսքի մասին, կարող եք դիտել Միգել Գրինբերգի այս հիանալի ձեռնարկը:
Կարող եք նաև դիտել Nvidia Jetbot օբյեկտների հայտնաբերման տետրը այստեղ:
Հուսով եմ, Jetbot- ի դեմո ցուցադրումների իմ իրականացումը կօգնի կառուցել ձեր ռոբոտը `օգտագործելով Jetbot շրջանակը: Խոչընդոտներից խուսափելու դեմո չեմ իրականացրել, քանի որ կարծում եմ, որ մոդելի ընտրությունը խոչընդոտներից խուսափելու լավ արդյունքներ չի տա:
Եթե ունեք որևէ հարց, ավելացրեք ինձ LinkedId- ում և բաժանորդագրվեք իմ YouTube ալիքին ՝ մեքենայական ուսուցման և ռոբոտաշինության հետ կապված ավելի հետաքրքիր նախագծերի մասին տեղեկանալու համար:
Խորհուրդ ենք տալիս:
Heatpump Error Detection and Alarm ESP8266, Openhab, Telegram, Battery Powered MQTT: 5 Steps
Heatpump Error Detection and Alarm ESP8266, Openhab, Telegram, Battery Powered MQTT. Իմ տան և ջրի ջեռուցման իմ ջերմային պոմպը երբեմն սխալ է ստանում: Այս սխալը հեշտությամբ չի նկատվում, քանի որ չկա կարմիր լույս կամ որևէ այլ բան, միայն մի փոքր «P» փոքր LCD էկրանին: Հետևաբար, ես ստեղծեցի այս դետեկտորը ՝ սխալը հայտնաբերելու և
Arduino Software (IDE) տեղադրելու համար Jetson Nano Developer Kit- ում `3 քայլ
Jetson Nano Developer Kit- ում Arduino Software (IDE) տեղադրելու համար. Ձեզ հարկավոր կլինի՞ Jetson Nano Developer Kit: Ինտերնետ կապ ձեր jetson տախտակին `օգտագործելով ethernet jack կամ տեղադրված wifi քարտ:
Nvidia Jetson Nano ձեռնարկ - Առաջին հայացք AI & ML- ով `7 քայլ
Nvidia Jetson Nano ձեռնարկ | Առաջին հայացք AI- ի և ML- ի հետ. Աքարշ այստեղ CETech- ից: Այսօր մենք մտադիր ենք նայել Nvidia- ի նոր SBC- ին, որը Jetson Nano- ն է, Jetson Nano- ն կենտրոնացած է արհեստական ինտելեկտի տեխնիկայի վրա, ինչպիսին է պատկերի ճանաչումը և այլն: Մենք առաջինը կբեռնենք
[DIY] Spider Robot (Quad Robot, Quadruped) ՝ 14 քայլ (նկարներով)
[DIY] Spider Robot (Quad Robot, Quadruped). Եթե ձեզանից լրացուցիչ աջակցություն է անհրաժեշտ, ավելի լավ կլինի ինձ համապատասխան նվիրատվություն կատարեք. Http: //paypal.me/RegisHsu2019-10-10 թարմացում. Նոր կոմպիլյատոր կառաջացնի լողացող թվերի հաշվարկման խնդիր: Ես արդեն փոփոխել եմ ծածկագիրը: 2017-03-26
Arduino Light Detection Tutorial: 3 քայլ (նկարներով)
Arduino Light Detection Tutorial: Այս ձեռնարկն ավարտելուց հետո դուք կսովորեք, թե ինչպես կարող եք հայտնաբերել ձեր շուրջը լուսավորության մակարդակների փոփոխությունները: Այս նախագծի մասերը տրամադրել է Կումանը: Դուք կարող եք դրանք գտնել իրենց Arduino UNO Starter Kit- ում