roboforum.ru

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

Помогите с проектом quadruped

Re: Помогите с проектом quadruped

newbe » 05 фев 2015, 00:25

Собрал простенький прототип, пока что ноги будут двигаются в одной плоскости. Хочу немного разобраться с кодом для него. :)
Смотрел код для похожего проекта, пол дня потратил, Там все на многомерных массивах построено, пробовал подстраивать, менять, серво так выкручивало, что я решил свои эксперименты закончить. А когда робот построен, каким бы он ни был ужасным и не красивым, а созданное своими, руками таким не кажется (хотя он достаточно крепкий на удивление) возникает сильное желание уже начать действовать и как можно скорей. Начал писать свой код, он конечно очень примитивный, тяжело с ним работать, наверняка так даже не делается, все через циклы for. Чем дальше, тем больше надо запоминать переменных или это из за того что я не вставал часов 5 из за компа. Конечно очень круто было бы все на инверсной кинематике построить, но это пока не для моих знаний, формулы, все есть, все так на вскидку понятно и лекции читал разные, но для кода как это применимо пока не ясно. :no:

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

Мульти серво используетсЯ с амперки, на 18 серв, с горечя заказал.


#include <Wire.h>

#include <Multiservo.h>

// Название сервоприводов
Multiservo servo1;
Multiservo servo2;
Multiservo servo3;
Multiservo servo4;
Multiservo servo5;
Multiservo servo6;
Multiservo servo7;
Multiservo servo8;

int pos2 = 180; //Максимальное значение серв
int pos1= 0; //Минимальное значение
int s1 = pos2 - 155; //65 Изначальная стойка
int s2 = pos1 + 90; //0
int s3 = pos2 - 155; //65
int s4 = pos1 + 50; //40
int s5 = pos2 - 25; //65
int s6 = pos1 + 130; //40
int s7 = pos2 - 25; // 65
int s8 = pos1 + 95; //5
int z1; // переменные для цикла for верх
int z2;
int z3;
int z4;// for низ
int r1=70; //переменная хотьбы для изменения угла ног (for)
int t1=120;
int r2=90;
int t2=60;
int r3=90;
int t3=90;
int r4=110;
int t4=90;


void setup(){
Wire.begin();
Serial.begin(9600);
servo1.attach(15); // П В Зад
servo2.attach(2); // П Н Зад
servo3.attach(16); // П В Перед
servo4.attach(1); // П Н перед
servo5.attach(17); // Л В перед
servo6.attach(0); // Л Н перед
servo7.attach(14); // Л В зад
servo8.attach(3); // Л Н зад

servo1.write(s1); //больше разгиб
servo2.write(s2); //больше сгиб
servo3.write(s3); //больше сгиб
servo4.write(s4);
servo5.write(s5); //больше разгиб
servo6.write(s6);
servo7.write(s7); //больше сгиб
servo8.write(s8); //больше разгиб
delay(100);
}

void loop(){
while(Serial.available() == 0);
int val = Serial.read() - '0'; // Обратная cвязь
if (val == 1)
{
Serial.println(val);

// Правая задняя нога

for(z2=s2; z2<=t1; z2+=1){
servo2.write(z2);
delay(20);
}
for(z1=s1; z1<=r1; z1+=1){
servo1.write(z1);
delay(20);
}
for(z2=t1; z2>=s2; z2-=1){
servo2.write(z2);
delay(20);
}
for(z1=r1; z1>=s1; z1-=1){
servo1.write(z1);
delay(20);
}

// Правая передняя нога

for(z2=s4; z2<=r2; z2+=1){
servo4.write(z2);
delay(20);
}
for(z1=s3; z1<=t2; z1+=1){
servo3.write(z1);
delay(20);
}
for(z2=r2; z2>=s4; z2-=1){
servo4.write(z2);
delay(20);
}
for(z1=t2; z1>=s3; z1-=1){
servo3.write(z1);
delay(20);
}


// А вот проблемная часть, левая передняя нога, которая вобще не реагирует

for(z2=s6; z2<=t3; z2+=1){
servo6.write(z4);
delay(20);
}
for(z1=s5; z1<=r3; z1+=1){
servo5.write(z3);
delay(20);
}
for(z2=t3; z2>=s6; z2-=1){
servo6.write(z2);
delay(20);
}
for(z1=r3; z1>=s5; z1-=1){
servo5.write(z1);
delay(20);
}
}


delay(100);
}

Расположение задних ног, завтра поменяю скорее всего. И ещё кое что, сервы под малейшей нагрузкой начинают гудеть, к примеру когда я ставлю его на землю, видать токи гуляют, это нормально для серв? А так, когда пузом на коробке стоит, пока тестирую, все нормально.
Вложения
IMG_20150204_215025.jpg

Re: Помогите с проектом quadruped

newbe » 05 фев 2015, 15:53

Ну успел я даже толком ничего с ним поделать, как один хороший человек, наступил на него. :shock: Слава богам вся электроника цела, корпус пришлось практически полностью поменять. Одной паре лап изменил направление, думаю так будет устойчивее. Код сегодня нужно будет менять и потгонять :( Закажу сегодня скорее всего ещё 4 сервы, на ноги, пока дойдут, как раз разберусь с программной частью, надеюсь :roll:
Вложения
IMG_20150205_134427.jpg


Rambler\'s Top100 Mail.ru counter