Мазмуну:
- 1 -кадам: Унааны чогултуу
- 2 -кадам: моторлорду орнотуу
- 3 -кадам: Vivado Block дизайнын түзүү
- 4 -кадам: LiDAR менен баарлашуу
- 5 -кадам: Торлорду тоскоолдуктар менен толтуруу
- 6 -кадам: Моторлор менен байланыш
- 7 -кадам: Жол пландаштыруу
Video: Автономдуу унаа: 7 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул долбоор өз жолунда тоскоолдуктарды болтурбоо менен максатына жетүүгө аракет кылган автономдуу навигациялык робот. Робот 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 долбоорун түзүүдөн баштаңыз жана максаттуу түзмөк катары 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*сыяктуу алгоритмдерди ишке ашыруу абдан оңой. Унаа жылган сайын айлананы текшерүүнү улантат жана анын жолу дагы эле жарактуу экенин аныктайт
Сунушталууда:
Автономдуу параллелдүү унаа токтоочу машина Arduino аркылуу жасалат: 10 кадам (сүрөттөр менен)
Автономдуу параллелдүү унаа токтоочу машиналарды Arduino аркылуу жасоо: Автономдуу паркингде биз белгилүү бир божомолдорго ылайык алгоритмдерди жана позициялардын сенсорлорун түзүшүбүз керек. Сценарий боюнча, жолдун сол жагы дубалдардан жана парктан турат. Сиздей
Автономдуу алыстан башкарылуучу унаа: 6 кадам
Автономдуу Алыстан Башкарылган Унаа: Бул нускоочу Түштүк Флорида университетинин Макекурсунун (www.makecourse.com) долбоорунун талабын аткаруу үчүн түзүлгөн. Бул долбоор Arduino менен кош H-көпүрөлүү Мотор Дискинин жөндөмдүүлүгүн көрсөтөт. төрт көзөмөлдөө үчүн
FinduCar: Акылдуу унаа ачкычы Элди унаа токтоп турган жерге жетелейт: 11 кадам (Сүрөттөр менен)
FinduCar: Акылдуу унаа ачкычы Элди унаа токтоп турган жерге жетелейт: Жогорудагы көйгөйлөрдү чечүү үчүн бул долбоор адамдарды машинаны токтоткон жерге багыттоочу акылдуу унаа ачкычын иштеп чыгууну сунуштайт. Ал эми менин планым - GPS ачкычын машинанын ачкычына киргизүү. Смартфондун колдонмосун колдонуунун кажети жок
KEVIN Толук автономдуу унаа: 17 кадам (Сүрөттөр менен)
KEVIN Толук автономдуу унаа: Бул Кевин. Бул толугу менен автономдуу дискти аткарууга жөндөмдүү радио көзөмөлдөгү унаа. Биринчи максатым - автономдуу машинаны Arduino башкарган кылуу. Ошентип арзан кытай шассиин сатып алдым. Бирок бул коркунучтуу болчу, анткени мен эч кандай с кошо албадым
PiCar: Автономдуу унаа платформасын куруу: 21 кадам (сүрөттөр менен)
PiCar: Автономдуу автоунаа платформасын куруу: Бул Инструкция PiCar курууга керектүү болгон кадамдарды деталдаштырат PiCar деген эмне? PiCar - булагы ачык автономдуу автономдуу платформа. Бул автономдуу эмес, бирок сиз машинаны Arduino же Raspberry Pi менен башкаруу үчүн сенсорлорду оңой эле кошо аласыз