
Уже второй месяц я собираю по вечерам автономного робота, которого зовут Frank. Почему? Не спрашивайте! Я знаю, что у каждого робота должно красиво расшифровываться имя, но я ничего еще не придумал. Если будут идеи — пишите в комментариях. Все началось достаточно давно. Мое увлечение нейронаукой, когнитивистикой, искусственными нейронными сетями и искусственным интеллектом привело меня к тому, что исследования алгоритмов в компьютере — это достаточно увлекательный процесс, но иногда хочется потрогать свое творение руками и посмотреть как оно ведет себя в реальной жизни.
Все это не очень вписывалось с уже существующими знаниями, так как по профессии я работаю в индустрии кино. Все пришлось учить с нуля, читать огромное количество литературы, сайтов и проводить большое количество экспериментов, чтобы достичь нужных результатов.
Так как половину времени я живу в Лос Анджелесе, а половину в Москве, то возможно некоторые ссылки будут не очень актуальны. С другой стороны, мне пришлось найти магазины для покупки электроники и там и тут, так как мои постоянные разъезды никак не влияют на желание изучать робототехнику. Поэтому, по возможности, я опубликую ссылки и на наши и на западные ресурсы. Возможно, это поможет и русским читателям и тем, кто читает Хабр за рубежом.

Началось все с выбора платформы, на основе которой можно было бы построить робота. На тот момент мне было все равно, будут ли у него ноги, колеса или другие способы передвижения. Я решил начать с одной из платформ компании Lynxmotion, но у них не было в наличии достаточного количество серво-моторов, чтобы отправить мне заказ. В тот момент я познакомился с русскими товарищами из компании Brain Corporation, которая находится в Сан Диего, и съездив к ним в офис, понял, что надо начинать с простого — Lego Mindstorms. Это достаточно простая платформа, понятная подросткам, но позволяющая программировать, при желание, на Python и C++.
У меня оставалась неделя в Лос Анджелесе до моего отъезда в Москву. На всякий случай, я заказал пару наборов из Lego Technic и собственно сам набор Lego Mindstorms NXT2.0. Почитав несколько интересных статей про Arduino и другие, похожие системы, я заказал несколько наборов, которые включали в себя компоненты для начинающих, серво моторы и крепления серво моторов для Lego.
Все детали пришли, и упаковав их в чемодан, я полетел в Москву, собирать своего первого робота.

Поначалу, казалось все должно быть очень просто, но на практике, собрать четырех-колесного монстра с возможностью рулить всеми колесами, полным приводом и подвеской, позволяющей ездить по бездорожью, за три недели у меня не получилось. Моторы, которые идут в наборах Lego Technic, достаточно компактные. С ними можно действительно собрать вездеход, но подключить его к Mindstorms не так просто — нужны дополнительные кабели и переходники. Моторы от Mindstorms такие огромные, что собрать компактного «Фрэнка» было просто невозможно. Пришлось сделать все еще сложнее и интереснее.
Я решил использовать моторы HiTech вместо тех, что шли с Lego, и вместо NXT Brick использовать другой контролер — Arduino Uno. Подключив серво моторы к PWM выходам Arduino, и проверив, что все работает, я начал заново собирать своего «Фрэнка». Моторы вместе с креплением все еще были достаточно большие, но измененный форм-фактор, позволил их разместить в корпусе внедорожника. Пришлось пожертвовать подвеской, но в будущем, когда дойдет время до езды на улице, я что-нибудь придумаю.


И так, платформа собрана. Пришло время делать самое интересное — напичкать Фрэнка электроникой и заставить его двигаться. Для тестирования того, что все компоненты работают как надо, я взял Arduino, обычную плату для прототипирования. У каждого серво-мотора есть три кабеля — красный, черный и желтый. Черный кабель это земля. При подключение Arduino необходимо, чтобы земля у Arduino и серво-моторов была замкнута между собой. Поэтому все черные кабеля от серво-моторов, grd выход из Arduino и минуc у батареи, которая питает серво-моторы мы соединяем вместе. Далее, плюс серво-моторов (красный кабель) и плюс батареи мы соединяем вместе, но не подключаем к Arduino. Для того, чтобы Arduino функционировал без проблем, необходимо изолировать питание серво-моторов и питание Arduino. Для этого я использую разные источники питания для моторов и Arduino. Если питание одно, то между плюсом и землей у каждого серво-мотора надо припаять конденсатор — это избавит от лишнего «шума» в плате.
Убедившись, что пресет «Servo->Sweep» в Arduino работает, я принялся спаивать небольшую схему на базе Arduino Proto Shield. Конечно, из-за того, что это был мой первый опыт с паяльником в руках — плату я благополучно угробил, не заметив, что некоторые контакты связаны с «землей», а значит и между собой. Теперь жду, когда придут новые платы для экспериментов.
На данный момент, это то, где прогресс с моими экспериментами остановился на сегодняшний день. Что я планирую делать дальше, когда придут дополнительные компоненты?
Итак! На этой неделе мне должны доставить 3 солнечные батареи по 3W каждая, две Arduino Proto Shield (на тот случай если я еще одну плату уничтожу), Li-Po батарея 2LIR18650-PCB-LD, Lipo Rider компании Seeedstudio.
Так же в наличии у меня остались различные ультразвуковые датчики, 2 CMOS камеры и BeagleBone Black. Что же из этого всего может получиться?
Солнечные батареи, Li-Po батарея и Lipo Rider будут обеспечивать автономную работу. При падении напряжения, робота можно будет переводить в «спящий» режим, пока батареи заряжаются.
Две камеры, ультразвуковые сенсоры и возможно лазерный дальномер (когда я придумаю достаточно дешевое решение) будут обрабатываться BeagleBone Black для построения «картины окружающего мира». Учитывая то, что процесс зрительного восприятия у людей многоуровневый (различные уровни наших нейронных сетей обрабатывают разные свойства изображения), то мне пришла идея использовать несколько плат BeagleBone Black или Parallela, соединенных иерархически. Каждая плата будет выполнять свой алг��ритм, максимально утилизирующий мощность процессора и количество свободной памяти, передавая данные дальше по цепочке для дальнейшей обработки. Таким образом, можно обрабатывать и другие сенсоры. В результате, получится большая сеть компонентов, которая, как живой организм, управляет автономным роботом.
Впереди увлекательное путешествие по сборке робота. Как только придут оставшиеся компоненты и все заработает, я напишу еще одну статью.
Теперь, что касается различных ресурсов, где я покупаю детали, электронику и тому подобное.
США:
1) Основной ресурс в Америке, как не удивительно это Amazon.com. Там можно купить все, что угодно.
2) Newark.com — тут можно купить любые компоненты для микросхем.
3) Lynxmotion — тут можно купить запчасти и готовые роботы.
4) Mindsensors — различные сенсоры для Lego и других платформ. Есть много чего для Arduino.
5) Trossen Robotics — пожалуй, самая крутая платформа для разработки роботов. Тут же можно купить серво-моторы, запчасти, микросхемы и так далее.
Россия. Тут все немного хуже — очень надеюсь на вашу помощь и рекомендации, так как кроме одного магазина не смог найти что-то достойное, с большим выбором и доставкой.
1) Electronshik — Единственное, что я пока нешел. Тут есть далеко не все, но все, что мне нужно было на данный момент.
