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

Өөрөө өөрөө жолооддог машинаа бүтээгээрэй - (Энэ зааварчилгаа нь ажиллаж байна): 7 алхам
Өөрөө өөрөө жолооддог машинаа бүтээгээрэй - (Энэ зааварчилгаа нь ажиллаж байна): 7 алхам

Видео: Өөрөө өөрөө жолооддог машинаа бүтээгээрэй - (Энэ зааварчилгаа нь ажиллаж байна): 7 алхам

Видео: Өөрөө өөрөө жолооддог машинаа бүтээгээрэй - (Энэ зааварчилгаа нь ажиллаж байна): 7 алхам
Видео: Мухоморный 🍄Трип Фиксирую на камеру. Очутился между двух миров🌍 Реальным и Мухоморным🙏 2024, Долдугаар сарын
Anonim
Image
Image

Сайн уу, Хэрэв та миний алсын USB Gamepad бүхий хөтөч робот дээрх миний бусад зааварчилгааг харвал энэ төсөл ижил төстэй боловч арай бага хэмжээтэй байна. Та мөн Youtube дээрх Робот техник, Гэрт ургуулсан дуу хоолой таних, эсвэл өөрөө жолооддог машины тоглуулах жагсаалтаас ямар нэгэн тусламж, урам зориг авах боломжтой.

Би том роботыг (Wallace 4) эхлүүлсэн боловч орон нутгийн Meetup групп байгуулснаас хойш надад жижиг хэмжээтэй зүйл хэрэгтэй байсан бөгөөд бүлэг нь компьютерийн алсын харааг маш их сонирхож байв.

Тиймээс би энэ төслийн санааг өгсөн Udemy-ийн өөрийн гэсэн жолоодлоготой машиныг бүтээхийг олж мэдэв.

Хэрэв та Udemy курсыг сонирхож байгаа бол үргэлжлүүлэн шалгаж болно. Энэ нь үе үе асар их хөнгөлөлтөөр худалдаанд гардаг. Тэмдэглэл: 1 -р хэсэг, 2 -р хэсэг байдаг - та хоёр сургалтыг багц хэлбэрээр (хөнгөлөлттэй) хэрхэн авах талаар судалгаа хийх хэрэгтэй.

Энэхүү зааварчилгааны зорилго нь хоёр талтай. Нэгдүгээрт, сургалтын зарим хэсэгт (эд анги, техник хангамж гэх мэт) зарим заагч, хувилбар өгөх. Хоёрдугаарт, курсээ өргөжүүлэх.

Udemy курсын гол зорилго:

Жижиг дугуйтай робот машиныг хоёр эгнээтэй жижигрүүлсэн замаар өөрөө жолоодох чадвартай болгох явдал юм.

Энэ нь эгнээний зурвасыг таних ёстой бөгөөд замын төгсгөлд хүрсэн үед.

Энэ нь зогсоох тэмдгийг (мөн зогсоох) таних ёстой.

Мөн Улаан, НОГООН замын дохио.

Энэ нь бас саад бэрхшээлийг (өөр машин) таньж, маневр хийх ёстой.

Энэхүү заавар нь хичээлд юу нэмдэг вэ:

Бяцхан машинаа алсын зайнаас USB Gamepad ашиглан жолоодоорой.

Хичээлийн санал болгож буй зүйлээс өөр хувилбаруудыг өг.

Та курс худалдаж авах шаардлагагүй байж магадгүй юм:

Энэхүү зааварчилгаа нь танд эхлүүлэхэд хэрэгтэй бүх зүйл байж магадгүй юм.

Хангамж

Үндсэн (санал болгосон) хэсгүүд:

Робот явах эд анги

Дөрвөн мотор

Ардуино

Raspberry Pi (3, 3B+, 4)

Камер (USB вэб камер эсвэл Picamera модуль)

Батерейны хүч

Асаах/унтраах унтраалга

холбогч утас

зогсолт (хуванцар, магадгүй металл)

Эд анги худалдаж авахаасаа өмнө зааварчилгаа болон видеог бүхэлд нь үзнэ үү.

Энэ төслийг хийсний дараа яг нарийн хэсэг нь тийм ч чухал биш гэдгийг ойлгосон.

Алхам 1: Сэлбэгийн талаар дэлгэрэнгүй мэдээлэл авах …

Image
Image
Бүрэлдэхүүн хэсгүүдийн талаар дэлгэрэнгүй …
Бүрэлдэхүүн хэсгүүдийн талаар дэлгэрэнгүй …
Бүрэлдэхүүн хэсгүүдийн талаар дэлгэрэнгүй …
Бүрэлдэхүүн хэсгүүдийн талаар дэлгэрэнгүй …

Холбогдох видеонд эд анги, миний олж мэдсэн зарим асуудлын талаар нарийвчлан бичсэн болно.

  • Янз бүрийн явах эд анги / мотор хайж үзээрэй
  • Моторууд аль хэдийн гагнасан утаснуудтай байх ёстой
  • Та өрөм, өрмийн бит, эсвэл илүү нүхтэй явах эд анги авахыг хүсч болно
  • Жин бол асуудал юм гэдгийг санаарай. Бүх зүйл аль болох хөнгөн байх ёстой.
  • L298 H-Bridge мотор жолооч маш сайн ажилладаг. ТАЙЛБАР: шураг терминал блоктой нэгийг аваарай (зураг харна уу)
  • Та хуванцар болон металл хоёуланг нь хоёуланг нь авахыг хүсч магадгүй, магадгүй M3 хэмжээ нь хамгийн сайн сонголт байх болно.

Хуванцар зогсолт нь самбарыг явах эд анги дээр бэхлэхэд тохиромжтой (мотор драйвер, Arduino, Raspberry, тэжээлийн компьютер, асаах/унтраах гэх мэт).

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

Өрөм + өрмийн бит

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

Өрөм ашиглах нь байрлалыг өөрчлөхөд маш хялбар болгодог (ялангуяа явах эд анги нь хуванцар байвал), энэ нь илүү мэргэжлийн харагдаж байна.

Алхам 2: Хөгжлийн явцад машинаа асаах

Хөгжлийн явцад машинаа асаах
Хөгжлийн явцад машинаа асаах
Хөгжлийн явцад машинаа асаах
Хөгжлийн явцад машинаа асаах

Миний бодлоор энэ төслийг эхлүүлэх хамгийн хурдан бөгөөд хялбар арга бол:

  • Arduino -ийн ноорог боловсруулах програм хангамжийн хувьд Arduino -г USB -ээр компьютерт холбоно уу
  • Raspberry Pi програм хангамжийн хувьд та дор хаяж 3 ампер тэжээх 5V USB тэжээлтэй байх ёстой. Мөн энэ нь асаах/унтраах унтраалгатай байх ёстой. Хэрэв та компьютер дээрээ сайн, хүчирхэг USB төвтэй холбогдоогүй бол Raspberry -ийг компьютераасаа шууд асааж чадахгүй байх.
  • Хэрэв та мотор/дугуйг туршихад бэлэн байгаа бол хамгийн хялбар нь сайн цахилгаан хангамж юм. Гэсэн хэдий ч эдгээр нь тийм ч хямд биш юм.

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

Дээрх зөвлөмжүүдтэй төстэй зүйлийг хийснээр та машинаа яг яаж асаах талаар санаа зовох хэрэггүй болно. Та энэ шийдвэрээ төслийн дараа хойшлуулж болно.

Алхам 3: Бодит ашиглалтын үед машинаа асаах

Бодит ашиглалтын үед машинаа асаах
Бодит ашиглалтын үед машинаа асаах
Бодит ашиглалтын үед машинаа асаах
Бодит ашиглалтын үед машинаа асаах

Хэрэв та 5V хүчдэлийн логикийг дагаж мөрдөх (эсвэл миний хийсэн зүйлийг) дагахаар шийдсэн бол 5V USB тэжээлийн банкууд бүгд энэ төсөлд сайн биш гэдгийг анхаараарай.

Энд гол зүйл бол танд 5V хэрэгтэй боловч танд дор хаяж 3 ампер хэрэгтэй! Үүнийг ингэж бодоод үзээрэй - та зөөврийн компьютерээ тэжээдэг цахилгаан банк хүсч байна (магадгүй).

Хэрэв та АНУ -д амьдардаг бол үүнийг хийх хамгийн сайн арга бол Best Buy -оос худалдаж авах явдал гэж бодож байна. Яагаад? Учир нь тэдний 14 хоногийн мөнгө буцааж өгөх бодлоготой байдаг.

Ажиллах нэгийг олохын өмнө би гурван өөр powerbank -ийг туршиж үзэх хэрэгтэй болсон. Бусад нь Raspberry Pi-ийг хэт хүчдэлийн талаар гомдоллоход хүргэдэг.

Би хамгийн хямд үнэтэй цахилгаан банкнаас эхэлж байсан бөгөөд өөр загварыг туршиж үзээд (илүү үнэтэй байсан) ажилласан нэгийг нь олох хүртэл.

Arduino -г хэрхэн яаж асаах вэ

Udemy курсын үеэр зохиогч Arduino -г powerbank -аас шууд (өөрийн захиалгат компьютер ашиглан) асаахаар сонгосон бөгөөд Arduino -ийн GPIO холбогч дээрх тэжээлийн зүүг ашигласан.

Гэхдээ би Arduino -г USB кабелиар Raspberry Pi -ээс шууд асаахаар шийдсэн.

Та аль нь илүү дээр болохыг шийдэх хэрэгтэй болно.

Мотор/мотор жолоочийг хэрхэн тэжээх вэ

Udemy курсын хувьд зохиогч мотор/драйверыг 5V цахилгаан банкнаас шууд асаахаар сонгосон. Хэрэв та энэ аргыг ашиглах юм бол хоёр зүйлийг анхаарч үзэх хэрэгтэй.

  1. Мотор анх эргэж эхлэхэд хамгийн их гүйдэл авдаг. Энэ нь тэжээлийн хүчдэл 5В -аас доош унах, бөөрөлзгөнө дахин тохируулах шалтгаан болдог.
  2. Хөдөлгүүрийг асаахын тулд ердөө 5В хүч хэрэглэвэл та мотороо чадах чинээгээрээ хангаж чадахгүй байгаа бөгөөд машин удаан явах болно (илүү удаан). Би моторуудыг (тэр тэжээлийн эх үүсвэрээр) туршиж үзсэн (зураг харна уу) дор хаяж 9 В хүртэл. Тэд 9В -т сайн ажилладаг.

9V (ба түүнээс дээш) талаархи ажиглалт

Хэрэв та энэхүү зааварчилгааны бүх зураг, видеог үзвэл би өөрийн гэсэн 9V тэжээлийн эх үүсвэрийг бий болгохын тулд өөрчлөн тохируулсан ПХБ -ийг угсарсан болохыг анзаарсан байх. Замдаа би хэдэн зүйл сурсан.

Яг одоо би моторыг асаахын тулд хэд хэдэн (3) 9V батерейны үүрийг зэрэгцээ ашиглаж байна. Би шүлтлэг болон NiMH цэнэглэдэг батерейг хоёуланг нь ашигласан.

Сурах туршлага №1: NiMH 9V батерейг зөв цэнэглэхэд удаан хугацаа шаардагдана.

Боломжит шийдэл: Олон батерейтай NiMH цэнэглэгчийг хөрөнгө оруулаарай. Энэ нь "ухаалаг" цэнэглэгч байх ёстой.

Сул тал: Тэд тийм ч хямд биш юм.

Сурах туршлага #2: 9V батерейнууд нь хэд хэдэн жижиг дотоод эсүүдээс бүрддэг. Хэрэв эдгээр эсүүдийн нэг нь нас барсан бол батерей нь бүхэлдээ ашиггүй болно. Надад ийм асуудал байгаагүй, гэхдээ би энэ талаар уншсан.

Суралцах туршлага №3: 9V батерей бүгд ижил хүчдэлтэй байдаггүй. Энэ нь чухал юм. Хүчдэл өндөр байх тусам илүү хурдтай байх боломжтой. Зарим батерейны эсүүд (мөн цэнэглэгч) нь ердөө 8.4 Вт байдаг. Зарим нь бүр бага. Зарим нь 9.6В хүчдэлтэй.

Сурах туршлага #4: 9V батерей, ялангуяа NiMH батерей нь хөнгөн жинтэй. Сайн зүйл. Гэсэн хэдий ч тэдний ихэнх нь зөвхөн гаралтын гүйдлийн мА өгдөг. Тийм учраас би тэдгээрийг зэрэгцүүлэн байрлуулах шаардлагатай болсон. Богино хугацаанд ч гэсэн танд бараг 2 ампер гүйдлийн хүчин чадал хэрэгтэй болно.

Суралцах туршлага №5: Радио удирдлагатай машин гэх мэт зүйлд ашигладаг 9.6В батерейны багц байдаг. Би хараахан ашиглаагүй байгаа боловч 9V батерейг над шиг хийхээс илүү их гүйдэл өгдөг гэж би бодож байна. Түүнчлэн, та нэг төхөөрөмжийг цэнэглэх боломжтой. Багцууд өөр өөр хэмжээтэй байдаг. Мөн жинг анхаарч үзэх хэрэгтэй. Дараа нь та машиныг бүхэлд нь эсвэл зөвхөн моторыг тэжээхэд энэ багцыг ашигладаг уу? Хэрэв бүхэл бүтэн машины хувьд танд Raspberry Pi-ийн 5V-ийн бууруулагч зохицуулагч хэрэгтэй болно.

L298 H-Bridge нь энэ зорилгоор 5V-ийг гаргах чадвартай боловч Raspberry Pi-д хэр их гүйдэл гаргаж чадах, L298 самбар дээр хэт их ачаалал өгөх эсэх талаар санаа зовж байна.

Хэрэв та хоёр тусдаа тэжээлийн эх үүсвэртэй байхаар шийдсэн бол жингийн асуудал (хэт хүнд) байж магадгүй юм.

Алхам 4: Gamepad жолоодох програм хангамж

Би энэ хэсгийг Роботоор удирддаг USB Remote USB Gamepad Instructable -ээр аль хэдийн оруулсан болно гэж бодож байна, тиймээс би үүнийг энд давтахгүй.

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

Алхам 5: Камер нэмэх

Камер нэмж байна
Камер нэмж байна
Камер нэмж байна
Камер нэмж байна
Камер нэмж байна
Камер нэмж байна

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

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

Миний АНУ -д амьдардаг газарт модон алчуур маш хямд байсан. Та тэдгээрийг Lowe's эсвэл Home Depot дээр худалдаж авах боломжтой. Би дугуй алчуурны оронд дөрвөлжин алчуур сонгосон.

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

Түүнчлэн, би USB вэбкамераар эхэлж, дараа нь Picamera модулийг ашиглах боломжтой болно гэж бодож, цамхаг хийсэн.

Та загасны нүдний төрлийн камер худалдаж авахыг хүсч магадгүй юм.

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

Дараа нь би суурийг машины явах эд анги дээр бэхлэв.

Хэрэв дараа нь би зүйлийг эргүүлэхийг хүсч байвал би явах эд ангиас суурийг нь салгаж, явах эд ангиудын шинэ байршилд шинэ цооног өрөмдөж, цамхгийг явах эд анги дээр бэхлээрэй.

Би бүх зүйлийг туршиж үзэхийн тулд том роботоос (Wallace Robot 4) авсан "намайг дагах" Python болон Node.js кодыг авчирсан. "Намайг дагаарай" талаар илүү дэлгэрэнгүй мэдээлэл өгсөн youtubes-ийн жагсаалтыг энэ хэсгийн зургуудаас үзнэ үү.

Миний хэлсэнчлэн эхлээд USB вэбкамер суурилуулах нь илүү хялбар болсон. Хожим нь би Picamera модулийг холбож болно.

Алхам 6: Нүүр таних - Албан тушаалыг тодорхойлох

Image
Image

Энэ хэсэг нь Udemy курсын гол чиглэл биш боловч хөгжилтэй дасгал байсан.

Хэрэв та "python opencv царай таних" гэсэн вэб хайлт хийвэл үүнийг хэрхэн хийх талаар олон сайн жишээг олж харах бөгөөд тэд бүгд ижил алхмуудыг дагаж мөрддөг.

  1. "haar" нүүр файлыг ачаална уу
  2. камерыг эхлүүлэх
  3. хүрээг татаж авах хүрдийг эхлүүлнэ үү
  4. өнгөт зургийг саарал масштаб руу хөрвүүлэх
  5. нүүр царай олохын тулд үүнийг opencv -д өгнө үү.
  6. дотоод гогцоо эхлүүлэх (олдсон нүүр бүрийн хувьд) (миний хувьд, хэрэв би 1 -ээс дээш нүүртэй бол цуцлах код нэмдэг)

Энд бид энэ зорилгоор нүүр царайг олж илрүүлсний дараа нүүрийг дүрсэлсэн төсөөллийн дөрвөлжингийн X, Y, W, H -ийг мэддэг болно.

Хэрэв та роботыг урагш эсвэл хойшлуулахыг хүсч байвал W -ийг авч үзэх хэрэгтэй. Хэрэв W хэт том (хэт ойрхон) байвал роботоо буцааж хөдөлгө. Хэрэв W хэт жижиг (хэт хол) байвал роботыг урагшлуул.

Зүүн/баруун хөдөлгөөн нь арай илүү төвөгтэй боловч галзуу биш юм. Зүүн ба баруун нүүрний байрлалыг хэрхэн тодорхойлох талаар нарийвчлан харуулсан энэ хэсгийн зургийг үзээрэй.

ТАЙЛБАР:

Хэрэв та вэб OpenCV -ийн жишээнүүдийн аль нэгийг ажиллуулбал тэд бүгд opencv -ийн "харж байгаа" зүйлийн бодит дүр төрхийг харуулдаг бөгөөд нүүрийг дөрвөлжин хэлбэрээр дүрсэлсэн байдаг. Хэрэв та ажиглаж байгаа бол хөдлөхгүй байсан ч тэр дөрвөлжин тогтвортой биш (тогтмол) байна.

Эдгээр өөрчлөлтүүд нь роботыг урагш, эсвэл арагш, зүүн эсвэл баруун тийш байнга хөдөлгөөнд оруулах болно.

Тиймээс та урагш/арагш, зүүн/баруун хоёуланд нь ямар нэгэн дельта байх шаардлагатай болно.

Зүүн ба барууныг авч үзье:

Зүүн ба баруун тийшээ тооцоолсны дараа ялгааг (дельта) олж аваарай.

дельта = abs (зүүн - баруун)

Аль нь илүү их тоо болохыг мэдэхгүй тул та үнэмлэхүй утгыг авах хэрэгтэй.

Дараа нь та дельта хамгийн бага хэмжээнээс их байвал шилжих гэж оролдохын тулд нөхцөлт кодыг нэмнэ үү.

Та урагш ба арагшаа ижил зүйлийг хийх болно.

Алхам 7: Нүүрний байрлал - Хөдөлж буй робот

Робот зүүн эсвэл баруун, урагш, эсвэл арагшаа хөдлөх шаардлагатай байгааг мэдмэгцээ үүнийг яаж хийх вэ?

Энэхүү зааварчилгаа нь одоо хийгдэж байгаа ажил тул одоогоор би том роботынхоо кодыг энэ төсөлд ашиглахын тулд хуулж авлаа. Энэ бүгдийг нарийвчлан харуулсан youtube дээрх миний роботын тоглуулах жагсаалтыг үзээрэй.

Товчхондоо надад код давхаргатай байна.

Python нүүр таних скрипт нь Node.js серверт http хүсэлт тавьдаг

Node.js сервер нь нүүлгэн шилжүүлэх чиглэлийн http хүсэлтийг сонсдог бөгөөд тэдгээрийг захиалгат сериал протокол болгон хөрвүүлдэг

Node.js сервер ба Arduino хооронд тохируулсан цуваа протокол

Ардуиногийн ноорог нь роботыг хөдөлгөх бодит тушаалыг гүйцэтгэдэг

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

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