Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lidar

Краткое описание проекта

Наш лидар предназначен для сбора точек для последующего построения 3D модели помещения. В дополнение к лидару была написана программа на С++, строящая 3D-модель по полученному облаку точек Lidar-Viewer.

Подробное описание

Постановка задачи

Нашей основной задачей было создание недорогого лидара, способного сканировать не просто одну плоскость в 360 градусов, а полусферу, с большой скоростью (P.S. ни один существующий аналог не обладает всеми этими качествами).

Принцип работы лидара

Моторы крутят дальномер в двух плоскостях и по прерыванию мы собираем данные с дальномера и с моторов (дистанцию до точки и углы, на которые повернулся дальномер) и записываем их в файл. Мы получаем файл с данными в сферической системе координат, открываем файл в программе Lidar-Viewer и либо анализируем полученную 3D-модель в этой программе, либо конвертируем файл в объектный формат в этой программе и можем открывать его в любой другой программе.

Компонентная база лидара

  • Arduino UNO – 2 шт
  • Модуль датчика дальномера Benewake TFmini-S Lidar TOF – 1 шт
  • Бесщеточный двигатель HT2205 – 2 шт
  • Магнитный энкодер AS5048A - 2 шт
  • Капсульное скользящее кольцо, 8-ми канальное, 8.5 мм в диаметре – 1 шт
  • Капсульное скользящее кольцо, 18-ти канальное, 12.5 мм в диаметре – 1 шт
  • Модуль Micro SD Card Reader – 1 шт
  • Micro SD карта – 1 шт
  • Регулятор бесколлекторного мотора – 2 шт
  • Часы реального времени – 1 шт
  • Аккумулятор на 12В – 1 шт

Процесс разработки и изготовления лидара

В ходе работы было изготовлено два прототипа. Сначала был изготовлен прототип на основе шаговых моторов.
Первый прототип лидара
В результате работы этого лидара было получено 1000 точек и достаточно хорошая 3D-модель помещения. Основным минусом этого прототипа была скорость работы, а также большая масса.
Работа первого прототипа лидара
В связи с этим было принято решение изготовить лидар на основе бесколлекторных моторов.
Второй прототип лидара
В ходе разработки наша команда столкнулась с проблемой невозможности подключения дальномера и энкодеров с моторами к одной Arduino. Поэтому мы были вынуждены использовать еще одну Arduino для подключения к ней дальномера. Это привело к еще одной проблеме: теперь две независимые Arduino нужно было внешне синхронизировать для того, чтобы получать данные с разных датчиков одновременно. Для этих целей было принято решение использовать модуль часов реального времени. Общение двух Arduino между собой было реализовано с помощью hardware serial-соединения.
Работа второго прототипа лидара
В ходе тестирования полученного лидара была обнаружена большая проблема - нам не удавалось получать данные с дальномера и энкодеров в один момент, т.е. пока данные с дальномера доходят до Arduino, энкодеры уже посылают значения углов для другой точки. Это приводит к тому, что происходит постоянный сдвиг расстояния и углов, что в свою очередь приводит к неправильному облаку точек. Для упрощения тестирования системы мы были вынуждены переводить систему к механическому управлению: модуль часов реального времени был заменен на кнопку (и то, и то вызывает внешние прерывания системы). Тестировочный стенд лидара
Изготовления каждого прототипа состояло из таких этапов как 3D моделирование корпусов и их печать, паяние компонентов, сборка всех компонентов воедино, написание кода, тестирование системы.
Также была написана программа на С++, строящая 3D-модель помещения по полученному облаку точек, а также конвертирующая файл, полученный с лидара в объектный файл (.obj) - Lidar-Viewer.
Работа программы

Подведение итогов

  • Мы сделали два прототипа
  • С помощью первого прототипа получилось построить хорошую 3D-модель помещения
  • С помощью второго прототипа получилось собрать точки намного быстрее
  • На основе этих точек не получилось построить 3D-модель помещения
  • Написали программу для открытия файла с лидара и строющую эти точки

Цели на будущее

Мы пришли к выводу, что неправильно выбрали основной микроконтроллер (Arduino UNO) и в будущем хотим перейти на микроконтроллер от STM32. Это позволит разместить все датчики на одном микроконтроллере, что приведет к упрощению схемы, ненужности внешней синхронизации, а также уменьшению задержек при передачи информации. Это позволит получать данные с датчиков синхронно, а, значит, и получить хорошую 3D-модель при помощи нашего лидара.

About

Arduino based lidar

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages