DTC Phase 2
jak zvýšit šance na přežití?
DARPA přišla s novou „výzvou”/soutěží: DARPA Triage Challenge. Triage znamená třídění raněných u hromadných neštěstí, přírodních katastrof nebo na bojišti. V zásadě jde o to, že podle úrovně zranění šance na přežití rychle klesá. Mluvíme o zhruba o prvních 15 minutách. Naděje, že v tomto čase bude dostatek kvalifikovaných doktorů je mizivá. Tak nastupují roboti a AI. Update: 2/10/2025 — DTC Systems 2 - Vier Minuten
- https://triagechallenge.darpa.mil/ — oficiální stránky soutěže
DARPA Triage Challenge má podobný časový rozvrh jako již ukončená SubT Challenge.
Soutěž bude trvat 3 roky, jsou tři základní kategorie (Primary System, Primary Virtual a Secondary Data) a účastníci
jsou jak DARPA sponzorované týmy, tak self-funded týmy.
Obsah
- 241213 - Pravidla - Event 2
- 250103 - NDAA 2025
- 250319 - Virtuál zrušen
- 250629 - DTC Systems 2 - Robotika
- 250708 - DTC Systems 2 - W27 (zbývá 12 týdnů) - skryté předpoklady
- 250713 - DTC Systems 2 - W28 (zbývá 11 týdnů) - Helena, Audio, grid_map, ...
- 250720 - DTC Systems 2 - W29 (zbývá 10 týdnů) - nedotažené konce
- 250727 - DTC Systems 2 - W30 (zbývá 9 týdnů) - grid map, pose, audio
- 250803 - DTC Systems 2 - W31 (zbývá 8 týdnů) - Matty UGV qualified!
- 250810 - DTC Systems 2 - W32 (zbývá 7 týdnů) - ESP32 IMU FW
- 250817 - DTC Systems 2 - W33 (zbývá 6 týdnů) - Skupina 2, 10 týmů
- 250824 - DTC Systems 2 - W34 (zbývá 5 týdnů) - Dovolená
- 310831 - DTC Systems 2 - W35 (zbývají 4 týdny) - Verze 0
- 250907 - DTC Systems 2 - W36 (zbývají 3 týdny) - Čtyřlístek a STIX1
- 250914 - DTC Systems 2 - W37 (zbývají 2 týdny) - PolyMatty ver1
- 250921 - DTC Systems 2 - W38 (zbývá týden) - Hardware freeze
- 250926 - DTC Systems 2 - W39 - Hvězdná pěchota odlétá ...
- 250929 - DTC Systems 2 - Systems Team Orientation
- 250930 - DTC Systems 2 - Fully Autonomous Insane League
- 251001 - DTC Systems 2 - Noční přepadení (D-Day1)
- 251002 - DTC Systems 2 - Vier Minuten
Blog
13. prosince 2024 — Pravidla - Event 2
Pravidla pro druhý rok DTC jsou konečně oficiální (*):
- System Competition
- Data Competition
- (pravidla pro Virtual Competition ještě nějsou k dispozici)
Asi největší překvapení pro System je, že se DARPA rozhodla už v tomto roce přejít na plnou autonomii!
(to skoro stojí za screenshot, jak nevinné přídání slůvka not změní úplně charakter soutěže)
Také „noční jízda” bude asi zábava: It is anticipated in Challenge 2 that there will be a night course.
Aby šokované týmy trošku uklidnili (ono už pootevření „zadních vrátek” že tým bude moci number of times
zasáhnout je výrazné zjednodušení oproti první verzi pravidel pro rok 2, kde nebyl zbytek modrého textu),
tak se i zvedá hladina odměn:
Workshop 2
- Event Qualification: 12/5/2024 - 1/5/2025 (konec za 3 týdny!)
- Event Date: 3/9/2025 - 3/15/2025 (březen!)
(*) — neoficiální alfa verze byla zveřejněna před týdnem na DTC fóru
(pro přístup je třeba login)
3. ledna 2025 — NDAA 2025
23. prosince 2024 president Biden podepsal National Defense Authorization Act for Fiscal Year 2025. Přišlo mi „vtipné”, že ani po několika dnech
není jasné, jaká jsou tedy omezení na UGV (Unmanned Ground Vehicle) v rámci DARPA Triage Challenge.
… ale už to pomalu chápu! Jen pro představu to má 794 stran …
AI to úplně růžově nevidí:
The National Defense Authorization Act for Fiscal Year 2025 (FY25 NDAA) includes several key restrictions and provisions specifically targeting unmanned ground vehicles (UGVs), particularly those manufactured by foreign entities, especially from China. Here are the primary restrictions:
Key Restrictions on UGVs
1. Prohibition on Procurement:
- The FY25 NDAA mandates a study and report on the Department of Defense's (DoD) use of Chinese-made UGVs. Following this assessment, it prohibits the procurement and operation of covered UGVs from foreign adversaries, particularly those identified as posing cybersecurity risks [1][2][3].
2. Supply Chain Risk Assessment:
- The Act requires the DoD to disassemble and analyze components of commercially available UGVs from foreign adversaries to identify supply chain risks. This includes a comprehensive evaluation of UGVs to enhance the resiliency of the domestic supply chain [3][4].
3. National Security Risk Review:
- A provision directs national security agencies to assess drones from companies like DJI and Autel Robotics, potentially leading to their inclusion on the Federal Communications Commission’s (FCC) Covered List if deemed a national security risk. This would prevent these companies from obtaining FCC authorization for new models [1][5].
4. Long-term Sunset Clause:
- Beginning one year after the enactment of the NDAA, the DoD is prohibited from procuring or operating UGVs manufactured by entities in foreign adversary countries. This aims to phase out reliance on potentially insecure technologies over time [3][4].
5. Increased Oversight and Accountability:
- The legislation emphasizes enhanced oversight regarding the procurement processes for UGVs and other unmanned systems, ensuring that any acquisitions align with national security interests [1][2].
These restrictions reflect a broader strategy to mitigate risks associated with foreign technologies in defense operations, particularly amid growing concerns over cybersecurity and supply chain vulnerabilities.
Citations:
- [1] https://www.auvsi.org/auvsi-applauds-fy-2025-ndaa-support-autonomy-uncrewed-systems-supply-chain-security
- [2] https://www.auvsi.org/auvsi-calls-congress-ban-dod-use-unsecure-autonomous-vehicles-national-defense-authorization-act
- [3] https://www.wiley.law/alert-NDAA-Provisions-Impacting-Governments-Contractors-and-Their-Supply-Chains
- [4] https://ucdrones.github.io/regulatory-updates.html
- [5] https://dronelife.com/2024/12/19/ndaa-fy25-key-takeaways-for-the-drone-industry/
19. března 2025 — Virtuál zrušen
Koukám, že už je ta informace oficiální:
After much consideration, we have made the difficult decision to discontinue the DARPA Triage Challenge Virtual Competition for Year 2.
This decision was not made lightly, and we understand the impact it will have on teams and the community.
… nejspíše to není poslední krok jak „ušetřit”, ale to uvidíme později …
29. června 2025 — DTC Systems 2 - Robotika
OK, asi je pomalu čas oprášit (nebo naopak zadupat do země) původní myšlenku, se kterou vznikla Matty série. Před čtvrtečním callem s DARPA
jsem si narychlo nastudoval ICD Systems, aneb komunikační protokol, jak reportovat
nalezené oběti. Stejně tak jsem si stáhl testovací server a přiohnul reportování z SubT:
(osgar) md@md-ThinkPad-P50:~/git/osgar-apps/dtc-systems$ python report_dtc.py Gas 0 0 0 Reporting: Gas Get Status b'{"clock":6.889369,"run":"Run2","team":"Test Team","user":"testuser"}' Report {'casualty_id': 1, 'team': 'Robotika', 'system': 'Matty M01', 'location': {'latitude': 10, 'longitude': 20, 'time_ago': 1}} b'{"run":"Run2","team":"Test Team","user":"testuser","system":"Matty M01","clock":8.900963, "report_id":"e2ca8f47-da17-4f9b-b258da52389ec7dd","report_timestamp":"2025-06-26T13:33:44.083908", "report_status":"accepted","casualty_id":1}' Traceback (most recent call last): File "report_dtc.py", line 128, inprint(score(artf_type, args.x, args.y, args.z)) File "report_dtc.py", line 104, in score report_artf(artf_type, x, y, z) File "report_dtc.py", line 63, in report_artf assert response.status_code == 201, response.status_code AssertionError: 200
… no asi by z toho úplně 2x nadšený nebyli, ale za mne je důležité "report_status":"accepted". Ono tedy během callu z nich vylezlo, že bude ještě
další meeting, kde budu mít demonstrovat pomocí screensharing automatický report a Control Center pro mediky, ale … TODO.
Včera se zárověň otevřelo „registrační
okno” na Systems Challenge 2, která začíná za 3 měsíce, a součástí přihlášky jsou i demonstrační videa jak robotů, tak právě tohoto reportingu.
Co mne na callu ale překvapilo (ono, moc jsem DTC posledních X měsíců nesledoval, virtuál padnul, data jsme pustili k vodě sami a system je "trošku" úlet), že celý
soutěžní prostor bude zasíťovaný Wi-Fi (5GHz) a bude určena pro soutěžící! Prostě pravý opak toho, co jsme zažili v podzemí na SubT.
To najednou dává možnost přímo streamovat ze všech robotů aktuální video … no nice to have. Stále bych se držel LoRA (Long Range Radio) malých paketů jako
základ pro reporting (pokud vůbec bude co reportovat).
A příprava? Myslím si, že Matty platforma prošla dostatečnou zatěžkávací zkouškou:
- Robotem rovně 2025 - test neuronky, baterky, drncání, AP přes mobil
- Field Robot Event 2025 (Itálie) - horko, prach, stres, noční jízda
- RoboOrienteering 2025 - neznámý terén, GPS, hledání obětí (kužely), výpadek napájení, hodinová jízda
Co dál? Asi hlavně respektovat získané zkušenosti ze SubT, co ze na RoboOrienteeringu „připomněly”, aneb symetrie je krásná vlastnost a pokud se za vámi
nezhroutí strop (oblíbený prvek z finále), tak je možné z každé situace vycouvat. Toto by se rozhodně hodilo v první jízdě.
Dále bych chtěl doplnit geofence (to už asi také mělo být na RO25) a kompas (to už raději … nic neříkam). Pak by robot měl alespoň tušit, zda geofence
opouští nebo jede po její hranici …
8. července 2025 — DTC Systems 2 - W27 (zbývá 12 týdnů) - skryté předpoklady
Minulý týden se to celkem pěkně rozjelo. V úterý jsme s Jakubem dmontovali postříkovač z M02 a připravili tak zeleného Mattyho na další soutěž.
MartinL se pustil do tisku růžového M04 a s Frantou jsme si vyjasnili
nástroje co používal ve Virtuálu. Také jsem udělal první „noční jízdy” abych si potvrdil, že na FRE kamera opravdu vypadávala kvůli slabému
zdroji. Dostal jsem z ní právě jeden snímek:
![]() Zombie s lidarovým vzorem |
Zbytek videa je už jen černo. Lidar jsem vypnul a nechal pouze IR přisvit a to vypadlo celkem dobře (viz mini-video). Zavěr tam slavný není,
ale ono nasvícená bílá zeď moc triangulačních bodů nedává. Nárazníky to jistí! Jinak oak.color stream je zase nepoužitelný a je třeba pro detekce použit šedotónové obrázky z levé nebo
pravé kamery. OAK ale asi nedává všechny 3 streamy najednou, takže je třeba tu barevnou kameru trošku ošidit (viz Jakubův PR #1020
na balení obrázku až na PC).
Zvuk v OSGARovi dosud nemáme, tak jsem se chtěl inspirovat ROSem, ale
v zásadě tam mají AudioData (pole bajtů) a
AudioInfo (popis kódování, vzorkovací frekvence a pod). V zásadě „proč ne?”
No a pomalu se dostávám k těm skrytým předpokladům, aneb jsem nepoučitelný a mám to i tady v historii … hmm, tak nemám. No prostě začátkem března byl workshop, kde by člověk
vše viděl z první ruky, a je to velmi užitečná zkušenost — viz SubT - Colorado. Leč tělo úplně nesouhlasilo a nastoupil „oblíbený” dávivý kašel
při každé myšlence na DTC. Teď to zatím kašel není, ale antibiotika na 14 dní ano.
13. července 2025 — DTC Systems 2 - W28 (zbývá 11 týdnů) - Helena, Audio, grid_map, …
Pokud jste přílišný optimista, jděte testovat. Ono vás to přejde.
Aneb teď jsem byl chvíli testovat M02+M03 a nějak mne ten optimismus přešel. Ale snad si ještě vzpomenu na okamžiky, kdy to vypadalo pozitivně …
Týden začal antibiotikama. Út a St jsem kompletně prospal. I teď bych si skoro šel lehnout, a měl bych jít, … prostě špatně se bojuje na mnoha frontách.
Na středečním callu jsme se bavili, že bych to měl pojmout, stejně jako RoboOrienteering, jako společenskou událost
a že by to pak nebyl takový stress a možná bych si to i trošku užil. A když nejsou lidi, tak až zapojím AI, studenti na FRE
to také dělali, a třeba se mi uleví. Tenkrát jsme nového člena týmu pojmenovali Elena (ChatGPT), tak ja bych to jen o H prodloužil na Helena (Gemini 2.5Pro).
Možná to bylo ještě tu středu, kdy jedna z úloh na seznamu je rozchodit audio v OSGARu. V práci nás stejně neustále tlačí do používání AI, tak jsem to zkusil.
Jirka používá PyAudio, tak jednoduchá úloha byla, „napiš mi program v Pythonu, který pomocí PyAudio nahraje zvuk” (toto není přesný prompt, přeci jenom jsem
to psal v EN). Podle očekávání i Gemini 2.5 Flash (?) to dala bez zadrhnutí. No a pak tak ze srandy jsem připsal „a teď na to udělej driver do OSGARa”. Jako
Flash dost halucinoval (např. v OSGARu konfigurace v TOML opravdu není), ale když jsem přepl do Gemini 2.5 Pro, tak to vystřelila tak, že bych to snad
lépe nenapsal! A okamžité pocity hodně smíšené. OSGAR je open source, tj. vše je k dispozici, ale dokumentace je mizerná, takže je třeba jít do kódu. To Helena
dala. Ale návrhy proměnných, název třídy, návrh konfigurace … jak kdybych si to psal sám. … jediná drobnost byla, že to nefungovalo. Opravdu mne nebavilo
se s ní přít: I've double-checked the OSGAR architecture, and I can confirm that osgar.node.Node does not inherit from threading.Thread., když já vidím:
from threading import Thread class Node(Thread):
ale nechť má svoji pravdu. Připsal jsem tam svůj jednořádkový fix a bylo (viz PR #1024). Jako fakticky testováno je to
pouze na Win11, na ODroidu zatím pouze instalace a pokus, že to nespadne. Budu muset sehnat vhodný mikrofón se stereo (díky PavleS) jackem 3.5mm.
No a když jsem byl tak rozjetý, tak jsem si říkal, že zkusím úlohu, do které se nikomu nechce, ale mne by se to fakt moc hodilo — Python verzi grid_map od ANYmal.
Je v C++, podporuje různé vrstvy a mapě, ale pro mne základ by byla elevation map, kde bych integroval jednotlivé 3D hloubková data z Mattyho OAK-D kamery.
Myslel jsem si, že mne Helena pošle do háje, ale neposlala. Prý je to medium challenge a tak jsme střední dobu zápasili. Nakonec z toho něco vypadlo
(grid_map_py-0.0.1-cp310-cp310-linux_x86_64.whl), ale do gitu jsem to pořádně ještě neposkládal. Vlastně vůbec netuším jestli to co vzniklo je k něcemu použitelné.
Toto tvrzení lehce naznačuje můj stupeň pochopení. Rozhodl jsem se to dat do odděleného repositáře, který jsem před chvílí vytvořil zde,
ale zatím je to prázdné!
Jo ještě jednu úlohu jsem hodil na Helenu a to dala od A do Z, zapracovala připomínky a je to zamergeovaný
(PR #11, DTC Causality Report generation Ver0). Sice jsem si později přečetl, ze DARPA chtěla něco trošku jiného:
Teams must demonstrate a working user interface. This should include features such as marking
objects on a map and the capability to convey casualty features such as Severe Hemorrhage status. … no možná ještě Helenu poprosím, ať to trošku přepracuje.
Teď to jede z JSON reportů, které stejně musíme poslat, pokud chceme bodovat a obrázek situace, který je ale pouze někdy k dispozici. Ver0 vypadá takto.
No a to se obloukem pomalu dostávám k dnešnímu večernímu testování. Říkal jsem si, že bych přeci jenom měl nahrát videa Mobility - For ground systems, the movement must be over
uneven terrain to include dirt, gravel, and grass. The course should include at least two 90-degree turns.
Mám dva roboty, tak bych měl testovat s oběma najednou, ať pak těch pět není takový šok, není-liž pravda? První pozorování — dva roboty najednou v ruce neunesu.
Tak jsem je postupně dostal na louku a M02 se nepřipojil k AP (na mobilu). Sigh. No tak pojedu jen z M03. No a pak byly asi 3-4 pokusy jet 17m rovně zatočit o 90 stupňů
vpravo, dalších 10m, zatočit o 90 stupňů vlevo a ujet ještě 8 metrů. Louka je ale neposekaná, jen jsem vytrhal pruh na auto (a na roboty), takže se skoro vždy někde
zasekl. Peklo.
Demo2 - přejezd hromady štěrku byla brnkačka.
No a pak jsem si říkal, že zkusim denní jízdu v prostředí, kde bych později zkusil i noční jízdu. No to byla katastrofa. Ona M02 si to v mezičase rozmyslela a také se připojila,
tak jsem je oba „na divoko” pustil do „lesa”. Jako bude tam třeba seriózní koordinace všech členů! Vlastně i na SubT jsme roboty vypouštěli postupně, ale tam o čas až tak
nešlo. Tady je za 15min po všem.
Pokud stažená videa z momentálně vybitého telefonu nebo logy z robotů budou nějak použitelné, tak ještě doplnim … ale teď je čas opravdu jít do postele.
p.s. stahuji logy a evidentně jsem updateoval config jenom u jednoho z robotů (aby se používalo H.265 kódování videa:
m03-dtc-day-250713_170143.log 140,168,400 100% 5.90MB/s 0:00:22 (xfr#1, to-chk=16/26) m03-matty-followpath-250713_163357.log 20,199 100% 31.87kB/s 0:00:00 (xfr#2, to-chk=11/26) m03-matty-followpath-250713_163547.log 808,649,552 100% 5.69MB/s 0:02:15 (xfr#3, to-chk=10/26) m03-matty-followpath-250713_163908.log 1,285,921,633 100% 5.94MB/s 0:03:26 (xfr#4, to-chk=9/26) m03-matty-followpath-250713_164134.log
p.s.2 videa:
- mobility: https://youtu.be/MRd-9Yo-vDE
- gravel: https://youtu.be/R8eb7rZRSk0
- forest: https://youtu.be/xvHPZC8R630
20. července 2025 — DTC Systems 2 - W29 (zbývá 10 týdnů) - nedotažené konce
Uplynulý týden bych označil jako nedotažené konce, aneb jak by můj dědeček řekl: „Je to hotové, jen to dodělat”.
DTC User Interface
GUI je součastí registrace a už minule jsem zmiňoval, že si představují mapu obětí se zvýrazněním případů
s vážným krvácením. Toto psala zase Helena (viz PR #12). Je to zase mezi-verze, protože
podkladová mapa je z OpenStreetMap a to samo offline fungovat nebude. Pro aktuální demo viz video
(ne náhodou je unlisted)- Helena má přípravenou ještě verzi s PNG se souřadnicemi, kteoru pomocí GDAL převede
na mapové dlaždice … jako bylo by to pěkné, ale snad později.
Audio
Na této frontě je nový mikrofón (nejlevnější s odpovídajícím 3.5mm jackem) a test na
Odroidu. Selhal. Zvuk se sice krásně komprimoval, ale ano, byly to samé nuly. PavelS mi poslal výřez PDFka, jake je audio zapojené:
tj. nahoře je jack na repráčky, uprostřed je mikrofón a dole nějaka optická vychytávka … píše: „S/PDIF (Sony/Philips Digital Interface) je digitální
rozhraní pro přenos audia. Jako medium se používá koaxialní nebo optický kabel.” https://en.wikipedia.org/wiki/S/PDIF
No a teď proč to sakra nefunguje?! Levný mikrofón je sice mizerný, ale nějaký výstup dává (testováno ještě při callu ve středu). Drivery jsou, ale
při spuštění OSGAR narávání to hrozně nadává:
ALSA lib confmisc.c:855:(parse_card) cannot find card '0' ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
Na doporučení jsem se na OSGAR vykašlal a zkoušel přímo nástroje systému arecord -l … arecord: device_list:274: no soundcards found... . A to jsem
si myslel, že kabelovým mikrofónem se problemům s drivery a pod vyhnu. Chyba lávky.
Druhý den jsem trošku z nedostatku nápadů zkusil zvuk přehrát (aplay) a zase nic?! Jako jsem hodně sklerotický, ale toto mi už na Odroidu snad sakra fungovalo?!
A ano … fungovalo … ale když jsem byl přihlášen, používal monitor a kliknul na nějaký WAV nebo si pustil YouTube video! Aneb zde je ten zakopaný pes.
Pokud pustím příkaz přehrání tak dokonce čeká, dokud se v jiném terminálu nepřihlásím. Sigh.
Jirka pak psal, že Během boje s bluetooth jsem pulseaudio nahradil za pipewire + pipewire-pulse + wireplumber. Klíčový pojem muže být "system-wide pulseaudio".
Tak toto jsem také nedotáhl. Jedna z možnosti je v BIOSu změnit automatické přihlašování na startu, ale … tam se zase nedostanu z bezdrátovou klávesnicí. TODO
Pose Estimation
Jeden ze vstupů pro analýzu zdravotního stavu je pose estimation, aneb kde je hlava, ruce atd.
YOLO modely mají v sobě i variantu pose, jen ty modely jsou v PyTorch. A já bych
do OAK-D Pro potřeboval blob formát. Existuje Luxonis BlobConverter (sice deprecated,
ale stále funguje), ale co použít za vstup? Tady zase díky Jirkovi - ONNX je správný meziformát: https://docs.ultralytics.com/integrations/onnx/. Hmm, teď
čtu ten mail znova celý a jsou tam samozřejmě i další kroky a to jaké extra parametry případně použít a kde se na ONNX podívat … jj, ještě věci dotahovat
a maily číst do konce … tj. TODO je podívat se na ONNX velikosti vstupů a výstupů.
Noční vidění
Jeden z úkolů je demonstrovat autonomní navigaci v noci. A s tím je i spojená detekce zraněných v noci bez extra světla (IR přísvit je povolen). Propojení detektoru
na levou monochromatickou kameru je snad pořešeno (viz PR #1026), ale při testu se mi podařilo zlomit už
třetí nárazník! (až toto bude MartinL číst, tak se na mne naštve a zastaví výrobu M04 a M05 :-( https://youtu.be/C0kljPdg5js
Ani nevím, zda zmiňovat důvod, proč to tam napral do té žídle? Sigh. No to jsou ty mé copy and paste, aneb stále tam byl kus kódu, že „když nemůžeš tak přidej
víc” … ne to si s něčím pletu … myslím tím, pokud není cesta jeď rovně (aneb v poli si ji udělej, v reálném světě to ale občas bolí).
timeout … tj. ani tento zápis pořádně nedodělám. Chybí Terminátor, poděkování za tip Jirkovi roboty prostě nastartovat
v klidu doma, ale kód spouštět až na uvolnění STOP tlačítka (a notebook a telefon ani s sebou nebrat, stejně jako na Robotem Rovně 2025),
vtip proč mi včera v noci tak hloupě robot ujížděl do keřů (hint, bylo to severo-západním směrem), páteční call s DARPA … někdy příště.
p.s. alespoň jedna z delších nočních jízd — https://youtu.be/oqklhJHKlBg
27. července 2025 — DTC Systems 2 - W30 (zbývá 9 týdnů) - grid map, pose, audio
Dnes to bude stručné, aneb ani na report už teď nemam moc sil. Asi první zpráva je, že jsem odeslal Robotika - Systems přihlášku na CE2 (Challenge Event 2).
Žádná sláva, ale tento víkend jsem
byl pryč a uzávěrka je do konce července a to už nic lepšího nedoplním. Podle dřívější zkušenosti se sami ozvou, co jim přijde nedostatečné a pak budeme mít 10 dní na to
to nějak napravit.
Druhá zpráva je, že jsem si koupil naslepo nějaké hračky — chtěl jsem k tomu sepsat malý příspěvek a nazvat ho Zajíc v AlzaBoxu, ale ono to dopadlo relativně OK, tj. žádné drama.
Potřeboval jsem
koupit SSD disky do dalších dvou robotů M04 a M05 a tak jsem do košíku přihodil i „co by se mohlo hodit”. Jednak to byla numerická klávesnice na USB, která ma tlačítko Del.
A funguje, resp. pomocí této klávesnice se už do BIOSu Odroidu (řídící počítač pro všechny Matty roboty) dostanu. (asi kontext, že s bezdrátovou klavesnicí, co jsem
pořízoval na Elrob loni nikoliv)
Druhý zajíc byl C-TECH SPK-08R (klíčová slova byla reproduktor a jack 3.5mm). Je rozmně malinký 6x6x6cm,
ano trošku ďábelský, ale když jsem ho rozbalil, tak na jack zdířce byla ikonka sluchátek?! A ano, bez kabelu … který jsem tedy koupil v druhé vlně. Ale funguje to,
jen je po startu třeba 2x stisknout MODE (Bluetooth, Radio, AUX). A možná i ten Bluetooth bude použitelný? S notebookem i s Odroidem (v GUI) se to spárovalo
a pak to přehrávalo zvuky. A co více je tam i malý mikrofón! Uvidíme, časem, možná. (A ano, koupil jsem další mikrofón s jack 3.5mm, ale ten jsem vlastně ještě ani
nevyzkoušel)
Úprava navigace robota, že když to nikam nejde, tak místo „jeď rovně” se pořádně rozhlédni, pomohla v tom smyslu, že už Matty není tak sebe-destruktivní, ale … ve vysoké trávě nikam
nedojede.
Také jsem upravil offline reporting se staženými mapovými dlaždicemi (viz PR #13), takže teď se vlastně
může každý robot chovat jako webový server a poskytovat info, na jaké pozici koho detekoval, včetně obrázků detekcí, ale nejprve musí někam dojet …
Pro další posun mi už přijde nutná nějaká ta mapa, tak se trošku posunula i grid_map fronta.
Jako není to nic světoborného a k videu PavlaS z Výpustku to má ještě hooodně daleko, ale zase snad malý krůček vpřed.
Pro začátek jsem si postavil malý Stonehenge.
Simuluj zeď v depth kameře ve 2m vzdálenosti a opakuj v 360deg kruhu
No reálným obrázkům zatím vůbec nerozumim:
Jako už jsem si otočil souřadnice, kdy world má X dopředu, Y vlevo a Z nahoru vs. kamera X vpravo, Y dolů a Z dopředu, ale ještě tam bude zakopaný nějaký ten pes, možna
dva a více. Minimálně jsem si vědom, že update grid_mapy je asi natvrdo přířazení poslední hodnoty, takže když jich je tam více s různou výškou, tak vyhraje „libovoný”
(no jede se po řádcích, takže ten úplně dole s malou hodnotou). ATD.
Ještě jsem sliboval tu pose — no Jirka měl pravdu, že AI na toto téma ví všechno (perplexity):
I am trying to use yolo v11n pose model and it returns array 1 x 56 x 8400 - what is it?
The 1 x 56 x 8400 array returned by a YOLOv11n pose model represents the model's raw output for pose estimation.
Here's a breakdown of what each dimension signifies:
- 1 (Batch Size): This indicates that the model processed a single image at a time. If you were processing multiple images simultaneously, this number would change to reflect the number of images in your batch .
- 56 (Features per Detection): This dimension contains the information for each detected object, specifically designed for pose estimation . It's typically broken down as follows:
- First 5 values: These represent the bounding box coordinates and confidence score for a detected object (e.g., a person). This usually includes x, y, width, height, and confidence .
- Remaining 51 values (17 keypoints x 3 values per keypoint): These are the keypoints for pose estimation. YOLO models trained on datasets like COCO typically detect 17 keypoints (e.g., nose, eyes, shoulders, elbows, wrists, hips, knees, ankles) . Each keypoint is represented by three values: its x coordinate, y coordinate, and a visibility score or confidence . So, 17 keypoints * 3 values/keypoint = 51 values.
- 8400 (Number of Potential Detections/Anchors): This is the total number of anchor boxes or potential detections the model considers across the input image. Each of these 8400 entries contains the 56 features described above .
Post-processing is crucial to interpret this raw output . The 8400 potential detections need to be filtered and processed to extract meaningful results. This typically involves:
- Non-Maximum Suppression (NMS): To eliminate redundant bounding box detections that overlap significantly.
- Confidence Thresholding: To filter out detections with low confidence scores.
- Converting Coordinates: The raw keypoint coordinates might be normalized or relative to the bounding box, and often need to be converted to actual image coordinates for visualization or further use .
In essence, the 1 x 56 x 8400 array is the comprehensive set of predictions from the YOLOv11n pose model, which requires specific post-processing steps to yield the final detected objects with their poses.
… no ale zatím jsem s tím nic neudělal. :-(
A vlastně ještě jedna drobnost — OSGAR Matty driver teď publikuje joint_angle (PR #1027), což by se hodilo minimálně u toho „rozhlížení se
na místě”.
3. srpna 2025 — DTC Systems 2 - W31 (zbývá 8 týdnů) - Matty UGV qualified!
We are pleased to inform you that your system, Matty UGV, has qualified for the Challenge Event 2. We look forward to your participation in the coming weeks. … někdo by nám
mohl gratulovat, jiný by pochopil, že padla poslední externí záminka z kola vyskočit. Tak jo, už žádné výmluvy. Ještě uvidíme do jaké skupiny nás zařadí a jestli náhodou
nebudeme ještě v letadle, když už bude úvodní přednáška …
Pokud mám ještě chvíli zůstat u organizátorů, tak bych přihodil páteční Medic Panel Discussion Aug 1st @ 1-3pm EST. Byli to převážně vojenští doktoři co pomáhali před
čtyřmi lety při opuštění Afganistánu … no hrůza. Padala na mne „trošku” bezmoc a marnost. Jestli jsem to dobře pochopil, tak v dnešní válečné době se už ani doktoři nerespektují
a jsou jen další cíl. :-(
Je pak poměrně těžké se v klidu vrátit k našim hračkám, ale nějaký posun tam je. Minimálně na straně „výroby” MartinL ve středu hlásil, že růžový Matty M04 už je celý vytisklý
a oranžový M05 je cca v půlce. Za mne jsem nainstaloval základní systém pro Odroid M05 a M00 (M04 už jsem měl a používal jako base station). Ale jednotlivé knihovny by to chtělo
sjednotit a to jsem ještě neudělal. Také uvažuji, že opustím venv a naházím to vše do systému. Nebude to tak flexibilní, ale možná se tím některé kroky zjednoduší. Ještě nevím.
Několik večerů jsem zápasil s GridMap — asi pomalu tuším, co je zdrojem těch zmatků. Jednak jsou to numpy array, které pro obrázky je první rozměr výška a druhý šířka, tj.
[Y][X]. Do toho Helena používala souřadný systém kamery X-obrázek vpravo, Y-dolu, Z-hloubka. A konečně ta data z hloubkové kamery jsou např. pro boční stěny opravdu špatná. Ono to
tak nevypadá v 2D, ale po přepočítání do 3D to skoro není poznat … nebo tam mám ještě nějakou myšlenkovou mezeru, což je asi i pravděpodobnější. Zatím nic použitelného i když
nevím, zda jsem posledně zmiňoval pure Python implementaci (jen se chová trošku jinak než binding C++, takže špatný) … ale plán je nejprve rozchodit tu Pythonovskou,
jak si představuji a pak to naroubovat do té externí knihovny.
Helenu jsem také nechal včera nakódovat Geofence. Jako ten kód není špatný (toto je už druhá
iterace, kdy jsem jí požádal ať další knihovnu geopy nahradí jen vlastní funkcí) … ale myslím si, že je to špatně. Knihovna shapely podle mne netuší nic o projekci latlonů,
takže to bude potenciálně vybírat špatného kandidata, který je na hranici nejblíž k dané pozici. Možná to s ní ještě proberu, nebo si to přepíšu do planární projekce jako jsme to
dělali vždycky.
Teď ještě koukám na boxy ze základnou 56cm x 38cm — ano, rozměry Mattyho. 1st Checked Bag: Free of Charge, UPTO50LB 23KG AND62LI 158LCM,
2nd Checked Bag: 2133CZK, UPTO50LB 23KG AND62LI 158LCM + palubní zavazadlo CABIN BAGGAGE 12KG 1PC 115CM/CARRY ON UP TO 45 LI 115 LCM,
LB = Weight In Pounds, KG = Weight In Kilos, LI = Linear Inches, LCM = Linear Centimeters, MAX = Maximum Allowed, PC = Number of Pieces.
Jestli to skonči s počtem účastníků tak jak to vypadá momentálně, tak bych potřeboval do 23kg dostat 2x Matty tak, aby součet výšky, šířky a délky byl do 158cm. A na palubu
ještě jednoho. Výška je 24cm … 56+38+24 = 118. To moc nadějně nevypadá. Pořád je tu varianta oddělat kola a na místě to zase zpět poskládat, to by jít mělo. A na provezení deseti
baterek v příručním zavazadle se také těším …
No nic, půjdu shrabat morkou trávu a možná si trošku zajezdit s geofencí.
p.s. s tím přepravním boxem to možná nebude tak zlé — Perplexity nejprve komentovala
rozměr:
Dimensions to consider:
- Base length + width = 56cm + 38cm = 94cm
- Maximum height allowed = 158cm - 94cm = 64cm
So, the box could be as tall as about 64cm to keep within 158cm linear size total.
Custom cardboard boxes tailored to your size requirements can be a great option. Cardboard boxes can be made to exactly fit your device's footprint and provide up to the allowed maximum height. They are cost-effective, lightweight, and airlines generally accept them if within size limits. They lack wheels and handles but can be handled with airport carts and wrapped for durability.
Hard-sided travel cases or luggage designed for electronics might be available close to these dimensions but may have internal components like wheels and handles that reduce internal space or add weight. Most carry-on or checked luggage tends not to have such a large maximum height with your large base size.
… což po pravdě papírové krabice jsem prapůvodně v úvahu vůbec nezahrnul. Na upřesňující dotaz, kde poptat custom box v ČR doporučila Model Obaly a.s. a goodcase.cz. A papírová krabice
600×400×510 mm je k dispozici za 30Kč (tj. 15Kč na robota ). Přepravní box na zakázku ale na druhou stranu vychází na 7200Kč (38x64x55cm). Když jsem o tom přemýšlel, tak je ještě varianta
krabice pro každého robota a dvě svázat dohromady, aby tvořily jedno zavazadlo. Do této varianty by spadala verze D47
s rozměry 550x350x245 mm (vnitřní) a 582x385x277 mm (vnější) 47L 4,5kg. Tj. 9kg na pár a zbývá max 7kg na robota. S cenou 3 590Kč na robota se dostaneme na úroveň jako ten box na zakázku.
p.s.2 teď mi ještě přišel tip od MartinaL: Přepravka EURO s víkem 60x40x43,5 uzavřený úchyt za 580Kč.
10. srpna 2025 — DTC Systems 2 - W32 (zbývá 7 týdnů) - ESP32 IMU FW
Tak jo, je neděle 21:45 a já nemám sepsaný týdenní záznam. Z počátku týdne to vypadalo, že toho bude více než dost a že si to nezapamatuji, tak jsem to sem raději začal sepisovat rovnou. Skončil jsem
u Út a papírových krabic. Hmm, tak si můžete přečíst historii nebo skočit na zkrácenou verzi od St.
Po — v ponděli jsem si trošku hrál s BIOSem u M00, abych to měl stejně jako MartinL i PavelS, tj. po připojení napájení, aby rovnou naběhl systém a uživatel se přihlásil.
Malá numerická klávesnice (na USB kabel) fungovala bez problémů (tlačítko Del) a vlastně by byla pro změny v BIOSu dostatečná … až na jednu drobnost — chybí ESC aneb z
menu nebo i samotného nastavení se nedá dostat. Ale když je už člověk v nastavení, tak jde zbytek pořešit pomocí bezdrátové klávesnice. Ano, ještě ten detail, co je kde třeba změnit
jsem raději diskutoval s AI, protože jsem to sám narychlo nenašel: Chipset - PCH-IO Configuration - State After G3 změna z S5 state na S0 state.
Také jsem si hrál s přehráním zvuku — zase to nefungovalo, ale teď jsem tušil, že minimálně jedna zrada je v defaultním nastavení hlasitosti. Ano, byla tam 0! (netuším, kdo to vymyslel)
A když to hrálo přes repráčky s jackem i nahrávalo z mikrofónu (tam byla také třeba posunout šoupátko vpravo), tak jsem zkusil i Bluetooth:
robot@m00-odroid:~$ bluetoothctl Agent registered [CHG] Controller E0:E1:A9:3D:3E:BC Pairable: yes [bluetooth]# scan on Discovery started [CHG] Controller E0:E1:A9:3D:3E:BC Discovering: yes [NEW] Device 18:9E:40:7D:E4:7E C-TECH SPK-08 [bluetooth]# [bluetooth]# pair 18:9E:40:7D:E4:7E Attempting to pair with 18:9E:40:7D:E4:7E [CHG] Device 18:9E:40:7D:E4:7E Connected: yes [CHG] Device 18:9E:40:7D:E4:7E Modalias: bluetooth:v05D6p000Ad0240 [CHG] Device 18:9E:40:7D:E4:7E UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 18:9E:40:7D:E4:7E UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 18:9E:40:7D:E4:7E UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 18:9E:40:7D:E4:7E UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 18:9E:40:7D:E4:7E UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device 18:9E:40:7D:E4:7E ServicesResolved: yes [CHG] Device 18:9E:40:7D:E4:7E Paired: yes Pairing successful [CHG] Device 18:9E:40:7D:E4:7E ServicesResolved: no [CHG] Device 18:9E:40:7D:E4:7E Connected: no [CHG] Device 18:9E:40:7D:E4:7E RSSI: -62 [bluetooth]# [bluetooth]# pair 18:9E:40:7D:E4:7E Attempting to pair with 18:9E:40:7D:E4:7E Failed to pair: org.bluez.Error.AlreadyExists [bluetooth]# connect 18:9E:40:7D:E4:7E Attempting to connect to 18:9E:40:7D:E4:7E [CHG] Device 18:9E:40:7D:E4:7E Connected: yes Connection successful [CHG] Device 18:9E:40:7D:E4:7E ServicesResolved: yes [C-TECH SPK-08]# exit
ve zkratce spárovalo se to z cmd line a po přípojení (connect) to přehrávalo zvuky přes BT. JJ, je tam jedno ale —- BT mikrofón nefungoval (resp. stále nefunguje). A tam se vracíme na začátek
k „nahradit pulseaudio za pipewire + pipewire-pulse + wireplumber”, alespoň to byl výsledek Jirkova boje loni (?). A s tím jsem zatím nic nedělal.
Ještě jsem měl před odjezdem/přejezdem do Prahy trošku času a na stole mám několik LoRa (Long Range radio) krabiček ze SubT, takže to zkusím „oprášit”. V DTC je ale požadované,
aby veškerá komunikace byla šifrována, takže i LoRa zprávy. To je jednoduché, ne? Zavolám před odesláním nějaky encrypt() a po příjmu decrypt() a je to. Nebo ne? Nevím
kde to bylo, ale u nějakého jiného projektu mne zaujalo from cryptography.fernet import Fernet. A kde je problém? No LoRa posílá jen kratičké zprávy (do 40
znaků, jak jsme to měli nakonfigurované) a když zakódujete Hello, ASCII encryption!, tak dostanete gAAAAABokDr4oj0vhLWfu0rss2f6kcS0nG_-8NEE9IQZ3Q_WZTkOmoy27stTSw
y8o4VdvY7dcwtfsu8QA58JKmeHjZZd8bgcCL0bFuvSPI6BSHr4hI309l4=. Život je hořký!
Út — úterý byl „krabicový den” aneb šel jsem si do Uhřiněvsi (stále Praha) vyzvednout 3 krabice. Krabice stály pár korun, ale rozměr a případné balení a posílání úplně smysl
nemělo. No a byla to klasická „vícedimentionální chyba”, aneb v prostoru to nebylo daleko, ale v časoprostoru se to nepotkávalo (otevírací doba 8-15h). A intervaly autobusů jsem
také trošku podcenil … ale krabice mám i jsem je ochránil před dešťovou smrští co pak odpoledne byla.
Další posun byl na téma politické situace a možných problémů na vstupu — obratem jsem dostaz zvací dopis, tak snad to bude OK. Podobně rychle DARPA reagovala i na obnovu linků
pro stažení trénovacích vzorků (to jsou ta videa, na které se člověk opravdu nechce koukat) a přihodili i několik nahrávek z Workshop Systems 2 z března! Obávám se, že sdílet
to nemůžu, ale z první nahrávky (omylem jsem stáhl UAV, tj. dronu) je vidět prostor louky, na které jsou po různu stojící auta, uprostřed je několik kráterů a hoří tam oheň. Hmmm.
Také se tam některé postavy pohybují (do kruhu), takže to nebyly všechno figuríny, jak jsem očekaval, ale i herci.
St — toto sepisuji až v neděli, takže si podle očekávání nic nepamatuji. Vím, že s TomášemR jsme diskutovali přepravní kufr 100l,
který vypadá bytelně, ale váží 11kg. Také vnitřní rozměry jsou bez polstrování, takže spíše ne.
Čt — to se ukázalo, že úspěchy z Po nefungují, pokud není připojen monitor přes HDMI. Mám v mailu tipy od MartinaL na SW virtuální monitor, ale fakticky jsem to ještě nezkusil.
Také mám obavy, jestli náhodou Odroid nemusí zuřivě vykreslovat na neexistujicí obrazovku a neplýtvá zdroji/baterkou? Uvidíme. Také jsem byl zpět u robotů a konečně jsem vyzkoušel
nový firmware: Add IMU, Servo, Neopixel #14. Asi nejvíce mne zajímá IMU (integrované gyro, akcelerometr a magnetometr), ale pěkné features
jsou i extra příkazy pro další serva případně řízené LEDky od NeoPixelu.
Z logů soudím, že jsem zkoušel ,, praktické použití geofence'' — prostě náhodně vygeneruji waypoint, který je uvnitř, a tam jedu. Ano, bylo tam pár zádrhelů jako, že ten waypoint nemám
odstraňovat, když detekuji osobu (původní kód z RoboOrienteeringu) a občas se zasekával v trávě. A dal jsem i noční jízdu.
Pá — upgradeoval jsem Matty OSGAR driver na rozšířenou verzi a s M02 vyrazil do světa. Ono není robot jako robot — M03 má GPS, takže
teď se nově stále snaží dostat do oblasti zadané geofencí a M02 (bez GPS) je to jedno. Byl jsem zvědav, zda IMU dat poznám cestu do kopce a z kopce … zadní branku trefil krásně a vyrazil
nahoru, zpátky jsem ho dostal tak že jeho „obět” se pohla tím správným směrem. No z dat to vidět nebylo, protože jsem to neměl nakalibrované. Ale sbíral jsem i data z IMU z kamery,
tak tam by to vidět mohlo být. Možná.
So — NO COMPUTERS = NO DTC … bylo krásně a podařilo se mi nic nedělat a jen o DTC bloumat. Ono v ten pátek jsem ještě koukal na noční logy z drony z března — scenář Construction.
Fakticky to asi byla construction zone na dálnici, kde došlo k hromadné havárii. Spousta zraněných, auta na střeše, povalená motorka … no nebyly to pěkně záběry ani v IR …
Ne — tedy dnešek (už přetahuji 11min a to už mi utekly dva díly Podivných robotů :-( … Dnes jsem nahrubo nakalibroval M02 a M03. Statická kalibrace gyra a akcelerometru byla celkem
bez problémů, ale ten kompas! Úplně jsem si vzpomněl na Jirku a kalibraci Freji na houpačce. No nad hlavu jsem robota nedal a nemůžu tvrdit, že tam mám vše pevně přidělané.
Ani obrázky v XY, YZ a XZ řezu mne moc neuklidňovali. Bude to nejspíše třeba předělat — ideálně ve Win, kde poběží MartinemL doporučený kalibrační SW.
Ještě jsem přidal drobnost, která se ukázala spíše jako divočina — pokud ani po rozhlédnutí na místě žádnou cestu nevidíš, přehraj pozpátku posledních 100 příkazů (s opačným znaménkem pro
speed). M03 dokázal jezdit 10min (moc jsem ho v noci neviděl) a kdyby mne to nepřestalo bavit, tak by asi ještě chvíli zkomal svět. Ale to couvání bylo skoro o strach (naslepo) a špatným směrem.
TODO možná v kombinaci s tím IMU.
Dlouho jsem nepřidal žádné obrázky, tak jeden z kalibrace M03, který mne ale vůbec neuklidňuje:
![]() kalibrace kompasu M03 |
17. srpna 2025 — DTC Systems 2 - W33 (zbývá 6 týdnů) - Skupina 2, 10 týmů)
Ano, dnes je to datum z budoucnosti a cílem je zase nezapomenout, co se dělo …
Po — dnes dorazily plastové krabice. Jako kdyby se tam Matty vešel i s kolama, tak by byly úplně super … ale nevejde. A zelený M02 ani s nárazníkama
(měl je na FRE2025 nastavené). Ale bokem se tam vejde:
Út — přiznám se bez mučení, že včera večer jsem už toho moc nenadělal. Zmohl jsem se jen na cvičení se dvěma roboty — ani pokud sudám víko s kamerou, tak se dva na bok nevejdou (překáží
STOP tlačítko) … ale stejně budu sundavat ta kola, což mi přijde zajimavé v kontextu tří robotů (ty dva tam určitě dostanu, tečka).
Také jsem ještě odšrouboval oba nastavované nárazníky z M02, které přesahovaly limit. Ale ty původní mini-šroubky nemám :-( … no snad zůstaly někde ve škole nebo pořídím nové.
No a dnes ráno jsem se vyhecoval a odnesl robota cca 2km na nádraží a vzal si ho s sebou do práce. Motivace byla demo pro GG (nový člen týmu) a podle očekávání se to neobešlo bez
„generálského efektu”, což jsem vlastně rád. Zase zlobil napájecí konektor u Odroidu a na začátku se mi cca 3x resetoval — tj. opravdu musí starý Jack pryč a nový na scénu!
A testování samotné bylo užitečné. Jezdili jsme po firemním lesíku, resp. geofence byla zadaná na lesík, ale až příliš často se robot utrhl a utekl na parkoviště. Bude třeba změnit
priority — teď má nejvyšší prioritu vyhýbání se překážkám, pak detekce a navigace na člověka/oběť a až na posledním místě navigace na waypoint, což jedině udrží robota ve
vymezeném prostoru. Je možné, že to detekovalo nesmysly, nebo že chvílema zapomínal, že má sledovat jenom člověka a auta (těch bylo večer na parkovišti stále mnoho) má ignorovat.
A nebo stačily nějaké obskurní detekce (viděli jsme detekci vlaku … asi mu tak připadly okna v dolní části laboratoří) …
A na závěr info od DTC - jsme Béčka, resp. Group 2 (podle přání). Takže to bude bez výletu, ale snad se alespoň srovná časvý posun. Koukám na
oficiální stránky a tam vídím 15 týmů, ale interně je do skupin rozděleno pouze 10 týmů:
Group 1
- Chiron (DARPA-funded)
- Coordinated Robotics
- DRONE
- RoboScout (DARPA-funded)
- UAS-DTU
Group 2
- AIR TAGS (DARPA-funded)
- DART (DARPA-funded)
- PRONTO (DARPA-funded)
- Robotika
- TTT
(tato informace je i v DTC_Operations_Guide_CE2_20250812.pdf, který je Approved for Public Release, Distribution Unlimited, no jen zatím není na oficiálních stránkách ke stažení)
p.s. „záhada” byla celkem triviální … stačilo přidat více výpisů:
0:00:12.383368 Started tracking … 0:00:12.486322 Lost track 0:00:00.102954
pak v logu bylo (oak.detections stream)
0:00:12.345242 20 [ ['car', 0.55224609375, [0.4383300840854645, 0.45070576667785645, 0.4977783262729645, 0.5154918432235718] ] ]
a v kódu:
def on_detections(self, data): self.last_detections = data[:]
… to aby ho to pak netáhlo na parkoviště! (Ono to filtrování na ""name == 'person' tam je, ale pouze v kontextu vzdálenosti k oběti)
St — dnes jsem si ráno několikrát opakoval mantru: Jedná se o společenskou událost - není třeba se stresovat. Bude to zábava. Funkční roboti jsou nudní! … a trošku to pomáhalo
Zatím moc novinek nemám. Udělal jsem jeden „kancelářský test”, takže jsem viděl v praxi, že jak si běžní uživatelé si představují robota: prostě ho zapnou a už dělá co má.
Asi by to měl být default a pouze pro ladění by vývojář měl připojovat notebook, telefon jako AP atd. Jednou budem dál...
Další pozorování (programové) bylo, že po detekci oběti by
robot neměl vždy odbočovat vpravo, ale (nejlépe už předem) si zjistit, kterým směrem je volná cesta. Nárazník to řeší, ale mohl by se chovat inteligentněji. Low priority
Ještě bych si sem možná dal tabulku, co jsem studoval včera večer, aneb bodování:
Self-Funded Teams must score above a minimum required score in at least 1 run. The minimum required
score is equivalent to the score obtained by reporting on 60% of the ground truth casualties with 6 points
awarded per casualty. … ale ono je to stejně jedno, je to „společenská událost”, nebo ne?
Z bodování je také jasné, že by to chtělo rozchodit ten mikrofón + přehrávání zvuků …
Čt — dnes to asi vezmu „hákem”. Dopoledne jsem, po dohodě s Frantou, objednal ubytování a auto. „Trošku” jsem u toho naříkal, protože když se daná částka rozpočítá mezi 5-10 lidí,
tak je to únosné a největší pálka je letenka. Ale když těch lidí je jen 1-2 tak … no nic, zavřít oči, bude hůř. A teď běží 24h pro potvrzeni od majitele a stejně tak auto se dá
do 24h bezplatně zrušit … a nebyla to kreditka ale debetní karta, takže po minulé zkušenosti z února bych řekl, že zatím ani jedno není jisté.
Musel jsem se trošku v těch vedrech vyhecovat, abych vůbec něco dělal a taková malá domu bylo nastavení dummy monitoru, aby šlo přehrávat a nahrávat zvuk i bez připojeného
fyzického monitoru. Nápovědu jsem měl od MartinaL, přidal jsem ještě trošku od AI, aby se to snáze kopírovalo a … skoro dobrý. Co dobré není je skutečnost, že HDMI na M00 je na
robot@m00-odroid:~$ cat /sys/class/drm/card0-HDMI-A-1/status connected
zatímco na M02 je to card1-HDMI-A-1:
robot@m02-odroid:~$ ls /sys/class/drm/ card1 card1-DP-1 card1-DP-2 card1-HDMI-A-1 card1-HDMI-A-2 card1-HDMI-A-3 renderD128 version
… to mi „lehce” připomíná peklo s USB, ale zrovna tady, u identického HW bych to nečekal. Ještě nevím, co s tím? Zatím jsem skriptík na detekci, zda je HDMI připojeno či nikoliv
ručně upravil pro každý Odroid zvlášť.
Další posun je u M02, kde teď je upravený BIOS a automatické přihlašování a zakázání zamykaní obrazovky … ale evidentně to není dostatečné, protože dnešní test jízdy na západ,
východ, sever a jih nahrál CD kvalitu úplného ticha.
Ještě bych mohl přidat pár zpráv ze včerejšího callu:
- do státu vezmu „jenom” 4 roboty a M01 si MartinL nechá jako referenční vzorek pro vzdálené debugování ESP32. Původně myslel, že pátého vezmu jako přiruční zavazadlo, ale když k tomu přidám těch 10 baterek … raději ne.
- potřeboval bych ještě jeden USB port — momentálně využívám tři (ESP32 řízení, OAK kamera, WiFi dongle), ale ještě je třeba přidat DARPA e-STOP (zigbee) a LoRa pro komunikaci. To MartinL řešil extra destičkou, zapojenou do 24pinového konektoru na Odroidu a i prozíravě rovnou kupoval materiál na 5ks.
- s Jirkou jsme se bavili o Yolo-Pose na OAKu a doporučení je z kamery stáhnout celou velkou matici a až na CPU ji profiltrovat na 17(?) souřadnic jednotlivých kloubů pro X detekovaných osob. A když bude dostatek výpočetních jader na kameře, tak možná běžet souběžně detekci Yolo objektů (80 tříd, potřeba je pouze person) a vedle tu Yolo-Pose a výsledky kombinovat.
… tj. Martine, mám pocit, že robot ví, kterým směrem jede. … TODO náhradit odhad směru ze sekvence GPS pozic
Pá — dnešní téma bych nazval Scoring Submission Verification for CE2, aneb ověření, že správně reportujeme raněné na DARPA server. Dnes večer navíc byly working hours,
kde Rebecca říkala, že to dělají hlavně kvůli nám. Že první rok se jim stalo, že jeden tým na soutěži úplně pohořel, protože to na místě nerozchodil. Ptal jsem se také do kdy
je termín a následně už to probublalo i na fórum: Systems Teams - Please run your submissions on the test server by end of August before attending the Challenge 2 event., tj. konec
srpna (tak to dnes nebylo extra předčasné). Závěr je, že nová verze serveru test_triage_submission_server_20250721 běží a databázi s logy jsem dnes odeslal. Říkal jsem si,
že užitečné by bylo rozchodit i posílání obrázků, i když to letos není povinné, a tam jsem se „trošku” zaseknul. Ale u toho večerního callu jsem to vzal od příkladu
v příloze popisu protokolu a ten po formátovacích úpravách fungoval. Chyba byla v tom, že jsem volal requests.post() s parametrem json a měl jsem být parametr data.
Vyřešeno, případ uzavřen.
V plánu mám uzavřít ještě PR - Add support for DTC geofence and more a pak přejít na „klasiku” ver0, ver1, … soutěž.
Chybí mi upravit (resp. vůbec zjistit jestli používám osgar nebo osgar-apps verzi) skript na spouštění jednotlivých běhů, které se ukončí stiskem STOP tlačítka.
Potřeboval bych tam mít možnost předat další parametry, teď konkrétně -without audio, aby to zůstalo v konfigu, ale na Matty M03, kde to ještě rozchozené není, to obejít.
Úplně slyším Jirku: „tak proč to tam spíše také nerozchodíš?” … ale jo, rozchodím, snad i ještě dnes večer (zítra máme „zavřeno”), ale bude se mi to hodit na podmíněné
připojení LoRa a e-STOP modulu. Možná. Prostě nechci mít 3 konfigurační soubory jako na SubT — stačí udržovat denní a noční verzi.
p.s.
(osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ ls /sys/class/drm/ card0 card0-DP-1 card0-DP-2 card0-HDMI-A-1 card0-HDMI-A-2 card0-HDMI-A-3 renderD128 version
… prostě při dalším puštění na M02 už je HDMI monitor jako card0, včera byl card1. Změnil jsem to na card?, ale s tou (chybnou) logikou ten viruální monitor stejně
nenastartoval — prostě to nenahrávalo, ani nepřehrávalo zvuky.
(osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ pactl get-default-sink auto_null (osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ pactl get-default-source auto_null.monitor
Když jsem „chytré” přepínání vyhodil a nechal natvrdo zapnout viruální monitor, tak vše jede jak má:
(osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ pactl get-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo (osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ pactl get-default-source alsa_input.pci-0000_00_1f.3.analog-stereo (osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$
Už toho mám ale pro dnešek celkem dost, tak jen malý důkaz. Až budu přemýšlet, jak jsem k tomu došel, tak
ffmpeg -i video.h265 -itsoffset -3.6 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 \ video-with-sound4.mp4
protože té kameře tvrvalo 3.6s než naběhla …
p.s. omlouvám se za kvalitu snímku, ale takto vypadal M02, když večer nahrával video se zvukem:
So — aneb „zavírací den” a počítač jsem opravdu neotevřel (ani jeden). Měl hodně silné cukání, když začalo pršet, ale … udělal jsem si alespoň inventuru.
A nedopadla úplně nejlépe. Našel jsem 2x LoRa moduly (ID=2 a ID=4, pravda ještě ID=1, což je basestation), ale jenom jediný DARPA e-STOP. A žádné kabely. Aby
to bylo zábavnější, tak e-STOP má USB mini-B konektor, LoRa USB micro-B a ESP32 na řízení (a vlastně i OAK-D kamera) USB-C.
Dále to bylo „cvičení s krabicemi”: sundal jsem STOP tlačítko a oba roboti se krásně do krabice vešli. Abych je mohl „postavit do komínku”, tak jsem musel přendat
víko z jednoho na druhého (ano, lenost odšroubovávat kameru) a zbylo tam dost prostoru jak pro víko tak i nějaký molitan. A ano, ještě je možné sundat ta kola.
A nakonec jsem koukal i na druhý mikrofón a jak ho uchytit na Matty M03. Je to sice „cenová bomba”, ale je tak
velký, že ho možná nechám spíše na Pata a nějakou jinou post-DTC zábavu …
Ne — V neděli to byly první pokusy o integraci. Raději jsem zamergeoval větev s geofencí (a spousta dalšího
„balastu”), abych si uvolnil ruce na ver0.
Také ještě nevím, jak moc se budu moci spolehnout na kompas a OSGAR PR
je stále otevřený (a chce to nějaké testy a v klidu se nad tím zamyslet … ty rotační matice, quaterniony, různé soustavy souřadné …
Zapojil jsem do zeleného M02 všechen HW, který bych do ver0 rád použil, tj. co tam bylo + navíc LoRa a e-STOP moduly. A nefungovalo to, ani se nerozjel. To jsem
trošku očekával (pokud připojíte 3 zařízení, tak to vaše oblíbené (ESP32) nutně stále nebude k dispozici na /dev/ttyUSB0. To se standardně řeší pomoci udev pravidel. Ale ani to nefungovalo
(to už očekávané nebylo). Problém byl v tom, že jak řídící deska Mattyho, tak LoRa používají stejný převodník na ESP32:
(osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ cat /etc/udev/rules.d/lora.rules SUBSYSTEM"tty", ATTRS{idVendor}"10c4", ATTRS{idProduct}"ea60", SYMLINK+="lora" (osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ cat /etc/udev/rules.d/90-estop.rules SUBSYSTEM"tty" SUBSYSTEMS"usb" ATTRS{idProduct}"6015" ATTRS{idVendor}"0403" SYMLINK+="estop" (osgar) robot@m02-odroid:~/git/osgar-apps/dtc-systems$ cat /etc/udev/rules.d/92-esp32.rules SUBSYSTEM"tty" SUBSYSTEMS"usb" ATTRS{idProduct}"ea60" ATTRS{idVendor}=="10c4" SYMLINK+="esp32"
a dopadlo to takto:
(osgar) robot@m02-odroid:~$ ls -l /dev/lora lrwxrwxrwx 1 root root 7 srp 17 18:14 /dev/lora -> ttyUSB0 (osgar) robot@m02-odroid:~$ ls -l /dev/esp32 lrwxrwxrwx 1 root root 7 srp 17 18:14 /dev/esp32 -> ttyUSB0
AI doporučila použít udevadm info -query=property -name=/dev/ttyUSB0 (vždy se dvěma pomlčkama, možná to generování web někdo někdy upraví, pardon)
a do pravidel přidat ENV{ID_PATH}, tj. kde je přesně zařízení připojeno. Toto se minimálně pro
LoRa bude měnit (dočasný USB hub), ale pro teď to funguje s tímto nastavením:
(osgar) robot@m02-odroid:~$ cat /etc/udev/rules.d/92-esp32.rules SUBSYSTEM"tty" SUBSYSTEMS"usb" ATTRS{idProduct}"ea60" ATTRS{idVendor}"10c4" ENV{ID_PATH}"pci-0000:00:14.0-usb-0:7:1.0" SYMLINK+="esp32" (osgar) robot@m02-odroid:~$ cat /etc/udev/rules.d/lora.rules SUBSYSTEM"tty", ATTRS{idVendor}"10c4", ATTRS{idProduct}"ea60", ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:2.1:1.0", SYMLINK+="lora"
(vždy je to jen jedna řádka, což možná nemusí být?)
Zapojil jsem i LoRa basestation do notebooku a v logu jsem pak našel:
python -m osgar.logger test-lora-250817_164238.log –stream lora.robot_status 0:00:16.102659 3 [2, [0, 0, 0], b'running'] 0:00:17.834660 3 [2, [0, 0, 0], b'running']
… čímž považuji první pokus o integraci na M02 za úspěšný. … vlastně ne úplně. Zelenáč mne občas vytáčel do nepříčetnosti, když vypadávalo napájení serv. Do toho
občas vůbec nefungovala komunikace (kvůli těm špatně namapovaným USB zařízením). Řekl si o to sám a na dovolenou jsem ho s sebou další den nevzal. Naopak jsem mu ještě
„vykuchal” napájecí kabel na Odroid s pérky na jacku a po návratu ho plánuji vzít do Prahy zkušeným hardwarářům (jak se to sakra píše?) na revizi.
Večer jsem se ještě snažil do stejného stavu dostat červeného Matty M03, ale neúspěšně. :-( … jako šlo mi o klíčové věci, kde potřebuji drátovou klávesnici a monitor
na úpravu BIOSu, zaklikání automatického logování a pokus o nastavení virtuálního monitoru. A to se mi asi úplně nepovedlo, protože přehrání zvuku nejprve šlo, ale po
rebootu bez monitoru už nikoliv. A pak bylo 22:00 a další den jsme měli budík na 4:15 a delší cestu … (tolik tedy doplněný záznam z prvního dne dovolené).
24. srpna 2025 — DTC Systems 2 - W34 (zbývá 5 týdnů) - Dovolená
Po — dnes má svátek Helena … ale nechal jsem ji zavřenou na druhém počítači.
A ještě se mi ozvala DARPA, že v testovacím logu bylo 27 úspěšných initial_report,
žádný update_report a ani jeden úspěšný report obrázku. Tak jsem jim poslal screenshot, kde pro obrázky to vracelo 200 OK a pak napsali, že se omlouvají
a Your image submissions were successful.
(myslím si, že koukali jenom na můj první mail, resp. na první dump databáze, kdy mi to opravdu nešlo, a druhý opravný přehlédli)
Út + St — asi nejhorší úlohy jsou ty, co si člověk myslí, že jsou na 10 minut a po hodině si už není úplně jistý jestli to ještě dnes bude.
A to byla situace s crypt.py a zapojení šifrování do OSGARa. Myšlenka byla, že prostě vložím mezi starý
LoRa modul a odpovídající
lora_serial extra
crypt modul, který na cestě ven zprávu zašifruje a v opačném
směru přijatou zprávu dešifruje. Trivka ne? Sigh.
Asi první detail je, že „zpráva” je ve skutečnosti stream ukončený \n. Takže na přijmu je třeba data nejprve slepit a pak rozkouskovat
podle oddělovače (konec řádky). OK, tak pak asi není možné posílat raw bytes, ale raději text — Helena nabídla base64 (používá písmenka,
čísla a +/, tj. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/). Ještě je tam drobnost, že to kouskuje po čtyřech znacích (modří už
tuší proč) a když to úplně nevyjde, tak doplní =. Tento detail bych asi nevěděl, kdyby mi to stále neházelo chybu: Invalid Base64 string.,
případně Invalid base64-encoded string: number of data characters (1) cannot be 1 more than a multiple of 4 nebo ValueError: Invalid authentication tag. Message integrity compromised. … ano, jen ta druhá chyba je opravdu o špatném počtu znaků ale ostatní se mi tady stále nabízely.
Ono jsme tam na SubT měli ještě jednu vychytávku a to, že LoRa moduly na odeslání zprávy automaticky předřadily ID zařízení a |, takže tato část také
není šifrovaná. Jednou jsem ubral moc, podruhé málo … případně se to sesypalo, když jedna LoRa byla šifrovaná a druhá nikoliv, ale teď už to snad jede:
0:00:14.695118 6 b'Siw6r2EpWLCFf3vIRfrhKhyXxJWM3lk=\n' 0:00:15.291473 8 b'1|Siw6r2EpWLCFf3vIRfrhKhyXxJWM3lk=\r\n' 0:00:15.291572 0 b"{'name': 'lora_serial', 'delay': 0.596355, 'channel': 'raw', 'caller': 'run_input'}" 0:00:15.292091 7 b'1|2|[0, 0, 0]\r\n' 0:00:15.292423 3 [2, [0, 0, 0], b'running'] 0:00:23.995635 8 b'2|ejSI8/n1QMTOml8yj0J' 0:00:23.995733 0 b"{'name': 'lora_serial', 'delay': 9.300517, 'channel': 'raw', 'caller': 'run_input'}" 0:00:24.006094 8 b'PSwX5Mql1\r\n' 0:00:24.006193 0 b"{'name': 'lora_serial', 'delay': 9.310976, 'channel': 'raw', 'caller': 'run_input'}" 0:00:24.006941 7 b'2|[0, 0, 0]\r\n' 0:00:24.007295 3 [2, [0, 0, 0], b'running'] 0:00:24.007374 1 b'2|[0, 0, 0]\n' 0:00:24.007762 6 b'IsbNPedVczSrzlpycYicfY8B+l08Sts=\n' 0:00:25.821620 8 b'1|IsbNPedVczSrzlpycYicfY8B+l08Sts=\r\n' 0:00:25.821719 0 b"{'name': 'lora_serial', 'delay': 1.813858, 'channel': 'raw', 'caller': 'run_input'}" 0:00:25.822225 7 b'1|2|[0, 0, 0]\r\n' 0:00:25.822542 3 [2, [0, 0, 0], b'running']
… ještě bych měl prověřit ty varování na stream 0 — mám pocit, že je to očekávané, protože zprávy se odesílají jen jedna za 10s, ale jistý si
momentálně nejsem.
Jinak druhá zábava bylo to audio — dneska fungovalo, „samo od sebe” … čert aby to spral … nemám rád věci co někdy fungují a někdy úplně ne. Ona
i ta LoRa si ze mne chvílema dělala srandu:
0:00:00.217430 8 b'.' 0:00:00.957976 8 b'.' 0:00:01.711426 8 b'.' 0:00:02.463089 8 b'.' 0:00:03.214048 8 b'.' 0:00:03.965525 8 b'.' 0:00:04.716116 8 b'.'
A konečně jsem nezmínil, proč jsem v Út nenapsal ani řádek — holt notebook je už starší, tedy hlavně baterka, a místo aby detekoval, že už jsem skoro
na konci, tak v půlce kódování umřel … a to mne nějak přešla chuť. A ještě jedna „baterková” — dnes mi na procházce se psem došlo, že jsem zapomněl
vypnout BT repráček, který zatím používam pouze přes kabel, … prostě 3 baterky na robota, notebook a telefon (AP) … je třeba nabíjet skoro pořad.
Čt — dopoledne pršelo, což je ideální čas na spaní, čtení knížky nebo programování robotů. Můžete hádat, jak to dopadlo … dnes to byl nový modul
doctor,
který dostane signál, že robot je u zraněného a nasbírá si audio a video data (oboje jen několik sekund, resp. než dostane zase signál, že robot pokračuje dál).
To následně předhodí neuronkám na určení pose
(a jestli se během té chvíle nějak měnila, tj. zda detekuje pohyb) a speech2text, jestli nešťastník něco říká a zda je to srozumitelné. Oboje jsem měl
rozchozené na druhém počítači a ten sebou na dovolené nemám … tj. až zítra …
Dále jsem nabastlil na Matty M03 mikrofon, repráček a LoRa modul (gumičkama, prostě profi-programátorský přistup). Vypustil jsem USB-hub, když e-STOP mám
stejně jenom jeden, tak ho neotestuji a následně LoRa změnila pozici:
pci-0000:00:14.0-usb-0:2.1:1.0
na
pci-0000:00:14.0-usb-0:2:1.0
… no někdy si třeba dostuduji, jak se ta cesta/konektor kóduje. V prvním běhu LoRa nenaběhla a podruhé jsem jí se změnou konfigurace ještě nepouštěl. S čím
jsem trošku zápasil, jak to SW vypnout v OSGARu? Máme na to extra příkaz -without, ale -without lora estop není to správné řešení. Oba
moduly jsou totiž rozdělené na vícero Node a hlavně je třeba vypnout tu část, co se snaží komunikovat s HW, tj -without lora_serial estop_serial už dělalo
co jsem chtěl.
A na závěr bych zmínil dobíjení baterie. Včera jsem z 15.1V nabíjel 145 minut do 16.6V (a pak už to nevydržel, vypnul to a šel spát). Dnes jsem pokračoval
a ty zbylé 0.2V se dobíjely další 2 hodiny … ale prý je to možné, pokud se snaží balancovat jednotlivé články. No raději nepočítám, jak dlouho budu nabíjet
vše seriově. Po ukončení měly jednotlivé články: 4.16, 4.16, 4.24, 4.21 = 16.8V
p.s. sakra, už zase lije, tak na noční test nedojde :-(
Pá — ono včera večer (spíše v noci) jsem ještě trošku testovat šel, ale žádná sláva to nebyla. V první jízdě mne minul (asi už jsem byl moc blízko) a
pak se chytil do U-čkové pasti. Na konci vždy zjistí, že je to slepé, vycouvá a znova tam vleze. Ve druhé jízdě nenaběhla kamera a ve třetí jsem dostal
assert AssertionError: assert self.wav_fd is None.
A ráno jsem tedy assert opravil (nastával u druhého reportu), ale zjistil jsem, že mi zase nefunguje audio:
robot@m03-odroid:~$ pactl list sources short 0 auto_null.monitor module-null-sink.c s16le 2ch 44100Hz SUSPENDED
a zbytek dne/konec dovolené jsem už byl pouze rozladěný, pokud to mám říci slušně.
Teď večer jsem snad opravil drobnosti v Flush properly log file on Ctrl+C termination #1030 — iritovalo mne,
že musím nastavit duration aby se logy pro base-station správně uložily. A ještě drobný vedlejší efekt
Add tool for listing inputs and outputs of OSGAR module #1029 což dnes vypisuje vstupy a výstupy modulu a někdy
to snad rozšíříme na kontrolu JSON konfigurace.
So + Ne — v sobotu to bylo hlavně o nabíjení baterek, jak doslova tak přeneseně. Osm baterek jsem kupodivu všechny nestihl, ale pořad jsem to nesledoval.
Asi by se mi hodilo něco jako bylo u drony Tello — DJI Tello Battery Charging Hub.
Tam se postupně nabíjí jedna minibaterka za druhou …
A teď v neděli jsem si hrál s uv (dříve by se tomu říkalo ústřední výbor). Ono synchronizovat instalace všech pěti robotů a
basestation by jinak bylo peklo. Zatím to roste tady.
Příští týden bych rád rozchodil Verzi 0 = skórování jedním robotem (M03 s GPS). Je třeba najít alespoň jednu „oběť”, vyzvat jí k reakci,
detekovat pohyb a odpovědi, lokální výsledky zakódovat a šifrované poslat pomocí LoRa na Robotika basestation a z ní v DARPA protokolu přeposlat JSON na notebook, kde
poběží testovací server v dockeru …
p.s. jinak dnes audio na M03 fungovalo pěkně a mám konečně použitelný log (m03-dtc-day-250824_144100.log) na ladění zmíněné ver0.
31. srpna 2025 — DTC Systems 2 - W35 (zbývají 4 týdny) - Verze 0
Po — dnes se mi nic psát nechce, tak to podle toho asi bude vypadat … ale co čekat v pondělí, první den po dovolené? Na druhou stranu další dny to
asi nebude lepší, tj. s chutí do toho!
Musím přiznat, že „ústřední výbor” je mocný orgán/nástroj. Chtěl bych mít na notebooku stejné prostředí jako na robotech, abych mohl přehrávat i složitější
moduly jako doctor, co analyzuje audio a video a vytváří report. Ten ale potřebuje spousta balíčků a navíc v Python 3.10. U sebe jsem horko-těžko rozchodil
Python 3.11, tak se mi nechtělo to zase rozbíjet (ono ani teď to není plně funkční a např. pyaudio si nenainstaluji). Potěšilo mne tedy „kouzlo”:
uv python install 3.10 uv venv –python 3.10 uv sync uv sync –no-install-package pyaudio
… prostě si doinstaloval python, vytvořil s ním venv, uv sync se kvůli problemu s instalaci pyaudio nepovedlo a tak jsem to nainstaloval bez něj. Krása.
To samé má teď M02, M03, M04 a Franta.
Přehrání logu s modulem doctor ve verbose mode teď nejen ukazuje video, jak se válím na louce, ale doplňuje i „kostru” a zápis co říkám:
python -m osgar.replay –module doctor m03-dtc-day-250824_144100.log -F … Help me, help me. Can you help me please? stop, stop, don't please
za mne dobrý. Video ale sdílet neplánuji.
Út — pro změnu zase krátký report (zavřít jsem to měl v plánu před 25min). Co jsem včera nezmínil byl převoz dvou robotů v krabici. Celkem OK, jenom nosit bych to
nechtěl. Také jsem trošku znejistěl s tou vahou — je tam vedle robotů i nabíječka, repráčky, kabely … a gram ke gramu po chvíli nějaké to kilo dá. TODO zvážit.
Ještě poznámka, že i šroubky u víka přečnívají, takže buď kompletně zašroubovat, nebo nedávat a nějak zagumičkovat. A kamery musely pryč … a zase by bylo ideální, kdyby
se daly dat složené s nějakou vystýlkou do zadní krabice.
Za další HW update vděčím TomášoviR — M02 má teď nový jack do Odroida a nakrimpovaný napájecí konektor do ESP32. Testovací jízdu jsem dnes žádnou nedělal, jen jsem
robota použil pro update uv prostředí = přidával jsem balíček bitstring.
Pokud neznáte, tak jste na tom jako já — ptal jsem se Heleny, jak rozumně kódovat
strukturu, kde jednotlivé položky zabírají jen pár bitů (nebo dokonce jeden), tak navrhla použít bitstring. Ještě jsme
řešili detail, že některé položky jsou nepovinné a dohodli jsme se na extra bitu na položku. Ono u jednobitových položek je to stejně jedno a měla pravdu, že je to
pak čitelnější než použivat „sentinel values”. Co to znamená nevím, resp. je to vyhrazená hodnota pro „není k dispozici” … myslím to slovo „sentinel” …
to byla jen střílečka z mládí. … teda ten komentář:
@tonykingsmill2310, před 3 lety, Thank you for the video.. 36 years later I understand it😃 … mne spiše znervozňuje 36+3 … fakt je to tak dlouho?!
No nic, zpět k tématu DTC … ukázka použití bitstring je v report.py
St — asi už pomalu nedává smysl úvodní věta: „dnes to bude zase krátký report”, aneb za 25min máme call a do té doby to je třeba udělat, nebo odložit
na zítra. Ráno jsem doplnil zmiňovaný report.py a k němu
test_report.py a před chvílí to částečně integroval do modulu
doctor. Další krok je ale „předrátovat” vstupy a výstupy a nějak rozšířit LoRa modul, aby akceptoval i posílání raw dat (nebo to nějak obejít, což asi
není dobrý nápad). A příznám se bez mučení, že ráno jsem ještě narychlo koukal na Starship flight 10,
jestli to zase neodložili. Neodložili. A každý start je impozantní …
Hmm, tak to bylo opravdu krátké! Ještě jsem řešil reklamaci jednoho repráčku, a jestli to dopadne jak ještě dnes reagovali, tak klobouk dolů — prostě jeden ze čtyř
po nabití a zapnutí nic nedělá, zatímco ostatní říkají Bluetooth mode. Teď je už ready na vykuchání, protože to ani nechtěli poslat zpět … jen objednat další,
možná raději dva, ať alespoň jeden je OK.
Čt + Pá — „je to hotové, jenom to nefunguje” … ale to je asi očekávané. Vše by mělo být propojené, doctor posílá kompletní report přímo přes LoRa a
nově vzniklá konfigurace pro basestation zase řeší
druhou část rozbalování a posílání reportu do DARPA serveru. Ale …
python -m osgar.logger dtc-basestation-250829_121412.log k name bytes | count | freq Hz 0 sys 1198 | 7 | 68.4Hz 1 reporter.server_response 0 | 0 | 0.0Hz 2 reporter.lora_ack 0 | 0 | 0.0Hz 3 crypt.encrypted 0 | 0 | 0.0Hz 4 crypt.decrypted 0 | 0 | 0.0Hz 5 lora_serial.raw 0 | 0 | 0.0Hz Total time 0:00:00.102383
… to vypadá dost prázdné … a asi bych tam měl zase vrátit nějaké alive a pose zprávy, aby bylo vidět, že se spojení navázalo a celý problém je
pouze v signálu (basestation jsem nechal doma a šel testovat na chvíli ven).
Hmm, tak první důvod už je zřejmý:
File "/home/md/git/osgar-apps/dtc-systems/report.py", line 105, in pack_data int(round(report.location_lat * 3_600_000)), TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
… prostě nebyla chycená GPS. Zmátlo mne, že byla chycená i baráku (pod střechou) a venku pak ne … ale možná to USB napájení neutáhne a každý Start/STOP
to vlastně vypne.
Hmm2, nefunguje replay a vypadá to, že jsem se upsal někde o respiratory rate:
'hr': {'value': 70, 'time_ago': 0}, 'rr': ({'value': 15, 'time_ago': 0},) vs. 'hr': {'value': 70, 'time_ago': 0}, 'rr': [{'value': 15, 'time_ago': 0}]
… on msgpack nerozlišuje () a [] (před lety jsme se domluvili, že budeme posílat pouze zprávy s []) … ale tam vůbec nemá být to pole.
fixed — zapomenutá čárka z copy and paste.
Hmm3, koukám na první nahrávku uvnitř domu (m03-dtc-day-250829_120745.log) a tam to na GPS nespadlo, protože jsem to před tím zabil … resp.
než se zpracoval zvuk, tak už jsem zmáčkl STOP tlačítko. To by mne tedy skoro zajímalo, jak to dlouho trvalo u toho jediného logu co prošel:
python -m osgar.logger m03-dtc-day-250829_121743.log –stream doctor.audio_analysis app.scanning_person 0:00:18.790557 4 True 0:00:23.799429 4 False 0:00:29.298407 21 [True, " I forgot I should talk to you, so don't make it up there."]
… tak cca 5.5s. Možná v tom reportu přeci jenom budeme používat i proměnnou time_ago.
So — hmm4 u poslední páteční jízdy venku se report sestavil, zabalil, zašifroval a odeslal na LoRa modul #2, ale … nikde tam není vidět potvrzení,
že to ten modul přes rádio poslal dál?! Zkusil jsem ten modul přepojit jen do notebooku a pustil jednoduchý starý test … a selhal. Z nějakého důvodu
sice modul nabootuje, zapne vlastní WiFi AP, ale přes USB zprávy nepotvrzuje a neodesílá. Druhý modul #4 jsem hloupě nechal doma se zeleným robotem,
takže teď jsem tam provizorně zapojil basestation #1 a to funguje podle očekávání. Jen už není žádný příjemce.
Na téma modulů bych možná ještě přihodil zprávu, že Jakub našel další dva chybějící LoRa moduly #3 a #5. Přístí týden bude ve znamení plné HW integrace.
MartinL psal, že v Praze už je k dispozici nová GPS a USB adaptéry, tak snad nechybí nic … no vlastně ještě ty DARPA e-STOP moduly.
Ne — Pasáček robotů. Dnes jsem měl větší testovací polygon:
… to měřítko dole má 36m takže zas tak velká louka to nebyla … ani jeden hektar. No jsem teď napůl offline, takže se do katastru nepodívám.
![]() Testovací polygon - louka |
No nic, bylo krásně, vypustil jsem robota, ten tam asi 40min pojižděl a hledal oběti a po velkém mávání mne nakonec našel, tj. žádná velká sláva. V 3D to není
rovná placka, ale svah s boulí, takže jsem ho ani většinu času neviděl, ale něco to dělalo, LoRa na robotovi ukazovala 7 odeslaných zpráv a log má cca 1.1GB.
Možná by to nebyl až tak špatný job pást na louce roboty.
Jinak podle YOLO jsme tam nebyli sami:
sheep 0.61328125 (0.8192199468612671, 0.4578302502632141, 0.8436950445175171, 0.49831318855285645) frisbee 0.66552734375 (0.5375487804412842, 0.34505948424339294, 0.6024169325828552, 0.41825729608535767) cow 0.55810546875 (0.5712890625, 0.42831140756607056, 0.818652331829071, 0.8615056276321411) kite 0.70751953125 (0.617016613483429, 0.15629439055919647, 0.6402954459190369, 0.20351341366767883)
… mám za to, že tam nic takového nebylo a jediné platné objekty jsou:
dog 0.63525390625 (0.4834960997104645, 0.4827325642108917, 0.5638672113418579, 0.603870689868927) person 0.509765625 (0.4732910096645355, 0.3251953125, 0.5673583745956421, 0.6000533103942871)
… ale to uvidíme.
Také jsem otevřel PR #15 - ver0, ale hned mi došlo, že minimálné noční konfiguraci jsem ještě
nedoplnil …
p.s. koukám na „data ze Severu” resp. tu 40min nahrávku a … zase nešel zvuk :-(. Další pozorování je, že zatímco YOLO na detekci osob se občas chytne i z větší
vzdálenosti, YOLO-Pose nikoliv. To znamená, že současná verze, že nejprve používáme obyčejné YOLO a teprve zblízka tu kostru je vlastně dobrý nápad. Ta detekce je
tak počmáraná, že bych skoro řekl, že je to po annonymizaci a tedy zveřejnitelné …
p.s.2 ještě bych mohl přidat přehled z GPS/JOSM … no nevím, zda ty cíle jsou úplně rovnoměrně rozložené? Také přemýšlím o tom vlnění — to můžu odstranit
ale ono to vlastně lépe skenuje prostor … úvodní 2min video
p.s.3 noční jízda s LoRa #1 a #4 a probublalo to až do serveru:
python -m osgar.logger dtc-basestation-250831_184050.log k name bytes | count | freq Hz 0 sys 1394 | 9 | 0.1Hz 1 reporter.server_response 430 | 2 | 0.0Hz 2 reporter.lora_ack 0 | 0 | 0.0Hz 3 crypt.encrypted 0 | 0 | 0.0Hz 4 crypt.decrypted 38 | 2 | 0.0Hz 5 lora_serial.raw 84 | 2 | 0.0Hz
… jako server odpověděl, že už ID=1 a ID=2 viděl a že tam není nic nového, ale to je možná chyba toho serveru, že na docker compose down nesmazal DB a měl …
ale stejně to považuji za úspěšné ukončení verze 0.
7. září 2025 — DTC Systems 2 - W36 (zbývají 3 týdny) - Čtyřlístek a STIX1
Po — při kompletaci verze 0 mi došlo, že jsem ještě nevyzkoušel DARPA e-STOP! A ano, měl jsem dva přímo na stole, což lehce indikuje, jak to tam vypadá.
Je provázaný na app.emergency_stop, takže se to chová stejně jako manuální STOP tlačítko a ukončí to program. Pro verzi 0 určitě dostatečné. Jen detail, že je třeba
pak modul zase z robota vytáhnout, aby se resetoval — jak se jednou přepne do STOP stavu, tak už v něm „věčně” zůstává. Ano, je nějaký reset příkaz, ale to
„někdy přístě”.
Dnes jsem si také vyzvedl GPS, USB adaptéry a barevné LEDky pro M02 a M03 (od MartinaL), tak zítra budu kompletovat a pozice USB portů už snad budou definitivní.
A ještě zmínka k DARPA serveru — dostal jsem odpověď, že v příkazu docker compose down -v to -v není verbose, ale volume a to je tedy nutné
zavolat, aby se opravdu ten skórovací server plně resetoval a akceptoval nové reporty.
md@md-ThinkPad-P50:/data/dtc/test_triage_submission_server_20250721$ docker compose down [+] Running 3/3 ✔ Container manager Removed ✔ Container db Removed ✔ Network test_triage_submission_server_20250721_appNetwork Removed md@md-ThinkPad-P50:/data/dtc/test_triage_submission_server_20250721$ docker compose down -v [+] Running 1/1 ✔ Volume test_triage_submission_server_20250721_db_data Removed
Út — dnes nic moc, a už je zase pozdě a zase není úplně dobrý nápad zkoušet nový HW, snad zítra by to mělo být klidnější. O co se chci ale podělit je stress
ze včerejší registrace. Ono asi první podivnost je, že nepřišel žádný upomínkový e-mail, ať se registrujeme, a pouze někde na fóru je pracovní dokument, kde jsou
odkazy (URL, uživatel, heslo) a deadline: Each individual participant must register on the website below by 11:59 p.m. ET Sunday, September 7, 2025.
Fajn, tušil jsem zradu, takže jsem se do dokumentů včera díval a tuto informaci vydoloval. Ale … po registraci, kde chtěli i foto (nakonec jsem použil to
z M03 a nedělního testování), přišel mail: IMPORTANT: All permanent residents and foreign nationals are required to complete and submit the online DARPA Form 60 by August 22, 2025. Failure to submit the form may result in denial of entry to the event. … hmm, tak to mne „trošku” polilo … ano nedává to smysl, ale nakonec
je to vládní organizace a jsou dost důslední! Nic, Form 60 jsem již asi podesáte vyplnil a poslal, i když bylo 14 dní po termínu. (jo a poslal stížnost)
Teď koukám na nové maily a je tam DTC System Teams Registration Reminder … jak za starých časů. A usmívám se, protože tam byla i odpověď na moji stížnost:
Sorry, that date should now be September 7, we extended it. Je tam i ACK na CITI certifikát ze školení, které si ještě doplňoval Franta: Received, thank you!
a tak snad už jenom chybí podepsat papíry, že když se nám cokoliv stane, tak DARPA za nic nemůže … tj. dnes jen tato úřednická vložka.
St — Matty M02 svítí jak vánoční stromeček. Zapojil jsem LEDky od MartinaL, flashnul poslední FW (MartinL
na callu zmínil, že dodané Neopixel destičky jsou mix různých verzí, tj. bylo třeba upravit komunikaci), napsal mini OSGAR PR
a svítilo to pěkně. Také MartinL zmínil, že je vlastně náhoda, že mi M02 a M03 bez problému fungují — viz dnešní update
na Mattyho domácím webu … a jsou tam vidět i zkompletovaní M04 a M05.
Čt — musím uznat, že noční testování je vždy adrenalin! Dneska měli už oba roboti GPS a zelený navíc svítil zeleně (skoro jsem uvažoval, jestli každemu
nedat default jejich denní barvu?). Jinak člověk nic nevidí … měl jsem pocit, že se tam někde na druhém konci zahrady potkali a zde je důkaz:
![]() Noční setkání |
Prostě oba mají „dálkové” a moc to neřeší. Ještě jsem chtěl zmínit, že červený měl stále zapojenou LoRu #1 a na notebooku jsem měl LoRu #5 od Jakuba a zpráva
do chaty přišla … jenom jsem zapomněl na testovacím DARPA serveru pustit start. :-(
b'{"run":"Run1","team":"Test Team","user":"testuser","system":"Matty M01","clock":0.0, "report_id":"dd9f2368-00da-49d7-b327-bcb65eaa3c91","report_timestamp":"2025-09-04T19:31:27.385662", "report_status":"run not started","casualty_id":2}'
… no nic, je pozdě a zítra se mají setkat s dalšíma dvěma bratříčky (M04 a M05), tak ať se na to dobře vyspí. Už si živě přestavuji, jak to bude komentovat
paní má … … ještě, že jsou tady v pracovně palandy, kam je možné je „štosovat”.
So — dnes by si to zasloužilo bohatý report s fotografiemi, ale … asi až zítra večer. Jednak pomalu nemám sil a dvak je priorita rozchodit ještě oranžového M05
(růžový M04 už jede a stihl za světla ještě „test na louce”). Včera v noci jsem oba roboty přivezl na základnu a po pravdě první noc spali v autě, protože celkem
fest lilo a nechtěl jsem s papírovou krabicí upadnout na schodech. Dnes jsem je oba přinesl než jsme jeli na výlet a slova „jé, ten robot je růžový” de facto navrátila
status quo, takže dobrý. OT na výletě jsme potkali 6 „týpků” co si „hráli” s teréními RC autíčky … myslím, že bych si s nima rozumněl, ale Matty M2345 jsem
s sebou neměl.
Zítra snad doplním info na Matty stránce — jsou moc pěkný, ještě doslova neposkvrnění … to už se teď o růžovém tedy řící nedá, ale
oranžový na stole co „sosá” uv sync ano. Nevím, zda si nechat pointu až na zítra, ale
- nové baterky jsou o 2-3mm širší než ty v M02 a M03, takže se vedle Odroida nevejdou
- Odroidu vadil na krabici jeden „čudlík” (myslím, že v tom místě ze spodu je pamět)
Oboje snad pořešeno. MartinL mi schoval do krabic i překvapení ve formě držáků kamer i pro M02 a M03, aby to bylo stylové, tak po testování možná budu zase vrtat a
řezat. Mám na to dokonce šablonu!
Ne — asi bych použil oblíbenou frázi: „Jezinky také slibovaly”, aneb jeden rychlý odstaveček a budu rád. V únoru se na to chtělo tělo vykašlat a nyní
mi naznačuje že toho má plné zuby. No nic, snad se i toto brzy sklidní …
Dnes jsem updateoval všechny roboty včetně basestation M00. Co mne překvapilo byl fakt, že na M00 fungoval zvuk (!), tak jsem se to pokoušel zopakovat i na M04,
ale netuším, zda to povedlo. Vzal jsem všechny 4 roboty ve stavu jak dnes odpoledne byli a zkusil první STIX, alespoň mám pocit, že na
SubT tak nazývali System Test Integration eXcercise, ale měl bych si to ověřit. Jedna cifra bohatě stačí —
více jak 10 jich opravdu nedám. Ten chaotický pohyb, co můžete vidět na videu je rozšířená Verze 0. Roboti nenajíždějí až
na 2m od oběti, ale sledují ji ze vzdálenosti, kdy horní část detekce je v pásu 10% od horního okraje (pokus). Moc terén na zahradě není, ale občas roboti zapadnou do děr
od myší a pak špatně odhadnou vzdálenost k oběti. To je asi priorita na příští týden. Také je třeba zkompletovat všechen HW, aby nám
Čtyřlístek přinesl štěstí!
Zatím jediné jednoznačně rezervované jméno/přezdívka je Fifinka = M04. TODO Bobík (asi zelenej), Myšpulín a Piňďa.
14. září 2025 — DTC Systems 2 - W37 (zbývají 2 týdny) - PolyMatty ver1
Po — dnes jenom odpočinkově …
… toto je důvod proč roboti zastavují daleko od detekovaná postavy. Červená je 0, tj. neplatná hloubka. Ono i ta modrá postava má hodnoty 30068, tj. 30 metrů
a to také není pravda. A pak je tady ten „detail”, že bbox nesedí, takže 0 se odfiltruje maska a odhad vzdalenosti (myslím, že je tam medián) je z toho zbytku
detekce země. Závěr, pokud je bbox malý, tak se hloubkové kameře nedá vůbec věřit.
p.s. M04 pohled ze včerejška … je to „společenská událost” …
Út — ten čas hrozně utíká a timeout 22h je za pár minut. Dnes jsem řešil primárně Robotour, aby mělo 10 týmů waypointy pro
nakládku a vykládku. Done. Pak jsem zkoušel zapojit přehrávání MP3 v OSGARovi
— pustil jsem jen subprocess.call() na ffplay a dělá to co má. Tedy až na to
že na M05 jsem zase viděl mé silně neoblíbené:
0 auto_null module-null-sink.c s16le 2ch 48000Hz IDLE 0 auto_null.monitor module-null-sink.c s16le 2ch 48000Hz IDLE
Zkusil jsem opět pipewire a wireplumber, co používá Jirka … a začalo to fungovat a vydrželo to i restart:
43 alsa_output.pci-0000_00_1f.3.analog-stereo PipeWire s32le 2ch 48000Hz SUSPENDED 43 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor PipeWire s32le 2ch 48000Hz SUSPENDED 44 alsa_input.pci-0000_00_1f.3.analog-stereo PipeWire s32le 2ch 48000Hz SUSPENDED
Uvidíme, jak se to bude chovat dál a pokud vydrží, tak přeinstaluji audio na všech robotech. Statický test dopadl podle očekávání:
přehral zvuk, ten si zpětně nahrával, takže ho zase dekódoval a person seděl stále před robotem, takže opakovat …
A ještě jsem si přenastavil to vypínání přidáním souboru /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla
(také Jirkovo doporučení pro starou verzi polkit) a fungovalo to. Takže na vypínání z příkazové řádky už není třeba sudo.
St — dneska je takový D-den: Dren, Déšť, Deprese.
Ano, mohl bych teď testovat roboty v noci za deště, že by ani psa nevyhnal,
ale vím, že by to nedopadlo dobře, tak proč to pokoušet? A zároveň nemám úplně sil na kódování a tak jsem místo toho shlednul
předposlední a poslední podivné roboty
od Jirky a co nového Jarmil od MartinaL. Teď už bych možná něco dělal, ale za 25min
je call, tak stěží dopíšu tento odstaveček.
Možná přidám info od Franty, který narozdíl ode mne si přečetl pravidla pořádně, že na oběti je třeba muvilt 2x!
Alertness: Verbal NORMAL if: Responsive to prompts after at most 2 attempts with coherent and relevant speech.
To zároveň zdvojnásobuje čas potřebný strávit u každého případu a jsme pomalu u 30s. Do toho je potřeba mluvit a poslouchat …
Dále bych potřeboval nějak rozumně u spuštění rozlišovat co mám za robota — jednak budou mít jiné geofence, dále systém je součástí
reportu a … to je asi všechno. Vygeneroval jsem si i různé hlášky pro „ready” pro jednotlivé roboty, ať je rozliším i po tmě
podle hlasu. Prostě podobné nesmysly …
Čt — už se zase blíží timeout 17min … dnes na hraní nebyl moc čas, ale komentáře ze včerejšího callu jsem chtěl alespoň zkusit.
Prvně Jirka měl pravdu, že avahi by mělo fungovat na linuxu automaticky a tak už se místo IP adresy přihlašuji např.
na m05-odroid.local. Fakt to funguje. Uvidíme, až se změni Access Point, ale třeba to bude OK. Souběžně, ale začal zlobit github
s klíčema … ale možná je tam nějaká souvislost s 9/11 a dalšíma službama, které dnes nějak „pokulhávaly”. Těžko říci, jen spekulovat.
Další krůček je propojení proměnných prostředí do OSGAR configu (viz PR #1032). Teď už
každý modul ví, na kterém běží robotovi, pokud to k něčemu využije. A zůstává zachované přehrávání z logu i na jiném počítači s jiným
nastavením.
No a do třetice už jsem začal přeinstalovávat to audio. Na M05 3x po sobě fungoval PipeWire a na druhou stranu M03 zase nefungoval,
tak jsem to v druhém testu přeinstaloval i když podruhé audio zrovna fungovalo. Asi budu i nadále sledovat, ale momentální plán je to
přeinstalovat na všech robotech.
Pá, So, Ne — dnes je fakticky už Út z dalšího týdne, tak to hrubě odfláknu/zalepím. V pátek jsem místo DTC udělal
update Mattyho a o víkendu to byla Robotour 2025 v Buchlovicích. Bylo to fajn, ale fakticky
jediné co jsem otestoval je rozborka a sborka, řízení „v jiném časovém pásmu” (resp. nevyspalý) a „robotem rovně” na parkové cestičky.
Jezdil jsem v jednom časovém okně pouze s Fifinkou/Matty M04, objel kus parku a pak bylo další oficiální soutěžní kolo. Ale bod by asi získal.
Zde je alespoň krátké video … což mi připomíná, že mam v Inboxu fotky od PavlaS, jak jsem skládal roboty do boxu.
A ano, PolyMatty aneb Polyphonic Matty je také hláška od PavlaS.
21. září 2025 — DTC Systems 2 - W38 (zbývá týden) - Hardware freeze
Po — pro změnu přejezd do Prahy a „boxovací” cvičení s červeným a zeleným. Zajimavé bylo, že se tam nevešli a musel jsem extra utáhnout šrouby na horní
krabici. Také další den červený (spodní) trošku pokulhával, takže bych je na noc asi měl pouštět ven ať se nemačkají, minimálně kola. Také jsem navrtal držáky
na kameru podle šablony od MartinaL, ale na test už nedošlo.
Út — dnes jsem byl večer u TomášeR na „servisní prohlídku kloubu” resp. uzemnění DIR pinu na senzoru, jak MartinL popisuje zde.
No já to ani nevidím a TomášR to vybrousil, napájel a otestoval, než já vůbec nabootoval a připojil se k robotovi. Ale vše snad vypadá OK. Také koukal na LoRa #2,
která na začátku posílá nějaké debug hlášky, ale pak už nekomunikuje. Zatím nemám žádný nápad, čím to je.
St, Čt — „Jestli s tím robotem narazíš do mrtvoly, tak to bude velký úspěch!” … tedy nevím, jestli Jirku cituji dostatečně přesně. Zmínil to na přelomu
těchto dvou dnů, tak to rovnou spojím. Řeč byla na téma japonské vesmírné agentury v článku z Elrobu, aneb
definice tří úrovní cílů:
Minimální
- dostat 4 roboty ve 4 hodiny ráno na letiště
- úspěšně odbavit roboty a baterky
- vyzvednout roboty v Atlantě a dostat je na ubytování
- projít předstartovní DARPA homologací (E-stop)
- alespoň jeden robot odstartuje v alespoň jednom kole
Ku spokojenosti
- alespoň jeden robot nalezne alespoň jednu oběť a úspěšně odešle report o zdravotním stavu
Vynikající
- Robotika získá za report alespoň jeden bod
Ono se možná smějete, ale když jsem včera (St 17/9) ráno koukal na KLM, jestli by nebylo možné odbavení už den předem, tak na mne vyskočilo:
A strike at KLM: Are you travelling to, from, or via Amsterdam Airport Schiphol around Wednesday 17 September 2025? A strike has been announced by KLM ground staff and flight disruptions are expected. Please check My Trip and the KLM website for the latest updates. … a ano, chystám se letět přes Amsterdam a KLM jsem vždy považoval za pohodovou leteckou společnost.
A ty dvě krabice robotů také nebude žádná sranda (testováno na Robotour a to jsem tam měl jen jednu). Objednal jsem extra popruhy
(jj, barevné jako roboti), což indikuje můj stav šílenství … ale třeba to pomůže. Jirka sice zmiňoval, že popruh na zavazadlo používal, ale posledně mu přišel v zavazadle (!) … no
nechci tu scénu krabice bez víka úplně vidět …
A jinak? Dnes ráno (Čt) jsem si vyzvedl ještě zbývající dva mikrofony (jako jestli to má cenu nevím, … začíná Marvinovská deprese … nebo jak by řekl v nekonečném příběhu Morlor:
„Né, že by na tom záleželo, ale ano”). Vlastně vtipná byla i DARPA včera večer s E-stop modulama: All teams that have UGVs should have been shipped the Tier2
estop receivers several months ago.
Toto bylo v odpovědi na fóru jednomu z týmů, ale my jsme na tom vlastně stejně. Řešili jsme to před březnovým workshopem pro dva roboty, že máme moduly ze SubT, ale pro
soutěž už se nikdo neptal. Ano, jeden z úkolů je těch pár náhodných E-stopů, co jsem kde našel a posbíral, zapojit do všech robotů, jestli fungují … případné náhrady
ale plánuji řešit až ve státech.
p.s. Team Robotika confirmed they had working Estop receivers from SubT in January, there was not further request for additional receivers afterwards. … ale inventura dopadla
celkem dobře. E-stopů mám 5, tj. můžu použít 4+1 a původně i pro Matty M01. Ale z korespondence tuším, že nějaký jsem flashoval s DTC novým šifrovacím klíčem, takže ten fungovat
postaru nebude … ale fakticky si ani nepamatuji, jestli jsem to rozchodil pod Linuxem nebo Win7? Co chybí jsou dva USB micro B kabely na LoRa a ten jeden problémový LoRa modul.
V nouzi jeden kabel použiji ze starého mobilu a M02 pojede pouze jako kamufláž. V plánu mám ještě sdílení reportu přes rsync a DARPA WiFi, ale to skoro abych začal a nevím, zda je
to nejvyšší prio … asi není.
Než padla tma, tak jsem si venku hrál s možností zapojení extra HW do Odroidu: LoRa, E-stop, mikrofón a reproduktor. Pracovní varianta je E-stop a LoRa moduly dát do krabice a mikrofón
a reproduktor ze strany k držáku kamery. No až toto MartinL uvidí, tak už se mnou nepromluví … ale nápady, jak to udělat jinak jsou vítány.
Pá — dnes jsem dojel kolečko testovaní kompletní HW konfigurace a zelená ovce rodiny je rozhodně Matty M02:
- nefunguje LoRa #2
- nefunguje estop (asi je to ten jediný, co jsem pro DTC už flashoval)
- používá staré audio a nové nejde nainstalovat
$ sudo apt install pipewire pipewire-audio-client-libraries libspa-0.2-bluetooth Reading package lists… Done Building dependency tree… Done Reading state information… Done pipewire is already the newest version (0.3.48-1ubuntu3). pipewire set to manually installed. Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: libspa-0.2-bluetooth : Depends: libspa-0.2-modules (= 0.3.48-1ubuntu1) but 0.3.48-1ubuntu3 is to be installed pipewire-audio-client-libraries : Depends: pipewire (= 0.3.48-1ubuntu1) but 0.3.48-1ubuntu3 is to be installed Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu1) but 0.3.48-1ubuntu3 is to be installed E: Unable to correct problems, you have held broken packages.
… zlaté uv v Pythonu. Asi by se hodil nějaký mirror systémů, protože už s tím moc experimentovat neplánuji. Možná dump, co vše je nainstalované? Nebo holt Mattyho M02
kompletně přeinstalovat — to asi může být i nejrychlejší cesta … přeci jenom byl první.
Ještě jsem chtěl komentovat MartinaL, jak jsem posledně psal, že už se mnou nepromluví … tak se ozval cca do 10min od toho, co jsem to dal na web, že posílá po synovi 20cm
USB micro-B kabely do Prahy. rychlejší jak e-mail … nevím jak to dělá, ale podpora super.
Toto je poslední víkend, tak zítra asi budu testovat — ty gumičky, co drží reproduktor a mikrofón asi nevydrží, tak zkusím pohledat něco spolehlivějšího. Také bych chtěl napsat
těch pár řádků, ať si každý robot hraje hlavně na svém písečku a zkusit to. A asi bych měl udělat i nějakou fake teleoperaci — ono se to od nás asi očekává a pohled ze 4 robotů
může být celkem komický … nebo také ne.
p.s. dnes jsem do toho zase vrtal, a to doslova. Krásného M04 a M05 jsem vzal největším vrtákem a zvětšil průchod na jack od mikrofonu. A do M02 jsem vyvrtal díru na kabel od GPS
antény … ale už je to snad skoro HW freeze.
p.s.2 přemýšlím, jestli mám být nervózní z tohoto:
… a o KLM customer service raději pomlčím … skoro mi přijde … ale řekl jsem POMLČÍM!
So — Funguje to, jen to vyzkoušet! … abych tak parafrázoval dědečka se svým rčením Je to hotové, jen to dodělat.
Dnešek bych nazval prvním pokusem o hardware freeze. Všechny repráčky a mikrofony jsem přidělal — jako řešení je trošku „brutální” aneb má brute force, ale noční test
to, zdá se, přežilo. V obchodě neměli gumičky (pravda, je to provinční Penny s potravinami a drogerií) a tak jsem si vzpomněl, že před lety jsem píchnul duši u Vari traktůrku
(resp. ona byla ušlá, já si toho nevšiml a když motor zabral, tak obratem fiknul ventilek) a když jsem se tenkrát prodavače ptal, co s tou starou, tak mi odpověděl to tak leda
na gumičky … a hle, už je to tady … ani ne 10 let možná. … jen jsou krátké, tak kombinuji dvě se svorkou na kari-sítě … no hrubé řešení.
Při tom bych zmínil důležitost stran — pokud je repráček vlevo, tak je jak dostupný on/off vypínač, tak mode (začíná defaultně na Bluetooth, další je Radio a pak
konečně AUX). Doprogramoval jsem drobnosti, aby roboti reportovali po LoRa svoji polohu každých 10s (zneužil jsem existující třídu DTCReport, která vlastně může obsahovat
i pouze souřadníce, tak jsem začal posílat i casualty_id, které nechávám 0 pro info o poloze robota. Až na drobnost s koncem řádků a že se base-station to rovnou snažila
reportovat DARPA to šlo. Co mne ale dostalo byl fakt, že když jsem si to přehrál na notebooku, tak to fungovalo?!
(python) md@md-ThinkPad-P50:~/git/osgar-apps/dtc-systems$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS 2b7eaf1ff4d0 test_triage_submission_server_20250721-manager "uvicorn app.main:ap…" 2 weeks ago Up 8 days ad969efa92b6 timescale/timescaledb:latest-pg14 "docker-entrypoint.s…" 2 weeks ago Up 8 days (healthy) PORTS NAMES 0.0.0.0:80->80/tcp, [::]:80->80/tcp manager 0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp db
to ten testovací server přežil restart?! Tak to mne „trošku” děsí. No nic, upravil jsem to, ať base-station posílá report na IP mého notebooku a přidal podmínku na nenulovou
casualty_id a jede to.
Další drobnost, co jsem přidal, je cílená geofence pro konkrétního robota, např. m03-geofence v JSONu je pouze pro Matty M03 a záložní je společná geofence.
To fungovalo OK, jenom při přehrávání z logu s vynucenou novou konfigurací zmizela informace o jméně robota v proměnných prostředí. Drobná zrada, ale dá se s tím žít.
A za denního světla už jsem to nestihl, tak došlo na poslední společnou noční jízdu. Roboti vypadají trošku jak světlušky, ale na telefonu není vidět vůbec nic. Vzal jsem na test
jenom 3 (zelená ovce zlobí), ale zjistil jsem, že i LoRa #4 má nějaké problémy. Může to být kabelem z mobilu, že je skřiplý, nevím. Dobrá zpráva je, že všem třem fungoval
reproduktor (nočním údolím se to celkem rozléhalo) a mikrofón jsem ještě nekontroloval …
… tak jo všichni tři slyšeli sami sebe, takže to beru jako Audio I/O - OK.
… hmm, tak to bude chtít ještě revizi, protože v pravém dolním rohu pravé kamery vidí ten mikrofon. Také nevím, proč ta „obří detekce”, nebo falešné detekce na kolech.
Ne — dnes pár pozorování:
- 4 roboty neunesu
- do kufru auta by se vešly i 4 krabice, tj. 8 robotů
- 4 roboti do malého bytu nejsou ideální
- pokud roboty obalím na fest molitanem, tak se má krabice tendenci sama otevírat
… ve zkratce, zítra má pršet a tak jsme již dnes večer přejeli do Prahy. Bylo to trošku o nervy, ale to asi bude celý příští týden, tak je třeba si jen zvykat.
Dnes jsem dal ještě jednu šanci zelenému Matty M02 a řekl bych, že jí promarnil. Zarytě mlčel = audio nenaběhlo. Tak jsem alespoň na všech robotech pustil:
apt list –installed > ~/"$OSGAR_LOGS_PREFIX"installed.txt
ať mám zítra co číst …
Trošku jsem refaktoroval spouštění zvuku a jeho následnou analýzu. Teď je to nově čistě v kompetenci modulu doctor.
Upravil jsem i base-station, aby potvrzovala přijaté reporty … a výsledek se brzy dostavil — stačil první report a zacyklila se, aneb sama sobě si poslala
ten samý report. Seznam adres modulů pak vypadal takto:
[5] [1, 5] [1, 1, 5] [1, 1, 1, 5] [1, 1, 1, 1, 5] [1, 1, 1, 1, 1, 5] [1, 1, 1, 1, 1, 1, 5] [1, 1, 1, 1, 1, 1, 1, 5] [1, 1, 1, 1, 1, 1, 1, 1, 5]
… přislo mi to celkem vtipné (naštěstí komunikace s testovacím DTC serverem je hodně pomalá, takže výše je kompletní report). Přidal jsem tam hack, že pokud je
v adresách 1, tak už to neposílej … a tím přidávám skrytý předpoklad, že base-station bude mít LoRa #1, tak schválně kdy mne tento klacek uhodí do hlavy
(oblíbená scéna z Mrazíka … „to jsou ty naše klacky” … prostě jednou se to vrátí).
Na závěrečný test jsem si vzal pouze M04 a M05. Dobrá zpráva je, že i LoRa #4 dnes něco posílala, špatná zpráva pak, že těch zpráv zas tolik nebylo. Možná špatný signál
nebo kolize zpráv … další testy až s novým kabelem.
Nasbírané logy jsem ještě neprošel, ale v reálu tam bylo několik falešných detekcí — a to bych si asi nechal do ver2 a to co mám (i bez integrace „externího doktora”)
raději zamergeuji (osgar-apps PR #16).
To samé už asi i s instalací Odroidu pro Mattyho (matty PR #15)-
p.s. na Herz rezervaci jsem se dnes dostal. Buď se tomu nelíbil můj prohlížeč (nebo operační sysém) a nebo ten mail byl příliš rychlý. Nicméně online check-in jsem
s autem nakonec stejně raději neudělal … aby to neočekávalo, že budu mít v USA data?? No ještě se poradím.
p.s.2 uploadnul jsem včerejší video — ale já vám říkal, že na něm nic neuvidíte
26. září 2025 — DTC Systems 2 - W39 - Hvězdná pěchota odlétá …
Po — ráno jsem vyzvedl popruhy na krabice a večer kabely od MartinaL, díky! Rychlý test s LoRa #4 prošel. Vedle popruhů jsem pořídil i váhu na zavazadla a krabice
s robotama má 16.5kg = dobrý! A jinak … ráno mi přišel titulek vtipný, ale teď škoda komentovat. Měla to být parodie/analogie se Superstar a že UGVs jsou spíše
„pěchota” …
Jo ještě jsem si volal s leteckou společností — co fungovalo bylo číslo na letiště (+420 220 111 888) ti mi dali číslo na KLM (+420 225 439 799), kde jsem nevědel co vybrat a tak jsem vybral
volbu BlueWing (?) a že členství nemám, pak mne to přeplo do angličtiny, ale obratem jsem se dostal k operátorovi a ten snad připsal k letence poznámky, že potřebuji asistenci
a druhé zavazadlo. Doporučil mi i zavolat Deltě (+420 439 798), jen tam byl 25min wait time … (pozn. to číslo na KLM jsem před tím neúspěšně hledal a teď koukám, že
Delta se liší jen o -1)
A ještě mail od DTC: We expect that the keys update will work as the same hardware is being used for both events. However, if during estop testing we do find a problem with the estops we should have spairs available to replace any that have problems.
Takže samá pozitiva a sociální jistoty … tak nevím, co je špatně.
Út — no v čase -3min ten report bude opravdu krátký! Vezmu-li to od konce, tak probíhá první pokus o zabalení robotů. Vyndal jsem všechny baterie, pokusil se zajistit volné
součásti v krabicích a cvičně omotával bublikovou fólií. Mno, ideální to není, ale jako ver0 by to šlo (resp. ver0 by nejspíš byla zcela bez polstrování, takže je
to lepší).
Před tím jsem zamergeoval oba PR, co jsem o nich psal o víkendu: osgar, matty by tedy jeli z masteru a osgar-apps z nové feature/dtc-ver2 (fallback na ver1),
jen update robotů asi proběhne až „za vodou”, snad.
Pak jsem si vzpomněl na falešné reporty z posledního testu a zde jsou vzorky:
V obou případech v jednom snímku (při té příležitosti jsem si všiml, že jedu na 10fps) je osoba detekována, ale jinak není. Odhad hloubky u druhého
případu je nepoužitelný, tak asi nejlepší varianta bude oboje zahodit.
A před tím jsem si pracovně hrál s AI, ať navrhne integraci 4 mobilních kamer do 2x2 OpenCV okna, když vstupní data jsou v H.265 kódování. Vypadá to celkem rozumně, ale na robotech
to také nevyzkouším. Moc se mi nelíbí případné výpadky a jak si to s tím poradí … asi zábava do letadla.
Jinak zítra budu cestovat, takže vlastně by nebylo co reportovat a ani nebude kdy. Leda by to bylo z externího zdroje, jak dnes psali na fóru, jak bude příští týden
ošklivé počasí:
A pro dnešek bych to uzavřel zprávou, že jsem našel tu mini-dronu. … no ona je tak malinká, že když je na ní ochranný kryt pro létání v místnosti, tak ta drona samotná
není skoro vidět. Bude to asi další mini-post-dtc-projekt, kdy drona vystartuje ze zadní krabice Mattyho … to je v dnešní době in.
Čt — dnes to bude, jak jinak, krátké … ráno jsem udělal CheckIn pro letenku (jediná zrada byla, že na zaplacení druhého zavazadla to chtělo kreditní kartu, ale … debetní
také fungovala, takže OK). Dostal jsem se i k nápovědě „jak se dostat do baráku” v rámci AirBnB (kódový zamek od skříňky a v ní je pak normální klíč) a heslo na WiFi, které se možná bude
hodit, pokud je WiFi dostupná i mimo dům. Nedořešené zůstává auto … asi mám moc starého Androida (?).
Veřejně bych tady poděkoval manželce, že vymyslela postup na zabalení robotů. V obchodě vzala papírové přepravky, a vyřízla dno, které přesně pasuje na stranu kabice. Pak s tímto
dnem nejprve omotám Matty Mxx a na něm Matty Myy. A konečně to celé obložím bublinkovou fólií a natlačím do bedny. Vzhledem k tomu, že jsem vždy musel chvíli čekat až se vyfoukne vzduch
tak snad dobrý!
A ano, bylo tam jedno drobné překvapení a to že pořízené 4 barevné popruhy nejsou stejné! Aneb růžový má jinačí presku a tak myšlenka propojení popruhů padá … ale snad nic
fatálního.
A vedle posledního pracovního dne před odchodem na dovolenou (to je vždy zábava) asi nic …
p.s. vlastně ještě poznámka, že až budu zase hledat ten nástroj na nastavení DARPA estop modulů, tak je to v /opt/Digi/XCTU-NG/app (musel jsem to nainstalovat znova, abych to našel).
p.s.2 ještě možná jeden vtip na téma, jak je to s tím neomezeným počtem baterek menších než 100 Wh … KLM Restricted items in checked baggage — You’re allowed to bring 15 electronic devices with a lithium battery up to 100 Wh with you in your checked baggage. Na první pohled mi to také přišlo jak nekonečno
(co se vejde do 4 bitů), ale 8 baterek pro roboty, 4x Bluetooth speaker, notebook, telefon, power banka a jsme na 15.
p.s.3 … If the government shuts down Oct 1, will the Systems Challenge Event be impacted? … what the hell? (19:06)
The Systems event will proceed as planned in an event of a government shutdown. (19:07)
… to skoro vypadá, že 1/10 bude D-day ^ N
Pá 05:00 — musím uznat, že doprava v Praze ve 3h ráno je celkem fajn. A velké díky Georgi, který mne hodil z ČZU na letiště. Příjezd ve 4h, kupodivu spousta lidí. Odbavení robotů
bez problémů jen u bezpečnostní kontroly byly trošku nervozní z té krabice baterek. Ale OK a od 4:45 už sedím na Gateu (hrozné slovo, ale sedět na bráně zní také divně).
Dnes bych mohl ještě doplnit dojmy k té „hvězdné pěchotě”, kdy mi Rado z Istrobotics na Robotour vyprávěl, jak se jeho syn dostal do finále robotického
fotbalu v Brazílii, kde nakonec skončili druhý (viz robotika.sk — jsem offline, případně doplním později). Je čas to přenechat mladším.
- dostat 4 roboty ve 4 hodiny ráno na letiště — [done]
- úspěšně odbavit roboty a baterky — [done]
GA - 5:42pm
- vyzvednout roboty v Atlantě a dostat je na ubytování — [done]
… jen ještě nevím, v jakém jsou stavu …
GA - 8:40pm — roboty jsem vybalil a postupně je sestavuji (kamera, baterky, reproduktor a mikrofon). Snažím se zůstat co nejdéle vzhůru, ale asi to už o moc déle nevydržím.
Rozhodně to není stav mysli na programování nebo nějaké potenciálně nebezpečné akce. Testy budou až zítra na dvorku za domem (snad nebude pršet jako dnes cestou z letiště). Zatím
jediný pozorovaný problém je znovu ulomený nárazník u M02 (byl tam jen provizorně přilepený). U M03 jsem se o to ani nepokoušel, tak to skoro vypadá jako úmyslné.
Přemýšlím o co se podělit z cesty — těch 9 hodin letu je dost úmorných a není místo na nohy natož na notebook na klíně. Dále 1.5h na přestup v Amsterdamu byl ideální — nemusel
jsem se stresovat, cestou je polo-automatická pasová kontrola, kde se člověk zdrží, a než jsem přešel z jednoho terminálu do druhého, tak uz začal boarding. Za tu půlhodinu,
což byla nějaka starší varianta, bych to fakt nedal.
Krabice s pásy jsou dost unikátní a bylo je na dálku vidět. A ano, mlátily se na tom pásu a jedna měla otevřené plastové „zámky”, takže pásy se opravdu vyplatily. Jen ta manipulace
je náročná, např. nástup do autobusu, který jede z letiště na Car Rental Ceter. Tam mne paní řídička varovala, že vozíky jsou zpoplatněné (9 USD), ale že cestou viděla jeden
volně … ale dojděte si pro něj v jedno-osobě, když nemáte nechávat zavazadla bez dozoru?! Na Robotika Team si nostalgicky vzpomínám i tady v tichém domě — kde jsou ty časy,
kdy SW sekce šla spát a HW sekce sestavovala roboty, aby si to mohly nad ránem zase prohodit.
Jinak asi nejnapínavější byla zápůjčka auta — zadejte PIN. PIN není platný! Tak jsem znova zadal ten samý a kupodivu stejný výsledek. Nechápu, proč napotřetí (stále stejný PIN)
to prošlo … resp. prošlo zadání. Pak to byla neplatná karta (?) a prý jestli ji mám povolenou pro platby v zahraničí? Zkrátím to … problém byl (samozřejmě) v tom, že to není
kreditní karta ale debetní karta a ta paní za pultem to tam asi měla namačkat. U debetní je záloha místo 200 USD rovnou 500 USD, ale kupodivu pak to prošlo bez problémů. Má to být
mid-size SUV (doporučená nejlevnější kategorie), ale nechtěl bych vidět ta malá auta! Krabice se do kufru vešly pouze pod nátlakem (připomínám, že do Sharana bych dal bez problémů 4)!
Stále je varianta sklopit zadní sedadla, ale to budeme případně řešit později s nutností převážet sestavené roboty do Perry a zpět.
A pak už jen začátečnické chyby — navigace nezklamala a v půlce cesty vybila telefon, tak jsem jel asi 50km „naslepo”. Kabel mám, jen je na to třeba myslet předem. Také
cesta z Atlanty trvala několik hodin. Na dálnici byla zácpa a přeci jenom je to 150km (nebo mil?). Peklo to bylo až v cíli, kde dům 103 je tady každý druhý a navíc všechy
vypadají stejné (no dobře, tak podobně). Ale konec dobrý všechno dobré.
p.s. cestou jsem si vzpomněl na Zbyňka, jak nadával na zrcátka a na semafory za křižovatkou … ale to si
člověk zvykne, stejně jako na STOPky typu 4-way …
29. září 2025 — DTC Systems 2 - Systems Team Orientation
So — asi bych to kouskoval podle nějakých očekávaných významných událostí a tou další je Systems Team Orientation: for Group 2 teams will take place Monday,
September 29, 2025, 2:30 p.m. – 3:30 p.m. ET. Venue access and check-in will begin 30 minutes prior to the start of the orientation each
day. The orientations will be held at Guardian Centers in Building 101, Classroom 5. A v mezičase sem snad doplním průběžné info a fotky.
Dnešek začal v 3am, kdy kousek odtud projel vlak a houkal jak blázen. Myslím, že to my to v té naší „chatařské osadě” máme o řád lepší. Jednak vlaky tak moc nehoukají
a když, tak začínají až v 5 hodin ráno.
Pokusím se dodržovat režim 5-22 a včera jsem tedy ještě smontoval všechny roboty (jen baterky, kamery, STOP tlačítka, kabely ven). Překvapení byl červený M03, který měl utžený
Odroid. Byl na oboustrankou lepených úchytech (TomášP bude vědět) a jak byl robot více jak den na boku a prošel ruznýma teplotama/vlhkostí (?) tak už nedržely tak moc. Zatím
asi vyhrává řešení od MartinaL u M04 a M05, ale jak tam dostává tu prostřední matku fakt netuším (tj. ano, Odroidy jsou uchyceny jen ve třech místech).
Tak jo, asi je čas se probudit a začít něco dělat. Mám v plánu okolo 7h zajet do Freshway Marketu. Včera jsem hledání na mapě
nevěnoval tolik pozornosti a také to podle toho dopadlo … ale myslím, že Cola s Peperoni pizza není zas tak špatný start.
10am — když už nechci stahovat fotky z telefonu, tak alespoň pohled z lidarview z robota:
… a jak jsme se bavili, že ty americký auta mají výše podvozek, tak už je to tady:
… ale možná by to mohl být zajímavý byznys.
11:30am — začínám mít obavy, že to uvaříme. Přední krabice celkem žhne a to ještě nejsou slibovaná vedra (i když i teď není úplně dobrý nápad se vystavovat slunci). Nově
se používá externí doktor, který zpracovává „offline” video ze záznamu. Audio analýza tam běžela už dříve, ale extra video zpracování ne. Možná bych měl začít zjišťovat,
jak se měří teplota CPU a skoro mám i pocit, že si to Jakub v OSGARovi logoval …
Půjdu se před obědem projít do sousedního Jailhouse parku, i když už jméno naznačuje, jaké je tu sousedství. No snad je to jenom Heritage (za tratí je West Heritage
Boulevard South).
… k obrázku výše, proč zvednout kameru a proč nestačí zastavit v okamžiku, kdy detekovaný objekt se dostane na horní hranici obrázku. Tady je třeba to ještě vycentrovat a dovedl bych
si přestavit i situaci, že by se hodilo si trošku couvnout. :-(
2:30pm — já jsem si říkal, že ta GPS bude chtít vyzkoušet:
Adding RND waypoint (32.657201171563635, -83.75623553952674) 0:00:02.467604-Switching to 0 at 2024267.0573572533-0 (32.657201171563635, -83.75623553952674) 2024267.0573572533 0:00:02.467604----– 0:00:10.439987 GPS 32.657259333333336 83.75626733333333 -12635350.794485748 0:00:13.024997 Started tracking … (1) 0:00:13.220248 Lost track 0:00:00.195251 0:00:20.442869 GPS 32.657213166666665 83.756281 -12635356.079848971 0:00:30.464937 GPS 32.6572365 83.75629916666666 -12635353.874985026
… pokud nevíte o jakém problému mluvím, tak ty vzdálenosti a znaménka u lon jsou fakt divný.
Ještě k tomu „vaření Odroidu” před obědem … vypadá to, že to nebyla neuronka, ale detekce kaluže krve … ale to dost předbíhám. On se mi totiž také začal vařit notebook a
tam to očekávané není. Ano, můžou to být i neomezená vlákna, ale momentálně si myslím, že je to neočekávaným (tedy reálným) vstupem.
5pm — mám trošku „rudo před očima”:
Je čas na Jirkův extra sleep()? (tedy spát bych šel hned) … kamera na M03 opakovaně zlobila, ale pak jsem vzal robota ven a viděl překážky všude a pořád. Asi bych tomu mohl
dát chvíli pauzu … a projet se do sousedního parku. To jsem tady asi nedoplnil, že přes ulici je hřbitov, kde by se testovalo dobře, ale někomu by se to nemuselo líbit. A na
cestě k „vězeňskému parčíku” byla 4-proudá silnice a tu se mi nechtělo přebíhat …
Z lepších zpráv jsem rozchodil remote control od Jakuba — funguje to docela pěkně, ale … přidal jsem tam pak kameru a to jsem asi dělat neměl. Device not found, Device not
found … základní úlohu to snad řeší, jenom operátor bude jezdit naslepo, zatím.
A k přehřívání jsem si výstup z terminálu do poznámkového bloku nezkopíroval a už se obsah odroloval. :-( Tak jen výsek, co jsem posílal Frantovi:
. ncalls tottime percall cumtime percall filename:lineno(function) 1 1.751 1.751 257.935 257.935 detect-and-stream.py:269(main) 372504 195.171 0.001 195.171 0.001 {dilate} 290 0.004 0.000 32.200 0.111 model.py:386(predict) 290 0.002 0.000 31.248 0.108 predictor.py:162(__call__) 580 0.004 0.000 31.247 0.054 _contextlib.py:27(generator_context)
pozn. že toto bylo z logu na notebooku. Nejhorší není predikce z modelu, ale volaní cv2.dilate() - tj. je třeba poladit.
9:30pm — asi bych to pro dnešek nějak uzavřel. Na kameru a sleep jsem udělal PR #1033. Jestli to pomáhá zatím nemůžu posoudit,
ale je to podobné jako s tím pipewire pro audio — zatím to několikrát fungovalo na dvou robotech.
S tou hloubkovou kamerou na M03 úplně nevím. Odebral jsem reproduktor i mikrofon, jestli nezasahují do FOV krajních kamer (bohužel mne nenapadlo pustit noční config, kde
by to bylo krásně vidět) a asi to trošku pomohlo, ale problém to nevyřešilo. U M04
jsem to zase přidělal trošku jinak a celkem to jelo. Udělal jsem i jednu noční jízdu a něco to dělalo … ale je to bez externího doktora, tak je to trošku zbytečný test.
A zopakoval jsem si ještě remote control, ale tentokrát se sleepem na startu kamery. Zase to fungovalo, tak alespoň jedno „dokumentační video”, jak jsem se
zabydlel. Hmm, ten YouTube upload vypadá úplně šíleně, jako by ten codec byl špatně a mnoha ztrátami … lokálně to jde, tak případně potvrďte
že je to divné a já to stáhnu …
díky za podporu a dobrou noc.
p.s. toto je poznámka pro mne, až zapomenu, jak ovládat jiného robota bez změny konfigurace (ta kombinace úvozovek a apostrofů je trošku divoká, ale takto to funguje)
python -m osgar.record config/rc-client.json –params to_send.endpoint="'tcp://m04-odroid.local:5555'"
Ne 9:30am — dnes jsem zaspal, resp. v noci tolikrát vstával, že ráno už se mi nechtělo … dnes bych to vzal zvolna, přeci jenom už jsem „skoro senior” … ale vážně,
pár mil odsud je nějaká zahrada a píšou tam:
- General Admission - $10.00
- Senior Admission - $8.00 (age 55+)
… konec srandy. Psal mi Jeremy Pamplin a už vím proč:
A koukal jsem, že updateovali webové stránky a že stále
soutěžíme v Data (ale Robitika to bude nějaký jiný tým). Pro Systems tam vidím 9 týmů,
takže do první desítky se dostaneme, snad.
Je čas začít pracovat:
- M05 osazení, test
- eStop flashování
- opětovný pokus o integraci externího doktora (projít CV proměné omezující počet vláken, resize obrázku, …)
… bylo toho o hodně více a proto se mi nechtělo z postele, ale ono se to samo rychle připomene. Mimochodem video níže mi také chuť ke snídaní moc nepřidalo:
11:30am — zapomněl jsem na:
- rozchození base-station
- nmcli pro nastavení statické adresy pro wifi v DARPA síti
Jinak kompletace a update Matty M05 dopadla na první pohled OK. Horší je to s base-station, se kterou jsem nikdy nikam jít nemusel a evidentně jsem tam nenastavil ani
statickou IP adresu. Tím pádem se mi sama nepřipojí k telefonu ani k notebooku po kabelu … ano, klávesnici a monitor nemám.
6:15pm — pokud bych měl nějak dokumentovat aktuální stav, tak to asi mohu demonstrovat touto fotografií:
Je třeba k tomu něco dodávat? Skoro bych řekl, že ne … nicméně toto harakiri Fifinky plně nevystihuje utrpení operátora.
Přes poledne jsem si šel obhlédnout park — není „vězeňský”, ani to neni „dědictví minulosti”, zato je celkem velký a jedné časti jsou i stromy, co
trošku vrhají stín. Odpoledne jsem tam pak vzal Matty M03 a Matty M04. Byl to zaroveň test, jak budu odvážet roboty složené. Nakonec se ukázalo, že plastové krabice
na boku se tam vedle sebe 2 vejdou a šlo to i zavřít bez sklápění zadních sedadel.
Dojel jsem k parku a chtěl nastartovat roboty přes AP telefonu, ale ten hlásil, že bez SIMky nemůže sdílet připojení k internetu?! F* vzdyť to nikdy nesdílelo připojení k internetu,
ale vždy to vytvářelo jen lokální síť. Navíc jsem to GA-doma několikrát použil, protože jsem potřeboval robotům nastavit i AP v domě, sigh. Tak Eth kabel … hmm, kde je? No dopoledne
jsem řešil tu base-station a trapně ho nechal na stole. :-(
Zpátky se mi nechtělo a tak jsem ještě zkusil restartovat telefon … a to pomohlo.
Geofence jsem nastavil kousek dál od parkoviště u zmíněných stromů a plán byl poslat tam roboty po cestičce, abych je nemusel nosit. Kód z Robotem rovně 2025,
ale … po chvíli mi to házelo CRC chyby?! To přeci Matty/ESP32 nikdy nedělal?? Jj, v tom kódu do Písku žádné /dev/esp32 nebylo, tak se to nejspíše napojilo na LoRu nebo eStop. Sigh …
opraveno na dvou místech, pushnuto do dvou robotu a jedeme! Na zářez do Marathonu to rozhodně není, ale data k prozkoumání asi jo. Možná si tím
budu zlepšovat náladu až bude po všem, tak Jirko klidně nasdílej blob co by nechal i nějaké místo na počítaní hloubky a detekci překážek.
Dojeli jsme na křižovatku, přepnul jsem do DTC kódu a to byl opravdu útrpný pohled. Skoro bych řekl, že to ani nesplňovalo minum od Franty, aby roboti ujeli alespoň 10m … data jsem ještě nestáhl
ale to bude zase rudé! A každý robot se choval jinak. Fifinka přeci jenom trošku popojížděla, ale Červenáček (?) mne fakt iritoval. Já vím, že za to nemůže.
Uhlídat dva roboty bylo těžké (když se konečně někdy nějak rozjeli) a tak M04 skončila „na kapotě”. Naštěstí si sama rovnou zamáčkla STOP tlačítko.
Je tam spousta věci k prozkoumání — vedle zmiňovaných hloubkových dat (skoro bych řekl, že stejný typ louky a posečení budeme mít i v Perry) mi tady doma z geofence utekl M02
a v parku jsem tu tendenci viděl také. Prostě on se chce vrátit, ale pak tam vyskočí, typicky falešná, překážka a tak to zase otočí rovně … a tak pořád dokola.
Pak je tam problém v tom, že pokud externí doktor analyzuje situaci třeba 1min, tak po celou tu dobu je robot nepoužitelný, resp. on vesele hledá další mrtvoly, ale nemluví na ně
a doktor se k tomu dostane až když už je zase v pohybu. NOT GOOD!
p.s.
- Matty M03 depth data
- Cesta na testovací pole (m04-matty-follow-road-250928_205657.log)
- Matty go Home (m04-matty-follow-road-250928_212739.log)
Po 6am — teď jsem si zhruba hodinu hrál s DARPA e-STOP moduly. Ty jsou must have, tak to nemůžu úplně ignorovat. Vzal jsem z Matty M02 „nefunkční” e-stop
a nechal si zobrazit detaily. Je to robotika-1, takže s tím jsem asi opravdu operoval před půl rokem. Jen KY nebylo vyplněné … což je nyní zřejmé proč:
Ve své naivitě jsem to pak asi chtěl vrátit zpátky, ale já šifrovací klíče ze DARPA SubT neznám, takže ona vlastně cesta zpátky ani neexistuje …
Nastavil jsem DTC šifrovací klíč pro robotika-2, co jsem měl na base-station a …
packet: 15 7e000b8801495300010002000000d7 packet: 15 7e000b8801495300010002000000d7 packet: 15 7e000b8801495300010002000000d7 packet: 15 7e000b8801495300010002000000d7 packet: 15 7e000b8801495300010002000002d5
… přišel STOP packet a konec. Teď ještě updateovat všechny roboty a jedeme dál!
9:45am — koukám na ta hloubková data pro M03 a M04 ze včerejšího „parkového testu”. Ono je možná v nějaké fázi lepší koukat na surová čísla, konkrétně kolik je validních pixelů
v daném obrázku? Vyřezávám si obdélník, ze kterého se počítá vzdálenost ke překážce pro jízdu rovně a dostávám (pro prvních 1000 snímků):
Co by se mi líbilo je číslo 160*30 = 4800, tj. všechna meření platná.
p.s. možná celá ta myšlenka s odfiltrováním „neplatných pixelů” je špatná — pokud je tady vše hrozně daleko, tak vzdálenost je neplatná, ale to je očekávané! Filtr na nějaké
np.percentile() to už nezachrání, protože nemá z čeho brát!
![]() Kde zjištují vzdálenost |
![]() ... a čemu odpovídá v realitě (odélníčky ignorujte) |
p.s.2 Včera mi přišlo dost divný, že Fifinka jezdila od stromu ke stromu (viz video), ale teď to začíná dávat smysl! Vzdálenost ke stromu byla jediná
platná a tak šla na jistotu. A ano, moc se jí to u jednoho velkého kořene nevyplatilo (viz foto ze včerejška).
7pm — Systems Team Orientation
… a je to v … spousta F-words a tím nemyslím Franto, Franto, Franto!
Kráce před obědem dorazil Franta, tj. na orientaci už jsme jeli společně jeho autem.
Orienteering byl v celku normální: sem můžete, sem ne, … trošku nestandardní bylo, sem se schovejte, kdyby někdo začal střílet a pokud ohlásí bombový útok, tak postupujte takto.
Pak jestě seznam jedovatých hadů, pavouků a vegetace, na kterou můžeme narazit. Hmm, pěkné.
No a teď ty jobovky — potkali jsme Kevina (Coordinated Robotics) s pěti robotama a skupinkou studentů a když jsem komentoval jeho věž na robotovi, aby automaticky detekovala z blízka
stojícího i ležícího člověka, tak říká: „my jezdíme na ruční dálkové ovládání jako loni. Oni to změnili v dubnové verzi pravidel z mandatory na optional”. FFFFF
The Operator is responsible for managing one UxS during the team’s run which includes take-off, landing,
safety procedures, and full movement throughout the course. When operating under manual control, each
UxS shall have a dedicated operator utilizing a hand controller. For autonomous operation, refer to section
9.5.6
9.5.4
Autonomous Operation
Teams are encouraged to pilot their systems autonomously. … hmm, tak ta sekce 9.5.6 nějak zmizela (mám verzi pravidel DTC_Rules_syss_Phase_2_v2g.pdf, tj. posledni oficiální)
… co tady děláme?!
Ono to dává smysl. Na workshopu zjistili, že s autonomií to není tak jednoduché jak marketing slibuje. Ale že jí úplně zruší mne Fakt nenapadlo. Co je horší, že „soutěžní hříště”,
které bylo na workshopu zjednodušené právě pro autonomii, má plnou komplexitu pro teleoperaci. Vysoká tráva, poházené trosky kde čeho, …
Jak to vím? Dnes bylo „skupinové foto” (Group 1 končí a Group 2 začíná, takže dnes byl jediný den, kdy se obě skupiny potkaly) a po něm nám ukázali video, jak triage řeší
profesionální medici. Ve dne to bude havárie letadla a v noci nějaká dálnice. Zatím nevím co s tím. Rád bych nějakou variantu a'la FRE-houbičky s -42 body,
ale to byla sranda … tady to bude „masakr nevinných Matýsků”. Asi si holt pojedeme „vlastní soutěž”, něco jako RoboOrienteering bez vyhazovače …
30. září 2025 — DTC Systems 2 - Fully Autonomous Insane League
6:30am
Nad názvem jsem přemyšlel celou noc, abych ten mozek nějak změstnal. Nejtěžší bylo to I - Iconic, Icredible, Innovative, Iron, Immortal, Irelevant, .. a jiné.
No nic, plán je původní — plná autonomie, přidat bezpečnostní ochrany ze SubT (automatické vypnutí při překročení limitního náklonu), dodat barvičky pro LED podsvícení
(asi jsem nepsal, že naše první soutěžní jízda bude zítra v GA-noci), dopsat konverzi FB report do DARPA report, zapojit výsledky analýzy hlasu a hotovo. Co naopak
neplánuji řešit je zvuk u Matty M02 (ale repráček a mikrofon tam dám, protože ono to někdy funguje), upřesnění pozice robota a následně pozice mrtvol, odstranění
duplicit z reportů. Plánuji tam nechat to aktuální zpracování na čtvrtinový obrázek s nano neuronkami. Ono celá soutěžní jízda má 20min, takže to může počítat 20 obětí
a snad to neuvaří počítač.
Co zatím nevím je, zda mám rozdělit geofence jednotlivým robotům — asi spíše ne. A ještě plánuji zvednout kvalitu u H.265 obrazu … jen aby tam pak nebylo ještě více výpadku?!
To snad ještě dnes otestujeme. A pokud bude šance, tak bych rád dodělal příklad se streamováním videa z robotů, abych viděl, jak si ubližují a případne je Ctrl+C zastavil.
Včera večer jsem se připojil ke base-station a nastavil Bearer a IP DARPA serveru (Franta přivezl mini router 5x5x2cm, se dvěma Ethernety a WiFi, tak to šlo). Nevím,
zda mám komentovat, že nám několikařádkový šifrovací klíč dodali
na papíře. Ano s QR kódem, ale … stejně tak geofence, ale ty pak na mé přání poslali i v mailu s náčrty. Netuším, zda je můžu zveřejnit, ale když se zeptám, tak odpoví:
NE! Minimálně to byla odpověď na vetšinu našich dotazů včera … Taky mne dost rozčilují s tím, že vštšina vět začíná: „jak si pamatujete z loňska ...” … no, nepamatujeme.
Aha, už to vídím … my jsme jediný nový tým … tak to statisticky dává smysl tuto větu používat.
5pm — všichni 4 roboti homologováni!
… a base-station přeposílá LoRa reporty ostrému serveru! Nebylo to úplně triviální a x5 nastavování „chvilku” zabere. Navíc na Matty M05 jsem nějak zapomněl
nastavit statickou IP adresu na Eth2, takže to bylo s extra tanečkem, ale snad případ uzavřen. Napíšu si sem poznámky, protože pro každé testovací místo a ostrý běh je třeba jiná IP
a bude to tedy třeba přenastavovat.
- base-station
sudo nmcli con show sudo nmcli connection modify "Wired connection 2" ipv4.method manual ipv4.address 10.200.41.50/24 ipv4.gateway "10.200.41.1"
- všichni roboti a base-station (toto snad už potřebovat nebudu, ale …)
sudo nmcli con show sudo nmcli d wifi connect Robotika password PASSWD sudo nmcli con show sudo nmcli connection modify "Robotika" ipv4.method manual ipv4.addresses "192.168.10.102/24" sudo nmcli connection down "Robotika" && sudo nmcli connection up "Robotika"
Trošku byl problém se skutečností, že naši roboti se nezastaví při ztrátě signálu, resp. po startu už žádné spojení neočekávají a jen občas pošlou LoRa report. Jak říkam, jsme jediný (?)
tým co jede plně autonomně a tak jsou priority různé. Ale na eSTOP tier 1, 2, 3 (tlačítko na robotovi, vzdálené zastavení z konzole a DARPA eSTOP) každý robot reagoval korektně.
9:30pm — Practice Run 2
OK, dorazili jsme teď domu s tím, že v sedm hodin (krátce před setměním) jsme měli první cvičný test na Practice Area 2. Je to zdí ohraničená plocha s pár krátery, asi třemi figurínami
a stanem jako startovací oblast. Co jsme se dozvěděli:
- příprava mi trvala cca 30min, tj. o 10min déle, než jsme měli alokaci
- na roboty vidíme, ale také oni vidí nás — než běhat po mrtvolách, to se raději držely startu a povídali si s námi
- minutové zpoždení na zpracování je možná fatální, potřeba revize
- base-station selhala na assertu, že nemá připojenou LoRa #1 a odmítala posílat data dále
- souběžná práce v šesti terminálech je utrpení, tj. výpadek base-station jsem úplně přehlédl
- Ctrl+C ve spravném terminálu fungovalo dobře (použito vlastně postupně na všechny roboty)
1. října 2025 — DTC Systems 2 - Noční přepadení (D-Day1)
4am
Dnešek začíná dobrou zprávou domova: „Dnes v 8:17 se narodila Lucinka. Váha 3,70.” … tak snad vše bude vpořádku a po návratu to robo-strejda s rodinkou oslaví.
Má se vůbec smysl se vracet k té robotice? Sigh — jednou jsem volil a je třeba to dobojovat! Tak začnu leakem ze včerejší skoro-ostré testovací jízdy:
Na snímku z M05 je Fifinka (M04) v kráteru a nějaká nešťastná manekýna v pozadí. Jj M04 byl první robot, kterého jsem vypínal cca po Total time 0:00:59.318947
běhu. Ale o tom nechci mluvit — naopak bych rozepsal situaci kameramana, který jezdil skoro 10min (a pak by nás stejně vyhnali, protože jsem přetáhl tu přípravu).
Problém byl, že analýza zdravotního stavu oběti trvá cca 60s a za tu dobu může robot přejet k další oběti. Sypu si teď popel na hlavu, protože „architektonická úprava”,
že doktor si s pacientem povídá je dnes vskutku archaická. Robo-doktor vychrlí na oběť sérii dotazů, počká chvíli na odpověď a až se k tomu někdy dostane, tak pošle na VZP
report.
Máme dva moduly, které tady hrají hlavní roli:
- app (dtc.py) — real-time řídí robota, naviguje směrem k oběti a spuští „skenování”
- doctor (doctor.py) — po přijetí signálu, že začalo „skenování”, spustí nahrávání videa, přehrávání hlášky a až ta skončí, tak i nahrávání zvuku. Po ukončení „skenování” spustí analýzu nad sebranými daty a podle výsledků sestaví a odešle report
Zakopaný pes je v tom, že když je doctor zahlcen a přijdou např. dvě oběti rychle po sobě, tak ještě analyzuje první a druhé se začne ptát až když je na cestě ke třetí …
OSGAR garantuje, že modulu se neztratí žádná zpráva a v jeho vstupní frontě jsou v pořadí, jak dorazily (včetně timestamp odeslání).
Doktor by si mohl v pohodě offline projít záznamy, ale nesmí zasahovat do real-time běhu! Prostě dotaz pacientovi musí položit real-time aplikace a do logu jen
poznamenat, kdy se hláška přehrávala a kdy skončila (to už tam dnes stejně je). A doktor jen pasivně projde data a následně odešle report.
Tak jdu kódovat, toto je jen první bod ze seznamu … odpoledne máme druhé testování (v té době bude Robotour Online Webinář veřejný,
doporučuji!) a pak v 9:30pm máme noční soutěžní jízdu Ambush, což je prý v překladu Přepadení ze zálohy.
p.s. takto vypadá ten problém v detailu — stream app.scanning_person(4) audio_player.playing(37)
0:00:11.112154 37 ['m05-ready', True] 0:00:14.404219 37 ['m05-ready', False] 0:01:40.755551 4 True 0:01:40.758304 37 ['can_you_hear_me', True] 0:01:48.552628 37 ['can_you_hear_me', False] 0:01:55.800708 4 False 0:02:25.391560 4 True 0:02:40.411449 4 False 0:02:59.138560 37 ['can_you_hear_me', True] 0:03:06.934572 37 ['can_you_hear_me', False]
6am — Bug 2
(odroid) robot@m00-odroid:~/git/osgar-apps/dtc-systems$ python -m osgar.record config/dtc-basestation.json –note "Lora #1 in Practice2" 2025-10-01 01:11:10,452 __main__ INFO /home/robot/logs/m00-dtc-basestation-250930_231110.log 2025-10-01 01:11:10,555 __main__ INFO SIGINT handler installed Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/home/robot/git/osgar/osgar/node.py", line 44, in run self.update() File "/home/robot/git/osgar/osgar/node.py", line 36, in update handler(data) File "/home/robot/git/osgar-apps/dtc-systems/reporter.py", line 151, in on_lora_report if 1 in addr: TypeError: argument of type 'NoneType' is not iterable
Aneb včera mi při testovacím pokusu spadla base-station a to je fatální = není kdo by přeposílal zprávy z robotů! Z pohledu bodování v soutěži je to opravdu klíčový prvek.
Log jsem si stáhl ještě po skončení pokusu, a teď přehrál a spadlo to stejně. Prostě je tam addr (adresa/ID/číslo připojeného LoRa modulu) None = nedefinované! LoRa
komunikuje textově (resp. naše implementace) a na začátek přibaluje ID zařízení, které zprávu dostalo a odděluje jí pomocí |, např. "1|moje zprava" nebo "5|4|1|moje druha zprava".
Toto výchází ze SubT, kde se zprávy přeposílaly mezi roboty a každý si tam přidával své číslo, aby se ta samá zpráva neposílala tam a zpátky. V našem druhém příkladě je tedy zdroj
LoRa #1, pak to Lora #4 přeposlala a konečně poslední přeposílající byla LoRa #5.
V DTC je vyžadováno, aby zprávy byly šifrované, takže celý binární report zabalíme do base64 a přepošleme. A zpráva, která to položila vypadá takto:
b'5|e\x06\xf9\x82|\xee\x07W{\x00\x00\x00\r\n'
… prostě dokud je to šifrované, tak fajn, ale pak přijde ten binární report a tam už může být cokoliv včetně | … chá, chá … úplně slyším Hurvínka.
6pm — Bug 2b
Jsme teď na chvíli zpět na ubytování — o druhém Practice Run se mi skoro nechce hovořit. Udělal jsem si narychlo malý nástroj na visualizaci a rozdělení geofence:
![]() Rozdělené sekce pro jednotlivé roboty |
a roboti se prevážně držely na svém dvorečku. Ale tím také prozkoumávaly celý prostor se všema kráterama! Mám skoro pocit, že na „střechu” jsme je otočili všechny
a to ještě neproběhl jediný ostrý běh! Sigh. A Bug 2b byl ten, že když přijde LoRa zpráva, odešle se DARPA serveru, a následně se posílá zpět jako broadcast,
potvrzení všem. Ale v rámci opravy Bug 2 jsem změnil interface … hmm, jestli já tam nemám ten problém i u všech odesílatelů?! Na servereu v omezeném čase jsem na to
rezignoval a potvrzování zakomentoval, ale teď máme ještě cca hodinu (včetně jídla) a pak zase zabalíme, vrátíme se do „Perry centra neštěstí” a pustíme naostro
Matty-světlušky.
p.s. raději nebudu komentovat, kolikrát jsme tentokrát fyzicky přejeli obětí — je to asi nejpravděpodobnější scénář, na který zavolají eSTOP a bude po srandě :-(
p.s.2 tak s tím „na hlavu postaveným” packetem pro LoRa odeslání se to obchází na všech třech místech (možná ještě když to dříve šlo přes původní OSGAR LoRa modul
— toto by chtělo refactorovat, ale to si teď opravdu netroufnu
2. října 2025 — DTC Systems 2 - Vier Minuten
00:06
Před lety jsem dostal DVD Vier Minuten, které bych si teď celkem rád pustil … byl to zvláštní film.
Tak 4 minuty jsme měli na to, než všichni roboti byli zastavení pomocí DARPA e-STOPu. Jako jeden robot přejel přes nohy figuríně a druhý byl kousek od hlavy, takže
rozhodně porušil dvoumetrový bezpečnostní kruh. Ano, figuríny nerozpoznával ve dne natož v noci. Nevyčitám mu to. Ani teď nebudu hledat kdo to byl, nechť je to
„skupinová vina”.
Další problém byly ty dělené geofence — možná to nebyl úplně dobrý nápad. Tady ta oblast nebyla zcela konvexní a když M05 dostal jako úkol toto:
![]() Geofence M05 |
tak jediné co ví, že je mimo geofenci a snaží se tam nejkratší cestou dostat … ale ta vede přes les. U ostatních to bylo podobné.
![]() Geofence M02 |
![]() Geofence M03 |
![]() Geofence M04 |
Kličkovat roboti trošku měli (jako vždycky s tím, že se vlastně rozhlíží), ale tady to u několika byl nesmyslný extrém. Možná zcela odstraním.
Pokud se vrátím k japonským cílům, tak minimální cíl byl dosažen:
(copy and paste)
Minimální
- dostat 4 roboty ve 4 hodiny ráno na letiště
- úspěšně odbavit roboty a baterky
- vyzvednout roboty v Atlantě a dostat je na ubytování
- projít předstartovní DARPA homologací (E-stop)
- alespoň jeden robot odstartuje v alespoň jednom kole
… to už jsem zapomněl, že jsem tu měl i homologaci a dnes odstartovali všichni 4 roboti a proběhly tam minimálně dvě smysluplné detekce, ale nebyly odeslány
na base-station. Analýza, co se přesně s nima stalo, bude až zítra (resp. po spánku).
4am
Mám rád úlohy, kde místo civění do obrazovky stačí si jít lehnout a ráno to máte vyřešené. Nebo alespoň máte sadu hypotéz, které stačí jen během pár minut ověřit.
Téma bylo to „šílené šněrování” včera v noci — možná můžu zazoomovat:
Kdo tohle programoval?!
![]() Šněrovačka |
Hypotéza 1: kolikrát jsme robota testovali na hladkém krásném povrchu v noci s kamerou mírně nahoru? Ani jednou. Paradoxně co ostatní považují za snadný povrch
může být problém, protože to nikdy nebylo zkoušeno a třeba nějaká kombinace vlivů utvoří čert ví co. Já testoval 95% doma na zahradě, občas jsem jí posekal, abych
neměl tolik falešných překáže. Ale tady náš Ambush? Krásná hladká silnice, žádné náhodné stébla trávy.
Ještě jeden vstup je „nejspolehlivější senzor” — hodiny. Pokud ani čas neumíte změřit pořádně a nemůžete mu věřit, tak je mi vás trošku líto. Ale typicky je to přesnější
než enkodery, vzdálenost z lidaru nebo pozice z GPS. A to kroužení si myslím je postavené na čase … prostě zpracuj X GPS pozic a vyhodnoť.
Dohromady to znamená, že robot mohl jet maximální rychlostí a tak ty oblouky jsou delší (Matty se řídí pomocí rychlosti a požadovaným úhlem kloubu).
Hypotěza 2: čas sice můžete měřit přesně, ale pokud používáte modul co „tiká” a systém je zahlcený, tak váš čas se natahuje a robot dojede dál. Einstein by měl radost.
Hypožáza 3: jedeme maximální rychlostí 0.5m/s, ale toto je fakticky SW limit, aby se dal robot dole (ESP32) uřídit a splnit právě všechny kombinace (rychlost, úhel). Je možné,
i když silně nepravděpodobné, že nové platformy ten limit nemají nastavený a robot může do zatáčky jet rychleji, než starší s omezovačem.
A teď jsem sám zvědav, která z možností to je.
Logger, stream app.desired_steering:
0:00:26.849549 1 [500, -1000] 0:00:26.921782 1 [500, -1000] 0:00:26.994186 1 [500, -1000] 0:00:27.158002 1 [500, 1000] 0:00:27.252073 1 [500, 1000] 0:00:27.354101 1 [500, 1000] 0:00:27.457434 1 [500, 1000]
… tj. 500mm/s = 0.5m/s = max speed a 10 stupňů úhel. Žádné zbytečné překážky, které by nás nutili přibržďovat nebo manévrovat.
Další skok je v
0:00:42.911930 1 [500, 1000] 0:00:43.015622 1 [500, 1000] 0:00:43.117887 1 [500, -1000] 0:00:43.210436 1 [500, -1000]
což vypadá na 43 - 27 = 16s … to je takový divný interval. Jinak řídící smyčka běží na 10Hz, takže smysluplné rozlišení jsou desetiny sekundy.
k name bytes | count | freq Hz 1 app.desired_steering 5935 | 923 | 9.7Hz
… toto vypadá OK.
Hloubková data nic moc (černá odpovídá 0 = neplatná hodnota pixelu, resp. potenciálně „nekonečno”):
![]() Data z hloubkové kamery v noci |
Beru zpět, není to vše hladká silnice, ale i ten holý svah … nicméně pomocí --format "{data}" | uniq -c dostanu celkem kompaktní seznam příkazů za celou jízdu M04:
. 87 [0, 0] 89 [500, 0] 70 [500, -1000] 160 [500, 1000] 84 [500, -1000] 1 [500, -2000] 95 [500, -1000] 160 [500, 1000] 38 [500, -1000] 1 [500, 4000] 121 [500, -1000] 17 [500, 1000]
BTW mne mrzí, že jsem Fifinku sestřelil přes Ctrl+C na základě informace od sudích, že překročila hranice oblasti — geofence byl o několik metrů dál a robot tu hranici právě překročil
směrem dovnitř. Ale chápu, že ten „šněrovací vzor” mohl být trošku matoucí.
Je to divné — koukám do kódu a měl bych vzít zpět co jsem napsal výše. Zatáčení levá/pravá se mění na základě vzdálenosti k cílovému waypointu s krokem 5 metrů. Hmm, že by to byla
další hypotéza 4, kde M04 a M05 jsou přesně nakalibrované od MartinaL, zatímco M02 a M03 jsem já klasicky odflákl? Určitě se kalibruje střed úhlu, ale nejsem si jist
škálováním. Viz Matty M04 config, je tam jenom střed, ale jsou tam i průměry kol:
#define L 320 // rozvor #define A 315 // rozchod #define D 135 // prumer kol
a nové sady byly trošku jinačí … ale asi málo pravděpodobná varianta. Každopádně jsem to nekalibroval. Hmm, závěr „tak já tedy nevím” ani mne pořádně neuspokojí. :-(
Co ty chybějící reporty, nebyla by to snazší kořist? Podle poznámek to byl m03-dtc-night-251002_020040.log:
k name bytes | count | freq Hz 22 doctor.report 0 | 0 | 0.0Hz 23 doctor.lora_report 0 | 0 | 0.0Hz 24 doctor.audio_analysis 14 | 2 | 0.0Hz 25 doctor.debug_profiler 1011 | 1 | 0.0Hz Total time 0:03:52.753330 -stream app.scanning_person 0:00:22.855044 4 True 0:00:37.898053 4 False 0:02:32.199977 4 True 0:02:47.237638 4 False
… tj. osobu skenoval 2x, analýza audia proběhla také 2x, ale debug_profiler výstup je tam jen jeden? Je pravda, že po opravě rozdělení na real-time-app a offline-doctor
jsem předsadil analýzu zvuku před videem, protože z „black boxu” pak vypadne už report a ten na vstupu má výsledky speach2text pro vyhodnocení verbal alertness. Druhý report
už nestihl, to je jasné (nebo to spadlo), ale první? Už to vidím:
if fb_report is None: return # probably false detection -> no report
a ano, první detekce byla falešná. Smůla.
Tak jo, nebylo to ani náhodou pár minut a už vůbec to není vyřešené (tedy druhá úloha ano), tak udělám web update a jdu ještě na chvíli do postele …
p.s. hypotéza 5, že jsem měl extrémně přesnou GPS (vidím 12 satelitů a na startu v klidu robot dlouho stál), takže dříve mi pozice „poskakovala” a limit 5m se „náhodně”
překročil dříve??
11am
Možná jsem se měl ráno spíše snažit spát, než ventilovat zmatené dojmy. RESET a od začátku.
Začal bych s tímto obrázkem:
Toto je gps_heading, podle kterého se rozhodoval, zda má zatáčet pod úhlem 10 stupňů vpravo nebo vlevo. Co mne na něm nejvíce znervozňovalo, byla ta spodní část, která
de facto směřuje kolmo na směr jízdy!? Ten gps_heading se počítá jinak: pokud je vzdálenost uložené pozice a nové pozice větší než 1 metr, tak spočítej úhel. Bláboly
na téma 5m výše prosím ignorujte (5m se týkalo „dosažení waypointu”). Vedle toho, že ten algoritmus není ideální (je to z období před kompasem, ale pak mi vlastně vyhovovalo
že „prohledával okolí” a tak jsem to tam nechal), tak si myslím, že tam mám prohozené násobení u konverze latlon na xy:
def geo_length(pos1, pos2): "return distance on sphere for two integer positions in milliseconds" x_scale = math.cos(math.radians(pos1[0]/3600000)) scale = 40000000/(360*3600000) return math.hypot((pos2[0] - pos1[0])*x_scale, pos2[1] - pos1[1]) * scale
… o čem ta funkce mlčí je, jestli je pos1 a pos2 v pořadí [lat, lon] v milisekundách nebo [lon, lat]. Aby x_scale dával smysl, tak index 0 by měl být lat (pro Georgii tedy převedených
32.5 stupně a cos = 0.84. Pak lat odpovídajícím způsobem zkrátím a převedu … teď mi funkce přijde OK, ale očekává [lat, lon]. A co se stane, pokud dostane [lon, lat]?
Pro Georgii je to -83.75 a cos = 0.1 … a to už je sakra rozdíl, který ale v našich končinách vidět není.
Místo opravy jsem tam rovnou zapojil yaw od MartinaL (protokol verze 8). A to vypadá následovně (červené čáry):
Za mne je preference jasná. … ráno jsem to trošku vyzkoušel na dvorku a Matty M05 a pak se zhrozil při pohledu na stav baterie — 15.2V? Po čtyřech minutách jízdy
ze včerejška?! Ono ale fakticky to byla více jak hodina, protože roboty jsme měli už nastartované a připravené v autě — je to nejrychlejší způsob výsadku: vyložíš, odpauzuješ
a jedeš. 3s, kdyby člověk pospíchal. … Jirko, opětovné díky za směrování z dob Robotem rovně, aneb jak ukočírovat větší počet
robotů, když jim stále vypadává bezdrátové spojení.
Ještě jeden obrázek na rozloučenou, a je čas pomalu zase zabalit roboty, narychlo se naobědvat a vyrazit do Perry.
p.s. 3 baterky už jsou plně nabité a 4. pomalu končí — dvě nabíječky byl dobrý napad! Jen ještě v Perry raději zkontrolovat zadní baterky a repráčky …