Оглавление:
- Шаг 1: Сборка автомобиля
- Шаг 2: Установка двигателей
- Шаг 3: Создание блочного дизайна Vivado
- Шаг 4: общение с лидаром
- Шаг 5: заполнение сетки препятствиями
- Шаг 6: общение с двигателями
- Шаг 7: планирование пути
Видео: Автономный автомобиль: 7 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Этот проект представляет собой автономно перемещающегося робота, который пытается достичь своей цели, избегая препятствий на своем пути. Робот будет оснащен датчиком LiDAR, который будет использоваться для обнаружения объектов в его окрестностях. По мере обнаружения объектов и движения робота карта в реальном времени обновляется. Карта будет использоваться для сохранения местоположения обнаруженных препятствий. Таким образом, робот не будет повторно пытаться пройти неудачный путь к цели. Вместо этого он будет пробовать пути, на которых либо нет препятствий, либо пути, которые еще не были проверены на наличие препятствий.
Робот будет двигаться с помощью двух колес с приводом от двигателя постоянного тока и двух колес. Моторы будут прикреплены ко дну круглой платформы. Двигатели будут управляться двумя приводами двигателей. Драйверы двигателей будут получать команды ШИМ от процессора Zynq. Все энкодеры на каждом моторе используются для отслеживания положения и ориентации транспортных средств. Вся система будет питаться от LiPo батареи.
Шаг 1: Сборка автомобиля
Робот приводится в движение двумя двигателями, прикрепленными к боковым колесам, а затем дополнительно поддерживается двумя роликами, одним спереди и одним сзади. Платформа и опоры двигателя были изготовлены из листового алюминия. Приобретена ступица мотора для крепления колес к мотору. Однако необходимо было изготовить специальную промежуточную муфту, потому что схема расположения отверстий ступицы отличалась от схемы расположения отверстий колеса.
В качестве двигателя был выбран двигатель Port Escap 12 В постоянного тока со встроенными энкодерами. Этот мотор можно купить на ebay по очень разумной цене (см. Спецификацию материалов). Чтобы найти двигатель, выполните поиск по ключевым словам «12V Escap 16 Двигатель постоянного тока без сердечника с редуктором и кодировщиками». Обычно есть изрядное количество продавцов, из которых можно выбрать. Технические характеристики и распиновка двигателей показаны на схемах ниже.
Сборка робота началась с CAD-модели шасси. На представленной ниже модели показан вид сверху двухмерного профиля, предназначенного для шасси.
Предлагается, чтобы шасси было спроектировано как 2D-профиль, чтобы его можно было легко изготовить. Мы вырезаем из листа алюминия 12 "X12" форму шасси с помощью водоструйного резака. Платформу шасси также можно было разрезать ленточной пилой.
Шаг 2: Установка двигателей
Следующим шагом будет изготовление крепления мотора. Рекомендуется, чтобы опоры двигателя были изготовлены из алюминиевого листового металла с углом наклона 90 градусов. С помощью этой детали двигатель можно закрепить консольно на одной стороне листового металла с помощью двух
Отверстия M2 двигателя и другая поверхность могут быть прикреплены к платформе болтами. В креплении двигателя необходимо просверлить отверстия, чтобы можно было использовать винты для крепления двигателя к креплению двигателя и крепления двигателя на платформе. Крепление двигателя показано на рисунке выше.
Затем концентратор двигателя Pololu (см. Спецификацию материалов) помещается на вал двигателя и затягивается с помощью прилагаемого установочного винта и шестигранного ключа. Схема расположения отверстий ступицы двигателя Pololu не соответствует схеме расположения отверстий на колесе VEX, поэтому необходимо изготовить специальную промежуточную муфту. Предлагается использовать алюминиевый лом из листового металла, из которого изготовлена платформа шасси, для изготовления муфты. Схема расположения отверстий и размеры этой пары показаны на рисунке ниже. Внешний диаметр и форма (не обязательно круг) нестандартной алюминиевой муфты не имеют значения, если все отверстия подходят к детали.
Шаг 3: Создание блочного дизайна Vivado
- Начните с создания нового проекта Vivado и выберите Zybo Zynq 7000 Z010 в качестве целевого устройства.
- Затем нажмите «Создать новый дизайн блока» и добавьте Zynq IP. Дважды щелкните IP-адрес Zynq и импортируйте предоставленные настройки XPS для Zynq. Затем включите UART0 с MIO 10..11 на вкладке конфигурации MIO, а также убедитесь, что таймер 0 и сторожевой таймер включены.
- Добавьте два AXI GPIOS в конструкцию блока. Для GPIO 0 включите двойной канал и установите оба для всех выходов. Установите ширину GPIO для канала 1 до 4 бит и для канала 2 до 12 бит, эти каналы будут использоваться для установки направления двигателя и отправки количества тиков, измеренных кодировщиком, на процессор. Для GPIO 1 установите только один канал для всех входов с шириной канала 4 бита. Это будет использоваться для получения данных от кодировщиков. Сделайте все порты GPIO внешними.
- Затем добавьте два таймера AXI. Сделайте порты pwm0 на обоих таймерах внешними. Это будут ШИМ, которые контролируют скорость вращения двигателей.
- Напоследок запустите автоматизацию блоков и автоматизацию соединений. Убедитесь, что конструкция блока у вас соответствует предоставленному.
Шаг 4: общение с лидаром
Этот LiDAR использует протокол SCIP 2.0 для связи через UART, прикрепленный файл описывает весь протокол.
Для связи с LiDAR мы будем использовать UART0. LiDAR возвращает 682 точки данных, каждая из которых представляет расстояние до объекта под этим углом. LiDAR сканирует против часовой стрелки от -30 градусов до 210 градусов с шагом 0,351 градуса.
- Вся связь с LiDAR осуществляется с помощью символов ASCI, см. Используемый формат в протоколе SCIP. Начнем с отправки команды QT для включения LiDAR. Затем мы несколько раз отправляем команду GS, запрашивая 18 точек данных одновременно в ft в 64-байтовом FIFO UARTS. Данные, возвращаемые LiDAR, затем анализируются и сохраняются в глобальном массиве SCANdata.
- Каждая сохраненная точка данных представляет собой 2 байта закодированных данных. Передача этих данных в декодер вернет расстояние в миллиметрах.
В файле main_av.c вы найдете следующие функции для связи с LiDAR
sendLIDARcmd (команда)
- Это отправит входную строку в LiDAR через UART0
recvLIDARdata ()
- Он получит данные после того, как команда будет отправлена в LiDAR, и сохранит данные в RECBuffer
requestDistanceData ()
- Эта функция отправит серию команд для получения всех 682 точек данных. После получения каждого набора из 18 точек данных вызывается parseLIDARinput () для анализа данных и постепенного сохранения точек данных в SCANdata.
Шаг 5: заполнение сетки препятствиями
Сохраняемая GRID представляет собой двумерный массив, в котором каждое значение индекса представляет местоположение. Данные, хранящиеся в каждом индексе, имеют значение 0 или 1, нет препятствий и препятствий соответственно. Квадратное расстояние в миллиметрах, которое представляет каждый индекс, можно изменить с помощью определения GRID_SCALE в файле vehicle.h. Размер 2D-массива также можно изменять, чтобы позволить транспортному средству сканировать большую область, изменяя определение GRID_SIZE.
После сканирования нового набора данных о расстоянии из LiDAR вызывается updateGrid (). Это будет перебирать каждую точку данных, хранящуюся в массиве SCANdata, чтобы определить, какие индексы в сетке имеют препятствия. Используя текущую ориентацию автомобиля, мы можем определить угол, соответствующий каждой точке данных. Чтобы определить, где находится препятствие, вы просто умножаете соответствующее расстояние на cos / sin угла. Добавление этих двух значений к текущему положению x и y транспортного средства вернет индекс в сетке препятствия. Разделение расстояния, возвращаемого этой операцией, на GRID_SCALE позволит нам варьировать, насколько велик квадрат расстояния каждого индекса.
На рисунках выше показаны текущее окружение транспортных средств и итоговая сетка.
Шаг 6: общение с двигателями
Для связи с двигателями мы начинаем с инициализации GPIO, чтобы контролировать направление вращения двигателя. Затем запись непосредственно в базовый адрес ШИМ в таймере AXI позволяет нам устанавливать такие параметры, как период и рабочий цикл, которые напрямую контролируют скорость вращения двигателя.
Шаг 7: планирование пути
Будет реализовано в ближайшее время.
Используя ранее описанные функциональные возможности сети и двигателя, очень легко реализовать такие алгоритмы, как A *. По мере движения транспортного средства оно будет продолжать сканировать окружающую территорию и определять, действителен ли путь, по которому он движется.
Рекомендуемые:
GorillaBot - автономный четырехногий спринтерский робот Arduino, напечатанный на 3D-принтере: 9 шагов (с изображениями)
GorillaBot - 3D-печатный автономный спринтерский четвероногий робот Arduino: каждый год в Тулузе (Франция) проводится гонка Toulouse Robot Race # TRR2021 Гонка состоит из 10-метрового автономного спринта для двуногих и четвероногих роботов. Текущий рекорд, который я собираю для четвероногих, составляет 42 секунды для четвероногих. Спринт на 10 м. Итак, в м
Биометрический въезд в автомобиль - настоящий автомобиль без ключа: 4 шага
Биометрический въезд в автомобиль - настоящий автомобиль без ключа: Несколько месяцев назад моя дочь спросила меня, почему современные автомобили не оснащены биометрической системой входа, если она есть даже в мобильном телефоне. С тех пор работал над тем же, и, наконец, мне удалось установить и протестировать что-то на моем T
Автономный автомобиль для удержания полосы движения с использованием Raspberry Pi и OpenCV: 7 шагов (с изображениями)
Автономный автомобиль для удержания полосы движения с использованием Raspberry Pi и OpenCV: в этих инструкциях будет реализован автономный робот, поддерживающий полосу движения, который будет проходить через следующие этапы: Сбор деталей Установка необходимых компонентов программного обеспечения Сборка оборудования Первый тест Обнаружение линий полосы движения и отображение руководства
Автономный автомобиль с дистанционным управлением: 6 шагов
Автономный автомобиль с дистанционным управлением: этот учебник был создан в соответствии с требованиями проекта Makecourse в Университете Южной Флориды (www.makecourse.com). Этот проект демонстрирует, как Arduino вместе с двойным Н-мостовым двигателем может контролировать четыре
КЕВИН - полностью автономный автомобиль: 17 шагов (с изображениями)
КЕВИН, полностью автономный автомобиль: это Кевин. Это радиоуправляемая машина с возможностью полного автономного привода. Моей первой целью было сделать автономное транспортное средство управляемым Arduino. Поэтому я купил дешевое китайское шасси. Но это было ужасно, потому что я не мог прикрепить