ROS (www.ros.org) - это не что иное как Robot Operating System, операционная система для роботов. Явление, можно сказать, новое. Впервые о нем было громко заявлено в середине 2010 года с широкой рекламной кампанией платформы Willow Garage PR2 (Personal Robot 2, www.willowgarage.com) - робота, напичканного всем современным арсеналом датчиков и камер, передвигающегося на колесной платформе, а в остальном повторяющего гуманоида. Именно на базе ROS и PR2 сейчас создается прототип искусственного интеллекта для первого поколения robo sapiens. В разработке участвует крупное интернациональное сообщество профессионалов, среди которых много русских ученых и программистов.
Руки PR2 имеют семь степеней свободы, кисти выполнены в виде захватов, хотя на данный момент прорабатывается вариант их модульной замены на другие типы. В каждую из кистей встроены датчики давления, акселерометр и светодиодный индикатор (чтобы быстро определить месторасположение кисти). В остальном мы имеем вполне стандартную реализацию с набором всех современных датчиков и камер.
Без ПО любой современный робот - это груда металлолома, и сейчас есть большая разница между понятиями "чем оснащен" и "что может". Долгие годы софт для роботов писался в рамках отдельных приложений, были и варианты готовых программных комплексов, но редко кто задумывался о создании отдельной полноценной специализированной операционной системы. Вместе с тем необходимость в таковой есть, и ее можно обозначить такими влияющими факторами, как модульность программных приложений, отвечающих за выполнение определенных операций, и необходимость быстрого подключения/реализации новых возможностей.
Именно из таких соображений создавалась ROS. На данный момент она состоит из двух основных частей: непосредственно ядра и дополнительных наборов программных средств (библиотек, драйверов, готовых решений).
Что же такое ROS?
ROS не следует воспринимать как операционную систему "под один проект", хотя PR2 сегодня является ее локомотивом. На базе Robot Operating System сейчас функционирует несколько десятков различных коммерческих и экспериментальных моделей, и этот список постоянно расширяется.
В принципе, роботоделам ничего большего на самом деле и не требуется: ROS обеспечивает необходимый уровень абстрагирования от "железа", с поддержкой большого количества современного оборудования на уровне драйверов и библиотек, имеет в своем арсенале базовые решения в области коммуникаций и обмена сообщениями. При всем этом сам проект является open source (лицензия BSD), к его разработке сейчас подключено довольно серьезное сообщество, в котором присутствуют представители крупных вузов и производителей электронной техники.
ROS обеспечивает необходимый уровень абстрагирования от "железа", с поддержкой большого количества современного оборудования на уровне драйверов и библиотек, имеет в своем арсенале базовые решения в области коммуникаций и обмена сообщениями.
Ядро ROS без особых проблем устанавливается на Ubuntu, в экспериментальном режиме также поддерживаются OS X, Arch, Fedora, Gentoo, OpenSUSE, Slackware, Debian, и частичный функционал может быть доступен при установке на Windows и FreeBSD.
ROS базируется на коде, написанном на С++ (модификация roscpp), незначительные дополнения в рамках packages можно писать и на Python (модификация rospy). Для примера скажем, что на С++ доступно программирование обмена сообщениями, их фильтрации, драйверов джойстика, камер, лазерных датчиков, звука, алгоритмических фильтров обработки данных, 3D-анализа и компьютерного видения (OpenCV), системы принятия решений и так далее. На Python вы получаете доступ к гораздо меньшему функционалу, но, в целом, управление можно построить и на базе этого языка. В большом количестве документации на сайте www.ros.org вы часто можете найти примеры листингов сразу на С++ и Python. На последнем чаще всего реализуются клиентские API. При этом изначально может показаться, что тот же робот PR2 программируется только на "двух плюсах", однако, если копнуть библиотеки, можно заметить, что некоторые из них написаны на Python. В целом, для работы с ROS нужно знать два языка.
Если говорить об уровне сложности изучения... этой операционной системой сейчас пользуются и школьники для своих небольших проектов (code.google.com/p/otl-ros-pkg).
Дополнительные программные
средства ROS
Как уже было сказано выше, операционная система ROS состоит из ключевого ядра и дополнительных программных средств. Давайте рассмотрим последние более подробно. Дело в том, что здесь собрано все самое лучшее, что есть и используется в робототехнике. Итак, в первую очередь, это комплект ROS-PKG, в котором содержатся различные библиотеки, драйверы, а также программные дополнения, в основном, от сторонних разработчиков, и в рамках этих реализаций можно найти алгоритмы выполнения тех или иных прикладных задач.
Специально для робота Willow Garage PR2 имеется дополнительный набор программных средств WG-ROS-PKG.
Что касается самих датчиков и оборудования, то в рамках дополнительных коллекций поддерживается весь современный спектр:
- 1D (инфракрасные датчики).
- 2D (лазерные сенсоры, драйверы для ключевых устройств от SICK, Leuze, Neato).
- 3D (сенсоры и камеры, драйверы для устройств SwissRanger 3000/4000, Kinect и PrimeSense).
- Аудио. В рамках библиотеки hark решены такие ключевые вопросы, как локализация источников звука в пространстве, "сосредоточение внимания" на одном источнике, распознавание речи.
- Видеокамеры. Поддерживается широкий спектр устройств.
- Датчики окружающей среды (погода, атмосферное давление, освещение и т.п.).
- Датчики силы, вращения, давления.
- Захват движения (алгоритмы на уровне библиотек, поддерживается и такая вещь, как VICON - захват движения по маркерам).
- Датчики положения, акселерометры, GPS.
- Системы питания.
- RFID (считывание).
- Другие системы и интерфейсы датчиков.
Коммуникации с устройством предполагается нескольких типов, наиболее стандартный вариант реализован в библиотеке actionlib, предусматривающей стандартную клиент-серверную архитектуру.
Коммуникации с устройством предполагается нескольких типов, наиболее стандартный вариант реализован в библиотеке actionlib, предусматривающей стандартную клиент-серверную архитектуру.
Кроме всего прочего, отдельной коллекцией идет реализация робовидения на базе OpenCV (Open Source Computer Vision Library), на которой стоит остановиться более подробно.
OpenCV начала разрабатываться в 1999 году ныне очень маститым специалистом в области компьютерных наук Gary Bradsky. Через некоторое время после старта идеи с подачи Вадима Писаревского была образована русская команда, занявшаяся доработкой самого проекта. В 2005 году в самых ярких и сложных соревнованиях роботов DARPA Grand Challenge победила машина Stanford Artificial Intelligence Robot (STAIR), использующая OpenCV. После логического завершения проекта OpenCV основные его участники перешли на работу в Willow Garage. OpenCV широко используется не только в ROS, но и на множестве других платформ. Решение является open source (лицензия BSD).
Какие задачи актуальны сейчас?
PR2 рассчитан как многофункциональный робот, по существу, он может выполнять любые задачи, которые ему запрограммируют: от игры в шахматы до сортировки полотенец. Нужно сказать, что стоит он дорого - $400 тыс., и, конечно, позволить себе такую дорогую игрушку могут далеко не все.
Но есть одна ниша, в которой PR2 особенно актуален - образовательные учреждения. Ведь один вопрос - изучать программирование современных роботов в теории, а другой - на практике. Поэтому компания Willow Garage сейчас активизировалась в этом сегменте, причем представила 11 учебным заведениям своих роботов бесплатно. Плюс к этому, довольно большие надежды возлагаются на сообщество, которому предоставляется возможность дистанционного программирования PR2. На сайте компании можно найти все исходные коды с пояснениями, а также поучаствовать в периодически проводящихся состязаниях. В целом, нужно отметить, что все ключевые наработки в PR2 во многом являются результатами конкурсов, проводимых компанией разработчиков.
Один из последних проводился весной этого года, и назывался он Perception Challenge, то есть был посвящен узнаванию. Участникам давалось в общей сложности 35 предметов, а точнее, их описания (размеры) и фотографии. В качестве таких объектов выступали обычные вещи, такие, как консервные банки с продуктами, пакеты молока и т.п. На базе этого нужно было написать программу, способную научить робота:
- распознаванию одного объекта в различных положениях;
- распознаванию множества объектов в различных положениях;
- распознаванию и идентификации (узнаванию) объекта в различных положениях;
- распознаванию и идентификации (узнаванию) множества объектов в различных положениях.
В ходе проведения соревнований, помимо 35 изначальных объектов, организаторы добавляли 15 новых. Этим самым подчеркивалась возможность динамического обучения робота "на лету". Приз за первое место составлял $7 тыс.
Компьютерное зрение PR2 |
Среди других направлений развития исследований в рамках PR2 стоит выделить четыре-пять основных, о которых мы расскажем отдельно.
Расширенное использование
манипуляторов
В данном случае мы говорим о том, что непосредственно робот может делать своими руками. Нужно сказать, что в последнее время это направление довольно сильно развилось и не в рамках PR2. Достаточно сказать о робо-руках, которые могут играть в шахматы, то есть машина анализирует ситуацию на реальной доске, распознает фигуры, может производить ходы. Таких реализаций есть несколько, в том числе и русский Chess Termninator от Константина Костенюка.
Что касается PR2, то вариант с шахматными фигурами уже давно был пройден в рамках состязаний Mobile Manipulation Challenge, и сейчас эту машину обучают большей частью бытовым операциям, таким, как открытие дверей, вызов лифта и т.п. Наиболее интересный вариант, который реализован, - включение вилки в обычную розетку электропитания. При этом на последней нет никаких специальных датчиков, робот просто анализирует изображение.
Интерактивное взаимодействие
робота и человека
Тема Human-Robot Interaction (HRI) является постоянной с того времени, как люди начали полноценно задумываться о роботах. Сейчас, когда ситуация с развитием искусственного интеллекта, а также уровнем "восприятия" дает все предпосылки к созданию вполне разумных и понимающих машин, к данному направлению стали активно подключаться специалисты из областей социальной и когнитивной психологии. Направлений исследований сейчас очень много, в частности, все чаще идут разговоры о том, что роботы все-таки должны быть похожи и внешне, и по габаритам на homo sapiens. Это подобие позволит быстрее сблизиться. Если не говорить о PR2, то сейчас те же немцы из института Фраунгофера технологии машиностроения и автоматизации IPA в Штутгарте создали робо-руку, которую можно обучить любым новым движениям с помощью манипулятора, который одевает на свою руку человек.
То, что сейчас делают с PR2 в плане интерактивных взаимодействий, очень похоже. Хотя сам робот не может передавать мимику, он может общаться, понимать речевые команды, реализовывать некоторые жесты. Сейчас идут опыты непосредственно с тем же самым обучением движениям с помощью человека.
Самостоятельное планирование
движений и выполняемых операций
На данный момент именно это направление является высшим пилотажем в робототехнике. Например, вы даете роботу некое сложное задание, и он сам планирует, как его лучше исполнить. В простейшем случае это может быть достижение какой-либо точки в охватываемом периметре, реализация сложной операции, которая состоит из ряда простых, и так далее.
Нужно сказать, что в этой области идут подвижки буквально по всем фронтам робототехники. Роботов ставят все в более сложные условия, и изобретателям приходится постоянно улучшать параметры искусственного интеллекта. Мы даже не будем говорить о том, что творилось на соревнованиях автономных наземных беспилотников IGVC 2011 (www.igvc.org), которые показывают, что реализовать робо-такси без водителя-человека могут уже и студенты.
В рамках PR2 сейчас решаются более сложные задачи, и очень отрадно отметить, что в сообщество разработчиков добавились опытные специалисты из MIT. Ученые Leslie Kaelbling и Tomas Lozano-Perez сейчас поставили перед собой довольно сложную цель, а именно - обучение PR2 возможности разделять сложную задачу на ряд простых.
Хотя сам вопрос совсем не прост. Если мы говорим о тривиальных задачах, то успех гарантирован. Другой вопрос - действия робота в режиме неопределенности. Например, если провести параллель с шахматами, разработчики ИИ в этой нише превращают все действия программы в детерминируемые. Самообучающихся ИИ для шахмат сейчас фактически нет. А если рассматривать реальные ситуации, с которыми сталкивается человек, то он в действительности очень часто принимает сложные решения в режиме неопределенности, использует метод проб и ошибок для накопления опыта. Говоря языком программистов ИИ, основывается на принципах перебора в рамках не информированного поиска.
Вообще, тема абстрактного взгляда и подхода к решению задач довольно увлекательна, и очень интересно, как она сможет развиться в робототехнике.
А в ближайших перспективах PR2, скорее всего, станет делать нечто типа выполнения команды: "Принеси мне банку "Кока-колы". Робот знает, как она выглядит, и примерные места (холодильник, стол на кухне и т.п.), где она может находиться. Таким образом, ему изначально нужно найти тот же холодильник, потом открыть его, взять банку, закрыть холодильник и привезти.
Распознавание образов и окружения
Как вы понимаете, все темы инновационных исследований в совокупности являются взаимосвязанными. Еще в середине 2000-х появились первые действующие системы, базирующиеся на 3D-лазерных сканерах и связанных с ними видеокамер для составления трехмерных карт местности и помещений. Сейчас они начинают активно использоваться практически везде, но при условии дополнительных модификаций. На самом деле мы стоим на пороге внедрения в роботов систем познания. То есть они могут самостоятельно проанализировать предмет, дать ему название, научиться его использовать. В качестве наставника в данном случае будет выступать человек.
Подытожим
PR2 - не единственный робот, на базе которого строятся эксперименты в области программирования современной робототехники. Например, у немцев есть его аналог pi4-workerbot. Компания RoboDynamics выпустила сейчас фактически "пустышку" Luna, которую планируется продавать за $1000. Дело в том, что она предусматривает возможности программирования, но пока не содержит необходимого количества ПО. Его в действительности пока мало. А в целом, можно сказать, что сейчас именно на базе ROS и PR2 создается прототип интеллекта для первого поколения robo sapiens. И если говорить конкретно о Willow Garage, то, конечно, радует присутствие большого количества русских имен в составе разработчиков.
Сейчас именно на базе ROS и PR2 создается прототип интеллекта для первого поколения robo sapiens.
Кристофер,
itcs.3dn.ru
Горячие темы