Skip to content

Solution of path planning and navigation for Robotnik rbcar with trained YOLOv5 dataset

Notifications You must be signed in to change notification settings

RazThePsycho/mobile_robot_planning_n_navigation

Repository files navigation

Описание некоторых элементов решения можно найти в файле

SOLUTION.md

Задание полуфинала олимпиады "Я - профессионал" 2022-2023 по робототехнике

Telegram Yandex IProfi Mail


scene pic


Репозиторий содержит ROS-пакет с минимальным решением задачи. Участнику следует, модифицируя этот пакет, решить задачу.

Задача

Дано картофельное поле в сезон сбора урожая. Поле по его периметру обнесено непреодолимым забором, поверхность поля имеет рельеф с ограниченным перепадом высот и ангар (складское помещение). Для транспортировки урожая картошки в ангар доступен мобильный колесный робот. Предполагается, что урожай картофеля расфасован по мешкам и некоторым образом распределен по поверхности поля.

Участникам предлагается, с использованием доступного робота, реализовать алгоритм управления, который позволит собрать наибольшее число мешков с картошкой и переместить их в ангар.

В закрытых тестовых сценариях могут быть изменены конфигурация статических препятствий, форма поверхности поля и расположение мешков.

Требуется разработать техническое решение, включая алгоритмическое и программное обеспечения системы управления и обработки сенсорной информации, в форме программного пакета для ROS на языках программирования С++ и/или Python.

Как все работает

Для решения задачи доступны два read-only docker-образа:

  • [base] registry.gitlab.com/beerlab/iprofi2023/problem/bachelor_problem_2023/base:ubuntu-latest -- включает все зависимости.

  • [scene] registry.gitlab.com/beerlab/iprofi2023/problem/bachelor_problem_2023/scene:ubuntu-latest -- собран на базе предыдущего и дополнительно включает файлы сцены в gazebo.

Запуск включает два шага:

  • В контейнере сервиса scene на основе образа [scene] запускается сцена в симуляторе gazebo bachelor_problem_scene.
  • В контейнере сервиса problem на основе образа [base] запускается решение bachelor_problem_2023.

Для автоматизации запуска запуска docker-контейнеров используется инструмент docker compose. Описание параметров запуска доступно в: docker-compose.yml .

Note! Если вы используется систему с GPU от Nvidia, доступны версии образов с тегом nvidia-latest и docker-compose.nvidia.ymlx

Установка и настройка окружения

Для настройки окружения необходимо иметь одну из перечисленных операционных систем:

  1. Ubuntu 18.04 и старше
  2. Windows 10 и старше, с установленным WSL (Не рекомендуется).

Для подготовки окружения необходимо сделать следующее:

  1. Установить docker-engine: Docker Engine.

  2. Также необходимо установить docker-compose-plugin: Docker Compose.

  3. Если вы планируете использовать видеокарту, установите также nviidia-container-toolkit: Nvidia Container Toolkit

  4. Добавить в группу docker пользователя

    sudo groupadd docker 
    sudo usermod -aG docker $USER 
    newgrp docker

Как запустить начальное(базовое решение)

Сделать форк репозитория в корень gitlab своего юзера, не изменяя имени репозитория.
Склонировать репозиторий:

git clone https://gitlab.com/<YOUR_NAME>/bachelor_problem_2023.git
cd bachelor_problem_2023

Дать права для подключения пользователю root к дисплею хоста:

xhost +local:docker

Запустить сцену и ros-пакет из этого репозитория:

docker compose -f docker-compose.yml up --build --pull always

Note! В файле docker-compose.yml хранится описание параметров запуска сцены и решения. По умолчанию запускается example_node

rosrun bachelor_problem_2023 example_node

Редактирование базового решения

Для редактирования доступны все файлы в репозтории, за исключение файлов docker-compose*.yml.
Чтобы начать решать задание вы можете отредактировать файл start.launch выбрав запуск python или C++ версии программы решения.

Если вы пишете на python, нужно, чтобы в start.launch была раскомментирована строка:

<node name="example_node" pkg="bachelor" type="example.py" output="screen"></node>

Если вы пишете на C++, нужно, чтобы в start.launch была раскомментирована строка:

<node name="example_node" pkg="bachelor" type="example_node" output="screen"></node>

Дополнительные полезные команды

В случае необходимости пересборки используйте флаг --build:

docker compose -f docker-compose.yml up --build

Для получения последней версии сцены (обновления) используейте флаг --pull always:

docker compose -f docker-compose.yml up --build --pull always

Подключение в контейнер

Для открытия новой bash-сессии в сервисе решения: problem используйте команду:

docker compose exec problem bash

Для открытия новой bash-сессии в сервисе сцены: scene используйте команду:

docker compose exec scene bash

Рестарт сцены или решения по отдельности

Для перезапуска решения используйте:

docker compose restart problem

Для перезапуска сцены используйте:

docker compose restart scene

Оценка

Оценивается количество перемещенных мешков с картошкой с поля в ангар, а также колличество подобранных мешков. Одновременно на машину может быть загружено не более 3 мешков. Колличество мешков картошки в багажнике можно узнать обратившись к топику /number_of_bags.

Баллы начисляются следующим образом:
+ 0.5 балла -- за каждый взятый мешок
+ 0.5 балла -- за каждый доставленный мешок
- 0.1 балла -- за каждое столкновение с препятствиями

Время, которое дается роботу на выполнение задания 10 минут.

About

Solution of path planning and navigation for Robotnik rbcar with trained YOLOv5 dataset

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published