Как стать автором
Обновить

Комментарии 59

Называть роботов именами становится традицией.
Старался удержать это в себе, но прорвалось из YouTube.
Круто! С радостью почитаю продолжение!
Мимика у Мити очень интересная, я сам аж загрустил, как увидел на видео его грустную «мордашку».
Жаль, что статья эта не вышла на день-два раньше…
Спасибо. Я боялся меня за размер статьи сразу застрелят. Хотя, всё ещё впереди.
А почему бы не использовать Bluetooth как канал связи с Arduino? Тогда можно смартфон как угодно крепить, пропало бы множество проблем и не говоря уже о превращении смартфона в джойстик робота.
Bluetooth это очень просто и хорошо, но совершенно не расширяемо =( видео например уже пердать не получится…
Arduino и не снимает видео, это задача смартфона.
А для передачи сигналов управления и состояния датчиков между Arduino и Android-ом Bluetooth более чем хватит.
Более того, это позволяет избавиться от USB Host shield и проблемы с объеданием тележки сматрфоном )
Мне нравится Ваша идея по использованию Bluetooth. Поддерживаю и думаю, сейчас, я бы так и сделал.
Но когда я всё это затевал, я думал, что хостом в USB-соединении будет смартфон. Когда эту задачу не осилил, я решил, что с проблемой отключения зарядки смартфона справлюсь без вопросов. Но увы, эту проблему я тоже не смог решить.
Я осознано описывал все свои ошибки, т.к. уверен, что моя «граблекарта» поможет другим в принятии технических решений.
На самом деле я тоже поначалу на USB Host смотрел.

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

Поэтому обратил свой взор на Bluetooth и Wi-Fi (для прочих беспроводных вариантов необходимо значительное усложнение схемы или 2я Arduino, что под экономичность не попадает).

При этом Bluetooth хоть и обладает незначительным радиусом действия (порядка 10 метров в самом простом варианте), тем не менее подкупает простотой установки и использования, не говоря уже про стоимость порядка 10$.

Для самоходной платформы хочу Р/У машинку приспособить (купил вездеход Hariot — мало того, что довольно мощная платформа, так еще плавает и стреляет шариками (в моем варианте)).
Это тебе и Motor Shield, и питание, и сигналы с Р/У пульта можно принимать.

А установка смартфона позволяет уже и видео писать (спасибо SmartCam, а то уже хотел радио-камеру аналоговую покупать) и управлять по Fi-Wi, не говоря уже про прочие плюшки (GPS, акселерометр, мощный мозг, дисплей (особенно вкусно если есть фронтальная камера), запись / воспроизведение звуков и т.д.).
Как раз тем же занимаюсь)) только платформа из строго игрушечного джипа, а вместо телефона нетбук) и без пушки =(
С нетбуком открывается больше возможностей, в том числе для автономности робота :) Делитесь разработками, когла будет чем делиться!
Согласен, но у меня в дальнейших планах гонять видео и аудио потоки в двух направлениях. Так и так нужен компьютер на другом конце и канал пошире.
В свое времся прикрепил смарт к Р/У машинке и управлял, наблюдая через камеру за движением телефона.
Для организации передачи видео использовал IP Webcam.
Из минусов — высокая задержка изображения. По идее надо использовать аналоговую беспроводную камеру.
Сейчас смотрю в похожих приложения проскакивает SmartCam, надо будет попробовать.
Потестил SmartCam — задержка минимальна!
Правда, разрешение пришлось до 240х160 опустить, но тем не менее этого более чем достаточно для передачи видео.
А учитывая, что исходники открыты — функцию управления Arduino добавить не составит труда.
после просмотра видео, с начала подумал, что вы сделали искусственный интеллект на подобие собаки айбо, дочитав до контролера от xbox даже немного расстроился
Обязательно постараюсь поработать с ИИ, но эта тема бесконечная, поэтому сначала видео-аудио.
Зато и самая интересная, у меня примерно те же пожелания к своему роботу. Кстати, это робот, просто не автономный. По определению даже манипулятор на производстве, просто держащий заготовку и поворачивающий ее для вытачивания — тоже робот.
Веселый зверек получился.
поделитесь кодом под Android? Как раз логика, которая появляется при доработке примеров до рабочего состояния и есть самое полезное.
Обязательно. Я планирую немного причесать код и выложить его на code.google.com.
Я выложил исходные коды и под Android, и под Arduino, и под Windows. В конец статьи добавлен раздел UPD с подробностями.
Здорово. кстати, а есть какой-то удобный человеческий интерфейс работы с google code? а то git и mercudrial требуют возни с файлами конфигурации, создают кучу дурацких файлов и папок в структуре проекта в отличие от SVN
А там разве не SVN?
# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout robot-mitya.googlecode.com/svn/trunk/ robot-mitya-read-only

