- PVSM.RU - https://www.pvsm.ru -
Этот пост продолжение моей статьи «Android + Arduino + 4 колеса» [1]. Совсем не то, что я планировал описать следующим шагом. Я собирался решить задачу передачи видео от робота к ПК, но до сих пор нахожусь в стадии сбора информации. К сожалению мало свободного времени, а тут ещё пришлось переставлять систему на домашнем компьютере с нуля и заново настраивать среду разработки.
На фоне вопросов, заданных мне по почте о запуске исходников Мити (имя, зацепившееся за моим роботом) и моей внеплановой перестановки системы, решил описать, какой средой пользуюсь я, как её настраивать, как развернуть исходники и как запустить Митю. Если интересно, приглашаю читать далее. Картинок почти нет, никакого видео, сухой поток текста по настройке среды разработки. Суровая изнанка робототехники.
Надеюсь, эта статья пригодиться тем любителям DIY, кто испытывает недостаток опыта в части организации программирования .NET-приложений или Android-приложений. Вопросы языков программирования я поднимать не буду, но главный вопрос: «с чего начать?», думаю, здесь будет раскрыт.
unit-тестирования [2] в тех же Express-Студии и Eclipse.
Чем определён такой выбор инструментов разработки… Мой проект некоммерческий, домашний и открытый. Отсюда идея, что все программные продукты, задействованные в нём, будут бесплатные. Разве что Windows не вписывается в этот ряд (на моём компьютере установлена операционная система Windows 7 x64). Сейчас, правда, разработку под Android и Arduino я веду и под Ubuntu (пришлось ради замысла передачи видео от робота к ПК), но это отдельная история и о ней пока рано. Должен сказать, что на работе я привык пользоваться платной версией Visual Studio (Professional). В отличие от Express-версии она расширяема и набор плагинов, к которому я привык, делает работу гораздо более приятной. Тем не менее, мне удалось поставить всё самое необходимое «на» Express-версию и сделать её чуточку более функциональной.
Я сомневался публиковать ли эту статью и публиковать ли в DIY, но посчитал, что это неотъемлемая часть Мити не менее важная, чем сборка механики робота или монтаж его электроники. Часто DIY-проект объединяет в себе сразу много очень разных тем: механика, электроника, программирование. А программирование тут получилось и под Arduino, и под Android, и под Windows – три языка программирования и три разных среды разработки. Любитель DIY, как правило, универсал, но, думаю, помощь ему не помешает, и эта статья пригодиться в другом проекте.
Пара слов почему мой робот Митя. Имя ему дала жена, вспомнив Тр-тр Митю из Простоквашино (если кто не в курсе, «Тр-тр» это ТРакТоР, а «Митя» это Модель Инженера ТЯпкина). Так получился тёзка. Хотя никакой я не тяпкин. И Митей не даю себя называть. А он никакой не трактор. Но жене всё это не докажешь, и имя Митя закрепилось за моим трактором роботом дома, на работе, среди друзей, поэтому будет проскакивать дальше в статье.
Теперь о среде разработки.
Проект опубликован на гугловском сервисе code [3]. Я использую систему управления версиями Subversion (SVN) [4], поэтому для получения исходников рекомендую поставить какой-нибудь SVN-клиент, например, TortoiseSVN.
Скачать последнюю версию TortoiseSVN можно здесь [5]. Тут же выложен русский языковой пакет, но я им как-то не привык пользоваться.
Тему систем управления версиями я вынесу за рамки этой статьи, но для тех, кто с SVN пока незнаком, на всякий случай опишу, как выгрузить исходники на локальный диск.
После установки TortoiseSVN создать где-нибудь папку, назвав её, например, “robot-mitya”. Кликнуть на ней правой кнопкой мыши и выбрать в контекстном меню пункт “SVN Checkout...”. В открывшемся окне в поле “URL of repository” скопировать текст “http://robot-mitya.googlecode.com/svn/trunk/”. В поле “Checkout directory” должна быть указана папка “robot-mitya”. Нажать OK. В папку “robot-mitya” будут загружены все исходники, и там появятся каталоги Android, Arduino и Windows.
В папке Windows содержатся исходники Windows-приложения, реализующего пользовательский интерфейс и передающего команды на уровень Android-приложения. Приложение написано на C# с использованием фреймворка XNA. Опишу, как всё это настроить.
Точнее, установка и настройка Microsoft Visual C# 2010 Express. Здесь [6] скачайте инсталляционный файл. При инсталляции можно отказаться от Microsoft Silverlight и Экспресс-выпуска Microsoft SQL Server 2008. Они не нужны Мите.
Затем установите Microsoft XNA Game Studio 4.0. Дистрибутив лежит тут [7]. После установки в студии появится возможность работать с проектами, созданными на основе шаблона “Windows Game”. Проект RobotGamepad.csproj как раз тот самый случай.
Для контроля качества кода C# я использую StyleCop [8]. Это не обязательный, но, на мой взгляд, крайне полезный инструмент. Особенно для начинающих.
Если вы не хотите им пользоваться, или у вас Visual Studio версии Professional и выше, необходимо проверить файлы проектов “robot-mityaWindowsRobotGamepadRobotGamepadRobotGamepadRobotGamepad.csproj” и “robot-mityaWindowsRobotGamepadRobotGamepadTestRobotGamepadTest.csproj”. В них не должно быть строк:
<Import Project="$(ProgramFiles)MSBuildMicrosoftStyleCopv4.3Microsoft.SourceAnalysis.Targets" />
Путь к файлу “Microsoft.SourceAnalysis.Targets” может немного отличаться. Это зависит от версии StyleCop.
Если вы будете использовать StyleCop с Visual Studio Professional и выше, то достаточно установить его, выбирая параметры установки по умолчанию. Дистрибутив можно скачать здесь [9]. При установке StyleCop интегрируется в Студию.
Если вы хотите использовать StyleCop под Visual Studio версии Express, то придётся немного похимичить, так как Express-версия не поддерживает расширений.
Во время инсталляции необходимо выбрать “Custom Setup” и отметить для установки “MSBuild integration files”.

