Показаны сообщения с ярлыком искусственный интеллект. Показать все сообщения
Показаны сообщения с ярлыком искусственный интеллект. Показать все сообщения

22 Июнь 2008 г.

Роботы и футбол

Просто не могу не написать про футбол! Потому что всем наверное уже известно, что нынешней ночью Россия разорвала Голландию со счетом 3:1. Все наверное слышали в 2 часа ночи "Ole-Ole-Ole, Россия, вперед!". Футбол был замечательным, и в который раз показал, что тренер, в лице Гуса Хидинка, это очень важная составляющая победы.

Однако, блог посвящен роботам и робототехнике, и оффтопики я здесь плодить не собираюсь. А собираюсь - обсудить еще ни разу не затронутую тему, хотя уже давно известную и популярную, а именно - футбол роботов.

Чемпионаты по футболу среди роботов проводятся уже достаточно давно. RoboCup - это известное, очень популярное и, что немаловажно - весьма доступное соревнование, и с каждым годом количество его участников растет. "Вселенской" целью организаторы RoboCup выбрали себе победу команды робофутболистов над чемпионами мира по реальному футболу, причем, не далее чем в 2050 году (я еще жив буду, так что посмотрим)...

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

  1. Чемпионат среди симуляций (где играют друг с другом программы)
  2. Роботы малых размеров
  3. Роботы средних размеров
  4. Роботы стандартных платформ
  5. Гуманоидные роботы

Россия, между прочим, в робофутбол тоже играет. Например, российской командой STEP в 2004 году был выигран чемпионат в лиге симуляций. Это весьма закономерно, ведь финансовые и вообще робототехнические возможности россиян просто не позволяют им на равных соревноваться в турнирах реальных роботов, но зато программисты у нас - будь здоров! :)

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

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

Что из себя представляет робофутбол, можно посмотреть на видео. На YouTube подобных роликов - огромное множество. Вот, например, финал лиги гуманоидных роботов прошлого чемпионата - Robocup-2007:

В заключение, о RoboCup-2008: он пройдет в китайском городе Suzhou, с 14 по 20 июля, и соберет более чем 440 команд из 35 стран мира. О развитии событий можно узнать на сайтах RoboCup.org и RoboCup-CN.org.

29 Май 2008 г.

Искусственный интеллект роботов. Игры

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

Ведь согласитесь, BEAM-роботы хороши, но это ведь каменный век!

Неплохим подспорьем (тренировкой) на пути к созданию Умного Робота - может стать разработка алгоритмов для виртуальных роботов, и участие в онлайн-чемпионатах алгоритмов. Я уже писал об этом в сообщении Виртуальные соревнования роботов. Поединок программ.

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

Также, Александр подкинул пару ссылок на в той или иной степени аналогичные проекты:

  • Robot Warfire - это проект, послуживший основной для Арены Роботов. Все довольно примитивно, однако играть, я подозреваю, было очень интересно. Вкратце: на поле выставляется несколько типов предметов: стена, яма, элемент питания, боеприпасы, вражеский робот, дружественный робот. У самого робота есть 4 слота, смотрящих в разные стороны. В слот можно помещать либо оружие, либо глаз робота. Робот видит соседние клетки, если они примыкают к его глазам. Ну и наконец, пишем суперхитрый скрипт поведения и маневрирования, и вперед, на чемпионат... Скриптовый язык, кстати, очень напоминает Бэйсик. Об этой простой, в общем-то, программке писали даже на Игромании!
  • Описание трехмерной арены роботов можно найти на Delphi Lab. Написано, правда, не русскими, но зато ребята очень мощно шагнули в графическом плане.

Кстати, самой крутой игрой по части "игрового искусственного интеллекта" я до сих пор считаю игрушку Генерал от NewGame Software. Ничего лишнего, никакой графики, но уж очень интересно играть. И, как ни странно, безумно реалистично (сочетание реализма и геймплея - это весьма сложная задача для практически любой игры).

Создание игрового ИИ - задача сложная и очень серьезная. Играя в проекты, подобные RoboChamps или Арене Роботов, Вы эту задачу пытаетесь решить.

На самом деле, если бы я стал делать что-то подобное проекту Александра, вот на что я бы обратил внимание в первую очередь:

  1. Позаботился бы о наличии в игре реализма.
    • Выбор типа шасси. У каждого типа шасси свои особенности - разная проходимость, разная скорость передвижения, и т.д. Основные типы шасси: колесное, шагающее, прыгающее, ползающее, гусеничное, летающее, плавающее, амфибия и т.п.
    • Выбор набора датчиков. Тепловые, световые, видеокамера, радары разной дальности, дальномеры и т.п. Набор датчиков сильно влияет на способ выбора цели, скорость наведения, скорость движения по пересеченной местности; на способ обхода препятствий и построения маршрута движения и т.п.
    • Выбор набора оружия. Разная поражающая способность, разный вес, разный нагрев, разное потребление припасов и боезапаса. Я бы даже сделал оружие более приближенным к реальному. Т.е. например, пневматическая стрельба железными пульками; укрепленная на роботе бензопила и т.п.
    • Выбор количества и типа элементов питания. Солнечные батареи, различные аккумуляторы (какие-то работают дольше, но и заряжаются дольше, какие-то всем хороши, но имеют очень большой вес) и т.п. Это будет сильно влиять на зависимость робота от подзарядки.
    • Выбор брони. Ну здесь главное - вес. Чем тяжелее броня, тем сложнее роботу двигаться, а следовательно, тем больше он жрет энергии и медленнее ходит.
    На самом деле, настоящий робототехник действует по сути точно также: выбирает шасси, набор датчиков, тип элементов питания. Ну оружие и броня - только в случае роботов сумо или роботов для чемпионатов по стрельбе в цель.
    Реализм прибавляет игре привлекательность, но важно при этом не забыть о геймплее. Если выбора слишком много - глаза начинают разбегаться, и интерес к игре пропадает, либо сводится к перебору многих сотен вариантов оснащения робота, даже не доходя до главного - до алгоритма его поведения...
  2. Я бы сделал игру достаточно простой в графическом исполнении, но такой, чтобы максимальное число людей могли за игрой наблюдать онлайн. Например, чтобы можно было смотреть за игрой через браузер.
  3. Я бы сделал формат задания роботов и алгоритмов их поведения максимально стандартизированным. Например, есть такой язык RoboML, я о нем написал целую статью в свое время: Язык описания роботов - RoboML.
    Это весьма проработанный язык для описания роботов и их поведенческих функций. Как показывает практика, стандартизация в современном мире - это задача №1. Также, можно использовать стандарты, совместимые с Microsoft Robotics Studio, это еще более перспективное направление. Например, как вам такая идея: робот может работать согласно алгоритмам, созданным в Visual Programming Language? :) Ведь потом благодаря Robotics Studio можно будет перенести наработки алгоритмов на использование с совершенно реальными роботами!
  4. Систему управления я бы организовал из множества блоков "если". Например:
    • Если увидел цель - сближайся на максимальной скорости и тарань ее.
    • Если зарядки осталось 20% - ищи электростанцию.
    • Если зарядки более 20% и никто не нападает - свободный поиск..
    Это обыкновенный алгоритмический способ управления. Все алгоритмы более низкого уровня (поиск пути, захват цели) - пусть будут реализованы внутри игры. И для задания алгоритмов верхнего уровня я бы сделал нормальный обычный интерфейс, можно даже интерфейс на сайте, чтобы никуда не надо было ходить и ничего не нужно было бы скачивать.
    Таким образом, игра будет иметь больше игроков, ведь алгоритм может придумать почти каждый, а на С или на чем-нибудь еще - умеет программировать лишь ограниченное число людей. Даже после появления .Net...
    Но для истинных любителей, конечно, можно оставить альтернативную возможность создания полномасштабной программы управления.
  5. Добавил бы игрокам вселенскую цель, помимо уничтожения друг друга. Ведь сами подумайте, вот например в Арене Роботов. Там есть электростанции, от которых роботы подзаряжаются. Напрашивается следующая тактика: ищем электростанцию, заряжаемся, сидим ждем. Приходит враг - расстреливаем его, заряжаемся снова, ждем дальше. Разве интересно?! А представьте два противника и две электростанции - и сидят ждут друг друга...
    Нужна вселенская цель, которой заканчивается игра. Скорее всего, захват какого-либо артефакта, или флага.
  6. Добавил бы возможность командной игры. Это чрезвычайно важно в любой онлайн-игре. Банальный хороший чат. И как следствие - нужна возможность перепрограммирования роботов "на лету". И еще как одно следствие - необходима возможность создания и сохранения нескольких типов поведения, которые можно быстро, одним кликом мыши, менять друг с другом в процессе игры (типа мирное существование, избегание боев, агрессивность и т.п. Кстати, чтобы перепрограммирование не было слишком частым, лучше всего ввести зависимость этой возможности от наличия на роботе, например, некоего радиоприемника. А вместо радиоприемника ведь всегда можно поставить хорошую пушку, так что возможность перепрограммирования в данном случае компенсируется.

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

31 Январь 2008 г.

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

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

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

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

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

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

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

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

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

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

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

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

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

10 Январь 2008 г.

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

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

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

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

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

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

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

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

28 Ноябрь 2007 г.

ИИ-помощник

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

Сейчас объясню в чем дело:

Самый новый проект Prof-а - AIAssistant, это домашний помощник, который каким-то образом должен хранить и упорядочивать ваши, можно сказать, мысли... Проект очень интересный. Судите сами: сколько всего хотелось бы упомнить! Пароли, адреса, собственные мысли - которые просто бывает записываешь в блокнот и потом теряешь. И как сложно сделать так, чтобы информация была легко доступна и четко структурирована... Некоторые создают дикие структуры каталогов, наполняя их текстовыми, excel- и word- файлами, некоторые чуть ли не развертывают дома мелкософтовский SharePoint... Google изобретает Google Desktop, и за ним следуют и другие поисковки. В общем, ясно, что подходов много, а тема весьма актуальна.
Идея же Prof-a - как раз в том, чтобы присобачить, прошу за грубость выражения, к этим данным - возможности искусственного интеллекта. А чтобы у системы было больше функций, то еще прикрутить к ней колеса, и другие манипуляторы :) - это уже касается предлагаемого им проекта робота-домашнего помощника.

До сих пор мы обсуждали с ним просто мысли по внедрению идей ИИ в робота. Подробно можно почитать в моей статье "Робот и искусственный интеллект".

Что же касается робота-домашнего помощника, тут нужно рассматривать подробно, что же такого дополнительного к функциям AIAssistant может предложить собственно робот...