Агуулгын хүснэгт:
- Алхам 1: Шаардлага
- Алхам 2: Мэдээллийн сургалт
- Алхам 3: Pi камерын таамаглалыг хэрэгжүүлэх
- Алхам 4: Arduino робот
- Алхам 5: Туршилт
- Алхам 6: Бүх нэмэлт файлууд
Видео: Raspberry Pi 4 Замын тэмдгийг таних робот: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Энэхүү заавар нь миний их сургуулийн төсөл дээр үндэслэсэн болно. Мэдрэлийн сүлжээ нь зургийг шинжилж, дараа нь хүлээн зөвшөөрсний үндсэн дээр arduino роботыг Рос -ээр дамжихыг хэлэх системийг бий болгох зорилготой байв.
Жишээлбэл, хэрэв баруун тийш эргэх тэмдгийг хүлээн зөвшөөрвөл робот баруун тийш эргэх болно, хэрэв зүүн тийш эргэх тэмдгийг хүлээн зөвшөөрвөл робот зүүн тийш эргэх болно. Ашиглах мэдээллийн сан бол INI (2019) -аас авсан замын тэмдгийн албан ёсны таних тэмдэг юм (Institut Fur Neuroinformatik), энэхүү мэдээллийн сан нь 43 ангитай боловч ердөө хоёр нь л шаардлагатай; Өгөгдлийн сан дахь 00033 ба 00034 фолдерууд нь зүүн ба баруун тийш эргэх тэмдэг юм.
Алхам 1: Шаардлага
Энэхүү төсөлд тавигдах шаардлага нь дараах байдалтай байна.
Ардуино робот. (үндсэндээ arduino uno, мотор жолооч, мотор) (хэрэв та робот ашигладаггүй бол шаардлагагүй)
Бөөрөлзгөнө pi 4.
Pi камер.
Шаардлагатай програм хангамж:
Python 3.
OpenCV 4.
Tensorflow.
arduino IDE (хэрэв та робот ашигладаггүй бол шаардлагагүй)
Рос (хэрэв та робот ашигладаггүй бол шаардлагагүй)
Таны дуртай питон иде юу ч байсан хамаагүй (Бөөрөлзгөнө дээр би Тонниг ашигладаг).
OpenCV болон Tensorflow -ийг тохируулахын тулд Adrian -ийн зааврыг дагана уу. Холбоос:
Би түүний аль болох олон хичээлийг үзэхийг зөвлөж байна, эдгээр нь үнэхээр сонирхолтой бөгөөд хоёулаа эхлэгч болон дунд шатны хүмүүст хэрэгтэй болно.
Алхам 2: Мэдээллийн сургалт
Галт тэрэгний скрипт нь 43 ангийн 50,000 орчим зургийг нэгтгэсэн мэдээллийн санд хандах зорилготой юм. Скриптийг олон төрлийн номын санг ашиглан python -д бичсэн болно: os - энэ нь python скриптийг мэдээллийн сан байрладаг зөв лавлахтай холбоход зориулагдсан болно. Matplotlib - энэ нь сургалтын загварын өгөгдлийг харуулахад зориулагдсан болно. Tensorflow ба keras - эдгээр нь хиймэл мэдрэлийн сүлжээний загварыг бий болгоход ашигладаг номын сангууд бөгөөд эдгээр загварыг боловсруулахад ашиглагддаг. Numpy - Энэ номын сан нь зургийг массив болгон хувиргахад зориулагдсан бөгөөд дараа нь загварыг ашиглан таамаглалыг олж авах боломжтой юм.
Хавсаргасан скрипт нь мэдээллийн сангаас загвар гаргах питон код юм. Энэ нь (5, 5) оролттой 2D хэлбэртэй эргэлт ба дараа нь нэгтгэх, дараа нь оролт нь (3, 3) оролттой ижил идэвхжүүлэлт, цуглуулалттай өөр нэг эргэлтээр дамждаг. Энэ нь хавтгайрахаасаа өмнө хамгийн сүүлд тохиолддог бөгөөд дараа нь нягтралыг ангийн ангилалд хэрэглэнэ, энэ тохиолдолд 43.
Дараагийн алхам бол загварыг эмхэтгэх явдал байв. Энэ бол өөдрөгжүүлэгчийг тохируулдаг хэсэг бөгөөд энэ нь 1 -р даалгаварт ашигласан өдөөгчтэй төстэй байсан тул sgd нь хамгийн тохиромжтой байв. Мөн хөрвүүлэгчийн хувьд алдагдлыг тохируулах шаардлагатай бөгөөд ангилал нь бүхэл тоон хэлбэртэй байдаг тул загвар тус бүрийг 0-1.1 хооронд хэлбэлздэг байдлаар урьдчилсан таамаглалыг 100% нарийвчлалтай гаргадаг.
Хөрвүүлэгчийг дуусгасны дараа зураг оролтыг боловсруулж эхлэхийн тулд генераторыг ашиглах шаардлагатай болно. Генератор нь хэд хэдэн хэсгээс бүрдэнэ: training_set - энэ нь сургалтанд ашиглагддаг өгөгдлийн сангийн холбоос юм, validation_data - энэ нь баталгаажуулалтад ашигладаг мэдээллийн сангийн холбоос, validation_steps - баталгаажуулалтад ашигласан алхмуудын тоо, баталгаажуулалт нь цаг бүрийн төгсгөлд тохиолддог.
Ерөнхийдөө мэдээллийн санг бүхэлд нь бүрэн устгах нь нэг үе дуусах ёстой. Тиймээс, жишээ нь, 1024 зургийн өгөгдлийн багцад дараах зүйлс шаардлагатай болно: Багцын хэмжээ = 32, Нэг үе дэх алхам = 32, эрин үе = 1. Алхам бүр нь бүхэл бүтэн багцын хэмжээг багтаасан тул 32 -ийн багцтай бол алхам нь 32 байх болно. гар, ангиудын тооноос том хэмжээтэй байх нь хамгийн сайн арга юм, учир нь хэрэв багцын хэмжээ бага байвал алхам бүр нь анги тус бүрийн зургийг оруулах боломжгүй болно.
Загвар нь сургалтаа дуусгасны дараа matplotlib ашиглан програм нь гаралтын график гаргах бөгөөд энэ нь сургалтын түүхийг эхнээс нь дуустал харуулна. График нь нарийвчлал, баталгаажуулалтын нарийвчлал, алдагдал, баталгаажуулалтын алдагдлаас бүрддэг бөгөөд үүнийг үе үе хувааж, сургалт хэрхэн явагдаж байгааг харуулдаг. Эцсийн шат бол загварыг.h5 хэлбэрээр хадгалах бөгөөд дараа нь урьдчилан таамаглах үйл явцыг хийх боломжтой болно. Загварыг хадгална гэдэг нь урьдчилан таамаглах програмыг ажиллуулах бүрт сургалтын хөтөлбөрийг дахин ажиллуулах шаардлагагүй болно гэсэн үг юм. Сургалтын хөтөлбөр нь бөөрөлзгөнө дээр нэг цаг тутамд 10 хүртэл минут зарцуулж болно.
Сургалтын скриптийг хавсаргав.
Алхам 3: Pi камерын таамаглалыг хэрэгжүүлэх
Дараагийн хөтөлбөр бол таамаглал ба нийтлэгчийн скрипт юм.
Эхний үе шат нь model.load () ашиглан загварыг ачаалах явдал юм. Хоёрдахь үе шат бол opencv ашиглан pi камераас фрэймүүдийг давтаж, дараа нь сургалтын үе шатанд оруулсан оролтын хэмжээтэй адил хэмжээтэй, 32 х 32 пикселийн хэмжээтэй байх болно. Үүнийг хийсний дараа шинэ хэмжээг өөрчилсөн хүрээ нь matrix гаргадаг model.predict () ашиглан загвараар дамжуулагдах бөгөөд матрицын элемент бүр 0 -ээс 1 хүртэл хөвөх бөгөөд элементийн индекс нь төлөөлж буй ангийнхтай ижил байна. Эхний элемент нь 1 -р анги бөгөөд тоо нь тухайн ангиас авсан зургийн баталгааг урьдчилан таамаглах явдал юм. Жишээлбэл
ТАЙЛБАР: Хэрэв та роботыг ашиглахгүй бол. Зүгээр л мөрүүдийг арилга:
"импортлох"
Def talker (чиглэл):
message = String ()
pub = rospy. Publisher ('робот', String, queue_size = 10)
rospy.init_node ('ярьдаг', нэргүй = үнэн)
мессеж = чиглэл
rospy.loginfo (мессеж)
pub.publish (зурвас)"
"ярьдаг (чиглэл)"
Pi камерын скриптийг хавсаргав.
Алхам 4: Arduino робот
Сүүлийн алхам бол робот програмын скрипт юм.
Энэ нь C ++ дээр бичигдсэн бөгөөд arduino uno -д зориулсан.ino файл юм. Хөтөлбөр нь номын сангийн менежерээс олж болох ros номын санг шаарддаг. Үүнийг импортлосны дараа жишээ файлууд байгаа бөгөөд энэ нь надад хэрэгтэй зүйлтэй ижил төстэй зорилгыг биелүүлэх тул би LED анивчдаг файлыг өргөжүүлэхийг сонгосон. Хөтөлбөр нь цахилгаан тасарч дуустал үргэлжлүүлэн ажилладаг бөгөөд эхлээд сэдвийг роботыг сонсдог бөгөөд хэрэв тухайн сэдвээс командыг авбал if командыг хэлж байгааг харах болно. Хэрэв тушаал үлдсэн бол скрипт нь зүүн тийш эргэх аргыг ажиллуулдаг, хэрэв тушаал зөв бол баруун тийш эргэх аргыг ажиллуулах болно, эс тэгвээс урагшлуулах аргыг ажиллуулах болно. Эдгээр гурван арга нь хоорондоо маш төстэй бөгөөд дижитал тээглүүрийг LOW (газардуулга) эсвэл 100 (PWM) гэж хэлдэг бөгөөд ингэснээр робот моторын жолоочид жаахан зөвшөөрөхийг хэлээд хэт хурдан биш байх болно. хүчдэл гарах. Эдгээр гаралтын дараалал нь роботыг зүүн, баруун тийш эргүүлэх эсвэл урагшлуулахад хүргэдэг бөгөөд энэ нь мотор руу чиглэсэн хүчдэлийн чиглэлтэй холбоотой юм.
Arduino -ийн.ino скриптийг хавсаргав.
Алхам 5: Туршилт
Төслийг эхнээс нь дуустал хавсаргасан болно. Эхний зураг нь сургалтын явцыг харуулж байна. Үүнийг дуусгасны дараа хийсэн загварыг хэвлэж харуулна. Гурав дахь зураг нь сургалтын скриптийн таамаглалыг харуулж байна. Энэ бол сургалтын скриптийн сүүлийн шат юм. Хэрэв та сургалтын скрипт байгаа хавтсыг харвал график, загварыг хийсэн болно. График энд 4 -р зураг шиг харагдах ёстой бөгөөд энэ нь сургалтын түүхийг эхнээс нь дуустал харуулав.
Эцсийн зураг нь pi камерын скриптийг ажиллуулж байгаа бөгөөд энэ нь pi камераас шууд дамжуулалт юм. фрейм бүр дээр урьдчилсан таамаглал гаргаж, таамаглалыг терминал дээр хэвлэнэ. Хүрээ нь камер юу харж байгааг харуулдаг.
Энэ төслийн талаархи миний их сургуулийн тайланг хавсаргав. Төслийн талаар дэлгэрэнгүй мэдээллийг уншина уу.
Алхам 6: Бүх нэмэлт файлууд
Эдгээрийн зарим нь миний хийсэн файлуудыг туршиж үзсэн.
Зөвлөмж болгож буй:
DS1307 RTC -тэй 8051 интерфейс болон LCD дээр цагийн тэмдгийг харуулах: 5 алхам
DS1307 RTC -тэй 8051 интерфэйс хийх, LCD дээр цаг хугацааны тэмдгийг харуулах: Энэхүү заавар дээр бид 8051 микроконтроллерийг ds1307 RTC -тэй хэрхэн холбох талаар тайлбарласан болно. Энд бид протеус симуляцийг ашиглан RTC хугацааг lcd хэлбэрээр харуулж байна
Корона шинж тэмдгийг илрүүлэх, мэдээлэл бүртгэх чадвартай ухаалаг цаг: 10 алхам
Корона шинж тэмдгийг илрүүлэх, өгөгдөл бүртгэх чадвартай ухаалаг цаг: Энэ бол LM35 болон Accelerometer ашиглан сервер дээр өгөгдөл бүртгэдэг ухаалаг цаг юм. Rtc нь цагийг харуулах, утсаар синхрончлох, өгөгдлийг бүртгэхэд ашигладаг. Esp32 -ийг цэнхэр өнгийн кортекс хянагчтай тархи болгон ашигладаг
Нүүр таних ба таних - OpenCV Python болон Arduino ашиглан Arduino Face ID: 6 алхам
Нүүр таних ба таних | OpenCV Python болон Arduino ашиглан Arduino Face ID: Нүүр царай таних нь орчин үеийн гар утасны хамгийн чухал онцлогуудын нэг юм. Тиймээс надад " Arduino төслийнхөө нүүр царайг таних боломжтой юу " хариулт нь тийм … Миний аялал дараах байдлаар эхэлсэн: Алхам 1: Бидэнд хандах
Замын объектын илрүүлэлтийг ашигладаг замын хөдөлгөөний анализатор: 11 алхам (зурагтай)
Замын объектын илрүүлэлтийг ашигладаг замын хөдөлгөөний анализатор: Орчин үеийн ертөнцөд гэрлэн дохио нь аюулгүй замд зайлшгүй шаардлагатай байдаг. Гэсэн хэдий ч улаан гэрэл асахтай зэрэгцэн хэн нэгэн гэрэл рүү ойртоход гэрлэн дохио олон удаа бухимдуулдаг. Энэ нь цагийг дэмий үрдэг, ялангуяа гэрэл асаж байвал
Төмөр замын өндөр төмөр замын тээврийн хэрэгслийг зам дээр хэрхэн яаж байрлуулах вэ: 10 алхам (зурагтай)
Төмөр замын өндөр төмөр замын тээврийн хэрэгслийг зам дээр хэрхэн яаж байрлуулах вэ: Аюулгүй байдлын урьдчилан сэргийлэх арга хэмжээ: Өндөр төмөр замын ачааны машиныг төмөр зам дээр тавьж буй хүн, туслах хүн нь харагдахын тулд өндөр үзэгдэх хувцас (хантааз, цамц, цамц) өмсөх ёстой. ирж болзошгүй замын хөдөлгөөнөөр. Хатуу малгай, бээлий ч өмсөх ёстой