Гид по технологиям

2D‑карта помещения с LiDAR и ROS

7 min read Робототехника Обновлено 28 Dec 2025
2D‑карта помещения с LiDAR и ROS
2D‑карта помещения с LiDAR и ROS

Кратко: вы можете собрать 2D‑карту комнаты с недорогим LiDAR (например, RPLIDAR A1), ROS Noetic и пакетом hector_slam. Подключите датчик по USB, запустите rplidar_ros для получения топика /scan, затем hector_slam для построения карты; сохраните результат командой публикации syscommand и конвертируйте изображение в PNG.

Перед началом подготовьте:

  • Ноутбук или ПК с Ubuntu Server (рекомендуется Ubuntu 20.04 для ROS Noetic)
  • Установленная система ROS Noetic
  • LiDAR‑датчик (например, RPLIDAR A1) и USB‑кабель
  • Опционально: колесная платформа или ручной держатель для медленного перемещения LiDAR

Важно: у вас должны быть права доступа к последовательному порту (/dev/ttyUSB0) и доступ к установке пакетов через apt.

LiDAR‑сканер, стоящий на ноутбуке

LiDAR (Light Detection and Ranging) — активная дистанционная методика измерения расстояния лазерным импульсом. Датчик посылает оптический импульс, принимает отражённый сигнал и измеряет время возвращения, чтобы вычислить расстояние. Частота вращения и разрешение определяют плотность точек скана; дальность зависит от модели и поверхности цели.

Краткое определение: LiDAR — оптический дальномер, генерирует облако точек или 2D‑скан в зависимости от конструкции.

LiDAR‑сканер на столе, вид спереди

В примерах ниже используется RPLIDAR A1 — бюджетный внутренний LiDAR с обзором 360°, рабочая частота вращения 5.5–10 Гц и максимальной дальностью ~8 м. Устройство включает вращающийся сканер, мотор и интерфейс связи (последовательный порт/USB).

LiDAR может выдавать расстояния с высокой частотой (тысячи измерений в секунду) и требует инструментов для обработки и визуализации: ROS‑пакеты, Rviz и пакеты SLAM.

LiDAR рядом с USB‑адаптером для последовательного порта

ROS (Robot Operating System) — фреймворк и набор инструментов для разработки робототехнических приложений. Он разделяет программу на узлы (nodes), которые обмениваются сообщениями через топики. ROS упрощает интеграцию сенсоров, визуализацию данных и использование готовых пакетов (rplidar_ros, hector_slam, gmapping, cartographer).

Архитектура Robot Operating System и концепция узлов и топиков

Шаг 1: Установка ROS

  1. Обновите индекс пакетов:
sudo apt update
  1. Установите ROS Noetic (полный десктоп — включает Rviz, Gazebo и т.д.):
sudo apt install ros-noetic-desktop-full
  1. Инициализируйте rosdep и окружение (если ещё не сделали):
sudo rosdep init
rosdep update
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  1. Запустите roscore для проверки установки:
roscore

Если roscore запустился без ошибок, ROS установлен корректно.

Шаг 2: Получение первого скана

  1. Установите пакет rplidar_ros:
sudo apt-get install ros-noetic-rplidar-ros
  1. Подключите LiDAR к USB‑порту. Система создаст устройство вроде /dev/ttyUSB0.

  2. Запустите драйвер:

roslaunch rplidar_ros rplidar.launch

Этот запуск запустит узел, который публикует данные сканирования в топик /scan.

  1. Просмотрите сырые данные в новом терминале:
rostopic echo /scan

Вы увидите строки с массивом расстояний и углов — необработанные данные лазерного скана.

  1. Для визуализации в Rviz откройте новый терминал и запустите:
rosrun rviz rviz
  • В Rviz смените Fixed Frame на Laser.
  • Нажмите Add → LaserScan и укажите тему /scan.

Теперь вы должны видеть в реальном времени 2D‑скан вашего LiDAR.

Сырые данные LiDAR, выведенные в терминал командой echo

Совет по правам доступа: если терминал не получает данные, возможно, нужно дать права на устройство:

sudo chmod 777 /dev/ttyUSB0

После этого перезапустите запуск rplidar.

Шаг 3: Запуск картографирования (SLAM)

Для построения карты используем hector_slam — SLAM‑пакет, хорошо работающий с 2D LiDAR и без обязательной одометрии.

  1. Установите пакет hector_slam:
sudo apt-get install ros-noetic-hector-slam
  1. Найдите и отредактируйте launch‑файл:
roscd hector_slam_launch
nano tutorial.launch

Если есть проблема с правами:

sudo chmod 777 tutorial.launch

Внутри launch‑файла проверьте соответствие имен топиков (например, /scan) и базовой системы координат (frame_id). Отредактируйте при необходимости.

  1. Запустите картографирование:
roslaunch hector_slam tutorial.launch

Перемещайте LiDAR медленно по комнате, держа его на высоте ~0.5–1 м. Медленное движение даёт лучшее выравнивание сканов и снижает дрейф построенной карты.

Результат сканирования комнаты визуализирован в Rviz

Советы по качеству карты:

  • Делайте перекрывающиеся проходы, чтобы SLAM мог сопоставлять фичи.
  • Избегайте быстрого вращения LiDAR — это снижает точность.
  • При возможности интегрируйте одометрию или IMU для улучшения устойчивости.

Шаг 4: Сохранение и редактирование карты

После успешного сканирования сохраните карту командой публикации syscommand:

rostopic pub syscommand std_msgs/String "savegeotiff"

Файл карты может сохраниться в формате PGM/PGM + YAML. Для конвертации в PNG используйте ImageMagick:

sudo apt-get install imagemagick
convert scannedMap.pgm MyPngMap.png

Примечание: пути и имена файлов зависят от конфигурации hector_slam и launch файлов.

Вы можете повысить качество карт и добавить 3D‑информацию, интегрировав глубинную камеру (Kinect, RealSense) или IMU. Комбинирование LiDAR + глубина даёт далее:

  • более точную локализацию в сложных помещениях
  • семантическую привязку объектов (например, столы, двери)
  • возможность реконструкции 3D‑карты при последующей обработке

На мобильных устройствах (новые iPhone/iPad) LiDAR встроен в камеру и удобен для AR‑задач — но для робототехники на практике чаще применяют отдельные LiDAR‑модули.

  • GMapping — классический 2D SLAM для роботов с одометрией.
  • Google Cartographer — современный SLAM с поддержкой 2D/3D и построением глобальных карт.
  • RTAB‑Map — ориентирован на визуально‑последовательный 3D SLAM с поддержкой RGB‑D камер.

Выбор зависит от наличия одометрии, качества датчиков и ресурсных ограничений.

  • Очень скользкие или зеркальные поверхности приводят к ложным отражениям.
  • Сильно заполнённые помещения с малым количеством заметных фичей (пустые коридоры) усложняют выравнивание сканов.
  • Быстрое движение LiDAR вызывает смазывание данных и потерю синхронизации.

В таких случаях полезны дополнительные сенсоры (IMU, одометрия) или переход на визуально‑инерционные методы.

Мини‑методология для надёжного результата:

  1. Проверьте физическое соединение и питание LiDAR.
  2. Убедитесь в доступности /dev/ttyUSB0 и правах на чтение/запись.
  3. Запустите roscore, затем rplidar.launch и убедитесь, что /scan публикуется.
  4. Откройте Rviz и проверьте корректность frame_id и направления осей.
  5. Запустите hector_slam tutorial.launch и начните медленное сканирование с перекрытием.
  6. Сохраните карту и сделайте резервную копию PGM/YAML.
  7. Конвертируйте в PNG для просмотра и публикации.

Роль‑ориентированные чеклисты:

  • Инженер‑установщик:
    • Провёл аппаратную калибровку и проверил права на устройство.
    • Установил все ROS‑пакеты и зависимости.
  • Оператор сканирования:
    • Двигает LiDAR медленно и контролирует визуализацию в Rviz.
    • Делает перекрывающиеся проходы и проверяет однородность данных.
  • Разработчик карты:
    • Проверяет конфигурацию параметров hector_slam и frame_id.
    • Сохраняет и оптимизирует карту в PGM/YAML и экспортирует PNG.
# Обновление пакетов
sudo apt update

# Установка ROS Noetic
sudo apt install ros-noetic-desktop-full

# Запуск ROS
roscore

# Запуск драйвера RPLIDAR
roslaunch rplidar_ros rplidar.launch

# Проверка топика скана
rostopic echo /scan

# Запуск Rviz
rosrun rviz rviz

# Запуск hector_slam
roslaunch hector_slam tutorial.launch

# Сохранение карты
rostopic pub syscommand std_msgs/String "savegeotiff"

# Права на порт
sudo chmod 777 /dev/ttyUSB0

# Конвертация PGM в PNG
convert scannedMap.pgm MyPngMap.png
  • RPLIDAR A1: обзор 360°, частота вращения 5.5–10 Гц, дальность до ~8 м
  • Частота выборки LiDAR: тысячи измерений в секунду (в зависимости от модели)
  • ROS Noetic: совместим с Ubuntu 20.04 LTS
  • Топик /scan стабильно публикуется больше 10 секунд.
  • В Rviz видна цельная картина без больших артефактов и пропусков.
  • Сохранённый файл карты (PGM + YAML) успешно конвертируется и читается.
  • Если вы видите шум или неожиданные значения, проверьте кабели и отражающие поверхности.
  • Не направляйте лазер в глаза или на людей — соблюдайте базовые правила безопасности лазерного оборудования.
  • Старайтесь не вызывать постоянный доступ 777 для /dev/ttyUSB0 в продакшн — настройте udev‑правила для ограниченного доступа.
  • Добавить одометрию (wheel encoders) или IMU для уменьшения дрейфа.
  • Интегрировать RGB‑D камеру для семантической составляющей и 3D‑реконструкции.
  • Использовать loop closure (Cartographer, RTAB‑Map) для исправления накопленного дрейфа.
  • hector_slam: хорошо работает с 2D LiDAR без одометрии; прост в запуске.
  • gmapping: требует одометрии; прост в настройке для роботов на колёсах.
  • cartographer: мощный, поддерживает 2D/3D и loop closure, сложнее в настройке.
  • rtab_map: ориентирован на визуально‑инерционный 3D SLAM и долгосрочную корреляцию карт.
  • Сканирование квартиры для автономной уборки и планирования маршрутов.
  • Инвентаризация и построение планов помещений в археологии и реставрации.
  • Помощь в сельском хозяйстве для картирования теплиц и внутренних помещений.

LiDAR в сочетании с ROS даёт быстрый путь к созданию точных 2D‑карт помещений даже на базовом оборудовании. Для лучших результатов используйте медленные перекрывающиеся проходы, проверяйте права на устройство и при необходимости интегрируйте дополнительные датчики.

Важно: начните с простого рабочего конфига (rplidar_ros + hector_slam), затем эволюционируйте на Cartographer или RTAB‑Map при росте требований.

Краткое резюме:

  • Подключите LiDAR, установите rplidar_ros, убедитесь, что топик /scan публикуется.
  • Визуализируйте данные в Rviz и настройте frame_id.
  • Запустите hector_slam для картографирования и сохраните карту.
  • При необходимости добавьте одометрию, IMU или RGB‑D для повышения качества.

Благодаря этому руководству вы сможете получить рабочую 2D‑карту помещения и расширять систему в зависимости от задач.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Тёмная тема в Paint для Windows 11
Windows

Тёмная тема в Paint для Windows 11

Intruder в Burp Suite — подробное руководство
Кибербезопасность

Intruder в Burp Suite — подробное руководство

7 бесплатных программ для защиты и скрытия папок
Утилиты

7 бесплатных программ для защиты и скрытия папок

Печать фото со смартфона: как получить лучшее качество
Фотография

Печать фото со смартфона: как получить лучшее качество

Установка ScpToolkit для DualShock 3 на Windows
Инструкции

Установка ScpToolkit для DualShock 3 на Windows

Включение TPM и Secure Boot для Windows 11
Инструкции

Включение TPM и Secure Boot для Windows 11