пятница, 26 апреля 2013 г.

Плавное движение ноги: fail

Просидел, наверное, вечера три, реализовывая алгоритм плавного движения ноги.

Идея была в том, чтобы исходя из имеющихся данных (это четыре точки в каждую из которых перемещается нога) добавить еще дополнительные точки, которые должны были бы сгладить движение и сделать его более плавным. Как это ни странно, но движение наоборот получились более дерганные. Изменения параметров, которые можно было поменять, тоже не принесло результатов. Поэтому пока что реализовывать плавность движения не буду. Оставлю это на будущее.

Но назвать это полным fail'ом тоже нельзя. Я несколько переписал программу шагания и теперь она стала меньше по объему и более проста по пониманию. Чисто внешне это никак не отразилось на скорости шагания ноги. Но работать потом с этим исходным кодом будет легче.

Что дальше. Пока что жду когда приедут заказанные ранее 10 сервомашинок. И, кстати, нужно будет дозаказать еще несколько. Есть еще пара ультразвуковых датчиков. Наверное нужно будет с ними разобраться, чтобы потом закрепить на будущего робота. На  далекое будущее была идея организовать управления роботом с помощью джойстика от Playstation 3. Джойстики эти работают по bluetooth, а для ардуино как раз продаются такие относительно недорогие модули. Но до этого еще далековато. 

пятница, 19 апреля 2013 г.

Нога робота: полный цикл шага

Закончил разработку алогоритма шага для ноги робота.

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

Минусы реализации: пока не нашел. :) Наверняка что-то выяснится в процессе тестирования уже на самом роботе.

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

Ну и видео, как всегда:


Что еще забыл упомянуть в видео. Намечается одна проблемка. Для управления одной ногой нужно три сервомашинки, а значит три канала передачи сигнала. Т.е. для шестиного робота - 18 каналов. У Arduino Uno, который я использую, доступны только 14. Я вижу два пути решения этой проблемы.

1. Купить последнюю топовую плату Arduino DUE, которая кроме самых разных новоротов, имеет 54 канала для ввода/вывода. Плюс такого метода: все на одной плате, точно такая же среда разработки, как и на Uno, большое кол-во свободных пинов для расширения и подключения разных датчиков, гораздо больше памяти по сравнению с Uno (32 кБ против 512 кБ). Минус только один - цена в 50$. В то время, как Uno покупаю за 12$.

2. К первой плате Uno подключить вторую аналогичную и подружить их между собой. Плюс такого решения - это минус предыдущего, т.е. цена. Минусы - необходимо будет разрабатывать систему коммуникации между платами, возможно разделять функциональность (одна плата - отвечает за движение, вторая за датчики), возможно как-то дробить код программы, чтобы вписаться в отведенных 32 кБ.

Пока что останавливаюсь на втором варианте. Тем более, что на днях как раз должны приехать две платы Uno.

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

пятница, 12 апреля 2013 г.

Прототип ноги робота: обратная кинематика

Просидел над этим примерно четыре вечера, но все-таки сделал то, что хотел.

Теперь конец ноги способен правильно позиционироваться относительно начала ноги зная координаты конца ноги. Не очень красиво звучит. :) Ну, в общем, на видео, наверное, будет понятнее:

понедельник, 8 апреля 2013 г.

Прототип ноги робота. Первое тестирование.

Буквально на следующий же вечер после того поста сделал все крепления для сервомашинок. На следующий день собрал ногу и начал все это дело тестировать.

Сначала сервомашинки питал от трех батареек ААА. При работе сразу трех напряжение падало до 3,6 - 3,8 вольта и сервоприводы начинали вести себя не адекватно. Поэтому начал питать все от 4-х аккумуляторов типа АА. Стало намного веселее.

По началу движение сервоприводов контролировал сразу из контроллера. Но хотелось большей интерактивности. А то получается, что задал какую-ту последовтельность движений и все на этом, ничего изменить нельзя. Поэтому решил, что было бы интересно управлять положением сервоприводов с помощью мыши. На arduino.cc нашел все необходимые примеры и ссылку на processing.org, с помощью последнего можно тоже писать простенькие программки, которые как раз могут посылать данные на arduino. Но там у меня возникли проблемы с правильной передачей данных и поэтому пришлось немного покалупаться. В конце концов все получилось и сервоприводы управлялись с помощью мыши. На видео можно глянуть:


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

И,  наверное, уже буду заказывать остальные 14 сервомашинок, потомучто добираться до меня будут они не меньше месяца.

четверг, 4 апреля 2013 г.

Крепление сервомашинки

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

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


Далее, как уже сказано в видео, планирую сделать еще два таких крепления и сделать из всего этого одну ногу.

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

Еще прочитал почти все уроки на сайте arduino.cc. Просто поражаюсь, насколько широкий спектр применения может быть у этого контроллера в союзе с разными платами расширения. Тут действительно ограничением будет только фантазия. 

вторник, 2 апреля 2013 г.

Еще один шестиногий робот

Вот еще один завершенный проект шестиногого робота.


Автор этого чуда - Matt Denton.

Как не трудно догадаться это его не первая работа. Мужик действительно помешен на шестиногих роботах.

Страница в Facebook'е посвященная именно этому двухтонному монстру - facebook.com/mantisrobot