roboforum.ru

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

Вопросы новичка.

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: Вопросы новичка.

Сообщение ilalexey » 05 сен 2018, 23:06

Dmitry__ писал(а):Всего одна жизнь, и она заканчивается...

есть такое.
купи на али компас. не, лучше сам сделай, а то подсунут не то направление :)
--------
..блин, только вчера серию "гинтама(174)" тематическую посмотрел.
Аватара пользователя
ilalexey
 
Сообщения: 3202
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: Вопросы новичка.

Сообщение Scorpio » 06 сен 2018, 03:43

Dmitry__ писал(а): Надо ось "х" не временем делать, а углом одной сервы, а "y" - углом второй сервы. Тогда пойдут закономерности.

Ну вот сделал те же картинки для наглядности:
Func21.jpg

Func22.jpg

Func23.jpg

Func24.jpg

Func25.jpg

Func61.jpg

И что нам это дало?
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение Dmitry__ » 06 сен 2018, 05:23

Scorpio писал(а):И что нам это дало?

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

Добавлено спустя:
Удалил текст, не учел что нельзя рычаги расположить под другими углами (выйдет за ограничения серв) :oops:

Добавлено спустя 7 минут 54 секунды:
А последнюю картинку (в моем тексте) возможно нарисовать с другими начальными углами? Или первая серва упрется в ограничитель?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Вопросы новичка.

Сообщение dimamichev » 06 сен 2018, 09:01

А может проверить очевидное, построить отрезок вдоль Y? Отношение 1 к 2 на графиках должно просматриваться в любых используемых координатах.
Вложения
Func21.jpg
Func21.jpg (22.45 КиБ) Просмотров: 1297
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 06 сен 2018, 15:24

Func10.jpg

Dmitry__ писал(а):А последнюю картинку (в моем тексте) возможно нарисовать с другими начальными углами? Или первая серва упрется в ограничитель?

Недопонял, но вот сама рисовалка для желающих.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение 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;}
  }
Вложения
IMG_7448.JPG
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 06 сен 2018, 17:06

А выводы где?
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 06 сен 2018, 17:33

Scorpio писал(а):А выводы где?

Да хрен её знает. Всё элементарно в режиме реального времени, как автоматически запоминать Ардуиной траекторию, чтобы манипулятор смог сам повторить через время, не знаю. Записывать в массив через интервал времени пары значений углов, если хоть один угол изменился.., на сколько хватит ресурса?
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 06 сен 2018, 17:43

Желательно всеже не повторять, а научиться воспроизводить любую новую картинку, зная зависимости.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 06 сен 2018, 18:11

Scorpio писал(а):Желательно всеже не повторять, а научиться воспроизводить любую новую картинку, зная зависимости.

Плавная кривая вообще можетт не иметь единой формулы описания, хотя каждая точка имеет единственную пару углов указания (для конкретного манипулятора).
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 06 сен 2018, 18:56

Видимо, единственно возможное решение - это разбивание кривой на отрезки (что мы и делали). Чем больше точек, тем плавнее аппроксимация. Но! У серв есть зона нечувствительности + несовершенство измерительного органа. Шаговик этих недостатков лишен. И в прямоугольной системе, зависимости получаются линейными. Т.е. достаточно конечных точек, чтобы нарисовать идеальную прямую.
Кстати, те же цифровые сервы dinamixel, по сути отличаются только качеством исполнения и продвинутым ПО. В ОС у них тот же несовершенный резистор.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение Dmitry__ » 06 сен 2018, 19:00

Scorpio писал(а):Недопонял, но вот сама рисовалка для желающих.

Попробовал запустить под винХП (единственное что осталось на компе :)) Естественно не пошло, говорит не win32. Но благодаря этой попытке снес раздел вин (2 года не ходил в венды) и отдал раздел 110 гигов линуху :D

Scorpio писал(а):Недопонял

Картинка с конечным углом 1-й сервы 71 град. Повернуть эту серву примерно до 180 град., а 2-я серва соотв. будет не в горизонте, а вертикально, и так нарисовать ту же линию?
Этот манипулятор может задавать нужную точку 2-мя наборами координат: Нарисовать 2 окружности с радиусами длин рычагов. Пересечения окружностей - 2 набора координат для нужной точки.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Вопросы новичка.

Сообщение Scorpio » 06 сен 2018, 19:36

Так что ли:
Func11.jpg

Выворачивать манипулятор можно, но нецелесообразно. Поэтому будем считать, что любая точка - это лишь одно возможное положение манипулятора.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение Dmitry__ » 06 сен 2018, 19:46

Scorpio писал(а):Так что ли:

А фиг его знает. Трудно обьяснять по телефону, жестикулируя руками :)
Ахренеть, попытался нарисовать, что хочу сказать, но в линухе не работал с редакторами, полез в вин в свой любимый pcad и понял, что я все забыл в нем :cry:

Нарисовал как смогла, любую точку можно задать 2-мя наборами координат. Центр верхней окружности - нужная точка. Радиусы окружностей равны длине соотв. рычага. Пересечения окружностей - единственные возможные координаты манипулятора. Синий манипулятор - 1-й набор координат, и 2-й манипулятор, что за цвет у 2-го манипулятора? Я в цветах не очень разбираюсь :oops:

1.GIF
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Вопросы новичка.

Сообщение dimamichev » 06 сен 2018, 20:04

Попробовал карандаш простой на листке вместо пустышки - манипулятор своеобразно повторил слово, растянул его чего то и загнул слегка.
Кнопку подъёма на пульте стержня желательно заменить "на с фиксацией", тогда гораздо легче учиться писать буквы. Можно такой сценарий для детей - "Пиши слово и Ардуняша за тобой будет повторять... У тебя, видишь, всё равно лучше получилось!"
Конечно, если бы через блютуз на смартфон после каждой буквы сигнал посылать, чтобы робот спрашивал "Какую букву написали с тобой?" - было бы полезнее.
Вложения
IMG.jpg
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Пред.След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron