Самодельный лидар: OpenTOFLidar

В этой статье я хочу рассказать про свой проект импульсного (TOF) Open Source лидара — о том как я его делал, и каких результатов удалось добиться.
top-picture


Немного теории

Лазерные дальномеры по принципу работы можно разделить на три основные типа:


  1. Триангуляционные. Дальномеры этого типа определяют расстояние, используя законы геометрии. Дальномер измеряет угол между лучом лазера и отраженным лучом света, попавшим на фотоприемник, и из величины этого угла и расстояния между лазером и фотоприемником вычисляет текущее расстояние до объекта.
    У этих дальномеров есть преимущества:
    — Наиболее простые среди всех остальных дальномеров.
    — Могут измерять расстояния с высокой точностью на близких дистанциях.
    — Могут измерять расстояния с достаточно высокой скоростью — до 10 кГц.
    Но есть и недостатки:
    — Точность измерения расстояния значительно падает с ростом расстояния.
    — Лазер должен быть включен достаточно долго (фотоприемники имеют ограниченную чувствительность), поэтому его мощность нужно ограничивать для безопасности.
    — Чем меньше габариты дальномера, тем хуже точность измерения расстояния.

    Именно такие дальномеры используются в роботах-пылесосах, так же к ним относятся довольно популярные в любительской робототехнике дальномеры RPLIDAR. Стоят они обычно 100–400$.

    Про дальномеры такого типа я подробно писал в своих статьях: Самодельный сканирующий лазерный дальномер и Реверс-инжиниринг лазерного датчика расстояния

  2. Фазовые. В этих дальномерах свет лазера модулируется высокочастотным сигналом. Задержка во время распространения луча в его «полете» до объекта и обратно приводит к появлению фазового сдвига между сигналом, который используется для управления лазером, и который принимается от объекта.
    У этих дальномеров есть преимущества:
    — Высокая точность измерения расстояния (единицы миллиметров и меньше). Может падать при увеличении отношения сигнал/шум.
    — Можно сделать малогабаритное устройство.
    Но есть и недостатки:
    — Лазер работает постоянно, поэтому приходится ограничивать его мощность. Это приводит к тому, что на больших расстояниях принимаемый сигнал оказывается довольно низким, что сказывается на точности дальномера.
    — Электроника такого дальномера относительно сложная.
    — Сложно получить высокую скорость измерений.

    Дальномеры такого типа используются в промышленности, геодезии. Лазерные рулетки в большинстве своем используют как раз фазовый метод измерения расстояния. Достаточно известный в робототехнике лидар «Hokuyo URG-04LX» тоже является фазовым.
    Специализированные 3D-сенсоры (range imaging camera) тоже часто используют этот метод.

    Про дальномеры такого типа я подробно писал в своих статьях: Самодельный фазовый лазерный дальномер и Как работает лазерная рулетка: реверс-инжиниринг

  3. Импульсные. Также их называют «времяпролетные», Time-Of-Flight (TOF). Они используют «классический», наиболее известный большинству метод измерения расстояния — дальномер измеряет время «полета» вспышки света до объекта и обратно. Несмотря на кажущуюся простоту метода, из-за высокой скорости света довольно сложно сделать дальномер, способный точно измерять расстояние.

    У этих дальномеров есть преимущества:
    — Лазер используется в импульсном режиме, что позволяет формировать импульсы сверхбольшой мощности (более МВт). За счет этого можно измерять очень большие расстояния (даже до Луны).
    — Можно сделать малогабаритное устройство. Датчики вроде VL53L0X используют именно этот метод.
    — Можно получить очень высокую скорость измерений — 100 кГц и более.
    Но есть и недостатки:
    — Сложно измерить расстояние с высокой точностью (< ±0.5 м).
    — Электроника такого дальномера относительно сложная.

    Дальномеры такого типа активно используют военные, они используются в геодезии, дистанционном зондировании Земли, промышленности, автономных автомобилях, их устанавливают на беспилотники — т.е. они встречаются везде, где требуется измерение больших расстояний.

    Я с подобным дальномером сталкивался в процессе реверс-инжиниринга: Реверс-инжиниринг лазерного сканера Leuze RS4
    Однако реверс-инжиниринг готового устройства это одно, а вот изготовление своего дальномера — совершенно другое.


Устройство импульсного лазерного дальномера

Ключевые компоненты лазерного дальномера это электроника и оптика. Если дальномер сканирующий (2D/3D), то к ним обычно добавляется и механика.

Вот так выглядит структурная схема моего дальномера:
structure
Основные узлы электроники такого дальномера:


  • Узел импульсного лазера. Содержит сам лазер и электронику, управляющую им. Главное требование к этому узлу — возможность сформировать максимально мощный импульс света с максимально крутым передним фронтом. Чем мощнее импульс — тем больше отношение сигнал/шум принимаемого сигнала, а чем круче фронт — тем выше точность измерения расстояния.
  • Узел фотоприемника. Содержит фотоприемник, принимающий отраженный от объекта сигнал; электронику для его питания, усилитель сигнала и компаратор, выделяющий полезный сигнал среди помех. Главные требования здесь — возможность максимально усилить принятый сигнал, не добавляя в него слишком много помех и не ухудшить крутизну переднего фронта импульса.
  • Узел измерения времени. Здесь происходит особая «магия» — высокоточное измерение времени «полета» светового импульса. Расстояние 1 м до объекта и обратно свет проходит за 6.6 нс — микроскопически малое время! Чтобы получить разрешение 1 см, требуется измерять время полета с дискретностью 66 пс.
    Если попытаться использовать традиционный метод измерения времени — подсчитывать импульсы от некого генератора частоты во время «полета», то выходит, что для получения разрешения 1 см требуется частота генератора > 15 ГГц! Понятно, что изготовить генератор и счетчик, способные работать с такой частотой, очень сложно.
    Поэтому для измерения настолько малых интервалов времени были разработаны специальные микросхемы TDC (Time-to-digital converter). Эти микросхемы могут использовать различные методы измерения времени, но наиболее распространенный — использование линий задержки. На Хабре есть хорошая статья, описывающая принцип работы TDC: Преобразователи Time-To-Digital (TDC): что это такое и как они реализованы в FPGA
  • Микроконтроллер (MCU). Он отвечает за формирование лазерных импульсов в заданные моменты времени, считывает данные из TDC, вычисляет расстояние до объекта, вычисляет необходимые коррекции, управляет некоторыми аналоговыми параметрами схемы, отправляет данные на компьютер.

Оптику дальномера можно разделить на два узла — объектив лазера и объектив фотоприемника.
Лазерные диоды, используемые в дальномерах, имеют довольно широкую диаграмму направленности (т.е. они светят не узким лучом, а расходящимся пучком). Для того, чтобы получить узкий пучок, как раз и используются объективы различных типов.

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


Практика

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


Узел импульсного лазера

В последнее время в продаже появились относительно дешевые и достаточно мощные импульсные лазерные диоды OSRAM «SPL PL90_3». Выглядят они вот так:


nktpsa50oyr5gudy-9xy_iwbzhw.jpeg

Работают на длине волны 905 нм, и выдают в импульсе мощность до 75 Вт. Сразу замечу, что эти диоды абсолютно невозможно использовать в режиме постоянного свечения (CW). Для того, чтобы получить такую мощность, нужно пропустить через диод довольно большой ток — 30А!
Для управления лазером была использована такая схема (она достаточно стандартная):
Schematic-Laser
Лазерный диод здесь обозначен D4. Узел управления лазером работает достаточно просто. Изначально транзистор Q2 закрыт, лазер не светит, конденсатор С17 заряжается через резистор R18 до напряжения Vlaser. Фактически, в этом конденсаторе запасается вся энергия, которая будет использована для излучения лазера. Она не так уж и велика — при напряжении 16В и емкости конденсатора 20 нФ запасенная в нем энергия будет составлять 2,5 мкДж.
В заданный момент на драйвер транзистора DA6 поступает импульс, он усиливает этот импульс, транзистор Q2 резко открывается и лазер начинает излучать свет, забирая при этом энергию из конденсатора. Длительность световой вспышки лазера ограничена именно емкостью конденсатора. Если бы все компоненты были бы идеальными, то в таком случае максимальный ток через лазер мог бы быть очень большим, но в реальности он сильно ограничивается индуктивностями элементов.

Полезная особенность такой схемотехники — даже если транзистор выйдет из строя и в нем возникнет короткое замыкание — ток через лазерный диод будет ограничен резистором R18, и не будет превышать и 0.1 А. Генерация излучения в лазере начинается при токе 0.5 А, так что такая неисправность не станет опасной для зрения.

Резистор R19 используется для контроля за током лазера. К нему подключен миниатюрный высокочастотный разъем U.FL, через который можно подключить осциллограф и наблюдать за формой тока, протекающего через лазер. Вот пример такой осциллограммы при Vlaser=15V
TEK00010:
Видно, что импульс тока длится около 25 нс, колебания тока во время импульса связаны с резонансными явлениями. Максимальное значение напряжения в данном случае соответствует максимальному току около 15А.
При помощи достаточно скоростного APD-фотоприемника с усилителем я получил вот такую осциллограмму, показывающую форму сигнала лазера (канал 2, сигнал инвертирован):
Laser-Signal
Видно, что длительность переднего фронта лазера — около 10нс.

Регулируя напряжение Vlaser, можно регулировать максимальный ток лазера. Специально для формирования этого напряжения на микросхеме DA1 сделан узел DC-DC преобразователя, выходное напряжение которого можно регулировать с микроконтроллера.

Для того, чтобы уведомить микросхему TDC о том, что лазер включился, сделан специальный узел на микросхеме DA5. Эта микросхема — высокоскоростной компаратор, срабатывающий, когда ток через лазер достигает определенного значения.


Узел фотоприемника

В настоящее время в лазерных дальномерах в качестве фотоприемников чаще всего используют лавинные фотодиоды (avalanche photodiode — APD). В отличие от обычных фотодиодов, они обладают собственным усилением фототока, за счет чего их чувствительность возрастает. С точки зрения схемотехники это очень полезно, так как в случае больших расстояний фототок обычного фотодиода усилить очень сложно — он теряется на уровне шумов усилителя. Долгое время APD были довольно дороги (> 100$) и труднодоступны, но сейчас ситуация поменялась.
К примеру, на Digikey фотодиод MTAPD-07–013 стоит в розницу 24$. В последней версии дальномера я использовал именно его. На Aliexpress можно найти еще боле дешевые AD500–8 за 10–15$. Цена эта несколько странная, так как на Mouser они продаются более чем за 100$. Тем не менее, в первой версии дальномера я использовал именно такой фотодиод, и он проявил себя достаточно хорошо. Оба вышеупомянутых фотодиода имеют диаметр чувствительной площадки 0.5 мм. На aliexpress можно найти в продаже фотодиоды AD230–8 за 24$, но они имеют площадку диаметром 0.2 мм. Это позволяет уменьшить емкость фотодиода, но усложняет юстировку оптики.

Важная особенность лавинных фотодиодов — их усиление зависит от величины напряжения обратного смещения и от температуры корпуса. Вот пример такой зависимости, взятой из datasheet на фотодиод AD500–8 TO:
apd-voltage
Видно, что усиление начинает значительно расти при напряжении, большем 70В. При приближении к 90В чувствительность усиления фотодиода к напряжению значительно увеличивается. С ростом усиления также повышается и уровня шумов.
Если продолжить увеличивать напряжение, то наступает лавинный пробой фотодиода — ток через него значительно увеличивается, причем он становится сильно зашумленным, пропадает реакция на свет. При этом фотодиод не выходит из строя (если совсем уж не поднимать ток).

Для того, чтобы сформировать достаточно высокое напряжение смещения фотодиода, я использую в своей конструкции DC-DC преобразователь, ШИМ сигнал для которого формирует микроконтроллер. Этот преобразователь включает в себя компоненты Q1, L5, D1, C10. Для измерения напряжения используется резисторный делитель на R8/R9. Обратная связь по напряжению реализована в микроконтроллере. Частота ШИМ — 100 кГц.
Я пробовал организовать синхронное управление формированием ШИМ и запуском лазера, так как предполагал, что небольшие колебания напряжения будут ухудшать точность измерений, но не заметил никакой разницы между синхронным и несинхронным режимом. Судя по всему, RC-фильтр R10-C11 достаточно хорошо справляется со своей задачей.

Теперь стоит перейти к усилителю сигнала фотодиода. Традиционно в качестве таких усилителей используют трансимпедансные усилители (TIA). Такой усилитель получает на вход ток, а на выход выдает пропорциональное ему напряжение. В простейшем случае он представляет собой операционный усилитель с единственным резистором обратной связи:


image

Подробнее про TIA можно почитать, например, здесь.

Для изготовления импульсного дальномера необходимо использовать TIA с большой полосой пропускания сигнала и малой входной емкостью. Доступных микросхем не так уж и много, примерами могут быть MAX3658, MAX40658, OPA858. В своем лидаре я использовал MAX3658.
Эта микросхема разработана специально для использования с фотодиодами, имеет усиление 18000, и полосу пропускания — 580MHz. Кроме того, микросхема содержит встроенный фильтр, отсекающий низкие частоты (DC Cancellation Circuit).
Недостаток микросхемы — довольно специфическое построение ее выходного каскада:
tia
Здесь реализован не Push-Pull выход, а Open Collector + сильная подтяжка выходов в питанию, как в (Current Mode Logic — CML).
Для того, чтобы повысить напряжение на одном из своих выходов, микросхеме нужно закрыть один из транзисторов, т.е. повышение напряжения всегда происходит через резисторы подтяжки. Это может приводить к ухудшению временных характеристик сигнала.

У микросхемы есть еще один недостаток — она не содержит защиты от статического напряжения на своем входе.


Внимание! Микросхема MAX3658 очень сильно боится статического напряжения! Устанавливать ее нужно максимально осторожно. В своем лидаре я поставил во входную цепь микросхемы защитный диод D6, его желательно установить на плату до установки TIA.

К сожалению, у меня в процессе экспериментов вышли из строя штуки 4 этих микросхем, судя по всему, именно из-за статического электричества. Ни с одной другой из микросхем я подобного никогда не встречал.

В результате у меня получилась такая схема узла фотоприемника:
Schematic-APD-b
Разъем J1 используется для того, чтобы смотреть форму сигнала на выходе TIA.
Конденсаторы C12, C13 подключены к следующему узлу — узлу измерения времени.


Узел измерения времени

Благодаря использованию готовой микросхемы TDC этот узел достаточно прост. Выбор дешевых микросхем тоже невелик. Есть TDC7200, есть TDC-GP21/22, остальные микросхемы обычно дороги и достать их трудно. В своем лидаре я использовал TDC-GP21.

Эта микросхема предназначена для использования в ультразвуковых счетчиках потока жидкости, но ее можно использовать и в TOF дальномерах. Дискретность измерения времени (BIN) этой микросхемы составляет ~90 пс. Управление TDC с микроконтроллера производится по SPI.
TDC имеет два отдельных канала измерения времени (линии STOP1/2), на которые я в своей схеме завел сигналы с двух компараторов — упомянутого выше компаратора лазера и компаратора сигнала TIA. Также этот TDC может выдавать на свои линии «FIRE» сигнал для управления ультразвуковым излучателем, его удобно использовать для управления лазером. В таком случае по команде микроконтроллера TDC отправляет на узел лазера сигнал на включение и стразу же начинает измерять время (линия TDC «START» соединена внутри TDC с линией «FIRE»). У микросхемы есть ограничение на минимальное время между сигналами «START» и «STOP» — 3.5 нс, но в реальной схемотехнике задержка между отправкой сигнала «START» и появлением тока через лазер значительно больше этого времени. За счет этого измерение малых расстояний не является проблемой.

TDC-GP21 может фиксировать время сразу нескольких подряд идущих событий. С одной стороны, в импульсном лазерном этот режим можно было бы использовать для измерения расстояния до нескольких подряд идущих объектов (к примеру, для измерения расстояния сквозь стекло или ветки дерева), но я не стал реализовывать этот режим. Вместо этого я настроил канал STOP2 на детектирование как положительного, так и отрицательного фронта сигнала с компаратора TIA. Таким образом, за счет регистрации времени обоих фронтов принятого импульса, появилась возможность измерять длительность импульса. Это достаточно важная информация, о которой я расскажу далее.

После того, как будет принят отраженный от объекта сигнал, можно считать из TDC данные. Замечу, что эта микросхема имеет механизм первичной обработки принятых сигналов (ALU), который невозможно обойти, т.е. «сырые» данные получить из микросхемы нельзя. Каждый раз перед считыванием информации нужно указать TDC, какой вариант вычисления нужно производить, подождать, и только потом считывать информацию.
Вычитание времени STOP2 — STOP1 дает искомое «время полета», но при этом него входят различные задержки, возникающие в узлах схемы. Для получения информации о ширине импульса приходится перенастраивать TDC.

С выхода TIA выходит аналоговый сигнал довольно малой амплитуды (<200 мВ), а TDC требуется цифровой сигнал. Для преобразования одного сигнала в другой используется компаратор, построенный на микросхеме DA4 — ADCMP600. Эта микросхема имеет следующие параметры:
Propagation Delay (Задержка распространения): 3.5 нс


Overdrive Dispersion: 1.2 нс
Common-Mode Dispersion: 200 пс
Нельзя сказать, что компаратор очень быстрый, но для измерения расстояния с точностью несколько сантиметров он подходит. Более быстрые компараторы обычно имеют уже не TTL/CMOS выход, а какой-нибудь LVPECL, который проблематично завести на выбранный TDC.
Так как сигнал на выходе TIA дифференциальный, и при этом хочется иметь возможность настраивать порог срабатывания компаратора, то пришлось сделать схему, показанную ниже:
Schematic-TDC
Порог срабатывания компаратора определяется напряжением, поступающем с микроконтроллера по линии «COMP_DAC». Это напряжение определяет величину падения напряжения на резисторе R15. При отсутствии сигнала на выходе TIA, именно эта разность напряжений поступает на вход компаратора. Следует заметить, что резистор подключен к компаратору так, что разность напряжений на входах компаратора оказывается отрицательной, так что он выдает 0 на своем выходе. При появлении сигнала на выходе TIA, этот сигнал проходит сквозь конденсаторы C12, C13, напряжение на R15 меняет полярность, и в момент перехода напряжения через 0 компаратор переключается в 1.

Оставшаяся электроника

Микроконтроллер (MCU). Для управления лидаром я использовал микроконтроллер STM32F303CBT6. В описываемом лидаре микроконтроллер выполняет следующие функции:
Управляет напряжением лазера, используя встроенный ЦАП.
Измеряет напряжение APD.
Управляет напряжением APD, формируя ШИМ с нужным коэффициентом заполнения.
Устанавливает напряжение порога срабатывания компаратора, используя встроенный ЦАП.
Управляет работой TDC (инициализация, запуск измерения, считывание данных).
Получает данные с энкодера зеркала.
Управляет мотором зеркала (подробнее про энкодер и мотор — ниже).
Обеспечивает связь с компьютером — изменение настроек лидара по командам с компьютера, отправка данных на компьютер.
Производит коррекцию данных, полученных из TDC и пересчитывает их в расстояние.
Сохраняет и считывает настройки из Flash-памяти.

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


image

Эту проблему можно решить, используя программную коррекцию результатов измерения времени полета в зависимости от амплитуды. В реальности измерить амплитуду настолько быстрых и малых сигналов достаточно сложно. Кроме того, микросхема TIA имеет довольно низкий порог насыщения — при слишком большом уровне входного фототока амплитуда сигнала на ее выходе перестает меняться. Как оказалось, значительно проще измерить длительность импульса средствами TDC (об этом я писал выше), и использовать для коррекции сигнала именно этот параметр. Методику вычисления коррекции я опишу далее.

Я написал два варианта управляющей программы для микроконтроллера. Один из из них, более простой, можно использовать только в несканирующем режиме. В этом варианте прошивке лазер постоянно «вспыхивает» с частотой 1000 Гц, так что этот режим удобно использовать для тестирования электроники и юстировки.
Второй вариант прошивки — основной, поддерживает 2D сканирование пространства.

Узел управления мотором. Для вращения сканирующего зеркала я использовал бесколлекторный мотор (BLDC), который требует специального метода управления. В качестве управляющей микросхемы я использовал DRV11873, которая достаточна распространена и не требует большого числа дополнительных элементов. Управление скоростью вращения мотора происходит при помощи ШИМ сигнала, подаваемого на вход микросхемы с MCU. Схемотехника этого узла взята из datasheet на микросхему и ничем не примечательна. Есть, правда, у выбранной связки мотор + драйвер недостаток — при включении мотор неконтролируемо разгоняется до большой скорости. Насколько я понимаю, это связано с методом обнаружения back-EMF в DRV11873.

В результате получается вот такая окончательная схема лидара:
Schematic-v4b1

Трассировка печатной платы лидара не так уж и проста, с учетом того, что на плате соседствуют токи более 15А в узле лазера и микроамперы фототока в узле фотодиода. Плату я решил делать четырехслойную, так как только так можно организовать качественные земляные полигоны — в случае четырехслойной платы один из внутренних слоев используется только для для земляных полигонов. Как видно из схемы, я разделил все земли лидара на три вида — земля узла лазера (LGND), земля узла мотора (MGND), главный земляной полигон (GND). Земли соединяются только в нескольких точках.
Для уменьшения индуктивности в цепи лазера важно расположить максимально близко друг к другу лазер D4, транзистор Q2, R19, C17 — фактически, в момент включения лазера, ток через эти компоненты замыкается.
Также важно установить фотодиод максимально близко к входу TIA.
Конечно, важно соблюдать целую кучу остальных плавил трассировки аналоговых и цифровых цепей. Однако я не являюсь профессиональным разработчиком печатных плат, так что не могу гарантировать, что плата разведена по всем правилам.

