An open API service indexing awesome lists of open source software.

https://github.com/smorodov/slam2d_c_port

Минимальная реализация EKF SLAM 2D
https://github.com/smorodov/slam2d_c_port

Last synced: 5 days ago
JSON representation

Минимальная реализация EKF SLAM 2D

Awesome Lists containing this project

README

        

# SLAM 2D
Простая реализация 2d ekf slam для робота со сканером дающим мзмерения в форме расстояния и угла, моделируется шум в сигнале управления и шум в результатах измерения радара.

## Что такое EKF SLAM

EKF SLAM (Extended Kalman Filter Simultaneous Localization and Mapping) - это метод, используемый для одновременной локализации робота и построения карты окружающей среды. В основе EKF SLAM лежит фильтр Калмана, расширенный для учета неопределенности в оценках состояния робота и карты.

Процесс EKF SLAM обычно состоит из нескольких шагов:

1. **Предсказание состояния робота**:
- Используется модель движения робота и управляющее воздействие (например, скорость и угловое ускорение) для предсказания нового состояния робота.
- Этот шаг обновляет оценку местоположения и ориентации робота.

2. **Предсказание состояния карты**:
- Используется модель движения и текущая оценка местоположения робота для предсказания нового положения признаков на карте.
- Этот шаг обновляет оценку расположения объектов на карте.

3. **Обновление состояния робота на основе измерения**:
- Робот совершает наблюдения за окружающей средой (например, распознавание признаков на карте) и получает измерения.
- Измерения сравниваются с предсказанными положениями признаков на карте, и корректируется оценка местоположения и ориентации робота.

4. **Обновление состояния карты на основе измерения**:
- После обновления оценки местоположения робота на основе измерения, оценки расположения признаков также обновляются на основе измерений.
- Это позволяет уточнить карту окружающей среды на основе наблюдений робота.

## Видео работы программы.
[![Watch the video](https://i.ytimg.com/vi_webp/yrt2bietxJs/oar2.webp)](https://www.youtube.com/shorts/yrt2bietxJs)

## Зввисимости

* Eigen3 для матричных вычислений.
* OpenCV для отрисовки (легко отцепляется)

Файл matrix.txt нужно переписать в папку с exe-шником.

Проект проверялся на VS2022.