четверг, 31 января 2008 г.

Диалог с роботом

Для начала, хочется сказать пару слов о моих сайтах. Посещаемость сайта «Самодельный робот» превысила 100 человек в сутки, и составила за январь более 2100 уникальных посетителей в месяц. Самый популярный раздел сайта - Шасси робота. За этот месяц посетителями было закачано в сумме более 500Мб материалов по изготовлению самодельного робота...
Кстати, количество подписчиков у данного блога доросло до 25 человек.

Ну, а теперь - собственно, к теме сообщения. А тема сегодня у нас - это диалог с роботом.

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

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

Второй вариант, используемый тоже весьма часто - поиск тематического контекста. Иными словами, у робота есть некоторый словарик из слов, разбитый по тематикам. Если Вы говорите ему предложение, в котором 3 слова из 5 относятся к тематике медицины, например, то ответ тоже будет взят из словарика ответов по медицине...

Кроме того, часто пытаются «вбить» в базу робота ответы на самые распространенные вопросы и высказывания. Наконец, существуют слабые попытки осуществления синтаксического и морфологического разбора...

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

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

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

Прекрасный параграф, с полезными и нужными рекомендациями, посвятил обсуждаемой мною теме Артемий Лебедев, рекомендую почитать.

А Андрей Плахов написал целую гневную статью о будущем искусственного интеллекта.

Попробуйте-ка решить эту непростую задачку - Вы, вдруг да что-нибудь получится?

воскресенье, 27 января 2008 г.

Ответы на запросы

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

Как сделать робота

Самый популярный «запрос-вопрос» (более 100 переходов), сайт, в принципе, специально был оптимизирован под этот запрос, и тем не менее, вопрос - достаточно сложный, и люди, возможно, не сразу находят ответ на этот вопрос на моем основном сайте. Итак, сделать робота, тем более не совсем банального - занятие, дорогие читатели, не одноминутное, требующее, порой, достаточно серьезных денежных и временнЫх вложений. Рассмотрим подход к изготовлению робота более подробно:
Прежде всего, определитесь, какой тип робота Вы хотите сделать.
Основные типы роботов:

  • Мобильный робот на основе микроконтроллера - для такого робота требуется купить микроконтроллер, схему программатора к нему, соединить микроконтроллер с датчиками и моторчиками робота, и запрограммировать его, используя специальный ассемблер. Создание робота на основе микропроцессора - это не мой выбор, поскольку он является для меня слишком нерациональным и трудоемким, связанным с пайкой, и не позволяет реализовать необходимую сложность поведения робота. В то же время, использование микроконтроллера позволяет значительно уменьшить вес робота, а значит - и сложность при выборе и изготовлении шасси. Этот вариант является одним из самых распространенных на сегодня вариантом конструирования самодельных роботов.
  • Мобильный робот на основе КПК - почти то же самое, что микроконтроллер, однако, КПК имеет более широкие возможности, но и стоит намного дороже. Широко известный пример такого робота - комплект PPRK (Palm Pilot Robot Kit). Вариант использования КПК для управления роботом я подробно рассматривал в отдельном сообщении - Робот и КПК
  • Мобильный робот, с КПК на борту, но управляемый с использованием мощностей стационарного компьютера, связь между роботом и его «мозгом» происходит через Wi-Fi или Bluetooth - очень перспективный вариант. В этом случае сохраняется возможность использования самых современных технологий программирования, и, при этом, малый вес КПК дает возможность использования дешевого в изготовлении или подборе шасси. Основная трудность данного метода состоит в том, что ни один КПК не содержит уже написанных драйверов для подсоединения к нему нестандартных внешних устройств, да и аппаратных интерфейсов - практически не содержит.
  • Мобильный робот на основе компьютера или ноутбука - вариант, который в свое время выбрал я. Благодаря этому варианту, возможно использование самых современных средств программирования, без отвлечений на проблемы реализации связи с внешними устройствами - все это уже сделали до нас... Единственная трудность - выбор подходящего шасси, поскольку ноутбук или компьютер, и аккумуляторы к нему, весят, как правило, несколько килограммов.

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

Итак, вид робота выбран. С чего начать его изготовление? Мой вам совет - всегда начинайте с простого! Сначала реализуйте простую дистанционно управляемую тележку - это разогреет Ваш интерес, и позволит с новой силой взяться за свой проект. Для изготовления такой тележки необходимо прежде всего выбрать правильное шасси. Выбор шасси во многом зависит от предполагаемого веса будущего робота. Если вес будет большим - и Вы не намерены заниматься изготовлением шасси самостоятельно - выбирайте большую игрушечную модельку, лучше всего на гусенечном ходу. Более подробно вопрос шасси я рассматривал, например, в статье Роботы и mini-ITX. Также, много информации по этому вопросу можно найти в разделе Шасси робота на сайте.

Ну а дальше - действуйте, как подсказывает Вам разум - все-таки, каждый проект очень индивидуальный. И, обязательно, читайте мой блог :)

Кстати, по сути этот же ответ имеют и другие популярные «запросы-вопросы» - робот своими руками, самодельный робот, создание робота и подобные.

Схемы роботов

Более 30 переходам на сайт я обязан именно этому запросу. Несколько вариантов схем моего робота представлено на главной странице моего сайта. Вкратце расскажу о них:

  1. Диаграмма развертывания - это специальная UML-диаграмма (UML - Universal Markup Language - универсальный язык разметки), описывающая развертывание робота на физических составляющих. А именно, представлены все механические части/блоки робота и связи между ними.
  2. Концептуальная модель - модель робота с точки зрения функциональных связей. Также является стандартной схемой UML. Выполнена на двух уровнях детализации, переход между уровнями - с помощью гиперссылок.
  3. Блок-схемы робота - нестандартизированные схемы, в основном, являющиеся аналогами диаграммы развертывания.

Другие запросы-вопросы

На самом деле, список наиболее популярных запросов на этом практически закончен... Напоследок рассмотрим еще несколько интересных:

  • сайты по робототехнике - лучшие с моей точки зрения сайты по робототехнике представлены в редактируемом мною разделе всемирного каталога DMOZ - Робототехника.
  • примеры схем для lpt, все про управление lpt портом - смотрите материал с сайта Управление внешними устройствами через LPT-порт.
  • схема подключения микрофона к компьютеру - целых два таких запроса! Объясняю: вставьте джек от микрофона в отверстие такого же цвета (зеленый обычно) на звуковой плате :)
  • двигатель ДПМ, рулевая машинка схема - описание двигателя ДПМ, его характеристики и фотографии - в разделе Шасси робота. Там же вы сможете найти и схему рулевой машинки для робота (одно поворотное колесо).
  • описание контактов com - вы найдете в разделе Датчики робота, в материалах об ИК-приемниках и способах их подключения к компьютеру.

Вообще, должен отметить, интересных запросов очень много. На определенную часть из них я еще не ответил. Но буду стараться!

пятница, 25 января 2008 г.

Киборги

Следующий материал предназначен для людей, обладающих достаточно крепкой психикой, так как повествуется о совмещении электроники и живых существ. Остальным просьба данное сообщение пропустить...

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

Здесь мы подходим непосредственно к управлению путем считывания сигналов человеческого мозга. Прям-таки отрывок из фантастического романа, монтаж и бла-бла-бла, - скажут некоторые! Наверное, американец Джесс Салливан тоже сначала не верил - пока не научился управлять собственными искусственными руками, взамен тех, что он потерял в ходе несчастного случая в 2001м году.

Ну что можно сказать по этому поводу? Только то, что киборги - существа на стыке электроники и бионики, - уже реальность. Хотя мы сами, быть может, этого и не осознаем. Вспомните все эти телевизионные передачи про искусственные сердца, искусственные почки, искусственные легкие. В прошлой статье я по сути дела рассказал, что все 5 органов чувств уже также имеют свои электронные аналоги. Искусственная рука, искусственная нога - не менее реальные вещи, чем монитор компьютера, в который Вы смотрите сейчас. Есть целый сайт - про андроидов и части их тела. А есть статья о том, как ученый вживлял себе имплантанты... Примеров - сколько угодно. Пройдет немного времени, и, кто знает, и аналог мозга создадут - сначала частями, а потом и весь. Есть ведь задел - нейронные сети, созданные в процессе познания строения человеческого мозга... Так что, как я уже говорил, роботы завоюют мир! Лишь бы это были хорошие роботы...

А в заключение - вот вам дистанционно управляемая крыса.

Способы управления роботом

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

Существует, вообще говоря, два широкоиспользуемых и повсеместно признанных способа дистанционного управления автономными и полуавтономными устройствами:

  1. Управление с помощью инфракрасных сигналов пульта ДУ (то же самое, что переключение каналов телевизора)
  2. Управление по радио

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

Управление по радио - широкоиспользуемая практика, модель такого управления вы можете выдрать из любой радиоуправляемой игрушки, или же найти в каком-либо журнале для радиолюбителей.

В последнее время получают все большее распространение и другие способы беспроводного управления. Конечно же, речь идет о технологиях Bluetooth и Wi-Fi, которые в настоящее время используются практически повсеместно в компьютерах, КПК, коммуникаторах, мобильных телефонах...

Модель управления роботом при использовании технологий Wi-Fi и Bluetooth в основном такая: непосредственно на роботе закрепляются мобильный телефон или КПК, которые, через определенную самопайную схему, могут отсылать роботу управляющие сигналы, и забирать показания датчиков. Основная «мозговая» деятельность - осуществляется на основном, стационарном, компьютере (иногда - даже с помощью распределенной сети серверов). Такой подход позволяет порой в несколько раз уменьшить вес робота и потребляемую им мощность.

Кстати, известен случай, когда на одной из мировых презентаций робота, тот в один прекрасный момент замер на месте - на несколько минут. Это случилось как раз из-за перегрузок Wi-Fi сети здания, где проходила презентация.

Еще один способ управления роботом - визуальный. В простейшем варианте - робот просто движется на свет. Кстати, вариацией этого способа можно считать задачу движения по линии. Но, конечно, такое визуальное управление не слишком функционально и не слишком интерактивно. Более сложные варианты включают в себя использование веб-камеры, закрепляемой на роботе, и анализ изображения, приходящего с камеры. Например, именно таким способом роботов учат распознавать человеческую мимику. Для реализации управления с помощью веб-камеры удобно использовать программное обеспечение RoboRealm, о котором я уже упоминал ранее.

Управление звуком - достаточно стандартная функция, для ее реализации можно использовать обычную ОС Windows Vista.

Кстати, в настоящее время существуют также сенсоры, реализующие искусственное обоняние (читайте статью НАСА - на английском - о применении искусственного обоняния в космосе), давно созданы материалы, позволяющие реализовать чувствительную кожу (даже клавиатура для моего старенького Palm m505 сделана из однородного материала, чувствительного к прикосновениям), ну и вкус роботы также могут чувствовать...

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

четверг, 24 января 2008 г.

Использование Wii Remote при конструировании роботов

Компания Nintendo, начиная с сентября 2007 года, продала более 13 миллионов игровых консолей Wii Game. Пульт управления этой консолью - Wii Remote - имеет функцию обратной связи, которая реализуется с помощью инфракрасной камеры с разрешением 1024x768, и с встроенной возможностью отслеживания перемещения до 4х точек при частоте замеров равной 100 Гц.

Иными словами, в очень широкое обращение выпущен очень интересный «девайс», т.е. устройство, которое может весьма пригодиться и при управлении роботами. Для начала - пример использования WiiRemote от Джонни Чэнг Ли:

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

В Рунете можно найти описание и даже купить приставку Wii сравнительно недорого - меньше чем за 10 000 рублей.

Роботы и искусство

О роботах много пишут, много говорят, много...

Дошло до того, что современные модные деятели культуры стали посвящать роботам свои произведения. Даже фильм "Я, робот" - один он много чего стоит!

Рисунки о роботах - тоже очень популярное направление у современных художников. Например, как вам такой вот (взято с сайта Глеба Андросова) «рыбот»? :)

А вот, например, творение родом из 3DMax-а - «MUROBOT» (подробнее здесь):

А вот например еще один интересный вид искусства - изготовление каких-то нереальных существ, очень напоминающих роботы, из... насекомых... и внутренностей механических часов:

Я недавно писал о мощи Robotics Studio, и особенно мощи ее симуляционной среды. Вот вам пожалуйста - эту симуляционную среду уже начали использовать не совсем по назначению:

Напоследок, пожалуй, снова упомяну поэзию и сайт Роботека, уж больно там стихи оригинальные...

(отрывок из поэмы Монголия)

...

— где-то на севере есть, говорят, государство — Монголия
там у людей — машины и электрический свет 

там, может быть, для роботов есть кислота
а для детей — производство печенья или конфет

помнишь ли ты, что такое конфеты, Аико?

— конечно, нет

...

дикие всадники заметили их
в короткой
сухой траве
догнали, поймали
ударили робота в пах
(у него потемнело в глазах)
отправили в город
и заперли их в тюрьме

это и были монголы
и у этих монголов нет
ни заводов
ни фабрик
ни кислоты
ни конфет
ни электрических станций
ходят практически голые
и каждый второй из них — людоед

...

четверг, 17 января 2008 г.

Робототехника и образование

Давно хотел немного осветить тему образования, в отношении робототехники, и перечислить несколько наиболее полезных сайтов кафедр, факультетов, университетов, научно-исследовательских центров и институтов, которые заняты исследованиями в области робототехники.

Даже у нас в стране, это очень развитое направление. Единственное, чего, пожалуй, недостает нашим образовательным и исследовательским учреждениям - это достаточного финансирования, ведь робототехника - направление чудовищно затратное. Создание даже достаточно простого самодельного робота (как сконструированный мной) выливается в сумму от 3 до 10 тысяч рублей...

Прежде всего, упомяну, безусловно, огромный портал ЦНИИ Робототехники и Технической Кибернетики - RTC.Ru. Здесь есть очень много информации самого разнообразного характера. В частности, много информации посвящено научным конференциям и выставкам, которые проводятся под покровительством ЦНИИ РТК. Есть даже отдельный подсайт, посвященный Международной научно-технической выставке-конгрессе «МЕХАТРОНИКА И РОБОТОТЕХНИКА (МиР-2007)», с детальным описанием ее прохождения, фотографиями, итогами -и т.д.

Очень красивый и информационно насыщенный образовательный портал получился у МГТУ им. Н.Э.Баумана. Под эгидой этого сайта, существует сайт научно-учебного центра «Робототехника», совмещающий информацию о центре - с информацией о кафедре «Робототехнические Системы» (РК-10). Здесь можно найти учебные материалы, расписание занятий, информацию по истории кафедры и центра, описание научной и учебной деятельности центра и кафедры РК-10, и много всего интересного, например, некоторые материалы для удаленного обучения, и др.

Кроме того, в этом же университете существует еще кафедра «Специальная робототехника и мехатроника» (СМ-7) - ее сайт также очень информативен.

Значительно уступает вышеупомянутым порталам сайт, который, вообще говоря, должен бы быть центральным робототехническим сайтом русскоязычного интернета - судя по домену и времени начала существования. Речь идет, конечно же, о Robot.Ru. Этот портал начал свое существование, судя по данным WebArchive, еще в январе 1999 года! В настоящий момент в титульной строке сайта гордо красуется надпись »Робототехника и Образование«, хотя - совершенно незаслуженно...

С самого начала своего существования сайт был посвящен ежегодно проводимым под эгидой МГУ молодежным фестивалям «Мобильные роботы», информацию о которых сейчас можно найти на другом сайте от МГУ. Чуть позже к сведениям о фестивалях добавились некоторые сведения о других соревнованиях в сфере робототехники (например, RoboCup).

Еще могу сказать об этом сайте, что я очень долго думал, прежде чем добавить его в каталог DMOZ. В конце-концов решился, но это еще далеко не означает, что через пару месяцев своего решения не сменю. Ведь сайт представляет собой очень сложно воспринимаемое НЕЧТО, к которому даже сложно просто составить описание. Кроме того, сайт не является хоть сколь-нибудь обновляемым или модерируемым. В частности, если Вы загляните на его полупустой форум, то обнаружите там массу рекламного спама по-английски... Вот такой вот сайт!

Одним из недоразумений по части названий является сайт дистанционного обучения «Роботландия». Видимо, авторам просто понравилось такое название, поскольку совершенно ничего общего с роботами, робототехникой и мехатроникой данный сайт не имеет - а предлагает какие-то очень незамысловатые курсы по азам работы на персональном компьютере...

Кстати, помните, я рассказывал о блоге Виталия Клебана? Это, как я прочитал на сайте виртуального музея ведущего питерского ВУЗа ИТМО, студент этого самого образовательного учреждения, получивший уже немало наград за свои труды...
Сам сайт ИТМО - огромный образовательный портал. Факультету Точной механики и технологии посвящена на нем отдельная страница, а кафедре Мехатроники - целый подсайт.

Факультеты и кафедры мехатроники и робототехники есть еще во многих российских ВУЗах, например, в МАИ и МГТУ «Станкин» (Москва), Донском Государственном Техническом Университете (Ростов-на-Дону), Санкт-Петербургском Государственном Электротехническом Университете, Тульском Государственном Университете, Владимирском Государственном Университете, Казанском Государственном Техническом Университете им. А.Н.Туполева, и многих других...

Так что, если Вам еще не поздно учиться, а учиться, как известно, не поздно никогда - желаю успехов, и рекомендую выбирать специальность, связанную с робототехникой, ведь когда работа и хобби совмещены, это здорово! (проверено на собственном опыте)

Реклама на блоге

В настоящий момент происходит апдейт показателя PR в Google. Очень приятно, что данный блог получил PR=3. Напомню, тИЦ его пока что равен 10. Уверен, что рост показателей сайта продолжится и в дальнейшем.

Собственно, для поддержания собственного энтузиазма, выдвигаю предложение любым господам, кто этим заинтересуется: за скромное вознаграждение напишу здесь целый пост среднего размера - полностью про Ваш сайт. Однако прошу сразу учесть, что про плохие сайты, которые мне откровенно не нравятся, писать не буду. Цена предложения на сегодняшний день - 15WMZ.

Кроме того, есть возможности для:

Количество рекламных мест сильно ограничено: в рекламную площадку свой блог я превращать не собираюсь... Но до тех пор - рассмотрю любые предложения, связывайтесь со мной по ICQ 170038573.

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

понедельник, 14 января 2008 г.

RoboRealm. Машинное зрение.

Для начала, хочу сообщить, что вот уже 6 дней мой сайт о том, как сделать робота, имеет ежесуточную посещаемость более 80 человек. За 14 дней января, общее количество уникальных посетителей превысило это же количество за весь ноябрь.

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

Таким людям очень рекомендую ознакомиться с парой рекомендаций от Маула. Ибо я человек терпимый, но кнопку «Пометить как спамера» никто не отменял...

Что же касается e-mail, иногда бывает, что отписываешься человеку, и не получаешь от него более ничего. Это, конечно, тоже не слишком приятно...

Но, хватит о грустном! Вот на затравку: не так давно раскопал один занимательный блог - dxdt.ru. Очень много интересного, на технические темы, причем, больше половины - про роботов.

И, наконец, к теме собственно сообщения. Совершенно случайно обнаружил программный комплекс, реализующий функции машинного зрения и управления роботами на основе распознанных образов - RoboRealm (официальный сайт - на английском).
Это тоже софт, тоже для создания роботов, тоже в основном для программирования роботов-конструкторов. Раз уж я писал про Robotics Studio, что очень близко, то считаю своим долгом закачать и исследовать также и RoboRealm.

Вот, например, видео, с демонстрацией того, что может RoboRealm:

Кстати, нашел немного информации о RoboRealm и на русском языке: на робофоруме и на отдельном сайте о RoboRealm.

Более подробно расскажу после того, как познакомлюсь с этой программкой поближе.

четверг, 10 января 2008 г.

Навигация роботов

Очередной выпуск из серии «Интернет о роботах», на этот раз - немного тематический.

Прежде всего, хочется немножко рассказать о навигации. Как я уже не раз говорил, навигация, несмотря на кажущуюся ее обыденность, является весьма нетривиальной задачей в робототехнике.
Например, одна из классических задач роботостроения - следование линии, нарисованной на полу. Воплощается с помощью тех или иных разновидностей фотодатчиков.
Еще из классики - объезд препятствий, согласно показаний датчиков касания (типа «бампер»).
Помимо стандартного объезда препятствий, для грамотного ориентирования и передвижения робота нужны системы обратной связи, по которым бы происходило постоянное корректирование текущего запомненного положения. Обратная связь может осуществляться множеством методов, от обыкновенных датчиков поворота колеса, до лазерных дальномеров, GPS, веб-камер, систем ориентирования по маякам.
Даже если текущее положение уже известно, что скажете о построении маршрута движения из точки в точку? Я по этому поводу уже писал в статье «Алгоритмы поиска пути для роботов».
Ну а если карта местности неизвестна? Конечно же, требуется ее вычислить и построить на лету! Подход к этой задаче - не слишком исследован и далеко не однозначен.
Ну и наконец, вот представьте, высадили автономного робота на Марсе. Что ему делать? Видимо, исследовать показания датчиков, составлять примерную карту местности, двигаться в направлении наиболее интересных районов... Здесь уже настолько много вариантов, настолько много опасностей, что без методик искусственного интеллекта, наверное, не обойтись!

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

Ветеринарный Центр «Животный Мир», прекрасный кандидат в список «Интересное в неожиданных местах», который я начал составлять еще в прошлом выпуске серии «Интернет о роботах» - спрятал в своих недрах несколько интересных мыслей по навигации.

Многие датчики, используемые при навигации робота, описаны мной на моем сайте о самодельном роботе, в разделе Датчики робота.
Из неописанного:

На английском языке доступен сайт проекта Carmen (Carnegie Mellon Robot Navigation Toolkit), это софт с открытым исходным кодом - для навигации робота. Его использование позволит многим сохранить массу собственного времени. С другой стороны, если Вам требуется лишь реализовать банальный объезд препятствий - лучше используйте собственные изыски, быстрее и полезнее!

Не слишком относится к навигации, но очень интересный сайт о радиоуправляемых моделях танков. Просто супер, рекомендую!

среда, 9 января 2008 г.

Microsoft Robotics Studio: первое знакомство

На сайте Microsoft информация о Robotics Studio очень поверхностна, а страничка на русском языке - вообще, изобилует неработоспособными ссылками (на сегодняшний день).
Полезный материал о Robotics Studio - мне удалось найти в виде видеозаписи 9го канала, где Павел Хижняк, один из разработчиков Robotics Studio, по-русски и очень доступно демонстрирует возможности Robotics Studio.
Видеозапись весит 69Мб, и доступна для скачивания на сайте GotDotNet.Ru - очень рекомендую ознакомиться, если, конечно, Ваш интернет-канал позволит это сделать.
Также, существует еще видеозапись + презентация в формате PowerPoint 2007 на сайте Платформа 2008, общим весом 8Мб, правда, информации там гораздо меньше...

В любом случае, надеюсь, не менее полезным будет мой собственный опыт знакомства и работы с Robotics Studio, изложенный ниже.

Для начала, проясним, что это вообще такое. Как не трудно догадаться, Microsoft Robotics Studio - это система, специально созданная для разработки программного обеспечения для роботов. Причем, в основном, для «конструкторов» роботов (т.е. заготовок из модулей, которые Вы можете собирать в домашних условиях и перепрограммировать на свой вкус) - таких как iRobot Create, LEGO Mindstorm, и т.д.

Инсталляционный пакет представляет из себя exe-файл, который весит всего 82Мб. Его можно преспокойно скачать с microsoft.com. Процесс установки прошел очень гладко. Замечу, что, желательно, кроме Robotics Studio установить еще .NET 2 и DirectX, иначе система будет работать не в полную силу. В частности, DirectX требуется для симуляционной 3D-среды, которую я подробно опишу позже.

Вообще, разработчики Robotics Studio - молодцы. Они правильно выделили современные проблемы роботостроения и пошли по пути популяризации этого прекрасного направления науки и техники. Теперь многие вещи, ранее доступные лишь профессиональным роботостроителям, отдающим робототехнике огромное количество личного времени - доступны даже любителям. А раз уж даже Microsoft активно ведет линию робототехники (вспомните еще, например, робота WiMo, о котором я писал в статье «Роботы и КПК»), то и уважаемым читателям рекомендую эту линию не оставлять!

Возвращаясь к нашим баранам: помимо того, что компоненты Robotics Studio прекрасно и автоматически интегрируются в среду разработки Visual Studio, этот продукт содержит два основных модуля, призванных помочь робототехникам-любителям, таким как я, например. Это модули - Visual Programming Language (VPL, визуальный язык программирования) и симуляционная среда.

Язык VPL обеспечивает возможность программирования роботов визуальными методами. Диаграммы VPL кодируются с помощью XML-схем и представляют, на мой взгляд, одну из очень немногих удачных попыток создания полностью визуального языка программирования. Конечно, базовые навыки алгоритмического мышления все равно потребуются, но зато совсем необязательно знать синтаксис C#, или, например, что такое анонимные делегаты. Согласитесь, это очень важный шаг! Ведь многие робототехники - очень посредственные программисты, и облегчить их труд - прекрасная идея.

Второй важный модуль Robotics Studio - симуляционная среда. Она реализует поистине классную идею, а именно - о том, что для программирования роботов Вам сами роботы, в принципе, и не нужны! Симуляционная среда является графической 3D-моделью, отображающей действия роботов, и объекты, которые роботов окружают. Например, если в модели присутствует шарик, то Вы можете подогнать робота к шарику и откатить этот шарик куда-нибудь. Физические моменты настолько глубоко продуманы, что становится возможным даже моделирование переворотов роботов, отрыва роботов от земли, столкновения объектов - все что угодно. Одним из примеров использования симуляционной среды является моделирование ринга сумо-роботов (которые стараются вытолкнуть друг друга за пределы ринга). Эта симуляция поставляется в виде аддона, который можно скачать там же, где и саму Robotics Studio.

Поскольку сам я являюсь профессиональным программистом, мне захотелось проверить, насколько простым будет использование Robotics Studio. Честно сказать, поначалу столкнулся с некоторыми трудностями. Первая диаграмма получилась неверной, из-за неправильного понимания самой концепции VPL. Попробую описать ее для уважаемых читателей, чтобы они не натолкнулись на те же грабли...

VPL описывает в основном некоторые модули робота, и их связи друг с другом. Модулями робота могут быть разнообразные датчики (расстояния, касания, света и т.д.), веб-камера, устройство GPS-навигации (кстати говоря, производимое компанией Microsoft, что еще раз говорит о серьезности намерений мирового софтверного гиганта в отношении робототехники), моторы и сервоприводы, динамики, светодиоды, различные индикаторы, дисплеи и тому подобные устройства. Кроме того, модулями в Robotic Studio могут выступать специальные диалоговые окошки, например, для ручного дистанционного управления роботом.

Связи между модулями являются некоторыми алгоритмическими конструкциями, иногда со сложной структурой. Они могут включать разнообразные ветвления, условия, даже циклы, а также работу с данными, работу с переменными и т.д. Наиболее часто основанием для создания связи служит «нотификация» (оповещение о событии) в каком-либо из модулей датчиков. Обработка связей результируется в подаче напряжения на тот или иной двигатель, проигрывании звукового сообщения, световой сигнализации - в общем, все довольно стандартно и соответствует логике работы любого робота.

Здесь, кстати, возникает естественный вопрос: «Если связей и модулей много, то как же все это поместится на диаграмме?» Microsoft с легкостью решила этот вопрос, введя понятия Activity, так сказать составного действия, а проще - блока. Activity - это отдельная диаграмма, которая имеет «входы» и «выходы», и отображается на родительской диаграмме единственным элементом, с соответствующим количеством входных и выходных точек, к которым можно присоединять линии связей. Идея простая и логичная.

Применительно к VPL также обязательно необходимо сказать о манифестах. Манифесты - это своеобразные драйверы низкого уровня, или, с другой стороны - конфигурации той или иной программы VPL. Идея состоит в том, что одна и та же программа, в принципе, может выполняться на различных роботах, несмотря на то, что на низком уровне управление реализуется неодинаково. Благодаря манифестам, чтобы перенести программу VPL с одного железа робота на другое - нужно всего-то выбрать манифесты соответствующего робота для основных модулей диаграммы. Тем же самым образом - с помощью специальных «Simulation»-манифестов - реализуется перенос программы в среду симуляции. Несколько манифестов - для наиболее популярных существующих конструкторов роботов - присутствует в базовой поставке Robotic Studio. Также есть все возможности для создания собственных манифестов.

Перейдем, наконец, к примерам. В качестве задачи я выбрал создание простейшего робота, способного объезжать препятствия. У этого робота - два датчика касания, и два мотора: мотор поворота и мотор движения. Этого же самого робота я описывал в своей статье о RoboML.

Давайте попробуем запрограммировать такого робота с помощью Microsoft Robotics Studio, и запустить его симуляцию в какой-нибудь подходящей симуляционной среде.

Открываем среду VPL, видим слева список модулей робота. Добавляем на диаграмму два модуля GenericMotor, один модуль GenericContactSensors и один модуль Timer - он потребуется для реализации отъезда назад на небольшое расстояние при объезде препятствий.

Теперь нам нужно определиться, что будет происходить при смене показаний датчиков. Для этого добавляем модуль условия (if-then-else) на диаграмму, и создаем нотификацию на Replace от датчиков касания. Нотификация (оповещение о событии) создается очень просто. На любом модуле в диаграмме есть квадратики слева, и кружочек с квадратиком - справа. Это своеобразные входы и выходы данного модуля (выход для события обозначается кружочком). Если перетащить выход одного модуля ко входу другого, между ними образуется связь.

Уточню еще один неочевидный момент - содержимое блока if-then-else. Здесь Вам очень помогут раскрывающиеся списки с подсказками, которые появляются при попытке набрать что-либо в поле условия. У меня условий было два, и записывались они так: Sensors[0].Pressed и Sensors[1].Pressed. Иными словами, сработал ли первый датчик (левый), или второй (правый). Количество датчиков и соответствие номеров датчиков их положению - определяется в зависимости от выбранного манифеста, для робота, которого мы будем использовать.

В остальном, сложного ничего нет. Те, кто знаком хоть немного с алгоритмизацией, очень быстро смогут реализовать логику нашего простого робота, который просто объезжает препятствия.

Итоговый вид диаграммы:

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

Но зато, я бросил взгляд на «внутренности» получившейся диаграммы. Это, конечно же, XML-файл. Было очень интересно сравнить практический и работающий XML для описания роботов от Microsoft - с теоретическим и не имеющим практических реализаций RoboML.
Представляю фрагмент XML-кода от Microsoft:

<Connections>
  <Connection>
    <Name>link</Name> 
    <To>program.activity.Start.__use__0.snippet.snippet.join.TargetPower.sink</To> 
    <From>program.activity.Start.__use__0.snippet.snippet.expr.source</From> 
  </Connection>
  <Connection>
    <Name>link0</Name> 
    <To>program.activity.Start.__use__0.snippet.snippet.expr.sink</To> 
    <From>program.activity.Start.__use__0.snippet.snippet.noop.source</From> 
  </Connection>
</Connections>

Здесь представлено всего лишь описание двух связей...

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

Анализируя XML, я понял, что сравнивать RoboML и Microsoft Robotics Studio XML сложно, поскольку они описывают, в принципе, одно и то же - но с разных сторон. XML от Microsoft гораздо более практичен, приближен к деталям, к реализации. И весьма ограничен - вся диаграмма записывается в виде заранее жестко предопределенных блоков (их можно создавать самостоятельно, но исключительно). В то же время, RoboML - абстрактен, даже роботов он описывает не алгоритмическими конструкциями (например if-then-else), а математическим языком.

Подводя итог первого знакомства с Robotics Studio, признаю, что мне, честно сказать, идея Microsoft очень сильно импонирует. Давно пора было создать специализированную среду разработки для роботов, надеюсь, это упростит задачу многим любителям робототехники в воплощении их проектов.

Продолжение следует...

Игры о роботах

Вот и кончились праздники!

Я с чистой совестью подходил к компьютеру в эти праздники только для того, чтобы поиграться. Люблю старые добрые игры, как и вообще, собственно, все, что могу сделать сам. В годы юности сделал несколько вполне играбельных вещей, вот, например, скриншот одной из них:

Кто-то скажет, что это хлам, но мне очень нравится. Так что в эти выходные играл, например, в такие игры как Sven и Warcraft 1.

Кстати, в сентябре этого года буду поступать в аспирантуру. Тема - связана с нейронными сетями и робототехникой, так что ждите много полезной информации по этому поводу.

В любом случае, сейчас будем наверстывать упущенное за выходные...

Первым делом, раз уж начал говорить о играх, расскажу немножко о лучших играх о роботах.

Начнем с самого старого. Как известно, одной из самых интересных идей в робототехнике является построение боевых роботов, а этим знаменита целая вселенная из серии ролевых игр AD&D - BattleTech.

Вот как, примерно, выглядит настольная игра серии BattleTech:

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

Игры же серии MechWarrior - это симуляторы боевых роботов с видом из глаз. Очень динамичный бой, при этом - все как в книжке, т.е. контроль перегрева и т.д. Про книжки о вселенной BattleTech я уже писал - в «Чтиве».