Чтобы лучше понять, как люди будут взаимодействовать с мобильными роботами в дикой природе, нам нужно вывести их из лаборатории и развернуть в реальном мире. Но это нелегко сделать.
Робототехники, как правило, разрабатывают роботов, исходя из предположения, что они будут точно знать, где находятся их роботы в любой момент времени — очевидно, что это важная способность, если работа робота состоит в том, чтобы с пользой перемещаться между определенными местами. Но эта способность локализовать обычно требует, чтобы у робота были мощные датчики и карта его окружения. Есть способы обойти некоторые из этих требований: если у вас нет карты, есть методы, которые строят карту и локализуют одновременно, а если у вас нет хорошего датчика дальности, методы визуальной навигации используйте обычную RGB-камеру, которая в любом случае будет у большинства роботов. К сожалению, эти альтернативы традиционной навигации на основе локализации либо требуют больших вычислительных ресурсов, либо не очень надежны, либо и то, и другое.
Мы столкнулись с этой проблемой, когда хотели развернуть нашего мобильного социального робота Kuri в холлах нашего здания для исследования пользователей. Лидарный датчик Kuri не может видеть достаточно далеко, чтобы определить его местоположение на карте, а его бортовой компьютер слишком слаб для визуальной навигации. После некоторого размышления мы поняли, что для целей нашего развертывания нам на самом деле не нужно , чтобы Кури точно знал, где он находится большую часть времени. Нам действительно нужно было, чтобы Kuri возвращался к зарядному устройству, когда у него разряжался аккумулятор, но это было бы достаточно редко, чтобы человек мог помочь с этим, если это необходимо. Мы решили, что, возможно, сможем добиться того, чего хотим, просто позволив Кури отказаться от точной локализации и побродить . Чтобы лучше понять, как люди будут взаимодействовать с мобильными роботами в дикой природе, нам нужно вывести их из лаборатории и развернуть в реальном мире. Но это нелегко сделать.
Робототехники, как правило, разрабатывают роботов, исходя из предположения, что они будут точно знать, где находятся их роботы в любой момент времени — очевидно, что это важная способность, если работа робота состоит в том, чтобы с пользой перемещаться между определенными местами. Но эта способность локализовать обычно требует, чтобы у робота были мощные датчики и карта его окружения. Есть способы обойти некоторые из этих требований: если у вас нет карты, есть методы, которые строят карту и локализуют одновременно, а если у вас нет хорошего датчика дальности, методы визуальной навигации используйте обычную RGB-камеру, которая в любом случае будет у большинства роботов. К сожалению, эти альтернативы традиционной навигации на основе локализации либо требуют больших вычислительных ресурсов, либо не очень надежны, либо и то, и другое.
Мы столкнулись с этой проблемой, когда хотели развернуть нашего мобильного социального робота Kuri в холлах нашего здания для исследования пользователей. Лидарный датчик Kuri не может видеть достаточно далеко, чтобы определить его местоположение на карте, а его бортовой компьютер слишком слаб для визуальной навигации. После некоторого размышления мы поняли, что для целей нашего развертывания нам на самом деле не нужно , чтобы Кури точно знал, где он находится большую часть времени. Нам действительно нужно было, чтобы Kuri возвращался к зарядному устройству, когда у него разряжался аккумулятор, но это было бы достаточно редко, чтобы человек мог помочь с этим, если это необходимо. Мы решили, что, возможно, сможем добиться того, чего хотим, просто позволив Кури отказаться от точной локализации и побродить .
Роботизированное блуждание
Если вы видели, как старая модель робота-пылесоса делает свое дело, вы уже знакомы с тем, как выглядит блуждание: робот движется в одном направлении до тех пор, пока больше не может, может быть, потому, что он чувствует стену или натыкается на нее. в препятствие, а затем поворачивает в другом направлении и продолжает движение. Если робот проделывает это достаточно долго, статистически очень вероятно, что он покроет весь пол, возможно, несколько раз. Более новые и современные роботы-пылесосы могут составлять карту и убирать более систематически и эффективно, но они, как правило, дороже.
Вы можете представить блуждающее поведение как состоящее из трех частей:
Движение по прямой
Обнаружение событий, которые запускают выбор нового направления
Метод, используемый для выбора нового направления
Многие возможные блуждающие модели поведения оказываются не очень эффективными. Например, мы обнаружили, что когда робот перемещался на несколько метров, прежде чем выбрать новое направление наугад, это приводило к тому, что он застревал в движении вперед и назад в длинных коридорах. Изгиб коридоров означал, что простое ожидание столкновения робота перед выбором нового направления быстро превратилось в прыжки робота между стенами. Мы исследовали варианты, используя данные одометрии для смещения выбора направления, но это не помогло, потому что оценка роботом собственного курса — которая изначально была плохой — ухудшалась каждый раз, когда робот поворачивался.
В конце концов мы обнаружили, что предпочтение двигаться в одном направлении как можно дольше — стратегия, которую мы называем осознанным выбором направления, — наиболее эффективно заставляла Кури бродить по длинным широким коридорам нашего здания.
Информированный выбор направления использует локальную карту затрат — небольшую, постоянно обновляемую карту области вокруг робота — для выбора направления, в котором роботу легче всего двигаться, разрывая связи в пользу направлений, которые ближе к ранее выбранному направлению. Результирующее поведение может выглядеть как волна; робот фиксирует направление, но в конце концов на карте затрат появляется препятствие, и локальный контроллер начинает слегка поворачивать робота, чтобы «обойти его». Если бы это было небольшое препятствие, например человек, проходящий мимо, робот обогнул бы его и продолжил движение примерно в исходном направлении, но в случае больших препятствий, таких как стены, локальный контроллер в конечном итоге обнаружит, что он отклонился слишком далеко от исходного направления. линейный план и сдаться. Информированный выбор направления сработает и проследит линии через карту затрат, чтобы найти наиболее похожее направление, которое проходит через свободное пространство. Как правило, это будет линия, которая движется вдоль стены и немного от нее. Наше блуждающее поведение сложнее, чем что-то вроде постоянного выбора поворота на 90 градусов без учета какого-либо другого контекста, но оно намного проще, чем любой подход, включающий локализацию, поскольку роботу просто нужно уметь воспринимать препятствия в непосредственной близости и отслеживать их. приблизительно того, в каком направлении он движется. Обе эти возможности вполне доступны, поскольку в основных пакетах ROS есть реализации, которые выполняют тяжелую работу, даже для базовых датчиков диапазона, шумных инерциальных измерительных блоков и колесных энкодеров.
Как и более интеллектуальные подходы к автономной навигации, блуждание иногда идет не так, как надо. Лидару Кури трудно видеть темные поверхности, поэтому он иногда вклинивается в них. Мы используем те же виды поведения при восстановлении, которые распространены в других системах, определяя, когда робот не двигался (или двигался недостаточно) в течение определенного времени, а затем пытаемся повернуться на месте или двигаться назад. Мы сочли важным настроить наше поведение при восстановлении, чтобы освободить робота от опасностей, характерных для нашего здания. В наших первых раундах испытаний робот уверенно попадал в ловушку, когда одна его гусеница свисала со скалы, идущей вдоль пешеходной дорожки. Как правило, нам удавалось вывести робота с помощью телеуправления. поэтому мы закодировали последовательность команд скорости, которые будут вращать робота вперед и назад, чтобы повторно зацепить гусеницу в качестве последнего средства восстановления. Этот тип настройки для конкретного домена, вероятно, необходим для точной настройки поведения блуждающих устройств для нового местоположения.
С другими типами отказов бороться сложнее. Во время тестирования мы иногда запускали робота на другом этаже, где стояли столы и стулья с тонкими металлическими ножками. Лидар Кури не мог надежно их увидеть и иногда «прижимался» к сиденью стула, отклоняясь назад настолько, что теряла сцепление с дорогой. Никакая комбинация команд не могла вывести робота из этого состояния, поэтому добавление поведения безопасности при обнаружении наклона на основе датчиков обрыва робота было бы критически важным, если бы мы хотели развернуть его на этом этаже.
Использование помощи человека
В конце концов, Кури нужно добраться до зарядного устройства, а блуждание не лучший способ сделать это. К счастью, человеку легко помочь. Мы создали некоторое программное обеспечение для чат-бота, которое робот использовал для проверки связи с удаленным помощником, когда его батарея разряжена. Кури маленький и легкий, поэтому мы решили, что помощник должен нести робота обратно к зарядному устройству, но можно представить, что удаленному помощнику будет предоставлен интерфейс телеуправления, а вместо этого он позволит ему отвезти робота обратно. Мы развернули эту систему в течение четырех дней в нашем здании. Кури смог пройти все 350 метров коридора на полу и пробежал в общей сложности 32 часа. Каждый из 12 раз, когда Кури нужно было зарядить, система уведомляла назначенного помощника, и они находили робота и помещали его на зарядное устройство. Поведение робота при восстановлении не позволяло ему застрять большую часть времени, но помощнику приходилось четыре раза вручную спасать его, когда он застревал возле трудноразличимых перил.
Блуждание с помощью человека позволило нам провести предварительное пользовательское исследование удаленного взаимодействия с роботом-фотографом здания, которое иначе было бы невозможно. Системе потребовалось около получаса времени помощника в течение 32-часового развертывания. Хорошо настроенная автономная навигационная система могла бы сделать это вообще без вмешательства человека, но нам пришлось бы потратить гораздо больше инженерного времени, чтобы такая система работала так хорошо. Единственной другой реальной альтернативой было бы полностью дистанционное управление роботом, что для нас невозможно с точки зрения логистики.
Блуждать или не бродить?
Важно подумать о подходящем уровне автономии для всего, что вы хотите, чтобы робот делал. Существует широкий спектр между «автономным» и «дистанционно управляемым», и решение посередине может помочь вам продвинуться дальше в другом аспекте, который вас больше волнует, например, стоимость или универсальность. Это может быть немодным предложением для исследователей робототехники (для которых менее чем автономные решения могут показаться поражением), но лучше думать об этом как о приглашении к творчеству: какие новые аспекты вы могли бы исследовать, если бы начали с 80 процентов автономное решение, а не полностью автономное решение? Сможете ли вы работать с системой дольше или там, где раньше это было невозможно? Как вы могли бы добавить человеческой помощи, чтобы преодолеть разрыв?
Мы считаем, что блуждание с помощью человека является особенно эффективным подходом в некоторых сценариях, которые особенно интересны исследователям взаимодействия человека и робота, в том числе:
Изучение человеческого восприятия роботов
Изучение того, как роботы должны взаимодействовать с прохожими и вовлекать их
Изучение того, как роботы могут взаимодействовать с удаленными пользователями и операторами
Вы, очевидно, не хотели бы строить коммерческого робота-почтового курьера, используя блуждание, но, безусловно, можно использовать блуждание, чтобы начать изучать некоторые проблемы, с которыми эти роботы столкнутся. И вы даже сможете сделать это с выразительными и привлекательными платформами, такими как Kuri (попробуйте наш код !), которые в противном случае не справились бы с этой задачей. Даже если блуждание не подходит для вашего конкретного случая использования, мы надеемся, что вы все равно сохраните с собой образ мышления — что простые решения могут иметь большое значение, если вы запланируете лишь небольшую помощь человека при проектировании вашей системы.