Ниже приведены этапы, которые ранее планировалось выполнить на этой неделе. Ниже мы поговорим о каждом более подробно. Если вы еще не прочитали часть 1 и часть 2, прежде чем читать часть 3

Обновления соответствия функций:

После третьей попытки мне удалось заставить сопоставление функций работать для моих нужд. С YOLO (You Only Look Once) вы можете обнаруживать элементы из библиотеки из более чем 80 предварительно обученных элементов. Для этого проекта я решил поискать знаки остановки.

Сначала узел camera загружает веса. Загрузка предварительно обученных моделей занимает около тридцати секунд.

Как только это будет завершено, он начнет сканирование знаков остановки.

Когда знак остановки найден, консоль сообщит, с какой вероятностью она увидела знак остановки. Алгоритм настроен на остановку только в том случае, если уверенность превышает 80%.

На данный момент это лучший алгоритм из трех. Единственный минус в том, что он медленный. Загрузка весов занимает около 30 секунд и 1 секунда на сканирование, что приводит к сканированию со скоростью 1 FPS на ЦП. Если TurtleBot перемещается слишком быстро, мы пропустим сканирование и пропустим объект.

Для реализации YOLO требовался OpenCV 3.4.2, но предоставленный нам виртуальный ящик имеет OpenCV 3.1.1. Потребовалось много времени, чтобы понять, что проблема была в версии OpenCV, а не в моем коде.

Демо:

Новые обновления карты мира:

Я также смог загрузить смоделированный город в Gazebo, следуя этому гайду. Мне нужно было реализовать это в первую очередь, так как это дало бы мне большую карту для работы, а также имело сплошную границу, чтобы робот не мог вечно двигаться в одном направлении, как моя старая карта.

Обновления по автономным движениям:

Используя frontier_exploration, я смог заставить их туториал работать, но не смог реализовать его для работы на моей собственной карте. Одна проблема, с которой я столкнулся, заключалась в том, что маркеры можно было разместить только на зеленой зоне РВИЗ, но в начале робот имеет очень ограниченную зеленую зону. Я бы расставил маркеры по всей области, но в моем проекте она не двигалась бы, как в примере.

Планы на будущее по этому проекту:

  • В настоящее время алгоритм YOLO обрабатывает одно изображение за 1 секунду. Это слишком медленно для отслеживания в реальном времени, и мне было интересно, если бы я отредактировал веса, увеличилось бы это FPS? В настоящее время он ищет все 80+ предопределенных элементов.
  • Сетка занятости рисует светло-серую рамку только в том случае, если они чувствуют стену. Было бы лучше, если бы камера чувствовала глубину бесконечности, она же рисовала светло-серую рамку, потому что перед роботом ничего нет. (см. рисунок 1)

  • Сделайте робота более автономным с помощью frontier_exploration