http://insiderobot.blogspot.com/2008/12 ... -sumo.html
Блог «Роботы и робототехника»
Блог посвящен роботам и робототехнике, а в первую очередь - моему собственному проекту "Самодельный робот", и сайтам по робототехнике, в создании которых я принимаю участие. Здесь публикуются ссылки на полезные ресурсы по робототехнике, мои успехи и поражения, и просто мои мысли.
среда, 24 декабря 2008 г.
Microsoft Robotics Studio. Sumo-робот
Продолжаю серию статей про Robotics Studio.
В этой статье я расскажу, как сделать собственного Sumo-робота для соревнований симуляций сумо-роботов от Microsoft. Для этого, помимо установленной Robotics Studio (у меня - версия 1.5), необходимо скачать проект сумо-симуляции с сайта Microsoft.
Скачав, распакуйте zip-архив, и запустите файл Sumo Competition for Microsoft Robotics Studio (1.5).exe. В конце быстрой и простой установки откроется html-инструкция по использованию данного продукта.
Инструкцию можете закрывать, я вам итак все расскажу. Сначала нужно запустить командную строку Robotics Studio (эта "функция" доступна через меню Пуск). Затем выполните команды cd bin (переход в каталог [bin]), и makesumoplayer /name:имя-вашего-сумо-робота /forse:true. Я своего назвал просто: MySumo. В имени должны присутствовать только английские буквы и цифры - без пробелов. Вы, наверное, сможете придумать что-нибудь более оригинальное
Вот что видим в ответ:
Итак, новый проект создан. Путь, где его можно отыскать, указан. Идем туда, открываем файл проекта. В моем случае этот файл называется MySumo.csproj.
Мне потребовалось сконвертировать проект под 2008-ю студию, т.к. создан он под какую-то более древнюю версию. Но это пара кликов мышью, ничего сложного... В итоге видим:
Итак, проект открыт - и теперь начинается самое интересное. Для начала, просто запускаем проект, нажимая F5. Выбираем в качестве соперника стандартную симуляцию (sumoplayer):
Между прочим, у вас наверняка возник вопрос: как сделать своему роботу особенную картинку? Все очень просто: нужна BMP-картинка 64х64 пиксела. Скопировать ее нужно в папку [Resources] внутри проекта, заменив файлик PlayerImage.bmp.
Несколько матчей подряд я смотрел, как ведут себя роботы. И пришел к выводу, что у них есть 2 достаточно большие проблемы:
Если один робот, оказывается к другому роботу задом, - все, первый почти гарантированно проигрывает.
Иногда робот сам усугубляет свое положение, оказываясь близко к линии в момент атаки. Логично было бы держаться центра ринга как можно дольше.
Возможно, у вас возникнут собственные выводы по этому поводу. Главное - определиться, что из поведения робота необходимо изменить.
Как только понимание сути изменений достигнуто - можно приступать к следующему этапу: разбору кода. Код сгруппирован в несколько групп с помощью директив #region и #endregion. Нас будут интересовать только две группы: Sensor Handlers to be copied, и Timer Handler to be copied.
Как не сложно догадаться, первая группа отвечает за обработку событий от сенсоров, в то время как вторая - это таймер. В первой группе задается ПЕРВАЯ реакция робота. Например: увидел линию? - развернись на 130 градусов. Или: увидел соперника через камеру? - начни сближение.
Соответственно, если мы хотим предусмотреть в качестве реакции не единичное действие, а целую последовательность действий (например, сначала развернуться, потом проехать вперед, потом постоять, потом вернуться назад - и т.д.) - то нам необходимо дальнейшие действия указывать уже в процедуре обработки такта таймера.
Сложно? Да нет! Это только так кажется. В любом случае, привыкайте, такова стандартная событийная модель программирования.
Продолжим... Естественно, для связи процедуры таймера и процедур обработки непосредственных событий - необходимы какие-то состояния. Они есть, и содержатся в переменной _state. Что это такое - нам по большому счету неинтересно, по названию понятно. Немного поизучав код, мы можем обнаружить основные состояния робота:
_state.SumoMode == SumoMode.Contact - состояние, когда роботы столкнулись друг с другом и находятся в противоборстве. Основная проблема этого состояния состоит в том, кстати, что робот физически не может определить касание сзади - у него там нет датчика касания.
_state.SumoMode == SumoMode.AvoidBoundary - состояние, в котором робот старается избежать попадания за границу ринга.
_state.SumoMode == SumoMode.Tracking - робот засек противника камерой и едет за ним.
_state.SumoMode == SumoMode.Wander - режим свободного поиска противника.
Есть также и некоторые другие состояния робота, не столь критичные. Если вам понадобятся их описания, весь список присутствует в файле MySumoTypes.cs (ИмяВашегоСумоистаTypes.cs), при описании enum'а SumoMode.
Таким образом, очень просто понять модель дальнейших действий. Прикидываем, в каком состоянии робота нужно внести изменения, просматриваем все упоминания данного состояния в коде, смотрим что там происходит - и решаем, как это изменить.
Начнем с простого: как заставить робота держаться центра ринга? Очень просто. Надо заставить его просто крутиться на месте, не давая при этом двигаться вперед. В таком случае, качество поиска измениться не сильно, зато подставляться наш "боец" будет меньше.
Очевидно, что нам необходимо изменить действия робота в режиме свободного поиска. Поискав "SumoMode.Wander" в коде (Ctrl-F в MS Visual Studio), находим процедурку SetWanderDrive(), для которой написано в комментариях: This is the default drive configuration for wander mode. То есть, эта процедура назначает действия по умолчанию для робота, переходящего в режим свободного поиска.
Она состоит всего из двух строк, в первой изменяем текущее состояние робота на Wander, а вот во второй вызываем пока непонятную процедурку InternalDrivingMilliseconds().
Что же, жмем по названию этой процедуры правой кнопкой, выбираем в меню Go to definion. Смотрим заголовок процедуры:
public void InternalDrivingMilliseconds(int left, int right, double ms)Что же, все понятно. Эта процедура задает скорости для двух моторов - левого, и правого - на определенное число миллисекунд (которое тоже задается). Скорости моторов, насколько я понял из кода, варьируются от -500 до +500, а число миллисекунд можно задать какое угодно, лишь бы больше нуля, естественно
...
Таким образом, изначально в режиме свободного поиска робот движется вперед с поворотом. Давайте уберем движение вперед, и заменим его поворотом на месте.
Вот что получилось у меня в итоге:
private void SetWanderDrive()
{
_state.SumoMode = SumoMode.Wander;
InternalDrivingMilliseconds(0, 400, 250.0);
}Запускаем, смотрим: все именно так, как нужно. Наш робот вертится на месте, а его противник бегает туда-сюда. Правда, для весомого преимущества этого недостаточно.
Давайте попробуем воплотить вторую мою мысль.
Нам необходим фрагмент кода внутри процедуры RobotUpdateFloorSensorsHandler, содержащий текст "SudoMode.AvoidBoundary". Этот фрагмент отвечает за реакцию робота на засечение им линии впереди. Поскольку сам собой наш робот не движется, то если он засек линию - это может означать только лишь тот факт, что его толкает сзади враг. А значит, нужно срочно на всех парах мчаться назад! Ничего особенного, кроме уже известной нам процедуры InternalDrivingMilliseconds, в этом фрагменте нет. Вот что получилось у меня в итоге:
if (_state.Sensors.LineDetected)
{
_state.SumoMode = SumoMode.AvoidBoundary;
LogVerbose(LogGroups.Console, "Sumo Mode: AvoidBoundary");
if (_state.Sensors.LineLeft &&
!_state.Sensors.LineRight &&
!_state.Sensors.LineFrontRight)
InternalDrivingMilliseconds(-100, -400, 200.0);
else if (_state.Sensors.LineRight &&
!_state.Sensors.LineLeft &&
!_state.Sensors.LineFrontLeft)
InternalDrivingMilliseconds(-400, -100, 200.0);
else
InternalDrivingMilliseconds(-500, -500, 400.0);
}
Запускаем, лучше всего штуки три матча подряд. У меня статистика трех матчей получилась такая: 2 раунда проиграно, 1 ничья, 6 раундов выиграно. Думаю, комментарии излишни
P.S. На написание данной статьи меня сподвиг Дмитрий Калинин (kalisha), за что ему огромное спасибо. Он прислал собственную статью, на тему создания робота для соревнований Microsoft ImagineCup, однако эта статья потребовала настолько глобальной переделки, что я ее полностью переписал, полностью сам разобрался в коде, адаптировал его под стандартную сумо-арену, ну и т.д. Очень надеюсь, что следующую статью Дмитрия я смогу выложить в менее "отредактированном" варианте
Автор: omlin на 10:30
Ярлыки: robotics studio, программное обеспечение
4 коммент.:
JaRcom комментирует...
>"Дмитрий Калинин (kalisha)"
как приятно видеть знакомые имена:-)
29 декабря 2008 г. 0:43
Semm комментирует...
одна поправочка, в самом начале "forCe:true" вместо forse, а то не задумываясь скопировал, ан не идёт)
26 февраля 2009 г. 19:09
Andrew комментирует...
да, спасибо за поправку...
бывает
6 марта 2009 г. 10:23
omlin комментирует...
Ссылка на проект от Microsoft работать перестала.
Альтернативно, можно
скачать проект с CNET.com.
23 мая 2009 г. 9:23
Отправить комментарий
Внимание! Реклама и прочий спам будут беспощадно удаляться.
Ссылки на это сообщение
Создать ссылку
Следующее Предыдущее Главная страница
Подписаться на: Комментарии к сообщению (Atom) Это интересно
BEAM роботы
Робот на основе компьютера (мини)
Создание робота на основе КПК
Робот на основе Wiimote
Конструкторы роботов
Работа с COM-портом (RS232) в Palm OS
Подключение микроконтроллера через COM-порт
Первый марсоход ПрОП-М
Wiimote + Robotics Studio + Lego NXT
Wii Remote - устройство ввода 2.0
Microsoft Robotics Studio - первое знакомство
Sumo-робот в MS Robotics Studio
Нейронные сети в робототехнике
Робот и искусственный интеллект
RoboML - язык описания роботов
Тэги
beam (5) roboml (3) roborealm (1) robotics studio (13) wiiremote (6) взаимоотношения людей и роботов (5) война (2) делаем марсоход (9) игры (7) интернет о роботах (18) искусственный интеллект (9) искусство (4) калькулятор (1) киборги (2) книги (2) конструирование (22) космос (10) кпк (3) манипулятор (2) машинное зрение (6) микроконтроллеры (1) мои проекты (24) мультфильмы (1) образование (2) праздники (3) программное обеспечение (14) продвижение (8) работа (2) роботы (36) соревнования (4) футбол (1) шасси (5)
Архив блога
► 2010 (1)
► Март (1)
Живучие космические роботы
► 2009 (6)
► Июль (3)
Всеядный робот EATR
Робот-шахматист и пара мыслей об ИИ
Robotics Developer Studio 2008 R2
► Июнь (1)
Собственный робот в Robotics Studio. Создание 3D-м...
► Май (2)
Роботы-трансформеры
Спам! Клавиатурный робот «Спам»
▼ 2008 (105)
▼ Декабрь (10)
Роботы-ходуны
Microsoft Robotics Studio. Sumo-робот
Робот и микроконтроллер. COM-порт
Старый добрый самодельный робот
Вибробот - это примитив?!
Новое и старое в робототехнике
BEAM-искусство
Интернет о роботах. Контроллеры МК
О сайте "Самодельный робот"
Самоделки и робот на воздушной подушке
► Ноябрь (4)
Пара самодельных роботов
Кубок по робототехнике в Красноярском крае.
И снова: Robotics Studio
Программирование. Среды разработки для роботов
► Октябрь (4)
Хэллоуин и роботы
Автономные роботы. Генераторы
Как научить робота чувствовать
Вести от роботов из космоса
► Сентябрь (3)
Новости от RoboOne: роботы покупают
Игра: программирование робота
Робототехника и полезность ненужных дел
► Август (9)
Старая идея самодельного робота
Война роботов. Началось!
Робототехника и ИИ: нейронные сети.
Машинное зрение реальных роботов
Робот-арт жжот
Искусственный интеллект. Интегральная теория
Бои роботов. RoboOne
Простой самобалансирующий робот
Роботы и онлайн-игры
► Июль (5)
Модульные роботы
Будущее Wiimote
Наборы для роботостроения. Конструкторы роботов
Бумажные роботы
Робот на основе Wiimote. Библиотека WiimoteLib
► Июнь (10)
Роботы и работа. Вакансии робототехникам
Роботы и обработка изображений. Практика
Роботы, роботы, роботы!
Роботы и футбол
Роботы и обработка изображений
Простейший робот
Рисующие роботы
Работа для робототехника
► Май (14)
► Апрель (12)
► Март (17)
► Февраль (5)
► Январь (12)
► 2007 (20)
► Декабрь (14)
► Ноябрь (6)
Обо мне
Меня зовут Андрей, я профессиональный программист и робототехник-любитель
Связаться со мной Вы сможете, написав на E-mail, или в ICQ 170038573. Внимание! Вопросы только по робототехнике, пожалуйста...
Еще о робототехнике
Robosoft: Программирование роботов. Вакансии
Как сделать робота своими руками
Робототехника в России. Каталог сайтов
Рассылка
Рассылка на E-mail
rss2email
http://teron.ru/index.php?s=43c90a71a1e ... pic=179137
Здравствуйте Гость ( Вход | Регистрация ) Выслать повторно письмо для активации
teron.ru -> Технологии -> Компьютеры и программы -> Программирование Правила Помощь Поиск Участники Календарь RSS
Чемпионат виртуальных роботов от Microsoft, robochamps.com
Подписка на тему | Сообщить другу | Версия для печати
yayaboom Отправлено: 28 апреля 2008, 8:03
lesa.me
Группа: Пользователи
Сообщений: 3768
Рейтинг сообщения: 1
Ну кто с Урала порвет весь мир на тряпки?
Дынц..
кто будет участвовать?
копипаст.. (эта страничка думаю у всех должна уже открываться..)
QUOTE
Welcome to RoboChamps!
While there has long been a large audience interested in robotics, there have also been a number of barriers to entry, both real and perceived. Robots are not widely available in traditional retail stores. If one could find a programmable robot, the cost was often times non-trivial. In addition, the ‘robot’ that could be purchased was often in the form of a kit and required hardware knowledge and skills. And if one could both find and afford a robot, there was a perception that programming one must be difficult. RoboChamps is a new robotics programming league that removes those barriers to entry and makes robotics available to a broad audience. RoboChamps is based in simulation, which removes the barriers to entry of availability, cost, and deep hardware knowledge. RoboChamps is more specifically built on top of the simulation functionality provided in Microsoft Robotics Developer Studio 2008, which means that participants can program their robots using the .NET languages they are already familiar with.
In addition, a simulated robotics competition provides the opportunity for participants to engage in rich simulation environments and use robots that are unattainable via other means. For example, RoboChamps participants have the opportunity to navigate a rescue robot in a city struck by disaster, program a car to drive autonomously in a traffic filled city and drive a rover on the surface of Mars – all scenarios that would be financially prohibitive for most individuals.
RoboChamps consist of a series of challenges. Each challenge comes with a 3-D simulation environment, a robot, a challenge scenario, and the rules for completing the scenario. From there, it’s up to your creativity and coding skills. Using .NET, code your robot to complete the challenge successfully, and submit an entry to the RoboChamps League. A referee service will be running to make sure the rules are being followed, determine your score and send it back to RoboChamps.com.
Ready to get started?
Это сообщение отредактировал yayaboom - 28 апреля 2008, 14:54
личная почта www
Wizard Отправлено: 28 апреля 2008, 14:06
читатель
Группа: Пользователи
Сообщений: 417
Рейтинг сообщения: 0
QUOTE (
http://www.microsoft.com/silverlight/re ... stall.aspx)
Microsoft Silverlight may not be supported on your computer's hardware or operating system.
Не работает оно. Может, это из-за FireFox? Или вообще из-за Linux?
добавлено в 14:08
В общем, непонятно, кому нужна такая технология (silverlight), которая работает на <90% десктопных компьютеров интернета. А под Windows оно не в IE работает?
Это сообщение отредактировал Wizard - 28 апреля 2008, 14:09
личная почта yim
metanol Отправлено: 28 апреля 2008, 14:13
форумчанин со стажем
Группа: Пользователи
Сообщений: 1375
Рейтинг сообщения: 2
Wizard, оно работает на Firefox/Windows и работает на IE/Mac.
Так что как раз на > 90% компов, а для остального
http://www.mono-project.com/Moonlight делают (а может уже и сделали).
личная почта
Гуинплен Отправлено: 28 апреля 2008, 14:41
Системный архитектор
Группа: Модераторы
Сообщений: 8014
Рейтинг сообщения: 0
Вы бы хоть анонс сюда копипастнули...
личная почта e-mail www icq msn
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Можно ли упихать в dll? | Программирование | Проблема с php »
ОПЦИИ
Скрыть опции темы
Подписаться на тему
Уведомление на e-mail об ответах в тему, во время Вашего отсутствия на форуме.
Подписка на этот форум
Уведомление на e-mail о новых темах на форуме, во время Вашего отсутствия на форуме.
Скачать/Распечатать тему
Скачивание темы в различных форматах или просмотр версии для печати этой темы.
Главная страница форума Поиск Помощь Технологии - Авто.Пермь ---- Авто.Новости ---- Авто.Аварии ---- Авто.Offroad ---- Авто.Выбор ---- Авто.Ремонт ---- Авто.Рынок (Перенаправление форума) ---- Авто.Идиоты ---- Авто.Закон (Перенаправление форума) ---- Авто.Навигатор ---- Авто.Клуб ---- Авто.Тюнинг и Спорт - Связь ---- Всё о телефонах ---- Радиосвязь и Авторадиоклуб - Компьютеры и программы ---- Пингвиноводам на заметку ---- Информационные Технологии ---- Компьютерные фирмы Перми ---- Братья наши меньшие ---- Программирование ---- Информационная безопасность ---- Яблоневый сад - Интернет ---- Новинки пермского интернета - Наука ---- История и военное дело ---- Религия ---- Непознанная Пермь ---- Электроника и радиотехника ---- Образование - Дизайн, фотография, графика ---- Фотография и фототехника - Компьютерные игры ---- Игры на портале turbodom.ru (Перенаправление форума) ---- Online Games ---- Консоли и видеоигры ---- Игры: поиск и обмен Общество - Город Пермь ---- Транспорт общего пользования - Государственный и муниципальный заказ ---- Электронные торги ---- Новости в закупках ---- Другие проблемы государственного и муниципального заказа ---- Недобросовестные заказчики ---- Исполнение контрактов ---- Возможно ли честно получить заказ - Гражданское общество и политика Перми (Перенаправление форума) - Недвижимость ---- Строительство ---- Соседи: новостройки, ТСЖ ---- Объявления (Перенаправление форума) - Бизнес и финансы ---- Бухгалтерский учет и налогообложение - Реклама, PR, СМИ ---- Поиск - Юридические вопросы - Про то самое ---- Жилетка ---- Одна баба говорила... - Дом и семья ---- Красота и мода ---- Свадебный переполох ---- Кухня ---- Ремонт и обустройство дома ---- Бытовая техника и электроника ---- Рукоделие ---- Здоровье - Терономамы, Теронопапы, Теронодети ---- Беременность и ее планирование ---- Роды - главное таинство ---- Первый год жизни ---- Детский сад ---- Школьная пора ---- Детское здоровье ---- Обсуждение товаров для детей - Домашние животные и растения ---- Покупка и продажа животных ---- Собаки и собаководы ---- Кошки и их любители ---- Аквариум ---- Приюты ---- Здоровье животного ---- Растениеводство Культура - Афиша и мероприятия ---- Музыкальные мероприятия - Досуг и развлечения ---- Рестораны, кафе, бары ---- Игротека - Рыбалка и охота ---- Порыбачим вместе ---- Клубные мероприятия ---- Охота ---- Снасти и способы ловли ---- Известия с водоемов - Спорт ---- Горные лыжи и доски - Туризм и отдых ---- Поиск: попутчики, снаряжение, расписания ---- Отчёты о поездках форумчан ---- Навигация - Книги ---- Творческая мастерская - Кино и видео ---- Видео: поиск и обмен - Музыка ---- Объявления (Перенаправление форума) ---- Музыкальные мероприятия (Перенаправление форума) ---- Для музыкантов ---- Экстремальная музыка ---- Музыка: поиск и обмен - Аниме ---- Аниме: поиск и обмен - Историческая реконструкция и ролевое моделирование ---- Историческая реконструкция Объявления - Транспорт ---- Авто-мото - продам ---- Авто-мото - куплю ---- Запчасти, аксессуары и доп. оборудование - продам ---- Запчасти, аксессуары и доп. оборудование - куплю ---- Диски, резина - продам ---- Диски, резина - куплю ---- Автозвук и тюнинг - продам ---- Автозвук и тюнинг - куплю - Аудио-видео-фото-бытовая техника - Компьютерные и консольные игры - Компьютерная техника ---- Сист. блоки, оргтехника, мониторы - продам ---- Сист. блоки, оргтехника, мониторы - куплю ---- Ноутбуки, нетбуки, КПК - продам ---- Ноутбуки, нетбуки, КПК - куплю ---- Комплектующие, аксессуары - продам ---- Комплектующие, аксессуары - куплю - Недвижимость ---- Сдам квартиру, комнату ---- Сниму квартиру, комнату ---- Продам, обменяю квартиру, комнату ---- Куплю квартиру, комнату ---- Сдам, продам коммерческую недвижимость ---- Сниму, куплю коммерческую недвижимость ---- Сдам, продам дачу, участок, коттедж ---- Сниму, куплю дачу, участок, коттедж ---- Прочее - Мебель - Музыкальные инструменты и аксессуары - Работа (Перенаправление форума) - Связь ---- Телефоны - продам ---- Телефоны - куплю ---- Смартфоны, коммуникаторы - продам ---- Смартфоны, коммуникаторы - куплю ---- Аксессуары, SIM-карты ---- Навигаторы, аксессуары - Спортинвентарь - Товары для детей - Всякая всячина Прочее - Разное ---- Я ищу ---- Поздравления - Вопросы к администрации сайта ---- Анонсы - Техподдержка ---- Хотелки
Все объявленияЯндексДиректДать объявлениеотправить почту
Полный комплекс услуг почтовой рассылки. Надежно, качественно, недорого!
Адрес и телефон ·
www.simlen.ru · Москва Еще не скачал Firefox 3.6?
Качай скорее! Сделай подарок своему компу!
fx.yandex.ru Скидки на Microsoft Visual Studio
(ср. и мал. бизнес) Microsoft Visual Studio Standard 2008, Москва и обл.
Адрес и телефон ·
www.softkey.ru · Москва Enterprise Developers Conference
Microsoft приглашает на конференцию для руководителей разработки. 26 марта.
edconf.ru
Powered by Invision Power Board(U) v1.3 Final © 2003 IPS, Inc.
© ООО «Терон.ру»
Условия использования материалов Реклама на сайте