Мазмуну:

Автономдуу унаа: 7 кадам (сүрөттөр менен)
Автономдуу унаа: 7 кадам (сүрөттөр менен)

Video: Автономдуу унаа: 7 кадам (сүрөттөр менен)

Video: Автономдуу унаа: 7 кадам (сүрөттөр менен)
Video: Калыбек менен Садыктан тамашалуу ролик / 777 кукуруздары 2024, Июль
Anonim
Автономдуу унаа
Автономдуу унаа
Автономдуу унаа
Автономдуу унаа

Бул долбоор өз жолунда тоскоолдуктарды болтурбоо менен максатына жетүүгө аракет кылган автономдуу навигациялык робот. Робот LiDAR сенсору менен жабдылып, анын айланасындагы нерселерди табууга болот. Объектилер табылып, робот ары -бери жылганда, реалдуу убакыт картасы жаңыртылат. Карта аныкталган тоскоолдуктарды сактоо үчүн колдонулат. Ошентип, робот максаттуу позицияга карай ийгиликсиз жолду кайра жасабайт. Ал анын ордуна эч кандай тоскоолдуктары жок же тоскоолдуктар текшериле элек жолдорго аракет кылат.

Робот DC кыймылдаткычынын эки дөңгөлөгү жана эки дөңгөлөк дөңгөлөгү менен кыймылдайт. Моторлор тегерек платформанын түбүнө бекитилет. Моторлорду эки мотор айдоочу башкарат. Мотор айдоочулары Zynq процессорунан PWM буйруктарын алышат. Ар бир мотордогу коддогучтардын бардыгы унаанын жайгашуусун жана багытын көзөмөлдөө үчүн колдонулат. Бүт система LiPo батарейкасы менен иштейт.

1 -кадам: Унааны чогултуу

Унааны чогултуу
Унааны чогултуу
Унааны чогултуу
Унааны чогултуу
Унааны чогултуу
Унааны чогултуу
Унааны чогултуу
Унааны чогултуу

Робот каптал дөңгөлөктөргө бекитилген эки мотор менен иштейт, андан кийин кошумча эки дөңгөлөк менен колдоого алынат, бири алдыда, бири артта. Платформа жана мотор орнотмолору алюминийден жасалган. Дөңгөлөктөрдү моторго бекитүү үчүн мотор борбору сатылып алынган. Бирок, борбордук тешиктин үлгүсү дөңгөлөктүн тешик үлгүсүнөн айырмаланып тургандыктан, атайын орто кошкуч жасалышы керек болчу.

Мотор тандалган коддогучтары бар Port Escap 12V DC мотору болгон. Бул моторду ebayден абдан ылайыктуу баада сатып алууга болот (Материалдар Биллин караңыз). Моторду табуу үчүн ebayден "12V Escap 16 Coreless Geared DC Motor Encoders менен" ачкыч сөздөрүн издеңиз. Адатта, тандоо үчүн сатуучулардын адилеттүү саны бар. Моторлордун өзгөчөлүктөрү жана түйүндөрү төмөнкү диаграммаларда көрсөтүлгөн.

Роботту чогултуу шассинин CAD режиминин дизайны менен башталды. Төмөндөгү модель шасси үчүн иштелип чыккан 2D формасындагы профилдин үстүңкү көрүнүшүн көрсөтөт.

Бул шасси оңой өндүрүлүшү үчүн 2Dprofile катары иштелип чыгышы сунушталат. Биз 12 дюймдук X12 дюймдук алюминийди суу агуучу кескичтин жардамы менен шасси формасына келтирдик. Шасси платформасын тилкелүү араа менен да кессе болот.

2 -кадам: моторлорду орнотуу

Моторлорду орнотуу
Моторлорду орнотуу
Моторлорду орнотуу
Моторлорду орнотуу

Кийинки кадам - моторду орнотуу. Кыймылдаткычтарды 90 градус металл алюминийден жасоо сунушталат. Бул бөлүктү колдонуп, моторду экөөнү колдонуп, металлдын бир бетине консоль менен бекитсе болот

Мотордун жана башка бетинин M2 тешиктери платформага бекитилет. Кыймылдаткычты мотордун тетигине жана моторду платформага бекитүү үчүн бурамалар колдонулушу үчүн мотор тоосуна бургулоо керек. Кыймылдаткычты жогорудагы сүрөттөн көрүүгө болот.

Андан кийин Pololu Motor Hub (Материалдар Биллин караңыз) мотор шахтасына жайгаштырылган жана берилген бурама жана Аллен ачкычы менен бекемделген. Pololu мотор хабынын тешик үлгүсү VEX дөңгөлөгүнүн тешик үлгүсүнө дал келбейт, андыктан атайын ортоңку кошкуч жасалышы керек. Бул шасси платформасын жасоо үчүн колдонулган металл сыныктары Алюминийден кошкуч жасоо үчүн колдонулушу сунушталат. Бул түгөйдүн тешик үлгүсү жана өлчөмдөрү төмөнкү сүрөттө көрсөтүлгөн. Көнүмүш алюминий кошкучтун сырткы диаметри жана формасы (тегерек болуунун кажети жок) бардык тешиктер бөлүккө туура келгенче мааниге ээ эмес.

3 -кадам: Vivado Block дизайнын түзүү

Vivado Block дизайнын түзүү
Vivado Block дизайнын түзүү
Vivado Block дизайнын түзүү
Vivado Block дизайнын түзүү

- Жаңы Vivado долбоорун түзүүдөн баштаңыз жана максаттуу түзмөк катары Zybo Zynq 7000 Z010 тандаңыз.

- Кийинки жаңы блок дизайнын түзүүнү чыкылдатыңыз жана Zynq IP кошуңуз. Zynq IPге эки жолу чыкылдатыңыз жана Zynq үчүн XPS орнотууларын импорттоңуз. Андан кийин UART0ду MIO конфигурациялары өтмөгүнүн астындагы MIO 10..11 менен иштетип, Timer 0 менен Watchdog таймеринин иштетилгенин текшериңиз.

- Блоктун дизайнына эки AXI GPIOS кошуңуз. GPIO 0 үчүн эки каналды иштетип, экөөнү тең бардык чыгууларга коюңуз. GPIO туурасын 1 -каналдан 4 -битке жана 2 -каналдан 12 -битке чейин орнотуңуз, бул каналдар мотордун багытын белгилөө үчүн колдонулат жана коддогучтун өлчөмүн процессорго жөнөтүү үчүн колдонулат. GPIO 1 үчүн каналдын туурасы 4 бит болгон бардык кирүүлөргө бир гана каналды коюңуз. Бул коддогучтардан маалыматтарды алуу үчүн колдонулат. Бардык GPIO портторун тышкы кылыңыз.

- Кийинки эки AXI таймерин кошуңуз. Эки таймердеги pwm0 портторун тышкы кылыңыз. Бул моторлордун айлануу ылдамдыгын көзөмөлдөгөн пвмдар болот.

- Акырында блокту автоматташтырууну жана туташууну автоматташтырыңыз. Сиздеги блоктун дизайны берилгенге дал келгенин текшериңиз.

4 -кадам: LiDAR менен баарлашуу

Бул LiDAR UART аркылуу байланыш үчүн SCIP 2.0 протоколун колдонот, тиркелген файл бүт протоколду сүрөттөйт.

LiDAR менен байланышуу үчүн биз UART0 колдонобуз. LiDAR бул бурчтагы объектке чейинки аралыкты билдирген 682 маалымат пунктун кайтарат. LiDAR 0.351 градус кадамы менен сааттын жебесине каршы -30 градустан 210 градуска чейин сканерлейт.

- LiDAR менен баардык байланыш ASCI белгилери менен жүргүзүлөт, колдонулган формат үчүн SCIP протоколуна кайрылыңыз. Биз LiDAR күйгүзүү үчүн QT буйругун жөнөтүүдөн баштайбыз. Андан кийин биз GS буйругун UARTS 64 байт FIFO менен ftге бир убакта 18 маалымат пунктун сурап жөнөтөбүз. LiDARдан кайтарылган маалыматтар андан кийин талданат жана SCANdata глобалдык массивине сакталат.

- Ар бир сакталган маалымат чекити коддолгон маалыматтын 2 байтын түзөт. Бул маалыматты декодерге өткөрүп берүү, миллиметр менен бир аралыкты кайтарат.

Main_av.c файлында LiDAR менен байланышуу үчүн төмөнкү функцияларды таба аласыз

sendLIDARcmd (буйрук)

- Бул UART0 аркылуу LiDARге киргизүү сабын жөнөтөт

recvLIDARdata ()

- Бул LiDARга буйрук жөнөтүлгөндөн кийин маалыматтарды алат жана маалыматты RECBufferде сактайт

requestDistanceData ()

- Бул функция бардык 682 маалымат пунктун алуу үчүн бир катар буйруктарды жөнөтөт. 18 маалымат пунктунун ар бир топтомун алгандан кийин parseLIDARinput () маалыматтарды талдоого жана SCANdataда маалымат пункттарын акырындык менен сактоого чакырылат.

5 -кадам: Торлорду тоскоолдуктар менен толтуруу

Тоскоолдуктар менен калктын тору
Тоскоолдуктар менен калктын тору
Тоскоолдуктар менен калктын тору
Тоскоолдуктар менен калктын тору

Сакталган GRID - бул ар бир индекстин мааниси бар 2D массиви. Ар бир индексте сакталган маалыматтар 0 же 1 болот, эч кандай тоскоолдук жана тоскоолдук жок. Ар бир индекстин миллиметрдик чарчы аралыкын transport.h файлындагы GRID_SCALE аныктамасы менен өзгөртүүгө болот. 2D массивдин өлчөмү, ошондой эле GRID_SIZE аныктамасын өзгөртүү менен унаага чоңураак аймакты сканерлөөгө мүмкүнчүлүк берүү үчүн ар кандай болушу мүмкүн.

LiDARдан дистанциянын жаңы маалымат топтому сканерленгенден кийин updateGrid () деп аталат. Бул SCANdata массивинде сакталган ар бир маалымат чекити аркылуу кайталанып, тордо кайсы индекстердин тоскоолдуктары бар экенин аныктайт. Унаанын учурдагы багытын колдонуу менен биз ар бир маалымат чекитине туура келген бурчту аныктай алабыз. Кайсы жерде тоскоолдук бар экенин аныктоо үчүн, тийиштүү аралыкты бурчтун cos/sin менен көбөйтүү керек. Унаалардын учурдагы x жана y позициясына бул эки маанини кошуу, тоскоолдуктун торчосундагы индексти кайтарат. Бул операция менен кайтарылган аралыкты GRID_SCALEге бөлүү бизге ар бир индекстин квадрат аралыкынын канчалык чоң экенин өзгөртүүгө мүмкүндүк берет.

Жогорудагы сүрөттөр транспорт каражаттарынын учурдагы айлана -чөйрөсүн жана натыйжасында Gridди көрсөтөт.

6 -кадам: Моторлор менен байланыш

Кыймылдаткычтар менен баарлашуу үчүн GPIO'лорду баштоо менен баштайбыз, мотор айланат. Андан кийин AXI таймериндеги PWMлердин базалык дарегине түз жазуу бизге мезгилди жана милдет циклин орнотууга мүмкүнчүлүк берет. мотордун айлануу ылдамдыгы.

7 -кадам: Жол пландаштыруу

Жакынкы келечекте ишке ашырылышы керек.

Мурда сүрөттөлгөн сетка жана мотор функциясын колдонуп, A*сыяктуу алгоритмдерди ишке ашыруу абдан оңой. Унаа жылган сайын айлананы текшерүүнү улантат жана анын жолу дагы эле жарактуу экенин аныктайт

Сунушталууда: