Roman Dolejší DU-10 - Distance keeper and calibration framework#58
Open
rdolejsi wants to merge 1 commit intoGlobal-Classes-CZE:mainfrom
Open
Roman Dolejší DU-10 - Distance keeper and calibration framework#58rdolejsi wants to merge 1 commit intoGlobal-Classes-CZE:mainfrom
rdolejsi wants to merge 1 commit intoGlobal-Classes-CZE:mainfrom
Conversation
…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
This was referenced Sep 30, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.