В этой статье будет подробнее рассказано о проекте «RobotVirtualization», победившем на региональном этапе международного конкурса ImagineCup 2013. Он придуман командой студентов МФТИ (ГУ) «CyberTech». Если вам понравится идея этого проекта — поддержать его можно здесь.
Хотелось бы вам иметь в распоряжении робота, который бы подчинялся вашим указаниям? Если вам кажется что это слишком сложно, дорого, не стоит ваших усилий, то вы не правы!
Конечно, сейчас можно сказать про среднюю цену робота (около 500$), или пожаловаться на работу симулятора (копия робота далека от реального: отсутствует поддержка большого количества датчиков, упрощенная физика и т.д.), добавить: «Да в таких условиях написать что-то стоящее просто нереально!» И вы будете правы. В ТАКИХ условиях и правда сложно написать свою собственную программу управления для робота.
Решение, о котором пойдет речь в данной статье напоминает собой «аренду» робота. Только арендуете вы не из рук-в-руки, а посредством удаленного доступа через веб-сервис. Сервис позволяет конечному пользователю исполнять собственные программы для управления на реальном роботе и получать данные с его сенсоров и камер, установленных в помещении, в режиме реального времени. Такая система позволит значительно уменьшить затраты на разработку программ для роботов и обучение специалистов.
В этой статье мы рассмотрим общую структуру работы сервиса. В последующих статьях будет раскрыт подробно каждый элемент системы.
Изначально у нас был робот «Фёдор», состоящий из платформы Dagu Wild Thumper 4WD, Kinect, 4 ик дальномеров, ebox, и магнитометра. Для его контроллера была написана прошивка, позволяющая управлять моторчиками и получать данные с сенсоров. На ebox была установлена обычная винда.
Казалось бы, у нас есть готовый робот, можно начинать клепать для него управляющие программы одна за другой. Однако, чтобы интегрировать робота в среду разработки, в нашем случае MRDS, придется еще попотеть: для датчиков, сенсоров, моторчиков надо написать сервисы, которые в дальнейшем обеспечат легкий доступ к девайсу. В нашем случае пришлось писать как сервис со стороны робота (это были WCF сервисы, которые двигали колеса и передавали данные с сенсоров), так и со стороны сервера (DSS сервисы для интеграции в среду MRDS).
Следующим шагом была разработка прототипа сервиса, который позволил бы запускать пользовательские программы. Сервис был разработан на ASP.NET MVC3. Сервис опрашивает доступность робота, модифицирует программу (убирает привязки пользователя), добавляет валидацию действий робота (было бы плохо, если бы «вредный» пользователь решил разбить нашего Федю :) ). Общий принцип работы сервиса показан на схеме.
Для тестирования системы были созданы несколько VPL программ, которые продемонстрировали её работоспособность:
1. Управления роботом при помощи джойстика на сайте
2. «Езда по квадрату». При исполнении данной программы робот, как и ожидалось, двигался в цикле по квадрату. (подробнее можно увидеть на видео внизу)
3. «Сумо»: два робота были установлены на противоположных частях «ринга». При запуске программы роботы пытаются вытолкнуть друг друга за пределы этого ринга. Соответственно, робот, который останется на ринге, — побеждает.
Функционирование этих приложений и безошибочность выполнения позволили убедиться в функционировании сервисов робота и в возможности управлять роботом непосредственно с джойстика на сайте.
В следующей статье будет подробно рассмотрен процесс сборки робота и интеграции его в среду MRDS.
Если вам понравилась идея, поддержите наш проект по ссылке, проголосуйте за CyberTech:
www.microsoft.com/rus/imaginecup/#finalists
Статья написана kulchenkov32
Автор: bdshadow