roboforum.ru

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

Робот балансер

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Re: Робот балансер

Сообщение SkyStorm » 07 авг 2012, 01:01

Датчики на какой чувствительности работают?
Задержка в цикле 10мсек сильно нужна?
Никто кроме нас!!!
4Robots.ru - Все для роботов!
Аватара пользователя
SkyStorm
 
Сообщения: 2687
Зарегистрирован: 05 фев 2008, 15:33
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович

Re: Робот балансер

Сообщение Angel71 » 07 авг 2012, 01:02

шутка про неваляшку? хм.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Робот балансер

Сообщение Spin7ion » 07 авг 2012, 01:03

SkyStorm писал(а):Датчики на какой чувствительности работают?
Задержка в цикле 10мсек сильно нужна?


Гироскоп на низкой, аксель пробовал на высокой и низкой, не помогает. Задержка для серийного вывода
Аватара пользователя
Spin7ion
 
Сообщения: 20
Зарегистрирован: 11 май 2009, 17:39
Откуда: Москва
Skype: spin7ion
прог. языки: Java, PHP, C++
ФИО: Александр 7ion

Re: Робот балансер

Сообщение Dmitry__ » 07 авг 2012, 01:04

Какой отклик всей системы со всеми этими флоатами и "Serial.print("D:");" в цикле подсчета?
Ардуина ни разу не комп на 1000 мипс.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Робот балансер

Сообщение Spin7ion » 07 авг 2012, 01:11

Не замерял к сожалению. На что заменить флоат? И действительно ли сильно это на стаб льности скажется?
Аватара пользователя
Spin7ion
 
Сообщения: 20
Зарегистрирован: 11 май 2009, 17:39
Откуда: Москва
Skype: spin7ion
прог. языки: Java, PHP, C++
ФИО: Александр 7ion

Re: Робот балансер

Сообщение Dmitry__ » 07 авг 2012, 01:19

Так замерь :)
оставь только "Serial.print("D") и осциллом замерь время между пачками на serial out.
Если задержка больше 100 мс. так и не будет нормально балансировать
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Робот балансер

Сообщение Spin7ion » 07 авг 2012, 01:27

Понятно, осцила нету,придется компом. Есть ли у вас общие советы по оптимизации?
Аватара пользователя
Spin7ion
 
Сообщения: 20
Зарегистрирован: 11 май 2009, 17:39
Откуда: Москва
Skype: spin7ion
прог. языки: Java, PHP, C++
ФИО: Александр 7ion

Re: Робот балансер

Сообщение Dmitry__ » 07 авг 2012, 01:39

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

Re: Робот балансер

Сообщение Spin7ion » 07 авг 2012, 12:40

Скажите, а код pid вообще правильный?
Код: Выделить всёРазвернуть
float lastError=0;

float integral=0;

float updatePID(float current, float target){
   float dt=millis()-lastTime;
 
   float error=target-current;
        if(error>0.01){
        integral+=error*dt/1000;
        }
        integral=constrain(integral,-255,255);
   float derivative = (error - lastError)*1000/dt;

   float output=coeffP*error+coeffI*integral+coeffD*derivative;

   lastError=error;

   return constrain(coeffPID*output, -255, 255);
}
Аватара пользователя
Spin7ion
 
Сообщения: 20
Зарегистрирован: 11 май 2009, 17:39
Откуда: Москва
Skype: spin7ion
прог. языки: Java, PHP, C++
ФИО: Александр 7ion

Re: Робот балансер

Сообщение vvk » 07 авг 2012, 14:56

Spin7ion писал(а):Скажите, а код pid вообще правильный?
Код: Выделить всёРазвернуть
float lastError=0;

float integral=0;

float updatePID(float current, float target){
   float dt=millis()-lastTime;
 
   float error=target-current;
        if(error>0.01){
        integral+=error*dt/1000;
        }
        integral=constrain(integral,-255,255);
   float derivative = (error - lastError)*1000/dt;

   float output=coeffP*error+coeffI*integral+coeffD*derivative;

   lastError=error;

   return constrain(coeffPID*output, -255, 255);
}


Тут должно быть два ПИД-регулятора: один для удержания равновесия, другой для удержания робота в заданной точке (что бы не укатывался). Результаты обоих ПИД суммируются. Разумеется, на колесах должны быть энкодеры.
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Робот балансер

Сообщение Spin7ion » 07 авг 2012, 15:04

vvk писал(а):Тут должно быть два ПИД-регулятора: один для удержания равновесия, другой для удержания робота в заданной точке (что бы не укатывался). Результаты обоих ПИД суммируются. Разумеется, на колесах должны быть энкодеры.


К сожалению в конструкции не заложено использование энкодеров. Неужели без них нельзя балансировать? Пока только балансировать, без удержания точки.
Аватара пользователя
Spin7ion
 
Сообщения: 20
Зарегистрирован: 11 май 2009, 17:39
Откуда: Москва
Skype: spin7ion
прог. языки: Java, PHP, C++
ФИО: Александр 7ion

Re: Робот балансер

Сообщение vvk » 07 авг 2012, 15:28

vvk писал(а):Тут должно быть два ПИД-регулятора: один для удержания равновесия, другой для удержания робота в заданной точке (что бы не укатывался). Результаты обоих ПИД суммируются. Разумеется, на колесах должны быть энкодеры.


Да, и интегральная составляющая тут не нужна, она используется для доведения управляемой величины до требуемой точки, а здесь через эту точку робот и так все время проскакивает.
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Робот балансер

Сообщение Radist » 07 авг 2012, 18:52

За моторчики переплатили вдвое. Реклама вроде запрещена, намекну: внизу главной страницы есть список интернет-магазинов. А по настройке сказать мне нечего. Но видел я на ютубе ролик: два колеса, один мотор, аккум на шесте, а в качестве датчика - микрик с грузиком. Он инвертировал питание моторчика.
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Робот балансер

Сообщение Spin7ion » 07 авг 2012, 19:41

Я заменил фильтр на калмана, убрал задержки и поигрался с пид, не получается, что-то стоять. Может действительно на шесте груз повесить?
Аватара пользователя
Spin7ion
 
Сообщения: 20
Зарегистрирован: 11 май 2009, 17:39
Откуда: Москва
Skype: spin7ion
прог. языки: Java, PHP, C++
ФИО: Александр 7ion

Re: Робот балансер

Сообщение Angel71 » 07 авг 2012, 19:49

врямя замеряли?
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.След.

Вернуться в Наши проекты

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

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