Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Внести вклад в разработку кода
Синхронизировать код
README.md
USV_obstacle_avoidance
Беспилотное судно, избегающее препятствий, модуль, использующий лидар или радар миллиметрового диапазона в качестве датчика для обнаружения препятствий. Устанавливается на микроконтроллер STM32F103.
I. Основные сведения
Каталог файлов
- В каталоге OA-without-OS хранятся проекты системы избегания препятствий без операционной системы.
- Каталог OA-with-OS-xxxxx содержит проекты системы избегания препятствий на основе операционной системы FreeRTOS.
- В каталоге OA-with-integrated-ver хранятся проекты, объединяющие решения из вариантов 1 и 3. Можно выбрать вариант реализации с помощью условной компиляции.
- Каталог OA-with-lidar-ver содержит проект варианта 1.
- Каталог OA-with-mmwave-ver содержит проект варианта 3.
- Каждый проект независим и может быть запущен отдельно.
Варианты системы избегания препятствий
- Примечание: указанные датчики являются примерами датчиков, используемых автором в процессе разработки. Для использования других датчиков достаточно изменить протокол последовательного порта!
- Вариант 1: один лазерный датчик + один рулевой механизм: рулевой механизм вращает лазерный датчик для сканирования препятствий (реализовано). Стоимость: 300 юаней.
- Вариант 2: только один однолучевой одноприёмный радарный датчик миллиметрового диапазона (невозможно измерить угол, можно измерить только большие и удалённые препятствия). Не рекомендуется. Стоимость: от 500 до 1000 юаней.
- Вариант 3: только один многолучевой одноприёмный радарный датчик миллиметрового диапазона (можно измерить угол, требуется тестирование). Стоимость: более 1200.
- Вариант 4: передний радарный датчик миллиметрового диапазона + два боковых лазерных датчика (может улучшить диапазон обнаружения препятствий, но стоимость выше). Стоимость: 1200 + 200 * 2.
- Вариант 5: пять лазерных датчиков под пятью углами (стоимость: 1000).
- Вариант 6: передний радарный датчик миллиметрового диапазона и один лазерный датчик, два боковых лазерных датчика. 24 ГГц радар подходит для измерения больших и удалённых препятствий, менее эффективен для близких. 77 ГГц и 79 ГГц эффективны для близких препятствий. Стоимость: 1200 + 2 * 200.
- Вариант 7: шаговый двигатель + радарный датчик миллиметрового диапазона или лазерный датчик; шаговый двигатель используется в качестве вращающейся структуры. Шаговый двигатель широко применяется в промышленных манипуляторах, 3D-принтерах и других вращающихся структурах. Это всего лишь концепция.
Конфигурация оборудования для реализованных вариантов
- Вариант 1:
- Лазерный датчик: лазерный датчик BESUN TFmini Plus, водонепроницаемый однолинейный последовательный порт. Цена около 230 за штуку.
- Рулевой механизм: обычный рулевой механизм, протокол управления — ШИМ: период 20 мс, коэффициент заполнения 0,5–2,5 мс.
- Вариант 2 [не рекомендуется]:
- Однолучевой одноприёмный радарный датчик миллиметрового диапазона.
- Экспериментальный датчик: радарный датчик E-World S2, радарный датчик миллиметрового диапазона 24 ГГц, без измерения угла, диапазон 1–100 м. Цена 800. Купил один для тестирования, не достиг заявленных результатов.
- Вариант 3:
- Многолучевой одноприёмный радарный датчик миллиметрового диапазона.
- Экспериментальный датчик: радарный датчик NARAY TECHNOLOGY SP70C, радарный датчик миллиметрового диапазона 24 ГГц, измерение угла около 100 градусов, диапазон 0,1–40 м. Цена 1200.
- Контроллер: STM32F103RCTx.
Среда разработки программного обеспечения
- Использование библиотеки HAL для STM32.
- Конфигурация контактов с использованием STM32Cube MX (если используется библиотека HAL, то этот шаг не является обязательным).
- Примечание: система избегания препятствий имеет более высокий приоритет, чем навигация, и можно рассмотреть использование операционной системы, такой как FreeRTOS.
II. Описание алгоритма избегания препятствий
1. Основные сведения
- На данный момент модуль избегания препятствий представляет собой автономное устройство, которое ещё не интегрировано с главным процессором или навигационным алгоритмом. Его можно рассматривать как небольшой автомобиль, который избегает препятствий.
- Условия работы судна сложны, и необходимо учитывать влияние водяного пара и других факторов. После тестирования было обнаружено, что хотя ультразвуковой модуль теоретически осуществим, на практике данные очень нестабильны, поэтому он был отклонён.
- Эффект лазерного датчика аналогичен ультразвуковому модулю, но данные лазерного датчика стабильны, а в ясную погоду эффект хороший. Недостатком является то, что он легко подвержен влиянию водяного пара.
- Радарный датчик миллиметрового диапазона является идеальным выбором. Однолучевой радарный датчик может обнаруживать расстояние, скорость и другие данные о нескольких препятствиях. Многолучевые радарные датчики могут дополнительно выводить информацию об угле препятствия. Однако обычно используемые радарные датчики 24 ГГц имеют длину волны около 13 см, что означает, что они не могут обнаружить препятствия диаметром менее 13 см. Таким образом, влияние водяного пара и дождя на них невелико. Кроме того, радарные датчики миллиметрового диапазона обычно реагируют на большие и далёкие препятствия, такие как автомобили на дороге. Они менее чувствительны к небольшим и близким препятствиям. Чтобы избежать этих проблем, необходимо использовать более высокие частоты с более короткими длинами волн. Обычно используются радарные датчики с частотой 77 ГГц. Но их стоимость очень высока, цена одного радарного датчика составляет примерно 3000–4000. Кроме того, если вы хотите получить информацию об угле, вам также понадобится многолучевой радарный датчик, стоимость которого также высока (3000–5000 RMB).
- Исходя из соотношения стоимости и производительности, в настоящее время используется решение с лазерным датчиком и рулевым механизмом. Также разрабатывается решение с радарным датчиком миллиметрового диапазона, используя условную компиляцию.
2. Идея избегания препятствий (лазерный датчик + рулевой механизм)
- Лазерный датчик установлен на рулевом механизме, позволяя рулевому механизму вращаться вокруг носа судна влево и вправо, охватывая 20 позиций вращения (соответствующих высокому уровню ШИМ рулевого механизма 0,5–2,5 мс).
- Каждую позицию вращения можно рассматривать как результат вывода лазерного датчика, то есть рулевой механизм с лазерным датчиком эквивалентен 20 лазерным датчикам.
- Результаты 20 выводов усредняются с весами, чтобы получить пять данных, соответствующих направлениям слева, слева спереди, спереди, справа спереди и справа.
- По сути, это использование вращающегося лазерного датчика для имитации пяти лазерных датчиков с разными углами. Это похоже на создание рамки.
- В будущем, даже если решение с лазерным датчиком и рулевым механизмом окажется неэффективным, можно также рассмотреть возможность использования пяти или трёх фиксированных позиций для достижения аналогичного эффекта избегания препятствий.
- План: после успешного тестирования радарных датчиков миллиметрового диапазона можно попытаться использовать их для одновременной имитации трёх направлений (слева спереди, спереди и справа спереди).
3. Функция вывода системы избегания препятствий
- После инкапсуляции функция обнаружения препятствий может выводить массив из пяти элементов, соответствующий расстоянию до препятствий в пяти направлениях.
- Функция реакции на препятствия может основываться на этом массиве для выполнения соответствующей реакции. Например, когда в трёх средних направлениях нет препятствий, можно продолжить движение.
- Функция реакции на препятствия может напрямую вызывать функцию управления двигателем для немедленной реакции при обнаружении препятствий.
4. Таблица соответствия ресурсов STM32
Ресурсы на плате, контакты |
Соответствующие интерфейсы датчиков и внешних устройств |
TIM3 CH1 |
Сигнал ШИМ для рулевого механизма (вариант 1) |
TIM3 CH2 |
ENA для левого двигателя |
TIM3 CH3 |
ENA для правого двигателя |
USART1 |
Подключение к компьютеру, отображение через последовательный порт |
USART2 |
Последовательный порт для лазерного датчика (вариант 1) |
USART3 |
Последовательный порт для радарного датчика миллиметрового диапазона (вариант 3) |
PC6/7/8/9 |
Контакты платы управления двигателем IO1/2/3/4 |
5. Параметры варианта 3 системы избегания препятствий (имена переменных могут измениться)
- Расстояние x для идентификации препятствий: препятствия в пределах x будут рассматриваться алгоритмом избегания как реальные. Препятствия вне этого диапазона будут игнорироваться.
- Расстояние y для экстренного торможения: если существует препятствие на расстоянии меньше y, будет выполнено экстренное торможение.
- Ограничение z для эффективной области идентификации в форме веера: область идентификации разделена на пять областей с помощью z. Если радарный датчик часто обнаруживает скачки данных или шум, рекомендуется увеличить это значение, например, до 5 * 60.
- Количество кадров frames и порог threshold для определения существования препятствий: frames используется для установки количества кадров, которые алгоритм избегания будет использовать для анализа. threshold должен быть меньше или равен frames. Он используется для определения того, что препятствие существует, если threshold кадров из frames содержат обнаруженные препятствия. Эти два параметра используются для фильтрации скачков данных и шума. Например: frames = 10, threshold = 5, тогда алгоритм избегания ожидает получения в общей сложности 10 кадров, и если более чем в 5 кадрах из этих 10 обнаружены препятствия, считается, что препятствие присутствует.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )