Jump to content

Search the Community

Showing results for tags 'pid'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

Found 1 result

  1. Zdravím, hledám nějakou matematickou funkci nebo vychytávku, která by mi pomohla, při zdolání čáry při vyšší rychlosti. Pro pohyb po čáře používáme PID regulátor. Který při správném nastavení konstant jede pěkně, ale bohužel pomalu a při zvýšení rychlosti se robot klepe jak osika. Vysvětlení: Celé to spočívá v tom, že zprvu přes senzor zjistíme hodnotu bílé a černé a to zprůměrujem (white+black/2) a vznikne nám "šedá", kterou by robot měl sledovat, takže jezdí po kraji čáry. Dále se počítá error (P), tj. vzdálenost od čáry (může být více na bíle, nebo více na černé --> tím se mění error), pak se počítá Integral, což je sečtení všech errorů dohromady, čímž robot ví, jaký tvar měla čára za ním a dokáže si odvodit, jak by měl pokračovat. A jako poslední se počítá Derivative. Který sečte vždy předchozí error s aktuálním, takže by měl dokázat předpovědět budoucí trasu. Z toho všeho se vypočítá zatáčka (turn), což je menšitel rychlosti jednoho z motoru, druhý jede vždy na 100%. turn = ((Kp * error) + (Ki * integral) + (Kd * derivative)); Kp, Ki a Kd jsou konstanty, které je potřeba zkoušením nastavit na optimální hodnotu, vlastně říkají, jak velký zřetel se má na jednotlivé části z PID regulátoru brát. Náš problém je v tom, že potřebujeme, aby turn házel jak malé hodnoty, tak velké. Ale jakmile se vzdálí od čáry, tak to skočí ihned z 0 na 22, což je strašně moc, takže okamžitě se sníží rychlost z jednoho motoru o 22, což samozřejmě přejede zase moc na černou a to má za následek klepání tam a zpět. Při zatáčkách by se nám zase hodily větší hodnoty, aby to při nejlepším dokázalo snížit i na nulu. (Ano, šlo by to jednoduchou podmínkou, ale pak už tam dáváte hodnoty "na pevno" a né vždy to jede tak jak má, nebo se to pořád klepe.) Takže ve zkratce potřebuji nějakou vychytávku nebo matematickou funkci, která dokáže malé hodnoty buď ještě zmenšit nebo neměnit a větší naopak ještě zvětšit. Bohužel nemám ještě tak vypracované myšlení, takže mě zatím nic nenapadlo. Pokud víte jak na to a je to složitější postup, uvítal bych kdyby jste mi to vysvětlili, jelikož nejsem nějaký genius v matematice, nebo mě alespoň navedli na správný směr. Za případné rady děkuji!
×
×
  • Create New...