Проект стажировки в ГК "Геоскан" - реализация SLAM-алгоритма для колесного робота по данным лидар-камеры Intel RealSense L515.
Подробности о ходе и результатах проекта (на декабрь 2024) - в файлах
Report.pdf
иPresentation.pdf
(отчет и презентация о проекте как об учебной практике СПбГУ).
Цель проекта: реализовать алгоритм для построения и прохождения маршрута от текущего положения до заданной точки в неизвестной заранее местности с препятствиями колесным роботом "Геобот" по данным с лидар-камеры Intel RealSense L515 с одновременным построением трехмерной карты пространства.
Цель репозитория: визуализировать RGBD-данные с лидар-камеры Intel RealSense L515 на ноутбуке через беспроводное подключение к Raspberry Pi по протоколу ssh.
Запуск сервера/клиента производится только из ветки eth_example_[server/client] запуском python-файла ethernet_client_server/pointcloud_[server/client].py для сервера и клиента соответственно, только на соответствующем устройстве (сервер - на том, к которому подключена камера, клиент - на визуализирующем данные).
Основные моменты:
- Если сервер не запущен, сначала запускается он, потом клиент.
- Клиент может перезапускаться несколько раз во время работы сервера.
- При перезапуске сервера клиент тоже нужно будет перезапустить.
На текущий момент основные результаты находятся в дополнительных ветках. В main
планируется собрать проект в финальном виде после его запуска и тестирования.
Ветки в разработке:
-
eth_example_server
- разработка "серверной" составляющей проекта: сбор и трансляция данных с лидар-камеры. Серверная часть рассчитана на запуск на Raspberry Pi, к которому подключена лидар-камера.IP-адрес Raspberry Pi зафиксирован в коде (на текущий момент
'172.20.10.10'
). Скорость трансляции также зафиксирована в коде при задании конфигурации трансляции (на текущий момент30 fps
).На текущий момент транслирует только данные глубины без RGB-составляющей ввиду ограничений пропускной ширины канала передачи данных (провод USB 2.1 вместо USB 3.1).
-
eth_example_client
- разработка "клиентской" составляющей проекта: прием, обработка и визуализация данных с сервера. Клиентская часть рассчитана на запуск на устройстве с экраном и графическими драйверами, способному подключаться к серверу по ssh.IP-адрес сервера зафиксирован в коде (на текущий момент
'172.20.10.10'
).На текущий момент визуализирует только данные глубины в виде плоской карты (проекции объемного облака точек). В ближайших планах визуализация объемного облака точек.
Ветки вне разработки:
-
eth_example_client_lesscustom
- иная реализация идеи веткиeth_example_client
с теми же параметрами. Пока не работает. -
eth_my_server_client
- учебная самостоятельная реализация взаимодействия "сервер-клиент" для освоения принципов работы сокетов в Python и обертки RealSense SDK для Pythonpyrealsense2
. Основная папка -understandable_stream
. -
eth_cpp_client
- проба для разработки "клиентской" составляющей проекта на С++ (без обертки для Python) с опорой на инструментrs-server
и соответствующие классы RealSense SDK, не реализованные для оберток. Брошена ввиду отсутствия поддержкиrs-server
лидар-камеры L515.
Проект тестировался на следующей конфигурации версий ПО:
- Ubuntu 22.04 LTS / Ubuntu 24.04 LTS / Windows 11 (клиент) и Debian 12 Bookworm (сервер)
- RealSense SDK v2.47.0 (на сервере и клиенте)
- pyrealsense2 (на сервере и клиенте)
- Python - 3.9-3.11 (основное ограничение - модуль asyncore, удаленный из Python 3.12)
Файлы в папке understandable_stream
и основа кода для сервера и клиента взяты из примеров (examples) pyrealsense2
.