Агуулгын хүснэгт:

Jetson Nano Quadruped робот объект илрүүлэх заавар: 4 алхам
Jetson Nano Quadruped робот объект илрүүлэх заавар: 4 алхам

Видео: Jetson Nano Quadruped робот объект илрүүлэх заавар: 4 алхам

Видео: Jetson Nano Quadruped робот объект илрүүлэх заавар: 4 алхам
Видео: Jetson Nano В чем отличия и что же выбрать? 2024, Оны зургадугаар сарын
Anonim
Image
Image

Nvidia Jetson Nano бол SoM (System on Module) болон лавлагаа зөөгч самбараас бүрдсэн хөгжүүлэгчийн иж бүрдэл юм. Энэ нь үндсэндээ машин сурах, машины алсын хараа, видео боловсруулах програмуудад өндөр боловсруулалтын хүч шаарддаг суулгагдсан системийг бий болгоход чиглэгддэг. Та энэ талаархи дэлгэрэнгүй тоймыг миний YouTube сувгаас үзэх боломжтой.

Nvidia нь Жетсон Наног аль болох ашиглахад хялбар, төсөл боловсруулахад хялбар болгохыг хичээж ирсэн. Тэд самбараа эхлүүлснээс хэд хоногийн дараа Jetson Nano-той роботоо хэрхэн бүтээх талаар бага ч гэсэн сургалт явуулжээ. Та энэ төслийн талаархи дэлгэрэнгүй мэдээллийг эндээс авах боломжтой.

Гэсэн хэдий ч би өөрөө төслийн хувьд Jetbot -тэй холбоотой хэд хэдэн асуудалтай тулгарсан.

1) Энэ нь надад EPIC хангалттай биш байсан. Жетсон Нано бол боловсруулах чадвар сайтай, маш энгийн дугуйтай робот бүтээхэд маш хэцүү юм шиг санагддаг маш сонирхолтой самбар юм.

2) Тоног төхөөрөмжийн сонголт. Jetbot нь үнэтэй тоног төхөөрөмж шаарддаг/өөр хувилбараар сольж болно, жишээлбэл тэд телепераци хийхдээ джойстик ашигладаг. Хөгжилтэй сонсогдож байгаа ч роботыг удирдахад надад джойст хэрэгтэй юу?

Тиймээс, би Жетсон Нано дээр гар барьсныхаа дараа би өөрийн төсөл болох Jetspider дээр ажиллаж эхлэв. Энэхүү санаа нь Jetbot -ийн үндсэн демо хувилбаруудыг хуулбарлах явдал байв, гэхдээ илүү нийтлэг тоног төхөөрөмжтэй бөгөөд илүү олон төрлийн төслүүдэд ашиглах боломжтой байв.

Алхам 1: Тоног төхөөрөмжөө бэлтгэ

Тоног төхөөрөмжөө бэлдээрэй
Тоног төхөөрөмжөө бэлдээрэй

Энэ төслийн хувьд би Zoobotics -ийн хийсэн Zuri дөрвөлжин роботын анхны загварыг ашигласан. Энэ нь манай компанийн лабораторид удаан хугацаанд хэвтэж байсан. Би үүнийг Jetson Nano-д зориулсан лазер хайчлах модон бэхэлгээ, камерын бэхэлгээгээр тоноглосон. Тэдний загвар нь өмчлөлийн шинж чанартай тул хэрэв та өөрийн Jetson Nano роботыг бүтээхийг хүсч байвал үүнтэй ижил төстэй нээлттэй эхийн загвар бүхий Meped төслийг үзэх боломжтой. Үнэн хэрэгтээ манай лабораторид Zuri -ийн микроконтроллерийн (Arduino Mega) эх кодыг хэн ч эзэмшээгүй тул би Meped -ийн кодыг хөл/хөлийн офсетод бага зэрэг тохируулга хийсэн.

Би ердийн USB Raspberry Pi-тэй нийцтэй вэб камер, Wifi USB гогцоо ашигладаг байсан.

Гол зүйл бол бид Pyserial -ийг микроконтроллер ба Жетсон Нано хоёрын хооронд цуваа холболт хийх гэж байгаа тул USB цуврал кабелиар Jetson Nano -той холбогдох боломжтой бол таны систем үндсэндээ ямар ч төрлийн микроконтроллерыг ашиглаж болно. Хэрэв таны робот DC мотор, мотор драйвер ашигладаг бол (жишээлбэл L298P дээр суурилсан) Jetson Nano GPIO-той мотор драйвертай шууд холбогдох боломжтой. Харамсалтай нь, servos -ийг хянахын тулд та зөвхөн өөр микроконтроллер эсвэл тусгай зориулалтын I2C servo драйвер ашиглаж болно, учир нь Jetson Nano -д GPIO PWM техник хангамж байдаггүй.

Дүгнэж хэлэхэд та USB өгөгдлийн кабель ашиглан Jetson Nano -той холбогдож болох аливаа микроконтроллертой роботыг ашиглаж болно. Би энэ гарын авлагад зориулж Arduino Mega -ийн кодыг github репозиторид байршуулсан бөгөөд Jetson Nano -г Arduino -той холбохтой холбоотой хэсгийг энд оруулав.

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

{

тохиолдол '1':

урагш ();

завсарлага;

тохиолдол '2':

нуруу ();

завсарлага;

"3" тохиолдол:

Баруун тийш эргэ();

завсарлага;

"4" тохиолдол:

Зүүн тийш эргэ();

завсарлага;

Бид өгөгдөл байгаа эсэхийг шалгаж, хэрэв байгаа бол түүнийг унтраалгын удирдлагын бүтцэд дамжуулна. Цувралаас авсан өгөгдлүүд тэмдэгт хэлбэрээр ирдэг болохыг анхаарна уу.

Алхам 2: Шаардлагатай багцуудыг суулгана уу

Аз болоход бидний хувьд Jetson Nano системийн анхдагч дүрс нь маш олон зүйлийг урьдчилан суулгасан байдаг (OpenCV, TensorRT гэх мэт), тиймээс бид кодыг ажиллуулах, SSH-ийг идэвхжүүлэхийн тулд өөр хэд хэдэн багц суулгах хэрэгтэй.

Үлдсэн бүх ажлыг алсаас хийхийг хүсвэл SSH -ийг идэвхжүүлж эхэлье.

sudo apt update

sudo apt install openssh-server

SSH сервер автоматаар эхлэх болно.

Ubuntu машинаа LAN -р холбохын тулд та дараах тушаалыг оруулах хэрэгтэй.

ssh хэрэглэгчийн нэр@ip_address

Хэрэв танд Windows машин байгаа бол та SSH клиентийг суулгах хэрэгтэй болно, жишээ нь Putty.

Python Package Manager (pip) болон Pillow -ийг дүрсийг удирдахад суулгаж эхэлье.

sudo apt install python3-pip python3-pil

Дараа нь бид объектын илрүүлэлтийг гүйцэтгэхийн тулд түүний хүрээний зарим хэсэгт найдаж байгаа тул Jetbot репозиторийг суулгах болно.

sudo apt install python3-smbus python-pyserial

git clone

cd jetbot

sudo apt-get install cmake

sudo python3 setup.py суулгах

Эцэст нь энэ төслийн Github репозиторыг өөрийн гэрийн хавтсанд хуулаад колбо болон роботын алсын удирдлагад зориулагдсан бусад багцыг вэб сервер ашиглан суулгаарай.

git clone

cd

sudo pip3 install -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 (хост = '0.0.0.0', урсгалтай = Үнэн)

Бид вэб хөтөч дээрээ 0.0.0.0 (localhost) хаягийг эсвэл сүлжээнд байгаа Jetson Nano хаягийг нээмэгц (ifconfig командыг ашиглан шалгаж болно) энэ функцийг гүйцэтгэх болно.

def индекс ():

Энэ нь бидэнд байгаа загваруудын хавтсанд байгаа вэб хуудасны загварыг харуулдаг. Загвар нь видео эх сурвалжийг суулгасан тул ачаалж дуусаад def video_feed (): ажиллуулах бөгөөд энэ нь генераторын функцээр эхлүүлсэн Response объектыг буцаана.

Газар дээр нь шинэчлэлт хийх нууц нь (манай видео дамжуулалтын вэб хуудсан дээрх зургийг шинэчлэх) олон талт хариултыг ашиглах явдал юм. Олон талт хариултууд нь олон талт агуулгын төрлүүдийн аль нэгийг агуулсан толгойн хэсгээс бүрдэх бөгөөд дараа нь хэсгүүдийг хилийн тэмдэгээр тусгаарлаж, тус бүр өөрийн гэсэн тодорхой агуулгын төрөлтэй байна.

Def gen (): функц дээр бид генераторын функцийг хязгааргүй давталтад хэрэгжүүлж, зургийг авч, түүнийг def (exe) (img): функц руу илгээдэг бөгөөд үүний дараа зургийг вэб хуудсанд илгээх болно.

def execute (img): функц нь бүх ид шидийн үйл явдал болох бөгөөд энэ нь дүрсийг авч, OpenCV -ийн тусламжтайгаар хэмжээг нь өөрчилж, Jetbot ObjectDetector ангиллын "загвар" руу дамжуулдаг. Энэ нь илрүүлэлтийн жагсаалтыг буцааж өгдөг бөгөөд бид OpenCV ашиглан цэнхэр өнгийн тэгш өнцөгтүүдийг зурж, объект илрүүлсэн ангиар тайлбар бичдэг. Үүний дараа бид сонирхож буй объект байгаа эсэхийг шалгадаг

Хэрэв та роботыг бусад объектыг дагахыг хүсч байвал та энэ дугаарыг (53) CoCo мэдээллийн сангаас өөр дугаар болгон өөрчилж болно, 53 бол алим юм. Жагсаалтыг бүхэлд нь category.py файлд оруулсан болно.

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

Алхам 4: Эцсийн бодол

Эцсийн бодол
Эцсийн бодол

Энэ бол ObjectFollowing демогийн гол агуулга юм, хэрэв та Flask вэб серверийн видео дамжуулалтын талаар илүү ихийг мэдэхийг хүсч байвал Мигель Гринбергийн энэхүү гайхалтай хичээлийг үзэх боломжтой.

Та Nvidia Jetbot объект илрүүлэх дэвтэрийг эндээс үзэх боломжтой.

Миний Jetbot демо хувилбарыг хэрэгжүүлснээр Jetbot системийг ашиглан таны роботыг бүтээхэд тусална гэж найдаж байна. Загварыг сонгох нь саад бэрхшээлээс зайлсхийх сайн үр дүнд хүргэхгүй гэж бодож байгаа тул би саад бэрхшээлээс зайлсхийх демо -г хэрэгжүүлээгүй.

Хэрэв танд асуулт байгаа бол намайг LinkedId дээр нэмж, миний YouTube сувгийг бүртгүүлээд машин сурах, робот техниктэй холбоотой илүү сонирхолтой төслүүдийн талаар мэдээлэл аваарай.

Зөвлөмж болгож буй: