TF-Luna — однолучевой лазерный дальномер для дронов

TF-Luna — это однолучевой лазерный дальномер от Benewake, работающий по принципу времени пролёта (ToF, Time-of-Flight): он измеряет расстояние до одной точки впереди и отдаёт значение по UART или I²C. Стоит ~30 USD, весит 5 граммов, питается от 5 В. Для дронов это «дальномер на одно направление» — ровно то, что нужно, когда GPS не работает, а полноценный 360° лидар вешать некуда.

TF-Luna установлен на sg90-руке iris_claudedrone в Gazebo, угол 90°

Как работает

Принцип времени пролёта прост: «отправил импульс, замерил время до отражённого». TF-Luna светит модулированным инфракрасным лазером 905 нм и считает фазовый сдвиг возвращённого сигнала. На выходе — одно число расстояния и «strength» (амплитуда отражения, косвенный признак уверенности замера).

Класс лазера первый — безопасный для глаз, но смотреть в упор всё равно не надо.

Характеристики

ПараметрЗначение
Диапазон0.2–8 м
Точность±6 см (типичная)
Частота кадров100 Гц по умолчанию, до 250 Гц
ИнтерфейсUART 115200 бод / I²C
Угол обзора~2° (один луч)
Длина волны905 нм
Питание5 В, пик ~70 мА
Масса5 граммов
Класс лазерапервый (безопасный для глаз)

Зачем в дронах

Три типичных сценария:

  1. Высотомер для полётов в помещении. GPS не работает, барометр дрейфует, нужен абсолютный референс высоты. TF-Luna смотрит вниз и даёт расстояние до пола. Точнее барометра на малых высотах (1–3 метра), не зависит от ветра как ультразвук.
  2. Дальномер вперёд. Один луч в направлении полёта — дешёвый способ узнать «там стена через 1.2 метра». Не заменяет 2D-лидар, но достаточно для тормозного манёвра.
  3. Скан-зависание (stop-and-scan). Дрон зависает, серво крутит TF-Luna по горизонтали, на каждом шаге снимается одно расстояние. На выходе — веер 180°, дешёвая альтернатива RPLidar для разведки в помещениях без GPS. См. скан-зависание — мы используем именно эту схему в проекте (TASK-001 и TASK-002).

Ограничения

  • Один луч. Угол обзора ~2°. Без механического сканирования (серво) ловит только то, что ровно впереди — может пройти мимо тонкого препятствия (тросы, провода).
  • Прямое солнце. На улице в полдень дальность падает в 2–3 раза, появляются помехи. Для уличных задач лучше 2D-лидар с фильтром или другая длина волны.
  • Стекло и зеркала. Луч проходит сквозь или отражается под углом — TF-Luna либо «не видит», либо показывает дальность за стеклом.
  • Чёрные и поглощающие поверхности. Углепластик, чёрный матовый пластик — дальность падает до 1–2 метров.
  • Минимум 0.2 метра. Ближе слепая зона. Для подсадочной поддержки это нормально, для точного объезда препятствий — нет.

Альтернативы

СенсорДиапазонЦенаКогда лучше TF-Luna
VL53L0X0–2 м~3 USDочень близкие препятствия, минимум габаритов и веса
VL53L1X0–4 м~10 USDсредняя дальность, многозонный угол обзора
HC-SR04 (ультразвук)0.02–4 м~2 USDматово-чёрные и зеркальные поверхности (свет не помеха)
RPLidar A10–12 м, 360°~100 USDнужен настоящий 2D-скан, а не серво-веер
TFmini Plus0.1–12 м~50 USDте же задачи, что у TF-Luna, но дальше и точнее

Для разведки в помещении без GPS на маленьком квадрокоптере связка TF-Luna + сервопривод SG90 даёт 80% возможностей RPLidar за ~10% цены. Минус — частота скана падает с 5–10 Гц (RPLidar) до ~0.05 Гц (один полный веер 180° ≈ 22 секунды). Для зависающего дрона достаточно.

Как используется в проекте claudeDrone

В нашей симуляции TF-Luna стоит на руке серво SG90 поверх модели iris_claudedrone. Координатная цепочка iris_claudedrone → sg90_arm → tf_luna_sweep гарантирует, что данные сенсора уже привязаны к углу серво через TF — отдельная синхронизация в коде не нужна. Полный скан 180° выдаёт 181 замер на топик /scan/sweep (sensor_msgs/LaserScan), шаг 1°, время прохода ~22 секунды (выдержка 120 мс на угол + ход серво). Подробнее — статья про скан-зависание.

Параметры выше относятся к TF-Luna в сценарии полёта в помещении (GPS_TYPE=0, AHRS_EKF_TYPE=10, без естественного освещения). На улице цифры будут другими — нужен отдельный замер.