Skip to content

Roman Dolejší DU-11 Carrot chaser#62

Closed
rdolejsi wants to merge 2 commits into
Global-Classes-CZE:mainfrom
rdolejsi:du-11-target-chaser
Closed

Roman Dolejší DU-11 Carrot chaser#62
rdolejsi wants to merge 2 commits into
Global-Classes-CZE:mainfrom
rdolejsi:du-11-target-chaser

Conversation

@rdolejsi

@rdolejsi rdolejsi commented Oct 6, 2024

Copy link
Copy Markdown

PR obsahuje jak kód, tak minifikační build skripty. Kód samotný je v prvním commitu.

Základní charakteristiky:

  • Robot běží ve třech režimech: follow, scan, turn, přepína se dle potřeby
  • ovladač kol i sonar scanner jsou neblokující, volané bez sleepu (sami si volí, jak se občerstvují)
  • Otáčení a jeho dokončení je realizováno logikou kol, hlavní kód jen počká, až je pwm opět 0
  • Sonar provádí scan ve dvou režimech: widening, full
    • po ztrátě cíle běží ve widening módu - s rozšiřující se roztečí od výchozího úhlu (vpravo o pár stupňů, vlevo, ..)
    • pokud není nic nalezeno v celém spektru, scanner se přepne do módu full (left-right-left)
    • cíl je hledán do vzdálenosti 0.6m
    • nalezený cíl musí být alespoň 2x potvrzen (eliminace chyb)
    • sonar má nastavenou periodu operací 125ms (rozumná rychlost, ne moc splašené, ale rozumně responzivní)

Změny ve frameworku (viditelné, když porovnáme kód s předchozím úkolem dodaným jako PR#58:

  • komplet přepsaná detekce rychlosti kol (+ speedometer -> encoder)

    • místo historie posledních pěti je rychlost vypočítávána při každém tiku nebo při náběžné hraně (dle zvoleného režimu)
    • je dopočítávána i průměrná rychlost po sobě jdoucích tří ticků (jen jednoduchý algoritmus)
    • jsou opraveny hraniční stavy, kdy nedostáváme žádné ticky nebo kdy ticky jdou moc často po sobě
  • kód výrazně zjednodušen kvůli paměti, nepotřebné metody zrušeny

    • velké množství zkrácených proměnných
    • zprostředkující agregační metody nad koly ve wheel_driver zrušeny, main kód ovládá kola jako .left a .right
    • všechny jednoduché get_ nahrazeny přímým přístupem na proměnné (to bych normálně nedělal)
    • opravena logika počítání obvodu kola - opravdu jsem změřil kolo papírovým metrem
  • jednotky unifikovány na _us, m/sec a rad/sec napříč celým frameworkem

  • komplet implementace Sonar scanneru

Zároveň jsem učesal celý projekt, rozpadl jednotlivá obslužná chování robota do nezávislých main_* logik, které volají framework a při buildování vybírám jen soubory, které jsou opravdu použité, abych šetřil paměť robota. Vše pohromadě je vidět v mém repozitáři, v branchi work, adresář robot-core/.

@mudrole1

mudrole1 commented Nov 3, 2024

Copy link
Copy Markdown
Collaborator

napsala jsem ti i na Google Classroom, tak jeste tady, mas to moc krasne. Koukala jsem do kodu a je to pekne citelny a pochopitelny. necham se inspirovat do meho vzoroveho reseni :)

@mudrole1 mudrole1 closed this Nov 3, 2024
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.

2 participants