Мазмуну:

Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steps
Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steps

Video: Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steps

Video: Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steps
Video: Jetson Nano Quadruped Robot | Object Detection & Teleoperation 2024, Июнь
Anonim
Image
Image

Nvidia Jetson Nano - бул SoM (System on Module) жана маалымдама ташуучу тактадан турган иштеп чыгуучу комплект. Бул биринчи кезекте машинаны үйрөнүү, машинаны көрүү жана видеону иштетүү үчүн жогорку иштетүү күчүн талап кылган камтылган системаларды түзүүгө багытталган. Сиз менин YouTube каналымдан анын деталдуу кароосун көрө аласыз.

Nvidia мүмкүн болушунча Jetson Nanoду колдонуучуларга ыңгайлуу жана долбоорлорду иштеп чыгууга оңой кылууга аракет кылып келет. Такта ишке киргизилгенден бир нече күн өткөндөн кийин, алар Jetson Nano менен роботту кантип куруунун кичинекей курсун башташты. Сиз бул долбоордун чоо -жайын бул жерден таба аласыз.

Бирок мен өзүм проект катары Jetbot менен бир нече көйгөйлөргө туш болдум:

1) Бул мен үчүн жетиштүү EPIC болгон жок. Джетсон Нано - бул абдан кызыктуу иштетүү жөндөмү бар жана аны менен жөнөкөй дөңгөлөктүү робот жасоо өтө эле кылдат нерсе сыяктуу көрүнгөн абдан кызыктуу такта.

2) Аппараттык тандоо. Jetbot кымбат баалуу жабдыктарды талап кылат/башка альтернативалар менен алмаштырылышы мүмкүн - мисалы, алар телеоперация үчүн джойстикти колдонушат. Кызыктуу угулат, бирок мага роботту башкаруу үчүн джойстик керекпи?

Ошентип, мен Jetson Nanoго колумду койгондон кийин, мен өзүмдүн Jetspider долбоорум менен иштей баштадым. Идея Jetbotтун негизги демосун кайталоо болчу, бирок кеңири таралган жабдуулар менен жана ар кандай долбоорлорго колдонулат.

1 -кадам: Аппаратты даярдаңыз

Аппаратты даярдаңыз
Аппаратты даярдаңыз

Бул долбоор үчүн мен Zoobotics тарабынан чыгарылган Zuri quadruped роботунун алгачкы прототибин колдондум. Ал биздин компаниянын лабораториясында көпкө жатчу. Мен аны Jetson Nano үчүн лазер менен кесилген жыгач монтаж жана камерага орнотуу менен жабдыдым. Алардын дизайны менчик болуп саналат, андыктан эгер сиз Jetson Nano роботуңузга окшош нерсени жараткыңыз келсе, анда ачык булак дизайны менен окшоштурулган төртүнчү Meped долбоорун карап көрсөңүз болот. Чындыгында, биздин лабораторияда Зуринин микроконтроллери (Arduino Mega) үчүн эч кимдин баштапкы коду болбогондуктан, мен Mepedден келген кодду буттарымдын/буттарымдын бир аз өзгөрүүлөрү менен колдоном.

Мен кадимки USB Raspberry Pi шайкеш веб-камерасын жана Wifi USB донглун колдондум.

Эң негизгиси, биз Pyserialди микроконтроллер менен Jetson Nano ортосундагы сериялык байланыш үчүн колдоно тургандыктан, сиздин системаңыз USB сериялык кабели менен Jetson Nano менен туташып турганда, микроконтроллердин бардык түрүн колдоно алат. Эгерде сиздин робот DC моторун жана мотор айдоочусун колдонсо (мисалы L298P негизделген), мотор драйверин Jetson Nano GPIO менен түз байланыштырса болот. Бирок, тилекке каршы, серволорду көзөмөлдөө үчүн башка микроконтроллерди же атайын I2C серво драйверин колдонсоңуз болот, анткени Jetson Nanoдо GPIO PWM аппараттык жабдыгы жок.

Жыйынтыктап айтканда, сиз USB маалымат кабелин колдонуу менен Jetson Nano менен туташтырыла турган каалаган микроконтроллер менен роботтун түрүн колдоно аласыз. Мен Arduino Mega кодун бул окуу куралынын github репозиторийине жүктөдүм жана Jduon Nano менен Arduino менен байланышууга тиешелүү бөлүгү бул жерде:

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

{

иши 1':

алдыга ();

тыныгуу;

учурда '2':

артка ();

тыныгуу;

учурда '3':

оңго бурулуу();

тыныгуу;

учурда '4':

turn_left ();

тыныгуу;

Биз маалыматтын бар-жогун текшеребиз жана эгер бар болсо, анда аны коммутатордун башкаруу структурасына өткөрүп беребиз. Көңүл буруңуз, сериалдагы маалыматтар символ катары келет, 1, 2, 3, 4 сандарынын тегерегиндеги бир тырмакчага көңүл буруңуз.

2 -кадам: Керектүү пакеттерди орнотуңуз

Бактыга жараша, биз үчүн, демейки Jetson Nano тутумунун сүрөтү алдын ала орнотулган көптөгөн нерселер менен коштолот (OpenCV, TensorRT ж.

Калган жумушту алыстан жасагыңыз келсе, SSHти иштетүүдөн баштайлы.

sudo apt update

sudo apt install openssh-server

SSH сервери автоматтык түрдө башталат.

LAN аркылуу Ubuntu машинаңызга туташуу үчүн сиз төмөнкү буйрукту гана киргизишиңиз керек:

ssh колдонуучу аты@ip_address

Эгерде сизде Windows машинасы болсо, анда SSH кардарын орнотушуңуз керек, мисалы Putty.

Сүрөттү иштетүү үчүн Python Package Manager (pip) жана Жаздыкты орнотуудан баштайлы.

sudo apt install python3-pip python3-pil

Андан кийин биз Jetbot репозиторийин орнотобуз, анткени биз анын алкагынын кээ бир бөлүктөрүнө таянабыз, анткени объектилерди аныктоо үчүн.

sudo apt install python3-smbus python-pyserial

git clone

cd jetbot

sudo apt-get cmake орнотуу

sudo python3 setup.py орнотуу

Акыры, бул долбоор үчүн менин Github репозиторийимди үй папкаңызга клондоп, веб -серверди колдонуп роботтун алыстан башкаруусу үчүн Flask жана башка пакеттерди орнотуңуз.

git клону

cd

sudo pip3 орнотуу -r талаптар -opencv

Бул шилтемеден алдын ала даярдалган SSD (Single Shot Detector) моделин жүктөп алып, jetspider_demos папкасына салыңыз.

Эми биз барганыбыз жакшы!

3 -кадам: Кодду иштетүү

Кодду иштетүү
Кодду иштетүү

Мен Jetspider үчүн эки демо жасадым, биринчиси - мен мурда Banana Pi роверинде жасаганга окшош жөнөкөй телепротация, экинчиси - объектти аныктоо үчүн TensorRTти колдонот жана кыймылдын буйруктарын микроконтроллерге сериялык туташуу аркылуу жөнөтөт..

Телеопративдик коддун көбү менин башка окуу куралымда сүрөттөлгөндүктөн (мен жөн гана кичине оңдоолорду жасадым, видеонун берилишин төмөндөтөм) бул жерде мен Объекттерди аныктоо бөлүгүнө токтолом.

Объектти ээрчүү үчүн негизги скрипт - jetspider_object_followingде object_following.py, ал эми телеоперация jetspider_teleoperationде spider_teleop.py.

Сценарийден кийинки объект керектүү модулдарды импорттоо жана өзгөрмөлөрдү жана класстын инстанцияларын жарыялоо менен башталат. Андан кийин биз 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 execute (img): функциясына жөнөтөт, андан кийин сүрөт веб -баракчага жөнөтүлөт.

def execute (img): функция - бул бардык сыйкырчылык болгон жерде, ал сүрөттү алат, OpenCV менен анын өлчөмүн өзгөртөт жана Jetbot ObjectDetector класстын "моделине" өткөрүп берет. Ал аныктоолордун тизмесин кайтарат жана биз OpenCVди тегерегине көк тик бурчтуктарды тартуу жана объект табылган класс менен аннотацияларды жазуу үчүн колдонобуз. Андан кийин, бизди кызыктырган объект барбы же жокпу, текшеребиз = d үчүн аныктоолордо [0], эгерде d ['label'] == 53]

Эгерде сиз роботуңуздун башка объекттерди ээрчишин кааласаңыз, анда бул номерди (53) CoCo маалымат базасынан башка номерге өзгөртө аласыз, 53 - бул алма. Бүт тизме Categories.py файлында.

Акыры 5 секундада эч кандай объект табылбаса, биз роботко сериалдын үстүнөн токтошу үчүн "5" белгисин беребиз. Эгерде объект табылса, анда биз сүрөттүн борборунан канчалык алыс экенин эсептейбиз жана ошого жараша иш кылабыз (эгер борборго жакын болсо, түз кетиңиз (серияда "1" белгиси), эгер сол жакта болсо, солго ж.б.). Сиз бул баалуулуктар менен ойноп, өзүңүздүн конструкцияңыз үчүн эң мыктысын аныктай аласыз!

4 -кадам: Акыркы ойлор

Акыркы ойлор
Акыркы ойлор

Бул ObjectFollowing демосунун маңызы, эгер сиз Flask веб -сервери жөнүндө көбүрөөк билгиңиз келсе, Мигель Гринбергдин бул улуу окуу куралын карап көрсөңүз болот.

Сиз ошондой эле Nvidia Jetbot Object Detection дептерин бул жерден көрө аласыз.

Менин Jetbot демо программаларым Jetbot алкагын колдонуп роботту түзүүгө жардам берет деп үмүттөнөм. Мен тоскоолдуктардан качуунун демонстрациясын ишке ашырган жокмун, анткени моделди тандоо тоскоолдуктарды болтурбоо үчүн жакшы жыйынтык бербейт деп ойлойм.

Эгерде сизде кандайдыр бир суроо болсо, мени LinkedIdге кошуңуз жана менин YouTube каналыма жазылыңыз, машина үйрөнүү жана робототехникага байланыштуу кызыктуу долбоорлор жөнүндө кабардар болуп туруңуз.

Сунушталууда: