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

HackerBox 0024: Алсын хараа: 11 алхам
HackerBox 0024: Алсын хараа: 11 алхам

Видео: HackerBox 0024: Алсын хараа: 11 алхам

Видео: HackerBox 0024: Алсын хараа: 11 алхам
Видео: HackerBox #0024: Vision Quest 2024, Долдугаар сарын
Anonim
HackerBox 0024: Алсын харааны даалгавар
HackerBox 0024: Алсын харааны даалгавар

Vision Quest - Энэ сард HackerBox хакерууд Computer Vision болон Servo Motion Tracking -ийг туршиж байна. Энэхүү зааварчилгаа нь HackerBox #0024 -тэй ажиллах мэдээллийг агуулдаг бөгөөд үүнийг хангамж дуусах үед эндээс авах боломжтой. Түүнчлэн, хэрэв та HackerBox -ийг яг ийм шуудангийн хайрцагт сар бүр авахыг хүсвэл HackerBoxes.com хаягаар бүртгүүлж, хувьсгалд нэгдээрэй!

HackerBox 0024 -ийн сэдэв ба сургалтын зорилго:

  • Computer Vision ашиглан туршилт хийж байна
  • OpenCV (Computer Vision) тохируулах
  • Arduino IDE -ээс Arduino Nano програмчлах
  • Arduino Nano -той Servo Motors -ийг удирдах
  • Механик хавтан ба хазайлтын угсралт
  • Pan and Tilt Motion -ийг микроконтроллероор удирдах
  • OpenCV ашиглан нүүр хянах ажлыг гүйцэтгэх

HackerBoxes бол DIY цахилгаан хэрэгсэл, компьютерийн технологийн захиалгын хайрцагны үйлчилгээ юм. Бид бол хоббичид, бүтээгчид, туршигчид юм. Бид бол мөрөөдлийн мөрөөдөгчид юм. ПЛАНЕТИЙГ ХАК

Алхам 1: HackerBox 0024: Хайрцагны агуулга

HackerBox 0024: Хайрцагны агуулга
HackerBox 0024: Хайрцагны агуулга
  • HackerBoxes #0024 цуглуулах лавлах карт
  • Гурван хаалт тогоо ба хазайлтын угсралт
  • Дагалдах хэрэгсэлтэй хоёр MG996R servo
  • Хөнгөн цагаан дугуй хэлбэртэй хоёр Servo холбогч
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • USB кабелиар дижитал камер угсрах
  • Бүх нийтийн хавчаар бүхий гурван линз
  • Эрүүл мэндийн үзлэг үзэгний гэрэл
  • Dupont эрэгтэй/эмэгтэй үсрэгч
  • MicroUSB кабель
  • Онцгой OpenCV тэмдэг
  • Онцгой Dia de Muertos Decal

Ашиг тустай бусад зүйлүүд:

  • Камерын сууринд зориулсан жижиг модон хавтангийн хаягдал
  • Гагнуурын төмөр, гагнуур, гагнуурын үндсэн хэрэгсэл
  • Програм хангамжийн хэрэгслийг ажиллуулах компьютер

Хамгийн гол нь танд адал явдал, DIY сүнс, хакеруудын сониуч зан хэрэгтэй болно. Hardcore DIY цахилгаан хэрэгсэл нь тийм ч энгийн зүйл биш бөгөөд бид танд үүнийг услахгүй байна. Зорилго бол дэвшил, төгс төгөлдөр бус. Та адал явдлаа үргэлжлүүлж, таашаал авбал шинэ технологийг сурч, зарим төслүүдээ ажиллуулснаар маш их сэтгэл ханамж авах болно. Алхам бүрийг аажмаар, нарийн ширийн зүйлийг анхаарч, тусламж хүсэхээс бүү эргэлзэхийг санал болгож байна.

БАЙГУУЛАГДАХ АСУУЛТ: Бид HackerBox -ийн бүх гишүүдээс үнэхээр том ивээл хүсэх дуртай. Дэмжлэгтэй холбоо барихаасаа өмнө HackerBoxes вэбсайт дээрх FAQ -ийг үзэхийн тулд хэдэн минут зарцуулна уу. Мэдээжийн хэрэг бид бүх гишүүдэд шаардлагатай хэмжээгээр туслахыг хүсч байгаа боловч бидний ихэнх имэйлүүд FAQ -д маш тодорхой тусгагдсан энгийн асуултуудыг агуулдаг. Ойлгож байгаад баярлалаа!

Алхам 2: Компьютерийн алсын хараа

Компьютерийн алсын хараа
Компьютерийн алсын хараа

Компьютерийн алсын хараа бол дижитал дүрс эсвэл видеоноос компьютер хэрхэн өндөр түвшний ойлголттой болох тухай салбар дундын салбар юм. Инженерийн үүднээс авч үзвэл компьютерийн алсын хараа нь хүний харааны системийн хийж чадах ажлуудыг автоматжуулахыг эрмэлздэг. Шинжлэх ухааны салбар болохын хувьд компьютерийн алсын хараа нь дүрснээс мэдээлэл гаргаж авдаг хиймэл системийн цаадах онолыг авч үздэг. Зургийн өгөгдөл нь видео дараалал, олон камераас үзэх, эмнэлгийн сканнерын олон хэмжээст өгөгдөл гэх мэт олон хэлбэртэй байж болно. Технологийн хичээлийн хувьд компьютерийн алсын хараа нь компьютерийн харааны системийг бий болгоход өөрийн онол, загварыг хэрэгжүүлэхийг эрмэлздэг. Компьютерийн харааны дэд домэйнд үзэгдлийг сэргээн засварлах, үйл явдлыг илрүүлэх, видео хянах, объектыг таних, 3D байрлалыг үнэлэх, сурах, индексжүүлэх, хөдөлгөөнийг үнэлэх, дүрс сэргээх зэрэг орно.

Компьютерийн алсын харааг компьютерийн графикийн урвуу гэж үзэж болох нь сонирхолтой юм.

Алхам 3: Боловсруулалт ба OpenCV

Боловсруулалт ба OpenCV
Боловсруулалт ба OpenCV

Боловсруулах нь уян хатан програм хангамжийн зургийн дэвтэр бөгөөд дүрслэх урлагийн хүрээнд хэрхэн код бичихийг сурах хэл юм. Боловсруулалт нь дүрслэх урлагийн програм хангамжийн мэдлэг, технологийн хүрээнд харааны мэдлэгийг дээшлүүлсэн. Процессинг сурах, загварчлахад ашигладаг олон арван мянган оюутан, зураач, дизайнер, судлаач, хоббичид байдаг.

OpenCV (Open Source Computer Vision Library) нь нээлттэй эх сурвалжтай компьютерийн алсын хараа, машин сургалтын програм хангамжийн номын сан юм. OpenCV нь компьютерийн харааны хэрэглээний нийтлэг дэд бүтцийг бий болгох, арилжааны бүтээгдэхүүнүүдэд машины ойлголтыг ашиглах ажлыг хурдасгах зорилгоор бүтээгдсэн. OpenCV номын сан нь 2500 гаруй оновчтой алгоритмтай бөгөөд үүнд сонгодог болон хамгийн сүүлийн үеийн компьютерийн алсын хараа, машин сурах алгоритмуудыг багтаасан болно. Эдгээр алгоритмуудыг ашиглан нүүр царайг илрүүлэх, таних, объектыг таних, видео бичлэг дэх хүний үйлдлийг ангилах, камерын хөдөлгөөнийг хянах, хөдлөх объектуудыг хянах гэх мэтийг ашиглаж болно.

OpenCV -ийг боловсруулах явцад File> Examples цэснээс "Жишээ нэмэх" -ийг сонгоод Номын сангийн табын доор Видео болон OpenCV номын санг хоёуланг нь суулгаж суулгаарай. Нүүр царайгаа хянах энгийн LiveCamTest жишээг нээнэ үү. Боловсруулалтын жишээг бусад OpenCV -ээс эндээс үзнэ үү.

Илүү их нөөц:

Компьютерийн алсын харааг эхлүүлэх нь компьютерийн алсын харааг бүтээлчээр туршихад хялбар номын төсөл юм. Энэ нь компьютерийн алсын хараатай төсөл боловсруулахад шаардлагатай код, ойлголтуудыг танилцуулж байна.

Python -тэй компьютерийн алсын харааг програмчлах нь компьютерын харааны зориулалттай нээлттэй эх сурвалж Python модуль болох PCV дээрх O'Reilly ном юм.

OpenCV сурах

Компьютерийн алсын хараа: алгоритм ба хэрэглээ

OpenCV -ийг эзэмших

Стэнфордын курс CS231n харааны танин мэдэхүйн хувьсах мэдрэлийн сүлжээ (16 видео)

Крис Урмсон TED Talk Жолоочгүй машин зам хардаг

Алхам 4: Arduino Nano микроконтроллер платформ

Arduino Nano микроконтроллер платформ
Arduino Nano микроконтроллер платформ

