суббота, 4 января 2014 г.

Слабо ходим, веселей танцуем

Итак, робот пошел.

Но пошел очень слабо. Все-таки по весу оказался он очень тяжелым и ноги слишком длинные. Как результат - очень большая нагрузка на ноги и шаги больше напоминают движения какого-то умирающего существа. Но давайте расскажу по-порядку.



Если помните, раньше ноги робота я просто крепил к деревянному бруску. Брусок был не очень длинный, поэтому получилось прикрепить только две ноги на одну сторону.

Для испытаний нужно было сделать какой-нибудь каркас или раму. Для этого в строительном магазине купил лист пластика толщиной где-то 4мм. Ну знаете, такой белый еще с двух сторон наклеен полиэтилен, чтобы лист гладенький был. Думал, ну, наверное, современный прочный материал... А пока вырезал лобзиком простые прямоугольники, пластик этот сломался в двух местах. В общем на практике этот пластик оказался совершенно никчемным. Даже после того как все вырезал, сделал раму и прикрутил сервомашинки, он умудрился треснуть в нескольких местах как стекло. Не знаю, возможно он предназначен исключительно для лазерной резки и совершенно не переносит никаких нагрузок, но использовать его я точно больше не буду.

В результате раму сделал из простой фанерки. На ней разместил плату, место для крепления аккумулятора и, конечно, все шесть ног. В итоге получилось довольно тяжело. Тут я уже начал сомневаться, что мой робот устоит на ногах. Без питания так оно и оказалось на самом деле - робот ложился на брюхо.

Чтобы все сделать красиво заказал на dx.com монтажные платы, чтобы возле каждой ноги сделать разъемы для подключение сервомашинок. Согласно штрихкоду посылку выслали 5 ноября 2013 года и посылка все еще не доехала даже до Беларуси. В то время, как другую выслали неделей позже и я ее уже забрал с почты. Поэтому что-то подсказывает мне, что первую посылку я так и не получу. По этой причине для подключения питания сервомашинок решил использовать обычную пластиковую плату для макетирования. (На днях сниму видео и будет более понятно о чем говорю.)

Дальше я начал настраивать каждую из ног. Тут тоже пришлось довольно долго повозиться. Но зато я подружил Adobe Flash на компьюетер (я работаю программистом, пишу на Flex/Flash) и ардуино, переписал математику по расчету положения одной ноги по координатам, выяснил, что последовательный порт в моей плате ардуино работает не совсем корректно и, в конце концов, настроил все ноги. Потом настала пора первых испытаний.

Сначала я решил посмотреть, устоит ли робот, если просто подать питание на сервомашинки и поставить его на пол. Оказалось, что устоит. Тихонько треща нагруженными сервами робот все-таки стоял.

Дальше, конечно же, захотелось, чтобы он накоц зашагал. Понятно, что для устойчивого движения необходимо, чтобы как минимум три ноги соприкосались с землей. Ну и, естественно, эти три ноги не должны быть с одной стороны робота. :) Поэтому мой первый алоритм движения шагом как раз и состоял в том, чтобы робот передвигался схемой 3х3. Т.е. три ноги в воздухе, другие - на земле. Потом наоборот. Вот и получилось, если на шести ногах робот кряхтел, но стоял, то на трех уже удержаться не мог. Т.е. когда три ноги отрывались от земли, чтобы переместиться в новую позицию, робот на оставшихся трех просидал так, что те три, что воздухе опять касались земли. Поэтому пришлось думать о другом алгоритме шага. Нарисовал диаграмму для шести ног таким образом, чтобы в воздухе находилась только одна нога. Тут нужно не забывать, что пять ног на земле не просто стоят на месте, а перемещают всего робота вперед. И вот пока пять ног перемещают робота, шестая поднимается и перемещается в новую позицию. Когда она косается земли - другая нога поднимается и перемещается в новую позицию и так далее. При таком раскладе робот наконец зашагал (на днях сделаю видео). Но зашагал с минимальным перемещением. Кроме того спустя примерно 20-30 секунд провода в месте подключения аккумулятора к макетной плате начали весьма ощутимо греться, а потом даже немножко вонять. Ток не мерил еще, но понятно, что для одновременно работающих 18 сервомашинок он будет немаленький.

После этого ковыляния я несколько приуныл. Хотелось хоть как-нибудь реабилитироваться. Поэтому решил сделать что-то вроде примитивного танца. Типа: вперед-назад-вперед-назад-вверх-вверх-вниз-вниз. В данном случае все ноги оставались на земле, а значит робот точно не сядет на брюхо. В результате "танец" удался. Видео скоро будет.

И сразу после простенького танца захотелось чего-нибудь уже под музыку. Тем более, что это интереснее и веселее, чем просто робот, который ходит. И вот этим я сейчас и занимаюсь.

Для того, чтобы он затанцевал нужно чтобы очередность движений была синхронизирована с музыкой. Для этого сейчас делаю простенькое приложение, которое отображает простую модель моего робота и позволяет изменять положение туловища в разное время. Таким образом, я создам секвенцию движений под музыку, а мое приложение потом рассчитает положение каждой из ног. Полученные данные уже можно будет загружать в самого робота.

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

Во-первых, робот получился достаточно тяжелым. Отчасти это связано с тем, что для крепление сервомашинок я использовал достаточно толстую жесть.

А во-вторых, ноги робота получились очень длинные. В результате сервомашинки с трудом держали робота на ногах.

Эти две ошибки, а точнее недочеты, я, в принципе, не мог не допустить. Потому что использовал то, что было под рукой.

В новой версии робота будут существенные изменения. Во-первых, я планирую крепления всех сервомашинок распечатать на 3D-принтере, который не так давно начал собирать. Это, в свою очередь, позволит мне совсем по-другому сделать ногу для работа, уменьшить ее длину и, как следствие, уменьшить нагрузку на сервомашинку. Но будет это не очень скоро, т.к. собирать принтер начал совсем недавно.

В следующем посте расскажу про общий прогресс сборки принтера.

2 комментария: