Хочу рассказать о своем новом проекте, который наверняка заинтересует многих здешних читателей. Это робот-медведь.
Все началось с того, что когда-то давно я из условных спичек и желудей сделал хексапода. Попались на Алиэкспрессе сервы mg90 с очень большой скидкой («левые», насколько я понял), я купил их, особо не думая. Все остальное уже было и робот был довольно быстро изготовлен при помощи паяльника, ардуины, эпоксидного клея и алюминиевой трубки. Однако получилось не все так радужно, как я себе воображал — сервы маленькие и хлипкие, программный PWM для управления сервами на 12 каналов на ардуине хоть и вышел нормально, но занимал процентов 20-30 процессорного времени, в общем — не очень удачно все получилось, хотя и симпатично. Стоит на столе сейчас на работе для красоты.
Я сделал выводы и стал обдумывать нового робота, о котором и пойдет в статье речь.
Первое, с чем нужно было определиться, это то, чего я хочу. Хексапод — это уже не интересно, их множество в сети. Двуногий — это сложно и на классических сервах не сделать хорошо — люфты и хаотичные раскачивания у них огромные. Брать т.н. линейные приводы? Во-первых, очень дорого, китайцы предлагают нормальные линейные сервы по $100+, во-вторых, у них избыточная мощность и энергопотребление, а значит, нужно будет проектировать плату управления… ШД это вообще отдельная песня, потому что потребуется рассчитывать много элементов конструкции и делать их на производстве, что накладно и долго. От идеи двуногого робота отказался даже только по этой причине, не затрагивая проблемы его устойчивости. Колесные платформы и вся летающая братия вообще не интересовали, просто не лежит к ним душа.
Выбор пал на четвероногого. Тут уже можно применить классические robot servo, поскольку люфт не настолько страшен. Нашел на Али подходящие сервы, 15кг тяги, то есть с запасом, а есть еще и 25кг такие же. Разрисовал на бумажке, как я это вижу и представил, как это будет работать — все вроде красиво выглядело. Заказал сервы, сразу 30 штук, RDS3115MG. Начал думать над тем, как ими управлять — ардуино использовать не вариант совершенно, программный PWM это суровый такой костыль. В итоге поиск вывел меня к двум идеям: это 32х канальный PWM на каком-то микроконтроллере от дядюшки Ляо, и чип pca9685, на котором есть модуль для ардуино за авторством adafruit. Последнее я и выбрал, поскольку ковырять китайскую поделку на МК не хотелось, да и были сомнения в том, что 30 серв при пуске не пожгут дорожки на той плате, а стартовый ток там приличный — 8А предохранитель выжигает. На том же Али был найден клон модуля Adafruit pca9685, но уже полностью запаянный и по той же цене, что у автора. Заказал три штуки. Дождался, когда все будет у меня.
(на картинке упаковка из пяти серв плюс крепеж к ним)
Тут же, по рисункам на бумаге и модели в голове, из картонок и алюминиевой пластины был сделан прототип ноги:
Погонял его сервотестером, который слепил из ланчпада и LiPo-батареи тут же, работоспособность устроила.
Зато внешний вид не радовал глаз префекциониста, потому я полез в LibreCAD, сделал там чертежи всех нужных деталей и отдал знакомому на производство. За пару дней мне все изготовили, качество не ахти, но куда лучше и красивее хендмейда. На базе этих деталей было собрано две ноги, объединенные в один модуль. Туда же установил сразу два модуля pca9685 (что оказалось впоследствии излишним, но первый блин всегда комом) и прилепил ардуину для тестирования всего этого хозяйства.
Все включил, написал тестовую прошивку, погонял, порадовался за то, что оно двигается и при этом не испускает дым. Теперь встал вопрос: делать ему позвоночник или нет? Если делать, то выглядеть будет много круче, как настоящий зверь, и я попробовал его сделать. Даже запустил и поиграл, однако понял одну вещь — батареи и электронику при наличии позвоночника девать некуда, поскольку весь робот сгибается, как удав. Для промобразца робота это была бы не проблема — можно систему нарезать на модули, сделать ребра и подвесить внутри, но у меня-то нет такой возможности. В итоге, после размышлений и поисков вариантов полноценный позвоночник был выкинут, а всю тушку теперь занимает пластиковый ящик с электроникой и батареями.
Сам робот в конечном итоге выглядит так:
7 сервоприводов на ногу (всего 28), Arduino 2560, Starterkit HolaDuo с линуксом на борту (словил статику, попортился один USB и MiniPCI, потому использовать в плеере-стенде стало неудобно), датчики тока, две батареи — одна 2000 из негодного планшета для питания цифровой части, и одна 2200 LiPo 2S 25-50С для питания серв и электроники на ногах. Впоследствии, когда все будет протестировано, небольшая батарея силовой части будет заменена на что-то более емкое, ампер 10-15 этак, ящик позволяет. Головы у робота пока нет, и она будет в самую последнюю очередь, потому что это отдельный фронт работ.
Из сенсоров будет: акселерометры на каждой ноге, акселерометр+гироскоп+магнитометр на тушке, датчики веса на каждой ноге, из некоторых серв будет вытащен средний пин переменного резистора для отслеживания положения этих серв, будут стоять ультразвуковые датчики расстояния. Также будут усы, это самый мелкий пьезодинамик, леска от косилки и немного клея — на стенде это дело в сочетании с ардуино показало себя весьма интересно, но фоток не будет, так как стенд уже разобрал. Впоследствии, в голове, будет еще камера, динамик, микрофон, GPS, сотовый модем, но это уже тогда, когда будет готова тушка и API к ней.
Из софта пока что нет почти ничего. С ардуино-то проблем не возникнет, под нее сделать код — вопрос времени, пока тестировал — проекта три или четыре временных сделал в AS. С линуксом чуть сложнее. Только начал писать API на сях, но, поскольку на сях под линукс не писал ничего сложнее хелловорлда и пары мелких тулз, процесс идет небыстро, со спортивным гуглением и с изобретением велосипедов. Также, когда гонял еще две ноги в сборе, написал небольшую софтину на яве для калибровки серв, с явой дружу относительно неплохо:
Ход разработки софта и его ужасное качество можно глянуть на моем гитхабе, github.com/konachan700. Осторожно, там очень, очень много велосипедов и индусятины.
Работы еще — поле непаханное, но четкая цель уже есть. Цель: сделать робота-медвежонка, то есть впоследствии натянуть на эту механику няшную шкурку. Впереди самое интересное и самое сложное, написание софта. Но это, думаю, материал для отдельной объемной статьи.
Автор: Konachan700