Бид хайруулын тавган дээр болон налалтын камер холбох хэсэгт servo -ийг удирдахын тулд ердийн микроконтроллерийн платформыг ашиглаж болно. Arduino Nano нь гадаргуу дээр суурилуулсан, талхны хавтан дээр ээлтэй, нэгдсэн USB-тэй жижигхэн Arduino самбар юм. Энэ бол гайхалтай онцлог шинж чанартай бөгөөд хакердахад хялбар юм.

Онцлог:

  • Микроконтроллер: Atmel ATmega328P
  • Хүчдэл: 5V
  • Дижитал I/O зүү: 14 (6 PWM)
  • Аналог оролтын зүү: 8
  • Оролтын оролт бүрт тогтмол гүйдэл: 40 мА
  • Флаш санах ой: 32 KB (ачаалагч ачаалахад 2KB)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Цагийн хурд: 16 МГц
  • Хэмжээ: 17mm x 43mm

Arduino Nano -ийн энэхүү өвөрмөц хувилбар бол хар Robotdyn загвар юм. Интерфэйс нь олон гар утас, таблетад ашиглагддаг MicroUSB кабельтай нийцдэг MicroUSB порт дээр суурилагдсан.

Arduino Nanos нь USB/цуваа гүүрний чиптэй. Энэ хувилбар дээр гүүрний чип нь CH340G юм. Төрөл бүрийн Arduino самбар дээр өөр төрлийн USB/Цуваа гүүр чипүүд байдаг гэдгийг анхаарна уу. Эдгээр чипүүд нь компьютерын USB порт нь Arduino процессорын чип дээрх цуваа интерфейстэй холбогдох боломжийг олгодог.

Компьютерийн үйлдлийн систем нь USB/цуваа чиптэй холбогдохын тулд төхөөрөмжийн драйвер шаарддаг. Жолооч нь IDE -ийг Arduino самбартай харилцах боломжийг олгодог. Шаардлагатай төхөөрөмжийн драйвер нь OS хувилбар болон USB/цуваа чипийн төрлөөс хамаарна. CH340 USB/Цуваа чипийн хувьд олон үйлдлийн системд зориулсан драйверууд байдаг (UNIX, Mac OS X, эсвэл Windows). CH340 үйлдвэрлэгч эдгээр жолооч нарыг энд нийлүүлдэг.

Та Arduino Nano -г компьютерийн USB порт руу залгахад ногоон гэрэл асч, удалгүй цэнхэр LED аажмаар анивчиж эхлэх ёстой. Нано нь цоо шинэ Arduino Nano дээр ажилладаг BLINK програмыг урьдчилан ачаалж ажиллуулснаас болж ийм зүйл тохиолддог.

Алхам 5: Arduino -ийн нэгдсэн хөгжлийн орчин (IDE)

Arduino нэгдсэн хөгжлийн орчин (IDE)
Arduino нэгдсэн хөгжлийн орчин (IDE)

Хэрэв танд Arduino IDE хараахан суулгаагүй байгаа бол Arduino.cc дээрээс татаж авах боломжтой

Хэрэв та Arduino экосистемд ажиллах талаар нэмэлт мэдээлэл авахыг хүсвэл HackerBoxes Starter Workshop -ийн зааврыг үзэхийг санал болгож байна.

Нано -г MicroUSB кабель руу холбож, кабелийн нөгөө үзүүрийг компьютер дээрх USB порт руу залгаарай, Arduino IDE програмыг ажиллуулна уу.). Багаж хэрэгсэл> самбар дээрээс IDE дээрээс "Arduino Nano" -г сонгоно уу.

Эцэст нь жишээ кодын хэсгийг ачаална уу:

Файл-> Жишээ-> Үндсэн мэдээлэл-> Нүдээ анив

Энэ бол үнэндээ Нано дээр ачаалагдсан код бөгөөд цэнхэр LED -ийг аажмаар анивчихын тулд яг одоо ажиллаж байх ёстой. Үүний дагуу, хэрэв бид энэ жишээ кодыг ачаалвал юу ч өөрчлөгдөхгүй. Үүний оронд кодыг жаахан өөрчилье.

Анхааралтай ажиглавал програм нь LED -ийг асааж, 1000 миллисекунд (нэг секунд) хүлээж, LED -ийг унтрааж, өөр секунд хүлээж, дараа нь үүрд мөнхөд хийдэг болохыг харж болно.

"Delay (1000)" гэсэн хоёуланг нь "delay (100)" болгож өөрчилснөөр кодыг өөрчилнө үү. Энэхүү өөрчлөлт нь LED -ийг арав дахин хурдан анивчих болно, тийм үү?

