Coding4Fun Cannon: создание робота
Опубликовано 21 апреля 2010 г. 17:31 | Coding4Fun
Здесь мы стоим перед проблемой курицы и яйца. О чем мы говорим — о том, как построить робот, или о программном обеспечении, нужном для его работы? Так как выбор оборудования прямо определяет, какое ПО будет разрабатываться, мы должны подумать, как сделать робот надежным и в то же время функциональным. Никому не нужен робот весом под 100 кило с баллоном сжиженного углекислого газа (CO2) и со зловеще торчащими в разные стороны пушками для стрельбы футболками. В этой статье на самом деле речь пойдет не о коде — о нем мы поговорим в следующий раз, — а о создании физического робота под кодовым названием Бетти. Чтобы узнать о приложении для Windows Phone 7 под кодовым названием Фрэнк, ждите следующей статьи.
Автор : Клинт Руткас (Clint Rutkas),
Microsoft Coding4Fun Ninja
Исходныйкод : загрузить
Сложность : средняя (ПО), повышенная (аппаратное обеспечение)
Необходимоевремя : 2 недели
ПО : Visual C# 2010 Express, Visual Studio Phone Developer Express
Оборудование : привод поворота Servo City, набор боевых ботов от Robot Marketplace, релейная панель Phidget 0/0/4, расширенный контроллер сервомоторов Phidget, пушки, стреляющие футболками, всякие детали, поликарбонат и очень много кофе или газировки.
Внимание !
В этом проекте вам придется иметь дело с электрическим током, который может нанести вред вам и повредить вашу электронику. Поэтому, прежде чем случайным образом соединять провода и дотрагиваться до них, пользуйтесь вольтметром и здравым смыслом.
В этой серии статей мы обсудим:
1. Обзор проекта.
2. Разработку приложения для Windows Phone.
3. Разработку серверного ПО.
4. Создание робота.
5. Создание пользовательского интерфейса Windows Phone.
6. Повышение скорости работы.
Деталь 9cв деталь 143B ? Чего-чего?
Для проектов такого рода настоящих инструкций не написать. Каждый такой проект особенный. Если бы меня попросили создать еще одного робота, все шансы за то, что он выглядел бы иначе. Я потратил уйму времени на черчение схем и разговоры с разными людьми, пытаясь понять, как сложить все детали, чтобы все выглядело как надо. Только после этого я отправился в местную мастерскую, где отливают изделия из пластмассы (рекомендую сеть TAP Plastic в Сиэтле), чтобы передать им технические чертежи того, что мне было нужно. Эти детали зависят от того, чего вы хотите добиться во внешнем виде робота. Жаль, что я не могу дать вам чертежи деталей, которые вы могли бы скопировать, но не думаю, что от них была бы особая польза. Но я сделаю другое: я дам вам тонну снимков, которые подскажут вам правильное направление.
Проектно-конструкторские работы
Обычно я изучаю детали и их характеристики очень досконально. Однако из-за ограниченности времени всего двумя неделями, остававшимися до конференции MIX, я решил воспользоваться теми деталями, которые уже были мной опробованы в предыдущих проектах, и сосредоточиться на том, чтобы сделать Бетти автономной, — ведь если бы за Бетти волочился кабель, это противоречило бы самой цели этого робота. Конструкцию Бетти разбили в соответствии с несколькими ключевыми частями: управлением, прицеливанием, стрельбой, мозгами и питанием.
Список основных деталей
- Battlekit — Middleweight Combat Robot Kit – 1 шт.
- Гигабитный беспроводной маршрутизатор Cisco Linksys – 1 шт.
- Лэптоп 13" HP Envy – 1 шт.
- Релейная плата Phidget 0/0/4 – 1 шт.
- Расширенный контроллер сервомоторов Phidget – 1 шт.
- Привод поворота Servo City серия 985 – 1 шт.
- Пушки Burst 175 T-Shirt (с электромагнитными клапанами) – 2 шт.
- Аккумуляторы Odyssey PC680MJ 12V 17AH – 2 шт.
- Castle BEC (настроенные на 6 В) (Battery Elimination Circuit) – 2 шт.
- Castle Pro BEC (настроенные на 12 В, имеют два выхода) – 1 шт.
- 4,5-килограммовый баллон с CO2 – 1 шт.
- Регулировочный клапан (до 300 фунтов на квадратный дюйм) – 1 шт.
- Адаптер «последовательный порт — USB» – 1 шт.
Управлениероботом
Не зная веса конкретных деталей, я был вынужден выбирать такое шасси, которое выдержало бы нагрузку и было бы достаточно большим, чтобы на нем разместилось все, что я собирался впихнуть в Бетти. Имея некоторый опыт в создании роботов по прежним проектам, я знал одну компанию — Robot Marketplace с кучей самых разнообразных деталей, продающихся через Интернет, в том числе у них можно купить готовые корпуса роботов. Я остановился на средней версии, укомплектованной стандартными аккумуляторами и двигателями, которые подходили под мои потребности. Здесь аккумуляторы объединены парами, чтобы поднять напряжение с 12 до 24 В. В наборе поставляется контроллер двигателей AmpFlow, который на самом деле произведен Roboteq. Он подключается к компьютеру адаптером «последовательный порт — USB». Вы также должны приобрести программное обеспечение Roboteq, чтобы сконфигурировать контроллер двигателей на RS232 (последовательный порт).
Прицеливание и стрельба футболками из пушки
Пушки использовались модели Burst 175 T-Shirt Cannon с электромагнитными клапанами, что позволило подключить их к релейной плате Phidget 0/0/4 Relay. Пушки монтировались на привод поворота Servo City Pan-Tilt, которым управлял расширенный контроллер сервомоторов Phidget Advanced Servo Controller. Давление в системе было постоянным.
Мозги и коммуникации
Так как мы с Дэном еще на начальном этапе планирования продумали некоторый функционал, который потребовал бы интенсивной вычислительной обработки, было решено, что лучше всего управлять с лэптопа, хотя поначалу бродили идеи использовать .NET Micro Framework. Мы выбрали в качестве мозгов 13" HP Envy. Одна из особенностей этого лэптопа, которая нам очень понравилась, — возможность крепления дополнительных аккумуляторов в его нижней части, что дает увеличение времени автономной работы до 14 часов!
Для взаимодействия между лэптопом и устройством под управлением Phone мы использовали беспроводной маршрутизатор Linksys. Заметьте, что по ряду причин нам пришлось задействовать проводное соединение, но Бетти и Фрэнк могли общаться по беспроводному каналу.
Электропитание для всех частей
Набор боевых ботов поставляется с аккумуляторами для питания моторов, но нам по-прежнему нужны были источники питания для всего остального. Я остановился на двух массивных 12-вольтовых аккумуляторах 17 ампер/час, которые едва-едва уместились в корпусе, и подключил их попарно для повышения напряжения. Это позволило получить приличный источник электроэнергии для питания всей электронной начинки. Поскольку, кроме моторов, внутри робота больше ничего не требовало 24 В, мы регулировали напряжение. И здесь нам понадобились BEC (Battery Elimination Circuit). Вот как выглядит схема:
Если вы используете разнородные детали, надо обращать внимание на напряжения. Это и есть одна из причин, почему мне нравятся блоки Castle BEC: я могу изменить напряжение вместо покупки нового BEC.
Также очень рекомендую устанавливать переключатели типа «вкл/выкл». При прямом подключении деталей под таким напряжением контакты будут искрить, что приведет к их окислению.
Советы помонтажу
Для монтажа верхней части робота на шасси мне пришлось достать перфоратор и просверлить боковые стенки передней панели (front plate) и крепежной пластины (back plate). Я решил сэкономить и купил для этих целей самый дешевый перфоратор, хотя перфоратор подороже избавил бы меня от лишних стрессов. Сверло было на 1/16 дюйма. Просверлив отверстия, я воспользовался метчиком 10-24 для нарезки резьбы в отверстиях, чтобы детали можно было крепить барашковыми винтами. Две пластины были изготовлены из алюминия марки T-6, поэтому я наносил универсальную смазку WD-40 на сверло и метчик. Если вам никогда не доводилось нарезать резьбу в отверстии, поворачивайте метчик так, чтобы он входил на пол-оборота, а потом выкручивайте его назад на четверть оборота. Это поможет удалять из отверстия образующиеся при нарезке резьбы металлические опилки, которые иначе могут все испортить.
И еще надо понимать, какие движения совершает Pan-Tilt и как их учесть при монтаже пушек. У нас были запрограммированы крайние положения пушек, чтобы они не наклонялись слишком высоко или низко и чтобы они не могли поворачиваться на слишком большой угол и порвать провода.
Другой полезный совет — для начала используйте более длинный провод, чтобы он не мешал поворачивать верхнюю часть робота вокруг своей оси. А уж потом, когда вы поймете, какой должна быть окончательная конструкция, либо обрежьте лишнюю часть провода, либо замените новым.
Мой последний совет, к которому стоит прислушаться, если вы вообще прислушиваетесь к советам: прежде чем соединять что-либо, обязательно используйте вольтметр. Я вот сам нарушил это правило и подключил два провода так, что поменял полярность электропитания. После включения я имел удовольствие наблюдать, как эффектно сгорели провода и как испортились три блока BEC. Эта ошибка обошлась мне в сотню баксов и полдня ремонта, но все могло бы закончиться куда хуже. Проверяйте и перепроверяйте напряжения — это не только убережет вас от ударов током, но и избавит от покупки новых деталей и объяснений, почему в коридоре воняет жженой проводкой.
Эй, постойте-ка, да это же нестандартная деталь!
Да, это так. Это деталь, которую я сделал, чтобы упростить монтажную схему своего бармена-автомата Drinktendr. В нее включается единственный шнур электропитания, провода с положительными напряжениями идут к реле и обратно, а остальные — к целевому устройству. Такую штуку можно сделать и без печатной платы — просто она может превратиться в клубок. Если вы хотите сделать плату, то соответствующий файл для ее поддержки есть на сайте Codeplex в разделе исходного кода в каталоге Files.
Картинкидолжныпомочь
Думаю, что снимки креплений верхней части и пушки помогут понять «кто, что, когда, где, почему и как».
Шасси
Пушка
Вид сверху
Надписи на картинке:
Pidget Servo — Сервомотор Pidget
drinktendr wiring board — Печатная плата с разводкой питания для бармена-автомата
BECs — Блоки BEC
AmpFlow Motor Controller — Контроллер мотора AmpFlow
off switches — Выключатели
А почему у меня все выглядит так коряво?!
Чтобы правильно все смонтировать и протянуть проводку, нужно немало времени. Мы были вынуждены демонстрировать Скотту Гатри первый вариант робота с торчащими отовсюду проводами! Вид был еще тот, но главное — он решал поставленную задачу. Только после того, как я добился правильной работы всего функционала, я укоротил провода и аккуратно уложил их. Я уже говорил об этом, но повторюсь, что более длинные провода помогают не ограничивать перемещения и в то же время придумывать новые варианты конструкции.
Заключение
Создание двух Бетти было интересным и трудным проектом. Используя опыт прошлых проектов, мы быстро справились с новым, не жертвуя никакой функциональностью.
В следующих статьях мы поговорим о том, как программировать Бетти, а также об устройстве под управлением Phone, которое могло взаимодействовать с роботом. Кроме того, я пропустил раздел о самом создании Бетти, так что, если вас это действительно интересует, пожалуйста, пишите в комментариях — я с удовольствием подробно расскажу о том, что делал.
Обавторе
Клинт пишет на Coding4Fun и входит в группу Channel 9 в Microsoft. Ему еще не попадался проект, с которым он не сумел бы справиться даже в самые горящие сроки. Если вам нужно связаться с Клинтом, то адрес его электронной почты clint.rutkas@microsoft.com; он также ведет свой блог https://www.betterthaneveryone.com и имеет учетную запись на Twitter ClintRutkas.