Технический форум по робототехнике.
ilalexey » 05 сен 2018, 23:06
Dmitry__ писал(а):Всего одна жизнь, и она заканчивается...
есть такое.
купи на али компас. не, лучше сам сделай, а то подсунут не то направление

--------
..блин, только вчера серию "гинтама(174)" тематическую посмотрел.
Scorpio » 06 сен 2018, 03:43
Dmitry__ писал(а): Надо ось "х" не временем делать, а углом одной сервы, а "y" - углом второй сервы. Тогда пойдут закономерности.
Ну вот сделал те же картинки для наглядности:
И что нам это дало?
Dmitry__ » 06 сен 2018, 05:23
Scorpio писал(а):И что нам это дало?
Ну тут теперь информации вагон и маленькая тележка. Тут Штирлицу работы по анализу на год

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

И правильную:

Во-вторых, явно стало видно плохие начальные расположения рычагов для определенных отрезков. Самый показательный этот:
Добавлено спустя:Удалил текст, не учел что нельзя рычаги расположить под другими углами (выйдет за ограничения серв)
Добавлено спустя 7 минут 54 секунды:А последнюю картинку (в моем тексте) возможно нарисовать с другими начальными углами? Или первая серва упрется в ограничитель?
dimamichev » 06 сен 2018, 09:01
А может проверить очевидное, построить отрезок вдоль Y? Отношение 1 к 2 на графиках должно просматриваться в любых используемых координатах.
- Вложения
-

- Func21.jpg (22.45 КиБ) Просмотров: 1539
Scorpio » 06 сен 2018, 15:24
Dmitry__ писал(а):А последнюю картинку (в моем тексте) возможно нарисовать с другими начальными углами? Или первая серва упрется в ограничитель?
Недопонял, но вот сама
рисовалка для желающих.
dimamichev » 06 сен 2018, 16:24
Ну, вроде зависимость видна...
Такая копия получается, руки дрожат немного, потому что пульт-манипулятор влияет на свободу движения пустышки-фломастера + "кривизна серв".
Ну и в скетче с числами явно не всё точно (искажение в пропорциях).
- Код: Выделить всё • Развернуть
///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч с управлением через пульт на потенциометрах //////////////////////////////
#include <Servo.h> // подключение библиотеки Servo
Servo servo1;//указываем сервопривод основного поворота (при увел. угла - поворот рычага ВЛЕВО)
Servo servo2;//указываем сервопривод дополнительного поворота (при увел. угла - поворот рычага ВПРАВО)
Servo servo3;//указываем сервопривод подъёмника (при увел. угла - поворот рычага ВВЕРХ)
byte a=110;//начальный угол
byte b=113;
byte a03=120;
byte A; byte B; //переменные для текущих значений углов поворота сервоприводов
byte a3=a03;
byte n=30;// единица временного интервала
byte K;// флаг для триггерного режима управления подъёмом пера
void setup()
{
pinMode(8,INPUT); //кнопка опуслания пера
//Serial.begin(9600);
servo1.attach(5);// подключаем переменную servo к соответствующему выводу платы Ардуино
servo2.attach(6);
servo3.attach(7);
servo1.write(a);//начальная установка положения
servo2.write(b);
servo3.write(a03);
delay(1000);
}
//////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
///////////////////////////////////////////////////////////
if (digitalRead (8)==LOW&&K==0)//если кнопка рисования нажата
{pero(1);K=1;}
if (digitalRead (8)==HIGH&&K==1)//если кнопка рисования отпущена
{pero(0);K=0;}
///////////////////////////////////////////////////////////
A=map(analogRead(A0), 461, 713, 40, 115);//пересчёт значений углов поворота валов серв
B=map(analogRead(A1), 43, 306, 83, 160);
///////////////////////////////////////////////////////////
if (A>39&&A<116&&B>82&&B<161)// если полученные значения углов лежат в границах допустимых
{servo1.write(A);servo2.write(B);delay(n);}
///////////////////////////////////////////////////////////
}
//////функция поднимания-опускания фломастера (значения аргумента 0 и 1 соответственно)/////
void pero(byte k)
{
while (a3>85&&k==1)
{servo3.write(a3);a3=a3-1;delay(n/2);}if(k==1){a3=85;}
while (a3<a03&&k==0)
{servo3.write(a3);a3=a3+1;delay(n/2);}if (k==0){a3=a03;}
}
- Вложения
-

