Skip to content

Roman Dolejší DU-10 - Distance keeper and calibration framework#58

Open
rdolejsi wants to merge 1 commit intoGlobal-Classes-CZE:mainfrom
rdolejsi:du-10-calibrate-and-distance-keep
Open

Roman Dolejší DU-10 - Distance keeper and calibration framework#58
rdolejsi wants to merge 1 commit intoGlobal-Classes-CZE:mainfrom
rdolejsi:du-10-calibrate-and-distance-keep

Conversation

@rdolejsi
Copy link

homework_distance_keeper - pokud zdetekuje překážku ve vzdálenosti 50cm, dorovná do 20cm a udržuje, error correction je implementována dopředu i dozadu, slope změny rychlosti je konfigurovatelný. Bohužel při velmi špatných baterkách a zadřených kolech trochu nedrží přímku :-)

homework_gen_wheel_validation_csv - vytvoří tabulku kalibrace, používá wheel_calibrator. V tomto PR je přepnut na aproximační variantu, která najde nejnižší pwm, změří ho a změří i nejvyšší pwm a dopočítá (v tuto chvíli lineárně) ostatní hodnoty. Tato varianta trvá cca 5 sekund. K dispozici je i kompletní kalibrace. Nové tabulky jsem nepřikládal, ale kód umí kompletně spočítat jak multiplikátor, tak shift - bez excelu.

Podpůrné třídy a jejich případné změny ze starších verzí:

  • wheel - ovladač kola, dostává injected multiplikátor (a), tak i shift (b) - ať už konstruktorem nebo kalibrací
  • wheel_speedometer - měří rychlost a poskytuje přepočty jednotek
  • wheel_calibrator - realizuje celou kalibraci a výpočet multiplier a shift (a, b), umí jak všechny rychlosti, tak lineární aproximaci mezi nejpomalejší a nejrychlejší
  • wheel_driver - má připojený calibrator, ale umí ho odpojit (v případě problémů s pamětí)
  • sonar - poskytuje sonarová data

Závěrem bych chtěl přiznat, že kalibraci jsem opravdu ladil dlouho (a opravil hodně, fakt hodně chyb v mém starším kódu, vlastně kompletně přepsal řízení kol na radiány a všechny konverze - byly všechny špatně), ale v samozřejmě vidím nedostatky u distance keeperu:

- kola nejsou navzájem propojena. Sice se snažím držet nějakou referenční cílovou rad_sec rychlost a vybírat pwm podle předem zadaných přepočtů (multiplier, shift), ale už teď vidím, že to není v pořádku. Ve finále by asi bylo lepší počítat odjeté ticky a spřáhnout kola tak, aby se vzájemně ovlivňovala a dorovnávala. To bude můj cíl do budoucna.
- měření rychlosti pokulhává - při zapnutém debugu je vidět, že mi rychlosti hodně, hodně kolísá - přesto, že jedou kola stálým pwm. To musím vyřešit.

.. to ale již v dalších úkolech 😉 ..

Btw.: pokud bude snaha nahrát můj kód do Microbitu, budeš potřebovat minifikaci. Několik řešení bylo prezentováno na Discordu, pro Linux jsem přidal jedno s pomocí Gradle v nedávných dnech, funguje velmi spolehlivě a dělá i merge + upload výsledného souboru.

…rad_sec as primary speed control, pwm_multiplier and pwm_shift are available to use

DU-10: Distance keeper - full implementation, future versions might need to do better wheel-to-wheel compensations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant