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 (Light Detection and Ranging) — активная дистанционная методика измерения расстояния лазерным импульсом. Датчик посылает оптический импульс, принимает отражённый сигнал и измеряет время возвращения, чтобы вычислить расстояние. Частота вращения и разрешение определяют плотность точек скана; дальность зависит от модели и поверхности цели.
Краткое определение: LiDAR — оптический дальномер, генерирует облако точек или 2D‑скан в зависимости от конструкции.
В примерах ниже используется RPLIDAR A1 — бюджетный внутренний LiDAR с обзором 360°, рабочая частота вращения 5.5–10 Гц и максимальной дальностью ~8 м. Устройство включает вращающийся сканер, мотор и интерфейс связи (последовательный порт/USB).
LiDAR может выдавать расстояния с высокой частотой (тысячи измерений в секунду) и требует инструментов для обработки и визуализации: ROS‑пакеты, Rviz и пакеты SLAM.
ROS (Robot Operating System) — фреймворк и набор инструментов для разработки робототехнических приложений. Он разделяет программу на узлы (nodes), которые обмениваются сообщениями через топики. ROS упрощает интеграцию сенсоров, визуализацию данных и использование готовых пакетов (rplidar_ros, hector_slam, gmapping, cartographer).
Шаг 1: Установка ROS
- Обновите индекс пакетов:
sudo apt update- Установите ROS Noetic (полный десктоп — включает Rviz, Gazebo и т.д.):
sudo apt install ros-noetic-desktop-full- Инициализируйте rosdep и окружение (если ещё не сделали):
sudo rosdep init
rosdep update
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc- Запустите roscore для проверки установки:
roscoreЕсли roscore запустился без ошибок, ROS установлен корректно.
Шаг 2: Получение первого скана
- Установите пакет rplidar_ros:
sudo apt-get install ros-noetic-rplidar-rosПодключите LiDAR к USB‑порту. Система создаст устройство вроде /dev/ttyUSB0.
Запустите драйвер:
roslaunch rplidar_ros rplidar.launchЭтот запуск запустит узел, который публикует данные сканирования в топик /scan.
- Просмотрите сырые данные в новом терминале:
rostopic echo /scanВы увидите строки с массивом расстояний и углов — необработанные данные лазерного скана.
- Для визуализации в Rviz откройте новый терминал и запустите:
rosrun rviz rviz- В Rviz смените Fixed Frame на Laser.
- Нажмите Add → LaserScan и укажите тему /scan.
Теперь вы должны видеть в реальном времени 2D‑скан вашего LiDAR.
Совет по правам доступа: если терминал не получает данные, возможно, нужно дать права на устройство:
sudo chmod 777 /dev/ttyUSB0После этого перезапустите запуск rplidar.
Шаг 3: Запуск картографирования (SLAM)
Для построения карты используем hector_slam — SLAM‑пакет, хорошо работающий с 2D LiDAR и без обязательной одометрии.
- Установите пакет hector_slam:
sudo apt-get install ros-noetic-hector-slam- Найдите и отредактируйте launch‑файл:
roscd hector_slam_launch
nano tutorial.launchЕсли есть проблема с правами:
sudo chmod 777 tutorial.launchВнутри launch‑файла проверьте соответствие имен топиков (например, /scan) и базовой системы координат (frame_id). Отредактируйте при необходимости.
- Запустите картографирование:
roslaunch hector_slam tutorial.launchПеремещайте LiDAR медленно по комнате, держа его на высоте ~0.5–1 м. Медленное движение даёт лучшее выравнивание сканов и снижает дрейф построенной карты.
Советы по качеству карты:
- Делайте перекрывающиеся проходы, чтобы 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, одометрия) или переход на визуально‑инерционные методы.
Мини‑методология для надёжного результата:
- Проверьте физическое соединение и питание LiDAR.
- Убедитесь в доступности /dev/ttyUSB0 и правах на чтение/запись.
- Запустите roscore, затем rplidar.launch и убедитесь, что /scan публикуется.
- Откройте Rviz и проверьте корректность frame_id и направления осей.
- Запустите hector_slam tutorial.launch и начните медленное сканирование с перекрытием.
- Сохраните карту и сделайте резервную копию PGM/YAML.
- Конвертируйте в 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‑карту помещения и расширять систему в зависимости от задач.
Похожие материалы
Тёмная тема в Paint для Windows 11
Intruder в Burp Suite — подробное руководство
7 бесплатных программ для защиты и скрытия папок
Печать фото со смартфона: как получить лучшее качество
Установка ScpToolkit для DualShock 3 на Windows