Arduino:Библиотеки/Robot/Класс Robot/lineFollowConfig()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция lineFollowConfig()[1]

Меняет параметры того, как Arduino Robot движется по линии.

Используйте эту функцию, если при движении по линии возникают какие-то проблемы, или для того, чтобы увеличить скорость робота во время движения по линии.

Эта функция меняет «ПИД-алгоритм», чтобы робот мог предугадывать ошибки ИК-датчиков при анализе линии, по которой он движется, и соответствующим образом корректировать скорость своих колес (каждое колесо корректируется отдельно).

Более подробно читайте в примечании ниже.

Синтаксис

Robot.lineFollowConfig(KP,KD,robotSpeed,intergrationTime)

Параметры

KP  пропорциональный коэффициент. Тип данных  int
KD  дифференцирующий коэффициент. Тип данных  int
integrationTime  задержка перед каждым новым запуском алгоритма (в миллисекундах). Тип данных  int
robotSpeed  скорость моторов (в процентах) в диапазоне от «0» до «100». Тип данных  int

Что возвращает

Ничего.

Пример

#include <ArduinoRobot.h>
long timer;

void setup(){
  Robot.begin();
  Robot.beginLCD();
  delay(3000);

  Robot.lineFollowConfig(11,5,50,10);// задаем параметры ПИД-алгоритма
  Robot.setMode(MODE_LINE_FOLLOW);
  timer=millis();
  while(!Robot.isActionDone()){
    // каждые 5 секунд останавливает движение по линии на 3 секунды
    if(millis()-timer>=5000){
      Robot.pauseMode(true);
      delay(3000);
      Robot.pauseMode(false);
      timer=millis();
    }
    Robot.debugPrint(millis());
  }
  Robot.text("Done!",0,10,true);  //  "Готово!"
  while(true);

}
void loop(){
}

Примечание

В этой функции параметр KP отвечает за то, чтобы робот следил за линией, а KD – за ослабление колебаний робота.

Чтобы подобрать для этих параметров подходящие значения, потребуется, возможно, немного поэкспериментировать. Можно воспользоваться, к примеру, этой инструкцией:

  1. Выставьте KP на «5», а KD – на «0». Задайте какую-нибудь скорость. Параметр integrationTime выставьте на «10».
  2. Запустите робота по линии.
  3. Если робот съезжает с линии, увеличьте KP на единицу.
  4. Повторяйте третий пункт, пока способность робота придерживаться линии не достигнет предела.
  5. Увеличьте KD на единицу.
  6. Запустите робота и обратите внимание, не раскачивается ли он.
  7. Если раскачивается, увеличьте KD на единицу. Повторяйте это, раскачивание не снизится до предела.
  8. Если робот, наконец, не съезжает с линии и не раскачивается, значит, настройка завершена. Запишите эти значения, чтобы использовать их в будущем.

См.также

  1. setMode()
  2. pauseMode()
  3. isActionDone()

Внешние ссылки