Проект для симуляции и тестирования алгоритмов навигации робота.
.
├── workspace/ # ROS рабочее пространство
│ ├── src/
│ │ └── algop_sim/ # ROS пакет с симуляцией
│ │ ├── config/ # Конфигурационные файлы
│ │ ├── launch/ # Launch файлы
│ │ ├── scripts/ # Python скрипты
│ │ ├── urdf/ # Описание робота
│ │ └── worlds/ # Миры для симуляции
├── pc_run/ # Скрипты для запуска на ПК
│ ├── docker-compose.yml # Конфигурация Docker
│ ├── docker_new.bash # Скрипт создания нового контейнера
│ └── docker_run.bash # Скрипт запуска контейнера
└── README.md # Этот файл
scripts/scan_to_tf.py- Нода для преобразования данных лазерного сканера в tf-преобразованияscripts/slam.py- Нода EKF SLAM для оценки положения роботаscripts/fsm.py- Нода с конечным автоматом для управления движением робота. Реализует следующие состояния:DriveForward- движение вперед до обнаружения препятствияTurnRight- поворот направо на 90 градусовDriveCircle- движение по кругуTurnLeft- поворот налево на 90 градусовFinalDrive- финальное движение вперед
config/- Конфигурационные файлы для настройки параметровlaunch/- Launch файлы для запуска симуляцииurdf/- Описание робота в формате URDFworlds/- Миры для симуляции в Gazebo
docker-compose.yml- Конфигурация Docker контейнераdocker_new.bash- Скрипт для создания нового контейнераdocker_run.bash- Скрипт для запуска существующего контейнера
- Установленный Docker
- Установленный Docker Compose
- Доступ к интернету для загрузки образов
- Запуск контейнера:
cd pc_run
./docker_run.bash- ИЛИ подключение к запущенному контейнеру с открытием нового терминала:
cd pc_run
./docker_new.bash- После запуска контейнера:
- Откроется терминал внутри контейнера
- Перейдите в рабочую директорию ROS:
cd /workspace - Соберите проект:
catkin build
- Загрузите переменные окружения:
source devel/setup.bash - Запустите весь проект через launch файл:
roslaunch algop_sim simulation.launch
- Для остановки симуляции нажмите Ctrl+C
- Для выхода из контейнера нажмите Ctrl + D
Параметры EKF SLAM можно настроить в файле slam.py:
Q- матрица шума процессаR- матрица шума измеренийcovariance- начальная ковариация
Параметры конечного автомата можно настроить в файле fsm.py:
LINEAR_SPEED- линейная скорость движенияANGULAR_SPEED- угловая скорость поворотаDISTANCE_THRESHOLD- порог расстояния до препятствияANGLE_THRESHOLD- угол поворотаCIRCLE_TIME- время движения по кругуCIRCLE_LINEAR_SPEED- линейная скорость при движении по кругуCIRCLE_ANGULAR_SPEED- угловая скорость при движении по кругуFINAL_DRIVE_TIME- время финального движения вперед
Для отладки можно использовать:
rostopic list- список активных топиковrostopic echo /topic_name- просмотр сообщений в топикеrviz- визуализация tf-преобразований и данныхrosrun rqt_tf_tree rqt_tf_tree- просмотр дерева tf-преобразованийrosrun smach_viewer smach_viewer.py- визуализация состояний конечного автомата