Краб ходячий. Сколько серво?
- Войдите на сайт для отправки комментариев
Чт, 20/10/2016 - 12:52
Хочу сделать с ребенком Ходячую игрушку. От "робота на 2-х ногах" пришлось отказаться. слижком сложно.
Решили делать краба... Не понятно, хватит ли ему 4 ног, по 2 серво на каждую. Понятно, что ходить такое чудо будет только боком и повороты будут даваться с трудом...
У кого есть опыт?
Тут у их 3 серво а ногу... И сделано все на 3d принтере. Я же делаю все из дерева и хочу уложиься за выходные.
Сколько питания нужно серво? Если у меня 2 18650 акку для питания, как будет правильно запитать серво?
У нас есть опыт. 8 серв SG-90, ходит вполне себе бодренько, но только по полу. По ковру не могет. Максимальная скорость хода в режиме "хотьба" - 7..8 см/сек. В режиме "бегом" - примерно в 3 раза шустрее.
Хотьба - это когда он ноги переставляет по одной, оставляя 3 ноги как опоры. Бег - это когда переставляются 2 ноги одновременно и 2 оставшиеся в качестве опор одновременно продвигают корпус вперед, сдвигаясь назад.
Пока только одна проблема - сильная нехватка внутреннего питания Ардуино Мега2560 (макс 1А) на 4 опорных серводвигателя для конструкции на базе деталей Лего. Общий вес с батарейками - 550гр. Это очень много. Без батареек на USB-шнурке бегает вполне нормально.
Фото есть тут: http://arduino.ru/forum/proekty/lego-kirpich-iz-mega2560?page=1 пост №57.
по питанию: 2-х 18650 вполне хватит. Но подавать от них напрямую на сервы - сильно не рекомендую. У них предел озвучен как 6в, и в Сети видел что хорошо горят при уже 7.2в Нужен стабилизатор на 5-6в .. вот тоже ждем, заказали, заказ продлен до 15.12.2016 поставщиком.. :(
Спасибо за ответ. Классно выглядит. Только деталей на фото не видно. Лапы, просто что-то. Как на хеллоин...
Значит тоже так будем делать. А поворачивать он у вас умеет? Какой примерно радиус поворота?
Спасибо. придется поставить. Значит мне повезло что я в прошлом году 5 шт заказал. Использую. Надеюсь 1000мкф хватит что бы застабилизировать питание. У меня в другом проекте 1 серво+2 мотора. 2000мкф по 5 вольтам не хватает, хотя моторы от 9в запитаны. Ардуино начинает вешаеться как батарейки чуть чуть садятся. Синий зуб теряет связь... Надо поставить отдельное питание, да лень.
Программой не поделитесь?
Я хочу сделать дистанционное управление. Как лучше организовать управление? 4 кнопки: Шаг вперед/Шаг назад?
Какя техника: 433 передатчик? Bluetooth как-то очень не стабильно работает. Да и сыну придется телефон давать, как пульт...
https://www.youtube.com/watch?v=H7CxoVrw--8
Программой не поделюсь, по 2 причинам: 1) она писана ребенком на Ардублоке и выглядит "картинкой" .. не влезет. и 2) у него на компе сейчас "перестройка" - он себе переустановил виндовс и снес grub и теперь его Линукс - недоступен и пока он не наиграется в новую игрушку .. увы переставлять grub он "не планирует", а у меня на компе этой программы нет.
Он у нас не поворачивает пока ещё. Стабилизаторы ещё едут, посмотрел в местном магазе - 130руб/шт! Едет 10шт за 160руб или около того... А, в силу того что ходит он только со шнурком сделан пока вариант с узв. датчиком: идет вперед, если обнаруживает препятствие ближе 20см, то идет назад. И пока все.
На словах алгоритм хода шагом примерно такой: в лупе ноги переставляются вперед по очереди - левая передняя, правая задняя, правая передняя и левая задняя. У каждой ноги есть 4 положения: Gor1 = 45, Gor2=75, Gor3=105 и Gor4=135 градусов. Среднее положение ноги = 90грд. Движение вперед поднимает и переставляет очередную ногу в Gor1, а остальные 3 ноги одновременно переставляются каждая в свое положение, смещаясь на 1/3 "назад" без изменения высоты, т.е. как-бы продвигая корпус на 1/3 вперед. Есть специальная функция, которая вычисляет в какое положение должна пойти та или иная нога в этом цикле. При движении назад - все тоже самое, просто функция вычисляет "в обратной последовательности".
1 Шаг выглядит примерно так:
Левая-передняя нога - вертикальному мотору дается команда "поднять на 20градусов" и горизонтальному мотору положение Gor1. Одновременно:
Правая-задняя в положение Gor4, правая передняя - Gor3, левая задняя - Gor2
пауза на время смены положения моторами .. примерно 2мсек на градус.
Команда опустить левую переднюю ногу
пауза на опускание.
пересчет для следующей ноги. Шаг2:
Правая-задняя = Gor1, правая-передняя = Gor4, левая задняя = Gor3, левая передняя = Gor2; пауза; опустить; пауза; пересчитать.
.. и так "по кругу". Если нарисуете табличку куда и как должны вставать ноги, то обнаружите что все вычисляется крайне примитивно. :)
В начале цикла (то есть перед тем как двигать очередную ногу) стоит опрос узв. датчика и если он показывает что есть препятствие, то изменяется флаг "направление" и весь пересчет начинает двигать ноги в обратном порядке.
С поворотами примерно также, но пока все отложено. Управляющимися роботами с блютуза или как ещё - мы не заинтересовались. Видимо по причине того, что радиоуправляемыми машинками, танками и вертолетиками он наигрался лет в 5-7 ещё.
Делал шестинога, по 3 сервы в конечность. Первый был из листового алюминия 1.2мм, вырезал ручками и напильником.
https://www.youtube.com/watch?v=-mwq4Z3Wk48
Движение можно реализовать несколькими способами, простой - это как описали выше, у вас будет большая табличка значений каждой сервы в определенный момент времени, и из нее вы уже выбираете (программно) в зависимости от того что вым надо - вперед/назад/лево/право. Недостатком этого метода будет кривое и дерганное движение (плавность зависит от того сколько промежуточных значений вы запомните в табличке), проскальзывание ног, да и движения буду вперед/назад и если хватит терпения сделаете повороты.
Другой способ - правильный :). Вы используете правила инверсной кинематики (википедия для начала вам поможет), и делаете секвенсер движения, где для каждого сустава (сервы) вы высчитываете правильный угол относительно всей системы в текущий момент времени. Здесь вам понадобятся тригонометрические функции, в том числе и обратные (arctan особенно). В такой реализации вы можете уже свободно рулить роботом с помощью таких параметров, как скорость, длина и высота шага, плавность шагов. И параметром движения будет у вас вектор направления в пространстве и скорость, а там хоть по диагонали левой задней ногой вперед ходить можно.
В основном хобийные сервы питаются 4-6V, стабилизатор, опять таки, берется в зависимости от используемых серв. В хексе что на видео использованы сервы типа MG996, ток статики был 0.4А а в движении около 3А.
Сейчас восстанавливаю свой старый проект на Dynamixel AX-12. Там управление было с обыкновенного пульта управления для самолетиков Hi tech Eclipse 7, на приемник вешалась atmega8 и декодировала шим в команды. Сейчас планирую сделать все проще и универсальнее, пульт на ардуине мега или нано + NRF2401.
Ну и achest, не обижайтесь, но фраза "... и хочу уложиться за выходные." посмешила в исключительно позитивных эмоциях. :)
пару ссылок:
инверсная киниматика - вики
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B2%D0%B5%D1%80%D1%81%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B8%D0%BD%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0
PhantomX хексапод на Dynamixel'овских сервах (видео не мое), к сожалению то что пришлось забросить 4 года назад
https://www.youtube.com/watch?v=rAeQn5QnyXo
Сильно сомневаюсь что даже Мега2560 потянет полноценный алгоритм перемещения робота на базе инверсной кинематики .. или это будет "медленно и печально". Хотя посмотрел описание .. тот что на видео - Arbotix контроллер на базе .. ATmega644p забавно, но врядли он использует инверсную кинематику .. вот сверхбыстрые и мелкие серводвигатели - это да, заметно по видео и описаниям. :)
Еще как потянет, я тоже делал на atmega644p как и Arbotix, но у меня было со своим блекджеком и ... ) Причем арктангенс вычислялся полутаблично и в реалтайме на каждую серву, и паук бегал так быстро, что нарезанный 4мм акрил для ног оказался слабым местом и полопался.
Сервы Dynamixel AX-12а это не сверхбыстрые. У них есть много программных преимуществ по сравнению с обычными хоббийными, но они не особо отличаются железными характеристиками. Их плюсы это одна шина TTL на все сервы (вместо ШИМ для каждой сервы), куча удобных внутренних настроек в каждой серве и главное это измерение усилия (Torque) на серве. Но их минус это цена.
Вы зря не дооцениваете мегу2560, да и вообще AVR-ки. при 16мГц у вас практически 16 миллионов команд в секунду. Если еще и оптимизировать код, то останется время поуправлять освещением и температурой в тепличке :)
Это я - недооцениваю?!? :) Не, если иметь табличную тригонометрию, да ещё и в рассово-правильных целых числах - то согласен. Я имел ввиду прямые вычисления с использованием вещественных вычислений библиотечной арифметикой.
16Мгц - это реально много. Столько же было у IBM PC AT на 286-х и они тоже не все были с сопроцессорами, а ещё такая же тактовая была у Д3-28 (15ВМ-5 и т.д.) .. этот зверь ваще был 4-х битным и считал в "двоично-десятичном коде" тоже .. а между тем по тригониметрии уделывал "Электронику-60". Я на том споре выиграл пузырь водки в свое время. Забавно, что в Википедии не приведен набор команд "программного режима", есть только "режим работы калькулятора". И не отмечены главные достоинства системы команд: базово-индексная адресация: все данные программно адресовались от регистра "база данных", а программы можно было вызывать 3-я способами: "адрес от регистра программ", "абсолютный адрес из таблицы переходов" (табличный набор команд) и "укороченная метка процедуры". Последняя команда хоть и медленная, но также работала от регистра программ и её размер был 1 байт. Что позволяло реализовавывать "виртуальные методы" приравнивая регистр команд началу виртуальной таблицы объекта и иметь вызов "настраиваемой" процедуры стоимостью 1 байт - всего до 64 методов "на класс". А ещё был практически полноценный Print() одной байтовой командой, а ещё было 3 уровня прерываний (мгновенная смена контекста путем изменения базового адреса набора регистров) по нескольку сигналов на каждом .. :)
.. но. Не получится. Чтобы задействовать всю мощу 16Мгц, надо хорошо потрудится. Ардуино с её Wiring - это "за гранью возможного".
16Мгц - это реально много. Столько же было у IBM PC AT на 286-х...
Если точнее, то в IBM PC AT процессор работал на частоте либо 6 либо 8 МГц. Это позже появились "совместимые" на тактовых частотах 12 и 16 МГц. И, кстати, в системе команд не было ни одной инструкции, которая бы выполнялась за один такт. Единственное, по чему 286 существенно опережает AVR - это наличие аппаратного деления 32/16.