Лидар своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 18.09.2024


Лидар - обзор модуля для Ардуино

Конструктивно оно представляет собой печатную плату, размером 13 х 10 мм, в комплекте имеется гребенка штыревых контактов для подключения к разъему или макетной плате.

Лидар - обзор модуля для Ардуино

Масса модуля Лидар 0,67 г вместе с припаянными четырьмя контактами.

Лидар - обзор модуля для Ардуино

Модуль может взаимодействовать с другими устройствами при помощи I2C интерфейса 1, линии этого интерфейса промаркированы как SCL и SDA.

Лидар - обзор модуля для Ардуино

Общий провод обозначен как GND, питание 5В VIN.

Лидар - обзор модуля для Ардуино

Потребляемый ток составляет около 20 мА.

Лидар - обзор модуля для Ардуино

Лидар - обзор модуля для Ардуино

Заявленная дальность измерения расстояния модулем лидар 2 м 7. Автору обзора удалось получить максимальную дальность около 1,5 м до побеленного потолка. Если расстояние до препятствия больше 1,5 м, то вместо данных о расстоянии, можно наблюдать следующую картину.

Лидар - обзор модуля для Ардуино

В целом лазерный дальномер свои функции выполняет. От ультразвукового датчика расстояния HC-SR04 [8] его выгодно отличает малый размер, небольшая масса и способность измерять расстояние до ворсистых поверхностей. ИК дальномера KY-032 [9] безнадежно проигрывает по дальности. Из недостатков следует отметить достаточно большой ток потребления и высокую стоимость устройства.

Ультразвуковой дальномер с дисплеем на базе платформы Arduino.

  • Используется дисплей на драйвере TM74HC59, что позволяет выводить расстояние с десятичной точкой
  • Для определения расстояния используется дешёвый модуль ультразвукового дальномера
  • Показания с дальномера фильтруются двумя фильтрами, благодаря чему достигнута точность ~1 мм
  • Отдельный переключатель позволяет сдвигать начало отсчёта на противоположный конец корпуса
  • Работает от 3х батареек формата АА




ВИДЕО

КОМПОНЕНТЫ

Каталоги ссылок на Алиэкспресс на этом сайте:

Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей . Также проект можно попробовать собрать из компонентов моего набора GyverKIT .

Сканирование местности — одна из главных задач для беспилотных роботов, которые самостоятельно прокладывают путь из точки А в Б. Решать её можно по-разному: всё зависит от бюджета и поставленных целей, но общая суть инженерного подхода остаётся похожей. Лидарные системы стали стандартом де-факто для беспилотных автомобилей и роботов. А ещё лидар можно приладить к своему проекту на Arduino!

Lidar Arduino

Как это работает

Давайте вспомним общий принцип работы подобных систем: у нас есть устройство, которое посылает наружу направленное излучение, затем ловит отражённые волны и строит исходя из этого картину пространства. Именно так и работает лидар: в качестве активного источника используют инфракрасный светодиод или лазер, лучи которого мгновенно распространяются в среде. Рядом с излучателем расположен светочувствительный приёмник — он и улавливает отражения.

Принцип ToF

Обозначения: D — измеренное расстояние; c — скорость света в оптической среде; f — частота сканирующих импульсов; Δφ — фазовый сдвиг.

Получив время, за которое вернулась отражённая волна, мы можем определить расстояние до объекта в поле зрения датчика. Подобный принцип определения дистанции называют времяпролётным — от английского Time-of-flight (ToF). А что дальше? У вас появляются разные возможности, как распорядиться этими данными.

Оптический дальномер

Дальномер — это частный случай лидара, у которого сравнительно узкий угол наблюдения. Устройство смотрит вперёд в узком сегменте и не получает посторонних данных, кроме удалённости объектов. Так работает оптический дальномер, основанный на принципе ToF. Рабочая дистанция зависит от используемого источника света: для ИК-светодиодов это десятки метров, а лазерные лидары способны стрелять лучом на километры вперёд. Неудивительно, что эти приборы прижились в беспилотных летающих аппаратах (БПЛА) и метеорологических установках.

Однако быстродействующий дальномер может пригодиться и в самодельных роботах на Arduino и Raspberry Pi: лидары не боятся засветки солнцем, а скорость реакции у них выше, чем у ультразвуковых датчиков. Используя лидар в качестве датчика пространства, ваше детище сможет видеть препятствия на увеличенной дистанции. Разные модели отличаются дальностью работы и степенью защиты. Модификации в герметичном корпусе позволят роботу работать на улице.

Лидары Benewake

Лидарная камера

Следующая ступень развития — лидар в роли 3D-камеры. Добавляем к одномерному лучу систему развёртки и получаем прибор, который может построить модель пространства из облака точек в определённой зоне обзора. Для перемещения сканирующего луча чего только не применяют: от поворотных зеркал и призм до микроэлектромеханических систем (МЭМС). Подобные решения используют, например, для быстрого построения 3D-карты местности или оцифровки архитектурных объектов.

3D-оцифровка

Сканирующий лидар с круговым обзором

Вот и мечта любого автопроизводителя — главный сенсор, который заменяет беспилотной машине почти все глаза. Здесь мы имеем комбинацию излучателей и приёмников, установленных на поворотной платформе, которая вращается со скоростью в сотни оборотов в минуту. Плотность генерируемых точек такова, что лидар строит полноценную картину местности, в которой видно другие машины, пешеходов, столбы и деревья на обочине, и даже изъяны дорожного покрытия или рельефную разметку!

Lidar облако точек

Лидары с круговым обзором 360° — наиболее сложные и дорогие из всех разновидностей, но и самые желанные для разработчиков, поэтому они часто встречаются на прототипах беспилотных автомобилей, где вопрос стоимости не стоит слишком остро.

Машина с лидаром

В заключение

Дожидаться светлого беспилотного будущего совсем необязательно, ведь можно начать собственные эксперименты с инфракрасным лидаром на Arduino или Raspberry Pi уже сейчас. Если вам нужен дальномер с рабочей дистанцией до 40 метров и моментальной реакцией — это подходящий вариант. А если заморочиться и моторизовать лидар, то у вас получится сделать и любительский 3D-сканер на принципе ToF.

Даниил Веловатый

Привыкнуть к трехмерным принтерам было просто: нарисовал нужную деталь или фигурку на компьютере, загрузил в принтер — и спустя несколько часов забрал ее воплощение в пластике. Да что уж в пластике, печатают уже и в металле, и даже в органике: недавно напечатали живую печень. Неудивительно, что хочется пойти дальше. Следующий этап — сканирование. Как ни странно, но до появления 3D-принтеров большой необходимости в переносе реального объекта в цифровой мир не было: создатели игр и фильмов просто нанимали художников, которые рисовали все, что было нужно. Потребность в сканерах возникала лишь тогда, когда было важно передать рельеф и форму объекта с очень высокой точностью. При этом часто были совершенно неважны ни продолжительность сканирования, ни стоимость. Так появились первые представители 3D-сканеров: лидары.

Лидар (от английского Light Detection and Ranging) — дорогое, но очень точное устройство. Оно позволяет с точностью до миллиметров строить 3D-модели объектов, размер которых можно сравнить с размерами здания. Из расшифровки аббревиатуры LIDAR следует, что им является любой дальномер, измеряющий расстояние при помощи света. Под это описание попадает невероятное количество устройств. Но чаще всего лидарами называют аппараты вроде этого:


Внутри аппарата размещена особая система зеркал. Здесь установлен фазовый лазерный дальномер, который измеряет расстояние при помощи лазера, а два зеркала служат для отклонения лазерного луча в двух плоскостях. Таким образом, луч пробегает определенный сектор пространства и строит его 3D-модель. Как можно догадаться, скорость такого сканера зависит от быстродействия дальномера и скорости вращения зеркал. А так как все это довольно сложное оборудование, требующее тонкой настройки, стоит оно довольно больших денег. Намного выгоднее бывает заказать сканирование, чем купить сам аппарат. Тем более что надо еще разбираться, как им пользоваться.

Технологии для землян