Кстати, не так давно и SVN (во всяком случае TortoiseSVN) в каждом каталоге создавал по служебной папке.
TortoiseSVN вообще неудобная штука. Ставил, не понравилось. Хочется инструмент, который будет лежать отдельно, без необходимости установки, хранить проекты в папке или файлике/базе, а не создавать кучу мусора в папке проекта.
Не знаю, лично мне TortoiseSVN очень даже нравится.
Интегрируется с контекстным меню, перевод на Русский (в принципе не обязательно, но приятно), проект практически не засоряет (одна служебная папка не в счет, раньше в каждой папке по служебной было).

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

Плюс простота установки и настройки. Поддержка в том числе и локальных проектов (файловый репозиторий, создается буквально в пару кликов). Что еще для счастья надо?
Поддерживаю! Давно работаем с ним. На мой взгляд, надо несколько сжиться с идеологией систем ведения версий, и всё встанет на свои места. А его возможность организовать локальный репозиторий вообще замечательна. Это уже не просто клиент SVN.
Я в последний раз пользовался им два года назад почти, тогда он требовал ставить git, сам был только оболочкой, работал только в explorer, никакого отдельного GUI вменяемого не было. Русификация же — абсолютное зло для разработчика, на мой взгляд.
вернее не git, а какой-то консольный набор утилит
Ну и сейчас он — оболочка над Subversion.
Отдельного GUI так и нет, если не считать служебных утилит (а зачем? Вcпомнить SourceSafe от MS — спасибо хоть с VS интеграция, отдельное приложение запущенным держать было бы крайне неудобно).

На счет только explorer — любой файловый менеджер, умеющий вызывать «родное» контекстное меню вызывает и его (я Total Commander-ом пользуюсь).
И ставить Subversion он не требует, ставится вместе с ним.
Если не ошибаюсь, 2 года назад все так же и было.

Самое заметное изменения за все время что я им пользуюсь (порядка 3,5 лет) — служебные папки объединили в одну.

При этом TortoiseSVN с самого начала казался очень удобным.
поставил посмотреть :)
SabMakc прав, у меня используется репозиторий SVN. Google предлагает три варианта репозиториев. Мне привычен SVN, поэтому его и выбрал. Для работы использую Черепашку. В Eclipse — плагин Subversive SVN. В MS Visual C# Express студии, к сожалению, не ставятся расширения. В Arduino IDE некуда :). Поэтому приходится через Черепашку. У Вас, кажется, Delphi (я подглядел в комментариях Вашей последней статьи), для него тоже есть плагины, но мне не приходилось их использовать.
Я использовал RapidSVN в качестве клиента, вернее пробовал использовать, но в терминах этих версионных систем не разобрался. Сравнить изменения и документировать разницу версий в них неудобно и вообще непонятно как. А в остальном от них пользы не нашлось. В итоге проще архивировать версии просто RAR/ZIP. в итоге забросил использование систем версионности.
>>> жена спросила меня: «Нет, я всё понимаю, но что ты просто машинку радиоуправляемую не купишь?».
ох уж эти женщины, им этого не понять )))

>>> Пока то, что у меня есть рано называть роботом.
Вы себя недооцениваете, получилось просто здоровски, особенно эти улыбочки, если детально проработать передачу эмоций, то будет просто обалденно. Например разогнался ехал, ехал, а тут бац преграда, загрустил, остановился, покрутился увидел создателя :D улыбнулся, поехал к нему завилял хвостиком ))) Увидел «врага», оскалился…
Для распознавания образов мощности вашего телефончика должно быть достаточно, а тема это очень интересная, есть готовые решения. Темболее ваша связка уже позволяет решать задачи такого уровня.

>>> Если получится интересно, буду писать дальше.
Пишите обязательно! Очень интересно.

Кстати, вместо дорогого смартфона можно тоже взять что-то китайское подешевле в случае чего и спалить не жалко и бюджет меньше будет.
Спасибо. Очень хорошая мысль с использованием эмоций. Кстати, аппаратно, у меня уже есть дальномер — пушка и приёмник. Их вполне можно использовать.
«ИК-светодиод работает на 100мА, и пиковых 200мА, поэтому его можно смело включать прямо на цифровой выход Arduino (без резистора), а обвязка фотоприёмника указана в его»

Выход Mega168 не тянет более 40мА. Так что без ограничительного резистора включать его нельзя.
Вы совершенно правы, я ошибся. Причём сначала хотел сразу возразить, потом решил поднять эту тему. Вот здесь этот вопрос поднимается. Явного ответа я не увидел, но сомнение закралось. Заинтересовался, какой ток будет у горящего ИК-диода. Именно моего: TSAL4400. Воткнул его на второй пин и землю, написал и загрузил такой скетч:

void setup() {
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
}

void loop() {
}


Замерил ток — 82 мА! Превышение допустимого тока в 2 раза! Последовательно включенное сопротивление в 80 Ом обеспечивает ток порядка 35 мА. Видимо, для этого светодиода лучше поставить транзистор, чтобы вывести его штатные 100 мА.
С транзистором вы можете сжечь его вообще. Тут надо ставить транзистор и ограничительный резистор, расчитанный таким образом:

(Напряжение питания — 0.7 — Uпадения диода)/Iсветодиода

0.7 — примерное падение на транзисторе
напряжение падениян на светодиоде смотрите в его ДШ.
Конечно с резистором. Я имею в виду то, что ток всё-таки надо подтягивать до штатных 100 мА ИК-светодиода. Иначе радиус пушки будет ограничен. Мы с приятелем столкнулись с этим на стенде, когда подключали светодиод к пину Arduino через резистор.
Спасибо, топик я исправил.
Помехи от движков возникли не изза их мощи, а изза криво разведенной земли. По хорошему у движков земля должна быть своя, и ветка питания своя. Пусть и с одного источника, но браться должна она от клеммы батареи, тогда все броски движка замкнутся на батарею по большей части и не будут гулять по цифровым схемам.
Именно так и было. Всё нормализовалось только после гальванической развязки благодаря DC-DC преобразователю.
DC-DC не дает гальванической развязки.
Гм… Я так понимал, что DC-DC преобразователи дают гальваническую развязку. Посмотрел datasheet моего TEN 8-1221. Там написано: «Typical applications for these converters are battery operated equipment, instrumentation, communication and industrial electronics, everywhere where isolated, tightly regulated voltages are required and space is limited on the PCB».
"… isolated… voltages ..." я понял как развязку.
Ура, я тоже решил делать на основе смартфона :). Классная статья!
Точно, но она попозже появилась. Или я не знал о ней ничего поначалу. Но её минус — размер. Я прикидывал по габаритам, любая Мега чуть ли не торчит краями из моей тележки. А Мега-сила в том, что ног у контроллера тьма. Вот тут меня брала зависть. Можно ведь, и манипулятором тогда озаботиться.
Есть Seeeduino Mega.
По размерам — практически как стандартная плата.
А где видео РобоБитвы? Или хотя бы какой её результат? Не верю, что никто её не снимал!
Ну, тут прокол. Действительно не снимали. В конце сделали фото.

Коллективное фото

Противник (фото 1)

Противник (фото 2)
Вижу у противника одну критическую уязвимость — проезжая «впритык» его можно выключить )
По размышлении над статьёй и комментариями появилась пара идей. Я по робототехнике почти ничего не знаю, поэтому в случае неосуществимости чего-либо из мною перечисленного (в чём я серьёзно сомневаюсь), прошу об этом открыто сказать.
Как я понимаю, в случае передачи данных по Wi-Fi, вполне можно передавать видео. Так почему бы не сделать полное управление с компьютера/ноута, где не нужен будет визуальный контакт с роботом? В случае вида от первого лица можно использовать встроенную камеру смартфона. А если хочется вид от третьего (Есть свои плюсы, например, больший радиус обзора) — на жёсткой фиксации вынести камеру назад сантиметров на 20 и чуть-чуть вверх. И с управлением не надо шибко мудрить, всё уже придумано до нас. Управление камерой (головой и пушкой, соответственно) с мыши, а телегой — независимо, с клавиатуры. {можно программно добавить скорость разгона и инерционность движения, чтобы не «с места в галоп» и тормозило постепенно}
Ну и как фееричное дополнение — управление с планшета. Получается более активное, но и более интересное. Допустим, под левым пальцем управление телегой типа «джойстик», под правым — выстрел и смена настроений, а поворот головы — за счёт встроенного G-датчика (или GPS. Или компаса. Смотря что подойдёт). А на экран, конечно же, изображение с камеры робота. Сделав несколько таких можно устраивать настоящий дефматч.
Если какие-то идеи заинтересовали — пишите мне, обсудим более подробно. Хотя обсуждать тут, наверное, для сообщества будет полезнее. ;-)
Думаю, будет интересно почитать про проект КиберЗона (roboforum.ru, офф. сайт).
Хммм… Интересная штука. Только мне не совсем нравится, что корпус полностью поворачивается. Хотелось бы, чтобы управление движением было независимое… Может, себе тоже такое хобби завести? ))
На сколько я читал, они и изначально были с поворотной головой.
Но выяснилась проблема: очень неудобно управлять неподготовленному оператору, он не может определить, в какую сторону повернуто туловище, в какую — тело.
В результате данную возможность оставили на светлое будущее.
Ага. В этом случае очень бы помогла «вынесенная камера». Из глаз — действительно сложно… если нет никаких меток.
Скажите, а можно использовать USB Host Shield без Arduino?

Идея в том чтобы управлять датчиками и моторами напрямую из Android смартфона.
Им должен кто-то управлять. Нет, теоретически, USB Host Shield можно прикрутить к другому контроллеру, но только если есть большой спортивный интерес. А так, он ориентирован именно на Arduino.
Мне кажется, Вашу задачу проще и дешевле решить именно с Arduino.
Если Вас беспокоят габариты решения в моём роботе, то посмотрите такой вариант: Arduino Mini + Bluetooth Module.
Я как раз жду именно из этого магазина такие штучки. Есть одна идея :)
Если надумаете, почитайте ещё тут. У Arduino Mini есть особенности.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации