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

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

Ничего.

Пример

 1 #include <ArduinoRobot.h>
 2 long timer;
 3 
 4 void setup(){
 5   Robot.begin();
 6   Robot.beginLCD();
 7   delay(3000);
 8 
 9   Robot.lineFollowConfig(11,5,50,10);// задаем параметры ПИД-алгоритма
10   Robot.setMode(MODE_LINE_FOLLOW);
11   timer=millis();
12   while(!Robot.isActionDone()){
13     // каждые 5 секунд останавливает движение по линии на 3 секунды
14     if(millis()-timer>=5000){
15       Robot.pauseMode(true);
16       delay(3000);
17       Robot.pauseMode(false);
18       timer=millis();
19     }
20     Robot.debugPrint(millis());
21   }
22   Robot.text("Done!",0,10,true);  //  "Готово!"
23   while(true);
24 
25 }
26 void loop(){
27 }

Примечание

В этой функции параметр 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()

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