Scorpio » 06 сен 2018, 17:06
А выводы где?
dimamichev » 06 сен 2018, 17:33
Scorpio писал(а):А выводы где?
Да хрен её знает. Всё элементарно в режиме реального времени, как автоматически запоминать Ардуиной траекторию, чтобы манипулятор смог сам повторить через время, не знаю. Записывать в массив через интервал времени пары значений углов, если хоть один угол изменился.., на сколько хватит ресурса?
Scorpio » 06 сен 2018, 17:43
Желательно всеже не повторять, а научиться воспроизводить любую новую картинку, зная зависимости.
dimamichev » 06 сен 2018, 18:11
Scorpio писал(а):Желательно всеже не повторять, а научиться воспроизводить любую новую картинку, зная зависимости.
Плавная кривая вообще можетт не иметь единой формулы описания, хотя каждая точка имеет единственную пару углов указания (для конкретного манипулятора).
Scorpio » 06 сен 2018, 18:56
Видимо, единственно возможное решение - это разбивание кривой на отрезки (что мы и делали). Чем больше точек, тем плавнее аппроксимация. Но! У серв есть зона нечувствительности + несовершенство измерительного органа. Шаговик этих недостатков лишен. И в прямоугольной системе, зависимости получаются линейными. Т.е. достаточно конечных точек, чтобы нарисовать идеальную прямую.
Кстати, те же цифровые сервы dinamixel, по сути отличаются только качеством исполнения и продвинутым ПО. В ОС у них тот же несовершенный резистор.
Dmitry__ » 06 сен 2018, 19:00
Scorpio писал(а):Недопонял, но вот сама рисовалка для желающих.
Попробовал запустить под винХП (единственное что осталось на компе

) Естественно не пошло, говорит не win32. Но благодаря этой попытке снес раздел вин (2 года не ходил в венды) и отдал раздел 110 гигов линуху
Scorpio писал(а):Недопонял
Картинка с конечным углом 1-й сервы 71 град. Повернуть эту серву примерно до 180 град., а 2-я серва соотв. будет не в горизонте, а вертикально, и так нарисовать ту же линию?
Этот манипулятор может задавать нужную точку 2-мя наборами координат: Нарисовать 2 окружности с радиусами длин рычагов. Пересечения окружностей - 2 набора координат для нужной точки.
Scorpio » 06 сен 2018, 19:36
Так что ли:
Выворачивать манипулятор можно, но нецелесообразно. Поэтому будем считать, что любая точка - это лишь одно возможное положение манипулятора.
Dmitry__ » 06 сен 2018, 19:46
Scorpio писал(а):Так что ли:
А фиг его знает. Трудно обьяснять по телефону, жестикулируя руками

Ахренеть, попытался нарисовать, что хочу сказать, но в линухе не работал с редакторами, полез в вин в свой любимый pcad и понял, что я все забыл в нем
Нарисовал как смогла, любую точку можно задать 2-мя наборами координат. Центр верхней окружности - нужная точка. Радиусы окружностей равны длине соотв. рычага. Пересечения окружностей - единственные возможные координаты манипулятора. Синий манипулятор - 1-й набор координат, и 2-й манипулятор, что за цвет у 2-го манипулятора? Я в цветах не очень разбираюсь
dimamichev » 06 сен 2018, 20:04
Попробовал карандаш простой на листке вместо пустышки - манипулятор своеобразно повторил слово, растянул его чего то и загнул слегка.
Кнопку подъёма на пульте стержня желательно заменить "на с фиксацией", тогда гораздо легче учиться писать буквы. Можно такой сценарий для детей - "Пиши слово и Ардуняша за тобой будет повторять... У тебя, видишь, всё равно лучше получилось!"
Конечно, если бы через блютуз на смартфон после каждой буквы сигнал посылать, чтобы робот спрашивал "Какую букву написали с тобой?" - было бы полезнее.
- Вложения
-
