Лидар


RPLidar C1

RPLidar C1

Рисунок 1 — RPLidar C1

RPLidar C1 — это 2D-лидар для кругового сканирования окружающего пространства (см. рисунок 1). Он последовательно измеряет расстояния в разных направлениях и формирует набор точек вокруг датчика в диапазоне 360°.

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

Лидар испускает короткий инфракрасный лазерный сигнал в одном направлении. Луч отражается от ближайшего объекта и возвращается обратно в датчик. По отражённому сигналу электроника лидара вычисляет расстояние до объекта.

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

Пример одного измерения:

угол:      45°
расстояние: 1,8 м.

Если рядом нет объекта или отражённый сигнал слишком слабый, измерение может быть некорректным. Такие значения обычно игнорируются алгоритмами навигации и построения карты.

Определение системы координат данных сканирования RPLidar C1

Рисунок 2 — Определение системы координат данных сканирования RPLidar C1

Механическая система

Сканирующий модуль RPLidar C1 вращается по часовой стрелке. Обычная частота сканирования — 10 Гц, то есть лидар делает около 10 полных круговых сканов в секунду.

Система координат лидара

Данные лидара удобно представить в полярной системе координат (см. рисунок 2):

  • начало координат находится в центре лидара;

  • направление задаётся углом;

  • дальность задаётся расстоянием от центра лидара до препятствия.

Ось X — это начальное направление сканирования. От него лидар отсчитывает угол до каждой измеренной точки. Угол увеличивается по часовой стрелке по мере вращения сканирующего модуля.

Данные в ROS 2

В ROS 2 данные лидара публикуются в виде сообщения sensor_msgs/msg/LaserScan, обычно в топик /scan. Это сообщение содержит параметры одного кругового скана и массив расстояний.

Основные поля LaserScan:

Поле

Описание

header.frame_id

Имя системы координат лидара, например laser.

angle_min, angle_max

Начало и конец углового диапазона сканирования.

angle_increment

Угловой шаг между соседними измерениями.

range_min, range_max

Минимальная и максимальная допустимая дальность.

ranges

Массив расстояний в метрах.

Каждый элемент массива ranges соответствует одному направлению луча:

angle = angle_min + i * angle_increment
distance = ranges[i]

При частоте 10 Гц RPLidar C1 обновляет такой массив примерно 10 раз в секунду. Эти данные можно использовать для обнаружения препятствий, навигации и построения карты.

Установка RPLidar C1

  1. Установите RPLidar C1 на монтажную деку из поликарбоната при помощи винтов M2.5x6 (см. рисунок 3).

    Установка RPLidar C1

    Рисунок 3 — Установка RPLidar C1

  2. Установите алюминиевые стойки 40 мм на монтажную деку из поликарбоната при помощи винтов M3х6 (см. рисунок 4).

    Установка алюминиевых стоек

    Рисунок 4 — Установка алюминиевых стоек

  3. Установите подготовленный RPLidar на алюминиевые стойки с помощью винтов M3х6 (см. рисунок 5).

    Установка RPLidar C1 на алюминиевые стойки

    Рисунок 5 — Установка RPLidar C1 на алюминиевые стойки

  4. Подключите RPLidar к Raspberry Pi 5 через порт USB с помощью комплектного провода с переходником.

  5. Зафиксируйте подключенный провод с помощью стяжек таким образом, чтобы он не попадал в область вращения пропеллеров.

Использование

Запуск через clover2-settings

Чтобы включить лидар в Клевере, откройте clover2-settings, перейдите в раздел additional_sensors и включите настройку 2d_lidar.

Экран настроек 2d_lidar

Затем необходимо перезапустить сервис clover2:

sudo systemctl restart clover2

После успешного запуска лидар начнёт вращаться, а драйвер будет публиковать данные в топик /scan с типом сообщения sensor_msgs/msg/LaserScan.

Во втором терминале проверьте, что топик появился:

ros2 topic list | grep scan
ros2 topic info /scan

Ожидаемый тип топика:

Type: sensor_msgs/msg/LaserScan

Проверьте частоту публикации:

ros2 topic hz /scan

Для RPLidar C1 в режиме Standard нормальная частота сканирования составляет 10 Гц.

Для просмотра одного сообщения:

ros2 topic echo --once /scan

Если нужно проверить только массив расстояний:

ros2 topic echo --once /scan --field ranges

Если /scan публикуется с ненулевой частотой, а поле ranges содержит массив расстояний в метрах, лидар работает корректно.

Ручной запуск лидара

В первом терминале запустите драйвер RPLidar C1:

ros2 run rplidar_ros rplidar_composition --ros-args \
  -p serial_port:=/dev/rplidar \
  -p serial_baudrate:=460800 \
  -p frame_id:=laser \
  -p inverted:=false \
  -p angle_compensate:=true \
  -p scan_mode:=Standard \
  -p topic_name:=scan

При успешном запуске в терминале появится лог:

RPLidar running on ROS2 package rplidar_ros. RPLIDAR SDK Version:2.1.0
RPLidar health status : OK.
current scan mode: Standard, sample rate: 5 Khz, max_distance: 16.0 m, scan frequency:10.0 Hz