Roman Dolejší DU-10 - Distance keeper and calibration framework #58
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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í:
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.