После установки StyleCop, в файлах проектов, для которых вы хотите включить контроль качества кода («robot-mityaWindowsRobotGamepadRobotGamepadRobotGamepadRobotGamepad.csproj» и «robot-mityaWindowsRobotGamepadRobotGamepadTestRobotGamepadTest.csproj»), после строки
<Import Project="$(MSBuildBinPath)Microsoft.CSharp.targets" />
необходимо добавить строку
<Import Project="$(ProgramFiles)MSBuildMicrosoftStyleCopv4.3Microsoft.SourceAnalysis.Targets" />
Делать это лучше в Notepad. Путь к файлу “Microsoft.SourceAnalysis.Targets” надо предварительно уточнить в каталоге “Program Files”. Ещё раз подчеркну, добавление этой строки нужно только для «прикручивания» StyleCop к Express версии Студии. Для Professional версии и выше ничего делать не надо – инсталлятор StyleCop всё сделает сам.
StyleCop установлен, теперь отклонения от правил оформления кода будут наказываться предупреждениями компилятора.
Для модульного тестирования я использую NUnit. На момент написания этой статьи это был NUnit [10] версии 2.5.10. При установке все опции инсталлятора оставляем по умолчанию.
Для настройки выполняем следующие шаги:
Базовая настройка среды для программирования под Android описана тут [11]. Официального русского перевода пока нет, так что ниже опишу свои действия. К тому же базовую настройку я несколько расширю особенностями проекта.
Кстати, на Хабре эта тема уже поднималась [12], но цель моей статьи подготовка среды для проекта робота Мити, поэтому придётся где-то повториться. Тем более, что будут и отличия.
Дистрибутив лежит здесь [13].
Для Windows 7 x64 я загружаю последнюю на сегодняшний день версию JDK: jdk-7u3-windows-x64.exe. Установка не составит труда – оставляем все опции по умолчанию.
Скачать SDK тут [14]. Можно Windows-инсталлятор, а можно и zip-архив. Я делал и так и так, сейчас это вообще было копирование папки “Android-SDK” с другого винчестера (эх, когда-то у меня уже всё было). Устанавливать рекомендую в папку “c:android-sdk”.
Я использую Eclipse Classic 3.7.1. Скачать можно тут [15]. Опять же версию под Windows 7 (в моём случае под x64). Получим архив “eclipse-SDK-3.7.1-win32-x86_64.zip”. Его я распаковал непосредственно в корневой каталог диска C. В своё время я уже «постигал» Виртуальное хранилище от Microsoft в версиях Windows Vista и Windows 7. Я умею бороться с этим безумием, но ходить по одним и тем же граблям нет желания. Поэтому я не ставлю Eclipse в Program Files. Если не хотите захламлять корневой каталог (дальше ещё накидаем туда папок), рекомендую завести один всё же в корне, а остальное уже сваливать в него.
Теперь можно запустить Eclipse (у меня c:eclipseeclipse.exe). При первом запуске появится окно “Workspace Launcher” с предложением выбрать рабочий каталог (workspace). Я указал “c:robot-mitya”. Далее откроется IDE Eclipse. Проекты Мити пока не открываем – ещё надо кое-что сделать.
Плагин Android Development Tools (ADT) расширяет функции Eclipse как раз в части разработки ПО под Android. Для установки и настройки ADT-плагина делаем следующее:
Запускаем “SDK Manager”. Теперь это можно сделать прямо из Eclipse (меню Window → Android SDK Manager), вроде бы и удобно, но не советую. Дело в том, что менеджер открывается почему-то как модальное окно, и Eclipse вы на время работы с менеджером теряете. Сейчас это ещё не страшно, а вот когда начнёте программировать, будет неудобно. Так что лучше запускать менеджер, минуя IDE: “c:android-sdkSDK Manager.exe”.
Это моё самое нелюбимое место настройки среды разработки под Android. Не знаю почему, но SDK-менеджер ужасно нетороплив. Счёт трафика идёт на гигабайты, счёт времени на часы (даже на ночь оставлял!). Не понимаю с чем это связано и что он там делает, но быстрым шаг установки пакетов я назвать не могу. Мне сейчас удалось пропустить этот шаг, потому что я копировал уже ранее настроенный каталог c:android-sdk. И то, даже его копирование с внешнего HDD заняло минут двадцать. У меня этот каталог содержит около 67 тысяч файлов.
Для Мити, как я понимаю, достаточно пакетов “SDK Platform” и “Google APIs by Google Inc.” из Android 2.3.3 (API 10), а также пакетов из групп “Tools” и “Extras”. Правда, я ставил пакеты под все платформы. От жадности, да и мало ли какими проектами я ещё займусь. Так что можете существенно сэкономить на времени установки пакетов.
Честно сказать, назначение большинства пакетов – для меня загадка. Несколько из них не устанавливаются, но это, как я понял, нормально.
Android SDK установлен и настроен, если есть желание можно посмотреть что внутри и почитать о его содержимом здесь [17]. Для любителей командной строки здесь даже рекомендуют добавить пути к папкам tools/ и platform-tools/ в переменную окружения PATH. Я пока вполне обходился без командной строки.
Очень удобный сервис для поиска и установки плагинов в Eclipse. Мне кажется, что раньше после установки Eclipse Indigo (версия, которую мы сейчас установили), Market уже входил в состав IDE, но нет, или я ошибаюсь, или уже не входит.
Для установки делаем следующее:
Теперь в меню Help появится пункт “Eclipse Marketplace…”.
Полезный инструмент, аналог StyleCop в Visual Studio, не позволяющий безобразничать при оформлении кода. Настоятельно рекомендую поставить, особенно, начинающим (а потом уже деваться некуда). Установка:
Теперь нехорошие с точки зрения правил Checkstyle части кода будут помечены чем-то желтым и их придётся исправлять. Для своих проектов я использую набор правил “Sun Checks (Eclipse)”, входящий в поставку плагина. Правила оформления кода можно настраивать, но я категорически против подстраивания правил Checkstyle (да и любой системы контроля оформления кода) «под себя», «под компанию» или «под проект». Это путь в никуда, можно тогда и не вводить контроль оформления кода. Но одно правило меня всего такого принципиального довело-таки до ручки и пришлось его отключить. Каюсь. Это ограничение максимальной длины строки в 80 символов. 80 символов на современном мониторе выглядит странно. В описании правила сказано: «Rationale: Long lines are hard to read in printouts or if developers have limited screen space for the source code, e.g. if the IDE displays additional information like project tree, class hierarchy, etc.». Жалкое объясненишко.
В Android-проекты Мити уже добавлена конфигурация Checkstyle, поэтому дополнительно настраивать ничего не придётся.
Добавление проектов в рабочий каталог (workspace)
Виртуальное устройство или Android Virtual Device (AVD) – это эмулятор телефона, на котором можно будет запускать Android-приложения и тесты. Хотя я чаще отлаживался прямо на телефоне.
Прежде чем создать виртуальное устройство, рекомендую в Windows подправить переменные среды:
Для создания виртуального устройства запускаем приложение “c:android-sdkAVD Manager.exe”. Его же можно вызвать и из Eclipse, но тоже (как и SDK Manager) почему-то в виде модального окна (Window → AVD Manager). Не забудьте перезапустить Eclipse, если он был загружен до определения переменных среды. Жмём “New…”, в открывшемся диалоге заполняем поле “Name”, например, “Google_APIs_Level_10” (пробелы не допускаются), в поле “Target” выбираем “Google APIs (Google Inc.) – API Level 10”. Остальные поля можно оставить без изменений. Кнопка Create AVD. Если мы переопределили переменную ANDROID_SDK_HOME, в папке “c:android-sdk” появится папка “.android” с образом и конфигурацией виртуального устройства.
Пробуем запустить виртуальное устройство: выбираем его в списке и нажимаем кнопку “Start…”, далее “Launch”. Первый запуск будет довольно долгим.
Настройка телефона:
Теперь необходимо установить драйвер для доступа к телефону. Если у вас Android Developer Phone (а вдруг?), Nexus One, или Nexus S, Гугл предоставляет свой драйвер [18]. В остальных случаях Гугл отсылает к производителям. Самым простым способом поставить драйвер под мой HTC Sensation, оказалось поставить HTC Sync [19] (программа бесплатная).
Теперь всё готово для загрузки в телефон и запуска приложения RoboHead. Переходим в Eclipse, на проекте RoboHead жмём Run, в открывшемся диалоге выбираем телефон и на его экране должен будет появиться довольный Митя.
Установка и настройка среды разработки подробно описана на сайте проекта Arduino [20]. Кратко опишу установку под Windows. Единственное дополнение к типовой установке, требующееся проекту, добавление двух библиотек.
Текущий на момент написания статьи скетч написан под Arduino версии 1.0. Он точно совместим с версией Arduino 0022 и 0023. Относительно других версий утверждать не могу, не проверял. Скачать архив с IDE можно здесь [21]. Я распаковал архив прямо в корневой каталог диска C.
Обещают, что установка в Vista идентична. Выполняем следующие шаги:
Теперь можно запускать “c:arduino-1.0arduino.exe”, чтобы снова простить «неизвестного издателя» и поставить пару полезных галочек.
В инструкции на сайте arduino.cc предлагают завершить установку и настройку IDE запуском демонстрационного скетча. Для этого выполняем следующие действия:
Для компиляции скетча Мити нам понадобится две библиотеки, не входящие в стандартную поставку IDE Arduino. Со странички проекта [22] необходимо загрузить архивы IRremote.zip [23] и USBHostShield2.zip [24]. Всё что нужно сделать для установки библиотек, это распаковать эти архивы в папку “C:arduino-1.0libraries” и перезапустить IDE Arduino.
Всё, можно заливать Митин скетч в контроллер.
Для управления Митей с ПК телефон и компьютер должны быть в одной локальной сети. Замечательно, что мой смартфон может ещё выступать и в роли роутера, поэтому можно обходиться без внешнего Wi-Fi роутера.
Итак, на данный момент:
Включаем питание робота. Сервоприводы поднимут держатель для упрощения установки телефона. Подключаем и закрепляем на держателе телефон. На телефоне должна сработать идентификация подключения к контроллеру робота, и автоматически запустится приложение RoboHead.
Теперь запускаем приложение RobotGamepad на ПК и нажимаем кнопку Start на геймпэде. Митя готов, поехали!
Автор: DmitryDzz
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/2988
Ссылки в тексте:
[1] «Android + Arduino + 4 колеса»: http://habrahabr.ru/blogs/DIY/135043/
[2] unit-тестирования: http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
[3] code: http://code.google.com/p/robot-mitya/
[4] Subversion (SVN): http://ru.wikipedia.org/wiki/Svn
[5] здесь: http://tortoisesvn.net/downloads.html
[6] Здесь: http://www.microsoft.com/visualstudio/ru-ru/products/2010-editions/visual-csharp-express
[7] тут: http://www.microsoft.com/download/en/details.aspx?id=23714
[8] StyleCop: http://stylecop.codeplex.com/
[9] здесь: http://stylecop.codeplex.com/releases/view/48036
[10] NUnit: http://www.nunit.org/index.php?p=download
[11] тут: http://developer.android.com/sdk/installing.html
[12] поднималась: http://habrahabr.ru/blogs/android_development/109944/
[13] здесь: http://www.oracle.com/technetwork/java/javase/downloads/index.html
[14] тут: http://developer.android.com/sdk/index.html
[15] тут: http://www.eclipse.org/downloads/
[16] мануале: http://developer.android.com/sdk/eclipse-adt.html#installing
[17] здесь: http://developer.android.com/sdk/installing.html#sdkContents
[18] свой драйвер: http://developer.android.com/sdk/win-usb.html
[19] HTC Sync: http://www.htc.com/ru/help/
[20] Arduino: http://arduino.cc/en/Guide/HomePage
[21] здесь: http://arduino.cc/en/Main/Software
[22] странички проекта: http://code.google.com/p/robot-mitya/downloads/list
[23] IRremote.zip: http://code.google.com/p/robot-mitya/downloads/detail?name=IRremote.zip&can=2&q=
[24] USBHostShield2.zip: http://code.google.com/p/robot-mitya/downloads/detail?name=USBHostShield2.zip&can=2&q=
Нажмите здесь для печати.