Любого робота можно условно разделить на три составляющие:
Механика — движущиеся части и каркас
Электроника — различные моторы, питание, управление
Программное обеспечение — операционная система, драйвера и прочее
Для того, чтобы выполнить роботу какую-либо задачу, ему необходимо понять смысл данных, полученных с различных датчиков, и уже затем определить команды, которые необходимо передать на исполнительные устройства (моторы).
Поэтому, одной из основных задач в робототехнике является обработка информации.
Приведу пример. Представьте себе соревнование роботов по футболу. Роботу-игроку необходимо:
- Найти, где находится мяч и определить траекторию его движения
- Узнать свое местоположение на поле
- Определить местоположение товарищей по команде и что они в текущий момент делают
- То же самое узнать про соперника
- Спланировать некоторую стратегию своих действий
- Двигаться и реагировать на изменяющиеся условия
- Ударить по мячу...
Смотрятся эти соревнования, на мой взгляд, очень забавно.
Можно выделить следующие задачи:
- Мяч — используя изображение, полученное с видеокамеры, обработать его и выделить в нем цветовые сегменты. Здесь нужно определить, из каких же основных цветов состоит наше изображение и где здесь мяч. Мяч должен отличаться от остальных объектов.
- Местоположение — выделить линию поля, разметку, ворота
- Товарищи по команде — необходимо обеспечить коммуникацию для обмена информацией
- Соперник — выделить игроков команды-соперника, сделать выводы на основе их действий
- Планирование — необходимо предсказывать дальнейшие действия движущихся объектов (мяча, игороков команды соперника, игороков своей команды), используя предыдущий опыт
- Движение, удары по мячу — действия, совершаемые на основе проведенного «обучения»
Здесь мы сталкиваемся с двумя типами проблем. Во-первых, есть вещи которые мы не знаем (например, как поведет себя игрок чужой команды), во-вторых, есть вещи, которые мы не знаем как сделать (как описать их в виде алгоритма). К таким вещам можно отнести, например, движения игрока в различных игровых ситуациях (сложно выделить все возможные встречающиеся ситуации). Схожие проблемы встречаются и при разработке автономных автомобилей (подробнее в статья).
Для решения этих задач в нашем арсенале есть два инструмента:
- Машинное обучение — позволяет адаптироваться на основе предыдущего опыта. Я уже писал о том что это такое в статье и об основных типах алгоритмов в статье.
- Вероятностное рассуждение — позволяет принимать решения в условиях неопределенности.
В своих дальнейших публикациях я расскажу об этих двух подходах подробнее и рассмотрю реализации различных алгоритмов. Следите за новостями моего блога и задавайте вопросы.
[add_ratings]