Таны өөрчилсөн кодын яг дээр байгаа UPLOAD товчийг (сумны дүрс) дарж өөрчилсөн кодыг Нано руу ачаалж үзье. Статусын мэдээллийг авахын тулд кодыг доороос үзнэ үү: "эмхэтгэх", дараа нь "байршуулах". Эцэст нь IDE нь "Байршуулж дууссан" гэж зааж өгөх ёстой бөгөөд таны LED илүү хурдан анивчих ёстой.

Хэрэв тийм бол баяр хүргэе! Та дөнгөж оруулсан анхны кодоо хакердсан байна.

Таны хурдан анивчих хувилбарыг ачаалж, ажиллуулж эхэлмэгц та кодыг дахин өөрчилж, LED нь хоёр удаа хурдан анивчихаад хэдэн секундын дараа давтахаасаа өмнө яагаад харж болохгүй гэж? Үүнийг нэг туршаад! Бусад загваруудын талаар юу хэлэх вэ? Хүссэн үр дүнг төсөөлөх, кодлох, төлөвлөсний дагуу ажиллахын тулд амжилтанд хүрсний дараа та чадварлаг техник хангамжийн хакер болохын тулд асар том алхам хийсэн болно.

Алхам 6: Servo Motors

Servo Motors
Servo Motors

Серво моторыг ерөнхийдөө хэд хэдэн удаа давтагддаг цахилгаан импульсээр удирддаг бөгөөд импульсийн өргөн нь servo -ийн байрлалыг харуулдаг. Импульсийн өргөн модуляцлагдсан (PWM) хяналтын дохиог ихэвчлэн Arduino гэх мэт нийтлэг микроконтроллер үүсгэдэг.

MG996R гэх мэт жижиг хобби servo нь гурван утастай стандарт холболтоор холбогддог: тогтмол гүйдлийн тэжээлийн хоёр утас, хяналтын импульс дамжуулах нэг утас. MG996R servo нь 4.8-7.2 VDC хүчдэлийн ууртай байдаг.

Алхам 7: Пан болон хазайлтын механизмыг угсрах

Пан болон хазайлтын механизмыг угсрах
Пан болон хазайлтын механизмыг угсрах
  1. MG996R servo -г хоёуланг нь цүнхнээс нь сугалж аваад дагалдах хэрэгслүүдийг одоогоор хойш тавь.
  2. Хөнгөн цагаан, дугуй хэлбэртэй servo холбогчийг servo бүрт холбоно. Холбогч нь servos -аас тусдаа уутанд ирдэг болохыг анхаарна уу. Холбогч нь маш нягт бэхэлгээ юм. Холбогчийг servo гаралтын төгсгөлд дарж эхэлж, дараа нь боолтыг төвийн нүхэнд оруулна. Холбогчийг servo гаралт руу татахын тулд утсыг чангална уу.
  3. Хажуугаар нь хазайлгахад гурван хаалт байдаг-хоёр хайрцаг, нэг U хаалт.
  4. Хайрцагны хаалтуудын нэгийг servo-ийн хөнгөн цагаан тойрог дээр холбоно уу. Бид энэ servo -ийг pan servo гэж нэрлэх болно. Хайрцагны бэхэлгээг төв хана нь хөнгөн цагаан тойрог руу чиглүүлж, хайрцагны бусад хоёр ханыг хайруулын тавган дээрээс хол харна. Хайрцагны хаалтны дунд хананы төв нүхийг ашиглана уу. Энэхүү зохицуулалт нь хайруулын тавгийг идэвхжүүлсний дараа бэхэлсэн хайрцгийг эргүүлэх боломжийг олгох ёстой.
  5. Нөгөө servo-ийг (хазайлтын servo) хайруулын тавган дээр хөнгөн цагаан тойрог дээр бэхэлсэн хайрцагт байрлуулна. Хажуугийн хажуу талыг бэхлэхийн тулд дор хаяж хоёр самар, боолт ашиглана уу.
  6. U-хаалтнаас барьж, гуулин "холхивчийг" U-ийн дотор талаас том тэнхлэгийн бэхэлгээний нүхний аль нэгээр оруулна.
  7. U-хаалтыг холхивчийн хайрцгийн дотор байрлах хазайлтын серво дээр байрлуул, ингэснээр нөгөө том тэнхлэгийн бэхэлгээний нүх (холхивчгүй) нь хазайлтын серво дээрх хөнгөн цагаан тойрогтой нийцэх болно.
  8. U-хаалтны нэг талд байрлах хөнгөн цагаан тойрог дээр боолтыг бэхлэхийн тулд боолтыг ашиглана уу.
  9. U-хаалтны нөгөө талд нэг боолтыг холхивчоор дамжуулж, хайрцагны хаалтны жижиг нүхэнд оруулна. Энэ нь хазайлтын servo-ийг идэвхжүүлсний дараа U-хаалт нь хайрцагны хаалтны эргэн тойронд эргэх боломжийг олгох ёстой.

Алхам 8: Пан болон хазайлтын угсралтыг суурилуулах

Пан болон хазайлтын угсралтыг суурилуулах
Пан болон хазайлтын угсралтыг суурилуулах
Налуу ба хазайлтын угсралтыг суурилуулах
Налуу ба хазайлтын угсралтыг суурилуулах

Үлдсэн хайрцгийн бэхэлгээг жижиг модон хавтангийн хаягдал руу шургуулж, зураг дээр үзүүлсэн шиг камерын суурь болгон ашиглаж болно. Төгсгөлд нь хайруулын таваг үлдсэн хайрцагны хаалтанд бэхлэгдэж, хамгийн багадаа хоёр самар, боолт ашиглан хаалтанд бэхлэнэ.

Алхам 9: Пан болон хазайлтын угсралтыг утсаар холбож, туршиж үзээрэй

Пан ба хазайлтын угсралтыг утас ба туршилт
Пан ба хазайлтын угсралтыг утас ба туршилт

Сэрвүүдийг схемийн дагуу утастай болгохын тулд анхны эмэгтэй холбогчийг servos -оос салгаж, дараа нь Nano тээглүүрт холбогдсон дохио, газардуулгыг авахын тулд DuPont -ийн зарим эмэгтэй холбогчийг ашиглах нь хамгийн хурдан арга юм.

Нано нь 5V тэжээл дээр USB -ээс серво тэжээх хангалттай гүйдэлгүй тул нэмэлт тэжээлийг санал болгож байна. Энэ нь 4.8-7.2 вольтын хүрээнд юу ч байж болно. Жишээлбэл, дөрвөн АА батерей (цувралаар) сайхан ажиллах болно. Вандан сандал эсвэл хананд хийх нь сайн сонголт юм.

Энд PanTiltTest.ino гэж хавсаргасан Arduino кодын энгийн жишээг Arduino IDE дээрх цуваа монитороос хоёр servo -ийн хяналтыг шалгахад ашиглаж болно. Мониторын дамжуулах хурдыг жишээ кодонд заасан 9600bps хурдтай тохируулна уу. 0 -ээс 180 градусын хоорондох өнцгийн утгыг оруулснаар servo -г зохих ёсоор байрлуулах болно.

Эцэст нь, USB камерын модулийг (эсвэл бусад мэдрэгчийг) Pan-Tilt Assembly-ийн U-хаалтанд холбож, хянах програмд ашиглаж болно.

Алхам 10: OpenCV ашиглан нүүр хянах

Image
Image
Гарагийг хакердах
Гарагийг хакердах

Машины алсын харааг хянах системийг блок диаграммд үзүүлсэн шиг дэд системүүдийг нэгтгэх замаар хэрэгжүүлэх боломжтой. Arduino -д зориулсан SerialServoControl -ийн ноорог зургийг Sparkfun -ийн дараах заавраас олж болно. Хүний царайг ажиглахын тулд OpenCV, Processing, Arduino, USB камер, Pan/Tilt Assembly ашиглан холбогдох жагсаал цуглуулгыг үзэх боломжтой. Демо нь хэрэглэгчийг өрөөний эргэн тойронд хөдөлж байх үед ч гэсэн нүүрээ видео хүрээ дээр төвлөрүүлэхийн тулд камерын байрлалыг өөрчлөхийн тулд хоёр servo ашигладаг. Жишээ нь C#дээрх код, CamBot видеоны GitHub репозиторыг үзээрэй.

Алхам 11: Гарагийг хакердах

Хэрэв танд энэхүү зааварчилгаа таалагдсан бөгөөд ийм электроник, компьютерийн технологийн төслүүдийг сар бүр шуудангийн хайрцагт шууд хүргэхийг хүсч байвал ЭНД ДАРЖ бидэнтэй нэгдээрэй.

Доорх сэтгэгдлүүд эсвэл HackerBoxes фэйсбүүк хуудсан дээр гарч амжилтаа хуваалцаарай. Хэрэв танд ямар нэгэн асуулт байвал эсвэл ямар нэгэн зүйлд тусламж хэрэгтэй байгаа бол бидэнд мэдэгдээрэй. HackerBoxes -ийн нэг хэсэг болсонд баярлалаа. Та бүхний санал, сэтгэгдлийг байнга авч байгаарай. HackerBoxes бол таны хайрцгууд юм. Гайхамшигтай зүйл хийцгээе!

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