roboforum.ru

Технический форум по робототехнике.

Экзоскелет "Крок"

Re: Экзоскелет "кРок"

robovan » 20 июл 2015, 18:13

Нашел такой пример
Код: Выделить всёРазвернуть
#include <Servo.h> 

Servo myservo;  // создаём объект для контроля сервы

int pos = 0;    // переменная для хранения позиции сервы

void setup()
{
  myservo.attach(9);  // серва подключена к 9-му пину
}


void loop()
{
  for(pos = 0; pos < 180; pos += 1)  // от 0 до 180 градусов
  {                                  // с шагом в 1 градус
    myservo.write(pos);              //
    delay(15);                       // ждём 15ms пока серва займёт новое положение
  }
  for(pos = 180; pos>=1; pos-=1)     // от 180 до 0 градусов
  {                               
    myservo.write(pos);               
    delay(15);                       
  }
}

Re: Экзоскелет "кРок"

Angel71 » 20 июл 2015, 18:53

а читать внимательней не пробовал? http://roboforum.ru/forum10/topic15622-15.html#p332347.
это
Код: Выделить всёРазвернуть
void loop(){
for (pos=20; pos<=160; pos=pos+1) {
  servo.write(pos);
  delay(servoDelay);
}
for (pos=160; pos>=20; pos=pos-1) {
  myPointer.write(pos);
  delay(servoDelay);
}

блин что? только myPointer не заменил на servo.

Добавлено спустя 4 минуты 33 секунды:
robovan писал(а):...
я так понял, что этот кусок кода описывает время которое нужно что бы повернутся серве на какой то угол?

http://roboforum.ru/forum10/topic15622-15.html#p332360
нет. там обьявление переменных и простенький цикл, в котором тебе нужно посмотреть сколько прошло времени и вычислить, на какой угол в этот момент должна быть повёрнута серва.

Re: Экзоскелет "кРок"

robovan » 20 июл 2015, 19:54

что что? Я вообще мало что понимаю из того что вы мне пишете. Не нужно так бурно реагировать))
Последний раз редактировалось robovan 17 авг 2015, 01:19, всего редактировалось 2 раз(а).

Re: Экзоскелет "кРок"

Angel71 » 20 июл 2015, 21:21

так пытайся вникать в написаное. нету у таких серв "плавно перемещайся туда-то", вот нет и всё. получает она управляющие импульсы и если условно и не вникать в тараканы электроники сервы, вращает она почти с одинаковой скоростью. плавно сам делай. твоя задача сводится к примитивнейшим математическим вычислениям и про то, что есть сервы, ардуины, программирование, можно особо не думать. абстрагируйся. у тебя есть числа - начальное, текущее и конечное положения. ещё есть текущее значение времени или время, прошедшее с какого-то момента, допустим с начала вращения сервы. ещё есть значение времени, за которое текущее положение должно изменяться от начального до конечного. вот смотришь сколько времени прошло и вычисляешь, чему должно равняться это текущее значение. хочешь, делай как в примере с millis. хочешь делай через цикл for. давай второй вариант разжую.
начальное положение 20, конечное 80. должно провернуться за одну секунду. допустим текущее значение должно меняться за 10 итераций. значит делишь 60 градусов и 1000 миллисекунд на 10. тогда будет примерно так
Код: Выделить всёРазвернуть
for(i=1; i<=10; i++)
{
  servo.write (20 + i * 6);
  delay(100);
}

за 20 итераций
Код: Выделить всёРазвернуть
for(i=1; i<=20; i++)
{
  servo.write (20 + i * 3);
  delay(50);
}

за 60 итераций
Код: Выделить всёРазвернуть
for(i=1; i<=60; i++)
{
  servo.write (20 + i);
  delay(17);
}

вот для своего кода примерно так и делаешь для каждой сервы. у тебя в последнем коде задаётся 4 положения, вот для нужных серв все 4 раза и делай такие циклы. примитивно, много кода, но для развития понимания нормально.
с millis всё тоже самое, просто смотришь сколько времени прошло и вычисляешь, в каком положении должна быть серва. с for ты просто сразу посчитал нужную задержку и на сколько положение должно было измениться на каждой итерации.

Re: Экзоскелет "кРок"

robovan » 20 июл 2015, 22:35

СПАСИБО!! завтра обязательно попробую:)

Добавлено спустя 2 минуты:
только код же исполняется последовательно, а мне нужно двигать сервами паралельно минимум 2 мя

Добавлено спустя 42 секунды:
и получается что оно пока одну серву не доведет до нужного угла другую не трогает

Добавлено спустя 3 минуты 21 секунду:
ну как то так

Re: Экзоскелет "кРок"

Angel71 » 20 июл 2015, 22:52

на одной сделай сначала двумя этими вариантами - с for и с while, в котором позиция на основе millis вычисляется. потом за две берись. если у тебя время, за которое должны несколько серв провернуться одинаково, значит вычисляешь на какой коофициент умножать и будет как-то так
for(i=1; i<=60; i++)
{
servo.write(20 + i);
servo2.write(20 + i * 1.05);
delay(17);
}
или пробуй придумать как ещё, вариантов много. сначала простые варианты, хоть в лоб и коряво. потом пробовать улучшать и усложнять.
код последовательно и что с того? перечитай предыдущую страницу. процессов несколько (движение сервы, прерывание таймера,...), они дискретны по времени и у каждого свой шаг времени. в прерывании управляющий сигнал 50 раз в секунду формируется. и т.д. времени на вычисления и вызов servo.write вагон и маленькая тележка. чуть позже в любом случае придешь к тому, что нужно будет не такой корявенький for делать и заранее вычислять, а на ходу определять, в какое положение должна стремиться серва и вычислять положение, допустим через тот же millis.

Re: Экзоскелет "кРок"

robovan » 20 июл 2015, 23:56

хм, интересный вариант

Добавлено спустя 7 минут 5 секунд:
Последний раз редактировалось robovan 17 авг 2015, 01:20, всего редактировалось 1 раз.

Re: Экзоскелет "кРок"

Angel71 » 20 июл 2015, 23:57

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

Re: Экзоскелет "кРок"

robovan » 21 июл 2015, 00:06

не, не отобрали)))

Re: Экзоскелет "кРок"

Angel71 » 21 июл 2015, 00:15

вот ты и спалился. стало быть делаешь шагающего робота с ружьишком. :crazy: :D

Re: Экзоскелет "кРок"

robovan » 21 июл 2015, 01:10

)))) ага проект "железный инвалид")))

Re: Экзоскелет "кРок"

dccharacter » 21 июл 2015, 02:39


Re: Экзоскелет "кРок"

robovan » 21 июл 2015, 11:58

знакомое видио)))

Добавлено спустя 2 минуты 19 секунд:
если бы задача кзоскелета только шагать то можно и так))) :D но нужны действия сесть, встать, шагагать, поворот при остановке. 8)

Добавлено спустя 22 минуты 44 секунды:
посмотрите внимательно это видео

Re: Экзоскелет "кРок"

robovan » 22 июл 2015, 15:29

решил использовать двигатели от стеклоподьемников.
Последний раз редактировалось robovan 28 ноя 2015, 01:52, всего редактировалось 1 раз.

Re: Экзоскелет "кРок"

robovan » 25 июл 2015, 22:04

кто нибудь пробровал такую систему? А то всвязи с фин. трудностями изготовление редуктора из покупных шестерней откладывается в дооолгий ящик :(

Добавлено спустя 33 секунды:
я думаю не будет ли сильно проскальзывать трос
Вложения
2015713205437.jpg


Rambler\'s Top100 Mail.ru counter