Съдържание:
- Стъпка 1: Сглобяване на превозното средство
- Стъпка 2: Монтиране на двигатели
- Стъпка 3: Създаване на Vivado Block Design
- Стъпка 4: Общуване с LiDAR
- Стъпка 5: Попълване на мрежата с препятствия
- Стъпка 6: Комуникация с двигатели
- Стъпка 7: Планиране на пътя
Видео: Автономно превозно средство: 7 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Този проект е автономно навигиращ робот, който се опитва да достигне целта си, като същевременно избягва препятствията по пътя си. Роботът ще бъде оборудван със сензор LiDAR, който ще се използва за откриване на обекти в околностите му. Тъй като обектите се откриват и роботът се движи, картата в реално време ще бъде актуализирана. Картата ще се използва за запазване на местоположенията на идентифицираните препятствия. По този начин роботът няма да опита отново неуспешен път към позицията на целта. Вместо това ще се опитат пътища, които или нямат пречки, или пътища, които все още не са проверени за препятствия.
Роботът ще се движи с две колела с постоянен ток и две колела. Двигателите ще бъдат прикрепени към дъното на кръгла платформа. Двигателите ще се управляват от двама шофьори. Драйверите на двигателя ще получават PWM команди от процесора Zynq. Енкодерите на всеки двигател се използват за проследяване на позицията и ориентацията на превозните средства. Цялата система ще се захранва с LiPo батерия.
Стъпка 1: Сглобяване на превозното средство
Роботът се задвижва от два двигателя, прикрепени към страничните колела и след това допълнително се поддържа от две колела, едно отпред и едно отзад. Платформата и опорите на двигателя са изработени от алуминий от ламарина. Закупена е моторна главина за закрепване на колелата към двигателя. Необходимо е обаче да се направи междинен разклонител по поръчка, тъй като моделът на отворите на главината е различен от модела на отворите на колелото.
Избраният двигател е Port Escap 12V DC мотор с вградени енкодери. Този мотор може да бъде закупен в ebay на много разумна цена (вж. Проект за материали). Потърсете ключови думи „12V Escap 16 безредовна редукторна DC мотор с енкодери“в ebay, за да намерите двигателя. Обикновено има доста продавачи, от които да избирате. Спецификациите и изводите на двигателите са показани на диаграмите по -долу.
Сглобяването на робота започна с CAD моделен дизайн на шасито. Моделът по -долу показва изглед отгоре на профила с 2D форма, проектиран за шасито.
Предлага се шасито да бъде проектирано като 2D профил, така че да може лесно да се произвежда. Изрязахме 12”X12” лист алуминий във формата на шасито с помощта на фреза за водна струя. Платформата на шасито може да се реже и с лентов трион.
Стъпка 2: Монтиране на двигатели
Следващата стъпка е да направите опорите на двигателя. Предлага се опорите на двигателя да бъдат изработени от 90-градусов алуминий от ламарина. Използвайки тази част, двигателят може да бъде прикрепен конзолно към едната страна на ламарината, като се използват двете
М2 отворите на двигателя и другата страна могат да бъдат закрепени към платформата. В стойката на двигателя трябва да се пробият отвори, така че да могат да се използват винтове за закрепване на двигателя върху стойката на двигателя и опората на двигателя върху платформата. Монтажът на двигателя може да се види на горната фигура.
След това главината за двигатели Pololu (виж Кодекса за материалите) се поставя върху вала на двигателя и се затяга с предоставения фиксиращ винт и гаечен ключ. Моделът на отворите на главината на двигателя Pololu не съвпада с модела на отворите на колелото VEX, така че трябва да се направи междинен съединител по поръчка. Предлага се скрап ламарина алуминий, използван за направата на платформата на шасито, да се използва за направата на съединителя. Моделът на отворите и размерите на тази двойка са показани на фигурата по -долу. Външният диаметър и форма (не е задължително да е кръг) на алуминиевия съединител по поръчка няма значение, стига всички отвори да се поберат на детайла.
Стъпка 3: Създаване на Vivado Block Design
- Започнете, като създадете нов проект на Vivado и изберете Zybo Zynq 7000 Z010 като целево устройство.
- След това щракнете върху създаване на нов дизайн на блок и добавете Zynq IP. Щракнете двукратно върху Zynq IP и импортирайте предоставените XPS настройки за Zynq. След това активирайте UART0 с MIO 10..11 в раздела MIO конфигурации и също така се уверете, че Timer 0 и Watchdog timer са активирани.
- Добавете два AXI GPIOS към дизайна на блока. За GPIO 0 активирайте двуканален и настройте и двата на всички изходи. Задайте ширината на GPIO за канал 1 до 4 бита и за канал 2 до 12 бита, тези канали ще се използват за задаване на посоката на двигателя и изпращане на броя на отметките, които енкодерът измерва до процесора. За GPIO 1 настройте само един канал към всички входове с ширина на канала 4 бита. Това ще се използва за получаване на данни от енкодерите. Направете всички GPIO портове външни.
- След това добавете два AXI таймера. Направете портовете pwm0 на двата таймера външни. Това ще бъдат PWM, които контролират скоростта, при която се въртят двигателите.
- Накрая стартирайте автоматизацията на блока и автоматизацията на връзката. Уверете се, че дизайнът на блока, който имате, съответства на предоставения.
Стъпка 4: Общуване с LiDAR
Този LiDAR използва протокол SCIP 2.0 за комуникация чрез UART, прикаченият файл описва целия протокол.
За комуникация с LiDAR ще използваме UART0. LiDAR връща 682 точки от данни, всяка от които представлява разстоянието до обект под този ъгъл. LiDAR сканира обратно на часовниковата стрелка от -30 градуса до 210 градуса със стъпка от 0,351 градуса.
- Цялата комуникация с LiDAR се осъществява с ASCI знаци, вижте протокола SCIP за използвания формат. Започваме, като изпращаме QT командата за включване на LiDAR. След това изпращаме GS командата няколко пъти, като искаме 18 точки от данни наведнъж, за да ft в UARTS 64 байта FIFO. След това данните, върнати от LiDAR, се анализират и съхраняват в глобалния масив SCANdata.
- Всяка съхранена точка от данни е 2 байта кодирани данни. Предаването на тези данни в декодера ще върне разстояние в милиметри.
Във файла main_av.c ще намерите следните функции за комуникация с LiDAR
sendLIDARcmd (команда)
- Това ще изпрати входния низ към LiDAR през UART0
recvLIDARdata ()
- Това ще получава данни, след като команда е изпратена до LiDAR и ще съхранява данните в RECBuffer
requestDistanceData ()
- Тази функция ще изпрати поредица от команди за извличане на всички 682 точки от данни. След получаване на всеки набор от 18 точки от данни parseLIDARinput () се извиква да анализира данните и да съхранява постепенно точките от данни в SCANdata.
Стъпка 5: Попълване на мрежата с препятствия
GRID, който се съхранява, е 2D масив, като всяка индексна стойност представлява местоположение. Данните, съхранявани във всеки индекс, са или 0, или 1, без препятствие и препятствие съответно. Квадратното разстояние в милиметри, което представлява всеки индекс, може да бъде променено с определението GRID_SCALE във файла vehicle.h. Размерът на 2D масива също може да се променя, за да позволи на превозното средство да сканира по -голяма площ чрез промяна на дефиницията GRID_SIZE.
След сканиране на нов набор от данни за разстоянието от LiDAR се извиква updateGrid (). Това ще повтори всяка точка от данни, съхранена в масива SCANdata, за да определи кои индекси в мрежата имат пречки. Използвайки текущата ориентация на превозното средство, можем да определим ъгъла, който съответства на всяка точка от данни. За да определите къде е препятствие, просто умножете съответното разстояние по cos/sin на ъгъла. Добавянето на тези две стойности към текущата позиция x и y на превозните средства ще върне индекса в решетката на препятствието. Разделянето на разстоянието, върнато от тази операция, на GRID_SCALE ще ни позволи да варираме колко голямо е квадратното разстояние на всеки индекс.
Горните снимки показват текущата среда на превозните средства и получената мрежа.
Стъпка 6: Комуникация с двигатели
За да комуникираме с двигателите, започваме, като инициализираме GPIO, за да контролираме посоката на въртене на двигателя. След това записването директно на базовия адрес на ШИМ в AXI таймера ни позволява да зададем неща като периода и работния цикъл, които директно контролират скорост на въртене на двигателя.
Стъпка 7: Планиране на пътя
Предстои да се приложи в близко бъдеще.
Използвайки функционалността на мрежата и двигателя, описана по -горе, е много лесно да се внедрят алгоритми като A*. Докато автомобилът се движи, той ще продължи да сканира околността и да определи дали пътят, по който е, все още е валиден
Препоръчано:
Ключодържател за бягство от аварийно превозно средство: 11 стъпки (със снимки)
Ключодържател за бягство от аварийно превозно средство: Автомобилни произшествия. Браво! Най -добрият начин да избегнете инцидент е да използвате техники за безопасно шофиране и винаги да обръщате внимание къде отивате и на други автомобили около вас. Въпреки всичките си усилия, вие не контролирате друго задвижване
Наклонен RC модел превозно средство: 21 стъпки (със снимки)
Наклонен RC модел превозно средство: Този модел е наклонено превозно средство 1/10 с две предни колела и едно задно задвижване; е получен от електрически модел RC Arrma Vortex 1/10, който е използвал алуминиевото шаси и е премахнал целия гръб, където е поставил електродвигателя и неговия
Самостоятелно балансиращо превозно средство с едно колело: 8 стъпки (със снимки)
Самостоятелно балансиращо превозно средство с едно колело „Направи си сам“: Интересувате се от някои от тенденциите за самобалансиращи се продукти като segway и solowheel. Да, можете да отидете навсякъде, като карате колелото си без умора. но е чудесно, ако можете да го имате сами. Е, нека го изградим
Как да настроите железопътно високорелсово превозно средство на коловоза: 10 стъпки (със снимки)
Как да поставите железопътно високорелсово превозно средство на пистата: Мерки за безопасност: Лицето, което поставя камиона на релсата, и лицето, което помага, трябва да носят дрехи с висока видимост (напр. Жилетка, суичър, палто), за да бъдат видени чрез евентуален насрещен трафик. Каска и ръкавици също трябва да се носят за
KEVIN напълно автономно превозно средство: 17 стъпки (със снимки)
KEVIN напълно автономно превозно средство: Това е Кевин. Това е радиоуправляема кола с възможност за пълно автономно шофиране. Първата ми цел беше да направя автономно превозно средство, контролирано от Arduino. Затова си купих евтини китайски шасита. Но беше ужасно, защото не успях да прикача никакъв c