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

Raspberry Pi 4 Замын тэмдгийг таних робот: 6 алхам
Raspberry Pi 4 Замын тэмдгийг таних робот: 6 алхам

Видео: Raspberry Pi 4 Замын тэмдгийг таних робот: 6 алхам

Видео: Raspberry Pi 4 Замын тэмдгийг таних робот: 6 алхам
Видео: SCP-261 Пан-мерное Торговый и эксперимент Войти 261 объявление Де + полный + 2024, Арваннэгдүгээр
Anonim
Raspberry Pi 4 Замын тэмдгийг таних робот
Raspberry Pi 4 Замын тэмдгийг таних робот

Энэхүү заавар нь миний их сургуулийн төсөл дээр үндэслэсэн болно. Мэдрэлийн сүлжээ нь зургийг шинжилж, дараа нь хүлээн зөвшөөрсний үндсэн дээр 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: Бүх нэмэлт файлууд

Бүх нэмэлт файлууд
Бүх нэмэлт файлууд

Эдгээрийн зарим нь миний хийсэн файлуудыг туршиж үзсэн.

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