Так как устройства промышленного сектора были, мягко говоря, не по карману рядовому потребителю, а потребность сканировать реальность росла, появились дешевые настольные и ручные 3D-сканеры. Первые, как правило, имеют поворотный стол, на который помещается исследуемый объект. Спустя несколько минут после начала сканирования мы получим готовую модель. Конечно, качество сканирования и размер сканируемой области несравнимы с лидарами, зато стоят они на несколько порядков дешевле. Именно к такому классу устройств и относится разработанный нами сканер. Основная проблема этих сканеров в том, что сканируемый объект должен поместиться на поворотный стол, что сильно ограничивает область применения. Еще один существенный минус этих сканеров — неполнота сканирования и слепые зоны. Если вы, например, попытаетесь отсканировать вазу, то сканер увидит только ее внешнюю часть, а не полость внутри.


Второй тип сканеров — ручные 3D-сканеры. Их необходимо руками переносить вокруг объекта, но модель они строят с помощь камер. Алгоритм работы таких сканеров существенно сложнее, стоят они дороже, и качество результата хуже, зато они позволяют сканировать большие объекты и тратить на это меньше времени. Выглядят они примерно так:


Одно из основных преимуществ такого сканера — он не ограничен областью сканирования. Мы можем отсканировать, например, лицо человека без необходимости ставить его голову на поворачивающийся стол. При определенном усердии можно отсканировать даже целое помещение, если только точность позиционирования позволит это сделать. Чтобы повысить точность, можно наклеивать специальные метки, которые сканер находит и использует как реперные точки. Собственно, на фотографии выше так и сделано. Такой подход ограничивает область сканирования, но, к сожалению, здесь либо овцы целы, либо волки сыты.

В нашей лаборатории мы решили создать дешевый 3D-сканер, имеющий точность, сравнимую с точностью 3D-печати. Это был наш первый серьезный проект, поэтому мы допускали ошибки, многого не понимали и еще больше узнавали в процессе. Сначала мы построили простой лазерный дальномер из лазерной указки и . Чтобы понять, как 2D-камера позволяет измерять расстояние, придется подключить воображение. Представьте себе натянутую в воздухе нить, по которой ползет паук. Если мы стоим вплотную к веревке, то видим, как паук ползет строго на нас (не очень приятное зрелище). А если теперь мы посветим на всю эту конструкцию лампой сбоку, на полу мы увидим тень. Так как свет поступает сбоку, проекция паука будет двигаться по проекции нити. Измеряя расстояние от начала тени нити до тени паука, мы можем вычислить, сколько паук прополз, умножив на некоторый коэффициент, ведь мы создаем сжимающее отображение.

Приблизительно так же работает наш сканер. Только вместо нити — лазерный луч, а вместо экрана с тенью — камера. Так же как паук двигается по нити, вдоль лазерного луча двигается пятно, возникающее, когда этот луч встречает препятствие. Обнаружив положение пятна на фотографии, мы можем определить расстояние до объекта, на котором это пятно находится. На словах это сложно. На картинке выглядит проще:

Чем дальше стенка, тем ближе к пунктирной .

Чем дальше стенка, тем ближе к пунктирной линии будет точка pfc на матрице камеры

Но такой дальномер измеряет расстояние до одиночной точки, а это занимает очень много времени. Поэтому мы поставили на лазер линзу, которая превращает лазерное пятно в лазерную линию. Теперь мы измеряем расстояние сразу до сотен точек (ведь линию можно представить как набор точек), осталось соорудить систему, позволяющую этой линией пройтись по всему предмету, а для этого нужен поворотный стол, на который предмет и помещается.

Сам сканер собран из фанерных деталей, которые были вырезаны лазером. Для поворота стола используется шаговый двигатель, которым управляет разработанная нами плата. Она же управляет яркостью лазера и подсветки.

Обработка изображения с камеры происходит на компьютере, для этого была написана программа на Java. После окончания сканирования программа выдает так называемое облако точек, которые с помощью другой программы соединяются в полноценную модель. Эту модель уже можно напечатать на 3D-принтере, то есть получить копию реального объекта.

Читайте также: