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

Пример ликеро-водочного завода объединяет такие возможности, как картографирование, навигация, захват изображений, сбор данных и связь со сторонними API, в единый навык «бродить и собирать». В этом посте мы рассмотрим (на абстрактном уровне) процесс объединения этих возможностей.

Во-первых, такая работа требует, чтобы Мисти шла по заранее определенному маршруту через свое рабочее пространство. По пути ей нужно делать паузы, собирать данные и отправлять их в облако. Для этого у нее должна быть подробная внутренняя карта окружающей среды, поэтому мы должны начать с того, что покажем Мисти ее новое рабочее место.

Навигация по винокурне

Прежде чем мы сможем закодировать навык, нам нужно помочь Мисти построить карту винокурни. Мы делаем это, вызывая ее команды сопоставления и водя ее (программно или вручную) по ее новой среде.

При составлении карты Мисти использует свой датчик глубины для создания массива данных, называемого сеткой занятости. Сетка занятости представляет собой двумерную матрицу, в которой каждый элемент представляет собой ячейку пространства на карте Мисти. Значение каждого элемента сообщает Мисти (и ее разработчикам), является ли эта часть карты проходимой, занятой объектом или неисследованной.

Чтобы Мисти следовала по маршруту, мы вычисляем положение ячеек по осям X и Y в сетке занятости. Когда мы пишем код для нашего навыка, мы передаем эти координаты в команды движения пути Мисти, чтобы она перемещалась из одного места в другое.

В примере с ликеро-водочным заводом нам нужно, чтобы Мисти следовала по одному и тому же заранее определенному пути каждый раз, когда собирает данные. Но что, если владелец винокурни отвлечется посреди задания и положит что-то посреди маршрута Мисти? Мисти не создает новую карту, если на нее не указано, и новое препятствие будет совершенно неожиданным. Когда это произойдет (а это неизбежно произойдет), Мисти будет использовать свои датчики времени полета, чтобы избегать препятствий.

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

С небольшой помощью облака

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

Следующий шаг — подготовка Мисти к обработке всех данных, которые она будет собирать. Наш метод заключается в том, чтобы Мисти отправляла каждое изображение в Microsoft Azure для анализа. В видео мы используем Cognitive Services для извлечения соответствующих данных о температуре из изображения, а затем записываем эту информацию в базу данных Azure для последующего доступа.

Если бы мы завершили разработку на этом этапе, наш владелец бизнеса получил бы весьма способного помощника. Мы можем быть уверены, что Мисти сможет собрать необходимые данные и сохранить их в облаке для удаленного доступа. Но причина, по которой Мисти собирает все эти данные, в первую очередь состоит в том, чтобы вселить в винокурню уверенность, что пока его нет, все идет гладко. А если он в отъезде, возможно, он не сможет проверить эти данные на наличие нужных ему деталей.

Мы можем помочь ему, возложив на Мисти ответственность сообщать ему о проблемах. С помощью нескольких строк кода мы можем научить Мисти допустимому диапазону значений чисел, которые она собирает. И когда у нее температура выходит за пределы этого диапазона, мы можем вызвать ее на помощь, отправив SMS на дистиллятор через веб-запрос в службу, такую ​​​​как Twilio.

Расследование издалека

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

На момент написания статьи видеопоток Misty находится в активной разработке (вы можете увидеть дорожную карту возможностей на сайте Misty Robotics). Когда он будет готов для разработчиков, вы сможете использовать потоковое видео наряду с другими возможностями, показанными в этом примере. В дополнение к тому, что они доступны из написанного вами кода, который работает на самой Мисти, большинство этих функций также доступны через REST API Мисти и интерфейс WebSocket. Это дает разработчикам возможность писать программы, которые отправляют команды Мисти с внешних устройств, или создавать свои собственные графические интерфейсы для управления Мисти и отправки ей команд.

Правильный инструмент для работы

При разработке Мисти мы много работали, чтобы предоставить ей широкий спектр дополнительных возможностей. И хотя это правда, что она не будет хороша во всем (может пройти какое-то время, прежде чем она сможет играть Баха на фортепиано), многое она может сделать хорошо, особенно в участке рабочего пространства, требующем самостоятельной подвижности, восприятия. , и общение. Мы не собираемся пытаться угадать все рабочие места, которые будут выполнять Мисти, но мы уверены, что это не будет сделано по какой-либо одной способности, которая делает ее подходящим роботом для данной задачи. Вместо этого это будет творчество разработчиков, которые объединят эти возможности.