Как работают роботы. Часть 2
Сегодня немного расскажу об автономном перемещении роботов, ибо другие темы, о которых можно было бы рассказать, видятся мне еще более занудными.
Небольшая ремарка: большинство людей, услышав слово "робот" представляют себе антропоморфных терминаторов, но в реальности роботы выглядят совершенно по разному, и их внешний вид напрямую зависит от функционала. Когда-нибудь я расскажу и о подводных роботах и о космических, но не будем забегать вперед :)
Так вот, колесный или гусеничный робот, который решит начать восстание машин и самостоятельно выбраться... хотя бы из чулана, в котором его держат кожаные ублюдки, должен пройти несколько этапов обретения автономности:
1) Управление по скорости.
Робот должен выполнять команды линейного перемещения (вперед-назад) и углового вращения (по часовой стрелке - против) с заданными скоростями. Также он должен высчитывать текущую скорость, и, исходя из нее, пройденное расстояние. В самом простом случае корректность выполнения команд достигается ПИД-регулятором, а подсчет текущей скорости - датчиком холла или энкодером.
2) Локализация на местности.
Робот должен понимать, где конкретно он сейчас находится. Если это улица, то тут все относительно просто. Устанавливаем на робота GPS и получаем абсолютные координаты с погрешностью в +-15 метров. Либо GPS RTK для точности в пару сантиметров, тут уже от задач зависит. Если же мы находимся в помещении, то вариантов несколько больше: маячки, метки, камеры, и.т.д. Лично мне больше всего нравится локализация при помощи Лидара. Он и точность неплохую дает, и позволяет обеспечить...
3) Динамическое построение маршрута.
Робот должен адаптироваться к изменению окружения. Если ему приходит задача перемещения из точки "А" в точку "Б", то сначала строится маршрут, в котором присутствуют только статические препятствия, нанесенные на карту помещения, которая может содержаться в памяти робота (стены, мебель и прочие неподвижные вещи). Если карты нет, то робот считает, что и статических препятствий тоже нет и маршрут строится по прямой линии, а все реальные препятствия считаются динамическими. Собственно, сканирование местности происходит при помощи того же самого лидара, что и отвечает за локализацию.
Выглядит в голове у робота это все, примерно, вот так. Заранее простите за пояснения в пэинте :)
Здесь, например, красными линиями обозначены данные, полученные с лидара. Черная область вокруг - запрещенная (если робот там окажется - он врежется в препятствие), белая область - разрешенная (никто никуда не врежется), серая - неизведанная.
В итоге, пройдя все эти этапы, мы получаем достаточно универсальную систему, которая может допиливаться под конкретные задачи и становиться гораздо более прикладной. Например, катать ikomas'a по офису. Собственно, а почему бы и нет?


Лига Новых Технологий
2.1K постов17K подписчик
Правила сообщества
Главное правило, это вести себя как цивилизованный человек!
Но теперь есть еще дополнительные правила!
1. Нельзя раскручивать свой сайт, любую другую соц сеть или мессенджер, указывая их как источник. Если данная разработка принадлежит вам, тогда можно.
2. Нельзя изменять заглавие или текст поста, как указано в источнике, таким образом чтобы разжигать конфликт.
3. Постите, пожалуйста, полный текст с источника, а не превью и ссылка.