Вот так выглядит собранная плата (со стороны оптических компонентов):
PCB-bottom

И с другой стороны (со стороны микроконтроллера):
PCB-top


Оптические компоненты

Могу предположить, что у многих людей, не знакомых с оптоэлектроникой, на этом этапе могут возникнуть проблемы, связанные с недостатком знаний в этой области. В реальности, в случае такого простого дальномера, как у меня, все достаточно просто. В первую очередь стоит рассказать про объектив лазера.

Как я уже упоминал, объектив лазера предназначен для того, чтобы получить узкий пучок света от лазерного диода. Лазер можно условно принять за точечный источник света, так что для того, чтобы получить от него узкий пучок, достаточно использовать одиночную собирающую (положительную) линзу:


image

Изображение взято с сайта thorlabs.de
Достаточно удобно использовать в качестве объектива стандартный объектив M12 — они широко используются в камерах видеонаблюдения. Для таких объективов выпускаются и продаются стандартизированные держатели, которые прикручиваются к печатной плате.

Излучающая площадка лазерного диода представляет собой прямоугольник, в случае диода «SPL PL90_3» он имеет размеры 200×10 μm. Это приводит к тому, что пучок лазерного излучения тоже будет прямоугольной формы. Как видно, излучающая площадка имеет достаточно большую протяженность, что приводит к тому, что излучение на выходе объектива все равно имеет определенную расходимость. Из-за этого с ростом расстояния растет и размер пятна света, падающего на объекты. Фактически, именно величина угла расходимости излучения лазера определяет угловое разрешение лидара (количество измерений на один оборот).

Кроме размеров излучающей площадки, на величину угла расходимости влияет и фокусное расстояние объектива. Чем оно больше — тем меньше расходимость излучения:
laser-beam
Если использовать объектив с фокусным расстоянием 12 мм, то угол расходимости излучения будет около 1 градуса; у объектива с фокусным расстоянием 25 мм угол будет уже ~0.45 градуса. Мне удалось найти на Aliexpress достаточно подходящий объектив:
laser-lens
Его параметры: 25 мм; M12×0,5; ⅓; F2.0.
Этот объектив достаточно короткий, так что для того, чтобы соединить его с держателем, я использовал дополнительную покупную деталь: переходник-удлинитель (M12 Extension Adapter).
Вот так выглядит пятно лазера на расстоянии около 1.8 м (слева):
25mm-and-tape-2
Справа для сравнения — пятно от лазерной рулетки диаметром около 4 мм. Видно, что пятно от лидара примерно в 2.5 больше, так что его ширина около 10 мм.

Важно, что объективы лидара должны быть установлены максимально близко друг к другу. Если расстояние между ними увеличить, то на малых расстояниях лидар просто перестанет принимать отраженное излучение — оно не будет попадать на фотоприемник. Это требование создает ограничение на размеры объективов. В моей конструкции диаметр объектива лазера не может превышать 20 мм.

Также я экспериментировал с самодельным объективом, сделанным из одиночной линзы, взятой из фотоаппарата, и пластиковой оправы объектива M12 от web-камеры:
IMG-7400
Использованная линза пропускает ИК излучение, так что объектив достаточно неплохо работал, но из-за короткого фокусного расстояния (около 13 мм) излучение после него имело слишком большую расходимость.

Теперь стоит рассказать про объектив фотоприемника. Наиболее важный его параметр в случае лазерного дальномера — диаметр входного зрачка. Чем больше этот параметр — тем больше отраженного света попадет на фотодиод и тем больше будет отношение сигнал-шум. Это значит, что объектив должен иметь максимально большой диаметр. Именно поэтому я решил использовать стандартный объектив с креплением типа CS-mount. Для таких объективов также есть держатели, прикручивающиеся к плате.
В этом лидаре я использовал покупной объектив с параметрами 25mm; F1.2; CS ½.5». Видно, что у объектива большая светосила, при этом он имеет достаточно большое фокусное расстояние — 25 мм, так что диаметр входного зрачка получается достаточно большим. По расчету получается, что диаметр входного зрачка должен быть около 20 мм, однако, судя по всему, в реальности он ближе в 14 мм.
Также я пробовал использовать самодельный объектив, используя линзу диаметром 25 мм и часть от ненужного CS-объектива. Этот объектив действительно оказался лучше по энергетике (сигнал с фотодиода был заметно выше), но он ловил переотражения от сканирующего зеркала, так что он не очень подошел мне.

В случае, если предполагается использование лидара в условиях сильной световой засветки (особенно на улице), то между фотодиодом и объективом должен быть установлен интерференционный светофильтр, рассчитанный на длину волны 905 нм. Чаще всего они круглые, так что такой светофильтр можно приклеить к выходному отверстию объектива.
Я не стал использовать светофильтр — при комнатном освещении лидар может работать и без него.

Замечу, что как в случае лазера, так и в случае фотоприемника объектив работает на одной длине волне, так что проблема хроматических аберраций не возникает. Также при использовании APD с достаточно большой площадкой (0.5 мм) нет каких-то серьезных требований к параметрам объектива. Это значит, что в подобном дальномере можно использовать однолинзовые объективы.

В результате получившийся лазерный дальномер имеет такой вид:
rangefinder

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

Теперь следует добавить механику, чтобы сделать лазерный дальномер сканирующим.


Механика

Если не обсуждать твердотельные (solid-state) лидары, то можно выделить два метода 2D сканирования пространства — сканирование можно производить, вращая весь дальномер целиком, или вращать зеркало, наклонное на 45 градусов относительно оптических осей лидара.
Плюсы первого метода:


  • Не требуется достаточно крупное зеркало, которое сложно изготовить
  • Нет потерь на зеркале и проблем с переотражениями от него
  • Если сканирование идет в горизонтальной плоскости, то высоту лидара можно сделать маленькой
  • Нет проблем сделать сканирование на все 360 градусов

Недостатки:


  • Нужно как-то передавать на вращающуюся электронику питание и передавать данные. То есть нужно использовать либо скользящие контакты, ибо индуктивную+оптическую связь
  • Тяжелую вращающуюся конструкцию сложно балансировать
  • Нужна некая механика, чтобы вращать тяжелую конструкцию
  • Нужен относительно мощный мотор
  • Проблематично отлаживать вращающуюся электронику

Именно такой метод сканирования используется в лидарах пылесосов и PRLIDAR.

Плюсы использования сканирования зеркалом:


  • Зеркало и его держатель можно сделать достаточно легкими, так что нет больших проблем с балансировкой на больших оборотах
  • Легкое зеркало можно закрепить прямо на валу бесколлектрного мотора
  • Вращается только зеркало, так что нет необходимости в передаче электричества сквозь вращающиеся элементы

Недостатки:


  • Зеркало нужно как-то закрепить напротив объективов лидара, и крепление будет закрывать часть «обзора». Даже если использовать в качестве крепления прозрачную трубку-корпус всего дальномера, то к мотору зеркала и энкодеру все равно нужно подвести провода, и они будут перекрывать луч
  • Зеркало дает потери света и переотражения
  • Большая высота дальномера

Так как я хотел сделать именно лидар с высокой скоростью сканирования (не менее 15 оборотов/сек), я решил использовать сканирующее зеркало.
Важное требование к зеркалу — оно должно иметь внешнее отражающее покрытие (то есть покрытие должно быть на передней поверхности зеркала).
Если для сканирования использовать обычное прямоугольное зеркало, то его края не будут ник использоваться — свет туда попадать не будет. Идеальная форма такого зеркала — эллипс, так в проекции он дает окружность. Именно с таким зеркалом я уже сталкивался в готовом лидаре. Изготовить зеркало такой формы сложно, так что часто в лидарах используют восьмиугольное зеркало. Я пробовал изготовить такое зеркало самостоятельно, но только сломал несколько зеркал-заготовок из-за отсутствия опыта резки стекла малых размеров. Зато мне удалось найти на Aliexpress найти компанию, которая по моим чертежам изготовила четыре зеркала за 15$.
К сожалению, заказанное зеркало имеет недостаток — оно ослабляет сигнал практически в 2 раза. Насколько я поникаю, это связано с тем, что зеркало покрыто алюминием, также оно

© Habrahabr.ru