Исследование и разработка методов локализации и картирования (SLAM) для мобильной платформы на базе LEGO Mindstorms и ROS 2
Репозиторий с нодами ROS 2, в котором реализованы три алгоритма:
ICP— Iterative Closest Point, Итеративный алгоритм ближайших точекAMCL— Adaptive Monte Carlo Localization, Адаптивная локализация Монте-Карло, локализация фильтром частицVO SLAM— Visual Odometry SLAM, визуальная одометрия
Также в репозитории содержится хранилище Obsidian с ежедневными логами по практике и подготовленный отчёт.
Алгоритм, использующий результаты два соседних сканирования лидара в качестве альтернативы одометрии, т.е. для того, чтобы определить как робот повернулся и сдвинулся.
Входные данные: два соседних измерения лидара — облака точек.
Выходные данные: сдвиг t и поворот R, совмещающие два измерения.
Алгоритм, использующий одометрию робота, результаты сканирования лидара и уже построенную карту вида binary occupancy grid для локализации робота.
Входные данные: набор частиц на предыдущем шаге, одометрия, измерения лидара, карта окружения.
Выходные данные: обновлённый набор частиц на текущем шаге.
Алгоритм получает скорректированное изображение с камеры, ее коэффициенты искажения и матрицу K на вход. С помощью пакета image_proc выравниваем изображение и отправляем в алгоритм.
Входные данные: скорректированное изображение, коэффициенты искажения, матрицу K, карта окружения.
Выходные данные: трансформации ArUco-маркеров.
Установите ROS 2 Jazzy вместе с development tools и необходимые пакеты:
sudo apt install ros-jazzy-tf-transformations
sudo apt install ros-jazzy-teleop-twist-keyboardНастройте окружение и сбилдите проект (измените bash на командную оболочку, которую используете):
. /opt/ros/jazzy/setup.bash
colcon build
. install/setup.bashДалее всё зависит от того, что вы хотите сделать:
- Для записи датасетов с сканами лидара с помощью
rosbagизучайте День 1 в хранилище Obsidian - Для работы
ICPзапуститеurg_node2и icp-ноду с предварительной установкойnumpyиsklearn:
sudo apt install python3-numpy
sudo apt install python3-sklearn python3-sklearn-lib python-sklearn-doc
ros2 run icp_node icp_node- Для работы
AMCLзапуститеamcl/main.pyв виртуальном окружении сnumpyиmatplotlib - Для работы
VO SLAMизучите День 5 в хранилище Obsidian для установки зависимостей ROS 2 и запускаrealsense2_camera, а затем запустите slam-ноду:
ros2 run slam_node slam_node