<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Robotika.cz</title>
<link rel='self' type='application/atom+xml' href='https://robotika.cz/feed/en'/>
<link rel='alternate' type='text/html' href='https://robotika.cz/en'/>
<id>https://robotika.cz/en</id>
<updated>2026-07-12T00:00:00Z</updated>

<entry>
    <title>Robotour 2026</title>
    <link rel='alternate' href="https://robotika.cz/competitions/robotour/2026/en"/>
    <id>https://robotika.cz/competitions/robotour/2026/en</id>
    <updated>2026-02-14T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Dvacátý první ročník soutěže outdoorových autonomních robotů se bude konat
&lt;strike&gt;12.&lt;/strike&gt; &lt;b&gt;19. září 2026&lt;/b&gt; v Praze ve Stromovce ve splupráci s Planetáriem Praha. Vrátíme se tak na místo, kde soutěž v roce 2006 začala. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Pravidla zůstavají stejná jako předešlé ročníky s výjimkou nové &lt;i&gt;možnosti menšího nákladu&lt;/i&gt; (500ml).
Soutěž je přístupná veřejnosti.
&lt;b&gt;Blog update:&lt;/b&gt; 21/9/2026 &amp;mdash; &lt;a href=&#39;/competitions/robotour/2026/en#260921&#39;&gt;Nedělní workshop&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;hr&gt;

&lt;h1&gt;&lt;a href=&#39;https://live.robotour.cz/&#39; class=&#39;external&#39;&gt;live.robotour.cz&lt;/a&gt;&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;i&gt;aktuální průběh soutěže, nakládky a vykládky&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h2&gt;Pravidla&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Základní &lt;a href=&#39;https://github.com/robotika/robotour/blob/ROBOTOUR2026RC1/rules/pravidla.md&#39; class=&#39;external&#39;&gt;pravidla&lt;/a&gt; jsou stejná jako loni s
&lt;a href=&#39;https://github.com/robotika/robotour/pull/12/changes&#39; class=&#39;external&#39;&gt;rozšířením o 1/10 kategorii&lt;/a&gt;, umožnující soutěžit s menším nákladem (500ml plechovka s nápojem).&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Lokalita&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2026/planetarium-apolo.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2026/planetarium-apolo_t.jpg&#39; alt=&#39;Planetárium Praha&#39; title=&#39;Planetárium Praha&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2026/planetarium-apolo.jpg&#39;&gt;Planetárium Praha&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pro záběry z parku viz např. &lt;a href=&#39;/competitions/robotour/2007/src/en&#39;&gt;obrázky z 2007&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260916&#34;&gt;&lt;/a&gt;
&lt;h1&gt;Týmy&lt;/h1&gt;
&lt;center&gt;
&lt;table border=&#34;1&#34;&gt;
	&lt;tr&gt;
		&lt;th&gt;Pořadí&lt;/th&gt;
		&lt;th&gt;Tým&lt;/th&gt;
		&lt;th&gt;Video&lt;/th&gt;
		&lt;th&gt;Předkolo&lt;/th&gt;
		&lt;th&gt;1. kolo&lt;/th&gt;
		&lt;th&gt;2. kolo&lt;/th&gt;
		&lt;th&gt;3. kolo&lt;/th&gt;
		&lt;th&gt;4. kolo&lt;/th&gt;
		&lt;th&gt;Celkem&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;1.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;ARbot&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtube.com/shorts/Zb02CVqTJJA&#39; class=&#39;external&#39;&gt;Zb02CVqTJJA&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;2.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;BestBase&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.youtube.com/shorts/tw5Ph1qRU6E&#39; class=&#39;external&#39;&gt;tw5Ph1qRU6E&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;3.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Cogito&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=4EZqp2OGVDM&#39; class=&#39;external&#39;&gt;4EZqp2OGVDM&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;4.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Helhest&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtube.com/shorts/_nutBOcv0pk&#39; class=&#39;external&#39;&gt;_nutBOcv0pk&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;5.&lt;/td&gt;
               &lt;td&gt;&lt;b&gt;Istrobotics&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtube.com/shorts/Aydfo9QcBm8&#39; class=&#39;external&#39;&gt;Aydfo9QcBm8&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;6.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Matty-maticians&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/JK5Hds3u5kA?si=bLFmfZRgdrI0axVw&#39; class=&#39;external&#39;&gt;JK5Hds3u5kA&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;7.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;MRVK Team (FEI STU)&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/YxJl1biXnCI&#39; class=&#39;external&#39;&gt;YxJl1biXnCI&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;8.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;R-team&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtube.com/shorts/I3Yvc9dVQoc&#39; class=&#39;external&#39;&gt;I3Yvc9dVQoc&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;9.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Short Circuits Prague&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=ofVcR1l0MUM&#39; class=&#39;external&#39;&gt;ofVcR1l0MUM&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;10.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;SynthCat Robotics&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/toKcZB3giUE&#39; class=&#39;external&#39;&gt;toKcZB3giUE&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;11.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Ultimo Minuto&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=9Bj753HiAnU&#39; class=&#39;external&#39;&gt;9Bj753HiAnU&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;12.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Unidroids&lt;/b&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=XJgiis5s4CM&#39; class=&#39;external&#39;&gt;XJgiis5s4CM&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;h1&gt;Rozvrh soutěžních kol&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;i&gt;9-10 ... neoficiální testovací předkolo&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;10-11&lt;/b&gt; - 1. kolo&lt;/li&gt;

&lt;li&gt;&lt;b&gt;11:30-12:30&lt;/b&gt; - 2. kolo&lt;/li&gt;

&lt;li&gt;&lt;b&gt;14-15&lt;/b&gt; - 3. kolo&lt;/li&gt;

&lt;li&gt;&lt;b&gt;15:30-16:30&lt;/b&gt; - 4. kolo&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h1&gt;Prostor soutěže&lt;/h1&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 560px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2026/robotour-polygon.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2026/robotour-polygon_t.jpg&#39; alt=&#39;Soutěžní polygon pro Robotour 2026&#39; title=&#39;Soutěžní polygon pro Robotour 2026&#39; class=&#39;border&#39;  width=&#39;554&#39; height=&#39;290&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2026/robotour-polygon.jpg&#39;&gt;Soutěžní polygon pro Robotour 2026&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;ořez OSM mapy na cesty v rámci soutěžního polygonu &amp;mdash; &lt;a href=&#39;/competitions/robotour/2026/robotour2026-ver1.osm.gz&#39;&gt;robotour2026-ver1.osm.gz&lt;/a&gt; nebo &lt;a href=&#39;/competitions/robotour/2026/stromovka.2026.trimmed.osm.gz&#39;&gt;vyčištěná verze&lt;/a&gt; (odstraněné &lt;i&gt;way deleted&lt;/i&gt;) od &lt;i&gt;Cogito&lt;/i&gt; týmu&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Varování&lt;/b&gt; &amp;mdash; pokud robot opustí &lt;i&gt;prostor soutěže&lt;/i&gt; bude zastaven pomocí &lt;i&gt;Emergency STOP&lt;/i&gt; tlačítka a jeho pokus bude ukončen (podobně jako by vyjel z cesty)!&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;

&lt;hr&gt;
&lt;a id=&#34;260214&#34;&gt;&lt;/a&gt;
&lt;h2&gt;2. února 2026 &amp;mdash; Registrace&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Stejně jako v posledních ročnících, pošlete prosím &lt;b&gt;do konce července 2026 mail&lt;/b&gt; na adresu &lt;i&gt;webmaster-at-robotika.cz&lt;/i&gt; se subj. &lt;i&gt;Robotour 2026 - jméno týmu&lt;/i&gt;.
Pokud je robot nový, připište detailnější HW/SW popis.
Součastí registrace je i link na letošní YouTube video s titulkem &lt;b&gt;ROBOTOUR 2026 REGISTRATION - jméno týmu&lt;/b&gt;, dokazující, že váš robot (stále) funguje. Jízda 10m po
cestičce, detekce překážky, funkčnost Emergency STOP tlačítka.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260516&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. května 2026 &amp;mdash; Změna termínu soutěže!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Po dohodě s týmy z loňského roku a zástupci &lt;a href=&#39;http://www.planetum.cz/&#39; class=&#39;external&#39;&gt;Planetária Praha&lt;/a&gt; jsme se rozhodli o posun termínu soutěže o týden, tedy na &lt;b&gt;sobotu 19. září 2026&lt;/b&gt;.
Hlavní motivace je souběh tématicky stejně laděné výstavy &lt;a href=&#39;https://www.denchytremobility.cz/&#39; class=&#39;external&#39;&gt;Den chytré mobility&lt;/a&gt;, která se bude konat „přes ulici” na Výstavišti Praha.
Jako bonus nám tam běží odpočet, tj. do Robotour 2026 zbývá 125 dní! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260722&#34;&gt;&lt;/a&gt;
&lt;h2&gt;22. července 2026 &amp;mdash; Připomenutí uzávěrky registrace&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Blíží se konec července a tedy termín uzávěrky registrace na &lt;b&gt;Robotour 2026&lt;/b&gt; ve Stromovce v Praze. První videa už jsem viděl, tak se těším na další! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Díky a přeji pěkný zbytek letních prázdnin &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260809&#34;&gt;&lt;/a&gt;
&lt;h2&gt;9. srpna 2026 &amp;mdash; Registrované týmy&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;(v pořádí jak je nacházím v mailech)&lt;/i&gt;&lt;/div&gt;

&lt;h3&gt;Matty-maticians&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Video:
&lt;a href=&#39;https://youtu.be/JK5Hds3u5kA?si=bLFmfZRgdrI0axVw&#39; class=&#39;external&#39;&gt;https://youtu.be/JK5Hds3u5kA?si=bLFmfZRgdrI0axVw&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Níže uvádíme detaily a technické specifikace zcela nového a neznámého robota:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Robot: Matty02
HW: Odroid motherboard, Luxonis OAK D-Pro stereo camera, emergency button
SW: osgar + osgar_apps + depthaiv3&lt;/div&gt;

&lt;h3&gt;BestBase&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;V Stromovke sme sa v roku 2010 zucastnili vasej sutaze. Ked som sa dozvedel, ze sa sutazi na rovnakom mieste tak som si povedal, ze sa znova zucastnim.
Zial tento krat iba ako jednoclenny team. Dal som dohromady detske auticko s Raspberry Pi 5 beziacom na ROS2. Projekt je verejne dostupny na &lt;a href=&#39;https://github.com/daniel-zilinec/robot-ros2&#39; class=&#39;external&#39;&gt;https://github.com/daniel-zilinec/robot-ros2&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Registracne video: &lt;a href=&#39;https://www.youtube.com/shorts/tw5Ph1qRU6E&#39; class=&#39;external&#39;&gt;https://www.youtube.com/shorts/tw5Ph1qRU6E&lt;/a&gt;&lt;/div&gt;

&lt;h3&gt;Helhest&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;účastník &lt;i&gt;Mobility day&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;na stanku budeme pripadne streamovat data z robota, ktery pojede v soutezi&lt;/li&gt;

&lt;li&gt;&lt;b&gt;missing registration video&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cogito&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=4EZqp2OGVDM&#39; class=&#39;external&#39;&gt;https://www.youtube.com/watch?v=4EZqp2OGVDM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Tým Cogito s robotem H3-LGA
Nebo bych měl tým pojmenovat Fénix? Na Robotour už jsme byli. Je to už nějaký ten pátek. Robot H3-LGA - Location &amp;amp; guidance Automaton, H3 series, přezdívaný Helga - je nový, nezaježděný. Kód roste už dlouho. Uvidíme, ja to dopadne.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Cogito Team with robot H3-LGA
Or should I call the team Phoenix? We participated on Robotour in the past. A long time ago. Robot H3-LGA - Location &amp;amp; guidance Automaton, H3 series, also called Helga - is new, unproven. Code has been growing for a long time. Let&#39;s see how it goes.&lt;/div&gt;

&lt;h3&gt;TomíkK (to be renamed)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; soutěže robotour bych se velice rád zúčastnil i tento rok. Kategorii určitě kde se vozí plechovky. Popis robota a registrační video pošlu o víkendu. Doufám že to stihnu dokončit. Jinak v srpnu plánuji začít trénovat ve Stromovce tak by se mohlo udělat klidně i společné trénování jak to bylo v prvních ročnících. Pamatuji si ze par týmu z Prahy je.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;missing registration video&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;R-team&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Robot HW:
&lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/cs&#39; class=&#39;external&#39;&gt;https://robotika.vosrk.cz/robots/matty/cs&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Robot SW:
?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Video:
&lt;a href=&#39;https://youtube.com/shorts/I3Yvc9dVQoc&#39; class=&#39;external&#39;&gt;https://youtube.com/shorts/I3Yvc9dVQoc&lt;/a&gt;&lt;/div&gt;

&lt;h3&gt;MRVK Team (FEI STU)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;radi by sme sa registrovali na tohtoročnú Robotour s naším študentským tímom z Ústavu robotiky a kybernetiky FEI STU. Registračné video sa nachádza na nasledujúcom linku: &lt;a href=&#39;https://youtu.be/YxJl1biXnCI&#39; class=&#39;external&#39;&gt;https://youtu.be/YxJl1biXnCI&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V prílohe zasielam stručný popis HW a SW robota. &lt;a href=&#39;/competitions/robotour/2026/mrvk_hw_sw_description.pdf&#39;&gt;mrvk_hw_sw_description.pdf&lt;/a&gt;&lt;/div&gt;

&lt;h3&gt;ARBot&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; rad bych se prihlasil na letosni robotour, ale zatim jsem nedokazal portovat SW z Win na Linux. Usilovne na tom pracuji, uz toho mam 90% upraveno, ale obavam se, ze casove mam pred sebou jeste 90% &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;missing registration video&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Ultimo Minuto&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Zlozenie by malo byt rovnake, ako minuly rok. Robot bude ten isty, oproti minulemu roku ma novy driver pre pohon a novy softver.
 
Odkaz na video: &lt;a href=&#39;https://www.youtube.com/watch?v=9Bj753HiAnU&#39; class=&#39;external&#39;&gt;https://www.youtube.com/watch?v=9Bj753HiAnU&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dakujem a tesim sa na stretnutie v Prahe &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;h3&gt;Unidroids&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;posílám registrační video na Robotour 2026
&lt;a href=&#39;https://www.youtube.com/watch?v=XJgiis5s4CM&#39; class=&#39;external&#39;&gt;https://www.youtube.com/watch?v=XJgiis5s4CM&lt;/a&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Tým: Unidroids&lt;/li&gt;

&lt;li&gt;Robot: Tříkolka&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;CTU Robotics (?)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;http://www.cturobotics.cz/&#39; class=&#39;external&#39;&gt;http://www.cturobotics.cz/&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;missing registration video&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; rádi se Robotouru zúčastníme.&lt;/div&gt;

&lt;h1&gt;Pending &amp;hellip;&lt;/h1&gt;

&lt;h3&gt;Istrobotics&lt;/h3&gt;

&lt;h3&gt;Short Circuits Prague - Dupák&lt;/h3&gt;

&lt;h3&gt;CZU K2&lt;/h3&gt;

&lt;h3&gt;???&lt;/h3&gt;

&lt;hr&gt;
&lt;a id=&#34;260824&#34;&gt;&lt;/a&gt;
&lt;h2&gt;24. srpna 2026 &amp;mdash; update&lt;/h2&gt;

&lt;h3&gt;Istrobotics&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;slubovane videjko: &lt;a href=&#39;https://youtube.com/shorts/Aydfo9QcBm8&#39; class=&#39;external&#39;&gt;https://youtube.com/shorts/Aydfo9QcBm8&lt;/a&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Sice kratke a nie v parku, ale zatial takto cez ros serial bridge a lidar.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Nastastie neplanuje vsetko zahodit. Rado ma v tomto pud sebazachovy &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Skusime preklopit nase thready do ros2 nodov a potom sa uvidim kam nas to zavedie.&lt;/div&gt;

&lt;h3&gt;CTU Robotics&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;chtěli bychom se omluvit, ale nakonec se Robotouru 2026 bohužel nezúčastníme.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260826&#34;&gt;&lt;/a&gt;
&lt;h2&gt;26. srpna 2026 &amp;mdash; update2&lt;/h2&gt;

&lt;h3&gt;Helhest&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtube.com/shorts/_nutBOcv0pk&#39; class=&#39;external&#39;&gt;https://youtube.com/shorts/_nutBOcv0pk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;260902&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Matty 02, Stromovka, 2026.08.29 13:06:57 (Matty-maticians)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Matty-maticians o víkendu testovali ve Stromovce a přišlo mi, že by to mohlo být zajímavé i pro další soutěžící &amp;hellip; tak než získám GPS pozice pro &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en&#39;&gt;marathon&lt;/a&gt;
tak alepoň to video &amp;hellip;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;705&#34; height=&#34;283&#34; src=&#34;https://www.youtube.com/embed/cKw2-WzKp2g&#34; title=&#34;Matty 02, Stromovka, 2026.08.29 13:06:57&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;p.s. odpovídající mapa:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 455px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2026/m02-map.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2026/m02-map_t.jpg&#39; alt=&#39;Matty M02 mapa&#39; title=&#39;Matty M02 mapa&#39; class=&#39;border&#39;  width=&#39;449&#39; height=&#39;279&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2026/m02-map.jpg&#39;&gt;Matty M02 mapa&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;hr&gt;
&lt;a id=&#34;260919&#34;&gt;&lt;/a&gt;
&lt;h2&gt;19. září 2026 &amp;mdash; Bylo nebylo&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Zdálo se mi to nebo dnes proběhla nejakčnější robotour v dějinách soutěže?! Za hodinu bude půlnoc, ale asi musím alespoň první črty hodit na web, abych mohl v klidu spát &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Začalo to už v pátek a měl jsem velké cukání připsat nějaký komentář už k homologacím prvních týmů, ale pak jsem si to rozmyslel, že to nechám &lt;i&gt;až po boji&lt;/i&gt;, což je teď.
V pátek se homologovaly dvě výrazně jiné skupiny týmů &amp;mdash; nazval bych je „vysokoškoláci” a ,, rodinné&#39;&#39;. Za první skupinku to byl &lt;b&gt;MRVK&lt;/b&gt; a &lt;b&gt;Helhest&lt;/b&gt;, za druhou pak &lt;b&gt;BestBase&lt;/b&gt;,
&lt;b&gt;Cogito&lt;/b&gt; a &lt;b&gt;Unidroids&lt;/b&gt;. První mne doslova vyděsily, řekl bych skoro s &lt;i&gt;agresivní&lt;/i&gt; strategií vyhrát! No a &lt;i&gt;rodinné týmy&lt;/i&gt; byly tak na pohodu, ukázat kam se dostaly, poklábosit. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;MRVK&lt;/i&gt; studenti měli platformu, která vznikla již před &lt;a href=&#39;/competitions/robotour/2007/teams/en&#39;&gt;19ti lety&lt;/a&gt; (hledej &lt;i&gt;URPI FEI STU Bratislava&lt;/i&gt;). Pamatuji si toho robota jako &lt;i&gt;celkem dost
drahého&lt;/i&gt; ale jezdil tak v klídku. Noví členové týmu si ale spočítali, že pokud chtějí vyhrát a na nakládku je to až 1km, další kilometr na vykládku, pak ještě jednou a hurá domu &amp;hellip; suma
sumárum 5km a mají na to 1h, tj. průměrná rychlost musí být více jak 5km a je třeba jet tedy ještě rychleji &amp;hellip; no potěš!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Helhest&lt;/i&gt; by zase svým „ocasem” (tím myslím třetí kolo vzadu) mohl lehce odpálkovat malé děcko několik metrů, kdyby při otáčce jen trošku chtěl. A už v pátek bylo jasné, že
tito dva &lt;i&gt;rivalové&lt;/i&gt; do toho dají všechno! Jako na rovinu, fakt jsem se bál &amp;hellip; a jako absolutní nutnost byl &lt;b&gt;remote stop&lt;/b&gt; &amp;hellip; prostě riziko nebezpečí v těchto dvou případech
bylo opravdu zřejmé. A ano, až do dnešního dne byl remote de facto zakázaný.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Oba &lt;i&gt;adrenalinové&lt;/i&gt; týmy se v pátek homologovaly, ale tu rychlost &lt;i&gt;MRVK&lt;/i&gt; asi budu ještě chvíli vstřebávat. Jo já to vlastně nedopovědel &amp;mdash; spočítali si, že to musí jet fakt
rychle, aby to stihli objet, a tak nahradili, převodovky, drivery, spousta věcí &amp;hellip; ale to nám snad řeknou na online webináří, který bude první středu v říjnu na
&lt;a href=&#39;https://robotika.sk/&#39; class=&#39;external&#39;&gt;robotika.sk&lt;/a&gt; &amp;hellip;&lt;/div&gt;

&lt;h3&gt;Předkolo (9-10)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Řekl bych, že předkolo v 9h tak trošku „vyšumělo”. Několik týmů to použilo k otestování čtení QR kódu s pozicemi nakládky a vykládky, ale někteří to zkoušeli už v pátek
a v zásadě kdo chtěl jel, ale „hlavní rozhodčí” na to extra netlačil &amp;hellip;&lt;/div&gt;

&lt;h3&gt;1. kolo (10-11)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Na druhou stranu 1. kolo už bylo maso. Byl jsem rád, že jsem přítáhl desky pro rozhodčí, co jsme pořídili před dvaceti lety &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; a málem jsem je nestíhal rozdávat &amp;mdash; trošku
jsem si připadal jak večerníček (ta stará verze před mnoha lety, kde vyhazoval na konci znělky noviny). Pokud máte vysoké cíle, tak je každá minuta drahá a tak mnoho týmů moc neotálelo.
A už v tomto kole BINGO! &lt;i&gt;MRVK&lt;/i&gt; i &lt;i&gt;Helhest&lt;/i&gt; daly maximální počet bodů (51) s opakovanou nakládkou! Navíc &lt;i&gt;MRVK&lt;/i&gt; cestou předjelo &lt;i&gt;Helhest&lt;/i&gt;, protože „jel moc pomalu”.
Neviděl jsem to na vlastní oči jen toto byl report od sudích. Drsný začátek soutěže &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jezdily i ostatní týmy i když né tak úspěšně a třeba &lt;i&gt;Matty-maticians&lt;/i&gt; si „vylámali zuby” v poslední zatáčce těsně před nakládkou, kterou jsem zrádně umístil do nepřímo
dostupného trojúhelníka (viz. &lt;a href=&#39;https://www.openstreetmap.org/node/4407938771&#39; class=&#39;external&#39;&gt;node 4407938771&lt;/a&gt;).&lt;/div&gt;

&lt;h3&gt;2. kolo (11:30-12:30)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ve druhém kole se „něco pokazilo” a našim &lt;i&gt;rivalům&lt;/i&gt; se úplně nedařilo. &lt;i&gt;MRVK&lt;/i&gt; rozebírají robota a řeší odpálené H-můstky (??? zde prosím o korekci) a získávají pouze jeden
bod. Také &lt;i&gt;Helhest&lt;/i&gt; někde udělal chybu, ale 21 bodů by ještě loni znamenalo vítězství. Překvapení je &lt;i&gt;Unidroid&lt;/i&gt; &amp;mdash; 51 bodů, tj. úspěšná opakovaná nakládka a vykládka!&lt;/div&gt;

&lt;h3&gt;3. kolo (14-15)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Třetí kolo byl zlom. Nemáme teď 2 &lt;i&gt;rivaly&lt;/i&gt; ale rovnou 3 a co hůř v rámci jízdy &lt;i&gt;Unidroids&lt;/i&gt; omylem zadávají na startu QR kód vykládky (tato sekce byla dříve uzamčená a
přístupná adminum a sudím, ale prože mnoho týmu si kódy muselo zobrazovat samo, tak jsme od restrikce opustili a toto je druhá strana mince &amp;hellip; během jízdy si to uvědomil a robota zastavil.
Co s tím? Dali jsme &lt;i&gt;Unidroids&lt;/i&gt; druhou šanci &amp;hellip; a znova 51 bodů, které zamotaly bodování. Hmm.&lt;/div&gt;

&lt;h3&gt;4. kolo (15:30-16:30)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;V posledním kole jsem vyrazil s &lt;i&gt;Cogito&lt;/i&gt; na procházku ať také něco ze soutěže mám. Nakládka byla na hraně povoleného soutěžního polygonu a když jsme tam dorazili, tak proti sobě stáli dva nesmiřitelní
roboti (&lt;i&gt;Unidroids&lt;/i&gt; a &lt;i&gt;Helhest&lt;/i&gt;) a vedle ještě &lt;i&gt;Istrobotics&lt;/i&gt; a k tomu se přilepilo zmíněné &lt;i&gt;Cogito&lt;/i&gt;. Fakt super &lt;i&gt;deadlock&lt;/i&gt; :-(. No mohlo mne napadnout, že nakládka je místo
kde se budou roboti shlukovat!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nějak jsme to rozuzlovali, ale je to rozhodně jeden z bodů k řešení. A když se pak všichni roboti v klidu rozdělili (&lt;i&gt;rozejděte se! neshlukujte se!&lt;/i&gt;), tak se přiřítil &lt;i&gt;MRVK&lt;/i&gt; a
byl z toho čelní střet s &lt;i&gt;Cogito&lt;/i&gt;. Moje teorie je (resp. očítých svědků, já to tak uplně nezavnímal), že &lt;i&gt;MRVK&lt;/i&gt; na poslední chvili zpomalilo a začalo se vyhýbat, ale už bylo
tak blízko &lt;i&gt;Cogito&lt;/i&gt;, že s delší reakční dobou nestačilo ani zastavit. Jak to bylo doopravdy možná ukážkou logy. Pro &lt;i&gt;Cogito&lt;/i&gt; to bylo de facto konečná, protože otřes  vyřadil
počítač (po druhé rozborce-sborce nastartoval &amp;hellip; ale za zatáčkou sjel z cesty).&lt;/div&gt;

&lt;h3&gt;Výsledky?&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Well, čert je vem &amp;hellip; ne sorry, to jsem nechtěl napsat. Řekl bych, že letos se vytvořily tři shluky:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;základní mobilita&lt;/li&gt;

&lt;li&gt;funční nakládka+&lt;/li&gt;

&lt;li&gt;opakované doručení&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;V první skupině skončily: BestBase, R-team, Ultimo Minuto, SynthCat Robotics, Matty-maticians a Short Circuits Prague.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhá skupina jsou pak: Cogito, ARBot a Istrobotics.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A konečně „dravci” ve třetí skupině (možná jsem měl to pořadí otočit?) jsou: Unidroids, Helhest a MRVK.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je půlnoc, tak pokračování „pohádky” zase někdy příště. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260920&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. září 2026 &amp;mdash; Není všechno paráda co hraje&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Nečekal bych, že budu pokračovat v psaní tak brzy &amp;mdash; je 5:11 ráno a nemůžu spát a &lt;a href=&#39;https://www.youtube.com/watch?v=mdN6kvd5kcs&#39; class=&#39;external&#39;&gt;s touto písní&lt;/a&gt; v hlavě jsem se probudil &amp;hellip;
aneb nebylo vše &lt;i&gt;zalito sluncem&lt;/i&gt; přestože, co jsem včera nezmínil, počasí jsme měli vskutku suprové! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jednu indicii (možná více) jsem už dal a to, že v pravidlech zmíněných 2.5m/s tj. 9km/h už je v některých částech parku holé neštěstí a možná jsme toto pravidlo měli
tak nadsazené s myšlenkou „ať týmy sami poznají, že o rychlosti to není”. Ale to se letos změnilo &amp;mdash; &lt;i&gt;MRVK&lt;/i&gt; byli schopný jet poměrně rychle (mimochodem, od týmů bych si rád
vyžádal data k &lt;i&gt;přezkoumání&lt;/i&gt; ani né tak jestli byl &lt;i&gt;míček už v autu&lt;/i&gt; spíše jak pravidla do příště upravit a jestli vůbec) a přesto byli schopný dobře navigovat.
Bylo to ale nebezpečné, resp. z pohledu návštěvníka parku se to jevilo nebezpečné, a pak souhlasím s rozhodčím z posledního kola, který zakázal v této rychlosti projet
mezi stoly v zahradní restauraci &lt;a href=&#39;https://koolfood.cz/vozovna/&#39; class=&#39;external&#39;&gt;Vozovna&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co se týče rozměrů, tak &lt;i&gt;Helhest&lt;/i&gt; mi přijde &lt;i&gt;přes limit&lt;/i&gt;. Vidím za tím spiše „bojového delivery robota”, než ze by mi to přivezlo do parku pizzu. V tomto kontextu jsem
se dozvěděl, že byl problém v lázeňském městě Piešťany (&lt;a href=&#39;/competitions/robotour/2023/en&#39;&gt;Robotour 2023&lt;/a&gt;), kdy autíčko týmu &lt;i&gt;Slnava&lt;/i&gt;, podobné co letos měl &lt;i&gt;BestBase&lt;/i&gt;,
už byl problém. Obávám se, že &lt;i&gt;Helhest&lt;/i&gt; by v této lokaci vůbec nemohl soutěžit. Vím, že jeden čas se celkem zvedla vlna proti Segway (hmm, vyhledávač mi teď ukazuje samé
koloběžky, ale já mám na mysli balancovací dvoukolák) a cvičně jsem zkusil co tedy &lt;i&gt;hoverboard&lt;/i&gt;? AI generovaná odpověď zní:
&lt;i&gt;Jízda na hoverboardu (samovyvažovacím osobním přepravníku) není v parku Stromovka na pěších a parkových cestách povolena.&lt;/i&gt; &amp;hellip; je tam ještě pokračování o zákazu motorových
vozidel, ochraně chodců a legislativní status &amp;hellip; hmm takže i &lt;i&gt;Unidroids&lt;/i&gt; by byl vlastně problém?! Pomalu začínám chápat zděšení správy parku &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co tam máme dál?  Asi to trénování v soutěžním prostoru a GPS. Co se nám organizátorům nelíbilo na řešení z roku &lt;a href=&#39;/competitions/robotour/2009/en&#39;&gt;2009 - Lužánky/Brno&lt;/a&gt; bylo, že
jeden tým na místo vyrazil o týden dříve a kompletně si park zmapoval a pak jezdil podle takto nasbíraných dat. Rok na to v Bratislavě jsme už jezdili na základě společného
mapového podkladu &lt;a href=&#39;https://www.openstreetmap.org/&#39; class=&#39;external&#39;&gt;OpenStreetMap&lt;/a&gt;. A teď vznešena námitka k &lt;i&gt;Unidroids&lt;/i&gt;, kteří jezdili podle nahraných GPS dat z pátečního večera
a fungovalo jim to sakra dobře &amp;hellip; a to byl možná ten problém. Ale jestli sledujete kariéru &lt;i&gt;Unidroids&lt;/i&gt;, tak loni na &lt;a href=&#39;/competitions/robotour/2025/en&#39;&gt;Robotour v Buchlovicích&lt;/a&gt;
nezískali ani jeden bod, protože to celé bylo postavené na GPS &amp;hellip; de facto nikdy neopustili servisní oblast. Já tenkrát říkal, že jen s GPS to nikdy (ano, nikdy neříkej nikdy)
fungovat nebude, že už ve zmíněných Lužánkách test s RTK korekcema pod stromy byl o řád horší než obyčejná GPS a podobná situace byla i Žilině (tam to myslím dokonce byl nějaký předchůdce
&lt;i&gt;MRVK&lt;/i&gt;??). Nic, Jarda z &lt;i&gt;Unidroids&lt;/i&gt; se odradit nenechal, prošel si &lt;a href=&#39;/competitions/robotem-rovne/en&#39;&gt;Robotem Rovně&lt;/a&gt; v Písku, kde se GPS nechytala, pak jízda po čáře na
&lt;a href=&#39;/competitions/robotrip/2026/en&#39;&gt;Tuláku po krasu 2026&lt;/a&gt;, kde mu zase GPS nefungovala, tak jí vypnul a jel čistě z dat z kamery a aplikace &lt;i&gt;Yolo Pose&lt;/i&gt; na detekci čáry (za mne fakt moc
pěkně, elegantní svižná jízda, zasloužené vítězství &amp;hellip; a mimochodem všechny kódy i některá data jsou veřejně k dispozici). Další krok bylo &lt;a href=&#39;/competitions/dobyvani-hradu/en&#39;&gt;Dobývání
hradu&lt;/a&gt; před šesti týdny &amp;mdash; zase ta GPS pod krásnou starou lípou byl neřešitelný probém &amp;hellip; a teď ta Stromovka, kde to jezdilo srovnatelně s &lt;i&gt;Tulákem&lt;/i&gt;, ale tady už bez
čáry. V hospodě mi ostatní říkali, že jsem 20 let za GPS opicema, že teď už se to udrží s přesností na 1.5m i bez RTK korekcí, ale zároveň jsem slyšel, že luxusní GPS s korekcema
pozice uskakuje až o 7 metrů?! Tak kde je &lt;i&gt;sakra&lt;/i&gt; ta pravda? Jj, proto bych rád viděl data minimálně ze skupiny &lt;i&gt;dravců&lt;/i&gt;, protože si myslim, že budou moc zajímavá. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A &lt;i&gt;Unidroids&lt;/i&gt; měli ještě jeden trik, který nikdo jiný dříve neměl &amp;hellip; to se mi zase vybavuje píseň o sedlákovi, co jede na pole se dvěma hodinkama. My teď už víme, že spravný
sedlák by měl mít ty hodinky &lt;b&gt;troje!&lt;/b&gt; &amp;mdash; místo detekce synchronizace i možnost zotavení z chyby a jeden ze zdrojů eliminovat. A &lt;i&gt;Unidroids&lt;/i&gt; jeli se třema GPS přijmačema
(možná anténama, ale to se také snad dozvíme na webináři v říjnu), konfigurovanýma do rovnostranného (?) trojúhelníku a pokud jedna ze 3 pozic začala driftovat, tak byla
ignorována. Za mne je to podobné, jako tvrzení, co jsme na začátku milénia učili studenty, že odometrie je časem nepoužitelná, ale &lt;i&gt;R-team&lt;/i&gt; nám dokázal, že dobrá odometrie
v kombinaci s kompasem může udržet robota přes 1km i na úzkých parkových cestičkách, včetně skákání přes koleje a kořeny, které tam i po 18(?) letech stále jsou. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; pokračování později aneb není natrénovaná neuronka dneska už také mapa?!&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260921&#34;&gt;&lt;/a&gt;
&lt;h2&gt;21. září 2026 &amp;mdash; Nedělní workshop&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jestli mne něco opravdu mrzí, tak je to zrušení &lt;i&gt;nedělního workshopu&lt;/i&gt;. Je to prvek, který jsme si „odladili” už druhý rok soutěže (tj. před 19 lety) a bylo to to místo, kde
se &lt;b&gt;všechny týmy&lt;/b&gt; podělily o své zážitky, poznatky a dojmy a kde se diskutovalo jak dál. Letos by se dalo vzpomínat jak na posledních 20 let, tak bylo hned několik dost zásadních
věcí, které by si zasloužili pozornost. Toto je rozhodně má velká chyba, skoro bych řekl totálně fatální a přitom jsme velmi pravděpodobně mohli ještě jednou využít podpory
Planetária (za to ještě jednou díky!) a prezentovat v malém kinosále.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Moje druhá chyba, ale řekl bych naprosto zanedbatelná vůči té výše, byla, že jsem se nechal ovlivnit a nepublikoval výsledky 3. a 4. kola jak mi je dodali sudí. Bylo by tak jasné
o čem se vedou „přátelské zákulisní rozhovory” a znova odstavec 1 by to řešil. Desky mám teď doma v Praze a jsem mimo (kupodivu i já mám svůj život a nesoutěžní program),
takže to vyplním až v úterý večer. Skupiny nahrubo platí, jak jsem psal již v sobotu. Co si pamatuji, tak ve vedoucím pelotonu měl &lt;i&gt;MRVK&lt;/i&gt; něco přes 80 bodů, &lt;i&gt;Helhest&lt;/i&gt; 144 (jak říkal
Bědá „veletucet”, když už máme ten tucet týmů) a &lt;i&gt;Unidroids&lt;/i&gt; 156(???), prostě více než &lt;i&gt;Helhest&lt;/i&gt;. Předmětem sporu je, že &lt;i&gt;Unidroids&lt;/i&gt; používal GPS data nasbíraná v pátek
večer a nikoliv hrubý OSM podklad. Zároveň se tím nijak netajil. Další námitka byla, že &lt;i&gt;Unidroids&lt;/i&gt; vozili sud pořád (&lt;i&gt;Helhestu&lt;/i&gt; jsem to vysloveně zakázal), ale o této chybě
jsem byl informován až po 4. kole.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Za mne jsou všichni vítězové a to nemyslím jen ty tři týmy, o kterých se zde převážně zmiňuji. &lt;i&gt;MRVK&lt;/i&gt; si odvezl pohárek pro vítěze a dal bych mu tak ocenení &lt;b&gt;skokan roku&lt;/b&gt;.
&lt;i&gt;Helhesta&lt;/i&gt; bych pokáral, že se nepodělil o zkušenosti ze Stromovky a neudělal update OSM map, jakožto lokální expert. Pokud je pozice křižovatky o 7 metrů špatně (je tomu opravdu tak??),
tak rozhodně opravit! Co ale na druhou stranu v žádném případě nedělat je situace z 5. ročníku v Bratislavě/Botanická zahrada, kdy borci chtěli všem týmům pomoci a s DGPS navzorkovali
cestu po 15cm a né náhodou jsme byli pokárání slovenskou OSM komunitou. &lt;i&gt;Helhest&lt;/i&gt; nechť je vítěz v kategorii &lt;i&gt;OSM based solution&lt;/i&gt;. A konečně &lt;i&gt;Unidroids&lt;/i&gt; prolomil možná
GPS bariéru, že pokud by býval upřesnil na základě nasbíraných dat danou sekci OSM, tak už nikdo nemusí řesit detekci cesty a můžeme Robotour zabalit. Takže další vítěz!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A ostatání? Možná jste si všimli Pavla (&lt;i&gt;Short Circuits Prague&lt;/i&gt;) se čtyřnožkou na kolech, který bez problémů jezdil po schodech nahoru a dolu k Apolu 11? Ale neskóroval ani jednou.
Proč? Mne by tedy detaily zajímali.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Ultimo Minuto&lt;/i&gt; dělají čest svému jménu a vždy na poslední chvíli tam ještě nějaký bod přihodili. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; ale co se stalo a co odpálili na přijezdové cestě hned ráno cestou k Planetáriu?
Podobný problém co měl &lt;i&gt;ND Team&lt;/i&gt; loni v Buchlovících?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;BestBase&lt;/i&gt; jsem moc rád po letech znova viděl v akci a navíc s celou rodinou! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; To plastove Audi nemělo zpětnou vazbu na zatáčení, takže řídící algoritmus nevědel, jestli jede rovně
nebo má zatočená kola. Ale pak Dano zjistil, že bezpečnostní lidar vpředu pod kapotou (předpokládám 360deg) vidí i ta kola, tj. z laseru zjištoval natočení kol. Dobrý ne?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Matty-maticians&lt;/i&gt; byl náš anglicky mluvící, skoro by se dalo říci zahraniční tým &amp;mdash; ale to by mi Georgi s Amritem možná vynadali. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Je to nový tým a robot &lt;i&gt;Matty&lt;/i&gt; (zelený, M02)
z dílny Martina Lockera (&lt;i&gt;R-team&lt;/i&gt;)
měl svoji Robotourovou premiéru. A jezdil někdy opravdu pěkně, ale na bodovanou nakládku těsně nedosáhl.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Navážu &lt;i&gt;R-teamem&lt;/i&gt; &amp;mdash; modrý &lt;i&gt;Matty&lt;/i&gt; se seriovým číslem M01. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Martin je nejen autorem celého návrhu a „výrobcem” pěti robotů na &lt;a href=&#39;/competitions/dtc/en&#39;&gt;DARPA Triage Challenge&lt;/a&gt;, ale
také programátorem EPS32 na řízení všech serv, GPS, měření pozice kloubu, IMU &amp;hellip; A pro Robotour to navíc bylo programování vyšší vrstvy v C++ (použít Python jsem Martina stále nepřesveědčil)
a tak si kutá svoji cestu, řekl bych tou nejtvrdší skálou! GPS byla hodně nepřesná a občas skočila k přistávacímu modulu a nebylo jak se napojit na ostatní cesty &amp;hellip; zase bych byl
zvědav na detaily.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No a teď skupinka &lt;i&gt;mazáků&lt;/i&gt; &amp;mdash; &lt;i&gt;Cogito&lt;/i&gt; / Jirka dorazil Curychu i s rodinkou a myslím, že letošní soutěž ho rozhodně neuspokojila &amp;hellip; „proč jste mi proboha neposlali pár vzorků
cest ze Stromovky?!” Jinak &#34;Helga&#34; je úplně nový robot s novýma kamerama, symetrický &amp;hellip; spousta vychytávek a na soutěž se intezivně rok připravoval. Pripadně viz jako důkaz průběh
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#260920&#39;&gt;Robotour Marathonu&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;ARBot&lt;/i&gt; také prošel „Fénixovou fází”, což úplně není zvenku vidět. Windows po letech nahradil Linux, což je teď zase Alešův boj a důvod jsem pozapomněl, i když mi to v mailech psal.
Aleš se také po mnoha letech dožil menšího nákladu (500ml plechovka), protože váha robota je srovnatelná s váhou sudu (myslím, že by stále byl schopen ho vozit). Také nám organizátorům
trošku zamotal hlavu s bodováním, protože jako jediný s 1/10th kategorie dorazil na nakládku a vykládku (jestli si to správně pamatuji).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zbývá ještě &lt;i&gt;Istrobotics&lt;/i&gt;, loňský vítěz a dlouholetý šampión. Pro něj byla změna termínu soutěže o týden problematická a polovina týmu nemohla dorazit. A stejně jako Aleš prošel zásadní SW
evolucí. Myslím, že cílem byl ROS2 a vrhli se na to jak Rado, tak jeho AI agenti, ale co dali a co naopak pokazili nevím?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, utekla hodina, zkusím restartovat spánek &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. na Tomáše s &lt;i&gt;SynthCat Robotics&lt;/i&gt; jsem pozapomněl a přitom v myšlenkách jsem s ním chtěl začít, hmm. Jestli jste neviděli, tak doporučuji super-držák na 500ml na plechovky. Nevím, zda je
to na kolo, nebo jak k tom Tomáš přišel, ale říkal, že to řešil na poslední chvíli a toto bylo &lt;i&gt;just plug-and-play&lt;/i&gt;. A díky „maskotovi” už je jasné, který robot že je ta kočka. A jen
tak mimochodem MartinS zmínil, že tam vidí jistou podobnost s &lt;a href=&#39;/robots/ichikaze/en&#39;&gt;Ichikaze&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 bude to až za 14dní, ale raději si to sem předem napíšu hned, ať na to nezapomenu&#34;&lt;/div&gt;

&lt;h3&gt;Veřejně přistupný webinář o Robotour 2026&lt;/h3&gt;

&lt;pre&gt;Robotika.SK: Robotour Workshop I.
Wednesday, 7 October · 19:00 – 21:00
Time zone: Europe/Prague
Video call link:&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://meet.google.com/wua-qvgh-nyg&#39; class=&#39;external&#39;&gt;https://meet.google.com/wua-qvgh-nyg&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Pokud chcete soutěž nějakým způsobem podpořit nebo máte nějaké doplnění/dotaz,
tak se nám prosím ozvěte pomocí &lt;a href=&#39;/competitions/robotour/2026/en#email&#39;&gt;kontaktního formuláře&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Robotour Marathon 5km</title>
    <link rel='alternate' href="https://robotika.cz/competitions/robotour/marathon-5kmh/en"/>
    <id>https://robotika.cz/competitions/robotour/marathon-5kmh/en</id>
    <updated>2024-08-13T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        &lt;b&gt;Robotour Marathon&lt;/b&gt; je doplňková disciplina k podzimní &lt;b&gt;Robotour&lt;/b&gt;. Je pro ni
hned několik motivací, kde pravděpodobně první je zvýšení úrovně testování
jednotlivých týmů. To zároveň odpovídá úrovni spolehlivosti robotů v Robotour
soutěži. A navíc to umožňuje srovnání různých týmů z celého světa. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
&lt;b&gt;Update: 20/9/2026&lt;/b&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#260920&#39;&gt;Cogito 3.28km/48:13&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;h1&gt;Pravidla&lt;/h1&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 166px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/thumb.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;160&#39; height=&#39;120&#39;&gt;&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
Pravidla pro &lt;b&gt;Robotour Marathon 5km&lt;/b&gt; jsou podobná samotné Robotour. Robot
má za úkol předvést své schopnosti autonomně navigovat po cestách bez lidského
zásahu. Může to být libovolná cesta zmapovaná na
&lt;a href=&#39;http://www.openstreetmap.org/&#39; class=&#39;external&#39;&gt;OpenStreetMap&lt;/a&gt;.  Hlavní rozdíl je v tom, že je
to &lt;b&gt;vaše&lt;/b&gt; výzva, realizovaná &lt;b&gt;kdy&lt;/b&gt; vám to vyhovuje a &lt;b&gt;kde&lt;/b&gt; vám to
vyhovuje. Pravda, že si sami budete i sudími, což je trošku divné, ale &amp;hellip;
vyberte si místo, spusťte vás Robotour kód a podělte se o vaše video s GPS
logem. Tato testovací výzva končí až se objeví robot, který první autonomně ujede
alespoň &lt;b&gt;5km během jedné hodiny&lt;/b&gt;, ale zajímají nás i průběžné pokusy! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;h1&gt;Průběžné bodové hodnocení&lt;/h1&gt;
&lt;center&gt;
&lt;table border=&#34;1&#34;&gt;
	&lt;tr&gt;
		&lt;th&gt;Pořadí&lt;/th&gt;
		&lt;th&gt;Tým&lt;/th&gt;
		&lt;th&gt;Vzdálenost&lt;/th&gt;
		&lt;th&gt;Čas&lt;/th&gt;
		&lt;th&gt;Datum&lt;/th&gt;
		&lt;th&gt;Video&lt;/th&gt;
		&lt;th&gt;GPS log&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr bgcolor=&#34;yellow&#34;&gt;
		&lt;td align=&#34;center&#34;&gt;1.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Cogito&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;3.28 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;48 min&lt;/td&gt;
		&lt;td&gt;2026-09-16&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/FU8DAEP9y64&#39; class=&#39;external&#39;&gt;FU8DAEP9y64&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/cogitoteam/traces/12473357&#39; class=&#39;external&#39;&gt;12473357&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;2.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Unidroids&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;2.8 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;37 min&lt;/td&gt;
		&lt;td&gt;2026-06-16&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/PN_RkdeMycw&#39; class=&#39;external&#39;&gt;PN_RkdeMycw&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&amp;mdash;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;3.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Matty train&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;1.48 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;50 min&lt;/td&gt;
		&lt;td&gt;2026-06-19&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/iTrGIKtDv-w&#39; class=&#39;external&#39;&gt;iTrGIKtDv-w&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&amp;mdash;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;4.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Istrobotics&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;1.32 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;29 min&lt;/td&gt;
		&lt;td&gt;2024-09-01&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/nCEaeuZEGEY&#39; class=&#39;external&#39;&gt;nCEaeuZEGEY&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/pablosksk/traces/11449780&#39; class=&#39;external&#39;&gt;11449780&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;5.&lt;/td&gt;
               &lt;td&gt;&lt;b&gt;Freyja&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;1.1 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;19 min&lt;/td&gt;
		&lt;td&gt;2025-07-03&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/CnzEavuOVWM&#39; class=&#39;external&#39;&gt;CnzEavuOVWM&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/cogitoteam/traces/12012921&#39; class=&#39;external&#39;&gt;12012921&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;6.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Pat&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;1.1 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;36 min&lt;/td&gt;
		&lt;td&gt;2025-05-10&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/dhqQ7sGSQVE&#39; class=&#39;external&#39;&gt;dhqQ7sGSQVE&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&amp;mdash;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;7.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Matty M03&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;0.5 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;16 min&lt;/td&gt;
		&lt;td&gt;2025-05-20&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/ETXFpEgZRhM&#39; class=&#39;external&#39;&gt;ETXFpEgZRhM&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&amp;mdash;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;8.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;ND Team&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;0.43 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;9 min&lt;/td&gt;
		&lt;td&gt;2025-06-07&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/5kCnv1JORj4&#39; class=&#39;external&#39;&gt;5kCnv1JORj4&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/Tuzemec/traces/11996215&#39; class=&#39;external&#39;&gt;11996215&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td align=&#34;center&#34;&gt;9.&lt;/td&gt;
		&lt;td&gt;&lt;b&gt;Matty M04&lt;/b&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;0.28 km&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;9 min&lt;/td&gt;
		&lt;td&gt;2025-09-17&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://youtu.be/jT8siQApwOU&#39; class=&#39;external&#39;&gt;jT8siQApwOU&lt;/a&gt;&lt;/td&gt;
		&lt;td align=&#34;center&#34;&gt;&amp;mdash;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;h1&gt;Submissions/Backlog&lt;/h1&gt;

&lt;h2&gt;Report Generator: &lt;a href=&#39;https://www.trackreport.net/&#39; class=&#39;external&#39;&gt;https://www.trackreport.net/&lt;/a&gt;&lt;/h2&gt;

&lt;hr&gt;
&lt;a id=&#34;240901&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Istrobotics: Robotour Marathon 2024, attempt 1 &amp;mdash; 9/1/24 22:33&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/pablosksk/traces/11449780&#39; class=&#39;external&#39;&gt;https://www.openstreetmap.org/user/pablosksk/traces/11449780&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/nCEaeuZEGEY&#39; class=&#39;external&#39;&gt;https://youtu.be/nCEaeuZEGEY&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/istrobotics1.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/istrobotics1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	1.32 km		Average speed:	2.71 km/h
Total ascent:	0 m		Avg. moving speed:	2.85 km/h
Total descent:	0 m		Maximum speed:	4.83 km/h
Total time:	0:29:15.0		Moving time:	0:27:48.0&lt;/pre&gt;
&lt;center&gt;
&lt;iframe width=&#34;805&#34; height=&#34;604&#34; src=&#34;https://www.youtube.com/embed/X_dEg-cs9dk&#34; title=&#34;Istrobotics: Robotour Maratón 2024, attempt 1 - asking Smelý zajko for directions :)&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;241110&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Istrobotics: Robotour Maraton 2025, attempt 1 - Zámocký park Buchlovice &amp;mdash; 11/10/24 11:59&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/pablosksk/traces/11531517&#39; class=&#39;external&#39;&gt;https://www.openstreetmap.org/user/pablosksk/traces/11531517&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/yRGszxuFw0I&#39; class=&#39;external&#39;&gt;https://youtu.be/yRGszxuFw0I&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/istrobotics2.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/istrobotics2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	0.40 km		Average speed:	2.39 km/h
Total ascent:	0 m		Avg. moving speed:	2.41 km/h
Total descent:	0 m		Maximum speed:	3.79 km/h
Total time:	0:09:56.0		Moving time:	0:09:49.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250510&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Pat: Robotour Maraton 2025, attempt 1 &amp;mdash; 5/10/25 22:00&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/dhqQ7sGSQVE&#39; class=&#39;external&#39;&gt;https://youtu.be/dhqQ7sGSQVE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/pat1.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/pat1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	1.10 km		Average speed:	1.80 km/h
Total ascent:	45 m		Avg. moving speed:	1.83 km/h
Total descent:	49 m		Maximum speed:	2.32 km/h
Total time:	0:36:31.0		Moving time:	0:35:55.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250516&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Matty M03, attempt 1 &amp;mdash; 5/16/25 10:00&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Toto byl „test narychlo”, než budu muset jít do práce, a v zásadě to byla generálka na &lt;a href=&#39;/competitions/robotem-rovne/en&#39;&gt;Robotem Rovně 2025&lt;/a&gt;,
který je zítra (v sobotu 17. května 2025) v Písku. Matty jel pěkně svoji maximálkou 0.5m/s, dokonce vybral zatáčku u železničního přejezdu, ale &amp;hellip;
při přejíždění druhé koleje to asi drclo už trošku moc a zase vypadlo napájení ODroidu, takže konec a ztratil se i ten nejzajímavější kus logu.
Nicměně považují za vtipnou &lt;a href=&#39;https://youtu.be/KQZAQiuleyA?t=113&#39; class=&#39;external&#39;&gt;situaci z času 1:53&lt;/a&gt;, kdy tam zrovna projel vlak.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/KQZAQiuleyA&#39; class=&#39;external&#39;&gt;https://youtu.be/KQZAQiuleyA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/matty-m03-1.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-m03-1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	0.14 km		Average speed:	1.74 km/h
Total ascent:	4 m		Avg. moving speed:	1.74 km/h
Total descent:	13 m		Maximum speed:	2.10 km/h
Total time:	0:04:46.0		Moving time:	0:04:46.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250517&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Matty M03, attempt 2 (Písek, Robotem Rovně 2025) &amp;mdash; matty-follow-road-250517_114139.log&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Toto je záznam z druhé jízdy na &lt;a href=&#39;/competitions/robotem-rovne/en&#39;&gt;Robotem Rovně 2025&lt;/a&gt;, kdy Matty M03 opět dosáhl cílové mety 314m (otočka se mi úplně nepovedla,
ale to snad doplním v článku k RORO25). Nechal jsem ho ale jet dál. Spokojeně detekoval cestu, sjel na silnici (ano, nějaka auta tam projížděla), ale pak předvedl
několik teréních triků. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Nejprve jízdu napů na obrubníku, pak nájezd na obrubník nakolmo a nakonec to „napálil” do zaparkované Audiny (majiteli se omlouvám).
Zastavil na náraznících, což mi přišlo takové praktické uzavření pokusu. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/Z4qoPoxUVWM&#39; class=&#39;external&#39;&gt;https://youtu.be/Z4qoPoxUVWM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/matty-m03-2.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-m03-2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	0.49 km		Average speed:	2.15 km/h
Total ascent:	61 m		Avg. moving speed:	2.21 km/h
Total descent:	67 m		Maximum speed:	3.89 km/h
Total time:	0:13:39.0		Moving time:	0:13:11.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250520&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Matty M03, attempt 3 (Tour de Frymburk) &amp;mdash; matty-follow-road-250518_*.log&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;V rámci post-Pískové eufórie jsem &lt;i&gt;Mattyho M03&lt;/i&gt; ještě trošku testoval na Frymburku u Lipenského jezera. Byla celkem kosa, fičelo, chvílema i mírně pršelo =
na cyklostezce téměř nikdo nebyl. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Říkal jsem si, že typicky nejzajímavější jsou „poslední slova před smrtí”, tak 10s před koncem logu je přehravání
v normální rychlosti (no fakticky jsem v konfigu zapomněl fps=10 a video je generované fps=20, tj. ta pomalá rychlost je 2x rychlejší než realita). Do Marathonu bych
„příhlásil” nejdelší čast, kdy jsem ale robota zastavil, ať mi nevjede pod auto &amp;hellip;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/ETXFpEgZRhM&#39; class=&#39;external&#39;&gt;https://youtu.be/ETXFpEgZRhM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/matty-m03-3.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-m03-3_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	0.50 km		Average speed:	1.81 km/h
Total ascent:	73 m		Avg. moving speed:	1.81 km/h
Total descent:	22 m		Maximum speed:	3.15 km/h
Total time:	0:16:28.0		Moving time:	0:16:24.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250608&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Saya, attempt 1 (TulakPoKrasu2025) &amp;mdash; (6/7/25, 08:48)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 582px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/5kCnv1JORj4&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/ndteam-1.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;576&#39; height=&#39;324&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/5kCnv1JORj4&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/5kCnv1JORj4&#39; class=&#39;external&#39;&gt;https://youtu.be/5kCnv1JORj4&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/Tuzemec/traces/11996215&#39; class=&#39;external&#39;&gt;11996215&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;Distance:	0.43 km		Average speed:	2.92 km/h
Total ascent:	0 m		Avg. moving speed:	3.04 km/h
Total descent:	0 m		Maximum speed:	3.52 km/h
Total time:	0:08:54.0		Moving time:	0:00:19.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250703&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Freyja, pokus 1, 1.1km/19:05 &amp;mdash; (7/3/25, 21:45)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 704px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/CnzEavuOVWM&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/freyja1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;698&#39; height=&#39;222&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/CnzEavuOVWM&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/CnzEavuOVWM&#39; class=&#39;external&#39;&gt;https://youtu.be/CnzEavuOVWM&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/cogitoteam/traces/12012921&#39; class=&#39;external&#39;&gt;12012921&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;Distance:	1.10 km		Average speed:	3.45 km/h
Total ascent:	28 m		Avg. moving speed:	3.57 km/h
Total descent:	78 m		Maximum speed:	4.92 km/h
Total time:	0:19:05.0		Moving time:	0:18:25.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250917&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Matty M04, pokus 1, 0.28km/09:27 &amp;mdash; (17/9/25, 23:43)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/jT8siQApwOU&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-m04-1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;225&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/jT8siQApwOU&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/jT8siQApwOU&#39; class=&#39;external&#39;&gt;https://youtu.be/jT8siQApwOU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;Distance:	0.28 km		Average speed:	1.75 km/h
Total ascent:	23 m		Avg. moving speed:	1.77 km/h
Total descent:	31 m		Maximum speed:	2.65 km/h
Total time:	0:09:34.0		Moving time:	0:09:27.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/matty-m04-1-osm.png&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-m04-1-osm_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;352&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260616&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Unidroids, pokus 1, 2.8km/37:26 &amp;mdash; (6/16/26 04:03)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ahoj Martine, dal jsem dohromady video z Tuláka, ale když koukám na pravidla Maratonu, tak je to spíš jen info pro radost a progres. Podle výsledků je to 2800m a 37 minut. Odometrie a čas ve videu má cca 5% chybu. Jarda&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=PN_RkdeMycw&#39; class=&#39;external&#39;&gt;https://www.youtube.com/watch?v=PN_RkdeMycw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://www.youtube.com/watch?v=PN_RkdeMycw&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/unidroids1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://www.youtube.com/watch?v=PN_RkdeMycw&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://github.com/unidroids/robot-platform/blob/main/challenges/Tulak_po_Krasu_2026/tulak_po_krasu.md&#39; class=&#39;external&#39;&gt;challenges/Tulak_po_Krasu_2026/tulak_po_krasu.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;260619&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Matty M02+M04+M05+M03, pokus 1, 1.48km / 49:53 &amp;mdash; (6/19/26 19:34)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/iTrGIKtDv-w&#39; class=&#39;external&#39;&gt;https://youtu.be/iTrGIKtDv-w&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 573px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/matty-train-map.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-train-map_t.jpg&#39; alt=&#39;mapa a profil&#39; title=&#39;mapa a profil&#39; class=&#39;border&#39;  width=&#39;567&#39; height=&#39;411&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/matty-train-map.jpg&#39;&gt;mapa a profil&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	1.48 km		Average speed:	1.78 km/h
Total ascent:	114 m		Avg. moving speed:	1.79 km/h
Total descent:	77 m		Maximum speed:	3.14 km/h
Total time:	0:49:53.0		Moving time:	0:49:39.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/iTrGIKtDv-w&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/matty-train_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/iTrGIKtDv-w&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260901&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Cogito, pokus 1, 1.47km / 23:16 &amp;mdash; (8/30/26, 22:52)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/ENzWos5e84Q&#39; class=&#39;external&#39;&gt;https://youtu.be/ENzWos5e84Q&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/cogitoteam/traces/12462101&#39; class=&#39;external&#39;&gt;https://www.openstreetmap.org/user/cogitoteam/traces/12462101&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 527px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/ENzWos5e84Q&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/cogito_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;521&#39; height=&#39;182&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/ENzWos5e84Q&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	1.47 km		Average speed:	3.78 km/h
Total ascent:	43 m		Avg. moving speed:	3.84 km/h
Total descent:	60 m		Maximum speed:	6.48 km/h
Total time:	0:23:16.0		Moving time:	0:22:55.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;260909&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Cogito, pokus 2, 2.13km / 28:42 &amp;mdash; (9/8/26, 23:58)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/OpIthZUt7pI&#39; class=&#39;external&#39;&gt;https://youtu.be/OpIthZUt7pI&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/cogitoteam/traces/12468731&#39; class=&#39;external&#39;&gt;https://www.openstreetmap.org/user/cogitoteam/traces/12468731&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/OpIthZUt7pI&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/cogito2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/OpIthZUt7pI&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	2.13 km		Average speed:	4.46 km/h
Total ascent:	35 m		Avg. moving speed:	4.48 km/h
Total descent:	71 m		Maximum speed:	16.14 km/h
Total time:	0:28:41.8		Moving time:	0:28:32.8&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;260920&#34;&gt;&lt;/a&gt;
&lt;h3&gt;Cogito, pokus 3, 3.28km / 48:13 &amp;mdash; (9/16/26, 21:21)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/FU8DAEP9y64&#39; class=&#39;external&#39;&gt;https://youtu.be/FU8DAEP9y64&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/user/cogitoteam/traces/12473357&#39; class=&#39;external&#39;&gt;https://www.openstreetmap.org/user/cogitoteam/traces/12473357&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/FU8DAEP9y64&#39;&gt;&lt;img src=&#39;/competitions/robotour/marathon-5kmh/cogito3_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/FU8DAEP9y64&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	3.28 km		Average speed:	4.08 km/h
Total ascent:	186 m		Avg. moving speed:	4.24 km/h
Total descent:	121 m		Maximum speed:	19.24 km/h
Total time:	0:48:13.7		Moving time:	0:46:18.2&lt;/pre&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Pro nové pokusy prosím zašlete link na GPS trace z &lt;a href=&#39;https://www.openstreetmap.org/traces&#39; class=&#39;external&#39;&gt;OpenStreetMap&lt;/a&gt; a link na vaše/robotovo YouTube video na adresu webmaster-at-robotika.cz se Subj. Marathon &lt;i&gt;jméno týmu&lt;/i&gt;.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Pokud chcete nějak podpořit tuto soutěž nebo máte nějaký komentář/dotaz, tak
prosím použijte &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Dobývání hradu 2026</title>
    <link rel='alternate' href="https://robotika.cz/competitions/dobyvani-hradu/en"/>
    <id>https://robotika.cz/competitions/dobyvani-hradu/en</id>
    <updated>2025-11-21T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Na rok 2026 chystáme novou soutěž autonomních outdoorových robotů &amp;mdash; &lt;i&gt;Dobývání hradu&lt;/i&gt;! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Využili bychom zkušenosti ze &lt;i&gt;SubT&lt;/i&gt; a &lt;i&gt;DTC&lt;/i&gt; a cca někdy v &lt;b&gt;květnu 2026&lt;/b&gt; nejprve uspořádali &lt;b&gt;workshop&lt;/b&gt;, kde bychom si nanečisto vyzkoušeli,
co je v prostorách zříceniny hradu &lt;i&gt;Dívčí kámen&lt;/i&gt; a okolí realizovatelné. &lt;b&gt;Soutěž&lt;/b&gt; samotnou pak plánujeme na &lt;b&gt;srpen 2026&lt;/b&gt;.
&lt;b&gt;Update 9/8/2026&lt;/b&gt; &amp;mdash; &lt;a href=&#39;/competitions/dobyvani-hradu/en#260809&#39;&gt;?? Dobývání hradu II. ??&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;hr&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260706&#39;&gt;260706 - Pravidla (rev1)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260501&#39;&gt;260501 - Workshop&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260727&#39;&gt;260727 - Revize pravidel 2&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260802&#39;&gt;260802 - Soutěž&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260803&#39;&gt;260803 - Robotika - referenční soutěžící&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260805&#39;&gt;260805 - Helhest&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260806&#39;&gt;260806 - Matty-maticians&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260807&#39;&gt;260807 - Unidroids&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dobyvani-hradu/en#260809&#39;&gt;260809 - ?? Dobývání hradu II. ??&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;260706&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Pravidla (rev1)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;(revize 6. července 2026)&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Cílem robotů je „dobýt hrad” &amp;mdash; plně autonomně se do hradu dostat, nalézt klíčové předměty a zase z hradu uniknout.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Dobývání&lt;/i&gt; bude mít tři fáze:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;obsazení tábora pod hradem&lt;/li&gt;

&lt;li&gt;dosažení brány&lt;/li&gt;

&lt;li&gt;dobytí hradu&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Obsazení tábora (9:00 - 12:00)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Začátek soutěže bude na parkovišti u železniční zastávky Trnov (viz &lt;a href=&#39;/competitions/dobyvani-hradu/attact-routes.jpg&#39;&gt;mapka&lt;/a&gt;). Doporučujeme na místo dorazit již na 9h, dokud bude kde parkovat.
Během tří hodin se soutěžící pokusí dostat do tabořiště pod hradem jednou ze tří zvolených tras (Svatojakubská, Rožumberská nebo Cyklistická). Po vzoru
&lt;a href=&#39;/competitions/robotrip/2026/en&#39;&gt;Tuláka po krasu&lt;/a&gt; pojedeme „na pohodu”, tj. soutěžící tým může startovat kdy chce a počítá se nejlepší pokus. Počítá se jak daleko
se robot autonomně dostane &amp;mdash; pokud do cíle dorazí více týmů, tak vyhrává ten, který tam bude dřive (nezávisle na startovním čase).&lt;/div&gt;

&lt;h3&gt;Dosažení brány (13:00 - 14:00)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Po obědě (buřty na ohni v tábořišti) se pokusíme „dobýt” bránu, která je &lt;i&gt;hned za rohem&lt;/i&gt; a cesta vede okolo pokladny (100Kč za osobu). Podle schopností týmů možná volně přejdeme na hlavní,
závěrečnou, etapu.&lt;/div&gt;

&lt;h3&gt;Dobytí hradu (14:00 - 17:00)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;čas pokusu je omezen na &lt;b&gt;1 hodinu&lt;/b&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;předměty&lt;/i&gt; jsou &lt;b&gt;4 dopravní kužely&lt;/b&gt; rozmístěné v prostorách hradu (robot se musí kuželů lehce dotknout nebo zastavit na 3 sekundy v poloměru 2 metrů od kužele)&lt;/li&gt;

&lt;li&gt;roboti nesmí nijak ohrožovat navštěvníky ani historickou památku&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h2&gt;Lokalita&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Soutěž bude probíhat ve zříceninách hradu &lt;a href=&#39;https://www.divcikamen.cz/&#39; class=&#39;external&#39;&gt;Dívčí kámen&lt;/a&gt;.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.openstreetmap.org/#map=19/48.889090/14.357355&amp;amp;layers=P&#39; class=&#39;external&#39;&gt;https://www.openstreetmap.org/#map=19/48.889090/14.357355&amp;amp;layers=P&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 606px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/divci-kamen.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/divci-kamen_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;600&#39; height=&#39;450&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 606px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/divci-kamen2.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/divci-kamen2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;600&#39; height=&#39;399&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Foto převzato z &lt;a href=&#39;https://www.ckrumlov.info/cz/pamatky-a-kultura-241-hrad-divci-kamen/&#39; class=&#39;external&#39;&gt;https://www.ckrumlov.info/cz/pamatky-a-kultura-241-hrad-divci-kamen/&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 606px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/divci-kamen-map.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/divci-kamen-map_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;600&#39; height=&#39;311&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Registrace&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Stejně jako v soutěži &lt;a href=&#39;/competitions/robotour/en&#39;&gt;Robotour&lt;/a&gt;, pošlete prosím &lt;b&gt;do konce března 2026 mail&lt;/b&gt; na adresu &lt;i&gt;webmaster-at-robotika.cz&lt;/i&gt; se subj. &lt;i&gt;Dobývání hradu 2026 - jméno týmu&lt;/i&gt;
s popisem HW a SW. Součastí registrace je i link na aktuální YouTube video s titulkem &lt;b&gt;Dobývání Hradu 2026 REGISTRATION - jméno týmu&lt;/b&gt;, dokazující, že váš robot funguje: jízda 10m,
detekce překážky a funkčnost &lt;i&gt;Emergency STOP&lt;/i&gt; tlačítka. Termín registrace pro soutěž samotnou je pak &lt;b&gt;do konce června 2026&lt;/b&gt;.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Partneři&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://www.divcikamen.cz/&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/divci-kamen-logo.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;95&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://www.divcikamen.cz/&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;

&lt;h2&gt;Etapy (2025-11-13)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jelikož se jedná o poměrně náročnou úlohu, padl návrh rozdělit úlohu na jednotlivé &lt;b&gt;etapy&lt;/b&gt;, např.:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;cesta z parkoviště ke kiosku&lt;/li&gt;

&lt;li&gt;cesta od kiosku ke vchodu do hradu&lt;/li&gt;

&lt;li&gt;průzkum hradu&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Motivací pro toto rozdělení je následující snímek (&lt;i&gt;Prostor po první vstupní bráně&lt;/i&gt;):&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 650px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle-entry-challenge.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/castle-entry-challenge_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;644&#39; height=&#39;473&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;(zdroj &lt;a href=&#39;https://maps.app.goo.gl/hiFX2qfbxzpRZjg7A&#39; class=&#39;external&#39;&gt;Google Maps&lt;/a&gt;)&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Noční Multi-Mula [NMM] (2025-11-16)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Řikal jsem si, proč jezdit na &lt;a href=&#39;/competitions/elrob/en&#39;&gt;vojenskou &amp;quot;soutěž&amp;quot; do ciziny&lt;/a&gt;, když kategorii &lt;b&gt;Mula&lt;/b&gt; si můžeme zorganizovat sami?! A navíc se k „Dobývání hradu” celkem hodí. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Základ bych nechal stejný:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;robot jede za člověkem (průvodcem) z místa A do místa B&lt;/li&gt;

&lt;li&gt;po dosažení místa B původce vyšle návratový signál&lt;/li&gt;

&lt;li&gt;po dobu 30 minut robot začne &lt;i&gt;pendlovat&lt;/i&gt; mezi místy B-A-B-A-&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Aby se to od &lt;a href=&#39;https://www.elrob.org/files/elrob2026/ELROB2026_Scenario_Mule_20251105.pdf&#39; class=&#39;external&#39;&gt;originalu&lt;/a&gt; případně trošku lišilo, tak je povoleno více robotů a transport může probíhat i v noci.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Upřesnění termínu konání workshopu a soutěže (2025-11-24)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsme dostali potvrzení, že &lt;b&gt;1. května 2026&lt;/b&gt; (pátek) a &lt;b&gt;1. srpna 2026&lt;/b&gt; (sobota) se na hradě zatím žádná akce nechystá, takže je to možný termín pro organizaci workshopu a soutěže! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;hr&gt;
&lt;a id=&#34;260404&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. dubna 2026 &amp;mdash; 4 týmy registrovány na testovací workshop 1. května 2026&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Je to tak &amp;mdash; čas hrozně letí a ukončení registrace na workshop bylo na konci března 2026! Pokud se nějaký tým teď chytne za hlavu, že na to (podobně jako já) zapomněli, tak mi prosím
napište přimo (i formulář by již měl fungovat) a domluvíme se, snad. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Registrované týmy:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Lioncar&lt;/li&gt;

&lt;li&gt;Unidroids&lt;/li&gt;

&lt;li&gt;&lt;strike&gt;R-team&lt;/strike&gt;&lt;/li&gt;

&lt;li&gt;&lt;strike&gt;Helhest/VRAS (?)&lt;/strike&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; plus &lt;i&gt;referenční Robotika tým&lt;/i&gt; (Matty04 + Matty05).&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260501&#34;&gt;&lt;/a&gt;
&lt;h2&gt;1. květen 2026 &amp;mdash; 1. pokus o dobytí nedobytného hradu&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Veni, vidi, vici&lt;/i&gt; &amp;hellip; nebo jak je to? Máme za sebou první návševu &lt;a href=&#39;https://www.divcikamen.cz/&#39; class=&#39;external&#39;&gt;Dívčího Kamene&lt;/a&gt; &amp;mdash; hradu založeného rodem Rožmberků v roce &lt;b&gt;1349&lt;/b&gt; (a opuštěného 1506). Naše sestava byla spíše
komorní (6 účastníků, 4 roboti), ale &amp;hellip;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;počasí bylo super luxusní&lt;/li&gt;

&lt;li&gt;ten hrad je opravdu velké sousto, takže výzva, jak má být&lt;/li&gt;

&lt;li&gt;celý den se nesl v pohodové procházkové amosféře &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Začnu od konce &amp;mdash; kamarádi říkali, že ten příští termín &lt;b&gt;1. srpna 2026&lt;/b&gt; je &lt;b&gt;sobota&lt;/b&gt; &amp;hellip; a řádky výše to potvrzují &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;. Termín platí, soutěž platí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 462px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/attact-routes.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/attact-routes_t.jpg&#39; alt=&#39;útočné stezky&#39; title=&#39;útočné stezky&#39; class=&#39;border&#39;  width=&#39;456&#39; height=&#39;308&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/attact-routes.jpg&#39;&gt;útočné stezky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dále, aby bylo možné hrad dobýt, tak je třeba se k němu nejprve dostat a to už je první &lt;i&gt;challenge&lt;/i&gt;. Autem se tam přes zákazy nedostanete, takže základní plán je nechat na
&lt;a href=&#39;https://mapy.com/en/turisticka?planovani-trasy&amp;amp;rc=9gqFHxS2wP&amp;amp;rs=&amp;amp;rs=coor&amp;amp;ri=&amp;amp;ri=&amp;amp;mrp=%7B%22c%22%3A111%2C%22dt%22%3A%22%22%2C%22d%22%3Atrue%7D&amp;amp;xc=%5B%5D&amp;amp;rut=1&amp;amp;x=14.3541881&amp;amp;y=48.8870671&amp;amp;z=16&#39; class=&#39;external&#39;&gt;parkovišti v Třísově&lt;/a&gt;. Na hrad vedou dvě hlavní cesty: červená turistická značka (&lt;i&gt;Svatojakubská&lt;/i&gt;) a cyklistická (&lt;i&gt;1127&lt;/i&gt;) jestě s možností různých „zkratek” (&lt;i&gt;Rožmberská cesta&lt;/i&gt;). Dostat roboty
z parkovistě do podhradí (louka s ohništěm a kadibudkou) bude zároveň &lt;b&gt;Úloha I. (10:00-12:00)&lt;/b&gt;. Volba trasy je na robotovi/programátorovi, ale je klasicky vyžadovaná plná autonomie. Lidský zásah by
byl penalizován (v plánu je měřit čas jízdy a penále by mohlo být třeba &lt;i&gt;10 minut&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/lower-basecamp.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/lower-basecamp_t.jpg&#39; alt=&#39;louka pod hradem&#39; title=&#39;louka pod hradem&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/lower-basecamp.jpg&#39;&gt;louka pod hradem&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Úloha II. (12:00-13:00)&lt;/b&gt; bude dostat autonomně robota z tábora pod hradem ke vstupní bráně (přes kasu a závoru).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Úloha III. (13:00-16:00)&lt;/b&gt; „dobytí hradu”, resp. jeho průzkum. Cílem je nalézt a „zneškodnit” co nejvíce „obránců” = dopravních kuželů. Povolený je pouze „jemný detek” ať jsou kužely
ještě použitelné i pro ostatní soutěžící!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 528px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/unidroids.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/unidroids_t.jpg&#39; alt=&#39;Unidroids&#39; title=&#39;Unidroids&#39; class=&#39;border&#39;  width=&#39;522&#39; height=&#39;320&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/unidroids.jpg&#39;&gt;Unidroids&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260727&#34;&gt;&lt;/a&gt;
&lt;h2&gt;27. července 2026 &amp;mdash; Revize pravidel 2&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Zbývá pár minut do půlnoci, což je ideální čas se ventilovat &amp;hellip; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem se vrátil z krátké dovolené a procházel maily. Vedle &lt;a href=&#39;/competitions/robotour/2026/en&#39;&gt;registrací na Robotour 2026&lt;/a&gt;, za které jsem vděčný, to bylo ale nějak moc mailů typu:
&lt;i&gt;musím se omluvit, ale v sobotu nepřijedeme&lt;/i&gt;, &lt;i&gt;bohužel to letos nedám&lt;/i&gt;, &lt;i&gt;musím se omluvit ze soutěžní účasti&lt;/i&gt;, &lt;i&gt;prijedeme na otocku ... jen pokecat&lt;/i&gt; &amp;hellip; hmm, ve „hře”
tedy zůstává jediný tým, ale potenciálně několik diváků. Co s tím? Myslím, že by doma uvítali, kdybych nikam nejezdil &amp;hellip; a poslední varianta byla vzít to na otočku &amp;hellip; hmm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale když jsem o tom v posteli přemýšlel a nemohl usnout, došel jsem k další &lt;i&gt;revizi pravidel&lt;/i&gt;. Aneb nedá se to ořezat ještě více? Co toto:
&lt;b&gt;Robot, který ze startovní pozice první autonomně dosáhne cílové pozice (definované GPS souřadnicemi a dopravním kuželem) vyhrál.&lt;/b&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;48.8890564N, 14.3576761E&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 637px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/new-destination.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/new-destination_t.jpg&#39; alt=&#39;nový cíl&#39; title=&#39;nový cíl&#39; class=&#39;border&#39;  width=&#39;631&#39; height=&#39;324&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/new-destination.jpg&#39;&gt;nový cíl&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Žádné omezení na cesta/necesta &amp;mdash; ono to vlastně není potřeba, když z jedné strany je tam sráz a z druhé skála &amp;hellip; prostě „rozumní roboti” stejně pojedou po cestě. A jestli místo přes most
preferují brod, tak proč ne? Je to takový &lt;a href=&#39;/competitions/roboorienteering/en&#39;&gt;RoboOrienteering&lt;/a&gt; s jediným kuželem a &lt;i&gt;lehce nepřátelským prostředím&lt;/i&gt;. OK/NOK?&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260728&#34;&gt;&lt;/a&gt;
&lt;h2&gt;28. července 2026 &amp;mdash; Show must go on! (84h)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Můj včereší nářek mohl vyznít tak, že se nic nekoná, ale to by byla chyba! &lt;i&gt;Jádro&lt;/i&gt; zatím drží a možná se objeví i další. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; a teď mám najednou pocit, že nevím co dříve &amp;hellip; v každém případě se těším v sobotu &lt;b&gt;1. srpna 2026&lt;/b&gt; na viděnou!&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260730&#34;&gt;&lt;/a&gt;
&lt;h2&gt;30. července 2026 &amp;mdash; Vačnatec a tři kamarádi (48h)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem zmiňoval, že zvažuji vzít &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pata&lt;/a&gt; a na něj dát &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Mattyho&lt;/a&gt;, kde v jedné verzi by skupince dodával pouze &lt;i&gt;kompas&lt;/i&gt; případně &lt;i&gt;oko&lt;/i&gt;. No a PavelS
to komentoval slovy: „no jasně, vačnatec”. Ale myslim, že budu rád, jestli za dva zbývající večery vůbec updateuji systém na Patovi &amp;hellip; no všichni víme, jak to dopadne.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A &lt;b&gt;tři kamarádi?&lt;/b&gt; To jsou tři &lt;i&gt;soutěžící&lt;/i&gt; týmy, které snad uvidíte:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/PN_RkdeMycw&#39; class=&#39;external&#39;&gt;Unidroids&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/JK5Hds3u5kA?si=bLFmfZRgdrI0axVw&#39; class=&#39;external&#39;&gt;Matty-maticians&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.helhest.com/&#39; class=&#39;external&#39;&gt;Helhest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;260802&#34;&gt;&lt;/a&gt;
&lt;h2&gt;2. srpna 2026 &amp;mdash; Soutěž&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Soutěž proběhla včera (&lt;i&gt;1. srpna 2026&lt;/i&gt;) jen už jsem neměl dost energie zapsat ani hrubé výsledky &amp;hellip; tak to napravuji teď.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;S Georgi (&lt;i&gt;Matty-maticians&lt;/i&gt;) jsme dorazili na startovní místo krátce před 9h. Nebýt cestou několika padlých stromů a větví po páteční bouřce bych řekl, že cesta byla celkem v pohodě.
Krátce po nás dorazil Jarda (&lt;i&gt;Unidrods&lt;/i&gt;) a k polednímu pak Béďa a spol. (&lt;i&gt;Helhest&lt;/i&gt;). Posledně jmenovaný tým dorazil ve dvou autech &lt;i&gt;HW auto&lt;/i&gt; a &lt;i&gt;SW auto&lt;/i&gt;. Ona taky ta jejich
&lt;i&gt;tříkolka&lt;/i&gt; není žádný prcek &amp;hellip; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Startovali jsme od &lt;a href=&#39;https://mapy.com/s/guhapohavu&#39; class=&#39;external&#39;&gt;prastaré lípy u parkoviště v Třísově&lt;/a&gt; (výška 32m, obvod 763cm). Byla tam i lavička ve stínu, tak za mne pěkné místo na první základnu. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
 &amp;hellip; ale GPS pod stromem uplně kvalitní nebyla a stejně tak její korekce. Z tohoto pohledu na tom byl nejlépe Matty M02, ale i ten se rozhodoval, kterým směrem po cestě vyrazit a ano, směr &lt;b&gt;nebyl&lt;/b&gt;
přímo na hrad!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pata&lt;/a&gt; jsem bral jako „referenčního soutěžícího”, takže jsem si na startu hrál také. Integrace detekce hladké cesty
(&lt;a href=&#39;https://github.com/robotika/osgar-apps/compare/master...feature/dh26-dev&#39; class=&#39;external&#39;&gt;4:30am-5:30am&lt;/a&gt;) podle očkávání měla své mouchy.
Kupodivu jsem trefil levou a pravou stranu, ale třeba detekci překážky jsem měl špatně, ale o to více efektní: „Pokud není překážka stůj. Pokud je překážka jeď maximální rychlostí!”
Nikdo nebyl zraněn, protože naštěstí byla splněna první podmínka a robot tedy nejel. Nicméně k &lt;i&gt;problémové startovní lokaci&lt;/i&gt; si užil i Pat &amp;mdash; vpravo byl příkrý svah (ne tak příkrý jako
vlevo, kde si to zase na začátku oblíbil &lt;i&gt;Helhest&lt;/i&gt;), ale bylo to tam &lt;i&gt;hladké&lt;/i&gt; a tak tam robot opakovaně vyrazil. Dnes mi dochází, že kdyby robot jel vedle domu/hladké zdi, tak si dost
možná vybere zeď (myslím algo ver0).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A výsledky? &lt;b&gt;Hrad nebyl dobyt!&lt;/b&gt; Jakub tam sice donesl kužel, aby se neřeklo, a tak nás to donutilo na hrad znovu dojet/dojít. Částečné výsledky (díky ŠtěpánoviL za nezávislého rozdhodčího)
jsou k dispozici &amp;mdash; nejdál dojel &lt;i&gt;Helhest&lt;/i&gt;, pak &lt;i&gt;Matty-maticians&lt;/i&gt; (nažloutlá tráva připomínající cestu), pak &lt;i&gt;Unidroids&lt;/i&gt; (GPS) a peleton uzavírala &lt;i&gt;Robotika&lt;/i&gt; (první hladký svah).
Z pohledu &lt;i&gt;Robotika Teamu&lt;/i&gt; bych řekl, že dobrý a žádný ze soutěžních týmů by nepřišel o DARPA sponzoring. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; (vtip, vysvětlení &amp;mdash; na &lt;a href=&#39;/competitions/subtchallenge/tunnel-circuit/en&#39;&gt;SubT Tunnel&lt;/a&gt;
to skoro vypadalo, že pokud jsme se dostali &lt;i&gt;před&lt;/i&gt; nějaký sponzorovaný tým, tak v dalším roce už sponzorovaný nebyl).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tolik hrubé výsledky a detaily a foto snad doplním večer &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/unidroids2.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/unidroids2_t.jpg&#39; alt=&#39;Unidroids&#39; title=&#39;Unidroids&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/unidroids2.jpg&#39;&gt;Unidroids&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/participants.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/participants_t.jpg&#39; alt=&#39;Účastníci zájezdu&#39; title=&#39;Účastníci zájezdu&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/participants.jpg&#39;&gt;Účastníci zájezdu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/helhest.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/helhest_t.jpg&#39; alt=&#39;Helhest a spol.&#39; title=&#39;Helhest a spol.&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/helhest.jpg&#39;&gt;Helhest a spol.&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260803&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. srpna 2026 &amp;mdash; Robotika - referenční soutěžící&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tak trošku doufám, že během tohoto týdne dostanu pár odstavečků od jednotlivých soutěžících týmů, ale proč nezačít tím posledním? Navíc nesoutěžním, &lt;i&gt;jen pro referenci&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na &lt;b&gt;DH26/2&lt;/b&gt; jsem vyrazil tentorkát s &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Patem&lt;/a&gt; na kterém byl položený &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty M03&lt;/a&gt;. Původní plán byl, že &lt;i&gt;Matty&lt;/i&gt; bude detekovat cestu a přeposílat
přes WiFi příkazy &lt;i&gt;Patovi&lt;/i&gt;, ale pak jsem raději přešel na jednodušši variantu a to &lt;i&gt;detekci hladkosti z LIDARu&lt;/i&gt;, což by mohlo odpovídat cestě. Kód je případně k dispozici na
&lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/35&#39; class=&#39;external&#39;&gt;PR #35&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi bych začal s videm z Matyho, kde je vidět pár detailů:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Pat se vrhá do svahu vpravo&lt;/li&gt;

&lt;li&gt;Georgi nese zeleného Mattyho M02&lt;/li&gt;

&lt;li&gt;Helhest jezdí po poli vlevo&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;U informační tabule jsem robota ručně otočil a nechal ho navigovat zase autonomně zpět. Co není zřejmé, a chtělo by to zkombinovat oba logy, je kdy je &lt;i&gt;Pat&lt;/i&gt; v autonomním módu a kdy jsem
musel převzít řízení, ale to dnes už nepřipravím, tak raději alespoň tato &lt;i&gt;surová verze&lt;/i&gt;. Z závěru tam jede auto v protisměru a Matty detekoval vedle cesty i YOLO objekty, tj. vidím
v datech:&lt;/div&gt;

&lt;pre&gt;0:07:09.941864 20 [&#39;car&#39;, 0.86181640625, [0.8564453125, 0.3040364384651, 0.99951171875, 0.58268225193023] ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A vlastně tam byli i dva cyklisti:&lt;/div&gt;

&lt;pre&gt;0:06:06.547099 20 [&#39;person&#39;, 0.7490234375, [0.1168212890625, 0.17350262403488, 0.34375, 0.73307293653488] ],
                  [&#39;bicycle&#39;, 0.7138671875, [0.022583007812, 0.372395783662, 0.333984375, 0.8626301288604] ],
                  [&#39;backpack&#39;, 0.63134765625, [0.078796386718, 0.196940109133, 0.2165527343, 0.38118487596] ],
                  [&#39;person&#39;, 0.56201171875, [0.493896484375, 0.37239581346511, 0.5625, 0.5875650644302368] ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tedy prý s baťůžkem. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;583&#34; height=&#34;351&#34; src=&#34;https://www.youtube.com/embed/mkee_2f4eGo&#34; title=&#34;Robot Matty M03 on the back of robot Pat&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Koukám na časy, kdy jsem převzal řízení:&lt;/div&gt;

&lt;pre&gt;0:00:00.648474 Vehicle mode: 1
0:00:29.797809 Vehicle mode: 0
0:00:53.556491 Vehicle mode: 1
0:01:09.795869 Vehicle mode: 0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a zde je přehled &lt;i&gt;detekované cesty&lt;/i&gt; (autonomně jel 29s až 53s):&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/lidar-road-25-55.png&#39; alt=&#39;Detekce cesty z lidaru&#39; title=&#39;Detekce cesty z lidaru&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Detekce cesty z lidaru&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tj. pokazí se to krátce před 50s.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/smooth-slope-50.png&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/smooth-slope-50_t.png&#39; alt=&#39;Hladký svah u 50s&#39; title=&#39;Hladký svah u 50s&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;245&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/smooth-slope-50.png&#39;&gt;Hladký svah u 50s&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A důvod na 90% je ten, že hledám &lt;b&gt;příliš velké okno!&lt;/b&gt; V kódu mám default &lt;i&gt;300&lt;/i&gt;, kde &lt;i&gt;360deg scan&lt;/i&gt; má &lt;i&gt;1800&lt;/i&gt; &amp;mdash; tady cesta ale o něco uzší a lepší kandidát se najde
na svahu vpravo, přestože tam jsou dva velké skoky. Ještě poznámka, že tolerance rozdílu dvou sousedních měření je &lt;i&gt;10&lt;/i&gt; tedy &lt;i&gt;1cm&lt;/i&gt;. Cestu jsem si &lt;i&gt;pod Lípou&lt;/i&gt; měřil a měla &lt;i&gt;290cm&lt;/i&gt;
a co mi teď nahrubo vychází pro 300, což je 1/6, což jsou vlastně rovnostranné trojúhelníky, tj. poloměr rovná se šířka a lidar mi vrací 3.7m. Ano, je to ještě sklopené 10 stupňů
dolů, tj. takový kužel &amp;hellip; &lt;i&gt;cos&lt;/i&gt; je 0.98 &amp;hellip; skoro zanedbatelné.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tady tedy bude třeba pracovat s proměnlivou velikostí okna a hlavně bych tam chtěl zkusit zapojit ty samotné vzdálenosti. Naivně si teď představuji, že to svahy okolo a budovy musí vyrušit.
Ano, škodolibý nepřítel (nebo přítel?) by řekl, že bych si na to téma měl přečíst nějaký článek, ale pak by to nebyla až taková zábava &amp;hellip; &lt;i&gt;todo later&lt;/i&gt;.&lt;/div&gt;

&lt;h3&gt;Cesta na hrad&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ta asfaltka na videu z M03 vypadá celkem pohodově, ale není. Zlomí se to v okamžiku rozdvojení na &lt;i&gt;Rožumberskou cestu&lt;/i&gt; a následuje více jak 18% padák (číslo soudím podle dat z prastaré
GPS). Jestli má Pat opravdu &lt;i&gt;125kg&lt;/i&gt; a jede 1m/s, do toho občas „ustřelí” z cesty &amp;mdash; no je to adrenalin! Cestou se něco pokazilo, takže Matty už nenahrával, ale stalo se to nějak takto:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;ostré sluníčko Pata zastavilo a stočil kola ostře vlevo do škarpy&lt;/li&gt;

&lt;li&gt;silnice je sypaná jemným štěrkem (skoro písek), takže šel do smyku&lt;/li&gt;

&lt;li&gt;remote jsem přepnul na manuál ale i doprovodné osoby se lekly a začaly robota chytat&lt;/li&gt;

&lt;li&gt;stisk nárazníku odpojil autonomní řízení i dálkové ovládání rychlosti&lt;/li&gt;

&lt;li&gt;robot byl v neutrálu a znova nabral rychlost&lt;/li&gt;

&lt;li&gt;brzda na vzdáleném ovladači sepnula&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; jen se to vše stalo ve slomku sekundy, nebo mi to teď tak připadá. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Že fyzické nárazníky odpojují autonomní i remote řízení vím &amp;mdash; bezpečnostní prvek. Je třeba robota vypnout a znova zapnout (možná existuje i jiné řešení, ale zatím jsem na něj nepřišel,
konkrétně bych doufal, že když stiskne přední nárazník, tak je šance couvat). Co jsem ale netušil je zachování posledního stavu brzd, což tady bylo odbržděno. A jsem rád, že jejich aktivace
byla možná a i na tom písečku relativně úspešná!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co na to černá skříňka?&lt;/div&gt;

&lt;pre&gt;pat-dh26-260801_124356.log
Total time 0:18:51.672916

0:15:54.055071 Vehicle mode: 1
0:16:08.276248 Vehicle mode: 0
0:16:41.132048 Vehicle mode: 1
0:16:46.752133 Vehicle mode: 0
0:17:20.230240 Vehicle mode: 1
0:18:51.646308 Emergency STOP True

app.desired_steering
0:17:19.591284 1 [1000, -400]
0:17:19.690906 1 [1000, 1160]
0:17:19.790578 1 [1000, 819]
0:17:19.890860 1 [1000, 1280]
0:17:19.987704 1 [1000, 2180]
0:17:20.089425 1 [1000, 1220]
0:17:20.187439 1 [1000, 1360]
0:17:20.230240 Vehicle mode: 1
0:17:20.286596 1 [1000, 1180]
0:17:20.385103 1 [1000, 960]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; naposledy v čase &lt;i&gt;17:20.23&lt;/i&gt; jsem přepnul na manuál, ale to je zároveň čas, kdy došlo ke smyku. Krátce před tím, ale robot zatáčí 21.8 stupňů vlevo ze silnice (v plné rychlosti 1m/s).
Stav nárazníků teď přímo nemám k dispozici (to je vždy konečná), takže rozšírím &lt;i&gt;pársování&lt;/i&gt; a doplním, ale na 95% to bylo až po přepnutí do manuálu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, to byla taková &lt;i&gt;komická vložka&lt;/i&gt; a pak už jsme byli skoro dole, Matty zase v klidu nahrával, ale přejíždění mostů asi zase nemám &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Stejně tak spousta kamenů na kterých oba roboti poskakovali tak, že přichycení Mattyho rozhodně nebylo dostatečné!&lt;/div&gt;

&lt;h3&gt;Návrat z restaurace (19:00)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Na závěr jsme si to dali ještě jednou cestou zpět. Bylo třeba zapracovat nově spořádanou kachničku a Pat podle všeho ještě nějakou energii měl. Toto prolítnu už jen pomocí obrázku,
který mi ale přijde dobrý:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 576px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/pat-dh26-return.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/pat-dh26-return_t.jpg&#39; alt=&#39;Návrat z restaurace na parkoviště&#39; title=&#39;Návrat z restaurace na parkoviště&#39; class=&#39;border&#39;  width=&#39;570&#39; height=&#39;402&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/pat-dh26-return.jpg&#39;&gt;Návrat z restaurace na parkoviště&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Distance:	2.87 km		Average speed:	2.77 km/h
Total ascent:	261 m		Avg. moving speed:	3.07 km/h
Total descent:	174 m		Maximum speed:	5.66 km/h
Total time:	1:02:12.0		Moving time:	0:55:47.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Poučení zní, že z kopce je třeba jezdit pomalu (1m/s mi přišel jako hazard) a pokud máme dosáhnout &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en&#39;&gt;Robotour Marathon 5km/h&lt;/a&gt;, tak je stále co dělat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. koukám, že tam mám i ty nárazníky, jen jsem to za ty roky zapomněl &amp;hellip;&lt;/div&gt;

&lt;pre&gt;0:00:00.173364 Bumpers 0
0:17:37.512479 Bumpers 2&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. ano, bylo to &lt;b&gt;po přepnutí na manuál&lt;/b&gt; v čase &lt;i&gt;17:20&lt;/i&gt;. Příště to bude čitelnější (&lt;a href=&#39;https://github.com/robotika/osgar/pull/1081&#39; class=&#39;external&#39;&gt;PR #1081&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 přidávám ještě nové 3-grafy, které mi přišly celkem zajímavé. První je v čase startu a druhý je v čase, kdy vyjel z cesty.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/road25-3graph.png&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/road25-3graph_t.png&#39; alt=&#39;Profil na startu&#39; title=&#39;Profil na startu&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;245&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/road25-3graph.png&#39;&gt;Profil na startu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/road50-3graph.png&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/road50-3graph_t.png&#39; alt=&#39;Profil v okamžiku selhání&#39; title=&#39;Profil v okamžiku selhání&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;245&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/road50-3graph.png&#39;&gt;Profil v okamžiku selhání&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.3 &amp;hellip; a ještě alespoň jedno foto od PavlaS, jako důkaz, že tam na nás na hradě opravdu čekal kužel &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 584px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle-cone.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/castle-cone_t.jpg&#39; alt=&#39;Kužel na hradě&#39; title=&#39;Kužel na hradě&#39; class=&#39;border&#39;  width=&#39;578&#39; height=&#39;326&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle-cone.jpg&#39;&gt;Kužel na hradě&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.4 &amp;hellip; dnešní zkoumání mne lehce překvapilo &amp;mdash; přidával jsem logování změny stavů Pata (&lt;a href=&#39;https://github.com/robotika/osgar/pull/1081&#39; class=&#39;external&#39;&gt;PR #1081&lt;/a&gt;) a dále možnost nahrazení
indexu &lt;i&gt;streamu&lt;/i&gt; jménem (&lt;a href=&#39;https://github.com/robotika/osgar/pull/1082&#39; class=&#39;external&#39;&gt;PR #1082&lt;/a&gt;) a toto je nový náhled na záznam krátce před nehodou:&lt;/div&gt;

&lt;pre&gt;0:16:41.464624 platform.brakes False
0:16:46.752133 platform.manual False
0:17:19.371121 platform.gear 3                # 0=disable, 1=P, 2=R, 3=N, 4=D
0:17:19.413129 platform.brakes True    !!!
0:17:20.230240 platform.manual True
0:17:20.462803 platform.brakes False
0:17:20.513865 platform.brakes True
0:17:20.571198 platform.gear 4
0:17:20.711501 platform.brakes False
0:17:21.062479 platform.brakes True
0:17:21.212663 platform.brakes False
0:17:21.463465 platform.brakes True
0:17:21.713200 platform.brakes False
0:17:22.464070 platform.brakes True
0:17:22.562732 platform.brakes False
0:17:23.063555 platform.brakes True
0:17:23.464687 platform.brakes False
0:17:37.474156 platform.gear 3
0:17:37.480376 platform.gear 1
0:17:37.512479 platform.brakes True
0:17:37.512479 platform.bumpers_front True&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj. od &lt;i&gt;16:46&lt;/i&gt; byl robot v autonomním režimu a v &lt;i&gt;17:19&lt;/i&gt; sám (!) začal brzdit. Navíc tady vidím, že i přepnutí &lt;i&gt;řazení&lt;/i&gt; (gear) na dálkovém ovladači je vidět i v autonomním módu
a nejspíše jsem o páčku zavadil,
protože ještě před bržděním byl v &lt;b&gt;N&lt;/b&gt; (neutrál/volnoběh)! V &lt;i&gt;17:20.23&lt;/i&gt; sice přebírám řízení, ale rozjetého robota mám 0.57-0.23s v neutrálu, ale brzdy se nejprve uvolňují a pak je v panice
znovu spínám. Na nárazníky došlo „až když už bylo po všem”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 513px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/pat-speed-2mps.png&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/pat-speed-2mps_t.png&#39; alt=&#39;Pat jede přes 2m/s!&#39; title=&#39;Pat jede přes 2m/s!&#39; class=&#39;border&#39;  width=&#39;507&#39; height=&#39;281&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/pat-speed-2mps.png&#39;&gt;Pat jede přes 2m/s!&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A pro „pobavení” ještě obrázek výše &amp;mdash; ne náhodou se mi zdálo, že Pat jede nějak rychle &amp;hellip; enkodery reportují rychlost 2.3 m/s pro pravé a 2.0 m/s pro levé kolo zhruba v čase 1040.5,
což odpovídá &lt;i&gt;17:20.5&lt;/i&gt; &amp;hellip; tj. fakt rychle vyjížděl vlevo ze silnice!!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A ještě jedna &lt;i&gt;teorie&lt;/i&gt;, co se mi i honila hlavou když se Pat &lt;i&gt;utrhl&lt;/i&gt; &amp;mdash; vzpomněl jsem si na Jirku/Cogito, jak jel z kopce na jednom ze svých robotů, ODrive regulátory se přehřály a tak
se „bezpečně” odpojily! Pat má výhodu pneumatické (?) brzdy, takže zřejmě byl ve stavu, kdy už se nedalo brzdit motorem a tak zabrzdil sám natvrdo. Žádné sluníčko a falešné detekce!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.5 (2026-08-07) &lt;i&gt;Elena&lt;/i&gt; implementovala &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/37&#39; class=&#39;external&#39;&gt;skript na tvorbu titulků&lt;/a&gt; &amp;hellip; ale přizám se, že offset 35s jsem odhadl od oka. Pro správné určení
času je třeba vzít rozdíl absolutních časů začátků logu pro &lt;i&gt;Pata&lt;/i&gt; a &lt;i&gt;Mattyho&lt;/i&gt;, rozdíl času jejich hodin a čas prvního validního &lt;i&gt;I-frame&lt;/i&gt; H.265 videa. Příště. Ale to
&lt;a href=&#39;https://www.youtube.com/watch?v=mkee_2f4eGo&#39; class=&#39;external&#39;&gt;video s titulky&lt;/a&gt; teď dává vetší smysl. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; ještě, když jsem si to pouštěl lokálně, tak to tak šíleně černé nebylo, takže je tam asi nějaký
(skrytý?) AI vylepšení kvality videa :-(&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260805&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. srpna 2026 &amp;mdash; Helhest&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;(autor textu Martin Pecka, foto PavelS)&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tým Helhest z FEL ČVUT dorazil na místo poslední kvůli jednomu přílišnému spavci. Nicméně přijel plný energie, a to jak té soutěžní, tak i elektrické (tu jsme i rozdávali &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;). Helhest je v poslední době jako slečna před zrcadlem, co si neustále stěžuje, že nemá co na sebe, takže neuplyne týden, aby na něm nebylo něco nového. Tentokrát to byly dva (pro nás) zbrusu nové senzory:
&lt;a href=&#39;https://www.fixposition.com/pages/vision-rtk2&#39; class=&#39;external&#39;&gt;Fixposition Vision-RTK 2&lt;/a&gt; a &lt;a href=&#39;https://www.3dmanifold.com/products/odin1/&#39; class=&#39;external&#39;&gt;Manifold Tech Odin 1&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 584px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/robots-and-vladka.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/robots-and-vladka_t.jpg&#39; alt=&#39;Roboti&#39; title=&#39;Roboti&#39; class=&#39;border&#39;  width=&#39;578&#39; height=&#39;326&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/robots-and-vladka.jpg&#39;&gt;Roboti&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Fixposition&lt;/b&gt; je švýcarská kombinace IMU, kamery a dvouhlavé GNSS, která interně dělá fúzi všech třech senzorů a poskytuje globální lokalizaci a odhad její přesnosti (kovarianci). Bohužel opravdu umí jen globální lokalizaci, tj. bez kvalitního GNSS fixu se ani nerozjede. Takže první hodinu na startu jsme strávili lovením fixu, což neusnadňovala ani vzdálenost k nejbližší free RTK stanici (Tábor, 62 km). Nakonec se zadařilo a v UI senzoru jsme viděli samé zelené obdélníčky. Od té chvíle vypadal celkem hezky funkční, kovarianci mění tak, jak by člověk očekával, s nedostupností jednotlivých senzorů se taky umí vypořádat obstojně. ROS 2 driver fungoval bez větších úprav &lt;i&gt;out of the box&lt;/i&gt;, jen člověk musí pochopit, že něco se musí nakonfigurovat ručně v UI a až pak to ROS driver vidí. V záznamech jsme lokalizaci zběžně kontrolovali a vypadala ok. Akorát asi dvakrát to vypadalo, že se senzor za jízdy resetnul a pak nějakou dobu trvalo, než se zase chytil&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Odin&lt;/b&gt; je taková čínská černá skříňka s kamerou, solid-state lidarem a IMU. Uvnitř je nějaký nadupaný SOC a běží tam moc pěkně vyladěná fúzovaná odometrie, případně SLAM. I tenhle senzor se umí parádně vypořádat s nedostupností senzorů, akorát kovariance z něj lezou konstantní. Vypadá to skoro až magicky, když i bez loop closures to udrží pozici s přesností na centimetry po kilometrovém testu. Na školním dvoře se nám ho jednou podařilo rozhodit asi o 2 metry, ale nevíme, jak. Při dobývání hradu fungoval skvěle&amp;hellip; až na chvíle, kdy nefungoval. V jednu chvíli IMU zahlásila 200 m/s^2 peak a senzor začal neustále zvyšovat odhadovanou rychlost, z níž pak integroval polohu. Takže jsme mu museli sebrat napájení a pak se zase umoudřil. Jinak ROS 2 driver téhle věci je takový&amp;hellip; čínský&amp;hellip; Funguje, ale člověk si ho musí ohackovat&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tyhle senzory jsme na robota namontovali v pátek, takže integrace byla taková dost narychlo. Nakonec jsme zvolili celkem rychle zprovoznitelnou kombinaci: lokální odometrie pro sledování cesty z Odina, a do ní čas od času přepočítané GNSS waypointy přes Fixposition. Plánovač jsme trochu přiohnuli, původně byl zaměřený na exploraci, což tady nebylo úplně žádoucí, ale po pár pokusech se ho povedlo celkem nastavit. Žádná segmentace cesty neprobíhala, doufali jsme, že si plánovač vybere nejpříjemnější cestu po silnici &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na trasu jsme se vydali poslední, a až do ztracení Odina to celkem fungovalo. Pak (po necelých 300 metrech) se tedy Odin ztratil a tím náš pokus skončil (&lt;a href=&#39;https://mapy.com/s/muvokukehu&#39; class=&#39;external&#39;&gt;mapa&lt;/a&gt;). Pokračovali jsme ještě dál a většinou jsme ujeli pár set metrů, než nastal nějaký problém. Celkově nebylo úplně jednoduché pracovat s pointcloudy z Odina, protože mají dost jiné vlastnosti než ty, na které jsme byli zvyklí (lidar nevidí body pod úhlem cca 70° a víc). Sjezd z kopce byl celkem ok, byť motory už začaly limitovat kvůli teplu. A dole pod kopcem jsme se otočili, neb byly názory, že cestou do kopce spálíme hodně energie a aby nám vystačila na cestu zpátky&amp;hellip; Chtěli jsme se odhlásit Martinovi, ale na jeho vybitý mobil to moc nešlo, a bohužel nás znavené horkem a hladem nikoho nenapadlo na hrad zaběhnout a rozloučit se osobně&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 584px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/return-of-helhest.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/return-of-helhest_t.jpg&#39; alt=&#39;Návrat Helhesta&#39; title=&#39;Návrat Helhesta&#39; class=&#39;border&#39;  width=&#39;578&#39; height=&#39;326&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/return-of-helhest.jpg&#39;&gt;Návrat Helhesta&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tím byl náš odjezd trochu nezvyklý, ale všechno jsme si vysvětlili a rozhodně jsme neodjížděli nijak rozladění - spíš jen hladoví a vyprahlí&amp;hellip; Na jídlo jsme zkusili nedaleké Bistro Libra, a nebylo to špatné, ale k dokonalosti taky ještě dost chybělo&amp;hellip; Nicméně studené limonády měli a to bylo hlavní &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260806&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. srpna 2026 &amp;mdash; Matty-maticians&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;(autor textu a fotografií Georgi Georgiev)&lt;/i&gt;&lt;/div&gt;

&lt;pre&gt;Hvězdné datum 4. srpna 2026
Deník Georgiho, kapitána robota Matty 02 z týmu Matty-maticians&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Píše se pátek 31. července 2026. Byl to náročný den, ale nevěděl jsem, co mě ještě čeká. V 17:40 jsem skončil v práci a měl jsem jasný plán, co ještě stihnout – doladit detekci překážek podle depth &lt;table class=&#39;image_panel right&#39; style=&#39;width: 384px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/matty-m02.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/matty-m02_t.jpg&#39; alt=&#39;Matty M02&#39; title=&#39;Matty M02&#39; class=&#39;border&#39;  width=&#39;378&#39; height=&#39;271&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/matty-m02.jpg&#39;&gt;Matty M02&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
mapy, zprovoznit čtečku QR kódů, integrovat modul na zaznamenávání GPS souřadnic a zprovoznit hotspot. Všechno šlo dobře: nejdřív jsem trochu víc stabilizoval detekci překážek, dokonce jsem stihl test venku před budovou, kde bydlím. Matty dokázal úspěšně vyšplhat rampu na kočárky vedoucí ke vchodu do budovy, což Mattymu předtím nešlo. Už se ale začalo stmívat a navíc bylo oblačno, takže jsem si řekl, že dál budu testovat spíš v bytě. S pomocí Clauda jsem rychle a snadno zprovoznil čtečku QR a stáhl jsem si na mobilu aplikaci na vytváření QR kódů. Matty dokázal vyčíst z QR kódu na mém mobilu slavnou hlášku Obi-Wana Kenobiho: „Hello there!&#34; Pak jsem zapojil opět Clauda do akce a s jeho pomocí jsem zaintegroval určení lokace podle GPS, což jsem už naneštěstí nemohl otestovat. Venku byla tma a v mém bytě GPS nefungovala. Ani se tomu nedivím, spíš bych se divil, pokud by GPS fungovala dobře. Takže jsem si řekl, že budu testovat až na soutěži – je to feature, kterou chci zprovoznit až na letošní Robotour, takže teď to zatím byl pouze vítaný bonus a nová funkce na vyzkoušení. Už bylo 23:00 a všechno šlo podle plánu, zbývalo zprovoznit hotspot z mého mobilu – nejjednodušší věc. Byl jsem příliš naivní, i když už s tím mám nějaké zkušenosti. Můžu potvrdit, že networking nadále není sranda. Můj mobil s Androidem 17 dokázal úspěšně vytvořit hotspot a připojil jsem k němu svůj notebook a taky Mattyho. Mobil mi ukazoval, že vidí 2 připojená zařízení, ale neukazoval jejich IP ani MAC adresy. Vesele jsem z počítače pingnul Mattyho a všechny pakety se ztratily. Po hodině debugování jsem došel k hypotéze (bez důkazu), že Android 17 je příliš bezpečný&amp;hellip; a nedovoluje defaultně komunikaci mezi připojenými zařízeními. Navíc mobily od Google nemají pokročilá nastavení hotspotu, pokud nejsou ve vývojářském módu. A mobil je poměrně nový a nechtěl jsem s ním experimentovat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;K mému zklamání mě napadlo až na začátku psaní tohoto deníku, že mám záložní mobil, který je starší a přepnutý do vývojářského módu, protože jsem pro něj psal Android aplikaci jako součást své bakalářské práce. Záložní mobil jsem otestoval a jeho hotspot funguje bezchybně. Navíc jsem zázračně dokázal zprovoznit i hotspot svého hlavního mobilu. Zvětšil jsem bandwidth sítě a najednou všechno začalo fungovat. Ano, jako obvykle, došel jsem k závěru, že dostatek spánku dokáže zázraky. Potíže s hotspotem mě přesvědčily, že si musím koupit krátký Ethernet kabel na nouzová připojení k Mattymu. Přemýšlím, že bych si koupil i cestovní router, ale stále nejsem úplně přesvědčen, že ho potřebuji. Možná spíš nepotřebuji, teď když mám dva mobily, které dokážou fungovat jako Access Point pomocí hotspotu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Už se píše sobota 1. srpna. Během debugování připojení k hotspotu jsem ztratil pojem o čase, a než jsem se vzpamatoval, byly už 2 hodiny ráno, a nejpozději v 5 jsem musel vstávat. Hotspot jsem vzdal a začal doufat, že Martin bude mít zázračné řešení problému, což taky víceméně měl. Nebylo to přímo zázračné řešení, spíš dobré staré klasické řešení – využít jeho mobil jako hotspot. V 5 jsem se vzbudil a začal jsem se rychle, ale opatrně připravovat na cestu. Naštěstí jsem už všechno potřebné vybavení měl v tašce. Ještě jsem si řekl, že dobiju baterku Odroida z večerního debugování hotspotu, což se mi povedlo. Ale když jsem vyrazil z domova, měl jsem už 10–15minutové zpoždění, což nebylo optimální. Cestu k Martinovi neznám dobře, spoléhal jsem se na Waze. Takže jsem během cesty ještě nabral dalších 5–10 minut zpoždění. Setkal jsem se s Martinem, nevypadal naštvaně na moje zpoždění, rychle jsme naložili Mattyho a moje dvě tašky do Martinova VW, a vyrazili jsme v 6:50. Cesta byla dobrá až na hodně větví na cestě po vichřici, která byla předchozí večer. Ještě si můj nevyspalý mozek vzpomněl, že divoká zvěř existuje.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V 8:50 jsme byli na místě a v 9:00 jsme už mohli odstartovat soutěž. Martin mi pomohl s hotspotem, takže moje největší obava se přesunula spíš k baterce mého notebooku. Je zbrusu nová, ale pořád malá, jako dřív. Dřív dokázala pod zátěží vydržet maximálně 2 a půl hodiny – herní notebook, který dokáže trénovat neuronové sítě a který jsem (málem) v minulosti rozbil tím, že jsem na něm neustále trénoval neuronové sítě po dobu 2 let na magistru. Skončilo to tím, že poslední 2–3 týdny magistra se často začala zobrazovat modrá obrazovka smrti. Ale tohle je jiný příběh.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zpět k Dobývání hradu. Začal jsem první pokus. Start byl u stromu, který Martin zmiňuje ve svém blogu. A hned na začátku situace nevypadala dobře. Matty nejdřív udělal kolečko kolem startovní čáry a pak se rozhodl odbočit doleva kolem stromu a jezdit zcela mimo cestu k nějakému keři. Začal jsem debugovat a hned první změna byla, že jsem změnil velikost okna nad depth mapou, podle kterých určuji, kde jsou překážky (viz &lt;a href=&#39;https://youtu.be/Pg0aLy9kyMo&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Možná se nejdřív ptáte, jak by měl algoritmus na řízení Mattyho teoreticky fungovat. Největší prioritu má algoritmus na detekci překážek, která se řídí čtyřmi okny. Pro připomenutí, na vidění Matty používá stereo kameru Luxonis Oak-D Pro, a na Mattym momentálně běží knihovna kamery DepthAI v3.6.1. Dřív jsem pracoval s verzi knihovny 2 a hned jsem si všiml, že ve verzi 3 jsou lepší algoritmy na zpracování hloubkové mapy. Naneštěstí jsem nemohl zapnout všechny filtry mapy, protože začala docházet operační paměť kamery. Běží tam 5×5 median filter, brightness filter a navíc zabudovaný algoritmus na odhad vzdálených bodů (stereo_subpixel). Průměr hloubky přes levé a pravé okno určuje, jestli může Matty odbočit doleva nebo doprava. Střední okno určuje, zda Matty může pokračovat směrem rovně. Ještě navíc jsem přidal spodní okno, které určuje, zda náhodou není prudký pád (ladil jsem to hlavně pro schody). K mému zklamání stereo subpixel není magický algoritmus, který vyřeší problém určení hloubky vzdálených bodů (jako bonus filtruji pryč body s malou jistotou predikce). Takže příliš vzdálené body mají hloubku 0, což je nedefinovaný stav (na videu jsou v černé barvě), a Matty bere takové body jako blízkou překážku. Algoritmus se tedy nemůže dívat příliš vysoko, protože naráží na nedefinované body nad horizontem. Řešil jsem to tím, že mám nahoru-dolů posuvná okna a samotný posun se řídí IMU Luxonis kamery. Bohužel IMU není přesné, a jako bonus se z videa zdá, že se okna posouvají v opačném směru, než se mají doopravdy posouvat. Ano, znaménko vrací úder. Ve výsledku Matty čas od času detekuje zem jako blízkou překážku a odbočí na stranu, která vypadá vzdálenější. Je to vidět přímo na videu a až mě překvapilo, jak moc deterministické toto chování je – ve všech bězích Matty odbočoval doleva do trávy na stejná místa. Během soutěže jsem se pokoušel vyřešit problém změnami konstant, ale nechtěl jsem zasahovat příliš do kódu, abych nerozbil všechno, což se nakonec i stalo. Navíc mě tlačila baterka laptopu, která se rychle vybíjela, a v okolí jsme neměli kde nabíjet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhá kritická část algoritmu je detekce cesty. Zatím tam používám stejnou neuronovou síť, kterou Martin použil na soutěži &lt;a href=&#39;/competitions/robotrip/2026/en&#39;&gt;Tulák po krasu 2026&lt;/a&gt;. Jak můžete z videa vidět, model nefunguje bezchybně, ale je stabilní, když je cesta jasně definovaná. Naneštěstí nestabilita detekce překážek nepomáhala. Několikrát se stalo, že falešně pozitivní (FP) překážka způsobila prudkou zatáčku doleva nebo doprava. A jak je ve videu vidět, často se stávalo, že vlevo jsou pouze tráva a pole. Matty tak najednou vidí pole a hledání cesty detekuje oblast jako průchodnou. Výstup algoritmu je pak – jeď rovně do pole. Nastal ale scénář, kdy tráva byla ve skutečnosti vysoká, ale nižší než silnice, po které jel Matty. Matty spadl do příkopu s vysokou trávou a depth mapa najednou nemohla být úplná kvůli příliš blízkému objektu. Takže se najednou vším směrem stala překážka – ať se Matty otočil kamkoli, viděl překážku. Dostal se tak do koncového stavu. Několikrát se díky náhodě dokázal odtamtud dostat, ale jednalo se spíš o štěstí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Během soutěže jsem ještě neměl takový hezký skript na debugování, díky kterému jsem vytvořil tohle video, takže na většinu pozorování výše jsem přišel až včera, 3. srpna. Během soutěže jsem si správně myslel, že je něco špatně s okny na detekci překážek z depth mapy, tak jsem se pokusil párkrát trefit dobré nastavení v konfiguračním souboru. Některá nastavení byla doopravdy lepší než jiná, ale žádné z nich nevyřešilo problém vjezdu do trávy. Kdybych jen mohl přijít na to, že se okna posouvají ve špatném směru a že Matty naviguje tak, že se dívá čistě do země&amp;hellip; Každopádně baterka notebooku se mi už téměř vybila. Zbývalo posledních 15% a dostal jsem nápad pokusit se nastavit nedefinované hloubkové pixely na hodně velkou hodnotu, která se blížila maximální vzdálenosti. Proto si můžete všimnout, že ve videu horní část depth mapy má masku. Ovšem trochu předbíhám. Dokončil jsem verzi 0 masky, nahrál jsem kód do Mattyho a spustil mód čekání na uvolnění stop tlačítka. Baterka notebooku už byla na 7%. Rozběhl jsem se k Mattymu, odjistil stop tlačítko a najednou nic. Matty se ani nepokusil rozjet. Rychle jsem se vrátil k notebooku a už jsem ho nedokázal vzbudit. Takže to byl pro mě konec. Na takové situace mají Bulhaři hovorový výraz „отиде коня у реката&#34;. Překládá se to jako „Kůň vešel do řeky&#34; a znamená to, že se všechno pokazilo. Naštěstí jsem v tu chvíli vedl podle ujeté vzdálenosti. Můj náskok vydržel ještě dlouho, ale nevydržel dostatečně dlouho.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bylo už po 11:00 a najednou se objevil tým Helhest z ČVUT, tedy aspoň hardwarová část týmu. Jejich návrh tříkolového robota je dost dobrý, robustní a dokáže jet i vzhůru nohama. Navíc je mohutný, těžký, hodně silný, a jeho konstrukce pevná. Pokaždé, když udělá prudký pohyb, jeho kovová konstrukce vydá výrazné skřípavé zvuky a jeho velká motocyklová kola vydají zvuk protáčejících se pneumatik na asfaltu. Vzbuzuje respekt a přitahoval nejvíc pozornosti kolemjdoucích. Zanedlouho přijela i softwarová část týmu a s sebou přinesli skládací stůl, skládací židle a velký přenosný akumulátor. Půjčili nám ho taky, abychom mohli dobíjet baterky, a byla to naše záchrana. Jsem jim nesmírně vděčný. Popravdě v tu chvíli jsem už taky potřeboval dobít svoje vlastní baterky, tak jsem si dal syrové tyčinky. Ale i tak si 3 hodiny spánku už začaly vybírat svou daň. Neustále jsem přemýšlel o tom, jak stabilizovat Mattyho, a o Helhest robotovi a asi jsem se nesocializoval tak moc, jak jsem později chtěl.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Než jsem se stihl vzpamatovat, měl už můj notebook 16% baterky a dokonce se probudil ze spánku. Smůla byla, že jsem se nemohl připojit k Mattymu a začal jsem panikařit. Martin přitom nebyl v okolí, vyrazil testovat Pata, takže mi zbývalo vyčkat a přemýšlet, co se mohlo pokazit na mojí masce horních vzdálených bodů tak, že by to vyhodilo výjimku. Přišel jsem na to, že jsem možná příliš spěchal a měl bych začít tím, že přepíšu stejný kód od začátku. Martin se mezitím vrátil a dokázal nahodit spojení s Mattym, takže to pro mě znamenalo, že jsem zpátky v soutěži. Přepsal jsem maskování bodů a najednou&amp;hellip; voilà, Matty fungoval. Byl tedy čas na další testovací běh&amp;hellip; Ano, byl to přímo běh z nasdíleného videa. Maskování nepomohlo vůbec. Maska vyřešila problém detekce oblohy jako překážky, ale měl jsem zmatek v indexech z logu a neuvědomil jsem si, že se Matty celou dobu díval na zem, a ne na oblohu. Takže můj finální běh dopadl naprosto stejně jako můj rekordní běh. Aspoň jsem byl schopný replikovat svůj výsledek, čímž jsem zatvrdil svůj rekord. Ale tím, že jsem problém nevyřešil, jsem taky ztratil inspiraci pokoušet se debugovat ještě víc přímo na místě. Řekl jsem si, že budu o hodně efektivnější doma poté, co se pořádně vyspím. Řekl jsem si taky, že možná hlavní chyba je v neuronové síti na detekci cesty. Včera 3. srpna jsem z logu zjistil, že ano, síť není stabilní, ale nebyla hlavní příčinou odbočky do trávy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 518px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/matty-off-road.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/matty-off-road_t.jpg&#39; alt=&#39;Matty mimo cestu&#39; title=&#39;Matty mimo cestu&#39; class=&#39;border&#39;  width=&#39;512&#39; height=&#39;386&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/matty-off-road.jpg&#39;&gt;Matty mimo cestu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Z logů videa navíc můžete vidět, že čtečka QR kódů funguje a GPS dokáže dávat směr jízdy Mattymu, ale stále si nejsem jistý, jak moc stabilní GPS je. Z práce vím, že často není nejlepší nápad věřit pouze GPS. Jarda z týmu Unidroids bojoval s GPS na svém hoverboard robotovi, ale víc napíše on sám o svých zkušenostech. Musím ještě jednou dodat, že algoritmus běžící na Mattym není zdaleka hotový a budu pokračovat ve vývoji. Deadline je Robotour v září. Každopádně jsem otestoval verzi 0 algoritmu, Matty jel autonomně dostatečně dlouho, nasbíral tak cenná logovací data, narazil na zajímavý corner case s trávou, a jako bonus jsem zjistil, že čtení QR kódu z mobilu není vždy ideální, když svítí přímé sluníčko – takže bych řekl, že jsem svoje cíle splnil. Dokonce jsem splnil pár cílů, které jsem tehdy ještě neměl. Jako bonus Matty 02 neměl žádné havárie a během testování nebylo zraněno žádné zvíře, ani jeden z největších mravenců v Evropě.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 518px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle2.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/castle2_t.jpg&#39; alt=&#39;Hrad&#39; title=&#39;Hrad&#39; class=&#39;border&#39;  width=&#39;512&#39; height=&#39;386&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle2.jpg&#39;&gt;Hrad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Poté co běh z videa skončil, díval jsem se spíš, jak si vedou ostatní dva týmy – Unidroids a Helhest. Helhest nakonec dokázali stabilizovat svůj algoritmus natolik, že porazili rekord Mattyho 02. Během vítězného běhu jsem celou dobu šel vedle Helhesta a mluvili jsme o jejich algoritmu, který je dost zajímavý (nebudu prozrazovat detaily bez jejich souhlasu a doufám, že napíšou do fóra). Navíc se po dokončení běhu nevzdali a řekli si, že se budou dál pokoušet dobýt hrad. Zbytek skupiny jsme se rozhodli jít na hrad pěšky a počkat na ně tam. Martin nenechal Pata a rozhodl se dál sbírat data a zkoušet autonomní režim. Pat nám jako vedlejší efekt sloužil jako přeprava na osobní věci. Postupně jsme se dobrali k hradu a museli jsme ho nakonec dobýt sami, bez robotů. Což jsme dokázali. Jediná obrana hradu byla cenovka 100 Kč na vstup. Hrad je pěkný a tajemný, doporučuji ho. Přitom jsem měl jeden cíl – ochranu a vrácení kuželu. Ale než jsme se stihli podívat do všech koutů hradu, kužel zmizel. Pak se magicky objevil u Martina. A už jsem ho nespustil z očí, dokonce jsem ho nesl celou dobu. „My precious!&#34; Pak následovala hospoda, plánování dalších soutěží a co s roboty, zmrzlina a cesta domů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Cesta byla v pohodě, protože jsem neřídil. Ještě jednou děkuji Martinovi za organizaci soutěže a za odvoz. V 22:30 jsem už byl ve svém autě i s Mattym v kufru a odjížděl jsem zpět do Prahy. Matty sice ten den nevyboural nic, ale moje cesta domů byla vlastní soutěž – dobývání Prahy. Hned v lese kousek od Martinovy obce jsem se musel vyhýbat neosvětlenému cyklistovi mezi zatáčkami. Pak jsem se na poslední chvíli vyhnul úseku s dálniční známkou (kterou jsem pochopitelně neměl). A velkolepé finále proběhlo v tunelu Blanka, kde mi prudce zvedlo tep sedm motorkářů, kteří se rozhodně nesnažili být nenápadní. Mise splněna, kapitán a Matty 02 jdou spát.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 392px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle1.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/castle1_t.jpg&#39; alt=&#39;Hrad&#39; title=&#39;Hrad&#39; class=&#39;border&#39;  width=&#39;386&#39; height=&#39;512&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle1.jpg&#39;&gt;Hrad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 392px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle3.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/castle3_t.jpg&#39; alt=&#39;Hrad&#39; title=&#39;Hrad&#39; class=&#39;border&#39;  width=&#39;386&#39; height=&#39;512&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/castle3.jpg&#39;&gt;Hrad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 518px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/sunset.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/sunset_t.jpg&#39; alt=&#39;Západ slunce&#39; title=&#39;Západ slunce&#39; class=&#39;border&#39;  width=&#39;512&#39; height=&#39;386&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/sunset.jpg&#39;&gt;Západ slunce&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 392px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/river.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/river_t.jpg&#39; alt=&#39;Most a řeka&#39; title=&#39;Most a řeka&#39; class=&#39;border&#39;  width=&#39;386&#39; height=&#39;512&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/river.jpg&#39;&gt;Most a řeka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260807&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. srpna 2026 &amp;mdash; Unidroids&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;(autor textu Jaroslav Krch)&lt;/i&gt; &amp;mdash; převzato z &lt;a href=&#39;https://github.com/unidroids/robot-platform/blob/main/challenges/Divka_2026_II/divka_2026_II_analyza.md&#39; class=&#39;external&#39;&gt;webu - divka_2026_II_analyza.md&lt;/a&gt;&lt;/div&gt;

&lt;h1&gt;Dívka 2026 II (1.8.2026) - Analýza dat&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;GPS poloha&lt;/b&gt;: Unicore UM980 + L1/L2/L5 anténa, RTK + PPP korekce&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Dual Anténa Heading&lt;/b&gt;: Unicore UM982 + L1/L2 antény&lt;/li&gt;

&lt;li&gt;&lt;b&gt;10-Axis IMU&lt;/b&gt;: Hiwonder IM10A&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Shrnutí&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Řešení řízení robota bylo postaveno na záznamu GPS polohy. Záznam byl pořízen večer před startem (cca 1 km trasy).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Všechny pokusy při závodu vedly k tomu, že robot postupně sjížděl z cesty a systematicky uhýbal na pravou stranu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Analýza dat po závodu ukázala, že fúze headingu a IMU obsahovala systematickou chybu 90 stupňů. Robot si myslel, že jede správným směrem, ale ve skutečnosti byl natočený do příkopu.&lt;/div&gt;

&lt;h2&gt;Analýza logu&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Z logu je patrné, že robot při ztrátě heading z duální antény přepnul na heading z IMU. Úhel se skokově změnil.&lt;/div&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;./logger-11-41-34.dat_heading_comparison.png&#34; alt=&#34;Záznam logu při manuálním vedení robota&#34; width=&#34;62%&#34; /&gt;
  &lt;img src=&#34;./heading_analysis.png&#34; alt=&#34;Otočení robota o 2x360 stupňů&#34; width=&#34;32%&#34; /&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;em&gt;Vlevo: Záznam logu při manuálním vedení robota. Vpravo: Otočení robota o 2x360 stupňů.&lt;/em&gt;
&lt;/p&gt;
&lt;div class=&#39;p&#39;&gt;Další zkoumání dat z IMU ukázalo zásadní problém pro integraci. Když jsem robota otočil na místě dvakrát dokola, magnetické pole (MAG) se neotočilo, a výsledný reportovaný úhel (ANGLE) tak není správný. Nicméně Gyroskop (GYRO) na první pohled poskytuje správné informace. (Tato zjištění budou předmětem změny kódu a vylepšení integračního řešení; dalším krokem bude už jen ze zvědavosti snížení množství železa v okolí kompasu zda je příčinou chybného reportování).&lt;/div&gt;

&lt;h2&gt;Kvalita headingu&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Robot se pro orientaci primárně spoléhá na GNSS heading (duální anténu a Unicore UM982) a v případě potřeby se záložně přepíná na heading (úhel) z IMU.&lt;/div&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;./presnost_gps_headingu.jpg&#34; alt=&#34;gnss heading&#34; width=&#34;49%&#34; /&gt;
  &lt;img src=&#34;./orientace_podle_seznoru_osm.png&#34; alt=&#34;orientace podle senzorů&#34; width=&#34;49%&#34; /&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;em&gt;Vlevo: GNSS Heading a jeho chyba. Vpravo: Fúze směru orientace.&lt;/em&gt;
&lt;/p&gt;
&lt;div class=&#39;p&#39;&gt;Mapa jasně ukazuje chybu orientace v částech, kde byl GNSS heading nepřesný, což je důsledek chyby v kalibraci IMU vůči robotovi.&lt;/div&gt;

&lt;h2&gt;Kvalita GPS dat&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Robot byl osazen novou GNSS jednotkou Unicore UM980 s novou anténou pro příjem všech satelitních systémů a frekvencí L1/L2/L5 a s PPP korekcí. Jedná se o náhradu za původní L1/L2 anténu a u-blox F9R GNSS modul.&lt;/div&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;./tulak_po_krasu_gps_poloha.jpg&#34; alt=&#34;gps tulák&#34; width=&#34;49%&#34; /&gt;
  &lt;img src=&#34;./presnost_gps_polohy.jpg&#34; alt=&#34;gps dívka&#34; width=&#34;49%&#34; /&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;em&gt;Vlevo: GPS záznam ze soutěže Tulák. Vpravo: GPS záznam z Dívky.&lt;/em&gt;
&lt;/p&gt;
&lt;div class=&#39;p&#39;&gt;Modul Unicore UM980 společně s RTK korekcemi a L1/L2/L5 anténou byl schopen udržet RTK fix i pod stromy, zatímco u předchozího řešení (u-blox F9R s L1/L2 anténou) RTK pod stromy vypadávalo.&lt;/div&gt;

&lt;h2&gt;Závěr&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Je třeba opravit fúzi headingu a IMU, aby robot lépe zvládal situace, kdy je GNSS heading nepřesný.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Modul UM982 je principiálně na primární anténě shodný s UM980 a na sekundární anténě pro určení směru používá L1/L2. Vyvstává otázka, zda pro sekundární přijímač nevyužít původní anténu od F9R, která by mohla mít lepší zisk. Což je předmětem dalšího zkoumání.&lt;/div&gt;

&lt;h2&gt;Interaktivní mapa&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Interaktivní mapa (online náhled): &lt;a href=&#39;https://unidroids.com/robot-platform/hosting/divka_2026_mapa_kompletni.html&#39; class=&#39;external&#39;&gt;divka_2026_mapa_kompletni.html&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260809&#34;&gt;&lt;/a&gt;
&lt;h2&gt;9. srpna 2026 &amp;mdash; ?? Dobývání hradu II. ??&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Kapitolu prvního &lt;i&gt;Dobývání hradu&lt;/i&gt; bych asi pomalu uzavřel. Díky moc aktivním účastníkům, divákům a &lt;a href=&#39;https://www.divcikamen.cz/&#39; class=&#39;external&#39;&gt;partnerům organizace soutěže&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co druhá kapitola, bude? Máte o ní zájem? Má &lt;i&gt;posoutěžní eufórie&lt;/i&gt; brzy vyprchá, tak je třeba k dalšímu kroku rychle položit základy!&lt;/div&gt;

&lt;h3&gt;Čtvrtletní Dobývání&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Asi první, co mi přišlo na mysl, bylo, že pořádat soutěž až za rok, je &lt;i&gt;hrozně daleko&lt;/i&gt; a s rozvojem AI je otázka, zda ještě budeme mít šanci něco zajímavého zkoušet. A to horké léto &amp;mdash;
není nějaka alternativa? Podzim je &lt;a href=&#39;/competitions/robotour/2026/en&#39;&gt;Robotour&lt;/a&gt;, na jaře zase &lt;a href=&#39;/competitions/robotem-rovne/en&#39;&gt;Robotem Rovně&lt;/a&gt; nebo začátkem léta &lt;a href=&#39;/competitions/robotrip/2026/en&#39;&gt;Tulák&lt;/a&gt;.
Co pozdni podzim a co zima? A co to dělat každé roční období?!&lt;/div&gt;

&lt;h3&gt;GPS cílová lokace&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Druhé téma, co se mi honilo hlavou, bylo, že GPS pozice cílového kužele „je pouze orientační” (něco jako text na reklamě, že &lt;i&gt;obrázek je pouze ilustrační&lt;/i&gt;). &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Prostě já ani nevím,
kam přesně ten Jakub kužel položil a hlavně to &lt;i&gt;nechci řešit&lt;/i&gt; &amp;mdash; stížnosti, že je o 2m jinde, než říka XY-super-GPS předem zamítám. S Cimrmanem bych řekl „plus-mínus 200 let” &amp;hellip; tak poloměr
podle mistra &lt;i&gt;200 metrů&lt;/i&gt;? &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; myšlenka v kostce je, že „kužel je někde na hradě” a „hledej šmudlo” (abych použil Cimrmana ještě jednou).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ano, to nám nijak nebrání dát dopravní kužel na avízovanou GPS souřadnici, ale stejně tak máme možnost ho „schovat za roh”.&lt;/div&gt;

&lt;h3&gt;Lokace 2&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Preference &lt;i&gt;Helhesta&lt;/i&gt; byla, ať to není tak daleko od Prahy, což je celkem fér, když všechny 3 týmy byly z Prahy. V průvodci jsem narazil na zříceninu &lt;a href=&#39;https://www.hrady.cz/hrad-zviretice-mlada-boleslav&#39; class=&#39;external&#39;&gt;Zvířetice u Mladé Boleslavi&lt;/a&gt;, což je aktuální kandidát na pozdní podzim (poslední týden v říjnu 2026).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/zviretice.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/zviretice_t.jpg&#39; alt=&#39;Hrad Zvířetice&#39; title=&#39;Hrad Zvířetice&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/zviretice.jpg&#39;&gt;Hrad Zvířetice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MartinL pak doporučoval &lt;a href=&#39;https://www.hrad-litice.cz/&#39; class=&#39;external&#39;&gt;hrad Litice&lt;/a&gt;, kde by bylo i blízké ubytování v chatičkách pod hradem a pod. Byla by tam možná asi i &lt;i&gt;zimní jízda&lt;/i&gt;, ale ta myslím skončí
„tragédií”, takže jí můžeme realizovat i přímo v Praze. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 336px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/litice.jpg&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/litice_t.jpg&#39; alt=&#39;Hrad Litice&#39; title=&#39;Hrad Litice&#39; class=&#39;border&#39;  width=&#39;330&#39; height=&#39;248&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dobyvani-hradu/litice.jpg&#39;&gt;Hrad Litice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Obě lokace jsou rozjednané, tak už jenom zbývá KDO a KDY?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zdroj:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.hrady.cz/hrad-zviretice-mlada-boleslav/galerieo/35283#images-42&#39; class=&#39;external&#39;&gt;https://www.hrady.cz/hrad-zviretice-mlada-boleslav/galerieo/35283#images-42&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.hrad-litice.cz/en/photogalleries&#39; class=&#39;external&#39;&gt;https://www.hrad-litice.cz/en/photogalleries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h2&gt;&lt;a href=&#39;https://slovnik.seznam.cz/preklad/anglicky_cesky/teaser&#39; class=&#39;external&#39;&gt;Teaser&lt;/a&gt;&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 519px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://www.herniarcheolog.cz/2017/03/hra-20-dobyvani-hradu-1986.html&#39;&gt;&lt;img src=&#39;/competitions/dobyvani-hradu/dh1986.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;513&#39; height=&#39;383&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://www.herniarcheolog.cz/2017/03/hra-20-dobyvani-hradu-1986.html&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Pokud chcete soutěž nějakým způsobem podpořit nebo máte nějaké doplnění/dotaz,
tak se nám prosím ozvěte pomocí &lt;a href=&#39;/competitions/dobyvani-hradu/en#email&#39;&gt;kontaktního formuláře&lt;/a&gt; nebo na mail &lt;i&gt;webmaster-at-robotika.cz&lt;/i&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Pat (a Mat)</title>
    <link rel='alternate' href="https://robotika.cz/robots/pat-a-mat/en"/>
    <id>https://robotika.cz/robots/pat-a-mat/en</id>
    <updated>2023-09-08T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Vím, že písmeno &lt;b&gt;P&lt;/b&gt; už bylo použité, ale pro (potenciální) dvojici pomocných robotů
mne automaticky asociovala dvojice kutilů z oblíbeného DIY seriálu. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
&lt;b&gt;Blog update:&lt;/b&gt; 
30/07/2026 &amp;mdash; &lt;a href=&#39;/robots/pat-a-mat/en#260730&#39;&gt;Update systému, LIDAR road&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Podvozek pro donáškového robota jsem poptával již léta. Začalo to s &lt;a href=&#39;/competitions/eurobot/en&#39;&gt;Eurobotem&lt;/a&gt;
a robotem &lt;a href=&#39;/robots/daisy/en&#39;&gt;Daisy&lt;/a&gt; (vlastně už s &lt;a href=&#39;/robots/berta/en&#39;&gt;Bertou&lt;/a&gt;). Jedna z vizí byl pizzabot,
který by rozvážel ještě horkou pizzu na pokoje na internátě v Praze Troji.
No na realizaci nikdy nedošlo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další „donáškovou ligou” je soutěž &lt;a href=&#39;/competitions/robotour/en&#39;&gt;Robotour&lt;/a&gt;. Zde je náklad &lt;i&gt;pouze&lt;/i&gt; 5 litrový
soudek, ale i pro běžné RC modely je to už moc.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nějakou větší platformu jsem plánoval poskládat ze stavebnice &lt;a href=&#39;/articles/infento/en&#39;&gt;Infento&lt;/a&gt;, ale zatím jsem
tam nerozchodil ani ovládání motoru a o nějakých enkodérech ani nemluvě.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na &lt;a href=&#39;/competitions/subtchallenge/en&#39;&gt;SubT Challenge&lt;/a&gt;
se mi líbil &lt;a href=&#39;/robots/kloubak/en&#39;&gt;Kloubák K2 a K3&lt;/a&gt;, ale přestože má dobrou prostupnost terénu, chybí nějaké vhodné
místo, kam by se připevnil náklad. Navíc je tam problém výroby &amp;mdash; netuším, zda někdy studenti poskládají
K4, ale „letos to nebude”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co se komerčně dostupných platforem týče, tak si pamatuji noční šestikolovou můru z Francie, kterou Jirka testoval
na &lt;a href=&#39;/competitions/fieldrobot/2010/en&#39;&gt;Field Robot 2010&lt;/a&gt;. Pak jsem si nějaký čas hrál s &lt;a href=&#39;/robots/husky/en&#39;&gt;Husky&lt;/a&gt; od
&lt;a href=&#39;https://clearpathrobotics.com&#39; class=&#39;external&#39;&gt;Clearpath Robotics&lt;/a&gt;. Nebyla to úplně levná sranda a když si vzpomenu na stopy jak na trávníku tak
na podlaze v obyváku, tak bych raději podvozek s možností zatáčení.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A konečně by bylo dobré pořídit již nějakou existující platformu a ne experimentální prototyp.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A když jsme nedávno znovu hledali platformu, co by byla schopna unést 100kg nákladu, tak jsme narazili na firmu
&lt;a href=&#39;https://www.yuhesen.com/&#39; class=&#39;external&#39;&gt;Yuhesen&lt;/a&gt;:
&lt;i&gt;Founded in 2013, Yuhesen Technology is an industrial leading modular intelligent mobile robot provider building the easy-to-operate and high control precision robot platforms to support robotics research in the field of manufacturing, agriculture, educational, logistics, military and aerospace. YUHESEN has established a robotics product system covering all-terrain UGV and ROS based autonomous robotics solutions.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Robotických platforem nabízí hned několik s tím, že na současnou úlohu nejlépe pasoval
&lt;a href=&#39;https://www.yuhesen.com/en/productcenter/info.aspx?itemid=372&#39; class=&#39;external&#39;&gt;FR-07 Pro&lt;/a&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/fr07pro.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/fr07pro_t.jpg&#39; alt=&#39;FR-07 Pro (foto převzato z webu výrobce)&#39; title=&#39;FR-07 Pro (foto převzato z webu výrobce)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;204&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/fr07pro.jpg&#39;&gt;FR-07 Pro (foto převzato z webu výrobce)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Rozměry: 132 x 76 x 49cm&lt;/li&gt;

&lt;li&gt;Váha: 125kg&lt;/li&gt;

&lt;li&gt;Náklad: 100kg&lt;/li&gt;

&lt;li&gt;Rychlost: 8km/h&lt;/li&gt;

&lt;li&gt;Max stoupání: 10 stupňů&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#230908&#39;&gt;230908 - Nalodění&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#230927&#39;&gt;230927 - Prověření transakce, beneficiary name a EVER GLOBE&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231103&#39;&gt;231103 - Čínský agent v Praze&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231110&#39;&gt;231110 - První dojmy&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231113&#39;&gt;231113 - Baterka a brzda&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231115&#39;&gt;231115 - ZERO battery voltage&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231116&#39;&gt;231116 - PCAN&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231118&#39;&gt;231118 - Remote Control&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231119&#39;&gt;231119 - První ujeté centimetry a User manual V2.2.0&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231123&#39;&gt;231123 - Nabíječka a dálkový ovladač&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231127&#39;&gt;231127 - Zbyňkovy hračky a Anderson konektory&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#231221&#39;&gt;231221 - Stará baterka&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240102&#39;&gt;240102 - Odložené uspokojení&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240103&#39;&gt;240103 - Konec srandy - baterka je zpátky v Německu!&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240111&#39;&gt;240111 - Vzkříšení&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240119&#39;&gt;240119 - Nová baterka!&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240120&#39;&gt;240120 - Pat nemá rád sníh&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240210&#39;&gt;240210 - Odyssey a 3x USB&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240302&#39;&gt;240302 - Pat follows Path&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240324&#39;&gt;240324 - Navigace na kužel&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240407&#39;&gt;240407 - Killer Application&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240414&#39;&gt;240414 - Cones Challenge v1.0 (10 minut)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240502&#39;&gt;240502 - 4 kužely CCW&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#240906&#39;&gt;240906 - Push me!&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#241020&#39;&gt;241020 - Cones Challenge v1.1 (1h)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/pat-a-mat/en#260730&#39;&gt;260730 - Update systému, LIDAR road&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog / Pat (a Mat)&lt;/h1&gt;
&lt;a id=&#34;230908&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. září 2023 &amp;mdash; Nalodění&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes rano jsem dostal tyto fotky, které mne celkem potěšily, tak jsem se rozhodl odstartovat Pat-ovský blog. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-to-go.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-to-go_t.jpg&#39; alt=&#39;Obsah balení&#39; title=&#39;Obsah balení&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;312&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-to-go.jpg&#39;&gt;Obsah balení&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-in-box.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-in-box_t.jpg&#39; alt=&#39;Pat ve futrále&#39; title=&#39;Pat ve futrále&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;323&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-in-box.jpg&#39;&gt;Pat ve futrále&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/crate.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/crate_t.jpg&#39; alt=&#39;Přepravní box&#39; title=&#39;Přepravní box&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;226&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/crate.jpg&#39;&gt;Přepravní box&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230927&#34;&gt;&lt;/a&gt;
&lt;h2&gt;27. září 2023 &amp;mdash; Prověření transakce, beneficiary name a EVER GLOBE&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, drobný posun. Omlouvám se, že jsem článek na chvili „schoval” (on ho stejně Google snadno našel i když byl &lt;i&gt;hidden&lt;/i&gt;),
protože situace nebyla úplně příznivá. Začalo to bankou, která chtěla „prověřit transakci”:
&lt;i&gt;... banky dle zákona č. 253/2008 Sb., § 9 odst. 1 mají mimo jiné povinnost provádět kontrolu transakcí na účtu a mají právo klienta požádat o vysvětlení případně doložení transakcí, které probíhají na jeho účtech vedených u dané finanční instituce...&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak to trvalo skoro 10 dní než se peníze dostaly z evropské banky do te čínské &amp;hellip; přečetl jsem si &lt;a href=&#39;https://www.banky.cz/poradna/3255-do-ciny/&#39; class=&#39;external&#39;&gt;dotaz na platbu do Číny&lt;/a&gt;, 14 dní žádná doba a nehrotil to (jméno &lt;i&gt;Pavel Strašák&lt;/i&gt; mi také přišlo tématické &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;). Zabalený robůtek mezitím čekal ve skladu &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak to pokračovalo z čínské strany: &lt;i&gt;The bank notified us they just received the payment. However it&#39;s incorrect beneficiary name so they can&#39;t released the remittance to us. It should be SHENZHEN YUHESEN TECHNOLOGY CO., LTD.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kupodivu i toto se dá vzdáleně opravit, něco to stojí (prý až dalších 80 USD), ale &amp;hellip; &lt;i&gt;Good news. The bank just notified us they received the modify request and confirmed the payment is transfer to us.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A dnes přišlo info, že robot už je na cestě na &lt;a href=&#39;https://www.vesselfinder.com/vessels/details/9786841&#39; class=&#39;external&#39;&gt;EVER GLOBE&lt;/a&gt; (obrázek EVERGREEN je snad jen ilustrativní). &lt;i&gt;ETA could be the middle of November.&lt;/i&gt; Uvidíme, co robota na cestě ještě potká.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231103&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. listopadu 2023 &amp;mdash; Čínský agent v Praze&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jestli myslíte, že se za titulkem skrývá informace, že už je PatAMat (&lt;a href=&#39;/competitions/elrob/2024/en#231005&#39;&gt;jak mu říká Jirka&lt;/a&gt;) v Praze, tak vás zklamu.
Toto navazuje na mailovou konverzaci ze začátku října, která se ke mne náhodou dostala.
Tam jsem se dozvěděl, že &lt;b&gt;já jsem ten agent!!!&lt;/b&gt;
&lt;i&gt;... their company has a product agent in Prague, ...&lt;/i&gt;&lt;/div&gt;

&lt;pre&gt;The contact persion in PRAGUE for Yuhesen product:
Name: Martin DLOUHY
E-mail: Robotika.czmdXXX
Tel: +420 XXX&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; nejprve mne to vytočilo do běla, pak mi to přišlo k smíchu &amp;hellip; a po měsící už skoro i ke zveřejnění &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Sledoval jsem, jak lodička (chápejte kontejnerová loď) pluje a kde asi robot touto dobou je a když nám posledně přišlo, že už jede loď zpět do Číny,
tak jsem se raději zeptal. Odpověď byla šita na míru čínského agenta:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 542px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-delivery.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-delivery_t.png&#39; alt=&#39;zboží na cestě&#39; title=&#39;zboží na cestě&#39; class=&#39;border&#39;  width=&#39;536&#39; height=&#39;272&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-delivery.png&#39;&gt;zboží na cestě&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;tak ještě že máme ty imperiální translátory &amp;hellip; no tak tentokrát se moc nevytáhly :-(. Tak jen indicie, že Pat asi přestoupil na jinou loď a 5-7 asi odpovídá
větě v mailu: &lt;i&gt;The cargo has transfer to Germany warehouse now and will be delivered to your address in 5-7 days.&lt;/i&gt; Nechci být hnidopich, ale 27 + 7 je dnes.
Jako jsem rád, že dnes dorazily ty lidary, ale to bude jiný blog &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. jenom doufám, že jak překladač přeložil pravou část jako &lt;i&gt;destination Republic of China&lt;/i&gt;, tak se pletl &amp;hellip;
„Matka vyhodnotila signál jako varování” (z filmu &lt;a href=&#39;https://www.csfd.cz/film/8265-vetrelec/prehled/&#39; class=&#39;external&#39;&gt;Vetřelec&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 beru zpět tu poznámku o imperiálních překladačích &amp;hellip; ona tam byla autodetekce jazyka a nějak přišel na Češtinu &amp;hellip; když jsem mu vybral vhodnější, tak:&lt;/div&gt;

&lt;pre&gt;Dotaz na nákladní list
Číslo nákladního listu
Číslo převodního příkazu
čas schůzky
destinace
ilustrovat
fungovat
HX80054767
2023-10-27 0
Česká republika
Odhadovaný počet položek převedených do německého skladu je 5-
Znovu zkontrolujte stopu
1:06:41
Rozbalte podrobnosti
Zadejte prosím číslo objednávky (až 10), oddělené
klávesou Enter
HX80054767
【HX80054767】Podrobnosti
čas schůzky
plocha
podrobnosti
27. 10. 2023 01:06:41
Bire
Byl převezen do německého skladu a očekává se, že dorazí za 5-7 dní.
24. 10. 2023 16:40:58
Bire
Dorazil do přístavu
Zeptejte se
22. 10. 2023 00:00:00
Bire
|Předpokládaný čas příjezdu
2023-10-03 00:00:00
Shenzhen
|Odhadovaný čas plavby
27.09.2023 22:53:45
Shenzhen
| Jméno a číslo lodi: EVER GIFTED 0675-020w
27.09.2023 18:53:45
Shenzhen
|Protože inspekce nedodržela plán plaveb této lodi, je třeba ji odložit na další loď
26.09.2023 10:10:43
Shenzhen
|Odhadovaný čas plavby
22.09.2023 10:09:00
Shenzhen
Skříň nainstalovaná
22.09.2023 10:09:00
Shenzhen
| Název lodi a plavba: EVER GLOBE 0674-017W
25.09.2023 10:08:44
Opusťte distribuční centrum
2023-09-09 09:31:27
|Vstupte do distribučního centra&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;231110&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. listopadu 2023 &amp;mdash; První dojmy&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;A je to tady! Už dlouho jsem se na něco tak netěšil a zároveň z toho měl tak velké obavy. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
A oboje bylo naplněno. Balíčk dorazil. Bylo třeba tomu jít naproti, sehnat si dvakrát delší
&lt;b&gt;evropské&lt;/b&gt; trackovací číslo, provolat se k člověku co to má na starosti a možná jako v tomto
případě řekne: „Jo, jo, včera to dorazilo, ale nebyl tam žádný telefón, takže je to zatím u nás
ve skladu.” Den na to to ale expedovali, takže OK.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pro začátek je třeba dodávka/nákladák s paletovou plošinou. Ta hračka, podle papírů, váží 125kg
ale s krabicí a paletou už to hodí 180kg. Prostě ve dvou to neodnesete. Ale on je i problém s tím
kousek popojet. Co si budeme povídat, Pat s domečkem skončil uprostřed zahrady. Dál to s paletovým
vozíkem nešlo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První dojem byl &amp;hellip; že je Pat &lt;b&gt;obrovský&lt;/b&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Žena to později komentovala, že &lt;i&gt;je to velké jak kráva&lt;/i&gt;!
Ale ono je to asi ve srovnání s robůtky, co si člověk sám zvedne a odnese do auta, rozhodně pravda. Minimálně tak
velká kola snad nemá ani &lt;a href=&#39;/robots/spider/en&#39;&gt;Spider3 Rider&lt;/a&gt;. Ale neměřil jsem to, zatím.
Co jsem ale změřil jsou rozměry krabičky: &lt;b&gt;145cm x 90cm x 60cm&lt;/b&gt; (s paletou 72cm).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vedle toho, že Pat už je &lt;i&gt;doma&lt;/i&gt;, mne potěšilo příslušenství &amp;mdash; je tam i PCAN-USB převodník.
Případnému hraní tedy nic nebrání.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď ty špatné zprávy &amp;mdash; brání. Nejde to zapnout. Tipoval bych, že je tam někde schovaná pojistka, ale &amp;hellip;
robota jsem hned v poledne dal na nabíječku a psal Lambertovi, že platforma dorazila. Rovnou mne znova
varoval (skleróza je hrozná věc), že vzhledem k tomu jak dlouho pojede robot lodí, je baterka úmyslně
odpojena. Je třeba rozebrat levý kryt a baterii tlačítkem zapojit. Nepomohlo to.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Status? Pat spí uprostřed zahrady &amp;mdash; snad divoká prasata nebudou zkoumat, co je to za nový přírustek.&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;1&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/box.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/box_t.jpg&#39; alt=&#39;Krabice na zahradě&#39; title=&#39;Krabice na zahradě&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/box.jpg&#39;&gt;Krabice na zahradě&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/charging.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/charging_t.jpg&#39; alt=&#39;První nabíjení&#39; title=&#39;První nabíjení&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/charging.jpg&#39;&gt;První nabíjení&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/side-view.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/side-view_t.jpg&#39; alt=&#39;Pohled z boku&#39; title=&#39;Pohled z boku&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/side-view.jpg&#39;&gt;Pohled z boku&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/open-side.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/open-side_t.jpg&#39; alt=&#39;Otevřený levý bok&#39; title=&#39;Otevřený levý bok&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/open-side.jpg&#39;&gt;Otevřený levý bok&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/battery.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/battery_t.jpg&#39; alt=&#39;Baterka s čínským popisem&#39; title=&#39;Baterka s čínským popisem&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/battery.jpg&#39;&gt;Baterka s čínským popisem&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control_t.jpg&#39; alt=&#39;Remore Control&#39; title=&#39;Remore Control&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control.jpg&#39;&gt;Remore Control&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;p.s. zapomněl jsem zmínit, že robot je defaultně zabrzděný, tj. je třeba ho napájet, aby se odbrzdil&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231113&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. listopadu 2023 &amp;mdash; Baterka a brzda&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Neveselo, truchlivo &amp;hellip; hned se pozná první den dovolené. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Dnes bylo nevlídno celý den. Ráno jsem byl domluvený s
&lt;a href=&#39;https://yuhesen.en.alibaba.com/&#39; class=&#39;external&#39;&gt;Lambertem&lt;/a&gt; (řekl bych, že obrázek na Alibabě je čistě ilustrativní &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;, ale je tam více
o Yuhesenu, je zvláštní, že cena je skoro dvojnásobná &amp;hellip; že by už vánoce?!)
na videohovoru ještě s technikem. Chtěli vidět robota „naživo”, což samozřejmě dává smysl, ale s tím deštěm
uprostřed zahrady nic moc. Hodil jsem přes otevřenou krabici velkou plachtu a &lt;i&gt;streamoval&lt;/i&gt; jak zapínám baterku
a nabíječka nereaguje. Pak říkali ať platformu zapnu i když je na nabíječce (v manuálu to myslím doporučené není)
a začalo to svítit a blikat jak vánoční stromeček. Tak už vím na co se mám tešit, až „baterka naběhne”, naběhne-li.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teorie je taková, že venku je příliš chladno a tak se ochranný systém brání nabíjení. Lambert říkal 10 stupňů C a
venku dnes přes den bylo 5.5C. A v noci nejspíše i mrzlo &amp;mdash; rozhodně to není ideální pro baterku po X dnech cestování lodí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhou novinkou je &lt;b&gt;brzda&lt;/b&gt;. Defaultně se „zamkne”, když je robot bez napájení, ale páčkou lze odblokovat:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-brake.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-brake_t.jpg&#39; alt=&#39;brzda&#39; title=&#39;brzda&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;426&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-brake.jpg&#39;&gt;brzda&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Milé překvapení bylo, že po odblokování brzdy bylo s robotem možné relativně snadno manipulovat (i když má těch 125kg).
Tak jsem ho přesunul pod střechu a na vozíku přesunul i „ulitu”:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/home-on-wheels.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/home-on-wheels_t.jpg&#39; alt=&#39;domeček na kolečkách&#39; title=&#39;domeček na kolečkách&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/home-on-wheels.jpg&#39;&gt;domeček na kolečkách&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další dobrá zpráva byla, že se Pat vejde do auta &amp;hellip; dost mi to připomnělo &lt;a href=&#39;/competitions/subtchallenge/finals/en#210624&#39;&gt;výlet na Býčí skálu&lt;/a&gt;
s K2. Sedačky je třeba sklopit a i jedno místo vzadu zůstane. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 107px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/loading1.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/loading1_t.jpg&#39; alt=&#39;nakládka (1/3)&#39; title=&#39;nakládka (1/3)&#39; class=&#39;border&#39;  width=&#39;101&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/loading1.jpg&#39;&gt;nakládka (1/3)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/loading2.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/loading2_t.jpg&#39; alt=&#39;nakládka (2/3)&#39; title=&#39;nakládka (2/3)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/loading2.jpg&#39;&gt;nakládka (2/3)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/loading3.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/loading3_t.jpg&#39; alt=&#39;nakládka (3/3)&#39; title=&#39;nakládka (3/3)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/loading3.jpg&#39;&gt;nakládka (3/3)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Zapnul jsem &lt;i&gt;naftová kamínka&lt;/i&gt;, vytopil auto na 23C a &amp;hellip; nic, nepomohlo to.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další pokus bylo vytažení baterie. Lambert psal: &lt;i&gt;It&#39;s better to label the cables before you remove the battery.
The red and black are not interchangeable.&lt;/i&gt;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/car-temperature.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/car-temperature_t.jpg&#39; alt=&#39;teplota v autě&#39; title=&#39;teplota v autě&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/car-temperature.jpg&#39;&gt;teplota v autě&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/labeling.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/labeling_t.jpg&#39; alt=&#39;označení kabelů&#39; title=&#39;označení kabelů&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/labeling.jpg&#39;&gt;označení kabelů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Řekl bych, že to byl jeho první zásek &amp;hellip; no to je tak, když programátor hrabe do HW. Až po chvíli mi došlo, že to jsou
&lt;b&gt;jenom průchodky!&lt;/b&gt; &amp;hellip; ty jen tak neodpojím. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Když se ale povolí 4 šrouby (2 vlevo a 2 vpravo), tak lze s baterií snadno
posouvat a &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 186px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/power-connectors.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/power-connectors_t.jpg&#39; alt=&#39;napájecí konektory&#39; title=&#39;napájecí konektory&#39; class=&#39;border&#39;  width=&#39;180&#39; height=&#39;320&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/power-connectors.jpg&#39;&gt;napájecí konektory&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tak to bych možná ani já nepopletl.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě drobná lekce čínštiny &amp;hellip; jako opravdu díky za ty přkladače. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/warning.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/warning_t.jpg&#39; alt=&#39;Čínské varování&#39; title=&#39;Čínské varování&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/warning.jpg&#39;&gt;Čínské varování&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/warning-cs.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/warning-cs_t.jpg&#39; alt=&#39;CS překlad&#39; title=&#39;CS překlad&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/warning-cs.jpg&#39;&gt;CS překlad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/battery-label.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/battery-label_t.jpg&#39; alt=&#39;Štítek baterky&#39; title=&#39;Štítek baterky&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/battery-label.jpg&#39;&gt;Štítek baterky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/battery-label-cs.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/battery-label-cs_t.jpg&#39; alt=&#39;Modelka&#39; title=&#39;Modelka&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/battery-label-cs.jpg&#39;&gt;Modelka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;231115&#34;&gt;&lt;/a&gt;
&lt;h2&gt;15. listopadu 2023 &amp;mdash; ZERO battery voltage&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Zatím žádné dobré zprávy. Původně jsem včerejší titulek chtěl nazvat &lt;a href=&#39;https://cs.wikipedia.org/wiki/No_pasar%C3%A1n&#39; class=&#39;external&#39;&gt;No pasarán&lt;/a&gt;
s touto fotkou:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/no-pasaran.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/no-pasaran_t.jpg&#39; alt=&#39;No pasarán&#39; title=&#39;No pasarán&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;225&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/no-pasaran.jpg&#39;&gt;No pasarán&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Aneb poučení, že pokud máte někde schovaná „zadní vrátka”, tak někdy zkuste, zda jimi opravdu projdete. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Matfyzácké řešení by
bylo, že když měla krabice s robotem na výšku 60cm, tak &lt;i&gt;při změně souřadného systému&lt;/i&gt; by robot měl projít, není-liž pravda? &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Asi lepší řešení
navrhla žena a to vysadit branku a pak se tam Pat vešel.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jak to pak vypadalo v chatě raději komentovat nebudu &amp;mdash; prostě co měl Harry Potter pod schody byl luxus! Pat to dal jen do
předsíně &amp;mdash; vyndavat kvůli němu kamna v obýváku jsem fakt nechtěl. No nic, je v teple.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhý titulek co mne napadl byl „židovský vtip” o malém bytě, kdy rabín doporučí tazateli si pořídit kozu &amp;hellip; ale nemůžu ho najít :-(
Tak s &lt;b&gt;FR-07 Pro&lt;/b&gt; je to podobobné. Pokud máte moc malý byt, poříďte si velkého robota &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 186px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/yennie-and-pat.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/yennie-and-pat_t.jpg&#39; alt=&#39;Yennie hlídá Pata&#39; title=&#39;Yennie hlídá Pata&#39; class=&#39;border&#39;  width=&#39;180&#39; height=&#39;320&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/yennie-and-pat.jpg&#39;&gt;Yennie hlídá Pata&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A dnes jsem si koupil nový voltmetr, abych mohl proměřit tu &lt;i&gt;zatracenou&lt;/i&gt; baterku:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/zero-voltage.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/zero-voltage_t.jpg&#39; alt=&#39;ZERO voltage&#39; title=&#39;ZERO voltage&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;225&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/zero-voltage.jpg&#39;&gt;ZERO voltage&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Prostě je to nula ať propojíte cokoliv nebo vypnete/zapnete, napříč konektory &amp;hellip; prostě nic. Je na čase otevřít zaplombovanou „černou skříňku”?
Čekám na autorizaci z Číny.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231116&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. listopadu 2023 &amp;mdash; PCAN&lt;/h2&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.record  -duration 10 config/test-pcan.json 
                                               -note &#34;Ubuntu Yuhesen PCAN2/USB, 10s&#34;
2023-11-16 00:13:36,761 root             WARNING  Environment variable OSGAR_LOGS is not set 
                                                  - using working directory
2023-11-16 00:13:36,761 __main__         INFO     /home/md/git/osgar/test-pcan-231115_231336.log
2023-11-16 00:13:36,896 can              DEBUG    can config: {&#39;bitrate&#39;: 500000, &#39;interface&#39;: 
                                                               &#39;pcan&#39;, &#39;channel&#39;: &#39;PCAN_USBBUS1&#39;}
2023-11-16 00:13:36,898 can.pcan         WARNING  uptime library not available, timestamps are relative
                                                  to boot time and not to Epoch UTC
2023-11-16 00:13:37,460 __main__         INFO     SIGINT handler installed
2023-11-16 00:13:47,471 can.bus          WARNING  PcanBus was not properly shut down

(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.logger /home/md/git/osgar/test-pcan-231115_231336.log 
 k    name  bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;
 0     sys    269 |    3 |   0.3Hz
 1 can.can 109072 | 6416 | 599.1Hz

Total time 0:00:10.709735


(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.logger /home/md/git/osgar/test-pcan-231115_231336.log 
                                               -stream can.can -format &#39;{hex(data[0])}&#39; | sort | uniq -c

   1002 0x18c4d2ef - Chassis control feedback command
   1003 0x18c4d7ef - Left rear wheel information feedback
   1003 0x18c4d8ef - Right rear wheel information feedback
    200 0x18c4daef - Chassis I/O status feedback
   1002 0x18c4dcef
   1003 0x18c4deef - Chassis speedometer feedback
    100 0x18c4e1ef - Battery BMS information feedback
    100 0x18c4e2ef - Battery BMS mark status feedback 
   1003 0x18c4eaef - Vehicle fault status feedback&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. jedna nezdokumentovaná zpráva?&lt;/div&gt;

&lt;pre&gt;0x18c4e1ef 0000000000007070
0x18c4e1ef 0000000000008080
0x18c4e1ef 0000000000009090
0x18c4e1ef 000000000000a0a0
0x18c4e1ef 000000000000b0b0
0x18c4e1ef 000000000000c0c0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. až na poslední &lt;i&gt;counter&lt;/i&gt; je vše nula.&lt;/div&gt;

&lt;pre&gt;0x18c4e2ef 0000000000007070
0x18c4e2ef 0000000000008080
0x18c4e2ef 0000000000009090
0x18c4e2ef 000000000000a0a0
0x18c4e2ef 000000000000b0b0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; 0% zbývající baterie, min/max teplota 0C = nesmysl.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231118&#34;&gt;&lt;/a&gt;
&lt;h2&gt;18. listopadu 2023 &amp;mdash; Remote Control&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Uznávám, ze poslední &lt;a href=&#39;/robots/pat-a-mat/en#231116&#39;&gt;záznam o PCANu&lt;/a&gt; jsem „lehce ošidil” o nějakou omáčku. Bylo to až po půlnoci,
kdy mne ostatní vyhecovali &lt;a href=&#39;/articles/reviews/pcan/en&#39;&gt;rozchodit si převodník&lt;/a&gt; a pak bylo tedy možné už rovnou v &lt;a href=&#39;https://github.com/robotika/osgar/&#39; class=&#39;external&#39;&gt;OSGARu&lt;/a&gt;
nahrát si nějaká CAN bus data. A další den jsem začal psát &lt;a href=&#39;https://github.com/robotika/osgar/compare/feature/yuhesen&#39; class=&#39;external&#39;&gt;OSGAR driver pro Yuhesen FR07 platform&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pár pozorování:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;CAN zprávy z BMS (Battery Management System) jsou vždy samé nuly ať už je baterka zapnutá, vypnutá nebo je kabel úplně vypojený!
  Z toho bych soudil, že pětipinový konektor není CAN&lt;/li&gt;

&lt;li&gt;Většina zpráv jede na 100Hz&lt;/li&gt;

&lt;li&gt;CAN zprávy pro řízení maji i &lt;i&gt;echo&lt;/i&gt;, které vrací podle jakých příkazu se jede (hodí se v kombinaci s &lt;i&gt;Remote Control&lt;/i&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Zapnout dálkové ovládání, když je Pat puštěný na nabíječce vypsal toto:&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-start.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control-start_t.jpg&#39; alt=&#39;Úvodní obrazovka&#39; title=&#39;Úvodní obrazovka&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-start.jpg&#39;&gt;Úvodní obrazovka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-start-cs.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control-start-cs_t.jpg&#39; alt=&#39;překlad&#39; title=&#39;překlad&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-start-cs.jpg&#39;&gt;překlad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;(fakt nevěřím, že by někdo někdy mohl navázat komunikaci s mimozemskou civilizaci)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem to zkoušel znova, přepnul druhou levou do max polohy a dostal další obrázek:&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-running.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control-running_t.jpg&#39; alt=&#39;Pracovní obrazovka&#39; title=&#39;Pracovní obrazovka&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-running.jpg&#39;&gt;Pracovní obrazovka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-running-cs.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control-running-cs_t.jpg&#39; alt=&#39;překlad&#39; title=&#39;překlad&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-running-cs.jpg&#39;&gt;překlad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
(omlouvám se za mizerné foto, ale překladač to stejně nějak dal &amp;mdash; zajímavé bylo, že když jsem špatně vybral zdrojový jazyk, tak pouze texty zvýraznil
&amp;hellip; další potenciálně užitečná vlastnost)
&lt;div class=&#39;p&#39;&gt;Pak jsem zkoušel zatáčet, houkat, couvat &amp;hellip; no fungovalo jenom to zatáčení. Z logu jsem pak vyčetl, že robot byl celou dobu v &lt;i&gt;parked&lt;/i&gt; režimu
tak možná ta brzda je opravdu ruční? A houkačka nic i když byl požadovaný bit nastavený.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A když jsem to chtěl celé vypnout, tak to nešlo:
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-end.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control-end_t.jpg&#39; alt=&#39;Závěrečná obrazovka&#39; title=&#39;Závěrečná obrazovka&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-end.jpg&#39;&gt;Závěrečná obrazovka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-end-cs.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/remote-control-end-cs_t.jpg&#39; alt=&#39;překlad&#39; title=&#39;překlad&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/remote-control-end-cs.jpg&#39;&gt;překlad&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&amp;hellip; ale po vypnutí robota se vypnul i dálkový ovladač.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;p.s. zkusil jsem to znova a „hele, ten display je dotykovy!”&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/display1.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/display1_t.jpg&#39; alt=&#39;Display1&#39; title=&#39;Display1&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/display1.jpg&#39;&gt;Display1&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/display2.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/display2_t.jpg&#39; alt=&#39;Display2&#39; title=&#39;Display2&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/display2.jpg&#39;&gt;Display2&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/display3.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/display3_t.jpg&#39; alt=&#39;Display3&#39; title=&#39;Display3&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/display3.jpg&#39;&gt;Display3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/heslo.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/heslo_t.jpg&#39; alt=&#39;heslo?!&#39; title=&#39;heslo?!&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/heslo.jpg&#39;&gt;heslo?!&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;S tou číňštinou je spousta zábavy. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Heslo?! What?! No o tom se manual nezmiňuje. Asi je na čase si ho znova přečíst.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 tentokrát jsem se koukal i zepředu a opravdu při zatáčení dává blinkry, &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.3 tuto obrazovku vám nechám jako „domácí úkol”:&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/display4.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/display4_t.jpg&#39; alt=&#39;Display4&#39; title=&#39;Display4&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/display4.jpg&#39;&gt;Display4&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/display5.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/display5_t.jpg&#39; alt=&#39;Display5&#39; title=&#39;Display5&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/display5.jpg&#39;&gt;Display5&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;231119&#34;&gt;&lt;/a&gt;
&lt;h2&gt;19. listopadu 2023 &amp;mdash; První ujeté centimetry a User manual V2.2.0&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Pat má za sebou první ujetý půlmetr! Konkretně 562mm &amp;hellip; já vím, bída, ani celý metr &amp;hellip; ale ono v té předsíni je cca 20cm prostoru, než nabourá.
A ano, ten půlmetr je akumulovaný  (CAN message 0x18C4DEEF &lt;i&gt;Accumulated mileage&lt;/i&gt;). &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Vtipné mi přišlo, že v příkladu uvádějí jak nastavit rychlost
5 m/s &amp;hellip; kdybych to udělal, tak asi místo předsíně máme verandu. No nic, pohnul se a to je hlavní, tj. i když se mi nepodařilo s ním pohnout přes
dálkový ovladač, tak po CANu jede.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi bych vypíchnul, že ta CAN zpráva na řízení je &lt;i&gt;fakt ošklivá&lt;/i&gt;, aneb &lt;i&gt;proč probůh?!&lt;/i&gt; Jsou tam první 4 bity na řazení (P, R, N, D), pak 16 bitů
na požadovanou rychlost v milimetrech za sekundu a dále 16 bitů na úhel zatočení v setinách stupně. Jednotky se mi líbí, ale &amp;hellip; oni to vše narvali za
sebe, takže v prvním bajtu je zkombinovaná rychlost s typem řazení a ve třetím bajtu je mix rychlosti a zatáčení. A aby to bylo zábavnější, tak je to
&lt;i&gt;Intel&lt;/i&gt; tj. pozpátku. Vůbec se nedivím, že jsem v tom &lt;a href=&#39;https://github.com/robotika/osgar/commit/b2693d06e05530139e19a6479e322118552a685e&#39; class=&#39;external&#39;&gt;udělal chybu&lt;/a&gt;.
Pak snadno pošlete místo příkazu jeď pomalu dopředu něco jako „pedál až na podlahu”. Jako plus hodnotím pár vzorových příkazů v manuálu, ale &amp;hellip; proč?
Odpověd znám &amp;hellip; prostě to tam ty nástroje &lt;i&gt;nahází za sebe&lt;/i&gt;, ale pěkné to není.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/can-speed-5ms.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/can-speed-5ms_t.png&#39; alt=&#39;Příklad, jak jet 5m/s&#39; title=&#39;Příklad, jak jet 5m/s&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;235&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/can-speed-5ms.png&#39;&gt;Příklad, jak jet 5m/s&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhé téma je &lt;b&gt;User manual&lt;/b&gt;. RTFM, tak jsem si ho už také pročetl &amp;hellip; a dnes jsem koukal na ten vytištěný, co dorazil s platformou a &lt;b&gt;on byl jiný!!!&lt;/b&gt;
Tiskovinu jsem lehce ignoroval, protože k tomu už potřebuji brýle a tak jsem byl spokojenější s PDFkem. Ale chyba lávky! PDFko, co mi posílali někdy koncem
května, je verze 1.0 a ta tištěná varianta je &lt;b&gt;V2.2.0&lt;/b&gt;. A ten dálkový ovladač má stejné páčky jako na obrázku i je tam zmínka o &lt;i&gt;touch screen&lt;/i&gt;. Tak už vím, že
houkačka je tlačítko zespodu vlevo &amp;hellip; ale stejně nehouká, tak nic.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231123&#34;&gt;&lt;/a&gt;
&lt;h2&gt;23. listopadu 2023 &amp;mdash; Nabíječka a dálkový ovladač&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Asi bych začal upřesněním, jak je to s tím ježděním a baterkou? Dva lidé to nezávisle z mého textu nepochopili, takže jsem to asi (jako obyčejně) zmátl:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;baterka je stále mrtvá&lt;/li&gt;

&lt;li&gt;robot je schopen popojet pár centimetrů, ale &lt;b&gt;pouze na připojenou nabíječku!&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Dnes bych si sem přihodil odkazy na datasheety:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.flyingtech.co.uk/sites/default/files/product_files/FS-i6S-MANUAL-EN-20161001.pdf&#39; class=&#39;external&#39;&gt;dálkový ovladač FS-i6S&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://ohrija.com/products/54.75v-5a-charger&#39; class=&#39;external&#39;&gt;nabíječka 54.75V/5A&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Díky tomu PDFku k dálkovému ovladači nejen s předním ale i zadním pohledem je teď už jasné, že &lt;b&gt;VRB&lt;/b&gt; není „pravé spodní tlačítko”, ale trimovací
kolečko v rohu. A když s tím otočíte doprava a nezapomenete zamáčknuté &lt;i&gt;Emergency STOP&lt;/i&gt; tlačítko, tak najednou robot jede (stále je zdrojem nabíječka).
Tak alespoň nějaký posun. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 647px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/operating-panel.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/operating-panel_t.png&#39; alt=&#39;Popis tlačítek&#39; title=&#39;Popis tlačítek&#39; class=&#39;border&#39;  width=&#39;641&#39; height=&#39;281&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/operating-panel.png&#39;&gt;Popis tlačítek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. jo ještě jeden detail s houkačkou: &lt;i&gt;The horn is optional part not including in standard platform.
We reserve the key and interface for it, they won&#39;t work if the platform don&#39;t equip with horn hardware.&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231127&#34;&gt;&lt;/a&gt;
&lt;h2&gt;27. listopadu 2023 &amp;mdash; Zbyňkovy hračky a Anderson konektory&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;V sobotu se stavil Zbyněk a vzal s sebou i svoje „hračky”: bezkontaktní měřák proudu, regulovaný zdroj do 60V s nastavitelným proudovým omezením,
krimpovací kleště a pod. První měření bylo trojpinový konektor z nabíječky vs. obří &lt;a href=&#39;https://www.laskakit.cz/anderson-konektor-sj-50a-600v--sedy/&#39; class=&#39;external&#39;&gt;Anderson konektory&lt;/a&gt;.
Nabíječka tedy používá &lt;b&gt;červené&lt;/b&gt; konektory a &lt;i&gt;šedivé&lt;/i&gt; jsou pak pro napájení celé platformy. Jeden z pinu (no měl jsem si udělat foto počmáraného Pata)
pak není zapojen vůbec, ani na kostru.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhé pozorování bylo, že při zapojené nabíječce a zapnuté platformě teklo kabelama cca 400mA (zase jsem si to měl zdokumentovat) protože to vypadalo, že se
nějakých 100mA „ztrácí” v černé krabíčce baterky. Proudy se ale nijak nelišily ať už tlačítko baterky bylo zapnuté nebo vypnuté.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další test byl se zdrojem a postupném zvyšování napětí &amp;hellip; ani ťuk, nic si to nechtělo vzít. Při té příležitosti si Zbyněk všiml, že ty červené a šedé
Anderson konektory jsou různé typy! Šedivý měl přepážku mezi + a - a červený nikoliv, takže i kdybych se to snažil pospojovat poslepu (nekoukal na barvy)
tak by se mi to nepodařílo &amp;hellip; za to mají u mne autoři FR07 plus (chtěl jsem řící &lt;i&gt;malé bezvýznamné plus&lt;/i&gt;, ale to by asi neurazilo jen mé spolužáky z gymplu,
protože to bylo oblíbené rčení naší třídní).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Do rozdělání krabice s černě označenými šroubky (buď &lt;i&gt;plomby&lt;/i&gt; nebo prý že to bylo utahováno klíčem s měřeným momentem) jsme se zatím nepustili.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zavěr &amp;mdash; baterie je stále mrtvá.&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/anderson-bottom.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/anderson-bottom_t.jpg&#39; alt=&#39;Anderson konektory&#39; title=&#39;Anderson konektory&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/anderson-bottom.jpg&#39;&gt;Anderson konektory&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/anderson-front.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/anderson-front_t.jpg&#39; alt=&#39;Rozdílné přepážky&#39; title=&#39;Rozdílné přepážky&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/anderson-front.jpg&#39;&gt;Rozdílné přepážky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/charger-plug.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/charger-plug_t.jpg&#39; alt=&#39;Kabel nabíječky&#39; title=&#39;Kabel nabíječky&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/charger-plug.jpg&#39;&gt;Kabel nabíječky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;231221&#34;&gt;&lt;/a&gt;
&lt;h2&gt;21. prosince 2023 &amp;mdash; Stará baterka&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Koukám, že jsem skoro měsíc nic nezveřejnil na téma &lt;i&gt;Pat a Mat&lt;/i&gt;. Nějaké zprávy by byly, ale moc veřejné
nikoliv. Ale čas utíká, takže doplním &lt;i&gt;archlív&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi to vezmu od konce, tedy dnešního mailu, že náhradní nová baterka by už měla být na nějakém evropském
letišti a čeká na proclení. Mám i DPD číslo zásilky, ale dnes se mi dokonce podařilo při dotazu dostat 502
(Bad Gateway) &amp;hellip; zkrátka chybu na serveru &amp;hellip; prostě vánoce. A minulých X dní tam nebylo nic zajímavého,
jen potvrzení, že to číslo je pro mne. Trošku marnost.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na druhou stranu mne včera potěšil TomášR, který došel k závěru, že není nač čekat a pustil se do nabíjecích
experimentů „autorizované otevřené baterky” (aneb výrobce o tom ví a souhlasí a zajímá ho, na co přijdeme).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nejprve již pár týdnů staré fotky:&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/inside.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/inside_t.jpg&#39; alt=&#39;Otevřený box baterky&#39; title=&#39;Otevřený box baterky&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/inside.jpg&#39;&gt;Otevřený box baterky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/bms.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/bms_t.jpg&#39; alt=&#39;BMS&#39; title=&#39;BMS&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/bms.jpg&#39;&gt;BMS&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/not-formated.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/not-formated_t.jpg&#39; alt=&#39;1.8V = nenaformátované články&#39; title=&#39;1.8V = nenaformátované články&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/not-formated.jpg&#39;&gt;1.8V = nenaformátované články&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/bms2.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/bms2_t.jpg&#39; alt=&#39;BMS&#39; title=&#39;BMS&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/bms2.jpg&#39;&gt;BMS&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Asi nejdrsnější je ta vlevo dole - všech 75 článků dohromady mělo 1.8V!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tento týden Tomáš poslal update: &lt;i&gt;Před nabíjením měla baterka 1,819 V a na jednotlivých článcích bylo:
0,1725; 0,1277; 0,1342; 0,1176; 0,1006; 0,1203; 0,0953; 0,1289; 0,0856; 0,1371; 0,1526; 0,0895; 0,0854; 0,1474; 0,1246 V. 
Po pár hodinách nabíjení jsem ji dostal až na 20V, ale po odpojení zdroje to začlo hodně rychle padat. Buď je špatná BMS, nebo to číňan odfláknul.
Naměřil jsem spotřebu přes 10 mA, což je úlet. Ráno měla baterka jen 4,37 V. Vypínač na spotřebu nemá vliv.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A včerejší zprává byla ještě nadějnější: &lt;i&gt;... tak už se mi povedlo probrat BMS :-) Při cca 38V na baterii BMS obživla a začla nabíjet (pulzy 1:1) a jede i CAN.
Na CANu (500kb/s) chodí 3 zprávy:&lt;/i&gt;&lt;/div&gt;

&lt;pre&gt;0x200 0E CA 00 00 09 34 0A 8B
0x201 00 00 0A 64 00 03 00 00
0x202 C0 0A 00 01 0B B9 0B AF&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;p.s. &lt;i&gt;ok, poslední report v tomto roce. V příloze máš tabulku s naměřenými napětími na jednotlivých člancích. Dnes už jsem se dostal, po dalších cca 7h nabíjení, prakticky na nominální napětí.
Baterka už šla zapnout, ale kde je ta hranice přesně nevím. BMS povolila nabíjení někde mezi 38-39V, vybíjení myslím až tak kolem 42V. Články se už trošku srovnaly, ale zda tomu nějak pomohla BMS,
nebo to je jen tím, že už se to dostalo do ploché části charakteristiky, nevím. To se uvidí až ke konci nabíjení.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-battery-tab.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-battery-tab_t.jpg&#39; alt=&#39;Tabulka napětí jednotlivých článků&#39; title=&#39;Tabulka napětí jednotlivých článků&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;223&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-battery-tab.jpg&#39;&gt;Tabulka napětí jednotlivých článků&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Jinak jsem koukal ještě na CAN zprávy a v 0x200 jsou první 2 byty napětí baterie a pak tam jsou asi 2 hodnoty (4 byty), ktere by mohly odpovídat stavu nabití. Nějak systematicky jsem to ale nezkoumal. U 0x201 jsem žádné změny nepozoroval. V 0x202 je asi nějaký status, jeden bit odpovídá stavu vypínače, a pak tam jsou asi zas 2 hodnoty, ale ty se moc nemění.&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240102&#34;&gt;&lt;/a&gt;
&lt;h2&gt;2. ledna 2024 &amp;mdash; Odložené uspokojení&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Potřebuji se uklidnit, tak to hodím „na papír” resp. na web. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Žena si přála pod stromeček knížku Cyrila Höschla
&lt;a href=&#39;https://www.databazeknih.cz/knihy/tak-o-co-jde-525760&#39; class=&#39;external&#39;&gt;Tak o co jde?&lt;/a&gt; a tak jsem v ní také &lt;i&gt;listoval&lt;/i&gt;. Jedno téma bylo
&lt;a href=&#39;https://dbterapie.cz/encyklopedie/odlozene-uspokojeni/&#39; class=&#39;external&#39;&gt;odložené uspokojení&lt;/a&gt;, což je asi teď už něco, co pomalu nedávám.
Nová baterka byla odeslána 11. prosince 2023, letecky. Ano v nejnevhodnější čas. Mezi svátky mi to přišlo už pomalu divné,
tak jsem volal na DPD. Zase zajímavá zkušenost s telefoními automaty &amp;hellip; jediná cesta k operátorovi vede přes ignorování
všech nabízených voleb. Tehdy (27/12) jsem se konečně provolal a dozvěděl se, že to je někde v Německu na letišti a dosud to
není v systému. O dovolene (29/12) mi přišla SMS, že 2/1/2024 mi doručí balíček a že ho můžu přesměrovat (což by se fakt
hodilo protože v cílovém místě 2. ledna nikdo nebude). Pár kliku, přesměrováno do Alza boxu za rohem a datum doručení se dokonce
změnilo na Nový Rok! Mimochodem všem vám přeji vše nejlepší v novém roce. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Už jsem viděl ten titulek
&lt;b&gt;Happy New Year/Pat&#39;s Battery 2024&lt;/b&gt;, ale chyba lávky. Včera nic &amp;hellip; to jsem tak trošku očekával, bylo to podezřelé. Ale dnes
také nic?! Navíc to převezli z Říčan do Uhnoště (na druhou, vzdálenější, část Prahy). A co mne už uplně vyřadilo byla hláška
&lt;b&gt;Your parcel was returned as you refused to take delivery&lt;/b&gt;. F* &amp;hellip; to už se opravdu neovládám. Zítra bych Prahu opustil
a přesunul se na místo, kam měli dodat balíček původně &amp;hellip; no hlavně klid, je třeba trénovat &lt;i&gt;odložené uspokojení&lt;/i&gt;.
Tak alespoň vzpomínka na poslední západ slunce nad jezerem v roce 2023 &amp;mdash; fakt to stoji za to se zbytečně rozčilovat?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/sunset-20231231-161435.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/sunset-20231231-161435_t.jpg&#39; alt=&#39;poslední západ slunce v roce 2023&#39; title=&#39;poslední západ slunce v roce 2023&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/sunset-20231231-161435.jpg&#39;&gt;poslední západ slunce v roce 2023&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240103&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. ledna 2024 &amp;mdash; Konec srandy - baterka je zpátky v Německu!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;No dnes bych to nazval spíše jako &lt;i&gt;deprivací&lt;/i&gt;. Ráno jsem volal na DPD a paní mi v klidu řekla, že balíček poslali zpět
odesílateli?! Dokonce se musela zeptat, jestli tam ještě jsem, protože jsem fakt nevěřil tomu co jsem slyšel. F*, musel jsem
do práce a pak tam volal znova a dozvěděl se, že je tam poznámka, že se to má prošetřit. Chudáka bráchu jsem poprosil,
ať se staví v Unhošti, protože bych to tam do 18h nestihl &amp;hellip; a balíčk byl fakt pryč. V českém trackovacím systému už je jen
info, že se vrací, ale alternativní německé mi ukázalo tento obrázek:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/back-in-germany.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/back-in-germany_t.jpg&#39; alt=&#39;Zpátky v Německu&#39; title=&#39;Zpátky v Německu&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;266&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/back-in-germany.jpg&#39;&gt;Zpátky v Německu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nějaké dotazy? Mimochodem Alzabox je v tom nevinně &amp;mdash; nějaký nováček prý místo přesměrování na Prahu 10 kliknul na
vrátit odesílateli &amp;hellip; také by vás zajímalo, proč to tedy neřeší?! Možná je čas vypsat kurzy jestli ti borci to pošlou
až zpátky do Číny &amp;hellip; jó, pěkně ten 2024 začíná.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. &lt;b&gt;04.01.2024 10:22&lt;/b&gt; &lt;i&gt;Your parcel has been delivered successfully&lt;/i&gt; &lt;b&gt;Kelsterbach, DE&lt;/b&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240111&#34;&gt;&lt;/a&gt;
&lt;h2&gt;11. ledna 2024 &amp;mdash; Vzkříšení&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Nevím proč, ale první asociace se &lt;i&gt;vzkříšením&lt;/i&gt; je &lt;a href=&#39;https://www.csfd.cz/film/12177-vetrelec-vzkriseni/prehled/&#39; class=&#39;external&#39;&gt;zase Vetřelec&lt;/a&gt;.
Dnes to bude „pro změnu” kryptické, aneb viz &lt;a href=&#39;https://github.com/robotika/osgar/commit/7e368ea48ebe0630d0540b6c2eb11bbeaae46c63&#39; class=&#39;external&#39;&gt;github&lt;/a&gt;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
Nechci mluvit o nové baterce (ta je ztracená někde v Německu a když jsem dnes znova volal DPD, tak řekli ať zavolám za týden, že
to začnou prošetřovat jako ztrátu), ale o staré baterce, kterou TomášR několik týdnů křisil. A ano, dnes jsem poprvé po dvou měsícíh,
co Pat dorazil, popojel na baterku! Musel jsem si zase otevřít čínský manuál (ano anglický, ale asi automaticky překádaný), protože
robot popojet nechtěl (zatočit to ano). Brzda, vypnout automatiku, zařadit D, odblokovat STOP tlačítko &amp;hellip; a pak jel. Po pravdě
mne přepínání jízdy dopředu D a dozadu R trošku rozčilovalo, ale to bude tím prostorem (na diagonále jsem v předsíni získal cca 0.5m).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na konektorech nic nenaměříte, pokud není baterka &lt;i&gt;puštěná&lt;/i&gt;, tj. stiské tlačítko. Po zapnutí na obou vyskočilo 49V. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; A ukazuje
to jak dálkový ovladač tak CAN (mimochodem zprávy, co posílal CAN baterky/BMS na robotovi dostupné nejsou). Nechal jsem to běžet cca
15 minut (v přesíni byla kosa a v kuchyni zamrzala voda, pokud jste jí tam chvíli nechali ležet, tj. úplně ideální podmínky to na testování
nejsou).&lt;/div&gt;

&lt;pre&gt;Voltage 49.63 0.0 26.3
Temperature 15.0 16.0
&amp;hellip;
Voltage 49.41 0.0 26.3
Temperature 13.0 15.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;To napětí kleslo cca o 200mV a baterka si myslela, že teplota je nějakých 14 stupňů (reportuje min a max, ale nevím, zda to mezi jednotlivými
reporty resetuje). Ano, zase bych šťoural do toho kódování teploty s rozlišením 0.1 stupně Celsia/bit uložených v 12ti bitech. V realitě
to je zase s rozlišením ve stupních, takže kdyby to hodili do bajtu, tak +/- 120 stupňů C by snad stačit mohlo &amp;hellip; no nic, aspoň trošku rébus.
Když je v jednom měření nybble &lt;b&gt;A&lt;/b&gt; a zbytek nuly a v jiném &lt;b&gt;9&lt;/b&gt; a &lt;b&gt;6&lt;/b&gt;, jak to může jít po sobě? Moc skočit to nemůže a maximum 1 stupeň
je nějak málo a tak 0xA0 = 160 a 0x96 = 150. Vyřešeno.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. &lt;b&gt;Tomáši, díky moc!&lt;/b&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240119&#34;&gt;&lt;/a&gt;
&lt;h2&gt;19. ledna 2024 &amp;mdash; Nová baterka!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes v 15 hodin CET dorazila nová baterka! Byl jsem z toho &lt;i&gt;trošku&lt;/i&gt; na nervy, když &lt;a href=&#39;/robots/pat-a-mat/en#240103&#39;&gt;zmizela v Německu&lt;/a&gt; a po pravdě nevím, jestli jí nakonec
odchytli tam, nebo to šla až do té Číny. Skoro si říkám &lt;i&gt;nemusím vědět všechno&lt;/i&gt; (aneb snad to ani nechci vědět).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První pozorování &amp;mdash; při vypnuté baterce naměřím &lt;b&gt;11.3V&lt;/b&gt;?! Stará baterka (po renovaci) tam má 0V, ale asi to za chvíli znova prověřím.
Dobrá zpráva ale je, že při &lt;i&gt;zapnuté baterce&lt;/i&gt; (ono je to snad pouze informativní tlačítko pro BMS) naměřím &lt;b&gt;49.3V&lt;/b&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jinak je ještě několik zpráv, ale ty asi nechám až po víkendu. Minulý víkend jsem si rozchodil
&lt;a href=&#39;https://github.com/robotika/osgar/commit/7e368ea48ebe0630d0540b6c2eb11bbeaae46c63&#39; class=&#39;external&#39;&gt;popojíždění přes CAN&lt;/a&gt; od X metrů (v mém případě
centimetrů) tam a zpět, ale nevyhecoval jsem se k vyklizení cesty z předsíně, sezení na verandě a v kombinaci s nájezdy abych v lehkém
mrazu vyjel tuto &lt;i&gt;feature&lt;/i&gt; demonstrovat na zahrádku. Ona priorita byla trošku jinde (aby neuletěla střecha na přístřešku, časem snad i pro
Pata) a &amp;hellip; lenost.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dále jsem se snažil zprovoznit &lt;a href=&#39;https://www.pcengines.ch/alix3d2.htm&#39; class=&#39;external&#39;&gt;prastarého ALIXe&lt;/a&gt;. Ano, je to &#34;vykopávka&#34;, ale stejně jsem přesvědčený,
že sběr dat a jednoduché &lt;i&gt;follow me&lt;/i&gt; by to dát mohlo/mělo. No byl tam ještě &lt;i&gt;Python 2.6&lt;/i&gt; a ani se to 
&lt;a href=&#39;https://unix.stackexchange.com/questions/479823/can-not-download-from-an-https-site-ssl-with-wget&#39; class=&#39;external&#39;&gt;nechtělo bavit s GitHubem&lt;/a&gt;, kvůli
starému &lt;i&gt;ssh&lt;/i&gt; (jestli jsem to pochopil dobře). Od Jakuba mám půjčenou novou &#34;hračku&#34;, ale o tom asi více až &lt;i&gt;uřídí&lt;/i&gt; popojetí 1 metr.&lt;/div&gt;
&lt;details&gt;
  &lt;summary&gt;&lt;b&gt;Komentáře (1)&lt;/b&gt;&lt;/summary&gt;
&lt;i&gt;1/19/24, 18:38&lt;/i&gt;
Ahoj.
&lt;i&gt;Když to ale je vypnuté, tak tam naměřím 11.3V?&lt;/i&gt;
To bude jen svod MOSFETu. Pokud jsi to měřil digitálním multimetrem, tak ten má velký vstupní odpor, takže i malý svod vyvolá měřitelné napětí. Většinou mají multimetry vstupní odpor 10 MOhm, což by odpovídalo proudu 1,1uA a to je akceptovatelná / očekávatelná hodnota.
T.
&lt;/details&gt;
&lt;hr&gt;
&lt;a id=&#34;240120&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. ledna 2024 &amp;mdash; Pat nemá rád sníh&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes vystoupila teplota až na 0 stupňů Celsia, svítilo sluníčko a tak jsem se vehecoval (odsunout záchod, přestěhovat betonovou lavičku, přerovnat
dřevo u baráku, vybalit nájezdy) a vyzkoušel Pata venku. A rovnou mne udeřila mezi oči &lt;a href=&#39;http://www.extremeprogramming.org/rules/testfirst.html&#39; class=&#39;external&#39;&gt;stará hláška&lt;/a&gt;:
&lt;b&gt;Test First!&lt;/b&gt; Aneb nemá velký smysl
připravovat něco komplikovaného, když i „ujetí jednoho metru” může selhat. Ano, tento výsledek jsem úplně nečekal, takže test byl úspěšný,
míněno užitečný, a možná jsem se k tomu měl opravdu rozhoupat už před týdnem.&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-going-out.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-going-out_t.jpg&#39; alt=&#39;Nájezdy a výjezd z chaty&#39; title=&#39;Nájezdy a výjezd z chaty&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-going-out.jpg&#39;&gt;Nájezdy a výjezd z chaty&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-snow-side.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-snow-side_t.jpg&#39; alt=&#39;Poprvé na sněhu&#39; title=&#39;Poprvé na sněhu&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-snow-side.jpg&#39;&gt;Poprvé na sněhu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-snow-rear.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-snow-rear_t.jpg&#39; alt=&#39;Pohled zezadu&#39; title=&#39;Pohled zezadu&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-snow-rear.jpg&#39;&gt;Pohled zezadu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Pat neujel ani ten metr, ani na dálkové ovládání. Pociťoval jsem marnost, jako když jsem cca před měsícem zapadl na louce se Sharanem a
nemohl vyjet.
Holt 4x4 to není a to samé platí i pro Pata. Pokud jedno kolo bylo ve vzduchu, tak to bylo to co se točilo. A pokud podkluzovalo,
tak to samé. Zvláštní bylo, že při couvání podkluzovalo zase to druhé kolo. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; A chvílema jsem měl pocit, že změnou zatáčení se roztočilo
druhé kolo?! Jako by tam byly dva motory &amp;hellip; ale nejsou. Nevím, jak přesně funguje ten diferenciál, ale tady nepomáhá. A ano, jak na začátku
mi říkal HonzaR, ty hladká kola kloužou fakt hodně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další (vtipné) pozorování bylo, že jsem špatně pochopil manuál:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;SWC for S4 rocker high school low-speed control mode, to forward gear, for example:
SWC is at the top of the S4 rocker control the vehicle&#39;s highest speed for the low-speed mode
driving; SWC is in the middle of the position when the S4 rocker control the vehicle for the
medium-speed mode driving; SWC is in the bottom of the position of the S4 rocker control
the vehicle for the high-speed mode driving.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi jediná zřejmá poloha je &lt;i&gt;in the middle&lt;/i&gt;. Ale co je nahoře a co dole? Jako tak jak se to chová
mi to dává smysl. Řekl bych, že mne zmátla věta:
&lt;i&gt;If the SWA/SWB/SWC/SWD toggle switches are not in the default position when powering
on, an alarm interface will appear, prompting you to toggle all switches to up, and enter the
main interface normally when all switches are in the default position.&lt;/i&gt;
Tj. &lt;i&gt;up&lt;/i&gt; je &amp;hellip; mají to dobře, jen se naučit číst! Tak jak jsem popojížděl v předsíni s 20cm
místa vpřed a vzad, tak jsem to měl samozřejmě na &lt;i&gt;high-speed driving&lt;/i&gt;. Hmm, tak ta maximálka
je (pro autonomního robota) celkem rozumná a na startu musí být páčky s nejmenší
povolenou rychlostí.&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;640&#34; height=&#34;360&#34; src=&#34;https://www.youtube.com/embed/SWIGgTsJ2BQ&#34; title=&#34;Robot Pat on snow&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;240210&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. února 2024 &amp;mdash; Odyssey a 3x USB&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Uznávám, že tu dokumentaci nějak flákam. Jsou to sice převážně drobnosti, ale z čeho jiného se skládá život (robota)? &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Dnes jsem s Patem chvíli jezdil venku „autonomně”. Bylo to jednoduché &lt;i&gt;osgar.go&lt;/i&gt; s opakováním 10x na jízdu 1m tam a zpět.
Nejprve jsem jezdil rychlostí 0.1m/s (jako v předsíni) a pak to zvedl na 0.5m/s (při pomalé jízdě měl na chodníku občas
problém a zastavil se). Snažil jsem se to i nahrávat, ale úplně chápu Jirku, že natáčet na mobil, mít v ruce notebook
a bezpečnostní dálkové ovládání nějak dohromady nejde. Ale jako důkaz viz &lt;a href=&#39;https://youtu.be/TMdxi0-ZbWs&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;. Pokud si pustíte
i zvuk, tak poznáte, že náš pes moc robota rád nemá. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď tedy k názvu dnešního příspěvku. Odyssey je malý počítač, který mám zapůjčený od Jakuba. Jedná se o
&lt;a href=&#39;https://www.seeedstudio.com/ODYSSEY-X86J4125800-p-4915.html&#39; class=&#39;external&#39;&gt;ODYSSEY-X86J4125800&lt;/a&gt;. Studenti tam předinstalovali &lt;b&gt;Ubuntu 22.04&lt;/b&gt;
a výkonově je na tom asi 10x lépe, než starý Alix, kterého jsem chtěl použít na logování dat. Od TomášeR mám napájecí
kabel, takže jede na 12V z robota (k dispozici je ještě 24V, což plánuji pro &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;VanJee lidar&lt;/a&gt;, a 48V).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Odyssey má 3 USB porty, které jsem velmi rychle zaplnil &amp;mdash; pro řízení robota potřebuji USB-CAN převodník (PeakCAN),
na detekci překážek jsem tam dal &lt;a href=&#39;/articles/oak-d-pro/en#240210&#39;&gt;OAK-D kameru&lt;/a&gt; a do zbylého portu zapojil starou USB GPS. Hodilo by
se mít ještě couvací kameru, 2x &lt;a href=&#39;/articles/pozyx/en&#39;&gt;Pozyx&lt;/a&gt; majáčky a možná i SSD disk na ukládání dat &amp;hellip; prostě brzy dojde na USB hub.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;S ovladačem na PeakCAN jsem &lt;i&gt;trošku&lt;/i&gt; zápasil a když už to fungovalo, tak jsem přidal OAK-D kameru a „rozbilo se to”.
Ale nebylo to kamerou, ale (za tento &lt;i&gt;hint&lt;/i&gt; díky moc týmu Robotika &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;) kvůli automatickému upgrade kernelu na pozadí! No kdybych
mohl, tak bych ten vychytralý SW nejraději do toho &lt;i&gt;pozadí&lt;/i&gt; nakopal. Jakub to komentoval: &lt;i&gt;xubuntu by nemělo být tak arogantní
jako ubuntu&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; tj. na Odyssey je asi to &lt;i&gt;xubuntu&lt;/i&gt;, ale stejně. Prostě je to připojené na wifinu a dále na internet,
tak co by si to nestáhlo nejnovější aktualizace?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Z náhodných kopii textů z terminálu je změna vidět:&lt;/div&gt;

&lt;pre&gt;2024-01-27
Leaving directory &#39;/usr/src/linux-headers-6.5.0-14-generic&#39;
vs.
2024-02-02
- manually installing pcan under /lib/modules/6.5.0-15-generic/misc&amp;hellip;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ono vlastně přeinstalování pomohlo &amp;mdash; znova se ten samý driver nakopíroval, ale do jiného adresáře.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240302&#34;&gt;&lt;/a&gt;
&lt;h2&gt;2. března 2024 &amp;mdash; Pat follows Path&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Je to bída! Dnes jsem si raději &lt;i&gt;prohodil priority&lt;/i&gt;, abych se ke hraní s robotem vůbec dostal. :-( Ostatní
&lt;a href=&#39;https://kosmonautix.cz/2024/02/odysseus-pristal-na-mesici-bez-udaju-o-vysce/&#39; class=&#39;external&#39;&gt;přistávají na Měsící&lt;/a&gt; a já ještě ani pořádně nepopojel.
Ale postupně &amp;mdash; dnes už robot „sledoval cestu” (čistě z odometrie) a sbíral data. Stále jsem nepřimontoval ten &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;VanJee lidar&lt;/a&gt;
takže získaná data nejsou úplná. Také mám už cukání „slanit” ze svahu a pohybovat se dole na louce na řádově větším prostoru. Snad brzy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/vRph9u822yk&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/cones.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/vRph9u822yk&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nahrávky byly pouze z robota, takže co mám je např. &lt;a href=&#39;https://youtu.be/vRph9u822yk&#39; class=&#39;external&#39;&gt;unlisted video&lt;/a&gt;, kdy robot projíždí mezi kuželama. No styděl jsem se to dát
&lt;i&gt;public&lt;/i&gt;, tak snad na to nemusíte ani klikat. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; ale reálná data na detekci kužele to jsou.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. přidal bych i nějaké pohledy z &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/osgar/tools/lidarview.py&#39; class=&#39;external&#39;&gt;lidarview&lt;/a&gt; (alespoň trajektorii),
ale zase se mi tu něco updateovalo a &lt;i&gt;pygame&lt;/i&gt; nejede bez restartu &amp;hellip; někdy přístě &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240324&#34;&gt;&lt;/a&gt;
&lt;h2&gt;24. března 2024 &amp;mdash; Navigace na kužel&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;MartinL se nechce veřejně pochlubit, jak s &lt;a href=&#39;/robots/rocker/en&#39;&gt;Rocker&lt;/a&gt; robotem jezdil před 14ti dny U-čko a během 15minut jízdy ujel cca 200m, a já tady mám vytahovat, jak
se Pat &lt;i&gt;horko těžko&lt;/i&gt; 20 sekund navigoval ke kuželu?! &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Ale nechť, za mne nějaký postup je:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/cone-detection-plus-lidar.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/cone-detection-plus-lidar_t.jpg&#39; alt=&#39;Detekce kuželu a integrace VanJee lidaru&#39; title=&#39;Detekce kuželu a integrace VanJee lidaru&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/cone-detection-plus-lidar.jpg&#39;&gt;Detekce kuželu a integrace VanJee lidaru&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Obrázek je z &lt;a href=&#39;https://github.com/robotika/osgar/blob/feature/pat-wanjee-oak/osgar/tools/lidarview.py&#39; class=&#39;external&#39;&gt;lidarview.py&lt;/a&gt;, který jsem hackoval, aby zobrazoval i nové &lt;a href=&#39;/articles/oak-d-pro/en#240304&#39;&gt;detekce
z OAK kamery&lt;/a&gt;. Zobrazen je i &lt;a href=&#39;/articles/vanjee-lidar/en#240310&#39;&gt;VanJee lidar&lt;/a&gt; pro úhly 0 a -10 stupňů a je například vidět, že vodorovně (světle zelené body)
kužel detekován vůbec není!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Mezi nové poznatky patří:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;nutnost odolnosti vůči dešti (když jsem měl konečně chvíli na testování, tak každych 10 minut pršelo a to jsem pořádně ani nestihl vyjet z předsíně)&lt;/li&gt;

&lt;li&gt;externí WiFi anténa &amp;mdash; ona tam nějaká je, ale když je robot už 10m od chaty, tak se spojení ztrácí (jedu přes společné AP s přístupem na internet).
Asi nejzábavnější bylo, že robot klidně vyjel (má se rozjet až když detekuje kužely), ale na obrazovku žádné detekce nevypisoval &amp;hellip; protože výstup na konzoli
byl výrazně opožděn&lt;/li&gt;

&lt;li&gt;chtělo by to něco jako rozvodovou skříň, tj. když zapnu robota, abych s ním kousek na dálkové ovládání popojel, tak nepotřebuji rovnou pouštět lidar a počítač&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Pak ještě jeden „staronový” aneb, že ta OAK-D Pro varianta hrozně žere místo (došlo mi i místo na notebooku, takže půlku logů jsem si ještě nestáhl):&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar-apps$ python -m osgar.logger
                   /data/pat/2024_03_24/cones-challenge-240324_161328.log
 k                    name     bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&amp;mdash;-
 0                     sys    762653 |  9159 | 159.4Hz
 1    app.desired_steering      6220 |  1428 |  24.8Hz
 2            platform.can    116909 |  6877 | 119.7Hz
 3 platform.emergency_stop         1 |     1 |   0.0Hz
 4         platform.pose2d     12561 |  1428 |  24.8Hz
 5                 can.can    622914 | 36642 | 637.6Hz
 6               oak.depth 274503824 |   536 |   9.3Hz
 7               oak.color 514189468 |   536 |   9.3Hz
 8    oak.orientation_list    294234 |   534 |   9.3Hz
 9          oak.detections     28147 |   535 |   9.3Hz
10           oak.depth_seq      4440 |   536 |   9.3Hz
11           oak.color_seq      4440 |   536 |   9.3Hz
12      oak.detections_seq      4431 |   535 |   9.3Hz
13            gps.position       638 |    58 |   1.0Hz
14          gps_serial.raw     19687 |  2894 |  50.4Hz
15              vanjee.raw        36 |     1 |   0.0Hz
16              vanjee.xyz         0 |     0 |   0.0Hz
17             vanjee.scan   2339649 |   573 |  10.0Hz
18           vanjee.scan10   2601617 |   573 |  10.0Hz
19           vanjee.scanup   2316595 |   573 |  10.0Hz
20          vanjee_udp.raw  12716052 |  9169 | 159.6Hz
21      obstdet3d.obstacle      4815 |   535 |   9.3Hz

Total time 0:00:57.466885&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; 774M za necelou minutu, a to je ta kamera uměle omezovaná na 10Hz.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď koukám, že i ten &lt;i&gt;sys&lt;/i&gt; je nějaký velký &amp;hellip;&lt;/div&gt;

&lt;pre&gt;&amp;hellip;
0:00:57.430776 0 b&#34;{&#39;name&#39;: &#39;vanjee_udp&#39;, &#39;delay&#39;: 57.111811, &#39;channel&#39;: &#39;raw&#39;, &#39;caller&#39;: &#39;run_input&#39;}&#34;
0:00:57.430979 0 b&#34;{&#39;name&#39;: &#39;vanjee_udp&#39;, &#39;delay&#39;: 57.113248, &#39;channel&#39;: &#39;raw&#39;, &#39;caller&#39;: &#39;run_input&#39;}&#34;
0:00:57.431503 0 b&#34;{&#39;name&#39;: &#39;vanjee_udp&#39;, &#39;delay&#39;: 57.113418, &#39;channel&#39;: &#39;raw&#39;, &#39;caller&#39;: &#39;run_input&#39;}&#34;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no je to report zpoždění, ale &lt;i&gt;VanJee&lt;/i&gt; se jenom v úvodu zapne a pak už mu není třeba nic dalšího
posílat. &lt;i&gt;TODO fix report&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A divnosti, resp. „nedodělky”? Když už kužel nevidí, tak stejně jede vesele dál. Zastaví ho pouze překážka
do 1 metru. Už to &lt;a href=&#39;https://github.com/robotika/osgar-apps/commit/a4f9a81baaea0002c0be978ab8a66b9c8070f5ed&#39; class=&#39;external&#39;&gt;vidím&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;speed, steering_angle = self.max_speed, 0
if self.last_detections is not None and len(self.last_detections) == 1:
    x1, y1, x2, y2 = self.last_detections[0][2]
    steering_angle = (self.field_of_view/2) * (0.5 - (x1 + x2)/2)  # steering left is positive&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no evidentně jsem se s tím moc nepáral a i je teď jasné, proč na dva kužely moc nereagoval. Do další verze
jsem chtěl před kuželem zatáčet vlevo dokud kužel nezmizí a pak dokud se zase neobjeví. Pak už by mohl
vesele jezdit mezi dvěma kužely tam a zpět. Ale to už asi do velikonoc nestihnu. :-(&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240407&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. dubna 2024 &amp;mdash; Killer Application&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Když jsem před léty poprvé slyšel pojem &lt;i&gt;Killer Application&lt;/i&gt;, tak jsem si říkal, že je podivné, že firmy píšou zabijácký software
a ještě se tím chlubí! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Dnešní AI si o tom myslí &lt;a href=&#39;https://www.perplexity.ai/search/what-is-Killer-yuWrLbZZS7S5nkXEGrEbSQ&#39; class=&#39;external&#39;&gt;toto&lt;/a&gt;. Zajimavé
je, že je to relativně starý koncept:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The concept of a killer app has been around for decades, with examples such as the VisiCalc spreadsheet for the Apple II in the late 1970s, Lotus 1-2-3 and Excel for the IBM PC in the 1980s, and the Mosaic Web browser for the Internet in the early 1990s. These applications were so good that they provided reason enough to purchase the hardware, becoming the defining feature of their respective platforms.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dnes ale chci mluvit o jiné interpretaci a to jak se z Pata s nevinným (14 let starým) programmem &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/osgar/followme.py&#39; class=&#39;external&#39;&gt;followme.py&lt;/a&gt; stal
„zabiják”. Ale pěkně popořádku &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;O víkendu jsme měli návštěvu a robot z předsíně (fakt se kolem něj nedalo skoro protáhnout) musel pryč. Ze svahu jsem se ho pustit neodvážil a došlo tedy na již „osvědčenou technologii”:
vysazení zadních vrátek (v kombinaci s hárající fenou a okolo číhajících &lt;i&gt;nápadníku&lt;/i&gt; celkem zábava, ale naštěstí si dali chvíli pauzu), vyvezení Pata na kopeček, přistavit Sharana,
první test nájezdu (úspěšný) a převoz autem cca 1km dolu na spodní zahradu. Tam je o řád více prostoru, tak jsem nasbíral pár logů (cca 1GB/min). Mimo jiné i záběry mostíku, kam
bych rád jednou Pata pustil samotného:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/robots/pat-a-mat/depth-bridge.jpg&#39; alt=&#39;mostík pohledem z hloubkové kamery&#39; title=&#39;mostík pohledem z hloubkové kamery&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;400&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;mostík pohledem z hloubkové kamery&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jako slabina „nového ubytování” se ukázala, že se tam Pat se senzory na výšku nevejde. :-( &amp;hellip; tak jsem odšrouboval &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;lidar&lt;/a&gt;, &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D&lt;/a&gt; a
krabici s Odyssey deskou, vypojil hlavní, vlastně jediný, propojovací konektor s robotem (trošku mi to připomíná způsob napojení Matrixu na mozek) a bylo. Jako vedlejší (pozitivní)
efekt jsem pak řídící počítač mohl zapojit rovnou do zásuvky a data si během chvíle přetáhnout. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nicméně, byl tam i &lt;i&gt;negativní vedlejší efekt&lt;/i&gt; na který jsem narazil až dnes. Doslova jsem si „ukradl” hodinku na hraní, sešroubuji robota, pustím pokusně &lt;i&gt;follow me&lt;/i&gt; se
zamáčknutým STOP tlačítkem a &amp;hellip; nefunguje CAN! To už není novinka, viz &lt;a href=&#39;/robots/pat-a-mat/en#240210&#39;&gt;pozn-240210&lt;/a&gt;. Prostě tím, že jsem připojil počítač z robota na internet
tak neměl lepší nápad, než si zase upgradeovat jádro. :-( &amp;hellip; jen tentokrat &lt;i&gt;make install&lt;/i&gt; nefungovalo: &lt;i&gt;/home/robot/peak-linux-driver-8.16.0/driver/src/pcan_main.c:3506:22: error: initialization of ‘ssize_t (*)(const struct class *, const struct class_attribute *, char *)’ {aka ‘long int (*)(const struct class *, const struct class_attribute *, char *)’} from incompatible pointer type ‘ssize_t (*)(struct class *, struct class_attribute *, char *)’ {aka ‘long int (*)(struct class *, struct class_attribute *, char *)’} [-Werror=incompatible-pointer-types]&lt;/i&gt;
To jsem úplně nerozdejchal &amp;mdash; pochopte jste s robotem mimo net, resp. pár znaků tam a zpět prošlo, ale k nějakému &lt;i&gt;komfortu&lt;/i&gt; to mělo hodně daleko, &amp;hellip; a wono to neumí ujet ani 1 metr?!
Šel jsem místo toho oživovat po zimě traktůrek, dofukovat kola a tak &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nový kernel &lt;b&gt;6.5.0-26&lt;/b&gt; ale jde použít s nejnovější verzi PCAN driveru &lt;a href=&#39;https://www.peak-system.com/fileadmin/media/linux/version-history.html&#39; class=&#39;external&#39;&gt;peak-linux-driver-8.17.0&lt;/a&gt; z ledna 2024.
A stejný problém je popsaný i na &lt;a href=&#39;https://forum.peak-system.com/viewtopic.php?t=7470&#39; class=&#39;external&#39;&gt;Peak system fóru&lt;/a&gt;. Cvičně jsem se pokusil změnit update kernelu na manuální, ale jestli se to
povedlo, se nejspíše dozvím až na &lt;a href=&#39;https://ok1kpi.cz/jelinek/registrace/2024/&#39; class=&#39;external&#39;&gt;Robotem Rovně 2024&lt;/a&gt; a tam to bude už bez netu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jelikož času až tak moc nebylo, tak jsem původně chtěl vyzkoušet něco jednoduchého a Eduro &lt;i&gt;followme&lt;/i&gt; s &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;VanJee lidarem&lt;/a&gt; už jezdilo. Po pravdě to byla jedna z motivací
to nejprve na Eduru „oprášit” a rozšířit na 360 stupňový lidar &amp;mdash; se starým SICKem to jezdilo např. před 12ti lety na &lt;a href=&#39;https://youtu.be/c-SXdDgbi0s&#39; class=&#39;external&#39;&gt;Floriade 2012&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
A to už se pomalu dostáváme k tomu zabijákovi. Pustil jsem to, stál jsem před robotem, a ten na mne vyrazil „na plný koule”, ještě trošku upravil zatočení, aby mne opravdu trefil. F*
Do konfigurace jsem dal &lt;b&gt;&#34;max_speed&#34;: 0.2&lt;/b&gt; a stejně do příkazové řádky &amp;hellip; ale to co jsem viděl bylo daleko agresivnější. Také se potvrdilo, že STOP tlačítko vzadu na robotovi je úplně
k ničemu, protože to už bych měl přeražené nohy &amp;hellip; jako u 360deg pokrytí si vás robot snadno najde. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Konečně ani &lt;i&gt;Ctrl+C&lt;/i&gt; přes problémovou síť, kdy to &lt;i&gt;někdy dojde&lt;/i&gt;, není ta správná
volba. Oni Číňani věděli, proč dálkové ovldádání nejde vypnout pokud je robot zapnutý (zatím to řeším jen vytažením baterek, protože mi přijde, že se to pere s wifinou). No nic,
druhý pokus, tentokrát se zapnutým dálkovým ovladačem a Pat se zase na mne vrhl a stěží jsem stihl zareagovat &amp;hellip; hmm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vysvětlení je poměrně prosté, viz &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/osgar/followme.py#L111&#39; class=&#39;external&#39;&gt;followme.py:L111&lt;/a&gt;: &lt;b&gt;speed = 0.2 + 2 * (near - desiredDistance)&lt;/b&gt;.
Na žádnou &lt;i&gt;max_speed&lt;/i&gt; si tento stařičký kód nehraje. Jako u Edura to nevadilo, protože maximálku mělo poměrně nízko, ale pro Pata jsem pak v logu našel:&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar-apps$ python -m osgar.logger pat-followme-240407_155741.log
     -stream app.desired_speed
0:00:00.254637 1 [1334, 1650]
0:00:00.353701 1 [1340, 1680]
0:00:00.453620 1 [1346, 1740]
0:00:00.553774 1 [1348, 1800]
0:00:00.653843 1 [1332, 1920]
0:00:00.753903 1 [1274, 1920]
0:00:00.853871 1 [1202, 1830]
&amp;hellip;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;F* &amp;hellip; 16.5 stupně vlevo, rychlost 1.3m/s &amp;hellip; to moc nevypadá na omezení 0.2m/s &amp;hellip; no prostě si na hračky dávejte bacha, a revolver (nebo dálkové ovládání) mějte vždy
po ruce. A zapnuté. A prst na spoušti.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240414&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. dubna 2024 &amp;mdash; Cones Challenge v1.0 (10 minut)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dneska to vlastně byla nuda (když to porovnávám s minulou neděli &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;). Pat se mne nesnažil přelámat končetiny, skoro to hned fungovalo &amp;hellip; nějak jsem si vybavil
jednak Sebastianova &#34;nudného robota&#34; (Sebastian Thrun) a dále komentář na &lt;a href=&#39;/competitions/formula-e-roborace/en&#39;&gt;RoboRace&lt;/a&gt; (autonomní elektrické formule), že to bude zábava jako sledovat otáčející se
buben elektrické pračky. To byly moje dnešní pocity. Na druhou stranu jsem měl celou hodinu zapnuté dálkové ovládání, prst na „spoušti” (přepínání autonomní/manuální režim)
a jen občas zkusil natočit něco na telefon.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Už &lt;a href=&#39;https://youtu.be/9jInX1ZTMBc&#39; class=&#39;external&#39;&gt;první jízda&lt;/a&gt; &lt;i&gt;max_speed=0.2m/s&lt;/i&gt; a &lt;i&gt;timeout 120s&lt;/i&gt; dělala co měla:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;pokud vidíš právě jeden kužel, naviguj jeho směrem&lt;/li&gt;

&lt;li&gt;pokud je kužel ve vzdálenosti menší než 2 metry, zatáčej doleva (limit zatáčení)&lt;/li&gt;

&lt;li&gt;pokud je překážka z hloubkové kamery do jednoho metru zastav&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Jako bylo to tak brutálně pomalé, že stačil dojet jenom tam a zpátky.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pro &lt;a href=&#39;https://youtu.be/UWz4z0Uujm8&#39; class=&#39;external&#39;&gt;další jízdu&lt;/a&gt; jsem zdvojnásobil rychlost na 0.4m/s a trošku posunul kužely ať robot jezdi „skoro po cestě”. A přestalo to fungovat.
Na &lt;a href=&#39;https://youtu.be/UWz4z0Uujm8&#39; class=&#39;external&#39;&gt;videu&lt;/a&gt; je vidět, jak jezdí dokolečka místo aby jel zpátky na první kužel.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Moje první teorie byla, že nestíhá detekovat kužely a že vlastně jede podle starého záznamu videa. Proto jsem ho občas &lt;i&gt;pozastavil&lt;/i&gt; na dálkovém ovladači „aby se chytnul”.
Někdy to fungovalo, někdy ne. A kde byl zakopaný pes? Mimichodem ten štěkající pes v tomto videu není náš, ale souseda naproti &amp;hellip; asi robot Pat opravdu u psů není oblíben.
V tom algoritmu výše chyběl detail, že když začně točit, tak na nějaký čas kužely ignoruje (aby náhodou nenavigoval znova na ten samý) a jakmile pak kužel detekuje, tak se
k němu vydá. Jen ten ignorační čas byl trošku dlouhý = 20 sekund (viz &lt;a href=&#39;https://github.com/robotika/osgar-apps/commit/28eb0af8e719a7febd084ad031f716f89df1e9a4&#39; class=&#39;external&#39;&gt;28eb0af&lt;/a&gt;). Pro rychlost 0.2m/s asi nutnost, ale pro vyšší nepoužitelné!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Aby to bylo více akční, tak jsem postupně zvyšoval rychlost (pomocí &lt;i&gt;-param app.max_speed=0.7&lt;/i&gt;). Ale tím jsem se sám chytnul do vlastní pasti, kdy po
&lt;a href=&#39;/robots/pat-a-mat/en#240407&#39;&gt;minulém zážitku&lt;/a&gt; jsem dal &lt;i&gt;SW speed limit&lt;/i&gt; přímo pro samotnou platformu (viz &lt;a href=&#39;https://github.com/robotika/osgar/pull/987&#39; class=&#39;external&#39;&gt;PR #987&lt;/a&gt;).
Pokud si chce programátor nově zahrávat
s „nebezpečnou rychlostí”, tak je třeba změnit i limit platformy, tj. &lt;i&gt;-param app.max_speed=0.7 platform.max_speed=0.7&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Skončil jsem u 1m/s, ale stále
to vypadalo jako ta automatická pračka &amp;hellip; viz &lt;a href=&#39;https://youtu.be/NDYMXgmNVmM&#39; class=&#39;external&#39;&gt;poslední video&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Timeout jsem dal jen 10 minut &amp;mdash; on by si rozhodčí stejně stěžoval, že ty kužely nejsou dostatečně daleko a možná by měl i jiné námitky. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; A také chci dát šanci ML, protože
příští víkend se k tomu nedostanu. A po pravdě, když jsem se pak u té 10 minutové jízdy nudil, tak jsem kužely začal posouvat až na konec cestičky &amp;hellip; a nefungovalo to.
Proč bych měl zjistit z logu, ale zda se, že přes WiFi to dnes ani všechno nestáhnu (6.3MB/s a např &lt;i&gt;cones-challenge-240414_145616.log&lt;/i&gt; má 9.1GB, zhruba 1GB/min, s tím
budu muset také něco udělat). Co bylo v logu tedy až „někdy příště” &amp;hellip;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/oak-d-10deg.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/oak-d-10deg_t.jpg&#39; alt=&#39;OAK-D zvednut na 10 stupňů pro lepší výhled&#39; title=&#39;OAK-D zvednut na 10 stupňů pro lepší výhled&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/oak-d-10deg.jpg&#39;&gt;OAK-D zvednut na 10 stupňů pro lepší výhled&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-cone2m-turning.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/pat-cone2m-turning_t.jpg&#39; alt=&#39;Pat zatáčí při detekci kuželu na dvou metrech&#39; title=&#39;Pat zatáčí při detekci kuželu na dvou metrech&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/pat-cone2m-turning.jpg&#39;&gt;Pat zatáčí při detekci kuželu na dvou metrech&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;p.s. &lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/odometry-cones-challenge-v1.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/odometry-cones-challenge-v1_t.png&#39; alt=&#39;Odometrie 10min - cones challenge v1&#39; title=&#39;Odometrie 10min - cones challenge v1&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/odometry-cones-challenge-v1.png&#39;&gt;Odometrie 10min - cones challenge v1&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240502&#34;&gt;&lt;/a&gt;
&lt;h2&gt;2. května 2024 &amp;mdash; 4 kužely CCW&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včerejší prvomájové testování byla dost tragédie. Nejprve nefungoval CAN driver (jádro se posunulo na &lt;i&gt;6.5.0-28&lt;/i&gt;, takže bych možná tady v textu našel, že
bývalo starší). Tj. blokace automatického upgrade evidentně nefungovala a možná jsem to navíc trošku rozbil, když jsem se snažil nainstalovat &lt;i&gt;ros2&lt;/i&gt;,
ale o tom až někdy jindy. V plánu mam „přetrhat všechna spojení na internet”, wifi změnit na Access Point (to byl druhý problém, že jak se vše zazelenalo
tak už jsem nebyl schopen se za potokem připojit) a vyhrazený statické IP na zbyly Ethernet port. Zůstal mi krátky červeny Ethernet kabel, takže už barva
naznačuje &lt;i&gt;jen v krizových situacích&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/4-cones.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/4-cones_t.jpg&#39; alt=&#39;čtyři kužely&#39; title=&#39;čtyři kužely&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;225&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/4-cones.jpg&#39;&gt;čtyři kužely&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co to tedy mělo dělat? Místo dvou kuželů jsem na zahradu dal čtyři a změnil v kódu podmínku, aby místo akceptace pouze jednoho jediného detekovaného kuželu
to pracovalo i vícero ve výhledu. Navigovat se měl jenom na ten co vidí vpravo, takže v kombinaci se zatáčením vlevo měl jezdit do obdélníku proti směru
hodinových ručiček. Když to byl &lt;i&gt;právě jeden kužel&lt;/i&gt;, tak to byla skoro jistota, že je to &lt;i&gt;ten pravý&lt;/i&gt; &amp;mdash; teď do hry vstupují i různí „duchové”,
ale po pravdě jejich vliv jsem moc nezaregistroval. Co se zase rozbilo bylo to &lt;b&gt;3s otáčení naslepo&lt;/b&gt;. Proč? Začínal jsem rovnou na rychlosti 1m/s, ale
teď se už neměl otáčet 180 stupňů, ale pouze 90, takže by stačil i poloviční čas, kdy detekci kuželů ignoruje. A bylo to často přesně na hranici o zlomek
sekundy, takže řešení to snížit na například 2s by to „řešilo”, ale asi už bylo dost tohoto &lt;i&gt;hacku&lt;/i&gt;. A hlavně pak nedetekuje nic a také nic nedělá,
což mne asi trápí více.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/right-cone.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/right-cone_t.jpg&#39; alt=&#39;vybírej &amp;quot;ten pravý&amp;quot;&#39; title=&#39;vybírej &amp;quot;ten pravý&amp;quot;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/right-cone.jpg&#39;&gt;vybírej &amp;quot;ten pravý&amp;quot;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co jsme se bavili s Jirkou před týdnem, tak je na čase začít kužely mapovat a vylepšit odometrii (viz minulý příspěvek, že ta odometrie z enkoderů
na zadních hnaných kolech není úplně ideálni). Včera jsem jezdil i na „sousedním políčku”, které nám rozvrtali divočáci, a tam je krasně vidět, jak to v jednom
místě pravidelně „ustřelí”, když je jedno z kol ve vzduchu (ano, Pat stále jezdí bez nákladu).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/jumping-odometry.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/jumping-odometry_t.jpg&#39; alt=&#39;Jumping odometry&#39; title=&#39;Jumping odometry&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/jumping-odometry.jpg&#39;&gt;Jumping odometry&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. tak alespoň jedno &lt;a href=&#39;https://youtu.be/EgkCK5BHBiY&#39; class=&#39;external&#39;&gt;unlisted video&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 PS píše: &lt;i&gt;... nicméně, jak jsem to tak četl, napadl mě námět na velkofilm &#34;Pán robotů: Čtyři kužely&#34; &lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240906&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. září 2024 &amp;mdash; Push me!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Vypadá to, že se tady nic 4 měsíce (!) nedělo, ale on v mezičase byl &lt;a href=&#39;/competitions/robotem-rovne/2024/en#240518&#39;&gt;Pat na Robotem Rovně&lt;/a&gt; a později
&lt;a href=&#39;/competitions/elrob/2024/en#240629&#39;&gt;s Cogito na ELROBu&lt;/a&gt; &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A s ELROBem a kategorií
&lt;i&gt;Mula&lt;/i&gt; to vlastně i souvisí. Tam je úkolem nejprve robota provést z A do B, a pak už robot mezi těmito dvěma místy jezdí sám. A pravě ta úvodní &lt;i&gt;follow me&lt;/i&gt; fáze
je „taková divná” &amp;mdash; opravdu se chcete „procházet” před několikatunovým transportérem? A stále se otáčet, jestli jede za vámi jak má? Případně zda nemáte
popoběhnout?! &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Nebylo by lepši se v klidu procházet &lt;b&gt;ZA ROBOTEM&lt;/b&gt; a jen ho lehce navádět, kam má jet? Jednak robotu nebudete překážet ve výhledu, aby si
mohl v klidu trasu mapovat pro cestu zpět, a dále ho budete mít „stále na očích”. Tolik teorie.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ano, lehce jsme se hecovali, že to nebude fungovat, ale &amp;hellip; viz &lt;a href=&#39;https://youtu.be/hvvHZQ82MMo&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;. Trošku mi to připadá jako „nahánění dobytka” &amp;hellip; honák
je vidět jenom na lidarovém scanu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/push-me-lidarview.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/push-me-lidarview_t.jpg&#39; alt=&#39;Push Me log v lidarview&#39; title=&#39;Push Me log v lidarview&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/push-me-lidarview.jpg&#39;&gt;Push Me log v lidarview&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jak to nejsnáze implemntovat? Jelikož
má Pat &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;360 stupňový lidar&lt;/a&gt;, tak stačí ho virtuálně otočit o 180 stuňů. Pak si začne myslet, že osoba vlevo za robotem je vlastně vpravo před robotem. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
A zbytek už je staré dobré &lt;i&gt;follow me&lt;/i&gt;.
Ano, bude to chtít ještě „doladit detaily” jako rozumná vzdálenost od robota, zda místo kruhu spíše nevzít v úvahu obdélníkový tvar robota a počítat vzdálenost
od okrajů robota a pod. Je to jen malý krůček, ale možná správným směrem.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;241020&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. řijna 2024 &amp;mdash; Cones Challenge v1.1 (1h)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;No myslím, že by mi to &lt;i&gt;porota&lt;/i&gt; neuznala, ale aspoň jsem si trošku zajezdil. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Koukám, že &lt;a href=&#39;/robots/pat-a-mat/en#240414&#39;&gt;před půl rokem&lt;/a&gt; (!?), to je fakt hrůza
jak ten čas utíká, jsem první pokusy nazval &lt;i&gt;v1.0&lt;/i&gt;, tak nechť toto je drobný „upgrade”, i když na rovinu je to spíše „downgrade”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První změna, co jsem včera
&lt;i&gt;hacknul&lt;/i&gt;, bylo vypnutí detekce překážek &amp;hellip; to jako není 2x dobrý nápad a udělat to pořádně je už staré TODO. Další změna byla, že do zatáčky jede robot pomaleji,
aby měl šanci detekovat druhý kužel. Měl jsem tam 1/4 rychlosti pro jízdu rovně, ale to se otáčel tak pomalu, že na místě rozrytém divokými prasaty to nedal.
Změnil jsem to na 1/2 rychlosti jízdy rovně, tj. rovně jel 1m/s a do zatáčky 0.5m/s.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/false-detection.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/false-detection_t.jpg&#39; alt=&#39;chybná detekce kuželu&#39; title=&#39;chybná detekce kuželu&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/false-detection.jpg&#39;&gt;chybná detekce kuželu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Třetí úprava byla k částečnému odstranění falešných detekcí &amp;mdash; když jsi
při zatáčení viděl kužel a zmizel, tak pokud se do 2s neobjeví, tak pokračuj v zatáčení. Něco v křoví mu stále ten kužel připomíná, tak je to taková obezlička
bez přetrénování. No a konečně jsem, letos asi naposledy, posekal trávu a kužel na cestě dal na přepravku, aby byl lépe vidět &amp;hellip; no podvodník, co vám budu
vykládat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A výsledek?&lt;/div&gt;

&lt;pre&gt;$ python -m osgar.logger /data/pat/2024_10_19/cones-challenge-241019_144119.log
 k                    name      bytes |   count | freq Hz
#########################################################
 0                     sys   52096485 |  615709 | 160.0Hz
 1    app.desired_steering     570208 |   96194 |  25.0Hz
 2            platform.can    7850481 |  461793 | 120.0Hz
 3 platform.emergency_stop          2 |       2 |   0.0Hz
 4         platform.pose2d    1150680 |   96194 |  25.0Hz
 5                 can.can   41867447 | 2462791 | 639.9Hz
 6               oak.depth 3361803388 |   38442 |  10.0Hz
 7               oak.color 1362172191 |   38442 |  10.0Hz
 8    oak.orientation_list   21182093 |   38443 |  10.0Hz
 9          oak.detections    1241670 |   38442 |  10.0Hz
10             oak.left_im          0 |       0 |   0.0Hz
11            oak.right_im          0 |       0 |   0.0Hz
12           oak.depth_seq     410302 |   38442 |  10.0Hz
13           oak.color_seq     410302 |   38442 |  10.0Hz
14      oak.detections_seq     410302 |   38442 |  10.0Hz
15         oak.left_im_seq          0 |       0 |   0.0Hz
16        oak.right_im_seq          0 |       0 |   0.0Hz
17            gps.position      41221 |    3847 |   1.0Hz
18        gps.rel_position          0 |       0 |   0.0Hz
19           gps.nmea_data     704286 |    3847 |   1.0Hz
20          gps_serial.raw    1289847 |  199932 |  51.9Hz
21              vanjee.raw         36 |       1 |   0.0Hz
22              vanjee.xyz          0 |       0 |   0.0Hz
23             vanjee.scan  171430988 |   38481 |  10.0Hz
24           vanjee.scan10  200877685 |   38481 |  10.0Hz
25           vanjee.scanup  172092665 |   38481 |  10.0Hz
26          vanjee_udp.raw  853982871 |  615706 | 160.0Hz
27      obstdet3d.obstacle     345969 |   38441 |  10.0Hz

Total time 1:04:08.792693&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; prostě hodinu jezdil dokolečka. Ty poslední čtyři minuty (cca) jsem ho přepnul na manuál a přejel ručně k „domečku”, ale jinak jsem do toho nezasahoval.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/cones-challenge-1hour.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/cones-challenge-1hour_t.jpg&#39; alt=&#39;stav po hodině ježdění&#39; title=&#39;stav po hodině ježdění&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/cones-challenge-1hour.jpg&#39;&gt;stav po hodině ježdění&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/rail-1hour-later.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/rail-1hour-later_t.jpg&#39; alt=&#39;vyjeté koleje&#39; title=&#39;vyjeté koleje&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/rail-1hour-later.jpg&#39;&gt;vyjeté koleje&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zajimavé mi přišlo „rozpoložení testera” &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;mdash; cca prvních 15 minut jsem seděl a koukal, jak to jezdí. Pak jsem robota nechal jezdit samotného
a vozil vedle dřevo. Pak jsem si říkal, že to není úplně dobrý nápad ho nechávat bez dozoru, a že bych měl oprášit tu &lt;a href=&#39;/articles/security-cameras/en&#39;&gt;bezpečnostní kameru&lt;/a&gt;.
Netriviální čas jsem se jí snažil přidělat a vzpomenout si, jak se ovládá (možná vhodný okamžik zamergeovat do &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGARa&lt;/a&gt;. Konečně jsem si notebook
vzal s sebou a koukal na video blíže k wifině (ale kdyby se něco stalo, tak stejně robota nezastavím). Pokud nic, tak pro změnu narostl seznam co by bylo dobré
vylepšit/posunout:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;automatické sledování robota&lt;/li&gt;

&lt;li&gt;automatické vypnutí robota v okamžiku divného chování&lt;/li&gt;

&lt;li&gt;alarm, pokud robot zmizí
&lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Za včerejšek tedy alespoň dvě mizerné videa z bezpečnostní kamery, kdy jsem nahrával &lt;i&gt;VLC Media Playerem&lt;/i&gt; a jak kamera, tak můj notebook neměly ideální
wifi signál (stahování nahrávek z &lt;i&gt;tapo&lt;/i&gt; kamery jsem také ještě nerozchodil):&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/qqk2YCMZr4w&#39; class=&#39;external&#39;&gt;https://youtu.be/qqk2YCMZr4w&lt;/a&gt; &amp;mdash; Pat Cones Challenge 2024-10-19&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/jC8XLQK5u6M&#39; class=&#39;external&#39;&gt;https://youtu.be/jC8XLQK5u6M&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;A co dál? Chtěl bych zkusit noční jízdu, ale u prvního pokusu OAK kamera neviděla vůbec nic! Doporučení bylo používat levou a pravou černobílou kameru, ale
to se mi zatím nějak popralo s detekcí na barevné kameře.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A plán B je natrénovat nějaký zajímavější okruh &amp;mdash; jj, už jsem si ho vyhledl, jen zatím nevím jak to naprogramovat. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; a možná by byl dobré ho také trošku
prosekat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. pro úspěšnou misi jsem Pata naložil &amp;mdash; myslím, že je to 70 litrů (?) kompostu, který pak žena hledala&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 je divné, že ta videa jsou bez zvuku&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.3 důvod ukončení předešlého pokusu &lt;i&gt;cones-challenge-241019_143752.log&lt;/i&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/dog-in-collision-course.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/dog-in-collision-course_t.jpg&#39; alt=&#39;překážka v cestě ... &#39; title=&#39;překážka v cestě ... &#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/dog-in-collision-course.jpg&#39;&gt;překážka v cestě ... &lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/dog-in-collision-course-depth.jpg&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/dog-in-collision-course-depth_t.jpg&#39; alt=&#39;... nerozumná!&#39; title=&#39;... nerozumná!&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/dog-in-collision-course-depth.jpg&#39;&gt;... nerozumná!&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260730&#34;&gt;&lt;/a&gt;
&lt;h2&gt;30. července 2026 &amp;mdash; Update systému, LIDAR road&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes probíhala příprava na &lt;a href=&#39;/competitions/dobyvani-hradu/en&#39;&gt;soutěž Dobývání hradu 2026&lt;/a&gt;, ale po pravdě nevím, kam si těch pár interních poznámek napsat &amp;hellip; tak sem
(po dvou letech).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Přešel jsem na &lt;a href=&#39;https://docs.astral.sh/uv/&#39; class=&#39;external&#39;&gt;uv&lt;/a&gt;, stejně jako u většiny dalších projektů. Nejprve se to zaseklo na DNS (skoro, jako bych byl v práci)
&amp;mdash; Pat je defaultně &lt;i&gt;Access Point&lt;/i&gt; a jeden &lt;i&gt;Ethernet&lt;/i&gt; je natvrdo nakonfigurovaný pro &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;VanJee lidar&lt;/a&gt; a druhý byl se statickou IP adresou
&lt;b&gt;192.168.1.44&lt;/b&gt; (až to budu někdy hledat). Změnil jsem to tedy na automatickou a připojil do domácí sítě.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhá kolize bylo klasicky &lt;b&gt;audio&lt;/b&gt; &amp;mdash; &lt;i&gt;Failed to build `pyaudio==0.2.14`&lt;/i&gt;. Slepě jsem následoval cestičku vyšlapanou &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Mattýskama&lt;/a&gt; a nakonec
to nainstalovat šlo, kde &lt;i&gt;to&lt;/i&gt; myslím &lt;i&gt;uv&lt;/i&gt; prostředí pro Mattyho. Chyběl ještě &lt;a href=&#39;https://pypi.org/project/python-can/&#39; class=&#39;external&#39;&gt;python-can&lt;/a&gt;, který jsem měl dříve ve verzi 4.2.2
a nyní je aktuální 4.6.1. Jj, následky si později ponesu sám.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Večer jsme potřebovali zajet nakoupit (39.5C ve stínu na parkovišti) a asi se mi nějak „zavařila hlava”, že po návratu jsem neodolal nutkání posunout dál
&lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/34&#39; class=&#39;external&#39;&gt;LIDAR Road&lt;/a&gt; experiment. Koukám stále na data z &lt;a href=&#39;/competitions/robotrip/2026/en&#39;&gt;Tuláka 2026&lt;/a&gt; a ta asfaltka mi přišla krásně
hladká (i na datech z LIDARu). &lt;i&gt;Brute force&lt;/i&gt; myšlenka byla použít obyčejný &lt;i&gt;np.diff&lt;/i&gt;, tj. rozdíl po sobě jdoucích měření ve scanu a nastavit si &lt;i&gt;masku&lt;/i&gt; na &lt;i&gt;True&lt;/i&gt;
pokud ten rozdíl je v nějaké toleranci (používal jsem 10 = 1cm). Mám nějakou představu o šířce cesty (fakticky nevím, ale teď už bych to měl být schopen spočítat) a tomu
odpovídá „okno” dané velikosti. No a když s tím oknem projedu celý ten &lt;i&gt;diff&lt;/i&gt;, tak maximum je cesta, nebo ne?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 513px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/complete-diff-graph.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/complete-diff-graph_t.png&#39; alt=&#39;kompletní scan diff&#39; title=&#39;kompletní scan diff&#39; class=&#39;border&#39;  width=&#39;507&#39; height=&#39;274&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/complete-diff-graph.png&#39;&gt;kompletní scan diff&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ale pokud zoomujete na střed (ty dva „hroty” je válec na Matty M03, který jel jako Patův předvoj) &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 503px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/zoom-in-detail.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/zoom-in-detail_t.png&#39; alt=&#39;zoom detail diff&#39; title=&#39;zoom detail diff&#39; class=&#39;border&#39;  width=&#39;497&#39; height=&#39;264&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/zoom-in-detail.png&#39;&gt;zoom detail diff&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; a po nasazení hrubé síly a zobrazení detekce cesty pro 100s z toho vypadne:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 616px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/pat-a-mat/smooth-road-detection.png&#39;&gt;&lt;img src=&#39;/robots/pat-a-mat/smooth-road-detection_t.png&#39; alt=&#39;detekce hladké cesty&#39; title=&#39;detekce hladké cesty&#39; class=&#39;border&#39;  width=&#39;610&#39; height=&#39;323&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/pat-a-mat/smooth-road-detection.png&#39;&gt;detekce hladké cesty&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Až na jeden „úlet” pěkně, nebo ne?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Podle hodin bych už měl jít spát, ale to bych pak nezapsal noční pozorování:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;byla skoro tma, takže když jsem vytahoval GPS modul s anténou, tak se mi podařilo utrhnout WiFi anténu na robotovi&lt;/li&gt;

&lt;li&gt;záložní Eth port jsem měl přepnutý na &lt;i&gt;auto&lt;/i&gt; a DHCP, takže mini router od Franty z &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;DTC2&lt;/a&gt; jsem u sebe neměl (a teď jsem ho našel) &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;fungoval WiFi extender, který má i vývod pro Ethernet &amp;hellip; spojení navázáno&lt;/li&gt;

&lt;li&gt;robot po CANu nějak komunikoval, ale nepopojel ani kousek &amp;hellip; podle dat měl zatáčet, ale to jsem ve tmě neviděl&lt;/li&gt;

&lt;li&gt;přehrání dat z CANu je podivné:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;python -m osgar.replay -module platform /data/pat/pat-follow-matty-260730_193542.log -v
original args: b&#34;[&#39;/home/robot/git/osgar/osgar/record.py&#39;,
                  &#39;/home/robot/git/osgar/config/pat-follow-matty.json&#39;,
                  &#39;-duration&#39;, &#39;20&#39;, &#39;-note&#39;, &#39;can 4.6.1, na robotu&#39;]&#34;
0:00:00.633822 Emergency STOP False
0:00:00.633822 Error status: 3100000000
0:00:00.633964 Vehicle mode: 2
0:00:00.635015 Bumpers 0
0:00:00.660346 Error status: 2100000000
0:00:00.660529 Vehicle mode: 0
Voltage 49.68 654.86 19.39
Temperature 30.0 30.0
0:00:00.690230 Error status: 2000000000
0:00:00.700621 Error status: 0000000000
Voltage 49.68 654.86 19.39
0:00:00.783830 !!! LOST PACKET !!! 0x18c4e2ef 112 113
Temperature 30.0 30.0
Voltage 49.68 654.86 19.39
0:00:00.884276 !!! LOST PACKET !!! 0x18c4e2ef 128 129
Temperature 30.0 30.0
Voltage 49.67 654.86 19.39
0:00:00.984037 !!! LOST PACKET !!! 0x18c4e2ef 144 145
Temperature 30.0 30.0
Voltage 49.67 654.86 19.39
0:00:01.084781 !!! LOST PACKET !!! 0x18c4e2ef 160 161
Temperature 30.0 30.0
Voltage 49.67 654.86 19.39
0:00:01.183172 !!! LOST PACKET !!! 0x18c4e2ef 176 177&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; každý 16tý packet se ztratí &amp;hellip; že by ta nová verze &lt;i&gt;python-can&lt;/i&gt;?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, ještě koukám na data z Tuláka (&lt;i&gt;pat-follow-matty-260614_125805.log&lt;/i&gt;) a tam je teď výpadků řádově méně. Ještě jeden rozdíl je,
že si nově ukládám i &lt;i&gt;scan5&lt;/i&gt; (cestu plánuji detekovat primárně z &lt;i&gt;scan10&lt;/i&gt;, tj. ten co kouká dolů pod úhlem 10 stupňů), tak jestli
zase nedrhne zápis? Čas na &lt;a href=&#39;https://github.com/robotika/osgar/pull/1069&#39; class=&#39;external&#39;&gt;:null&lt;/a&gt; expriment? Zítra.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/pat-a-mat/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>OSGAR</title>
    <link rel='alternate' href="https://robotika.cz/guide/osgar/en"/>
    <id>https://robotika.cz/guide/osgar/en</id>
    <updated>2018-10-21T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        OSGAR is a long term project which will probably incorporate more than one
robotic platform in the future. The project started in 2014 when we decided to
modify school garden tractor &lt;b&gt;John Deere X300R&lt;/b&gt; into autonomous robot. The
project is carried on in cooperation with the Czech University of Life Science
Prague. &lt;b&gt;Blog update:&lt;/b&gt; 21/06/2026 &amp;mdash; &lt;a href=&#39;/guide/osgar/en#260721&#39;&gt;OSGAR release 1.1&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h2&gt;Content&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#181021&#39;&gt;181021 - OSGAR v0.0.1 vydán!&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#230326&#39;&gt;230326 - Web refactoring&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#250312&#39;&gt;250312 - Základní použití (CS only)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#250314&#39;&gt;250314 - Hello OSGAR! (CS only)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#250407&#39;&gt;250407 - Programování: callbacks vs. sekvence (CS only)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#260414&#39;&gt;260414 - OSGAR release 1.0.0 (powered by AI)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/guide/osgar/en#260721&#39;&gt;260721 - OSGAR release 1.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;181021&#34;&gt;&lt;/a&gt;
&lt;h2&gt;21st October, 2018 &amp;mdash; OSGAR v0.0.1 released!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The OSGAR package was released today for the first time &amp;mdash; see
&lt;a href=&#39;https://pypi.org/project/osgar/&#39; class=&#39;external&#39;&gt;https://pypi.org/project/osgar/&lt;/a&gt;. It contains the basic functionality for
logging of various data sources together with replay feature. This initial
release supports &lt;i&gt;John Deere&lt;/i&gt; and &lt;i&gt;Spider3&lt;/i&gt; (both quite uncommon, I am
afraid), but more will come soon, I hope. If you would like to try it on your
robot, please let us know. The step 1 is to describe your inputs and outputs
(both the devices configuration as well as the communication protocol used).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;You can give it a try:&lt;/div&gt;

&lt;pre&gt;python3 -m pip install osgar&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;230326&#34;&gt;&lt;/a&gt;
&lt;h2&gt;26th March, 2023 &amp;mdash; Web refactoring&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Note, that there was a &#34;minor&#34; web refactoring as &lt;a href=&#39;https://github.com/robotika/osgar&#39; class=&#39;external&#39;&gt;OSGAR&lt;/a&gt; was further developed
(mainly for &lt;a href=&#39;/competitions/subtchallenge/en&#39;&gt;DARPA Subterranean Challenge&lt;/a&gt;). The original page was split
into 3 and we will track them separately:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGAR guide in /guide/osgar&lt;/a&gt; (this site)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/john-deere/en&#39;&gt;John Deere as modified tractor&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/spider/en&#39;&gt;Autonomous Spide3 Rider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;260414&#34;&gt;&lt;/a&gt;
&lt;h2&gt;April 14, 2026 &amp;mdash; OSGAR release 1.0.0 (powered by AI)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The worst thing about this website is that you can clearly see what you haven&#39;t touched for &#34;years&#34;! Or now I&#39;m surprised that the last &lt;i&gt;OSGAR update&lt;/i&gt; was almost exactly a year ago, when students at CZU
were preparing &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty M02&lt;/a&gt; for the &lt;a href=&#39;/competitions/fieldrobot/2025/en&#39;&gt;Field Robot Event 2025&lt;/a&gt; competition in Italy &amp;hellip; it was not. But what I smiled at last year among the students, &#34;a year later&#34;, I myself am fully using &amp;mdash; yes, we are talking about programming with &#34;AI flashlights&#34;. I confirm that the turning point has already occurred and it is not a waste of time to involve AI in programming. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So what does it look like? First of all, a new &lt;a href=&#39;https://pypi.org/project/osgar/1.0.0/&#39; class=&#39;external&#39;&gt;OSGAR release 1.0.0&lt;/a&gt; was created! I wouldn&#39;t exactly call it a CD (&lt;i&gt;Continuous Deployment&lt;/i&gt;), because
there was a 5-year gap. And little motivation, because nowadays it&#39;s common to install Python ..packages&#39;&#39; directly from github. Of course, it wasn&#39;t without hiccups like, what on earth was my PYPI password?! Yes, I found in my email that I had reset it just five years ago, but it doesn&#39;t work anymore. PYPI requires two-factor authentication and verified email. It took
about a month (hit &lt;a href=&#39;https://github.com/robotika/osgar/releases/tag/v1.0.0&#39; class=&#39;external&#39;&gt;tagged March 16, 2026&lt;/a&gt;), but it&#39;s &lt;a href=&#39;https://pypi.org/project/osgar/&#39; class=&#39;external&#39;&gt;there&lt;/a&gt;. And on top of that, there are
nice pictures of robots, which somehow didn&#39;t work before??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I&#39;m using the same name for the AI ​​as I did in the competition a year ago, i.e. &lt;b&gt;Elena&lt;/b&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;News? So far, probably primarily documentation:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://github.com/robotika/osgar/blob/master/CHANGELOG.md&#39; class=&#39;external&#39;&gt;changelog&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://robotika.github.io/osgar/index.html&#39; class=&#39;external&#39;&gt;update online documentation&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://github.com/robotika/osgar/blob/master/doc/deep_dive.md&#39; class=&#39;external&#39;&gt;Deep Dive for OSGAR Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=kwSVtQ7dziU&#39; class=&#39;external&#39;&gt;Kapathy (v2026Q1)&lt;/a&gt; said that today it is necessary to write documentation primarily for AI agents, that humans will no longer read it, but maybe even the machines will appreciate it?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. auto-translated via &lt;a href=&#39;https://translate.google.com/&#39; class=&#39;external&#39;&gt;https://translate.google.com/&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260721&#34;&gt;&lt;/a&gt;
&lt;h2&gt;July 21, 2026 &amp;mdash; OSGAR release 1.1&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Yesterday I put &lt;a href=&#39;https://pypi.org/project/osgar/1.1.0/&#39; class=&#39;external&#39;&gt;pypi OSGAR 1.1.0&lt;/a&gt; on. The primary motivation was the &#34;trauma from the past&#34; when I didn&#39;t update OSGAR for 5 years and it was very difficult for me to
log in again and release a new package. However, it&#39;s been 3 months and some little things have accumulated during that time. It&#39;s worth noting that I&#39;ve already removed &lt;i&gt;powered by AI&lt;/i&gt; from the title or what
isn&#39;t it today? And yes, &lt;i&gt;Elena Ai&lt;/i&gt; assisted with almost everything.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What&#39;s new? I&#39;ll take it partly from the automatically generated &lt;a href=&#39;https://github.com/robotika/osgar/releases#release-v1.1.0&#39; class=&#39;external&#39;&gt;changelog on GitHub&lt;/a&gt; combined with
&lt;a href=&#39;https://github.com/robotika/osgar/blob/master/CHANGELOG.md&#39; class=&#39;external&#39;&gt;changelog from Elena&lt;/a&gt; &amp;hellip; however, this is my own. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;osgar.logger --config&lt;/b&gt; &amp;hellip; this is such a small thing that now even &lt;i&gt;osgar.logger&lt;/i&gt; works with configuration. For &lt;i&gt;osgar.record&lt;/i&gt; it is a necessity (specification of what should be recorded),
for &lt;i&gt;osgar.replay&lt;/i&gt; it is sometimes a useful option to recalculate data and now &lt;i&gt;osgar.logger&lt;/i&gt; returns JSON configuration stored in &lt;i&gt;logfile&lt;/i&gt; to the &lt;i&gt;config&lt;/i&gt; parameter&lt;/li&gt;

&lt;li&gt;&lt;b&gt;osgar.replay --params&lt;/b&gt; &amp;hellip; for &lt;i&gt;osgar.record&lt;/i&gt; it is quite convenient to enter changes directly on the command line without changing the configuration, where the applied changes are also saved
to the &lt;i&gt;logfile&lt;/i&gt;, e.g. &lt;i&gt;app.max_speed=0.2&lt;/i&gt; for safer slow driving during the first testing. For playback, this makes sense, for example, when generating module outputs for variously set
limits&lt;/li&gt;

&lt;li&gt;&lt;b&gt;osgar.replay --draw XXX&lt;/b&gt; &amp;hellip; this function in the commercial version of OSGAR (&lt;a href=&#39;https://robotika-intl.com/technology&#39; class=&#39;external&#39;&gt;RIGIDS&lt;/a&gt;) was long ago for quick visualization of various data that
are part of the module calculation, e.g. &lt;i&gt;speed&lt;/i&gt;, &lt;i&gt;heading&lt;/i&gt;, &lt;i&gt;encoders&lt;/i&gt; for a given robotic platform&lt;/li&gt;

&lt;li&gt;&lt;b&gt;modifiers :gz :null&lt;/b&gt; &amp;hellip; now you can change the default setting in the code in the JSON configuration whether the given data &lt;i&gt;stream&lt;/i&gt; should be automatically &lt;i&gt;gzipped&lt;/i&gt; or discarded (&lt;i&gt;:null&lt;/i&gt;).
In OSGAR, the default is to save everything and there are a few exceptions (e.g. data from the depth camera), which are packed by default (&lt;i&gt;depth:gz&lt;/i&gt;).&lt;/li&gt;

&lt;li&gt;&lt;b&gt;LogReaderEx&lt;/b&gt; &amp;hellip; it annoyed me how we keep converting the indexes of individual outputs and then deserializing them, when it is always needed except for complete exceptions?!
So &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/osgar/logger.py#L383&#39; class=&#39;external&#39;&gt;LogReaderEx&lt;/a&gt; solves this and is named differently for backward compatibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cleanup and documentation&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Don&#39;t take this to heart, but Elena spent some time on it. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/doc/deep_dive.md&#39; class=&#39;external&#39;&gt;Deep Dive for OSGAR Developers&lt;/a&gt; was created (it was
after the release of OSGAR 1.0.0, but I can see the link there already), I deleted the &lt;b&gt;subt&lt;/b&gt; folder, developed more than five years ago for the &lt;a href=&#39;/competitions/subtchallenge/en&#39;&gt;DARPA Suberranean Challenge&lt;/a&gt; (yeah, that
hurt a lot, but I actually just moved it to &lt;a href=&#39;https://github.com/robotika/osgar/tree/master/_deprecated/subt&#39; class=&#39;external&#39;&gt;_deprecated&lt;/a&gt;, but I&#39;ll really delete it someday).&lt;/div&gt;

&lt;h3&gt;Drivers and platforms&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Probably the biggest improvement is with &lt;b&gt;DepthAI v3&lt;/b&gt; support (tested with 3.6.1) &amp;mdash; in addition to newer models, it is the ability to run multiple models simultaneously (e.g. path detection and YOLO object detection),
&lt;i&gt;superblob&lt;/i&gt; (precompiled network for different number of cores/&lt;i&gt;shaves&lt;/i&gt;) and also support for models for path segmentation.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A small thing is the driver for the small drone &lt;a href=&#39;/robots/paula/en&#39;&gt;Tello&lt;/a&gt; &amp;mdash; a few years old, just slightly dusted and merged into &lt;i&gt;master&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Also newly added is the &lt;i&gt;Ouster LiDAR SDK driver&lt;/i&gt; and a modification of the &lt;i&gt;VanJee&lt;/i&gt; driver to return all 4 scans.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And that&#39;s about it in a nutshell, for details see the mentioned &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/CHANGELOG.md&#39; class=&#39;external&#39;&gt;changelog&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. auto-translated via &lt;a href=&#39;https://translate.google.com/&#39; class=&#39;external&#39;&gt;https://translate.google.com/&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Links&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://github.com/robotika/osgar&#39; class=&#39;external&#39;&gt;OSGAR source code on Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/guide/osgar/en#email&#39;&gt;Contact Form&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Bird&#39;s Eye View (BEV)</title>
    <link rel='alternate' href="https://robotika.cz/guide/bev/en"/>
    <id>https://robotika.cz/guide/bev/en</id>
    <updated>2026-07-12T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Někdy není špatné se na situaci podívat „s nadhledem”, doslova z ptačí perspektivy a možná objevíte vzor, který v detailu není zřejmý. Mluvím o poskládání
mnoha obrázků v jednu společnou &lt;i&gt;mozaiku&lt;/i&gt;, což je taková malá 2D barevná mapka &amp;hellip;
&lt;b&gt;Update 12/7/2026&lt;/b&gt; &amp;mdash; &lt;a href=&#39;/guide/bev/en#260712&#39;&gt;BEV ver0&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;Obávám se, že tento „příspěvek” bude &lt;i&gt;běh na dlouhou trať&lt;/i&gt;, ale přijde mi škoda „nevyrazit” &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bude to tedy kusé vyprávění co mi kdy přišlo zajímavé a jednoho dne možná AI poprosím, ať z těch dílků poskládá nějaký smlysluplný článek &amp;hellip; jestli to vůbec bude možné!&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/guide/bev/en#260712&#39;&gt;260712 - BEV ver0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;260712&#34;&gt;&lt;/a&gt;
&lt;h2&gt;BEV ver 0&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Po soutěži &lt;a href=&#39;/competitions/robotrip/2026/en&#39;&gt;Tulák po krasu 2026&lt;/a&gt; jsem si hrál s daty z kamer &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty robotů&lt;/a&gt; a přišlo mi, že ta krásná cesta by měla jít poskládat
do &lt;i&gt;mozaiky&lt;/i&gt;. Následující obrázky jsou převzaty z článku „o tulákovi”, ale rád bych v tom pokračoval a proto tento nový článek.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 156px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-30m-50m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/mosaic-30m-50m_t.jpg&#39; alt=&#39;Mozaika 30-50m&#39; title=&#39;Mozaika 30-50m&#39; class=&#39;border&#39;  width=&#39;150&#39; height=&#39;395&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-30m-50m.jpg&#39;&gt;Mozaika 30-50m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 185px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-50m-100m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/mosaic-50m-100m_t.jpg&#39; alt=&#39;Mozaika 50-100m&#39; title=&#39;Mozaika 50-100m&#39; class=&#39;border&#39;  width=&#39;179&#39; height=&#39;413&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-50m-100m.jpg&#39;&gt;Mozaika 50-100m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 359px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-100m-200m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/mosaic-100m-200m_t.jpg&#39; alt=&#39;Mozaika 100-200m&#39; title=&#39;Mozaika 100-200m&#39; class=&#39;border&#39;  width=&#39;353&#39; height=&#39;441&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-100m-200m.jpg&#39;&gt;Mozaika 100-200m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Data nasdílená nemám, ale minimálně jsem dal na review &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/31&#39; class=&#39;external&#39;&gt;AI generovaný kód&lt;/a&gt;. Není dokonalý, ale jako první krok za mne dobrý.
V současné &lt;i&gt;verzi 0&lt;/i&gt; si nejprve pomocí &lt;b&gt;view_bev.py&lt;/b&gt; naklikáte čtyři body cesty určující projekci, pak s &lt;b&gt;log2imdir.py&lt;/b&gt; (toto asi časem přejmenuji a přesunu) vytvoříte z nahrávky
adresář obrázků s krokem 0.5 metrů a přehledem pozic robota (mělo by být kamery, ale to bude až do &lt;i&gt;ver1&lt;/i&gt;) a konečně s &lt;b&gt;mosaic.py&lt;/b&gt; vše zkombinujete do jednoho obrázku &amp;mdash; mozaiky.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/bev-matty-m03.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/bev-matty-m03_t.jpg&#39; alt=&#39;Volba projekce v view_bev.py&#39; title=&#39;Volba projekce v view_bev.py&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/bev-matty-m03.jpg&#39;&gt;Volba projekce v view_bev.py&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jak je mým zvykem, vzal jsem to „zkratkou” tj. když se &lt;i&gt;Elena Ai&lt;/i&gt; ptala na popisy rozlišení, velikost cesty, umístění kamery a způsob kombinace obrázků, tak jsem vždy volil to nejjednodušší variantu.
Šířku cesty jsem odhadl na 2m, i když to asi bylo více, rozlišení pixelu nechal na doporučených 2cm, pozice kamery = pozice robota (to určítě není pravda, obzvláště když se robot kroutí)
a konečně pro skládání novější obrázek přepisuje starý.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co jde z „mozaikových obrázků” vykoukat? No na první pohled se zdá, že Jirka/&lt;i&gt;Cogito team&lt;/i&gt; měl pravdu, že robot jede s bílou čárou po pravé straně, protože v trénovacích datech byla nějaká
silnice s krajnicí &amp;hellip; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; ale chtělo by to &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#260619&#39;&gt;projít celou nahrávku (1.5km/50min)&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/guide/bev/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Tulák po krasu 2026</title>
    <link rel='alternate' href="https://robotika.cz/competitions/robotrip/2026/en"/>
    <id>https://robotika.cz/competitions/robotrip/2026/en</id>
    <updated>2026-06-07T00:00:00Z</updated>
    <author><name>Martin Dlouhý a spol.</name></author>
    <summary type='html'>
        Přijde vám &lt;i&gt;jízda po čáře&lt;/i&gt; jako příliš jednoduchá robotická disciplína? A co venku za každého počasí + místo pár metrů rovnou 2x 1.4km
s otočkou okolo kužele?! Druhý ročník soutěže &lt;b&gt;Tulák po krasu&lt;/b&gt; se bude konat příští &lt;b&gt;neděli 14. června 2026&lt;/b&gt;.
&lt;b&gt;Blog update:&lt;/b&gt; 
8/7/2026 &amp;mdash; &lt;a href=&#39;/competitions/robotrip/2026/en#260708&#39;&gt;Slepý Pat a není Matty jako Matty&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://robotikahrave.cz/tulak/&#39; class=&#39;external&#39;&gt;Oficiální stránky soutěže včetně pravidel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260607&#39;&gt;260607 - Oprašování HW a SW (7 dní)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260608&#39;&gt;260608 - matty-follow-robot.json (6 dní)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260609&#39;&gt;260609 - Bez robota bos (5 dní)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260610&#39;&gt;260610 - Team Lead Matty M01? (4 dny)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260611&#39;&gt;260611 - Robotika v podzemí 2026, Japonci a verze 0?! (3 dny)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260612&#39;&gt;260612 - Prší, prší ... a April Tags (2 dny)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260613&#39;&gt;260613 - Temný les (1 den)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260615&#39;&gt;260615 - Soutěž a výsledky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260616&#39;&gt;260616 - Závěr (Robotika, Pat + 4x Matty)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotrip/2026/en#260708&#39;&gt;260708 - Slepý Pat a není Matty jako Matty&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;

&lt;hr&gt;
&lt;a id=&#34;260607&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. června 2026 - Oprašování HW a SW (7 dní)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem po dlouhé době popojel s &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Patem&lt;/a&gt;. Žádný „trhák” &amp;mdash; 1m tam a 1m zpět. A pak ještě
&lt;i&gt;pat-go-314.json&lt;/i&gt; konfigurace z &lt;a href=&#39;/competitions/robotem-rovne/2024/en&#39;&gt;předlonškého Písku&lt;/a&gt;.&lt;/div&gt;

&lt;pre&gt;Last login: Sat May 10 21:19:14 2025 from 192.168.1.42&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; moc si nevybavuji, proč jsem ho loni pouštěl, resp. možná jsem se pouze přihlásil a něco z něj kopíroval??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale asi by bylo lepší začít od začátku! Letos jsem si vymyslel takovou &lt;i&gt;ptákovinu&lt;/i&gt; a to, že se podívám na
&lt;a href=&#39;https://robotikahrave.cz/tulak/&#39; class=&#39;external&#39;&gt;Tuláka po krasu&lt;/a&gt; a vezmu s sebou všechny svoje roboty, konkrétně už zmiňovaného
velkého čínského &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pata&lt;/a&gt; a čtyři malé &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty&lt;/a&gt; a vedle „společenské
události” by to mohla být sranda je nějak zkoordinovat. Přihlášku jsem poslal před časem a dokonce našel oběť (Georgi)
ochotnou se mnou do Sloupu v Moravském krasu vyrazit (Soutěžní tým:
Je minimálně dvou a maximálně čtyřčlenný). A předevčírem jsem si přečetl znova pravidla a je tam podmínka
na &lt;i&gt;Robota&lt;/i&gt;: &lt;b&gt;všechny jeho části musí být fyzicky spojené&lt;/b&gt;. Hmm, to možná bude komplikace, resp. komplikace
navíc. Psal jsem organizátorům, jak je to tedy pro vícero robotů s vyjetím z cesty? V zásadě mám dvě možnosti:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;všech 5 robotů bude fyzicky spojených (např. provázkem) a pak teprve když vyjedou uplně všichni pokus končí&lt;/li&gt;

&lt;li&gt;rozšířili by pravidla o pozemní multi-roboty a pak vyjetí libovolného znamená konec&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; zatím nevím, co je pro mne lepší volba. Asi to dopadne nastejno &amp;mdash; katastrofou. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;O Patovi jsem se už ventiloval tak také trošku o Mattym. Před více než půl rokem jsme se rozhodli s &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK kamerama&lt;/a&gt;
od Luxonisu přejít z DepthAI verze 2 na verzi 3. A dře to. Hodně. A není nad soutěž se dokopat k dalšímu krůčku
(minulé neúspěchy viz např. &lt;a href=&#39;/articles/oak-d-pro/en#260507&#39;&gt;Vytloukání AI AI&lt;/a&gt;). Problémy jsem měl především s YOLO
modely, k této soutěži tématicky např. detekce kuželu. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; A teď to konečně vypadá, že by to mohlo opravdu fungovat
a je to tedy třeba vše zamergeovat (&lt;a href=&#39;https://github.com/robotika/matty/pull/17&#39; class=&#39;external&#39;&gt;Matty env depthai 3.6.1&lt;/a&gt;,
&lt;a href=&#39;https://github.com/robotika/osgar/pull/1062&#39; class=&#39;external&#39;&gt;OSGAR podpora pro NN archiv&lt;/a&gt;,
&lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/28&#39; class=&#39;external&#39;&gt;OSGAR apps - novější model pro kužely&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co se „strategie” týče, tak neplánuji jet po čáře, ale po cestě (ano, vtipná bude otočka, ale racionálně uvažující
člověk by jí měl zatím ignorovat &amp;hellip; s pěti roboty? ha ha ha). Neuronku jsem převzal od Jirky/Cogito a nechť bezchybně funguje.
Pokud bude kameře zabýrat výhled jiný robot, tak asi méně. A ještě jeden detail, že pro Pata už kameru nemám. Mohl
bych použít nějaké ty &lt;a href=&#39;/articles/security-cameras/en&#39;&gt;bezpečnostní&lt;/a&gt; a třeba by to ani tolik nedrncalo, že by to přežily,
ale &amp;hellip; teď jsou na konci seznamu. Na Patovi je &lt;a href=&#39;/articles/vanjee-lidar/en&#39;&gt;VanJee lidar&lt;/a&gt;, ale ten z Mattyho neuvidí nic.
Lidar je ve výšce 68cm, spodní vrstva kouka 10 stupňů dolů a Matty je cca 25cm vysoký &amp;hellip; no jestli dobře počítám,
tak by ho mohl detekovat ve vzdálenosti 2.5m?? To by možná šlo?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Formaci robotů jsem si nejprve představoval Pat uprostřed a v každém rohu jeden Matty. Nebo šňůra robotů a Pat asi na konci.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě bych mohl znova zkusit &lt;a href=&#39;/articles/pozyx/en&#39;&gt;UWB majáčky&lt;/a&gt;, ale ty moc nefungovaly (tedy abych mohl spolehlivě triangulovat).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě je tam detail &lt;i&gt;synchronizovaného startu&lt;/i&gt; &amp;mdash; je prima, když program začne na uvolnění STOP tlačítka, ale pokud
kamera naběhne různě v jednotlivých robotech (v praxi ověřeno), tak na to nelze spoléhat. Audio? Týden je dlouhá doba,
když nepočítám, že většina jsou pracovní dny &amp;hellip; sigh.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. jeden ze záložních plánu je dat Mattyho na Pata:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-on-pat.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/matty-on-pat_t.jpg&#39; alt=&#39;Matty M04 na Patovi&#39; title=&#39;Matty M04 na Patovi&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-on-pat.jpg&#39;&gt;Matty M04 na Patovi&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260608&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. června 2026 - matty-follow-robot.json (6 dní)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Někdy mne opravdu fascinuje, jak člověk (já) rychle zapomene ty špatné věci, resp. tu „odvrácenou stranu”. Jako chápu, že to tak
příroda zařídila, jinak by nikdo ani nevstal z postele, ale stejně &amp;hellip; &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Skočím tedy zase do posledního &lt;i&gt;dojmu&lt;/i&gt; a pak to vezmu
od začátku. Primární cíl &lt;b&gt;Verze 0&lt;/b&gt; je, aby robot (zde pěti-robot) získal alespoň jeden bod. Asi limitní sestava je, že pouze
první robot pojede po cestě a ostatní ho budou následovat = &lt;i&gt;varianta vláček&lt;/i&gt;. Co kupodivu chybí je kód na „následuj robota
před tebou”. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Úlohu jsem zadal Eleně Ai. Použil jsem Zbyňkovo doporučení nejprve jí nechat vše naplánovat a zapsat do dokumentu, hard-reset a
druhou instanci s čistým kontextem zaúkolovat „implementuj tento plán”. Klasicky prošla kde co leží a přišla se třemi variantami
sledování (platforma Matty, senzor OAK-D Pro kamera):&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;sledování nejbližšího objektu z hloubkových dat&lt;/li&gt;

&lt;li&gt;detekce objektů v barevném obrázku a kombinace s hloubkovými daty&lt;/li&gt;

&lt;li&gt;navigace na LED výstup předešlého robota&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;(založil jsem &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/29&#39; class=&#39;external&#39;&gt;pull request&lt;/a&gt; pokud by někoho zajímaly detaily)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ty LEDky by mne fakt nenapadly, ale inspirovala se &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;DTC&lt;/a&gt;, kde byl denní a noční mód (vlastně i sledování
osob je tam ve dne i v noci pomocí YOLO modelu). Vysvětlil jsem jí, že spěcháme a není čas na trénování detekce druhého robota
a že varianta A vypadá nejlépe a nasbíráme tak i reálná data pro pokročilejší varianty. Hotovo &amp;mdash; kód vyplivnut, je čas na test, resp.
správně by měl být čas na &lt;i&gt;human review&lt;/i&gt;, ale za chvíli bude tma a první co jsem škrtnul byla podpora nočního režimu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nový kód jsem nahrál do M05 (oranžový), trošku se lekl oranžových disco-světel, ale na &lt;i&gt;Emergency STOP&lt;/i&gt; reagoval ukončením
programu, tak ještě test venku (nějaký člověk si tam hrál na robota) &amp;mdash; nebylo to uplně skvělé, ale něco to dělalo. Kdybych si
ale Eleně stěžoval, tak by mi to mohla hodit na hlavu s hláškou: ,, Ale tohle přeci není Robot!!!&#39;&#39;. Vytáhl jsem tedy M03 (červený
&amp;mdash; &lt;a href=&#39;/competitions/dtc/phase2/md-and-matty.jpg&#39;&gt;bloody Matty&lt;/a&gt;) ať dělá návnadu a naviguje se na kužel a oranžový robot ho může v klidu sledovat. A nic. M03 prostě na kužely
dnes večer navigovat nebude a basta! Vytáhl jsem tedy z krabice M04 (růžová Fifinka) a ta poslouchala a chvíli pendlovala mezi
kužely &amp;hellip; jen M05 moc nezaujala a následovat jí nechtěl.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vypadalo to asi takto:  &lt;a href=&#39;https://youtu.be/7kHqVhwrC5I&#39; class=&#39;external&#39;&gt;https://youtu.be/7kHqVhwrC5I&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kde že je ta „odvrácená strana”? V pokoji se už nehnu &amp;mdash; pro roboty není kam šlápnout. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;  Pak ta otrava, že se to chová každý
trošku jinak?! M03 (starší) má i starší kameru, takže by tam byl nějaký problém s DepthAI verze 3?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dále když jsem updateoval všechny tři roboty (3 repositáře a prostředí), tak jsem viděl (3x):&lt;/div&gt;

&lt;pre&gt;Uninstalled 2 packages in 4ms
Installed 1 package in 10ms
 - depthai&lt;tt&gt;3.1.0
 ~ depthai&lt;/tt&gt;3.6.1&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Cože?! Takže ta oslavovaná &lt;b&gt;3.6.1 nebyla na žádném z robotů?!&lt;/b&gt; &amp;hellip; jj, už je to zamergeované, ale můžu si případně &lt;i&gt;git checkout&lt;/i&gt;
předešlý &lt;i&gt;commit&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Také tato hláška mne dostala:
&lt;i&gt;[2026-06-08 19:43:40.123] [depthai] [error] Device with id 1844301091A3BD0800 has crashed. Crash dump logs are stored in: /home/robot/git/osgar-apps/followme/.cache/depthai/crashdumps/40ef12617b276baa7fccf85677e29dcfaaa9bb09/crash_dump_2026-06-08_19_43_40.tar.gz - please report to developers.
[2026-06-08 19:43:40.129] [depthai] [warning] Failed to send crash dump logs to the server.&lt;/i&gt;
&amp;hellip; jako chtějí mi říci, že si pády mého soukromého offline robota někdo posílá na svůj server?! Milé (ironie).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi už jsem se dost vypovídal, tak možná upload toho videa (jen důkaz, že roboti většinou nefungují) a abych nezapomněl, tak jsem na
web hodil i kopii článku od Martina Lockera o tom, jak byl Matty M01 na loňském ročníku &amp;mdash; viz &lt;a href=&#39;/competitions/robotrip/2025/en&#39;&gt;Tulák po krasu 2025&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260609&#34;&gt;&lt;/a&gt;
&lt;h2&gt;9. června 2026 - Bez robota bos (5 dní)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;No nevím, zda jsem dnešní večer dobře investoval, resp. nerad si přiznám, že &lt;i&gt;ani náhodou!&lt;/i&gt; Nechal jsem Elenu, ať udělá analýzu včerejšího
selhaní, přestože důvod byl na první pohled jasný:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 323px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/start-tracking.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/start-tracking_t.jpg&#39; alt=&#39;Na začátku sledování&#39; title=&#39;Na začátku sledování&#39; class=&#39;border&#39;  width=&#39;317&#39; height=&#39;178&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/start-tracking.jpg&#39;&gt;Na začátku sledování&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 323px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/tracking-failure.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/tracking-failure_t.jpg&#39; alt=&#39;Selhání sledování&#39; title=&#39;Selhání sledování&#39; class=&#39;border&#39;  width=&#39;317&#39; height=&#39;178&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/tracking-failure.jpg&#39;&gt;Selhání sledování&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ono je to vlastně vidět i &lt;a href=&#39;https://youtu.be/7kHqVhwrC5I?t=15&#39; class=&#39;external&#39;&gt;na tom videu&lt;/a&gt;, kdy oranžový najede na trávu a přední část kouká nahoru.
Ale Elena mne stejně překvapila a to následující &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/29/changes/0a422bce5f90226dc0ec2bd0130a535ad51d0d30&#39; class=&#39;external&#39;&gt;analýzou&lt;/a&gt;.
Jj, je „trošku” upovídaná. Ve zkratce došla k závěru, že udělala chybu ve znaménku a korekci horizontu z IMU (&lt;i&gt;pitch&lt;/i&gt;) naopak pokazila. Hmm,
to mám mínus body, že jsem si nevšiml, že tam to IMU z kamery rovnou zapojila &amp;mdash; rozmluvil bych jí to.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A tak jsem instruoval další kopii AI, ať připraví &lt;b&gt;PLÁN B&lt;/b&gt;, kdyby ta IMU vracela úplné nesmysly. Musím uznat, že rozdělení do fází: nejprve se
nad dokumentem dohadovat, co bude implementovat a následně (nejlépe čerstvá instance) to vše „bez otázek” implementovat, je funkční scénář. Skoro.
Já totiž vždy na něco zapomenu a jsem líny se do fáze plánování vracet, ale to je můj problém.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Plán B má sledovat 2D objekty přímo v hloubkovém obrazu, ale to jsem jí neřekl, že i ten obraz je fakt mizerný. Ale přidal jsem do plánu i postup
následné analýzy, takže i na té jediné nahrávce je vidět, že přímo to fungovat rozhodně nebude:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/m05_183003_001223_lost.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/m05_183003_001223_lost_t.jpg&#39; alt=&#39;m05_183003_001233_lost.jpg&#39; title=&#39;m05_183003_001233_lost.jpg&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;200&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/m05_183003_001223_lost.jpg&#39;&gt;m05_183003_001233_lost.jpg&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no je to debug image spíše pro stroj než pro člověka, prože mi přijde, že sleduje &lt;a href=&#39;https://www.zahradnictvi-spomysl.cz/blyskavka-fraserova--little-red-robin&#39; class=&#39;external&#39;&gt;blýskavku&lt;/a&gt;
než-li robota. Ten &lt;i&gt;clustering&lt;/i&gt; na zašuměných datech &amp;hellip; TODO.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No a sám bych se měl alespoň podívat, co ta nebohá M03?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/m03-depth.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/m03-depth_t.jpg&#39; alt=&#39;Hloubková data M03&#39; title=&#39;Hloubková data M03&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;200&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/m03-depth.jpg&#39;&gt;Hloubková data M03&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Krása &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260610&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. června 2026 - Team Lead Matty M01? (4 dny)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes to bude hodně stručné: je 21:30, ještě jsem nic neudělal a asi neudělám. Ale vymyslel jsem novou strategii &amp;mdash; není 5 robotů málo? Co přidat ještě „konkurenční tým”
MartinaL s &lt;b&gt;Matty M01&lt;/b&gt;, který bude odladěný tu čáru letos vyhrát, a vézt se jenom v závěsu, tj. všichni &lt;i&gt;Robotika roboti&lt;/i&gt; by jeli &lt;i&gt;follow robot&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Také se chystám &lt;i&gt;Bloody Matty M03&lt;/i&gt; obětovat před &lt;i&gt;Pata&lt;/i&gt;. Má totiž za kamerou ještě starou díru, kam by se dal přidělat plastový válec co mu zvedne výšku o 20cm,
ostatně viz&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/subtchallenge/tunnel-circuit/day1-0476-jirka.jpg&#39;&gt;&lt;img src=&#39;/competitions/subtchallenge/tunnel-circuit/day1-0476-jirka_t.jpg&#39; alt=&#39;Freyja SubT Tunnels&#39; title=&#39;Freyja SubT Tunnels&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;147&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/subtchallenge/tunnel-circuit/day1-0476-jirka.jpg&#39;&gt;Freyja SubT Tunnels&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Místo na reklamu nebo na odrazivou plochu, ale kde ty majáčky z Eurobota 2004 skončily? &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/eurobot/2004/diary/supaero.jpg&#39;&gt;&lt;img src=&#39;/competitions/eurobot/2004/diary/supaero_t.jpg&#39; alt=&#39;Majáčky Eurobot 2004&#39; title=&#39;Majáčky Eurobot 2004&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/eurobot/2004/diary/supaero.jpg&#39;&gt;Majáčky Eurobot 2004&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260611&#34;&gt;&lt;/a&gt;
&lt;h2&gt;11. června 2026 - Robotika v podzemí 2026, Japonci a verze 0?! (3 dny)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem měl dovolenou, resp. jsem se byl podívat na akci &lt;a href=&#39;https://www.ncs40.cz/podzemni-laborator-josef&#39; class=&#39;external&#39;&gt;Robotika v podzemí 2026&lt;/a&gt;. Dozvěděl jsem se o ní (krátce před půnocí)
zhruba před 14ti
dny, kdy do ukončení registrace zbývalo 20 minut. Tak jsem registrační formulář vyplnil dříve, než jsem podrobně nastudoval program, ale nelituji. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Akce se konala ve
&lt;a href=&#39;https://www.stolajosef.cz/&#39; class=&#39;external&#39;&gt;Štole Josef&lt;/a&gt; na kterou nostalgicky vzpomínám z přípravy na &lt;a href=&#39;/competitions/subtchallenge/stix/en&#39;&gt;DARPA Subterranean Challenge 2019&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co mne asi nejvíce zaujalo byla česká firma &lt;a href=&#39;https://first.green/en&#39; class=&#39;external&#39;&gt;First Green&lt;/a&gt; a jejich „hračky”:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/rockeat700.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/rockeat700_t.jpg&#39; alt=&#39;Rockear 700&#39; title=&#39;Rockear 700&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/rockeat700.jpg&#39;&gt;Rockear 700&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/alt-followme.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/alt-followme_t.jpg&#39; alt=&#39;FollowMe konkurence&#39; title=&#39;FollowMe konkurence&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/alt-followme.jpg&#39;&gt;FollowMe konkurence&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/miniz400.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/miniz400_t.jpg&#39; alt=&#39;MiniZ 400 nakladač&#39; title=&#39;MiniZ 400 nakladač&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/miniz400.jpg&#39;&gt;MiniZ 400 nakladač&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I studenstká konference nebyla špatná &amp;mdash; alespoň jsem získal představu, jaká jsou témata pro diplomové práce v dnešní době. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Odpoledne se mi ale už zastesklo po vlastních robotech a tak alespoň večer jsem chvíli testoval &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Japonci?&lt;/b&gt; To je téma &lt;a href=&#39;/competitions/elrob/2024/en#240626&#39;&gt;japonské vesmírné agentury&lt;/a&gt; a rozdělení cílů &amp;mdash; měl jsem to udělat už při prvním zápisu, ale stalé se to počítá aneb je před Akcí.
Definice tří úrovní cílů pro naši &lt;i&gt;Pražskou pětku&lt;/i&gt; nebo &lt;i&gt;Srostlici&lt;/i&gt;:&lt;/div&gt;

&lt;h3&gt;Minimální&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ujet &lt;i&gt;10 metrů&lt;/i&gt; (celá skupina pěti robotů)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Ku spokojenosti&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;překonat &lt;b&gt;Matty M01&lt;/b&gt;/R-team nejlepší pokus z roku 2025 (&lt;i&gt;754 metrů&lt;/i&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Vynikající&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;dosáhnout místa obrátky (&lt;i&gt;1400 metrů&lt;/i&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;OK a kde dnes v noci jsme, necelé 3 dny do soutěže? Sigh. Verze 0!? Asi bych měl zmínit Jirkův komentář ze včerejšího callu: „proč proboha hledaš robota v hloubkových datech
a nepoužijes na identifikaci” &lt;a href=&#39;https://github.com/AprilRobotics/apriltag&#39; class=&#39;external&#39;&gt;AprilTag&lt;/a&gt;?! &amp;hellip; no jó no &amp;hellip; možná zítra (když to prý pošlu mailem, tak mi to do 17h v sousední vesnici vytisknou).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co jsem tedy dnes dělal?
Sbíral data a zkušenosti. Rychlost sledování cesty jsem snížil na 0.2m/s (spěcháte?) a testoval na jedné z mála cestiček, co máme na zahradě.
&lt;b&gt;Poučka 1&lt;/b&gt; (ano samozřejmá) &amp;mdash; &lt;i&gt;sekvence pouštění robotů začíná od posledního!&lt;/i&gt; Jestli se Jirka ptá, zda jsem konečně sklopil
kameru, tak nesklopil, tj. pokud je přední robot hodně blízko, tak přesahuje spodní část obrazu a se vzdáleností se posouvá nahoru. Také jsem (zbaběle) přidal na Mattyho pikslu na tablety
do bazénu &amp;mdash; primární motivace je, aby měl Pat šanci posledního Mattyho vidět, ale ono se to hodí i pro Matty-Matty z hloubkových dat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-with-pat.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/matty-with-pat_t.jpg&#39; alt=&#39;Matty následován Patem&#39; title=&#39;Matty následován Patem&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-with-pat.jpg&#39;&gt;Matty následován Patem&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Video se mi z &lt;i&gt;osgar.tools.lidarview&lt;/i&gt; nepodařilo udělat, tak alespoň jeden screenshot:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-on-scan.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/matty-on-scan_t.jpg&#39; alt=&#39;Matty na VanJee -10deg scanu&#39; title=&#39;Matty na VanJee -10deg scanu&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-on-scan.jpg&#39;&gt;Matty na VanJee -10deg scanu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;a data:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger pat-go-314-260611_173216.log -stream vanjee.scan10 
                                                    -format &#34;{timestamp} {data[900-15:900+15:2]}&#34;
0:00:32.676170 [3470, 3470, 3472, 3477, 3486, 3493, 3499, 3503, 3506, 3511, 3515, 3518, 3515, 3509, 3439]
0:00:32.775786 [3466, 3468, 3471, 3477, 3483, 3489, 3494, 3500, 3506, 3512, 3517, 3522, 3525, 3515, 3422]
0:00:32.877479 [0, 0, 0, 0, 0, 3491, 3494, 3500, 3506, 3512, 3517, 3521, 3523, 3510, 3438]
0:00:32.977487 [1211, 1213, 1214, 1213, 1212, 0, 3499, 3502, 3506, 3509, 3513, 3518, 3519, 3508, 3437]
0:00:33.078093 [1224, 1225, 1224, 1224, 1225, 0, 3499, 3502, 3506, 3511, 3518, 3522, 3524, 3511, 3439]
0:00:33.178936 [1232, 1230, 1225, 1221, 1220, 1223, 0, 3501, 3507, 3514, 3520, 3525, 3526, 3513, 3435]
&amp;hellip;
0:00:39.477243 [2377, 2377, 2377, 2378, 2379, 2381, 2382, 2382, 0, 3512, 3518, 3524, 3527, 3515, 3439]
0:00:39.574522 [2395, 2396, 2397, 2399, 2399, 2398, 2398, 2398, 0, 3517, 3521, 3525, 3525, 3512, 3441]
0:00:39.674839 [2410, 2411, 2413, 2415, 2417, 2420, 2423, 2425, 0, 3512, 3517, 3522, 3525, 3511, 3434]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. je šance ten váleček vidět ve vzdálenosti 1.2m - 2.3m &amp;hellip; už to jen udělat. Dávám si BAN/zákaz na AI, jinak
ani ta triviální funkční verze zítra večer nebude.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260612&#34;&gt;&lt;/a&gt;
&lt;h2&gt;12. června 2026 - Prší, prší &amp;hellip; a April Tags (2 dny)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Venku stále prší a tak zkouším ty &lt;b&gt;AprilTag&lt;/b&gt;. Nevím, kdy jsem ten dotaz &lt;i&gt;can you give me a quick intro into AprilTags?&lt;/i&gt; položil
a zákaz AI tedy rovnou porušil, ale těch pár odstavečků dávalo smysl a link na &lt;a href=&#39;https://chaitanyantr.github.io/apriltag.html&#39; class=&#39;external&#39;&gt;generování April Tagů do PDFka&lt;/a&gt;
jsem použil a trošku „naslepo” nechal vytisknout pár vzorů &lt;b&gt;tag25h9&lt;/b&gt; a &lt;b&gt;tag16h5&lt;/b&gt;. Příklad kódu ale používal &lt;a href=&#39;https://pypi.org/project/pupil-apriltags/&#39; class=&#39;external&#39;&gt;pupil-apriltags&lt;/a&gt;
a tím se zase spustila &lt;i&gt;lavina&lt;/i&gt;. Domácí odkaz je na &lt;a href=&#39;https://github.com/pupil-labs/apriltags&#39; class=&#39;external&#39;&gt;github pupil-labs&lt;/a&gt;, kde je info, ze je to fork z
&lt;a href=&#39;https://github.com/duckietown/apriltags3-py&#39; class=&#39;external&#39;&gt;duckietown/apriltags3-py&lt;/a&gt; a &lt;i&gt;THIS REPOSITORY IS NO LONGER SUPPORTED&lt;/i&gt; a alternativa je
&lt;a href=&#39;https://github.com/duckietown/lib-dt-apriltags&#39; class=&#39;external&#39;&gt;duckietown/lib-dt-apriltags&lt;/a&gt;. A ještě originál všeho &lt;a href=&#39;https://pypi.org/project/apriltag/&#39; class=&#39;external&#39;&gt;apriltag 0.0.16&lt;/a&gt; byl
&lt;i&gt;Released: Dec 7, 2018&lt;/i&gt;. Někdy tou dobou mi začalo docházet, že tímto „peklem” už jsme si jednou prošli a hle &lt;a href=&#39;/articles/reviews/apriltag/en&#39;&gt;poznámky na robotice&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vlastně jsem ještě přeskočil krok 0, kdy jsme se na callu bavili, že &lt;a href=&#39;https://docs.luxonis.com/software-v3/depthai/depthai-components/nodes/april_tag&#39; class=&#39;external&#39;&gt;OAK April Tag přímo podporuje&lt;/a&gt;!
Ale při detailnějším čtení člověk zjisti, že &lt;i&gt;RVC2
On the RVC2 devices, the AprilTag node runs on the host computer, so the performance will be limited by the host CPU.&lt;/i&gt;. Takže nic, resp. je jistější to udělat na PC „po staru”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zpět k poznámkám &amp;mdash; pro OpenCV 4.1.1 tam funcionalita přímo byla, tak snad jí neodstranili! (mimochodem v té době jsem si psal datumy bez roku, jak naivní!) Teď mám OpenCV 4-7.0 a API
se trošku změnilo (ale kvalita dokumentace nikoliv). Nebudu tu AI pouštět, aby mne vrhla zase do úplně jiného bazénu &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A hle &lt;a href=&#39;https://stackoverflow.com/questions/74964527/attributeerror-module-cv2-aruco-has-no-attribute-dictionary-get&#39; class=&#39;external&#39;&gt;trosky stackoverflow&lt;/a&gt; stále obsahují přesně to co pozoruji:
&lt;i&gt;API changed for 4.7.x, Now you need to instantiate ArucoDetector object.&lt;/i&gt; Po drobných úpravách toto funguje:&lt;/div&gt;

&lt;pre&gt;import cv2
im = cv2.imread(&#34;april-tags.jpg&#34;, 0)
dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_APRILTAG_25h9)
parameters =  cv2.aruco.DetectorParameters()
detector = cv2.aruco.ArucoDetector(dictionary, parameters)
markerCorners, markerIds, rejectedCandidates = detector.detectMarkers(im)
print(markerCorners, markerIds)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;s výsledkem 4x rohy a IDs (bohužel náš &lt;i&gt;markdown&lt;/i&gt; dump výstupu „pársuje”, takže ho zase odmazávám a později možná přidám obrázky.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/april-tags.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/april-tags_t.jpg&#39; alt=&#39;testovací obrázek&#39; title=&#39;testovací obrázek&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/april-tags.jpg&#39;&gt;testovací obrázek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;a ještě pro mne &lt;a href=&#39;/competitions/robotrip/2026/apriltags-3pages.pdf&#39;&gt;apriltags-3pages.pdf&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260613&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. června 2026 - Temný les (1 den)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tento zápis je zpětně (a krátký), protože čekám, než se dobijí baterky &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V sobotu jsme dorazili po desáté hodině, ale vedle organizátorů tu moc týmů na testování nebylo. Střídavě pršelo, svítilo sluníčko, teplo, studeno, ale v zásadě OK
počasí (no na déšť připravený nejsme). Tentokrát ani nemůžu odkazovat na github, protože vše mám stále lokálně bez internetu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dopoledne jsem rozchozoval AprilTags &amp;mdash; nakonec používáme
ty &lt;b&gt;25h9&lt;/b&gt;. Vzdálenost jenom odhaduji z velikosti diagonály a vypadalo to OK. 1 metr mezi roboty mi přišlo moc, takže jsem nastavil 0.5m. Rychlosti maximální (0.5m/s)
a u prvního robota snížena na 0.4m/s, aby ho následníci měli šanci dohnat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;U Pata jsem nakonec použil klasické prastaré &lt;i&gt;followme&lt;/i&gt;, jenom viděl v zadu sám sebe, a tak jsem celý kód zkopiroval a upravoval v &lt;i&gt;osgar-apps&lt;/i&gt;. Mám to vše na jedné hromadě (git branch),
a akceptuji pouze data +/- 45 stupňů. Kousek to popojelo za M03, ale na další testy už nedošlo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;K večeru jsme vypustili všechny čtyři Matty roboty na trasu a s pěknou simulací „zácpy na dálnici” (video snad najdu později) dojeli až k lesu &amp;hellip; a tam se „vláček” rozpadl. :-(
Detekce cesty fungovala na M02 krásně &amp;mdash; pořadí M02, M04, M05, M03 &amp;hellip; (někdy Pat, tato jízda byla bez Pata), ale přišel &lt;b&gt;Temný les&lt;/b&gt; a začala selhávat detekce AprilTagů! No jo no.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A kouzelné řešení, jehož autor je GG, bude mít pokračování až „zítra”.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260615&#34;&gt;&lt;/a&gt;
&lt;h2&gt;15. června 2026 - Soutěž a výsledky&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Neděle začala poměrně brzy, konkrétně v 6h ráno, když nastoupili borci lesáci a pokračovali v kácení bukového lesa za barákem.
Já stejně raději programuji po ránu, takže ideál. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Úkol byl jasný &amp;mdash; implementace Georgiho poměrné prosté myšlenky: „Pokud nevidíš žádný AprilTag naviguj po cestě, jinak se drž AprilTagu v dané vzdálenosti”.
Vytvořil jsem teď novou větev &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30&#39; class=&#39;external&#39;&gt;feature/tulak-po-krasu-2026&lt;/a&gt;, kam jsem dal pouze commity ze soboty a neděle.
Trošku &lt;i&gt;Cimrmanovsky&lt;/i&gt; bych řekl: „A nebyla to právě AI/Elena, která nám ukázala &#34;tudy ne přátelé&#34;”?! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; prostě jsem rád, že jsem měl klid a žádný internet &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, když půjdu zpětně po &lt;i&gt;commitech&lt;/i&gt; (ten &lt;i&gt;rebase&lt;/i&gt; to všechno rozbil, takže datumy dávají smysl pouze v &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/29/commits&#39; class=&#39;external&#39;&gt;opuštěné větvi&lt;/a&gt;).
Založil jsem (jj, &lt;i&gt;copy and paste&lt;/i&gt;) novou konfiguraci &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes#diff-039d38315bc9ad681fd75e76e6d7d959ff221cb03a333a0ad4a0af908df6efcf&#39; class=&#39;external&#39;&gt;matty-tulak.json&lt;/a&gt;,
což byla kopie &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes#diff-7a89c09e4d55e10830a62d4987fa96f5af83db19def60533e1451310d69438ca&#39; class=&#39;external&#39;&gt;matty-follow-apriltag.json&lt;/a&gt; a
&lt;a href=&#39;https://github.com/robotika/osgar-apps/blob/master/robotem-rovne/config/matty-redroad.json&#39; class=&#39;external&#39;&gt;matty-redroad.json&lt;/a&gt; &amp;mdash; to bylo celkem triviální.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak jsem vytvořil &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes#diff-45834c57c56b3e250d6f387738f4eae305550567070a518d6a31dcb3880fa88d&#39; class=&#39;external&#39;&gt;tulak.py&lt;/a&gt; (jj, zase kopie, až se stydím)
a nahradil jednu řádku zastavení pomocí přepnutí na navigaci po cestě (viz &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes/dd15508c76b1b0d3bb6bfbf2122fd055980773b4&#39; class=&#39;external&#39;&gt;mixovací commit&lt;/a&gt;).
A hotovo, resp. připraveno na test.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nefungovalo to. Asi očekávané, jen ten důvod jsem nečekal. On totiž Matty na požadované rozestupové vzdálenosti ten AprilTag už téměř nevídí! Už zase slyším MartinaL: „proč máš tu kameru nahoru,
když to má jet po cestě!” &amp;hellip; no prostě mi ty záběry přijdou zajímavější, ale ano uznávám, že to má i svě slabiny:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-closeup.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/matty-closeup_t.jpg&#39; alt=&#39;Matty rozestup&#39; title=&#39;Matty rozestup&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/matty-closeup.jpg&#39;&gt;Matty rozestup&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No minimálně to trošku vysvětlovalo to cukání ze soboty, protože při dosažení tagu, nebo jeho ztrátě, zastavi. A ano &lt;i&gt;regulace&lt;/i&gt; max_speed, stop, max_speed, stop, &amp;hellip; není úplně to pravé.
To, co v sobotu zastavovalo, ale v neděli přeplo na „naviguj po cestě” a jelikož na větev &lt;a href=&#39;https://github.com/robotika/osgar-apps/compare/master...feature/safe-redroad&#39; class=&#39;external&#39;&gt;feature/safe-redroad&lt;/a&gt;
jsem trošku pozapomněl, tak Matty překážky moc neřešil a opakovaně do robota před sebou narážel &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Fix byl jednoduchý &amp;mdash; zvednout požadovanou &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes/64ae7661346517564fdda129532c60dc3abc37ed&#39; class=&#39;external&#39;&gt;vzdálenost mezi roboty na 0.8m&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No a co s Patem? V sobotu jsem &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes/38f3f9ccbaba179eb5fd6c807d0f4fd9a68f7ed3&#39; class=&#39;external&#39;&gt;zvedl rychlost na 0.6m/s a rozmezí vzdáleností na 1.5m až 3m&lt;/a&gt;,
ale neotestoval jsem to. Commity pomalu dochází, takže s tímto stavem jsme „soutěžili”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První start byl dost katastrofální &amp;mdash; ono když člověk pouští 5 robotů a do toho se je snaží natáčet mobilem a vzadu ten velký dělá neplechu a je třeba přes vysílačku ho zastavit &amp;hellip; málo rukou nebo
používat DARPA e-stop. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Takže poučení &amp;mdash; místo startování robotů od posledního je teď třeba startovat od prvního!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co se mi na nové variantě líbilo nejvíce je fakt, že &lt;b&gt;všichni&lt;/b&gt; roboti, tedy až na jednoho, měli stejný kód a vlastně bylo jedno v jakém pořadí je poskládáme na cestu. Skoro. Patologický
Pat by je všechny rozdrtil na plastové šlupky (fakticky to udělal 2x), takže červený Matty M03 s válcem mu jediný mohl odolat &amp;hellip; takže úplně náhodné pořadí to nebylo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V prvním kole nám dali organizátoři 7.7m &amp;mdash; jako už nevím, jak se to počítalo, ale asi jsme ztratili Pata a čtyři Mattýskové se vesele vydali na výlet &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 556px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/results.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/results_t.jpg&#39; alt=&#39;oficiální výsledky &#39; title=&#39;oficiální výsledky &#39; class=&#39;border&#39;  width=&#39;550&#39; height=&#39;327&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/results.jpg&#39;&gt;oficiální výsledky &lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; a dojeli až na otočku a pokračovali by dál, kdybychom je nezastavili. Jako ta asfaltová cesta je na detekci fakt luxusní! A &lt;i&gt;Red Road&lt;/i&gt; model už jí loni viděl skrz Matty M01 kameru. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
Pokus se nepočítal (nejelo všech 5 robotů), ale mne během procházky došlo, kde je zakopaný pes. Pat se chvíli celkem držel, ale postupně ztrácel až mu Matty M03 s válcem ujel ze zorného
pole spodního lidaru. Proč? Nuže viz &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30/changes/bb8813c88b3e75f723c6abf0d8a798f812e8c887&#39; class=&#39;external&#39;&gt;poslední commit&lt;/a&gt;. Pokud si vzpomenete na
&lt;a href=&#39;/robots/pat-a-mat/en#240407&#39;&gt;Killer Application&lt;/a&gt; před dvěma lety, tak od té doby je defaultni SW limit na Patovi nastaven na 0.5m/s. To je ale zároveň maximální rychlost Mattyho &amp;hellip; a pokud
někdy Pat zpomalí, tak už je nedožene. Oprava je tedy lehce posunout tento limit výše &amp;mdash; dal jsem 0.7m, ale platilo to co je v aplikaci, tedy limit zůstal na 0.6m &amp;hellip; hmm, když o tom přemýšlím
možná toto byla také chyba. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A novou opravou jsme se vraceli od otočky, ale &amp;hellip; proti nám jeli soutěžící roboti a uhnout z cesty 5x není až tak triviální. Pat jednou sejmul Mattyho trojku, ale sepnul bezpečnostní nárazník
na Patovi a ten už odmítal jakýkoliv další pohyb (ať už z počítače nebo z dálkového ovladače). Reboot.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další problém byla výdrž baterek &amp;mdash; přeci jenom malí roboti jeli cca hodinu tam, chvíli postávali před startem, o něco delší chvíli čekali s Georgim na točně, než „si skočím pro notebook”
(2x 1.4km) a pak ještě cesta zpět. Bloody Matty to nedal &amp;mdash; hlídání baterky začalo pípat v „temném lese” (tj. skoro doma) a z mírného kopečka dokonce přestalo. Teď už vím, že je to poslední
stadium před smrtí! Měl jsem za to, že Odroid (řídící počítač) skončí na 15V (v manuálu je 15V-20V, myslím), ale MartinL mne ujistil, že to poběží i na 12V! Tak jsem se dozvěděl/naučil
něco nového. A pak byla baterka už tak vybitá, že ani pípák nechtěl pípat. A následně, co ho Pat odvezl na základnu, už baterka nešla slušně nabít. Ale nešlušné triky (trošku jako elektrický
šok) zafungovaly.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tolik první výlet. Pak dvě hodiny nabíjeni všech PC baterek a druhý, pro nás závěrečný, pokus. Chtěl jsem si ho natočit = chyba, sorry Jirko, možná to video z odhozeného mobilu někam
dám skrytě. V každém případě tady už Patův nárazník nesepnul a už jednou otlučeného a vybitého Mattýska Pat přejel. Viditelné je to na ulomeném nárazníku &amp;mdash; na rengenu ještě nebyl.
Přiznám se, že jsem se trošku přestal ovládat a start asi 3x zopakoval. Prostě největši slabina byla, aby se Pat spravně chytil/detekoval M03 a pak už to jelo OK. Nakonec to OK vydrželo 460m,
po průjezdu „temným lesem”, kdy LIDAR asi zmátlo slunce nebo nějaké odrazy od konkurence (&lt;i&gt;TODO analyze later&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Podle &lt;i&gt;japonského hodnocení&lt;/i&gt; byl &lt;b&gt;minimální cíl dosažen&lt;/b&gt; (všech 5 robotů ujelo 10 metrů). Oficiálně sice &lt;i&gt;Ku spokojenosti&lt;/i&gt; chybělo ještě 754-460=294 metrů, ale tím že 4 roboti
dali &lt;i&gt;Vynikající&lt;/i&gt; (1400 metrů), tak &lt;b&gt;celkově úspěch&lt;/b&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. alespoň jedno &lt;a href=&#39;https://youtu.be/vjtGghXV_oc&#39; class=&#39;external&#39;&gt;video ze soboty (4x Matty testování)&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 &amp;hellip; a ještě přeběžně &lt;a href=&#39;https://www.youtube.com/watch?v=vjtGghXV_oc&amp;amp;list=PL2gPpyBs1e21Gyvnb9dIHoTBSMVSpQf3Y&#39; class=&#39;external&#39;&gt;celý playlist&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260616&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. června 2026 - Závěr (Robotika, Pat + 4x Matty)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera v noci už jsem neměl sil to nějak uzavřít a teprve ráno jsem uploadoval různá videa, tak ještě shrnující „odstaveček”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Za mne to bylo super! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Takže nejprve velké díky organizátorům &amp;mdash; Tomášům:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 394px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/tomas-and-tomas.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/tomas-and-tomas_t.jpg&#39; alt=&#39;Organizátoři T+T&#39; title=&#39;Organizátoři T+T&#39; class=&#39;border&#39;  width=&#39;388&#39; height=&#39;303&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/tomas-and-tomas.jpg&#39;&gt;Organizátoři T+T&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Přiznám se, že mé cíle byly trochu jiné, než většiny soutěžících, aneb by to mohla být odpověď na otázku: „proč to proboha řešíte takto složitě?!”. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Částečně jsem si soutěžil &lt;i&gt;sám se sebou&lt;/i&gt;,
ale („Milanův”) &lt;i&gt;Robotický cirkus&lt;/i&gt; snad pobavil a nikdo se na nás nezlobil. &lt;b&gt;Win-Win&lt;/b&gt; Hybridní skupina pěti nezávislých autonomních robotů byl asi můj další milník &amp;mdash; ano, klasicky to skončilo
na ořezané &lt;i&gt;Verzi 0&lt;/i&gt;, která nefungovala ani před odjezdem na soutěž! Ale nakonec to jelo, skupina se chovala relativně rozumně a vytáhli jsme i osamoceného &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pata&lt;/a&gt;,
aby mu po letech nebylo tak smutno.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kam dál? Ta formace může být daleko zajímavější, roboti mohou spolu komunikovat, střídat se ve vedení „pelotonu”, kroužit kolem Pata, jezdit pozpátku, vyhýbat se překážkám, používat „čáru
jako zeď”, najíždet na Pata a nechat se vozit, zvednout rychlost Pata na 2.5m/s, nechat Pata řídit vícero Mattýskama na palubě &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další úroveň je &lt;b&gt;modrá značka&lt;/b&gt; vedoucí lesem:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 601px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/robotrip/2026/blue-marker.jpg&#39; alt=&#39;Alternativní lesní cesta - modrá značka&#39; title=&#39;Alternativní lesní cesta - modrá značka&#39; class=&#39;border&#39;  width=&#39;595&#39; height=&#39;476&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Alternativní lesní cesta - modrá značka&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&amp;hellip; je možné jezdit okruh, pouze terén &amp;hellip; Letos tam bylo dost bahno a třeba Matty by asi i klidně celý skončil po kameru v bahně, tak jsem ho tam zbaběle nepustil. I organizátoři to mají
jako potenciální další variantu soutěže, tak uvidíme v roce 2027.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak je tu stále &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en&#39;&gt;Robotour Marathon 5km&lt;/a&gt;, který by se dal na &lt;a href=&#39;https://robotikahrave.cz/2024/07/novy-roboticky-polygon/&#39; class=&#39;external&#39;&gt;robotickém polygonu&lt;/a&gt; realizovat.
Během soutěžního dne na daný úsek cyklistické stezky byl zákaz vjezdu aut, takže VRU (&lt;i&gt;vulnerables&lt;/i&gt;) jsou pouze cyklisti, chodci a bruslaři. Pro vyšší rychlosti by bylo na místě rozchodit
detekci a vyhybání se překážkám (nebo alespoň kolizím).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Což mi připomíná ještě &lt;a href=&#39;/competitions/istrobot/2004/en&#39;&gt;starého Istrobota&lt;/a&gt;, kde úlohu &lt;i&gt;Stopár&lt;/i&gt; každoročně zesložiťovali. Místo tunelu je na trase „temný les”, tak možná někdy budou překážky,
které neuhnou &amp;hellip; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě jenou díky a přídávám ještě odkaz na &lt;a href=&#39;https://robotikahrave.cz/2026/06/tulak-po-krasu-2026/&#39; class=&#39;external&#39;&gt;oficiální reportáž JedoBotů&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260708&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. července 2026 - Slepý Pat a není Matty jako Matty&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Původně jsem myslel, že zde ještě přibudou další příspěvky konkurenčních týmů, ale v danou chvíli to zní nepravděpodobně. Tak ještě jednou připomenu
&lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#260616&#39;&gt;Unidroids vítěznou jízdu&lt;/a&gt;!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Za sebe jsem trošku zkoumal logy a uklízel &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/30&#39; class=&#39;external&#39;&gt;pull request&lt;/a&gt;. Jedna z otázek například byla, zda roboti někdy viděli více jak
jeden &lt;i&gt;AprilTag&lt;/i&gt;? A ano odpověď byla, že chvílema viděli i 3 tagy!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/detected3tags.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/detected3tags_t.jpg&#39; alt=&#39;3x AprilTag&#39; title=&#39;3x AprilTag&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/detected3tags.jpg&#39;&gt;3x AprilTag&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další byl &lt;i&gt;hack&lt;/i&gt;, že pokud vidím alespoň jeden &lt;i&gt;AprilTag&lt;/i&gt;, tak naviguji na první detekovaný, jestli to někdy bylo špatné rozhodnutí? (ano, lenost to pořešit) &amp;hellip; a bylo:&lt;/div&gt;

&lt;pre&gt;0:17:26.797315 [1.2738802853424471, 0.009094801649064201], [3.8269467486030613, 0.06303638384351394]
0:17:26.896863 [1.2612156249080342, 0.006585890849322352]
0:17:26.997080 [1.2673802962951644, 0.009094801649064201], [3.785101005175049, 0.0655452946432558]
0:17:27.099002 [3.7258743526102713, 0.0650748738683042], [1.2677473241080792, 0.006899504699290083]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj. chvilku to navigovalo na ten 3.7m vzdáleny tag. A také musím uznat, že oprava od &lt;i&gt;Eleny Ai&lt;/i&gt; je celkem elegantní:&lt;/div&gt;

&lt;pre&gt;dist, angle = min(data, key=lambda x: x[0])&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Tak to bylo jenom zahřívací kolo &amp;hellip;&lt;/div&gt;

&lt;h3&gt;Slepý Pat&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Na co jsem byl samozřejmě nejvíce zvědavý byl důvod, proč se nám vláček po cca 300 metrech rozpadl. Chtělo by to video z &lt;i&gt;osgar.tools.lidarview&lt;/i&gt; &amp;hellip; ale ono to nefunguje. :-(
Hmm, tak oprava &amp;hellip; ono to funguje, &lt;b&gt;ale ...&lt;/b&gt; je třeba nastavit rozměry okna, které odpovídají rozlišení výstupního videa!!!&lt;/div&gt;

&lt;pre&gt;AssertionError: ((1080, 1920), (1016, 1848, 3))&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ten &lt;i&gt;assert&lt;/i&gt; si tam nechám! Tak jo, už umím udělat video, ale vzhledem k pokročilé hodině psaní odložím na zítra.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;O den později &amp;mdash; je to &lt;a href=&#39;https://github.com/robotika/osgar/pull/1075&#39; class=&#39;external&#39;&gt;opravené&lt;/a&gt; (resp. ve fázi opravy, hmm testy selhaly) &amp;hellip; a mám 8 minut do &lt;i&gt;callu&lt;/i&gt;, tak to zase nedám. V každém případě
&lt;a href=&#39;https://youtu.be/WT8SNVGiUTU&#39; class=&#39;external&#39;&gt;zde&lt;/a&gt; je slibované video.&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;583&#34; height=&#34;251&#34; src=&#34;https://www.youtube.com/embed/WT8SNVGiUTU&#34; title=&#34;Tulak po krasu 2026 - Pat&amp;#39;s LIDAR data&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Je tam pár detailů hodných pozornosti:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;hladká cesta je dobře rozeznatelná od okolí&lt;/li&gt;

&lt;li&gt;na začátku je pěkně vidět zábradlí mostu, kde se oba skeny (vodorovný i ten 10 stupňů dolu) potkávají&lt;/li&gt;

&lt;li&gt;před lesem je pěkně vidět rozšíření silnice o místo na vyhýbání se&lt;/li&gt;

&lt;li&gt;v lese pak jednak svah nahoru vlevo, mizející sken vpravo (svah dolu) a rozpoznatelné stromy&lt;/li&gt;

&lt;li&gt;v závěru robot v protisměru, kdy VanJee asi přenastavil citlivost a ztratil tak Mattyho z hledáčku&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Není Matty jako Matty&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;No teď už jsou pryč další dva dny(!) a rád bych to ukončil, takže klasické poučení i ty „slavné” příspěvky si rozděl &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ale na druhou stranu tento byl zrovna důvod, proč jsem se to rozhodl sepisovat. Hrál jsem si chvíli s BEV &amp;mdash; v práci to ostatní dělají pořád
tak proč bych si to nezkusil i já? &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je to zkratka za &lt;i&gt;Bird&#39;s Eye View&lt;/i&gt; a to znamená pohled shora. No a jelikož na Tulákovi byla úplně luxusní asfaltová
cesta, tak by měla jít poskládat z mozaiky na základě pohledu z přední kamery robota. Nebo se pletu?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Už klasicky jsem poprosil Elenu (ať se pořád nenudí), ať udělá malý interaktivní nástroj &amp;mdash; to ona ráda. Vstup je obrázek na disku a výstup je pak pohled shora.
A to by nebyla Elena, aby k tomu nepřidala spousta šoupátek, load/save konfigurace a pod. Ale to jádro, které bych musel jinak hledat a dostudovat jsou 2 řádky:&lt;/div&gt;

&lt;pre&gt;# Calculate homography matrix and warp
M = cv2.getPerspectiveTransform(pts_src, pts_dst)
bev_img = cv2.warpPerspective(img, M, (bev_w, bev_h))&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Prostě ze čtyř (x,y) bodů v prvním obrázku a čtyř (x,y) bodů v cílovém obrázku spočítá transformační matici a pak ji prostě aplikuje. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Detaily jsou případně na &lt;a href=&#39;https://github.com/robotika/osgar-apps/commit/cb5d01858cfee1b148dce6282b4e8dcfa5055348&#39; class=&#39;external&#39;&gt;GitHubu&lt;/a&gt;. Ale ke druhému kroku jsem se už nedostal, protože i
ten první mi přišel totálně nepoužitelný. Důvodem je, že s vyjímkou M02 (GG pokud to čteš, tak mne data z robota zajímají &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;) všichni ostatní vidí jednoho a více robotů před sebou
a to případnou pěknou mozaiku hodně rozbije. Musel jsem se i AI ptát proč to vypadá tak šíleně a důvod byla třeba kamera robota přede mnou roztažená na 3/4 „ptačího pohledu”. Ale když
jsem si vybral skulinu, kde skoro viděl jenom cestu, tak to bylo OK. Skoro OK.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No asi mne to tak šokovalo, že jsem si neudělal žádnou dokumentaci &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; tak teď nějaké nové screenshoty &amp;hellip;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/bev-matty-m03.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/bev-matty-m03_t.jpg&#39; alt=&#39;BEV pro M03 vzadu&#39; title=&#39;BEV pro M03 vzadu&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/bev-matty-m03.jpg&#39;&gt;BEV pro M03 vzadu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/bev-matty-m04.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/bev-matty-m04_t.jpg&#39; alt=&#39;BEV pro M04 vpředu&#39; title=&#39;BEV pro M04 vpředu&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/bev-matty-m04.jpg&#39;&gt;BEV pro M04 vpředu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pokud to není z obrázků jasné, tak doplním info, že M03 měl kameru více dolu a M04 nahoru. A to mi tam MartinL udělal zoubky, abych mohl všechny roboty nastavit stejně! Ale asi když
jsem si hrál s M03 a detekcí cesty, tak mi přišlo, že kouká moc nahoru (původní nastavení z &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;DTC2 Systems&lt;/a&gt;, aby viděl lidi) a trošku to sklopil dolu
a zapomenul &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je to prý vidět i z té matice &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;cat bev.json
{
    &#34;top_y&#34;: 857,
    &#34;bottom_y&#34;: 885,
    &#34;top_width&#34;: 400,
    &#34;bottom_width&#34;: 707,
    &#34;offset_x&#34;: 986,
    &#34;show_grid&#34;: 1,
    &#34;bev_width&#34;: 400,
    &#34;bev_height&#34;: 600,
    &#34;matrix_M&#34;: [
        [
            -0.04450251352363365,
            -0.24317444889699785,
            243.3794783343032
        ],
        [
            0.0,
            -1.6845547756949022,
            1443.6634427705312
        ],
        [
            -4.640868235845023e-19,
            -0.0012189195433433444,
            1.0
        ]
    ]
}&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;vs.&lt;/div&gt;

&lt;pre&gt;m03
&#34;matrix_M&#34;: [
        [
            -0.06679355486718928,
            -0.28794196341906053,
            263.6218126725021
        ],
        [
            -6.579099405186112e-17,
            -1.2942934071591932,
            973.3086421837133
        ],
        [
            -8.07320644968878e-20,
            -0.0014433181123762412,
            1.0
        ]
    ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; přesněji -0.0012189 vs. -0.0014433. Pokud to zkombinujete s FOV (&lt;i&gt;field of view&lt;/i&gt;) kamery, tak dostanete náklon. Ale ty AI řeči už jsem asi zavřel.&lt;/div&gt;

&lt;h3&gt;p.s. Mozaika&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; aneb s jídlem roste chuť. Když už umí udělat jeden obrázek, tak proč jich z logu nevysekat více (třeba po 0.5m) a proč to podle odhadu z odometrie neposkládat?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 156px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-30m-50m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/mosaic-30m-50m_t.jpg&#39; alt=&#39;Mozaika 30-50m&#39; title=&#39;Mozaika 30-50m&#39; class=&#39;border&#39;  width=&#39;150&#39; height=&#39;395&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-30m-50m.jpg&#39;&gt;Mozaika 30-50m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 185px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-50m-100m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/mosaic-50m-100m_t.jpg&#39; alt=&#39;Mozaika 50-100m&#39; title=&#39;Mozaika 50-100m&#39; class=&#39;border&#39;  width=&#39;179&#39; height=&#39;413&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-50m-100m.jpg&#39;&gt;Mozaika 50-100m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 359px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-100m-200m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotrip/2026/mosaic-100m-200m_t.jpg&#39; alt=&#39;Mozaika 100-200m&#39; title=&#39;Mozaika 100-200m&#39; class=&#39;border&#39;  width=&#39;353&#39; height=&#39;441&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotrip/2026/mosaic-100m-200m.jpg&#39;&gt;Mozaika 100-200m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Pokud máte nějaké doplňující informace či komentáře
&lt;a href=&#39;/competitions/robotrip/2026/en#email&#39;&gt;napište nám&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>OAK-D Pro</title>
    <link rel='alternate' href="https://robotika.cz/articles/oak-d-pro/en"/>
    <id>https://robotika.cz/articles/oak-d-pro/en</id>
    <updated>2022-03-22T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Co když zkombinujete stereo-kameru s malým počítačem s podporou pro výpočet
neuronek? Přidáte-li možnost nasvícení scény a vše to zabalíte do malé krabičky
tak dostanete OAK-D od firmy Luxonis. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Ale to rozhodně není vše &amp;hellip;
&lt;b&gt;Blog update:&lt;/b&gt; 7/5/2026 &amp;mdash; &lt;a href=&#39;/articles/oak-d-pro/en#260507&#39;&gt;Vytloukání AI AI (dříve klínu klínem)&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/oak-d-pro.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/oak-d-pro_t.jpg&#39; alt=&#39;OAK-D Pro (převzato z webu Luxonis)&#39; title=&#39;OAK-D Pro (převzato z webu Luxonis)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;208&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/oak-d-pro.jpg&#39;&gt;OAK-D Pro (převzato z webu Luxonis)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://shop.luxonis.com/products/oak-d-pro&#39; class=&#39;external&#39;&gt;https://shop.luxonis.com/products/oak-d-pro&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/projects/hardware/en/latest/&#39; class=&#39;external&#39;&gt;DepthAI Hardware Documentation&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/projects/hardware/en/latest/pages/DM9098pro.html&#39; class=&#39;external&#39;&gt;OAK-D Pro doc&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/en/latest/&#39; class=&#39;external&#39;&gt;DepthAI’s Documentation&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/en/latest/pages/tutorials/first_steps/#first-steps-with-depthai&#39; class=&#39;external&#39;&gt;First steps with DepthAI&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://github.com/luxonis&#39; class=&#39;external&#39;&gt;GitHub Luxonis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#220322&#39;&gt;220322 - Měsíc čekání&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#220325&#39;&gt;220325 - Druhý krok&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#220328&#39;&gt;220328 - Standalone mode&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#220329&#39;&gt;220329 - IMU a SLAM&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#220907&#39;&gt;220907 - FollowMe a USB kabel (Jirka)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#221008&#39;&gt;221008 - SLAM na 6 řádek&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#240122&#39;&gt;240122 - OSGAR driver&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#240210&#39;&gt;240210 - Two Towers&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#240226&#39;&gt;240226 - Staronoví manažeři a přehrávání videa&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#240304&#39;&gt;240304 - Detekce kuželu pomocí YoloV7&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#240316&#39;&gt;240316 - Software syncing&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#240318&#39;&gt;240318 - Debugging DepthAI pipeline&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#250511&#39;&gt;250511 - 13 šlupek (SHAVES) - Custom model v OAK-D&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/oak-d-pro/en#260507&#39;&gt;260507 - Vytloukání AI AI (dříve klínu klínem)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;
&lt;a id=&#34;220322&#34;&gt;&lt;/a&gt;
&lt;h2&gt;22. březen 2022 &amp;mdash; Měsíc čekání&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jak začít? O &lt;b&gt;OAK-D&lt;/b&gt; jsem poprvé slyšel od týmu &lt;a href=&#39;https://youtu.be/GmdJeHWqzmc?t=5450&#39; class=&#39;external&#39;&gt;Sĺňava (Robotour 2021)&lt;/a&gt;.
Pak jsem se cca před měsícem dozvěděl o existenci firmy &lt;a href=&#39;https://www.luxonis.com/&#39; class=&#39;external&#39;&gt;Luxonis&lt;/a&gt; a rozhodl si udělat představu
„z první ruky”. Doporučení jsem dostal na novou kameru &lt;a href=&#39;https://shop.luxonis.com/products/oak-d-pro&#39; class=&#39;external&#39;&gt;OAK-D Pro&lt;/a&gt;, která
je zatím zařazena v &lt;a href=&#39;https://shop.luxonis.com/collections/beta-store&#39; class=&#39;external&#39;&gt;beta programu&lt;/a&gt;. Byl jsem i varován, že doručení bude
nějaký čas trvat (expeduje se z Hong Kongu).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vlastně mne velmi potešilo, když objednávka byla ještě ten den potvrzena a druhý den expedována &amp;hellip; tak to třeba nebude
tak dlouho trvat? Ale trvalo. Přes týden to viselo v Belgii na celnici (to je ta „výhoda” &lt;i&gt;online sledování&lt;/i&gt; &amp;mdash; člověk
se může permanentně nervovat, místo aby počítal s &lt;i&gt;dlouhou dobou&lt;/i&gt; a pak byl překvapen) a vrchol byl pak v Čechách. Z adresy
vypadly všechny znaky s diakritikou (na rovinu bych jí nepoužíval, ale mám pocit, že tam byla nějaká nápověda pro dohledání
adresy, ale už je to dlouho, takže ani tím si nejsem jist). V každém případě „tracking number” není to samé v ČR a pokud
ho nemáte, tak se dohledává podle adresy. Zkrátím to, skončilo to v koši „nedoručitelné”, ale po dvou dnech telefonování
a „intervencí” se balíček na depu v Praze našel. Doporučení: odmažte diakritiku. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A když už jsem měl krabičku doma, tak jsem se zase nemohl rozhoupat jí vůbec otevřít. Začal jsem totiž pořádně „listovat”
&lt;a href=&#39;https://docs.luxonis.com/projects/hardware/en/latest/pages/DM9098pro.html&#39; class=&#39;external&#39;&gt;dokumentací&lt;/a&gt; a narazil jsem na:
&lt;i&gt;Due to the large power consumption of dot projector/illumination LED, a Y-adapter is required when using these functions!&lt;/i&gt;
F-slovo. Znamená to, že teď budu muset objednávat nějaky &lt;i&gt;Y-adaptér&lt;/i&gt;, abych si mohl kameru vůbec pustit?!
To mi asi vzalo trošku vítr z plachet. Pak jsem alespoň otevřel krabičku a našel jsem tam toto:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/unboxing.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/unboxing_t.jpg&#39; alt=&#39;Obsah krabičky&#39; title=&#39;Obsah krabičky&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/unboxing.jpg&#39;&gt;Obsah krabičky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vlastně tedy dobrá a špatná zpráva:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Y-adaptér je součástí balení&lt;/li&gt;

&lt;li&gt;trošku to vypadá, že tam něco chybí, třeba kabel?&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Kabel tam byl &amp;mdash; pod krabičkou. Ale jestli tam má být takto poloprázdná krabička úplně nevím. Na druhou stranu i druhý
kus vypadal stejně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď dobré zprávy &amp;mdash; &lt;a href=&#39;https://docs.luxonis.com/en/latest/pages/tutorials/first_steps/#first-steps-with-depthai&#39; class=&#39;external&#39;&gt;First steps with DepthAI&lt;/a&gt;
&amp;hellip; prostě návod co udělat od zapojení nové kamery do USB konektoru. A fungovalo to bezchybně! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/depthai-md.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/depthai-md_t.jpg&#39; alt=&#39;DepthAI selfie&#39; title=&#39;DepthAI selfie&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;170&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/depthai-md.jpg&#39;&gt;DepthAI selfie&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/depthai-mikky.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/depthai-mikky_t.jpg&#39; alt=&#39;Myšák&#39; title=&#39;Myšák&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;170&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/depthai-mikky.jpg&#39;&gt;Myšák&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. a ano, na extra přísvit a extra zdroj dojde někdy později &amp;hellip; tj. na první pokusy nebyl nutný.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220325&#34;&gt;&lt;/a&gt;
&lt;h2&gt;25. březen 2022 &amp;mdash; Druhý krok&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://docs.luxonis.com/en/latest/pages/tutorials/first_steps/#first-steps-with-depthai&#39; class=&#39;external&#39;&gt;První krok&lt;/a&gt; byl snadný, ale co
bude druhý krok? Napsal bych si nějaky mini-prográmek, ale jaký? Konečně jsem začal více koukat do
&lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/&#39; class=&#39;external&#39;&gt;dokumentace API&lt;/a&gt; a užitečný mi přijde tento obrázek:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 652px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/api-diagram.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;646&#39; height=&#39;311&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Host&lt;/i&gt; je váš počítač a &lt;i&gt;OAK Device&lt;/i&gt; je „chytrá kamera” &amp;hellip; stále nevím, co OAK (v překladu &lt;i&gt;dub&lt;/i&gt;)
znamená? &lt;i&gt;Node&lt;/i&gt;, &lt;i&gt;connection&lt;/i&gt; a &lt;i&gt;pipeline&lt;/i&gt; připomíná klasický robotický systém, jenom to vše běží
přímo na „kameře” a nejspíše se to musí připravit předem. &lt;i&gt;XLink&lt;/i&gt; pak zajišťuje komunikaci tam a zpět.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kameru mám zatím zapojenou přímo do notebooku a tak její chytrost úplně nevyužiji. Co by mi ale přišlo zajímavé vyzkoušet je,
co když se &lt;i&gt;XLink&lt;/i&gt; přeruší? Jede &lt;i&gt;pipeline&lt;/i&gt; vesele dál? Pak by paradoxně &lt;a href=&#39;https://docs.luxonis.com/projects/hardware/en/latest/pages/DM6010.html&#39; class=&#39;external&#39;&gt;Y-adaptér&lt;/a&gt;,
na který jsem ještě nedávno „nadával”, byl přesně ten kousek HW, který by mi průběžné odpojování od počítače umožnil. Možná.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Koukal jsem tedy na &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/tutorials/standalone_mode/&#39; class=&#39;external&#39;&gt;standalone mode&lt;/a&gt; a
chyba lávky: &lt;i&gt;Standalone mode is only possible on OAKs that have on-board flash memory, which are currently OAK IOT
and OAK POE camera models.&lt;/i&gt; Je tady asi na místě zdůraznit, že &lt;a href=&#39;https://docs.luxonis.com/projects/hardware/en/latest/&#39; class=&#39;external&#39;&gt;Luxonis nabízí několik řad zařízení&lt;/a&gt;
a tak bych doporučil si to předem nastudovat a volit podle plánované aplikace.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co by to „offline” resp. „nezávisle” dělalo? Může si kamera po začátek pamatovat několik obrázků nebo
dokonce video? Podle příkladu &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/tutorials/ram_usage/&#39; class=&#39;external&#39;&gt;RAM usage&lt;/a&gt;:
&lt;i&gt;All OAK devices have 512 MiB (4 Gbit) on-board RAM, which is used for firmware (about 15MB), assets (a few KB up to 100MB+, eg. NN models),
and other resources, such as message pools where messages are stored.&lt;/i&gt; &amp;hellip; teď jsem si říkal, co je ten &lt;i&gt;4 Gbit&lt;/i&gt;? Rychlost?
Jiný model? Well &amp;hellip; 8x 512MB = 4G bitu &amp;hellip; asi. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vypadá to, že můžu rovnou použít demo &lt;a href=&#39;https://github.com/luxonis/depthai-python/blob/main/examples/SystemLogger/system_information.py&#39; class=&#39;external&#39;&gt;system_information.py&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;Ddr used / total - 0.13 / 339.99 MiB
Cmx used / total - 2.06 / 2.50 MiB
LeonCss heap used / total - 7.54 / 78.28 MiB
LeonMss heap used / total - 2.95 / 41.54 MiB
Chip temperature - average: 24.12, css: 25.67, mss: 23.69, upa: 23.44, dss: 23.69
Cpu usage - Leon CSS: 10.64%, Leon MSS: 1.98 %&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Kód je kratký, jen si teď neumím představit, jak otevřít &lt;i&gt;dai.Device&lt;/i&gt; bez &lt;i&gt;pipeline&lt;/i&gt;,
která pro nastartování obsahuje dva uzly: &lt;i&gt;dai.node.SystemLogger&lt;/i&gt; a &lt;i&gt;dai.node.XLinkOut&lt;/i&gt;.
I to prolinkování &lt;i&gt;sysLog.out.link(linkOut.input)&lt;/i&gt; vypadá přímočaře. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. tak schválně, jestli mi někdo poradí: &lt;a href=&#39;https://discuss.luxonis.com/d/594-reconnection-to-running-oak-device&#39; class=&#39;external&#39;&gt;Reconnection to running OAK device?&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220328&#34;&gt;&lt;/a&gt;
&lt;h2&gt;28. březen 2022 &amp;mdash; Standalone mode&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na odpověď jsem nemusel dlouho čekat &amp;mdash; Hussain psal: &lt;i&gt;What I understood is that you want to run the OAK in standalone mode.
If that was the case, check&lt;/i&gt; &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/tutorials/standalone_mode/#standalone-mod)e&#39; class=&#39;external&#39;&gt;this documentation&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A pak se ještě ozval Erik: &lt;i&gt;... that&#39;s not possible, after you terminate the connection with the device, the device will remove the pipeline/assets to be ready for the next connection.
As Hussain mentioned, if you would like to run pipeline in standalone mode, check the docs page he linked. This still wouldn&#39;t allow you to do exactly what you want, but you could eg. stream results via WiFi (OAK IoT) or ethernet (OAK PoE) to the server.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nešlo by to nějak obejít, když OAK IoT ani PoE nemám? Mimochodem „test komunity” bych považoval za úspěšný. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Mám v plánu někdy revidovat úvodní
odstavec a doplnit tam, např. že Luxonis má za sebou úspěšnou Kickstarterovou kampaň &lt;a href=&#39;https://www.indiegogo.com/projects/opencv-ai-kit-lite#/&#39; class=&#39;external&#39;&gt;opencv-ai-kit-lite&lt;/a&gt;
(&lt;i&gt;$1,136,926 USD by 8,640 backers&lt;/i&gt;) [je tam takové množství projektů, až na mne zase padá depka a jestli se mám vůbec o něco snažit &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;]
Také přemýšlím, jestli O=OpenCV, A=Ai, K=Kit??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, zpět k &lt;i&gt;Standalone mode&lt;/i&gt; &amp;hellip; &lt;i&gt;you first need to remove all XLinkOut and XLinkIn nodes&lt;/i&gt;. No jo, ale co dál? &lt;i&gt;SPIOut&lt;/i&gt; nepoužiji, protože nemám SPI,
a &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/components/nodes/script/&#39; class=&#39;external&#39;&gt;script node&lt;/a&gt; jede přes ten Ethernet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Koukám, že OAK-D Pro má přímo &lt;a href=&#39;https://github.com/luxonis/depthai-hardware/issues/114&#39; class=&#39;external&#39;&gt;dedikované issue&lt;/a&gt; &amp;hellip; hledal jsem, jak se vypíná/zapíná
podsvícení. Asi vyjímečně nemá cenu hledat přes Google, a je rychlejší proklikat &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/components/device/#reference&#39; class=&#39;external&#39;&gt;dokumentaci&lt;/a&gt;,
tj. v &lt;i&gt;Device&lt;/i&gt; jsou funkce &lt;i&gt;setIrFloodLightBrightness()&lt;/i&gt; a &lt;i&gt;setIrLaserDotProjectorBrightness()&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale to jsem se „trošku” odchýlil od tématu, ke kterému vlastně nemám více jak „tudy ne”.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220329&#34;&gt;&lt;/a&gt;
&lt;h2&gt;29. březen 2022 &amp;mdash; IMU a SLAM&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Teď je ráno, na rozdíl od včerejšího zápisu, tak je naděje, že budu mít více optimismu než po práci. Navíc téma je snad přímočaré
a měly by k tomu být rovnou funkční příklady. Motivace je náhrada &lt;a href=&#39;https://www.intelrealsense.com/tracking-camera-t265/&#39; class=&#39;external&#39;&gt;Realsense T264 tracking kamery&lt;/a&gt; (&lt;a href=&#39;https://www.intelrealsense.com/message-to-customers/&#39; class=&#39;external&#39;&gt;Limited Lifetime Product&lt;/a&gt;) za OAK-D.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě co jsem o víkendu (?) tak narychlo procházel, tak IMU do SLAMu zatím integrovaná není, tak to může být takový &lt;i&gt;self-test&lt;/i&gt;, jak jsou oba výstupy
konzistentní. No asi jsem zase naivní, ale uvidíme.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nejprve tedy IMU (&lt;i&gt;Inertial Measurement Unit&lt;/i&gt;). K dispozici jsou hned dva příklady:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/samples/IMU/imu_accelerometer_gyroscope/&#39; class=&#39;external&#39;&gt;IMU Accelerometer &amp;amp; Gyroscope&lt;/a&gt; &amp;mdash; GitHub &lt;a href=&#39;https://github.com/luxonis/depthai-python/blob/main/examples/IMU/imu_gyroscope_accelerometer.py&#39; class=&#39;external&#39;&gt;imu_gyroscope_accelerometer.py&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/samples/IMU/imu_rotation_vector/&#39; class=&#39;external&#39;&gt;IMU Rotation Vector&lt;/a&gt; &amp;mdash; GitHub &lt;a href=&#39;https://github.com/luxonis/depthai-python/blob/main/examples/IMU/imu_rotation_vector.py&#39; class=&#39;external&#39;&gt;imu_rotation_vector.py&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;První bych viděl na &lt;i&gt;raw data&lt;/i&gt; a druhý jako integraci. Píšou tam nějaké „nezdravé” Herzy (500Hz a 400Hz), ale to se může
časem hodit. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, první příklad fungoval bez problémů:&lt;/div&gt;

&lt;pre&gt;Accelerometer timestamp: 5613.242 ms
Accelerometer [m/s^2]: x: 5.200206 y: 0.019154 z: -8.820239
Gyroscope timestamp: 5613.925 ms
Gyroscope [rad/s]: x: 0.014914 y: 0.003196 z: -0.008522
Accelerometer timestamp: 5615.379 ms
Accelerometer [m/s^2]: x: 5.190629 y: 0.000000 z: -8.820239
Gyroscope timestamp: 5616.424 ms
Gyroscope [rad/s]: x: 0.009587 y: 0.001065 z: -0.005326&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a druhý stejně tak:&lt;/div&gt;

&lt;pre&gt;Rotation vector timestamp: 2707.787 ms
Quaternion: i: 0.000305 j: -0.964600 k: -0.001465 real: 0.263672
Accuracy (rad): 3.141602
Rotation vector timestamp: 2709.946 ms
Quaternion: i: 0.000305 j: -0.964600 k: -0.001465 real: 0.263672
Accuracy (rad): 3.141602&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;SLAM (&lt;i&gt;Simultaneous Localization And Mapping&lt;/i&gt;) jsem na stejné stránce mezi příklady nenašel, ale byl „hned vedle” na
stránce věnované &lt;a href=&#39;https://docs.luxonis.com/en/latest/pages/spatial-ai/#spatialai&#39; class=&#39;external&#39;&gt;Spatial AI&lt;/a&gt;:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/en/latest/pages/slam_oak/&#39; class=&#39;external&#39;&gt;SLAM with OAK&lt;/a&gt;
&amp;hellip; tak to asi nebude jen „copy and paste”: &lt;i&gt;We plan on creating our own visual-inertial SLAM project that would use on-device feature tracking (using FeatureTracker node) and intertial data (using IMU node), if the device has an IMU sensor onboard.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Jsou tam ale odkazy na &lt;i&gt;community projects&lt;/i&gt;: &lt;a href=&#39;https://github.com/duncanrhamill/oakd_orbslam3&#39; class=&#39;external&#39;&gt;OAK-D ORB_SLAM3 Experiment&lt;/a&gt; a &lt;a href=&#39;https://github.com/bharath5673/depthai-slam&#39; class=&#39;external&#39;&gt;deptha-slam&lt;/a&gt; &amp;hellip; (ještě tam byl &lt;a href=&#39;https://www.arducam.com/docs/opencv-ai-kit-oak/performing-location-with-visual-slam/&#39; class=&#39;external&#39;&gt;ArduCam SLAM&lt;/a&gt;). Hmm, tak asi zatím nic. Nevýhoda „ranního hraní” spočívá v tom, že v tom nejlepším toho člověk musí nechat a „jít do práce”. V tomto experimentu alespoň vidím jistou naději. &lt;i&gt;To be continued&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220907&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. září 2022 &amp;mdash; FollowMe a USB kabel (Jirka)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tentokrát blog posunul Jirka &amp;hellip;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;652&#34; height=&#34;428&#34; src=&#34;https://www.youtube.com/embed/ny79sCuUqBM&#34; title=&#34;Kid takes the lead, robot follows, daddy gets transported around&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Jirka si koupil &lt;a href=&#39;https://docs.luxonis.com/projects/hardware/en/latest/pages/DM9098w.html&#39; class=&#39;external&#39;&gt;OAK-D W&lt;/a&gt; (Wide), tedy verzi s širokým záběrem a jako demo aplikaci
si vymyslel &lt;i&gt;starý dobrý&lt;/i&gt; &lt;b&gt;FollowMe&lt;/b&gt; co před 10+ lety vylepšil (resp. udělal použitelný) na Eduru (viz &lt;a href=&#39;https://youtu.be/c-SXdDgbi0s&#39; class=&#39;external&#39;&gt;staré video z Floriade&lt;/a&gt;
&amp;hellip; takže tady to bylo 10 let). Je sranda jak ty děti dokážou poměrně rychle dostat robota do neřešitelné situace. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jinak v tomto demo je OAK-D kamera použita pouze jako zdroj hloubkových dat (podobně jako dřive byl &lt;i&gt;RealSense&lt;/i&gt;) a veškerý processing probíhá na hlavním počítači.
Bude-li ver2, tak možná zkombinuje i detekci osob a alternativní výběr objektu pro sledování, uvidíme &amp;hellip; Jirka si určítě něco vymyslí. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další info od Jirky bylo o GPS (možná dodá i extra článk o stereo-GPS pro získání absolutního směru robota). Vše prý fungovalo krásně až do okamžiku, kdy k robotovi
připojil kameru. A ano, problém byl „klasicky” USB 3, tentokrát ale řešitelný kabelem:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Zdar, kdybyste potřebovali k OAK-D kabel, kolem kterého může fungovat GPS, mám teď dobrou zkušenost s:&lt;/i&gt; &lt;a href=&#39;https://www.delock.com/produkt/84007/merkmale.html&#39; class=&#39;external&#39;&gt;https://www.delock.com/produkt/84007/merkmale.html&lt;/a&gt;
&lt;i&gt;Koukám, že má i další sourozence:&lt;/i&gt; &lt;a href=&#39;https://www.delock.com/produkt/83718/merkmale.html&#39; class=&#39;external&#39;&gt;83718&lt;/a&gt;, &lt;a href=&#39;https://www.delock.com/produkt/84017/merkmale.html&#39; class=&#39;external&#39;&gt;84017&lt;/a&gt;,
&lt;a href=&#39;https://www.delock.com/produkt/84019/merkmale.html&#39; class=&#39;external&#39;&gt;84019&lt;/a&gt;]. &lt;i&gt;Ty ale vyzkoušené nemám.&lt;/i&gt;
&lt;i&gt;Myšlenkový pochod byl: Vysoká přenosová rychlost nejspíš potřebuje lepší stínění, šrouby lépe utáhnou kontakt, s kratším kabelem bude méně potíží.
Pořád bych pak nedával GPS přímo ke kameře, ale v mém případě, kdy je anténa necelý metr od kamery, výměna kabelu, se kterou kamera přišla, za tenhle, převedla
GPS ze stavu &#34;při puštěné kameře vůbec nefunguje&#34; do &#34;funguje perfektně, bez výpadků&#34;.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; třeba se to bude někomu hodit např. na &lt;a href=&#39;/competitions/robotour/2022/en&#39;&gt;Robotour&lt;/a&gt;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;221008&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. října 2022 &amp;mdash; SLAM na 6 řádek&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na posledním &lt;i&gt;robotickém callu&lt;/i&gt; Jirka zmínil, že jen tak mimochodem se mu podařilo pustit SLAM na OAK-D kameře bez velkých problémů &amp;hellip; cože?! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak nejprve oprava, že „obrázek je pouze ilustrativní” a „reklama je zavádějící” &amp;hellip; není to úplně SLAM (Simultaneous Localization and Mapping,
tj. současná lokalizace a mapování), ale &lt;i&gt;visual odometry&lt;/i&gt;, tj. odometrie z kamery. Jirka to asi říkal, ale já si zapamatoval SLAM, pardón.
A těch řádků je o něco více, ale to by se dalo okecat:&lt;/div&gt;

&lt;pre&gt;import depthai
import spectacularAI
import time

pipeline = depthai.Pipeline()

vio_pipeline = spectacularAI.depthai.Pipeline(pipeline)
# optional config args: vio_pipeline = spectacularAI.depthai.Pipeline(pipeline, config, useStereo=False)

with depthai.Device(pipeline) as device, \
    vio_pipeline.startSession(device) as vio_session:

    while True:
        out = vio_session.waitForOutput()
        print(out.asJson())&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Zdroj: &lt;a href=&#39;https://github.com/SpectacularAI/sdk-examples/blob/main/python/oak/vio_jsonl.py&#39; class=&#39;external&#39;&gt;https://github.com/SpectacularAI/sdk-examples/blob/main/python/oak/vio_jsonl.py&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Rozchození bylo přímočaré, ještě než mi vystydlo kafe:&lt;/div&gt;

&lt;pre&gt;mkvirtualenv slam
workon slam
pip install depthai
pip install spectacularAI&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a pak už puštění skriptu výše:&lt;/div&gt;

&lt;pre&gt;(slam) md@md-ThinkPad-P50:~/git/slam$ python vio_slam.py
Traceback (most recent call last):
  File &#34;vio_slam.py&#34;, line 10, in &lt;module&gt;
    with depthai.Device(pipeline) as device, \
RuntimeError: No available devices&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Já vlastně nevím, proč to dělám &amp;hellip; prostě zvyk, aneb co se stane, když tam žádná kamera není? BTW kam jsem jí sakra dal?! Ano, už je lehce „zaprášená”&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na druhý pokus (s připojenou OAK-D PRO kamerou přes USB) už to vypadalo lépe:&lt;/div&gt;

&lt;pre&gt;(slam) md@md-ThinkPad-P50:~/git/slam$ python vio_slam.py
Spectacular AI SDK: WARN: unrecoginzed OAK board name &#39;OAK-D-PRO&#39;
you may need to manually set IMU-to-camera extrinsics (configuration.imuToCameraLeft)
{
  &#34;acceleration&#34;:{&#34;x&#34;:3.1929334554640985e-06,&#34;y&#34;:-1.8542926966551022e-06,&#34;z&#34;:-4.7221780476648234e-07},
  &#34;angularVelocity&#34;:{&#34;x&#34;:0.0015828333562240005,&#34;y&#34;:0.012700891122221947,&#34;z&#34;:0.00035301301977597177},
  &#34;orientation&#34;:{&#34;w&#34;:0.20955791688410802,&#34;x&#34;:0.6385671367191919,&#34;y&#34;:-0.7166392482573564,&#34;z&#34;:-0.18640114051633144},
  &#34;position&#34;:{&#34;x&#34;:0.006880179754191055,&#34;y&#34;:-0.02585324999779014,&#34;z&#34;:-0.0037064156909441524},
  &#34;status&#34;:&#34;TRACKING&#34;,&#34;time&#34;:343134.285796941,
  &#34;velocity&#34;:{&#34;x&#34;:-0.1518426175218836,&#34;y&#34;:0.050841540677380274,&#34;z&#34;:0.0363924090447811}
}
&amp;hellip;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Pak jsem si nechal vypisovat jen pozice a trošku mával kamerou nad stolem:&lt;/div&gt;

&lt;pre&gt;{&#39;x&#39;: -9.319226940036552, &#39;y&#39;: 1.5651737606558058, &#39;z&#39;: -5.689111896116633}
{&#39;x&#39;: -9.724962378082667, &#39;y&#39;: 1.683750553335214, &#39;z&#39;: -5.987711949231651}
{&#39;x&#39;: -10.173431395097694, &#39;y&#39;: 1.8181065640771044, &#39;z&#39;: -6.323567343157043}
{&#39;x&#39;: -10.596265664774739, &#39;y&#39;: 1.947684970617886, &#39;z&#39;: -6.645771182786724}
{&#39;x&#39;: -11.028292374467366, &#39;y&#39;: 2.0827255306275148, &#39;z&#39;: -6.980379856466121}
{&#39;x&#39;: -11.50425102807769, &#39;y&#39;: 2.2345457195224334, &#39;z&#39;: -7.355377866839724}
{&#39;x&#39;: -11.956292577500529, &#39;y&#39;: 2.3815888137119883, &#39;z&#39;: -7.717576736330567}&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;hmm, to moc nevypadá jako v metrech?! No asi je třeba udělat ten první krok pořádně a nastudovat si
&lt;a href=&#39;https://github.com/SpectacularAI/sdk-examples/tree/main/python/oak&#39; class=&#39;external&#39;&gt;readme&lt;/a&gt;.
Jak znám Jirku, tak u tohoto povrchního pokusu rozhodně nezůstal a více to prozkoumal.
Konkrétně ještě posílal link na &lt;a href=&#39;https://github.com/SpectacularAI/sdk-examples/blob/main/python/oak/vio_gnss.py&#39; class=&#39;external&#39;&gt;vio_gnss.py&lt;/a&gt;,
což by měla být kombinace GPS s vizuální odometrii a to má to blízko k jeho &lt;a href=&#39;/articles/ardusimple-rtk3b/en&#39;&gt;článku o Ardusimple RTK3B&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240122&#34;&gt;&lt;/a&gt;
&lt;h2&gt;22. ledna 2024 &amp;mdash; OSGAR driver&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;V rámci vytahování „kostlivců ze skříně”, aneb co vše by se hodilo na &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;nového robota&lt;/a&gt;, došlo znova na OAK-D
kamery. Chěl jsem si napsat &lt;i&gt;driver&lt;/i&gt; pro &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGARa&lt;/a&gt;, ale Jakub mne minulý týden dostal, že už přece dávno existuje!
&lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ano, je tam nějaký &lt;i&gt;config/test-oak-camera.json&lt;/i&gt;, ale uvnitř jsem viděl IP adresu, tak jsem předpokládal, že bude fungovat
pouze na PoE kamery, co Jakub na ČZU používá. A není tomu tak.&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ cat config/test-oak-camera.json
{
  &#34;version&#34;: 2,
  &#34;robot&#34;: {
    &#34;modules&#34;: {
      &#34;app&#34;: {
          &#34;driver&#34;: &#34;osgar.drivers.oak_camera:OakCamera&#34;,
          &#34;init&#34;: {
            &#34;fps&#34;: 10,
            &#34;is_color&#34;: true,
            &#34;is_depth&#34;: true,
            &#34;laser_projector_current&#34;: 1200,
            &#34;is_imu_enabled&#34;: true,
            &#34;number_imu_records&#34;: 10,
            &#34;disable_magnetometer_fusion&#34;: false,
            &#34;cam_ip&#34;: &#34;169.254.1.222&#34;,

            &#34;mono_resolution&#34;: &#34;THE_400_P&#34;,
            &#34;color_resolution&#34;: &#34;THE_1080_P&#34;,
            &#34;color_manual_focus&#34;: 130,

            &#34;stereo_median_filter&#34;: &#34;KERNEL_3x3&#34;,
            &#34;stereo_mode&#34;: &#34;HIGH_ACCURACY&#34;,
            &#34;stereo_extended_disparity&#34;: false,
            &#34;stereo_subpixel&#34;: false,
            &#34;stereo_left_right_check&#34;: true
          }
      }
    },
    &#34;links&#34;: []
  }
}&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;po spuštění:&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.record &amp;ndash;duration 10 config/test-oak-camera.json
2024-01-17 23:10:13,192 __main__   INFO     /home/md/git/osgar/test-oak-camera-240117_221013.log
2024-01-17 23:10:13,230 __main__   INFO     SIGINT handler installed
2024-01-17 23:10:13,752 osgar.drivers.oak_camera WARNING  IP 169.254.1.222 was not found!
2024-01-17 23:10:13,752 osgar.drivers.oak_camera INFO     Found devices: 1.6
2024-01-17 23:10:13,752 osgar.drivers.oak_camera INFO     Used the first available device.&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a následně:&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.logger test-oak-camera-240117_221013.log
 k                 name    bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;
 0                  sys      803 |  5 |   0.5Hz
 1            app.depth 36361514 | 71 |   6.7Hz
 2            app.color 25732424 | 71 |   6.7Hz
 3 app.orientation_list    38570 | 70 |   6.6Hz

Total time 0:00:10.574191&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Na první pohled to vypadá, že je tam vše &amp;hellip; tak asi není co dělat. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/osgar-color.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/osgar-color_t.jpg&#39; alt=&#39;RGB obrázek přes OSGAR driver&#39; title=&#39;RGB obrázek přes OSGAR driver&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/osgar-color.jpg&#39;&gt;RGB obrázek přes OSGAR driver&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/osgar-depth.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/osgar-depth_t.jpg&#39; alt=&#39;hloubková data&#39; title=&#39;hloubková data&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;200&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/osgar-depth.jpg&#39;&gt;hloubková data&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. přidám si sem ještě poznámku, že na druhém počítači to tak snadné nebylo:&lt;/div&gt;

&lt;pre&gt;[2024-01-26 16:19:36.660] [depthai] [warning] Insufficient permissions to communicate with X_LINK_UNBOOTED
                                              device having name &#34;1.3&#34;. Make sure udev rules are set

RuntimeError: No available devices&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a hodí se použít &lt;a href=&#39;https://docs.luxonis.com/install_dependencies.sh&#39; class=&#39;external&#39;&gt;instalační skript&lt;/a&gt;, který obsahuje:&lt;/div&gt;

&lt;pre&gt;# Allow all users to read and write to Myriad X devices
    echo &#34;Installing udev rules&amp;hellip;&#34;
    echo &#39;SUBSYSTEM&lt;tt&gt;&#34;usb&#34;, ATTRS{idVendor}&lt;/tt&gt;&#34;03e7&#34;, MODE=&#34;0666&#34;&#39; |
                 sudo tee /etc/udev/rules.d/80-movidius.rules &gt; /dev/null
    sudo udevadm control &amp;ndash;reload-rules &amp;amp;&amp;amp; sudo udevadm trigger&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; případně viz &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/install/#ubuntu&#39; class=&#39;external&#39;&gt;instalační návod&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 ještě úplně výhra to není, protože na &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Patovi&lt;/a&gt; to teď funguje, jen když nejprve
připojím kameru a pak PCAN&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240210&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. února 2024 &amp;mdash; Two Towers&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem si konečně chvíli hrál s &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Patem&lt;/a&gt;, jenom jízda 1 metr tam a zpět. Vpředu má
teď namontovanou OAK-D kameru s úhlem 20 stupňů dolů (viz &lt;a href=&#39;/articles/infento/en#240128&#39;&gt;Multi Angle Joint&lt;/a&gt;).
Další úloha je vcelku triviální: jezdi tam a zpět, ale pokud bude v cestě překážka, tak zastav. A to, že
je cesta blokovaná překážkou má program zjistit z hloubkových OAK-D dat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď se už pomalu dostáváme k zápletce o „Dvou věžích”. Do cesty jsem si dal dopravní kužel (to je zase
jiná &lt;i&gt;hra&lt;/i&gt;, který z robotů &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pat&lt;/a&gt; nebo &lt;a href=&#39;/robots/rocker/en&#39;&gt;Rocker&lt;/a&gt; první dokáže 30 minut
jezdit od kuželu ke kuželu, přímá viditelnost). A když se koukám na nasbíraná data, tak vidím toto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers-rgb.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/two-towers-rgb_t.jpg&#39; alt=&#39;RGB obrázek&#39; title=&#39;RGB obrázek&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers-rgb.jpg&#39;&gt;RGB obrázek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers-depth.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/two-towers-depth_t.jpg&#39; alt=&#39;hloubkový obrázek&#39; title=&#39;hloubkový obrázek&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;200&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers-depth.jpg&#39;&gt;hloubkový obrázek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers2-rgb.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/two-towers2-rgb_t.jpg&#39; alt=&#39;RGB obrázek&#39; title=&#39;RGB obrázek&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers2-rgb.jpg&#39;&gt;RGB obrázek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers2-depth.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/two-towers2-depth_t.jpg&#39; alt=&#39;hloubkový obrázek&#39; title=&#39;hloubkový obrázek&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;200&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/two-towers2-depth.jpg&#39;&gt;hloubkový obrázek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, je to očekávané?? Možná ano, ale mne to minimálně překvapilo.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240226&#34;&gt;&lt;/a&gt;
&lt;h2&gt;26. února 2024 &amp;mdash; Staronoví manažeři a přehrávání videa&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Bude to už pomalu 14 dní, co jsem zkoušel následující kód z
&lt;a href=&#39;https://docs.luxonis.com/projects/sdk/en/latest/samples/replay/SDK_looped_replay/?highlight=replay#looped-replay&#39; class=&#39;external&#39;&gt;luxonis webu&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;from depthai_sdk import OakCamera
with OakCamera(replay=&#39;https://www.youtube.com/watch?v=Y1jTEyb3wiI&#39;) as oak:
    oak.replay.set_loop(True)  # &lt;&amp;mdash; Enable looping of the video, so it will never end
    color = oak.create_camera(&#39;color&#39;)
    nn = oak.create_nn(&#39;vehicle-detection-0202&#39;, color)
    oak.visualize(nn, fps=True)
    oak.start(blocking=True)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/replay-youtube.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/replay-youtube_t.jpg&#39; alt=&#39;Realtime anotování YouTube videa&#39; title=&#39;Realtime anotování YouTube videa&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;365&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/replay-youtube.jpg&#39;&gt;Realtime anotování YouTube videa&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tenkrát mi to padalo na &lt;i&gt;oak.replay.set_loop(True)&lt;/i&gt;, ale když jsem tento řádek zakomentoval, tak to
na připojené OAK-D kameře v reálném čase detekovalo autíčka z &lt;a href=&#39;https://www.youtube.com/watch?v=Y1jTEyb3wiI&#39; class=&#39;external&#39;&gt;YouTube videa&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A dnes jsem řešil &lt;a href=&#39;https://github.com/mkrupczak3/Coneslayer&#39; class=&#39;external&#39;&gt;detekci kuželu&lt;/a&gt; (na PC fungovala, na OAK-D zatím stále nikoliv)
a narazil v dokumentaci na &lt;i&gt;výměnu manažerů&lt;/i&gt;:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/projects/sdk/en/old_sdk_managers/getting-started/&#39; class=&#39;external&#39;&gt;https://docs.luxonis.com/projects/sdk/en/old_sdk_managers/getting-started/&lt;/a&gt; (&lt;b&gt;BlobManager&lt;/b&gt;, &lt;b&gt;NNetManager&lt;/b&gt;, atd.)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;vs.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://docs.luxonis.com/projects/sdk/en/latest/oak-camera/&#39; class=&#39;external&#39;&gt;https://docs.luxonis.com/projects/sdk/en/latest/oak-camera/&lt;/a&gt; (&lt;b&gt;OakCamera&lt;/b&gt; &lt;i&gt;vládne všem&lt;/i&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Stará detekce kuželů dále odkazovala na &lt;a href=&#39;https://gitlab.com/KSU_EVT/autonomous-software/yolov7-luxonis-detection&#39; class=&#39;external&#39;&gt;Yolov7 Luxonis Detection&lt;/a&gt; (asi fork)
a tam v &lt;a href=&#39;https://gitlab.com/KSU_EVT/autonomous-software/yolov7-luxonis-detection/-/blob/master/main.py?ref_type=heads&#39; class=&#39;external&#39;&gt;main.py&lt;/a&gt; půlka importů
nefungovala. Vysvětlení je částečně na &lt;a href=&#39;https://discuss.luxonis.com/d/1050-broken-link-for-sdk-documentation&#39; class=&#39;external&#39;&gt;diskusním fóru&lt;/a&gt; cca před rokem.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co bylo tedy špatně na mém kódu? Verze &lt;a href=&#39;https://pypi.org/project/depthai-sdk/&#39; class=&#39;external&#39;&gt;depthai-sdk&lt;/a&gt;. Používal jsem
&lt;a href=&#39;https://github.com/luxonis/depthai/tree/main&#39; class=&#39;external&#39;&gt;github DepthAI&lt;/a&gt;, ale fakticky jsem měl i balíček nainstalovaný (verze 1.9.4).
Po upgrade na nejnovější (verze 1.13.1) už &lt;i&gt;set_loop()&lt;/i&gt; funguje a stejně tak třeba nastavení konfigurace kamery &amp;hellip; ale to snad příště.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240304&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. března 2024 &amp;mdash; Detekce kuželu pomocí YoloV7&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Trošku se děsím, že se dostávám do vývojové fáze mých studentů před dvaceti lety, kteří, když dostali úkol, tak místo aby se nad ním
zamysleli, rovnou hledali řešení na webu. S tou „moji” detekcí kuželů je to stejné! Vycházel jsem z modelu &lt;a href=&#39;https://github.com/mkrupczak3/Coneslayer&#39; class=&#39;external&#39;&gt;Coneslayer&lt;/a&gt;,
který mi fungoval na PC, ale &lt;a href=&#39;https://gitlab.com/KSU_EVT/autonomous-software/yolov7-luxonis-detection&#39; class=&#39;external&#39;&gt;odkazovaná OAK-D&lt;/a&gt; varianta už ne (viz
&lt;a href=&#39;/articles/oak-d-pro/en#240226&#39;&gt;Staronoví manažeři ...&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Možná bych ještě udělal jednu odbočku pro ty, kdo jsou na tom jako já &amp;mdash; nazval bych to &lt;i&gt;Slon zahradníkem&lt;/i&gt;, aneb kříženec &lt;i&gt;Slona v porcelanu&lt;/i&gt; s &lt;i&gt;Kozlem zahradníkem&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
NNeurotickému světu dominuje několik firmem a z toho vyplývají nejrůznější důsledky. Vycházím s „vtipného” popisu, kterak &lt;i&gt;snadno a rychle&lt;/i&gt; konvertovat &lt;i&gt;pytorch model&lt;/i&gt;
na &lt;i&gt;Movidius&lt;/i&gt;/OAK-D. To je skoro na tabulku:&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;1&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;Firma&lt;/td&gt;
		&lt;td&gt;Nástroj&lt;/td&gt;
		&lt;td&gt;Fromát souborů&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Facebook&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://pytorch.org/&#39; class=&#39;external&#39;&gt;Pytorch&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;*.pt a *.pth&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Microsoft&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://onnx.ai/&#39; class=&#39;external&#39;&gt;ONNX&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;*.onnx&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Intel&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html&#39; class=&#39;external&#39;&gt;OpenVino&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;*.bin, *.xml, *.blob&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Google&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://www.tensorflow.org/&#39; class=&#39;external&#39;&gt;Tensorflow&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;*.tf, *.tflite, &amp;hellip;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;NVidia&lt;/td&gt;
		&lt;td&gt;&lt;a href=&#39;https://developer.nvidia.com/tensorrt&#39; class=&#39;external&#39;&gt;TensorRT&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;??&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Jako ve správném kapitalistickém světě se ty firmy nemají rády a tak přechod od jednoho k druhému je dost kostrbatý, pokud vůbec jde (jsou tam i technické
rozdíly, ale o nich zatím nejsem schopen nic říci). Typicky to vyžaduje nějakou obskurní verzi, nejlépe v &lt;i&gt;dockeru&lt;/i&gt;, která ale zase funguje pouze
pro některé verze modelů (?).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co jsem to chtěl? Jo pointa této &lt;i&gt;předehry&lt;/i&gt; je v tom, že &lt;a href=&#39;https://www.v7labs.com/blog/yolo-object-detection&#39; class=&#39;external&#39;&gt;YOLO&lt;/a&gt; je postaveno na Pytorchi.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Přemmýšlím, jestli &lt;a href=&#39;http://cimrman-smoljak-sverak.blogspot.com/2019/05/vrazda-v-salonnim-coupe.html&#39; class=&#39;external&#39;&gt;Cimrmanovsky neprozradit konec celé detektivky&lt;/a&gt;? Asi jo,
oni nám jinak diváci zůstavají sedět &amp;hellip;&lt;/div&gt;

&lt;pre&gt;git clone https://github.com/luxonis/depthai-experiments.git
cd depthai-experiments/gen2-yolo/device-decoding
python main.py -config ~/git/Coneslayer/coneslayer.json -recording ~/git/osgar/follow-path.mp4&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;(zase pozor u configu mají být dvě pomlčky! staré TODO web parser, aby to nebylo interpretováno jako škrtnutý text)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Přiběh začíná tak, že PavelJ řešil rychlost neuronky na &lt;a href=&#39;/competitions/robotour/2024/en&#39;&gt;Robotour&lt;/a&gt;. A právě kvůli zmiňovaným konverzním problémům to
dal na &lt;a href=&#39;https://github.com/pavliik/oak_segmentation.git&#39; class=&#39;external&#39;&gt;github&lt;/a&gt;, jestli není problém jen u něj. Já jsem pro model
&lt;a href=&#39;https://gitlab.com/KSU_EVT/autonomous-software/yolov7-luxonis-detection/-/blob/master/coneslayer_openvino_2021.4_6shave.blob?ref_type=heads&#39; class=&#39;external&#39;&gt;coneslayer_openvino_2021.4_6shave.blob&lt;/a&gt;
nemohl přímo pustit původní skript, tak jsme to na pravidelném &lt;i&gt;callu&lt;/i&gt; zkoušeli v Pavlově prostředí. Nekreslilo to žádné detekce (ano, má rozpoznávací schopnost
zda něco funguje je dost chabá) a tak došlo na ladění a tím jsem &lt;i&gt;call&lt;/i&gt; zcela &lt;i&gt;zabil&lt;/i&gt; a všem účastníkům se ještě jednou omlouvám.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na výstupu sítě bylo &lt;b&gt;48672 floatů&lt;/b&gt; &amp;mdash; co to je? Resp. na výstupu nebylo nic, ale když člověk zavolal &lt;i&gt;in_nn.getAllLayerNames()&lt;/i&gt;, tak získal nápovědu, že
výstup není &lt;i&gt;output&lt;/i&gt;, ale jedna z variant &lt;i&gt;[&#39;output1_yolov7&#39;, &#39;output2_yolov7&#39;, &#39;output3_yolov7&#39;]&lt;/i&gt;. Dobře, takže to neni jen 48672 floatů, ale 18*52*52 floatů.
Lepší? Když je to celé na hromadě, tak není jasné, zda 18 je ta první dimenze nebo poslední (ano, mohla by být i prostřední, ale to by nám snad neudělali).
Yolo jede na „mřízce detekcí”, tj. těch 52x52 bude ta mřížka a 18 budou detekce. Jsou to &lt;i&gt;bounding boxy&lt;/i&gt;, tj. pozice x, y, velikost w, h a pak důvěryhodnost
detekce, ale že by tam měli 14 typů kuželů??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další den Jirka doporučil si udělat vlastní blob konverzi: &lt;i&gt;Vezmi ten onnx model a zkonvertuj si ho pomocí Luxonis blobconverteru sám&lt;/i&gt;
&lt;a href=&#39;https://blobconverter.luxonis.com/&#39; class=&#39;external&#39;&gt;https://blobconverter.luxonis.com/&lt;/a&gt;. &lt;i&gt;Nastav -mean_values=[0,0,0] -scale_values=[255,255,255].&lt;/i&gt;
Tak vznikl nový &lt;i&gt;blob&lt;/i&gt;. Jirka lehce naznačil „co se všechno může pokazit”, resp. co vše může být jinak. Barvy nejsou 0 až 255, ale třeba 0 až 1 nebo -0.5 až +0.5.
Uspořádané jsou buď RGB nebo BRG. Obrázek může vyžadovat jistou velikost např. 416x416. Data obrázku jsou buď 3x416x416 nebo 416x416x3. Ještě jsem na něco zapomněl?
Jirku nic nezastaví, takže odpověď byla&lt;/div&gt;

&lt;pre&gt;img = cv2.imread(str(args.input_image), cv2.IMREAD_COLOR)  # BGR, HWC
img = cv2.resize(img, (args.width, args.height))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # RGB, HWC
img = img.transpose(2, 0, 1)  # RGB, CHW
img = numpy.expand_dims(img, 0)  # NCHW, i.e. including a &#34;batch&#34; dimension.
img = (img / 255.).astype(numpy.float32)  # [0..1] range&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no mne to tenkrát přišlo skoro vtipné, že tam byly úplně „všechny věci co se pokazit můžou” &amp;mdash; Murphy by byl spokojený.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě psal, že ta síť, resp. &lt;a href=&#39;https://github.com/mkrupczak3/Coneslayer/blob/main/coneslayer-simplified.onnx&#39; class=&#39;external&#39;&gt;ONNX varianta&lt;/a&gt; dává nahlédnout
pod &amp;hellip; jak se to dnes korektně říká? &amp;hellip; kapotu:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Zajimave je, ze kdyz si zobrazim ONNX variantu modelu v&lt;/i&gt; &lt;a href=&#39;http://netron.app&#39; class=&#39;external&#39;&gt;http://netron.app&lt;/a&gt;&lt;i&gt;, vypadaji vystupy jinak, nez co jsme videli v tom xml.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;1. Jsou ctyri. Tri nepojmenovane, ktere vypadaji (skoro, ne uplne!) jako ty v tom xml. A jeden &#34;agregovany&#34;, ktery z tech tri vznike preskalovanim a slepenim a ktery se jmenuje &#34;output&#34;.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;2. Ty tri nepojmenovane jsou vicerozmerne a maji tvary jako 1x3x56x56x6. Tj, ta divna osmnactka je asi ve zkutecnosti 3x6. Ta 3 mi unika, ale 6 je neco, co bych cekal, kdyz mam x, y, w, h plus dva typy kuzelu.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;3. Ten agregovany &#34;output&#34; ma rozmer 1x1064x6. Tj. 6 zustane, ostatni dimenze se splacnou.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Zkusil jsem pustit ten ONNX model na CPU, ale zatim uplne nechapu skalu hodnot v tom &#34;output&#34;. Jsou mimo 0..1, ale moc male na to, aby to byly pixely ve 416x416 obrazku.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jirka se asi bude zlobit, že to nebylo ke zveřejnění, ale &amp;hellip; snad mi to odpustí. Výsledek vypadal takto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/cone-onnx-ji.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/cone-onnx-ji_t.jpg&#39; alt=&#39;Detekce kuželu přes ONNX&#39; title=&#39;Detekce kuželu přes ONNX&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;282&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/cone-onnx-ji.jpg&#39;&gt;Detekce kuželu přes ONNX&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Spousta malých obdělníčků. Znova jsem koukal na &lt;a href=&#39;https://www.v7labs.com/blog/yolo-object-detection&#39; class=&#39;external&#39;&gt;yolo popisek&lt;/a&gt; a zmiňují tam jednak tu mřížku:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;YOLO divides an input image into an S × S grid. If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object. Each grid cell predicts B bounding boxes and confidence scores for those boxes. These confidence scores reflect how confident the model is that the box contains an object and how accurate it thinks the predicted box is.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;a dále NMS:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;One key technique used in the YOLO models is non-maximum suppression (NMS). NMS is a post-processing step that is used to improve the accuracy and efficiency of object detection. In object detection, it is common for multiple bounding boxes to be generated for a single object in an image. These bounding boxes may overlap or be located at different positions, but they all represent the same object. NMS is used to identify and remove redundant or incorrect bounding boxes and to output a single bounding box for each object in the image.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To Jirka zmiňoval a já moc nechápal o co jde &amp;hellip; ale je to způsob, jak z těch mnoha detekci (confidence level 0.999!) získat jednu velkou. Teď už přeskočím na konec
(za chvíli budu muset do práce) &amp;hellip; s tvrzením „Vrah je slon” (jj, pondělky bývají náročnější) &amp;hellip; a zkonvertuji alespoň data nahraná &lt;a href=&#39;/robots/pat-a-mat/en#240302&#39;&gt;Patem&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, tak asi později &amp;mdash; nemám teď u sebe OAK-D a mezi desítkami parametrů nevidím ukládání výstupu:&lt;/div&gt;

&lt;pre&gt;(depthai) md@md-ThinkPad-P50:~/git/depthai-experiments/gen2-yolo/device-decoding$ python main.py -h
usage: main.py [-h] [-conf CONFIG] [-recording RECORDING] [-rgbr RGBRESOLUTION]
               [-rgbf RGBFPS] [-monor MONORESOLUTION] [-monof MONOFPS] [-fps FPS]
               [-defaultRes {None,min,max}] [-isp ISPSCALE] [-sharpness SHARPNESS]
               [-lumaDenoise LUMADENOISE] [-chromaDenoise CHROMADENOISE]
               [-manualFocus MANUALFOCUS] [-afMode AFMODE] [-awbMode AWBMODE]
               [-sceneMode SCENEMODE] [-abMode ANTIBANDINGMODE]
               [-effectMode EFFECTMODE] [-dct DISPARITYCONFIDENCETHRESHOLD]
               [-lrct LRCTHRESHOLD] [-sig SIGMA] [-med {0,3,5,7}]
               [-lrc STEREOLRCHECK] [-ext EXTENDEDDISPARITY] [-sub SUBPIXEL]
               [-maxd MAXDEPTH] [-mind MINDEPTH] [-sbbsf SBBSCALEFACTOR]
               [-openvinoVersion {2020_3,2020_4,2021_1,2021_2,2021_3,2021_4,2022_1,UNIVERSAL}]
               [-xls XLINKCHUNKSIZE] [-tun CAMERATUNING] [-dev DEVICEID]
               [-usbs {usb2,usb3}] [-irDotBrightness IRDOTBRIGHTNESS]
               [&amp;ndash;irFloodBrightness IRFLOODBRIGHTNESS]
&amp;hellip;&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;240316&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. března 2024 &amp;mdash; Software syncing&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem se zase něco naučil &amp;mdash; od Jirky, jak jinak. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;OAK-D kamera nějak běží, detekuje a reportuje kužely (a loguje v OSGARovi), ale když pak chci detekce
visualizovat s původními obrázky, tak mám problém:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger oak-cone-detection-240315_203533.log -stream oak.detections  oak.color \
                                                            -format &#34;{timestamp} {len(data)}&#34;

0:00:03.442914 219488
0:00:03.487640 4
0:00:03.489948 214840   &lt;====
0:00:03.517288 309346
0:00:03.540213 301433
0:00:03.566320 4
0:00:03.566519 290162
0:00:03.589637 4
0:00:03.599398 299662
0:00:03.615203 304556
0:00:03.638670 4
0:00:03.664591 4
0:00:03.664854 283100
0:00:03.681872 222737
0:00:03.713446 4
0:00:03.724757 4
0:00:03.743658 733428
0:00:03.747007 375482
0:00:03.776240 4
0:00:03.787632 4
0:00:03.790691 386878
0:00:03.812691 408704&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; prostě mi přišly tři obrázky za sebou a k čemu se váže ta detekce z času &lt;i&gt;3.566320&lt;/i&gt;?!
Jirka to komentoval: &lt;i&gt;Dataframy z OAKu obsahují i timestamp a sequence id. Podle sequence id by to mělo jít párovat se vstupním obrázkem.&lt;/i&gt;
&amp;hellip; a je to přesně tak &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; viz &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/tutorials/message_syncing/#software-syncing&#39; class=&#39;external&#39;&gt;Software syncing&lt;/a&gt;.
Přidal jsem sekvenční číslo do OSGAR driveru pro OAK-D kameru (rovnou i pro &lt;i&gt;depth&lt;/i&gt;) a výsledky detekce z neuronky je teď možné relativně snadno napárovat v použitým
vstupním obrázkem. Ale &amp;hellip; sekvenční čísla pro &lt;i&gt;depth&lt;/i&gt; jedou v „jiném rytmu” a tak jsem raději rovnou doplnil i ten &lt;i&gt;timestamp_us&lt;/i&gt;:&lt;/div&gt;

&lt;pre&gt;seq_num = packets[-1].getSequenceNum()  # for sync of various outputs
dt = packets[-1].getTimestamp()  # datetime.timedelta
timestamp_us = ((dt.days * 24 * 3600 + dt.seconds) * 1000000 + dt.microseconds)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;OSGAR používá &lt;a href=&#39;https://msgpack.org/&#39; class=&#39;external&#39;&gt;msgpack&lt;/a&gt; a ten nemá Pythonovský &lt;a href=&#39;https://docs.python.org/3/library/datetime.html#timedelta-objects&#39; class=&#39;external&#39;&gt;datetime.timedelta&lt;/a&gt;
v základní sadě. A je škoda ukládat &lt;i&gt;floaty&lt;/i&gt;, když vím, že zdroj je v mikrosekundách. Výsledek?&lt;/div&gt;

&lt;pre&gt;5        oak.depth_seq     1864 | 166 |   8.3Hz
6        oak.color_seq      341 |  31 |   1.5Hz
7   oak.detections_seq      341 |  31 |   1.5Hz

OSGAR time, OSGAR stream, [seq_num, timestamp_us]
0:00:03.472923 6 [0, 163893263641]
0:00:03.516000 7 [0, 163893263641]
0:00:03.518708 6 [2, 163893313635]
0:00:03.547843 6 [3, 163893338631]  &lt;&lt;tt&gt;==
0:00:03.567436 5 [0, 163893348213]
0:00:03.569827 6 [4, 163893363629]
0:00:03.596117 7 [2, 163893313635]
0:00:03.596373 6 [5, 163893388627]
0:00:03.619423 7 [3, 163893338631]  &lt;&lt;/tt&gt;==
0:00:03.619587 6 [6, 163893413624]
0:00:03.646627 6 [7, 163893438618]
0:00:03.650795 5 [1, 163893448204]
0:00:03.666352 7 [4, 163893363629]&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;240318&#34;&gt;&lt;/a&gt;
&lt;h2&gt;18. března 2024 &amp;mdash; Debugging DepthAI pipeline&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Přiznám se bez mučení &amp;mdash; synchronizace obrázku se seznamem detekcí nebylo vše, co mne v sobotu trápilo. I když jsem nahrávání pouštěl několikrát dokola, tak typicky u 31.
obrázku se mi to „kouslo” (ale hloubková data se nahrávala dál). Když jsem vypnul nahrávání hloubkových dat, stále stejný problém. Když jsem snížil FPS
(počet snímků za sekundu) na 1, tak stejně po 30 sekundách konec.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jako tonoucí jsem hledal „stéblo” na stránkách Luxonisu a našel &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/tutorials/debugging/&#39; class=&#39;external&#39;&gt;Debugging DepthAI pipeline&lt;/a&gt;. Úvodní
věta, &lt;i&gt;currently, tools for debugging the DepthAI pipeline are limited&lt;/i&gt;, mne příliš nepovzbudila (fakticky lze zapnout debug výstup na konzoli a to je asi vše),
ale byla tam i zmínka &lt;i&gt;... which would allow users to debug a “frozen” pipeline much easier, which is usually caused by a filled up blocking queue.&lt;/i&gt; Prostě
že probém je typicky plná blokovaná fronta.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V mém případě to byl &lt;a href=&#39;https://github.com/luxonis/depthai-experiments/blob/master/gen2-yolo/device-decoding/main_api.py#L101&#39; class=&#39;external&#39;&gt;xoutRgb&lt;/a&gt;, který jsem vůbec v upravené
verzi &lt;i&gt;OSGAR driveru&lt;/i&gt; nečetl. Sice měla být jako „neblokovaná”, ale 32 už je možná moc? V každém případě po vyčítání i této fronty, případně úplné odstranění
&lt;i&gt;xoutRgb&lt;/i&gt;, to najednou jede jak má! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A zároveň jsem pochopil, proč v tom jejich demu jsou &lt;b&gt;dvě&lt;/b&gt; výstupní okna. V popisu &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/components/nodes/color_camera/&#39; class=&#39;external&#39;&gt;ColorCamera modulu&lt;/a&gt;
je zmíněno, že &lt;i&gt;preview - ImgFrame - RGB (or BGR planar/interleaved if configured), mostly suited for small size previews and to feed the image into NeuralNetwork&lt;/i&gt;.
Prostě zmenšený obrázek se používá jak pro „normální náhled” tak jako vstup do neuronek! A toto &lt;i&gt;preview&lt;/i&gt; zobrazovalo to druhé okno. Proč? Protože pokud chcete
na vstupu mít 416x416 pixelový obrázek se zachováním poměrů stran, musíte řezat. A to pěkně ukazuje obrázek &lt;a href=&#39;https://docs.luxonis.com/projects/api/en/latest/_images/isp.jpg&#39; class=&#39;external&#39;&gt;isp.jpg&lt;/a&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/isp.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/isp_t.jpg&#39; alt=&#39;výřez pro preview - převzato z Luxonis webu&#39; title=&#39;výřez pro preview - převzato z Luxonis webu&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;479&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/isp.jpg&#39;&gt;výřez pro preview - převzato z Luxonis webu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A když bboxy pronásobíte &lt;b&gt;pouze výškou&lt;/b&gt; a posunete o polovičku rozdílu výšky a šířky dostanete konečně to co chcete:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/osgar-oak-cones.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/osgar-oak-cones_t.jpg&#39; alt=&#39;Detekce kuželů přes OSGAR HIL (hardware-in-the-loop)&#39; title=&#39;Detekce kuželů přes OSGAR HIL (hardware-in-the-loop)&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/osgar-oak-cones.jpg&#39;&gt;Detekce kuželů přes OSGAR HIL (hardware-in-the-loop)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. už jenom drobné pozorování, že pokud byl původný záběr kamery úzký, tak po tom ořezu pro detekci bude ještě užší &amp;hellip; ale jak to vylepšit si nechám do nějaké &lt;i&gt;ver2&lt;/i&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250511&#34;&gt;&lt;/a&gt;
&lt;h2&gt;11.května 2025 &amp;mdash; 13 šlupek (SHAVE) - Custom model v OAK-D&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Blíží se &lt;a href=&#39;/competitions/robotem-rovne/en&#39;&gt;Robotem Rovně 2025&lt;/a&gt; (&lt;a href=&#39;https://ok1kpi.cz/jelinek/registrace/2025/&#39; class=&#39;external&#39;&gt;ukončení registrace je zítra! (2025-05-12)&lt;/a&gt;) a tak jsem se pokusil na
&lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Patovi&lt;/a&gt; rozchodit detekci cesty pomocí neuronky od PavlaJ, která běžela přímo na kameře. Přestože jsem to měl naservírované na zlatém podnose: &lt;i&gt;tady je model.blob
a k tomu skriptík oak_sil.py, pomocí kterého je možné na kameře zpracovat už nahrané JPEGy&lt;/i&gt;. Co více si přát, obzvlaště když příklad rovnou fungoval? &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Konverze do &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGARa&lt;/a&gt; ale už tak hladká nebyla a o tom tedy dnešní „příspěvek”, než to zase zapomenu. Problém byl v:&lt;/div&gt;

&lt;pre&gt;Blob compiled for 13 shaves, but only 12 are available in current configuration.&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Cože?! Tak nejprve odtajnění, co je SHAVE? Do dnes jsem o &lt;i&gt;WikiChip&lt;/i&gt; nevěděl, ale &lt;a href=&#39;https://en.wikichip.org/wiki/movidius/microarchitectures/shave_v2.0&#39; class=&#39;external&#39;&gt;odkaz shave_v2.0&lt;/a&gt;
vypadá zajímavě: &lt;i&gt;Streaming Hybrid Architecture Vector Engine v2.0 (SHAVE v2.0) is an accelerator microarchitecture designed by Movidius for their vision processors.
SHAVE-based products are branded as the Myriad family of vision processors.&lt;/i&gt; Jsou tam i detailnější diagramy a popisy, pokud by někoho zajímala architektura.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhý vstup je &lt;a href=&#39;https://docs.luxonis.com/hardware/platform/rvc/rvc2/&#39; class=&#39;external&#39;&gt;Robotics Vision Core 2 (RVC2)&lt;/a&gt;, kde jsou detaily o OAK-D Pro konfiguraci (případně viz
&lt;a href=&#39;https://discuss.luxonis.com/d/1122-how-many-shaves-available-in-oak-d-pipeline&#39; class=&#39;external&#39;&gt;dotaz na fóru&lt;/a&gt; &lt;i&gt;How many shaves available in OAK-D pipeline?&lt;/i&gt;). Zkrátím to: OAK-D Pro má
16 SHAVE jader.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co s tím? Poradil mi Jirka: ,,Máš tam hloubku? Zruš ji.&#34;&#34; A ano, používal jsem na robotovi hloubková data a když jsem na ně rezignoval, tak to jelo. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Závěr? Když jsem dnes sepisoval tento odstaveček a chtěl &lt;i&gt;copy and paste&lt;/i&gt; hlášek z poznámek, tak jsem si to pořádně přečetl:&lt;/div&gt;

&lt;pre&gt;Traceback (most recent call last):
  File &#34;/usr/lib/python3.8/threading.py&#34;, line 932, in _bootstrap_inner
    self.run()
  File &#34;/usr/lib/python3.8/threading.py&#34;, line 870, in run
    self._target(*self._args, **self._kwargs)
  File &#34;/home/md/git/osgar/osgar/drivers/oak_camera.py&#34;, line 315, in run_input
    with dai.Device(pipeline, device_info) as device:
RuntimeError: NeuralNetwork: Blob compiled for 13 shaves,
                    but only 12 are available in current configuration.
NeuralNetwork allocated resources: shaves: [0-11] cmx slices: [0-11]
ColorCamera allocated resources: no shaves; cmx slices: [13-15]
StereoDepth allocated resources: shaves: [13-13] cmx slices: [12-12]
ImageManip allocated resources: shaves: [15-15] no cmx slices.&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; takže to i vypisovalo &lt;i&gt;kdo co chce&lt;/i&gt;. Jako vedlejší efekt jsem získal &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#250510&#39;&gt;zářez do Marathonu&lt;/a&gt; - 1.1km, takže dobrý.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 452px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/oak-d-pro/road-detection-13-shaves.jpg&#39;&gt;&lt;img src=&#39;/articles/oak-d-pro/road-detection-13-shaves_t.jpg&#39; alt=&#39;Detekce cesty pomocí 13 SHAVE jader&#39; title=&#39;Detekce cesty pomocí 13 SHAVE jader&#39; class=&#39;border&#39;  width=&#39;446&#39; height=&#39;253&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/oak-d-pro/road-detection-13-shaves.jpg&#39;&gt;Detekce cesty pomocí 13 SHAVE jader&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. volný „překlad” SHAVE na šlupku &amp;hellip; no je to hlavně holení, ale také &lt;i&gt;odřiznout tenký plátek&lt;/i&gt;, tj. slupku a šlupka zní lépe &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
&amp;mdash; &lt;a href=&#39;https://slovnik.seznam.cz/preklad/anglicky_cesky/shave&#39; class=&#39;external&#39;&gt;seznam slovnik&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260507&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. května 2026 &amp;mdash; Vytloukání AI AI (dříve klínu klínem)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Loni na podzim Luxonis vydal novou &lt;a href=&#39;https://pypi.org/project/depthai&#39; class=&#39;external&#39;&gt;DepthAI v3&lt;/a&gt;. Upgradeovat krátce před &lt;a href=&#39;/competitions/dtc/en&#39;&gt;DARPA Triage Challenge&lt;/a&gt; by byl holý nesmysl
(stačilo už to, že jsem se tam přihlásil) a tak na &lt;i&gt;upgrade&lt;/i&gt; došlo až po návratu. Nová verze slibovala nová kouzla (SLAM, &amp;hellip; vlastně už nevím), ale půl roku uteklo a když
došlo „na lámání chleba” (tedy robotů, viz &lt;a href=&#39;/competitions/dobyvani-hradu/en#260501&#39;&gt;Dobývání hradu&lt;/a&gt;), tak příprava byla nedostatečná a pro YOLO modely jsem musel přeskakovat
zpět na verzi 2.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem ještě &lt;i&gt;nabuzen&lt;/i&gt; předešlým neúspěchem, tak jsem chtěl rozchodit nějaký triviální &lt;b&gt;příklad s vlastní neuronkou&lt;/b&gt; (ona tedy není tak &lt;i&gt;vlastní&lt;/i&gt;, ale to teď pominu).
A drhne to. Fest. Tak jsem pustil druhý počítač a „nechť se trápí AI”, proč já?! Možná jsem to měl spíše nazvat &lt;i&gt;vytloukání DepthAI AI&lt;/i&gt;? V každém případě je zajímavé
to sledovat. Ještě bych možná na svoji obhajobu použil fakt, že verzi 3.0 jsem přeskočil, 3.1 jsem rozchodil základ z příkladu (asi hlavně nové &lt;i&gt;features&lt;/i&gt;), 3.3 padala,
3.5 vypadala rozumně, ale to YOLO jsem nedotáhl a teď zkouším 3.6.1 &amp;hellip; resp. vedle &lt;i&gt;Elena&lt;/i&gt;. Takže první pozorování je, že dokumentace je nedostatečná (dříve bývala lepší).
A tak místo hledání na Google hledá uvnitř zdrojáků. Na každý krůček si napíše jednořádkový prográmek a rovnou ho zkouší s připojenou kamerou. A jelikož je to detekce v obrázku
(přihodila si tam sama &lt;i&gt;opencv-python&lt;/i&gt;), ale pouštět to z &lt;i&gt;CMD line&lt;/i&gt; se špatně ověřuje, tak alespoň &lt;i&gt;python -m py_compile main.py&lt;/i&gt; (pro mne novinka).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No a já v mezičase nemám moc co dělat, než mačkat &lt;i&gt;Enter&lt;/i&gt; a sledovat její &lt;i&gt;myšlenkové pochody&lt;/i&gt;, tak vedle sepisuji tento &amp;hellip; hmm blábol? výlev? pamflet?
Trošku škodolibě mne těší, že už se dostala do fáze, kde jsem byl já a padalo to (v OSGARu):&lt;/div&gt;

&lt;pre&gt;[2026-05-07 16:28:20.553] [depthai] [error] Communication exception
 - possible device error/misconfiguration.
 Original message &#39;Couldn&#39;t read data from stream: &#39;__x_6_depth&#39; (X_LINK_ERROR)&#39;
[2026-05-07 16:28:20.553] [depthai] [error] Communication exception
 - possible device error/misconfiguration.
 Original message &#39;Couldn&#39;t read data from stream: &#39;__x_1__out&#39; (X_LINK_ERROR)&#39;
[2026-05-07 16:28:20.552] [depthai] [error] Communication exception
 - possible device error/misconfiguration.
 Original message &#39;Couldn&#39;t read data from stream: &#39;__x_9_out&#39; (X_LINK_ERROR)&#39;
[1844301091A3BD0800] [1.6] [1778164102.050] [host] [warning] Closed connection

[1844301091A3BD0800] [1.6] [1778164102.050] [host] [warning] Attempting to reconnect. Timeout is 10000ms&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;No teď zkouší &lt;i&gt;ImageManipConfig&lt;/i&gt;, aby neuronku nakrmila obrázkem o správném rozměru &amp;hellip; nevím, zda se mi jí podařilo přesvědčit, ať si to pouští sama, že to můžu zavřít sám &amp;hellip;
vypadá to, že ANO.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;22:17 &amp;mdash; už mne přestalo bavit mačkat &lt;i&gt;Enter&lt;/i&gt; a stejně tak poslouchat notifikace &lt;i&gt;odpojení/připojení kamery&lt;/i&gt; po restartu&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;22:20 &amp;mdash; přitvrdila &lt;b&gt;taskkill /F /IM python.exe&lt;/b&gt; &amp;hellip; o co, že mi odstřelí i jiné puštěné konzole &amp;hellip; jj&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;22:22 &amp;mdash; zapomíná pouštět &lt;i&gt;uv run main.py&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;22:24 &amp;mdash; už zase zabíjí všechny Pythony (jako chápu &lt;i&gt;RuntimeError: No available devices&lt;/i&gt;)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;22:27 &amp;mdash; zabíjení všech Pythonů už je běžná věc, tak to chce volat před každým puštěním &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;This version is optimized for stability on Windows with DepthAI 3.6.1 and serves as foundational &#34;Hello World&#34; for your specific model and hardware setup.&lt;/b&gt; &amp;hellip; skoro se jí
bojím říci, že to nefunguje a stále to crashuje &amp;hellip; ještě je možné, že ta kamera už je také úplně poblázněná?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, vypnul jsem a zapnul kameru &amp;hellip; a chovalo se to jinak! Možná to je ten &lt;i&gt;primární zakopaný pes&lt;/i&gt; a proto se to tak blbě ladí! Aneb pokud jedno puštění ovlivní všechny
následující, tak je třeba VŽDY vytahovat USB a začít od nuly &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi to pro dnešek uzavřu hláškou, od stejné AI: &lt;i&gt;„Vytloukání klínu klínem“ je přísloví označující řešení problému (jednoho klínu) jiným, novým problémem (druhým klínem). Situace se často zhorší, místo aby se vyřešila. Typicky se tento obrat používá pro nebezpečnou dluhovou spirálu, kdy si lidé berou další půjčky na splacení těch předchozích.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. ještě jsem použil silnější AI (větší klín) a ta to během pár sekund opravila, aby to nepadalo &amp;hellip; jen ty kužely to stále nedetekuje. Ale to určitě bude nějaká ptákovina &amp;hellip; je čas jít spát.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/articles/oak-d-pro/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Matty (dvojčata)</title>
    <link rel='alternate' href="https://robotika.cz/robots/matty-twins/en"/>
    <id>https://robotika.cz/robots/matty-twins/en</id>
    <updated>2024-12-08T00:00:00Z</updated>
    <author><name>Martin Dlouhý a Martin Locker</name></author>
    <summary type='html'>
        &lt;b&gt;Matty&lt;/b&gt; je další robot z dílny Martina Lockera s časovou známkou &lt;i&gt;Listopad 2024&lt;/i&gt;.
Jedná se o čtyřkolového kloubového robota (zatím s pasivním kloubem) s pohonem na všechna čtyři kola.
Je to relativně malý robot, ale s velkými plány. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
&lt;b&gt;Blog update: &lt;/b&gt;5/5/2026 &amp;mdash; &lt;a href=&#39;/robots/matty-twins/en#260505&#39;&gt;Matty Dobyvatel&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/cs&#39; class=&#39;external&#39;&gt;Mattyho domovské stránky&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m1.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m1_t.jpg&#39; alt=&#39;Matty M-01&#39; title=&#39;Matty M-01&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;213&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m1.jpg&#39;&gt;Matty M-01&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#241208&#39;&gt;241208 - Představení robota&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#241210&#39;&gt;241210 - General Driver for Robots&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#241220&#39;&gt;241220 - Předvánoční upoutávka&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250105&#39;&gt;250105 - Vánoční nadílka&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250111&#39;&gt;250111 - Nastevení serv a kalibrace kloubu&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250114&#39;&gt;250114 - První ujeté centimetry&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250119&#39;&gt;250119 - M02-OSGAR Go 1m&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250128&#39;&gt;250128 - Matty M03 a DTC-WS2&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250130&#39;&gt;250130 - Odroid na palubě&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250202&#39;&gt;250202 - Neviditelný pes&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250224&#39;&gt;250224 - Od zdi ke zdi&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250307&#39;&gt;250307 - Kompletace nárazníku a Otloukánek2&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250314&#39;&gt;250314 - STOP módy a záhada hlavolamu (nevyřešená)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250316&#39;&gt;250316 - Megabota&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250317&#39;&gt;250317 - Bugfix PR #1006&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250904&#39;&gt;250904 - Zapojení LEDek&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#250912&#39;&gt;250912 - Matty M04 a M05&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/matty-twins/en#260505&#39;&gt;260505 - Matty Dobyvatel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog / Matty (dvojčata)&lt;/h1&gt;
&lt;a id=&#34;241208&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. prosince 2024 &amp;mdash; Představení robota&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Pokud jste včera byli na &lt;a href=&#39;https://robodoupe.cz/2024/vanocni-robodoupe-bude-7-12/&#39; class=&#39;external&#39;&gt;vánočním RoboDoupěti&lt;/a&gt;, tak jste mohli nového robota vidět naživo.
V opačném případě doporučuji &lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/cs&#39; class=&#39;external&#39;&gt;Mattyho domovské stránky&lt;/a&gt; nebo přímo link na
&lt;a href=&#39;https://youtu.be/wsIJVI-SSFo&#39; class=&#39;external&#39;&gt;video testovací jízdy&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;O čem bude &lt;i&gt;tento&lt;/i&gt; blog? Bude o &lt;i&gt;Mattyho dvojčatech&lt;/i&gt;, resp. jeho klonech. Jestli se ptáte, jak je rozlišíte, tak podle barvy. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Ve frontě je &lt;i&gt;žlutá, oranžová, červená, světle modrá, zelená tmavá, zelená světlá, růžová&lt;/i&gt; &amp;hellip; zatím to vidím „růžově”. Pro dnešek tedy jen převzaté
foto součastek Mattyho M1:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-parts.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-parts_t.jpg&#39; alt=&#39;Matty v součastkách&#39; title=&#39;Matty v součastkách&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-parts.jpg&#39;&gt;Matty v součastkách&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;241210&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. prosince 2024 &amp;mdash; General Driver for Robots&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Nemůžu si pomoci, ale když vidím &lt;i&gt;General&lt;/i&gt;, tak mne znovu a znovu pobaví vzpomínka na registraci na &lt;a href=&#39;/competitions/subtchallenge/en&#39;&gt;SubT&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Bylo tam na výběr:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Team lead&lt;/li&gt;

&lt;li&gt;General member&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; &lt;i&gt;no generál nejsem, tak jsem dal team lead&lt;/i&gt; &amp;hellip; a tak jsme měli dva registrované vedoucí. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, zpátky k &lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/cs&#39; class=&#39;external&#39;&gt;Mattymu&lt;/a&gt; a jeho řízení. Martin Locker použil
&lt;a href=&#39;https://www.waveshare.com/general-driver-for-robots.htm&#39; class=&#39;external&#39;&gt;Waveshare driver&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/waveshare-driver.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/waveshare-driver_t.jpg&#39; alt=&#39;Waveshare General Driver for Robots (převzato z waveshare.com)&#39; title=&#39;Waveshare General Driver for Robots (převzato z waveshare.com)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;323&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/waveshare-driver.jpg&#39;&gt;Waveshare General Driver for Robots (převzato z waveshare.com)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Až tedy budu mít všechny díly pohromadě (zatím mám serva, kola a tyto řídící desky), tak bude třeba do robota nahrát firmware, připadně ho někdy updateovat.
Není nad to si to vyzkoušet „dokud to ještě nehoří”. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Ono to asi také úplně triviální nebude, protože hlavní podpora je pro Windows a na roboty
mám primárně Linux/Ubuntu (staré).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Poradil jsem se s &lt;a href=&#39;https://www.perplexity.ai/search/i-would-like-to-program-wavesh-C9fokBGCTYW9WV5tG6cxuw&#39; class=&#39;external&#39;&gt;AI&lt;/a&gt;, protože jinak mi vyhledávání dávalo spíše
odkazy na obchody, kde desku koupit, a klíčové slovo &lt;i&gt;Ubuntu&lt;/i&gt; to téměř ignorovalo. &lt;i&gt;Perplexity&lt;/i&gt; navrhovalo buď &lt;i&gt;Arduiono IDE&lt;/i&gt; nebo &lt;i&gt;PlatformIO&lt;/i&gt;.
&lt;i&gt;Beginner-friendly&lt;/i&gt; vs. &lt;i&gt;advanced development&lt;/i&gt; &amp;hellip; no s Arduinem jsem kdysi něco na Windows dělal, ale nechť se tváříme, že děláme &lt;i&gt;pokročilý vývoj&lt;/i&gt;.
Po pravdě si nepamatuji, co MartinL má, ale skoro bych tipoval právě PlatformIO &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Překvapilo mne, že &lt;a href=&#39;https://platformio.org/install/ide?install=vscode&#39; class=&#39;external&#39;&gt;PlatformIO&lt;/a&gt; je postanevo nad Microsoftím &lt;a href=&#39;https://code.visualstudio.com/docs/?dv=linux64_deb&#39; class=&#39;external&#39;&gt;Visual Code&lt;/a&gt;
(ano, daleko od Windows jsem neutekl), ale opravdu podporuje i Linux.&lt;/div&gt;

&lt;pre&gt;sudo apt install ~/Downloads/code_1.95.3-1731513102_amd64.deb&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Instalace &lt;i&gt;PlatformIO extension&lt;/i&gt; se zasekla na tom, že to nemohlo najít Python 3.6+ &amp;hellip; systémový mám prastarý Python 3.8, ale faktický problem byl v
&lt;a href=&#39;https://github.com/platformio/platformio-core-installer/issues/85&#39; class=&#39;external&#39;&gt;python3-venv&lt;/a&gt;. Naštěstí to varování je už na úvodní stránce:
&lt;i&gt;Linux Users: To ensure a smooth experience with PlatformIO, it is essential to have the python3-venv package installed on your system.&lt;/i&gt;
&amp;hellip; tak pak už to bylo &lt;i&gt;smooth&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě dvě drobnosti:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;USB kabel je &lt;i&gt;Download interface 	Type-C&lt;/i&gt; &amp;hellip; tj. takový ten symetrický, placatý&lt;/li&gt;

&lt;li&gt;u výběru HW při vytváření projektu je třeba vybrat &lt;i&gt;ESP32 Dev Module&lt;/i&gt; (to říká návod, fakticky je tam ještě něco navíc)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/python-venv.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/python-venv_t.jpg&#39; alt=&#39;Dev Console - python&#39; title=&#39;Dev Console - python&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/python-venv.jpg&#39;&gt;Dev Console - python&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/first-upload.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/first-upload_t.jpg&#39; alt=&#39;První úspěšný upload&#39; title=&#39;První úspěšný upload&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/first-upload.jpg&#39;&gt;První úspěšný upload&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m1-joint.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m1-joint_t.jpg&#39; alt=&#39;Matty M-01 (kloub)&#39; title=&#39;Matty M-01 (kloub)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;213&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m1-joint.jpg&#39;&gt;Matty M-01 (kloub)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m1-bottom.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m1-bottom_t.jpg&#39; alt=&#39;Matty M-01 (spodek)&#39; title=&#39;Matty M-01 (spodek)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;213&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m1-bottom.jpg&#39;&gt;Matty M-01 (spodek)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;241220&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. prosince 2024 &amp;mdash; Předvánoční upoutávka&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Je to již týden, co mi MartinL poslal foto, jak přibývají dílky na &lt;i&gt;Matty-M02&lt;/i&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 654px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m2-parts.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m2-parts_t.jpg&#39; alt=&#39;Díly na Matty-M02&#39; title=&#39;Díly na Matty-M02&#39; class=&#39;border&#39;  width=&#39;648&#39; height=&#39;432&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m2-parts.jpg&#39;&gt;Díly na Matty-M02&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A včera psal: &lt;i&gt;... tak jsem si dnes hrál na Popelku a počítal šroubky (189 ks na jednoho Mattyho).
&#34;Stavebnice&#34; M2 je tedy hotová (chybí jen jeden konektor - snad Dan přiveze).
Pokud bys chtěl dárek pod stromeček, tak si pro něj můžeš přijet.&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kdyby auto fungovalo a nebylo to „trošku z ruky” tak bych asi hned vyrazil
a vánoce by byly v plném dětském nadšení. Hmm &amp;hellip; ještě to asi zvážím.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. možná bych měl doplnit, že MartinL sestavil i kompletní seznam použitých součastek a ty už jsem minulý týden v pěti baličcích vyzvedl.
Byly to tyto internetové obchody:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.laskakit.cz/&#39; class=&#39;external&#39;&gt;https://www.laskakit.cz/&lt;/a&gt; &amp;mdash; WaveShare serva a řídící deska&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.krabicky-pro-elektroniku.cz/&#39; class=&#39;external&#39;&gt;https://www.krabicky-pro-elektroniku.cz/&lt;/a&gt; &amp;mdash; plastové krabičky&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.rcobchod.cz/&#39; class=&#39;external&#39;&gt;https://www.rcobchod.cz/&lt;/a&gt; &amp;mdash; kola&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.bighobby.cz/&#39; class=&#39;external&#39;&gt;https://www.bighobby.cz/&lt;/a&gt; &amp;mdash; baterky&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.hadex.cz/&#39; class=&#39;external&#39;&gt;https://www.hadex.cz/&lt;/a&gt; &amp;mdash; emergency STOP tlačítka&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250105&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. ledna 2025 &amp;mdash; Vánoční nadílka&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem si vyzvednul a dnes rozbalil &lt;i&gt;balíček&lt;/i&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-box.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-box_t.jpg&#39; alt=&#39;Matty M02 v krabici&#39; title=&#39;Matty M02 v krabici&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-box.jpg&#39;&gt;Matty M02 v krabici&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; a ano, byl to „dárek”, který jsem si opravdu přál &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-parts.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-parts_t.jpg&#39; alt=&#39;jednotlivé díly&#39; title=&#39;jednotlivé díly&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-parts.jpg&#39;&gt;jednotlivé díly&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Fascinovalo mne to provedení &amp;mdash; ano, toto není (zatím?) seriově vyráběná stavebnice, ale neumím vyjádřit to potěšní
nad promyšlenou konstrukcí, dokonale pasujícími díly atd. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Podle návodu jsem si zatím poskládal kloub a jedno kolo:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-joint.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-joint_t.jpg&#39; alt=&#39;kloub&#39; title=&#39;kloub&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-joint.jpg&#39;&gt;kloub&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-servo-parts.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-servo-parts_t.jpg&#39; alt=&#39;servo&#39; title=&#39;servo&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-servo-parts.jpg&#39;&gt;servo&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-leg.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-leg_t.jpg&#39; alt=&#39;zapouzdření serva&#39; title=&#39;zapouzdření serva&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-leg.jpg&#39;&gt;zapouzdření serva&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-wheel.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-wheel_t.jpg&#39; alt=&#39;&amp;quot;noha&amp;quot; s kolem&#39; title=&#39;&amp;quot;noha&amp;quot; s kolem&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-wheel.jpg&#39;&gt;&amp;quot;noha&amp;quot; s kolem&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kabel k servu mne lehce zaskočil, ale hned na druhý pohled to dává smysl &amp;mdash; jsou to serva na společné sběrnici, takže
je možné je zřetězit (MartinL to teď potvrzuje: &lt;i&gt;U serva jsou oba konektory zcela totožné. Takže to můžeš dát do libovolného.&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pokračování asi zítra &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. mimochodem, MartinL vzal &lt;i&gt;M01&lt;/i&gt; přes svátky na &lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/cs#241226&#39; class=&#39;external&#39;&gt;projižďku venku&lt;/a&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-pneu.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-pneu_t.jpg&#39; alt=&#39;kolo s pneumatikou&#39; title=&#39;kolo s pneumatikou&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-pneu.jpg&#39;&gt;kolo s pneumatikou&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-4wheels.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-4wheels_t.jpg&#39; alt=&#39;všechna čtyři kola&#39; title=&#39;všechna čtyři kola&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-4wheels.jpg&#39;&gt;všechna čtyři kola&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-frame1.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-frame1_t.jpg&#39; alt=&#39;první rám&#39; title=&#39;první rám&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-frame1.jpg&#39;&gt;první rám&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-with-boxes.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-with-boxes_t.jpg&#39; alt=&#39;M02 podvozek s krabicemi&#39; title=&#39;M02 podvozek s krabicemi&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;212&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-with-boxes.jpg&#39;&gt;M02 podvozek s krabicemi&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250111&#34;&gt;&lt;/a&gt;
&lt;h2&gt;11. ledna 2025 &amp;mdash; Nastevení serv a kalibrace kloubu&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Toto &lt;i&gt;dokumentační foto&lt;/i&gt; asi MartinaL moc nepotěší, ale &amp;hellip; takto vypadá aktuální stav:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-servos.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-servos_t.jpg&#39; alt=&#39;Matty M02 se zapojenými servy&#39; title=&#39;Matty M02 se zapojenými servy&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-servos.jpg&#39;&gt;Matty M02 se zapojenými servy&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První pozorování, že žena má pravdu, a že je na čase si konečně stůl trošku uklidit.
Druhé pozorování je, že na Mattym nejsou plastové krabice, přestože 4mm díry jsem již provrtal
(vzadu je vidět spodek vrtačky &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;), ale &amp;hellip; na nastavení serv se musím stejně dostat ke každému
zvlášť. Defaultně mají totiž všechna ID=1.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Návod od MartinaL (kopírují si ho sem pro sebe, až mail zapadne v nenávratnu):&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;1. do desky s ESP nahraješ ten kód (přeposílání ze sériáku na sériák)&lt;/li&gt;

&lt;li&gt;2. připojíš kabel od serva do desky - jsou tam dva identické konektory, tedy do libovolného z nich&lt;/li&gt;

&lt;li&gt;3. připojíš napájení - kabel se stop tlačítkem (musíš mít připájený ten konektor k baterce), zapneš napájení&lt;/li&gt;

&lt;li&gt;4. připojíš usb kabel k PC (jako v 1.)&lt;/li&gt;

&lt;li&gt;5. pustíš sw od feetechu: &lt;a href=&#39;https://www.theremino.com/wp-content/uploads/files/SmartMotors/Feetech_Motors_Programming_Kit_V1.1.zip&#39; class=&#39;external&#39;&gt;https://www.theremino.com/wp-content/uploads/files/SmartMotors/Feetech_Motors_Programming_Kit_V1.1.zip&lt;/a&gt;
&lt;i&gt;FD_1_9_8_1.exe&lt;/i&gt;  viz. &lt;a href=&#39;/articles/digitalservo/en&#39;&gt;/articles/digitalservo/&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;6. vybereš COM port a Open&lt;/li&gt;

&lt;li&gt;7. tlačítko Search a mělo by to najít jedno servo s ID 1&lt;/li&gt;

&lt;li&gt;8. na záložce programming zvolíš registr 5 ID, vpravo dole do editačního pole napíšeš nové ID a dáš save&lt;/li&gt;

&lt;li&gt;9. mám serva číslovaná: 1 - levé přední, 2 - pravé přední, 3 - levé zadní, 4 - pravé zadní&lt;/li&gt;

&lt;li&gt;10. dále upravíš registry:&lt;/li&gt;

&lt;li&gt;33 Work mode na 1 (režim řízení rychlosti)&lt;/li&gt;

&lt;li&gt;37 Velocity P Gain na 50&lt;/li&gt;

&lt;li&gt;39 Velocity I Gain na 25&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;DONE.&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ten Freetech program je celkem fajn (byl tedy třeba pustit na Windows), ale s každým servem jsem si trošku zatočil &amp;mdash; pravá se pro hodnotu 100
točí pomalu dopředu, levá pak dozadu. Snad je to očekávané.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhá úloha byla kalibrace kloubu, viz &lt;a href=&#39;https://github.com/robotika/matty/pull/4&#39; class=&#39;external&#39;&gt;PR Test joint encoder #4&lt;/a&gt;. I toto fungovalo hned. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zbývá toho ještě hodně, ale &amp;hellip;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;po mechanické stránce vyvrtat 20mm a 22mm díry do krabice (moje děrovací pilky začínají na 32mm)&lt;/li&gt;

&lt;li&gt;napsat &lt;a href=&#39;https://github.com/robotika/osgar/compare/master...feature/matty&#39; class=&#39;external&#39;&gt;OSGAR driver pro Mattyho&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; pak bych chtěl ujet 1 metr po kabelu z notebooku. A následně počítač na robotovi a OAK-D kamera.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250114&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. ledna 2025 &amp;mdash; První ujeté centimetry&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Asi je zase pomalu na čase si udělat pár poznámek a odreportovat aktuální stav. Asi skočím rovnou na konec na
&lt;a href=&#39;https://youtu.be/yZPdzgUvFUQ&#39; class=&#39;external&#39;&gt;video se STOP tlačítkem&lt;/a&gt;. Já vím, žádný trhák a asi ani organizátoři DTC z toho
nebudou extra odvázaný. Ale je to &lt;i&gt;milestone&lt;/i&gt;, jede to samo s „pseudo-připájenou” baterkou. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; A krabice jsou
také přidělané &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-first-move.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-first-move_t.jpg&#39; alt=&#39;první pohyb&#39; title=&#39;první pohyb&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-m02-first-move.jpg&#39;&gt;první pohyb&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jako cesta k tomuto stavu nebyla úplně přímočará a co vidíte je &lt;i&gt;deep fake&lt;/i&gt; nebo &lt;i&gt;soft fake&lt;/i&gt;? &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Připomněl bych si také „mučící nástroje”, které byly použity k vytvoření děr (pro STOP tlačítko a dole pro kabeláž):&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/holes-cutting-tools.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/holes-cutting-tools_t.jpg&#39; alt=&#39;nástroje na děrování krabice&#39; title=&#39;nástroje na děrování krabice&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/holes-cutting-tools.jpg&#39;&gt;nástroje na děrování krabice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; jako nejsem si jist, že to byly ty správné nástroje (asi jsou na dřevo), ale chvíli odpadávaly umělé špony
a pak se objevila doslova vysekaná díra.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Chtěl jsem popisovat &lt;i&gt;Mattyho protokol&lt;/i&gt;, ale asi na to teď už nemám sil, tak to z názvu smažu (jako jsem před půl hodinou odmazal Odroid H4+). Co ale
můžu přiznat je, že M02 na tom videu nakonec ještě nejede s OSGAR driverem, dokonce to ani neřídí žádný počítač! Na Win7
jsem nastavil rychlost serv na 500 tiků vpravo a -500 tiků vlevo, vytrhnul USB kabel, zavřel krabici a dal na zem.
ESP32 mi totiž po USB píše: &lt;b&gt;Guru Meditation Error: Core  1 panic&#39;ed (LoadProhibited)&lt;/b&gt;. Zaprvé mne to uráží
a zadruhé nevím, co to je.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250119&#34;&gt;&lt;/a&gt;
&lt;h2&gt;19. ledna 2025 &amp;mdash; M02-OSGAR Go 1m&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Matty M02 už jede z &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGARu&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Rozlousknul to MartinL (viz &lt;a href=&#39;https://github.com/robotika/matty/pull/6&#39; class=&#39;external&#39;&gt;Simple servo reading test #6&lt;/a&gt;),
aneb „nic není zadarmo” a externí &lt;i&gt;knihovna&lt;/i&gt; na obsluhu serv je dost mizerná. Zajímavé bylo, že když to zkompiloval MartinL ve starém prostředí, tak to fungovalo,
ale když jsem to zkompiloval já v novém (později i MartinL doinstaloval druhé prostředí), tak se objevil &lt;i&gt;Guru&lt;/i&gt; (chápej „Guru Meditation Error”).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 311px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty-odom.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-odom_t.png&#39; alt=&#39;Matty odometrie&#39; title=&#39;Matty odometrie&#39; class=&#39;border&#39;  width=&#39;305&#39; height=&#39;269&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty-odom.png&#39;&gt;Matty odometrie&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no s tím kreslením budu muset něco udělat. :-( O co se autor pokoušel, byla demonstrace jak je úhel v kloubu provázán s poloměrem kružnice,
po které se kloubový robot pohybuje. Ve zkratce záleží na vzdálenosti k kloubu, směr robota odpovídá tečně a tak dostaneme &lt;i&gt;tan&lt;/i&gt;, snad. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
(jako moc se nesměju, protože když jsem viděl jak počítám odometrii u Pata, tak to vůbec nechápu a nejspiše je to špatně!)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m02-osgar-go1m.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m02-osgar-go1m_t.png&#39; alt=&#39;Enkodery pro jízdu 1m rovně&#39; title=&#39;Enkodery pro jízdu 1m rovně&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m02-osgar-go1m.png&#39;&gt;Enkodery pro jízdu 1m rovně&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m02-osgar-go1m-back.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m02-osgar-go1m-back_t.png&#39; alt=&#39;Enkodery při couvání 1m&#39; title=&#39;Enkodery při couvání 1m&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m02-osgar-go1m-back.png&#39;&gt;Enkodery při couvání 1m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, zajímavé! Asi by to chtělo ještě X-krát zopakovat, ale vypadá to, že když jede robot dopředu, tak se neztrácí žádná data, ale při cování
je to celkem divoké?! Ještě jestli jsem neměl omylem zmáčknuté STOP tlačítko? Příště.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. video &lt;a href=&#39;https://youtu.be/8M2-tW2yx94&#39; class=&#39;external&#39;&gt;Matty M02-OSGAR Go 1m and Yennie&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m02-and-yennie.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m02-and-yennie_t.jpg&#39; alt=&#39;Matty M02 and Yennie&#39; title=&#39;Matty M02 and Yennie&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m02-and-yennie.jpg&#39;&gt;Matty M02 and Yennie&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250128&#34;&gt;&lt;/a&gt;
&lt;h2&gt;28. ledna 2025 &amp;mdash; Matty M03 a DTC-WS2&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Začnu obrázky:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m03-box-of-parts.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m03-box-of-parts_t.jpg&#39; alt=&#39;Krabice s díly M03&#39; title=&#39;Krabice s díly M03&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m03-box-of-parts.jpg&#39;&gt;Krabice s díly M03&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m03-servos.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m03-servos_t.jpg&#39; alt=&#39;Nohy, resp. serva&#39; title=&#39;Nohy, resp. serva&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m03-servos.jpg&#39;&gt;Nohy, resp. serva&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m03-joint.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m03-joint_t.jpg&#39; alt=&#39;Kloub&#39; title=&#39;Kloub&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m03-joint.jpg&#39;&gt;Kloub&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; asi jsem mohl udělat menší náhledy, ale dnes toho textu moc nebude, tak ať tam visí alespoň ty obrázky. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tentokrát jsem začal s kolama a „malou seriovku”, tj. místo skládání jednoho kola po druhém jsem 4x opakoval daný úkon. A šlo to rychleji.
Následoval kloub a potvrzuji, že je to rozhodně ta nejsložitější část Mattyho. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; A teď už to „jenom dodělat”,
tj. šroubovat a nevykecávat se tady.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ten druhý kód &lt;i&gt;DTC-WS2&lt;/i&gt; je zkratka za zprávu:
&lt;i&gt;Hello Team Robotika,
Thank you for your submission. We are pleased to inform you that you have qualified for WS2. We look forward to your participation in the coming weeks.
DARPA Triage Challenge Team&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A pro dnešek bych to uzavřel řádkem v Pythonu:&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; datetime.date(2025, 3, 7) - datetime.date.today()
datetime.timedelta(days=38)&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250130&#34;&gt;&lt;/a&gt;
&lt;h2&gt;30. ledna 2025 &amp;mdash; Odroid na palubě&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes bude asi zápis ještě kratší než posledně. Nejprve Matty M03 je v zásadě zkompletovaný:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/m03-frame.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/m03-frame_t.jpg&#39; alt=&#39;Zkompletovaný rám M03&#39; title=&#39;Zkompletovaný rám M03&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/m03-frame.jpg&#39;&gt;Zkompletovaný rám M03&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ano, zase se mi podařilo přidělat kola vzhůru nohama &amp;mdash; pozná se to podle senzoru kloubu, který by měl být nahoru &amp;hellip; a nebyl, ehm.
Opraveno.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další zádrhel je pozice magnetu, jestli jsem ještě něco dalšího neprohodil:&lt;/div&gt;

&lt;pre&gt;Width:   188 Angle: -356.74
Width:   184 Angle: -357.10
Width:   175 Angle: -357.89
Width:   165 Angle: -358.77
Width:   154 Angle: -359.64
Width:   135 Angle: -361.40
Width:  4280 Angle:  -0.17
Width:  4263 Angle:  -1.31
Width:  4258 Angle:  -2.11
Width:  4244 Angle:  -3.34
Width:  4232 Angle:  -4.39
Width:  4220 Angle:  -5.36&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; měření pro skoro přímý směr &amp;hellip; což ale bude potřebovat SW fix na singularitu (MartinL psal, že je magnet přilepený, takže HW řešení bych zatím ignoroval).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dále jsem „tuneloval” USB kabel z jedné krabice do druhé &amp;mdash; i tady je mi nyní úplně jasné doporučení, ať to udělám hned na
začátku při sestavování kloubu. U &lt;i&gt;Ruďocha&lt;/i&gt;/&lt;i&gt;Červenáčka&lt;/i&gt; jsem to už udělal, ale v době sestavování &lt;i&gt;Zelenáče&lt;/i&gt; jsem ještě
krátké USB kabely neměl pořízené.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak to bylo krátké „kvantové cvičení” s Odroidem (řídící počítač) &amp;mdash; kupodivu po startu WiFi hned fungovala a připojila se sama
na domácí síť (to mi posledně nešlo, ale třeba to bylo tím rebootem?). Ale když jsem připojil kameru, tak jsem ztratil spojení! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Hmm, mám pocit, že to stíní anténu WiFi USB dongle, ale jistotu nemám. Dobrá zpráva ale je, že když jsem dal USB kabel kamery do
vedlejší skupiny, tak jsem měl jak kameru, tak WiFi.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A ted rychle &lt;i&gt;finále&lt;/i&gt; &amp;mdash; jízda s &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGARem&lt;/a&gt;, kamerou a palubním počítačem:
&lt;a href=&#39;https://youtu.be/fIONpq9k2Ak&#39; class=&#39;external&#39;&gt;https://youtu.be/fIONpq9k2Ak&lt;/a&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/fIONpq9k2Ak&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty-m02-odroid.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/fIONpq9k2Ak&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250202&#34;&gt;&lt;/a&gt;
&lt;h2&gt;2. únor 2025 &amp;mdash; Neviditelný pes&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Pro dnešek by to bylo jen pár drobností s tím, že většina je ještě „rozpracovaná”:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;funguje &lt;i&gt;rsync&lt;/i&gt; pro synchronizaci logů z Matty 02 do notebooku (aktuální &lt;i&gt;base station&lt;/i&gt;)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.perplexity.ai/search/how-to-login-via-ssh-from-one-x5bS3gEiSV.V_g3PK3SItA&#39; class=&#39;external&#39;&gt;přidání ssh klíčů&lt;/a&gt; pro snazší připojování a kopírování z robota nebo updateování gitu&lt;/li&gt;

&lt;li&gt;nahrání pár vzorků pro detekci překážek&lt;/li&gt;

&lt;li&gt;jednoduchá vizualizace pomocí &lt;a href=&#39;https://www.open3d.org/&#39; class=&#39;external&#39;&gt;Open3D&lt;/a&gt; (&lt;a href=&#39;https://www.perplexity.ai/search/how-to-view-3d-point-cloud-fro-l6O8lKRzROewlp2FjK8oFg&#39; class=&#39;external&#39;&gt;AI nápověda&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no a pak už jen ten &lt;i&gt;neviditelný pes&lt;/i&gt; &amp;hellip; aneb naše Yennie opravdu nemá roboty ráda:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/oak-d-yennie.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/oak-d-yennie_t.jpg&#39; alt=&#39;Yennie z M02&#39; title=&#39;Yennie z M02&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/oak-d-yennie.jpg&#39;&gt;Yennie z M02&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Uznávám, že v tom statickém obrázku níže skoro nic vidět není &amp;hellip; ale ten bílý flek (chybějící body) jsou proběhnuvší pes. Ve zkratce pokud nejsou hloubková data, tak je to asi překážka,
není úplně špatné rozhodnutí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/open3d-dog.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/open3d-dog_t.jpg&#39; alt=&#39;Neviditelný pes&#39; title=&#39;Neviditelný pes&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/open3d-dog.jpg&#39;&gt;Neviditelný pes&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No z &lt;a href=&#39;https://youtu.be/XUv3zG4wfaE&#39; class=&#39;external&#39;&gt;kratičkého videa&lt;/a&gt; mám pocit, že ten problém bude někde jinde. Ono to bílé místo bude spíše &lt;i&gt;hloubkový stín&lt;/i&gt;, co probíhající pes zakrývá&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. zapomněl jsem ještě na zprávu, že Matty M03 už jezdí jak má &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; kompletace čeká na Odroida a provrtání děr do plastové krabice.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250224&#34;&gt;&lt;/a&gt;
&lt;h2&gt;24. únor 2025 &amp;mdash; Od zdi ke zdi&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;V sobotu mi MartinL zapojil nové nárazníky (viz &lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/naraznik3.jpg&#39; class=&#39;external&#39;&gt;foto&lt;/a&gt; na domovské stránce). U sebe jsem měl jenom M03
(M02 zůstal ve škole v rámci příprav na &lt;a href=&#39;/competitions/fieldrobot/2025/en&#39;&gt;Field Robot Event 2025&lt;/a&gt;), takže mne ještě čeká &lt;i&gt;copy and paste&lt;/i&gt; výzva na zeleném M02.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V rámci „výměny” jsem do M03 získal integrovanou GPS &amp;mdash; data sbírá ESP a kompletní NMEA zprávu přeposílá do řídícího počítače. Zatím jsem udělal jen statický
test na chatě a tam se GPS chytla bez problémů. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď k tématu „od zdi ke zdi”. Přišlo mi, že je to nejjednodušší test, zda nárazníky fungují. &lt;i&gt;Dokud nedostaneš info o kolizi (z předních nárazníků),
jeď maximální rychlosti vpřed. Následně couvej maximální rychlostí, dokud nenarazíš zadními nárazniky.&lt;/i&gt; Možná trošku příliš hrubá síla, ale &amp;hellip; ano, zbaběle jsem nechal
původních 20cm/s &amp;hellip; ale člověk úplně nemusí být matematik, aby si spočítal, že při update 10Hz to od okamžiku kontaktu bude ještě 2cm &lt;i&gt;rvát&lt;/i&gt; do zdi!?
No asi nejsnazší řešení je zvednout frekvenci komunikace &amp;mdash; tu si definuje řídící počítač, takže je to změna jednoho čísla. Varianta podmiňovat to rovnou na ESP se mi
zatím moc nelíbí, ale možna na to také dojde.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, asi by to chtělo „bourací video”, aby byla nějaká akce (v &lt;i&gt;lidarview&lt;/i&gt; to takový odvaz není) &amp;hellip; tak příště.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250307&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. března 2025 &amp;mdash; Kompletace nárazníku a Otloukánek2&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes měl být &lt;b&gt;Den D&lt;/b&gt; odletu s M02 a M03 do států na &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;DTC Workshop Systems 2&lt;/a&gt;. Ale padlo to. A asi bych měl rovnou připsat &lt;i&gt;naštěstí&lt;/i&gt;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi bych sem mohl sepsat seznam „klacků”, které se mi ležely na cestě, od 19ti školení (ty jsem nakonec minulý týden dodělal), přes problémy s ubytováním a perličku bych
si nechal &lt;i&gt;kreditní kartu&lt;/i&gt; &amp;mdash; taková ptákovina, co je potřeba, aby se člověk dostal &lt;a href=&#39;https://maps.app.goo.gl/Dg8p8eCtFrfAFjp66&#39; class=&#39;external&#39;&gt;z Atlanty do 100 mil vzdálené Perry&lt;/a&gt;, sigh.
Objednal jsem ji v lednu. Včera jsem bance
napsal, jak to vypadá a odpověď mne překvapila: &lt;i&gt;Omlouvám se pokud se k Vám tato informace nedostala, Vaši žádost nebylo možné dostatečně posoudit
a z tohoto důvodu byla odvolána. Důvodem odvolání je to, že účet není využíván na běžné denní placení (jídlo v obchodech, výdaje domácnosti, léky, drogerie apod.).&lt;/i&gt;
&amp;mdash; toto roboti potřebují?! No nic, asi půjdu v září pěšky, nebo zkusím najít nějakou půjčovnu, co by akceptovala debetní karty. F*ck them. Tušil bych za tím AI, co rozhoduje
o udělení úvěru (ano, &lt;i&gt;kreditní karty&lt;/i&gt; nehledejte pod záložkou &lt;i&gt;platební karty&lt;/i&gt; ale &lt;i&gt;úvěry&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, to chce klid a téma by mělo být jiné. Nicméně jsem ve fotkách za poslední měsíc našel i několik pokusů „jak zabalit 2 roboty”, aby splňovali limity letecké společnosti
a kupodivu nejlepší varianta (když nepočítám rozebrání na součastky) je jejich &lt;i&gt;stackování&lt;/i&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/stacked-robots.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/stacked-robots_t.jpg&#39; alt=&#39;štosování robotů&#39; title=&#39;štosování robotů&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/stacked-robots.jpg&#39;&gt;štosování robotů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak jsem tam objevil ještě toto starší foto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 702px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/servo-mounts.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/servo-mounts_t.jpg&#39; alt=&#39;montážní díly k servu&#39; title=&#39;montážní díly k servu&#39; class=&#39;border&#39;  width=&#39;696&#39; height=&#39;392&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/servo-mounts.jpg&#39;&gt;montážní díly k servu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ono by to bylo i srandovní, kdyby to nebylo k pláči. No prostě jsem na M03 přídělal kola a přišlo mi zbytečné rozbalovat všechny pytlíčky, co se dodávají k servům. Pak mi ale
dvě kola sotva držela a to řízení rychlosti nic moc. No odpověď je na obrázku &amp;mdash; jsou to různé typy uchycení a na hnané kolo &lt;i&gt;samozřejmě&lt;/i&gt; potřebuji to ozubené &amp;hellip; jen už to
člověk, resp. já, nevidí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Odloukánek2 &amp;mdash; zase jsem jezdil &lt;a href=&#39;/robots/matty-twins/en#250224&#39;&gt;od zdi ke zdi&lt;/a&gt;, ale už ne na kabelu, ale z Odroida v přední krabici. Také už jsem namontoval posledně chybějící díl &amp;mdash;
průhledný nárazník. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/transparent-bumper.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/transparent-bumper_t.jpg&#39; alt=&#39;průhledný nárazník&#39; title=&#39;průhledný nárazník&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/transparent-bumper.jpg&#39;&gt;průhledný nárazník&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tentokrát jsem pokusy i dokumentoval &amp;hellip; a je to divné! Ale asi je třeba uploadovat i nezajímavá videa, jinak by člověk měl pocit, že je vše zajímavé &amp;hellip; tak nechť:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/gk_wUWv-l-o&#39; class=&#39;external&#39;&gt;Wall2wall at 10Hz&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/hAmJMzBvtjc&#39; class=&#39;external&#39;&gt;Wall2wall at 50Hz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Něco je rozhodně špatně. Kontakty cvakají, ale nedostatečně? Jako kolečka podkluzují &lt;i&gt;o sto šest&lt;/i&gt;, ale &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. první pozorování je, že 50Hz je fakticky stále 10Hz, protože jsem změnil frekvencí posílání příkazů, ale nikoliv frekvenci posílání informačních zpráv&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhé pozorování je, že to není nutně v detekci změny stavu nárazníku, ale v době reakce na změnu:&lt;/div&gt;

&lt;pre&gt;python -m osgarlogger matty-wall2wall-250307_122952.log &amp;ndash;stream platform.bumpers_front
                                               platform.bumpers_rear app.desired_steering
0:00:00.072924 5 False
0:00:00.073010 6 False
0:00:00.073809 1 [200, 0]
0:00:00.073921 1 [200, 0]
0:00:35.598887 5 True
0:00:35.599225 1 [-200, 0]
0:00:38.605356 5 False
0:00:38.605618 1 [-200, 0]
0:00:40.234255 6 True
0:00:40.234612 1 [200, 0]
0:00:43.531562 6 False
0:00:43.531821 1 [200, 0]
&amp;hellip;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/bumper-reaction.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/bumper-reaction_t.png&#39; alt=&#39;pomalá reakce na náraz v čase 35.5s&#39; title=&#39;pomalá reakce na náraz v čase 35.5s&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;244&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/bumper-reaction.png&#39;&gt;pomalá reakce na náraz v čase 35.5s&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 včera jsme si na toto téma vyměnili pár mailů a pravděpodobný &lt;i&gt;vinník&lt;/i&gt; je plynulá regulace a &lt;i&gt;rampy&lt;/i&gt;. Tj. když dostane ESP32 a následně servo příkaz jeď opačnou rychlostí,
tak díky postupnému snižování interní požadované rychlosti ještě do příkážky chvíli více tlačí. Navíc narazí trošku bokem, takže se ještě zapojí regulace korekce natočení kloubu, jak je celkem
pěkně vidět z následujícího obrázku (rozdíl po sobě jdoucích enkoderů):&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/bumpers-enc-speed.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/bumpers-enc-speed_t.png&#39; alt=&#39;enkodérové rychlosti jednotlivých serv&#39; title=&#39;enkodérové rychlosti jednotlivých serv&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;244&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/bumpers-enc-speed.png&#39;&gt;enkodérové rychlosti jednotlivých serv&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250314&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. března 2025 &amp;mdash; STOP módy a záhada hlavolamu (nevyřešená)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;STOP módy&lt;/i&gt; trošku zní, jako „dost bylo těch hadrů!” No myslel jsem tím novou funkci rozšiřující S-příkaz o parametr, jakým způsobem má robot zastavit
(viz &lt;a href=&#39;https://github.com/robotika/matty/pull/12&#39; class=&#39;external&#39;&gt;PR 12&lt;/a&gt;). Nové možnosti jsou:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;mode = 0 &amp;hellip; STOP&lt;/li&gt;

&lt;li&gt;mode = 1 &amp;hellip; BREAK&lt;/li&gt;

&lt;li&gt;mode = 2 &amp;hellip; POWER OFF&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;MartinL jednotlivé módy dokumentoval i pomocí &lt;a href=&#39;https://youtu.be/D6RFe1tHCyw&#39; class=&#39;external&#39;&gt;videa&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; možná bych ještě doplnil info, že na podlaze je čára
a v okamžiku, kdy jí robot přejel tak Martin mačkal vzdálené STOP tlačítko s vybraným konkrétním módem. V základním módu &lt;i&gt;STOP&lt;/i&gt; robot v klidu zastaví,
postupně snižuje rychlost a udržuje úhel kloubu. Pro &lt;i&gt;BREAK&lt;/i&gt; dupne na brzdy až je z toho převodovka neštastná. A konečne &lt;i&gt;POWER OFF&lt;/i&gt; by mělo
imitovat vypnutí napájení serv.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď ten problém/záhada: MartinoviL to funguje bez problémů, jak dokumentuje to 11s video. Posílá pouze příkaz jeď a následně STOP a &lt;i&gt;watchdog&lt;/i&gt; má
nastaven na 3s (aby nemusel posílat příkazy stále dokola) &amp;hellip; případně viz &lt;a href=&#39;https://github.com/robotika/osgar/commit/b01778bb8987cc6b43d633b46bb2221e2e8e84cc&#39; class=&#39;external&#39;&gt;commit&lt;/a&gt;,
kde jsem teď vrátil &lt;i&gt;watchdog&lt;/i&gt; z 3.15s zpět na 150ms.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jak se to chová? Když dám jízdu 1 metr a cestou narazím, tak to vypadá úplně stejně jako na MartinověL videu. Dokonce jsem to zkusil rychlosti 0.5m/s.
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/hit-50cms.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/hit-50cms_t.png&#39; alt=&#39;náraz při 0.5m/s&#39; title=&#39;náraz při 0.5m/s&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;244&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/hit-50cms.png&#39;&gt;náraz při 0.5m/s&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Svislé čáry jsou změna stavu nárazníků s tím, že omylem jsem zadním nárazníkem byl natlačen do zdi. Je vidět okamžitá reakce všech serv a zastavení
během 300ms.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když ale jezdím „od zdi ke zdi”, tak graf vypadá takto (i s použitím STOP=2 a okamžité reakce na nově příchozí packet):
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 468px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/wall2wall.png&#39;&gt;&lt;img src=&#39;/robots/matty-twins/wall2wall_t.png&#39; alt=&#39;od zdi ke zdi&#39; title=&#39;od zdi ke zdi&#39; class=&#39;border&#39;  width=&#39;462&#39; height=&#39;244&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/wall2wall.png&#39;&gt;od zdi ke zdi&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
Zde skoro 2 sekundy vůbec nic nedělá!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MartinL teď píše: &lt;i&gt;tak jsem si zkusil přesně to, co zkoušíš ty a nakonec mám stejný problém. Tedy pokud mám nastaveno posílání dat 10 Hz a povely posílám
taky 10 Hz, tak celkem v pohodě. Ale když to zvednu na 50 Hz a jen přijímám, tak ok. Ale když i stejnou frekvencí začnu posílat příkazy, tak to
začne výrazně váznout (zpoždění až cca 2 s jako u tebe). Vypadá to, že je problém v tom převodníku usb - uart, resp. ovladači.
Matně se mi vybavuje, že jsem to už někde řešil, že je nějak problém v tom, že to posílá po usb po paketech a je nějak nutné vyvolat to odeslání
(jinak čeká na větší počet znaků, resp, timeout).
Zkusím zapátrat, co s tím.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Stále se dohadujeme k čemu je OSGAR dobrý, tak teď mi možná MartinL narhál: &lt;i&gt;To je ten problém, že ty to nevidíš realtime (ale z logu). Když se 
&#34;zpožďuje&#34; komunikace, tak sice okamžitě zareaguješ na nárazník, ale ta zpráva, že je nárazník aktivní přišla třeba sekundu po realitě.&lt;/i&gt;
(moje poznámka byla, že jsem od ESP dostal potvrzeno, že STOP přijal &amp;mdash; 0x80 bit je nově nulový)&lt;/div&gt;

&lt;pre&gt;0:00:01.624386 4 [99, 0, 20]
0:00:01.713402 11 1.7111320300027728
0:00:01.713704 2 b&#39;U\x06\x17G\xc8\x00\x00\x00\xd4&#39;
0:00:01.715929 12 b&#39;U\x14ZI\x84\x02\xd8-\x14\x05\xb4\x00X\x00a\x07O\x06\x0e\x08\x83\x08;&#39;
0:00:01.726237 12 b&#39;U\x02\x17A\xa6&#39;
0:00:01.726642 5 True
0:00:01.726772 2 b&#39;U\x03\x18S\x02\x90&#39;
0:00:01.726856 4 [115, 0, 20]
0:00:01.727066 1 [-200, 0]
0:00:01.727488 2 b&#39;U\x03\x19S\x02\x8f&#39;
0:00:01.736495 12 b&#39;U\x02\x18A\xa5U\x02\x19A\xa4&#39;
0:00:01.813773 11 1.8115024130092934
0:00:01.814137 2 b&#39;U\x03\x1aS\x02\x8e&#39;
0:00:01.818223 12 b&#39;U\x14[I\x04\x02\xfc/\x00\x008\x00O\x00i\x07V\xaa\x06\x12\x08\x88\x08\x1bU\x02\x1aA\xa3&#39;
0:00:01.818572 4 [127, 0, 21]
0:00:01.914088 11 1.9118210389860906
0:00:01.914474 2 b&#39;U\x03\x1bS\x02\x8d&#39;
0:00:01.920407 12 b&#39;U\x14\\I\x04\x02\xfc/\x00\x00\xf9\xff,\x00i\x07S\x06\x10\x08\x88\x08\x81U\x02\x1bA\xa2&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no možná se mi nepodaří vás přesvědčit, že je &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGAR&lt;/a&gt; úžasný, ale &amp;hellip; zkusím to. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě pro „dekódování” dumpu výše potřebuji jména jednotlivých kanálů:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger matty-wall2wall-250313_192818.log 
 k                    name bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;
 0                     sys  3097 |  17 |   0.6Hz
 1    app.desired_steering    54 |  12 |   0.4Hz
 2       platform.esp_data  3303 | 330 |  10.8Hz
 3 platform.emergency_stop     0 |   0 |   0.0Hz
 4         platform.pose2d  1924 | 280 |   9.2Hz
 5  platform.bumpers_front     7 |   7 |   0.2Hz
 6   platform.bumpers_rear     5 |   5 |   0.2Hz
 7     platform.gps_serial  4116 |  56 |   1.8Hz
 8            gps.position   308 |  28 |   0.9Hz
 9        gps.rel_position     0 |   0 |   0.0Hz
10           gps.nmea_data  5012 |  28 |   0.9Hz
11              timer.tick  2745 | 305 |  10.0Hz
12              serial.raw 14619 | 638 |  20.9Hz

Total time 0:00:30.513614&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj.&lt;/div&gt;

&lt;pre&gt;0:00:01.624386 4 [99, 0, 20]
0:00:01.713402 11 1.7111320300027728
0:00:01.713704 2 b&#39;U\x06\x17G\xc8\x00\x00\x00\xd4&#39;
0:00:01.715929 12 b&#39;U\x14ZI\x84\x02\xd8-\x14\x05\xb4\x00X\x00a\x07O\x06\x0e\x08\x83\x08;&#39;
                                            &amp;hellip; stavová informace (I) a mód 0x84, tj. RUNNING a narazil
0:00:01.726237 12 b&#39;U\x02\x17A\xa6&#39;
0:00:01.726642 5 True                       &amp;hellip; narazil přední nárazník
0:00:01.726772 2 b&#39;U\x03\x18S\x02\x90&#39;      &amp;hellip; okamžitě odešli S-příkaz power off(2)
0:00:01.726856 4 [115, 0, 20]
0:00:01.727066 1 [-200, 0]           &amp;hellip; vyšší vrstva říká, že máme couvat, ale to se 2s po nárazu ignoruje
0:00:01.727488 2 b&#39;U\x03\x19S\x02\x8f&#39;
0:00:01.736495 12 b&#39;U\x02\x18A\xa5U\x02\x19A\xa4&#39; &amp;hellip; potvrzení přijetí S-zprávy
0:00:01.813773 11 1.8115024130092934              &amp;hellip; 10Hz časovač
0:00:01.814137 2 b&#39;U\x03\x1aS\x02\x8e&#39;            &amp;hellip; následné odeslání S-příkazu
0:00:01.818223 12 b&#39;U\x14[I\x04\x02\xfc/\x00\x008\x00O\x00i\x07V\xaa\x06\x12\x08\x88\x08\x1bU\x02\x1aA\xa3&#39;
                                       &amp;hellip; přijatá stavová informace (I) a 0x04 znamená, že už není RUNNING
0:00:01.818572 4 [127, 0, 21]
0:00:01.914088 11 1.9118210389860906
0:00:01.914474 2 b&#39;U\x03\x1bS\x02\x8d&#39;
0:00:01.920407 12 b&#39;U\x14\\I\x04\x02\xfc/\x00\x00\xf9\xff,\x00i\x07S\x06\x10\x08\x88\x08\x81U\x02\x1bA\xa2&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ten první sloupec je časová známka uložení do souboru (čas PC, bohužel nemáme interní čas ESP &amp;mdash; TODO).&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250316&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. března 2025 &amp;mdash; Megabota&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Fakt jsem nepoučitelný. :-( Tuto chybu už jsem udělal už tolikrát, až je to opravdu smutné. O co jde? Viz
&lt;a href=&#39;/robots/matty-twins/en#250314&#39;&gt;záhada s nárazníky&lt;/a&gt; &amp;hellip; koukal jsem dnes znova do logu, protože co jsem popisoval
byl přechod z 0x84 na 0x04, tj. když robot zareagoval na nárazník. Ale co jsem zjistil byla v logu tato zpráva:&lt;/div&gt;

&lt;pre&gt;0:00:00.815948 12 b&#39;U\x14OI\x80\x02\xf8.\x0e\x01\xad\x00\x00
                    \x00\xc4\x06\xb7\x05\x83\x07\xf1\x07\xe8U\x02\x0eA\xaf&#39;
0:00:00.918261 12 b&#39;U\x14PI\x84\x02\xcc-z\x03\x9e\x00\x00\x00
                    \xd4\x06\xc7\x05\x93\x07\x01\x08pU\x02\x0fA\xae&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;prostě už v čase 0.918s příšla zpráva o nárazu a nic, žádná reakce?! A co hůř, když jsem si nechal vypisovat
pořadí jednotlivých zpráv, tak v čase 0.918 jsem dostal:&lt;/div&gt;

&lt;pre&gt;0:00:00.918261 I 73 0x80 b&#39;II\x80\x02(/\xe6\x00\x86\x00\x1a\x00\x84\x06w\x05D\x07\xb0\x07&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Cože?! Zase neumím dekódovat ty ESP znaky??!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ne, problém je jinde. Dat z Mattyho chodí více a shlukují se do větších bloků. A jeden blok může tedy obsahovat
více než jednu zprávu! V reakci na přijaté bajty ale vždy pouze rozšířím buffer již došlých zpráv a pokud obsahuje
alespoň jednu kompletní, tak jí zpracují a končím. Matty ale teď posílá zpráv více. Jednak to jsou potvrzení
došlých příkazů a dále třeba GPS data. Prostě velmi rychle začne „operovat v prehistorii”. Řešení je prosté &amp;mdash;
zpracuj &lt;b&gt;všechny zprávy v bufferu&lt;/b&gt;, jen pak zase ale může systém trošku &lt;i&gt;zadřít&lt;/i&gt;. Oprava ale až zítra &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250317&#34;&gt;&lt;/a&gt;
&lt;h2&gt;17. března 2025 &amp;mdash; Bugfix PR #1006&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, přestanu naříkat nad kombinaci ESC znaků s délkou zpráv a rezignuji na nejnovější zprávu &amp;mdash; prostě jí zpracuji
až přijde další a interní buffer budu udržovat včetně ESC a SYNC znaků. Pokud nevíte o čem mluvím, tak snad během dneška
(resp. určitě než tento odstaveček zveřejním) vytvořím &lt;i&gt;pull request&lt;/i&gt; na githubu.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://github.com/robotika/osgar/pull/1006&#39; class=&#39;external&#39;&gt;https://github.com/robotika/osgar/pull/1006&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Je už pozdní odpoledne, mám ještě cca 15min na vše, takže se alespoň pokusim o upload dokumentačních videí, že Matty už je
„boring robot”. Jinými slovy, že děla co má. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/HM0RxSb_Vcc&#39; class=&#39;external&#39;&gt;https://youtu.be/HM0RxSb_Vcc&lt;/a&gt; &amp;mdash; od zdi ke zdi&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/FEe-a--oZPg&#39; class=&#39;external&#39;&gt;https://youtu.be/FEe-a--oZPg&lt;/a&gt; &amp;mdash; od zdi ke zdi šikmo&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/sGIGQWTw9Vc&#39; class=&#39;external&#39;&gt;https://youtu.be/sGIGQWTw9Vc&lt;/a&gt; &amp;mdash; random walk po kuchyni&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250904&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. září 2025 &amp;mdash; Zapojení LEDek&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 525px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/esp32-connectors.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/esp32-connectors_t.jpg&#39; alt=&#39;Zapojení konektorů&#39; title=&#39;Zapojení konektorů&#39; class=&#39;border&#39;  width=&#39;519&#39; height=&#39;346&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/esp32-connectors.jpg&#39;&gt;Zapojení konektorů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;jednokabelový LED modul vlevo a dvoukabelový vpravo&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250912&#34;&gt;&lt;/a&gt;
&lt;h2&gt;12. září 2025 &amp;mdash; Matty M04 a M05&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/matty45.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/matty45_t.jpg&#39; alt=&#39;Matty M04 a M05&#39; title=&#39;Matty M04 a M05&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/matty45.jpg&#39;&gt;Matty M04 a M05&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je to už týden, co na „základnu” dorazili nově &lt;b&gt;Matty M04&lt;/b&gt; a &lt;b&gt;Matty M05&lt;/b&gt;. Tentorkát je MartinL už i rovnou sestavil, za co
jsem mu moc vděčný &amp;mdash; ta stavebnice v zimě byla fajn, ale teď už to vše „pomalu drne” a &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;DTC&lt;/a&gt;
je za 14 dní.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V robotech chyběly pouze řídící počítače, baterky a &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK kamery&lt;/a&gt;.
Během kompletace jsem narazil na dvě drobnosti &amp;mdash; plastový výstupek z krabičky překážel Odroidu (myslím, že má
v tom místě ze spodu paměť), a nové baterky byly cca o 2mm širší, takže se vedle Odroida do přední krabice nevejdou!
První problém šel poměrně snadno a rychle vyřešit pomocí vybrační brusky &lt;a href=&#39;https://www.youtube.com/watch?v=jfFLJOvsfLw&amp;amp;ab_channel=TVShopGlobal&#39; class=&#39;external&#39;&gt;Renovátor&lt;/a&gt;.
Když jsem jí před lety dostal od ženy
„pod stromeček”, tak jsem prskal, co je to za nesmyslný nástroj &amp;hellip; ještě s nálepkou &lt;i&gt;Znáte z TV reklamy&lt;/i&gt;! Ale po letech jsem
názor změnil a na danou úlohu to bylo jak dělané. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;1&#34;&gt;
	&lt;tr&gt;
                 &lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/renovator.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/renovator_t.jpg&#39; alt=&#39;Renovátor v akci&#39; title=&#39;Renovátor v akci&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;146&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/renovator.jpg&#39;&gt;Renovátor v akci&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
                 &lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/odroid-battery.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/odroid-battery_t.jpg&#39; alt=&#39;Odroid baterka na placato&#39; title=&#39;Odroid baterka na placato&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/odroid-battery.jpg&#39;&gt;Odroid baterka na placato&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
                 &lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/fake-camera.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/fake-camera_t.jpg&#39; alt=&#39;Falešná kamera&#39; title=&#39;Falešná kamera&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/fake-camera.jpg&#39;&gt;Falešná kamera&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/presents.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/presents_t.jpg&#39; alt=&#39;Dárečky pro M02 a M03&#39; title=&#39;Dárečky pro M02 a M03&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/presents.jpg&#39;&gt;Dárečky pro M02 a M03&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/quarteto.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/quarteto_t.jpg&#39; alt=&#39;Kvarteto&#39; title=&#39;Kvarteto&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/quarteto.jpg&#39;&gt;Kvarteto&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/matty-twins/stix1.jpg&#39;&gt;&lt;img src=&#39;/robots/matty-twins/stix1_t.jpg&#39; alt=&#39;STIX1 - společné testování&#39; title=&#39;STIX1 - společné testování&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/matty-twins/stix1.jpg&#39;&gt;STIX1 - společné testování&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;A baterku? No tu jsem dal zatím naplacato &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Čtveřice má za sebou &lt;a href=&#39;https://youtu.be/yDPj-Kddrqs&#39; class=&#39;external&#39;&gt;první společné testování&lt;/a&gt; a zítra je (M04+M05) snad beru na &lt;a href=&#39;/competitions/robotour/2025/en&#39;&gt;Robotour&lt;/a&gt; &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260505&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. května 2026 &amp;mdash; Matty Dobyvatel&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Minulý pátek (1. května 2026) jsme si to s M03 (&lt;i&gt;Bloody Matty&lt;/i&gt;, neplést s &lt;i&gt;Bloody Mary&lt;/i&gt;) a M04 (&lt;i&gt;Fifinka&lt;/i&gt;) celkem užili. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; V rámci testování
na &lt;a href=&#39;/competitions/dobyvani-hradu/en&#39;&gt;Dobývání hradu&lt;/a&gt; jsme vyrazili na &lt;a href=&#39;https://www.divcikamen.cz/&#39; class=&#39;external&#39;&gt;Dívčí Kámen&lt;/a&gt; a bylo to celkem maso. Dva roboty jsem
vzal především proto, že na zříceninách není elektřina (ve skutečnosti je to ještě lepší, dokonce není ani mobilní signál!) a tak jsem chtěl mít prostor
pro více pokusů. Ono vlastně byla výzva už se jenom dostat z parkoviště cca 2km vzdáleného &amp;mdash; ideální pro &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en&#39;&gt;Marathon&lt;/a&gt;
&amp;hellip; ostatně viz &lt;a href=&#39;https://youtu.be/9pa0x9y3Ryw&#39; class=&#39;external&#39;&gt;nejdelší autonomní jízdu&lt;/a&gt;. Pak už následovaly staré kamené schody a &lt;i&gt;marnost nad marnost&lt;/i&gt;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Musím uznat, že mne stále překvapuje průchodnost terénem pro takto malého robota. Používal jsem Jirkovu &lt;i&gt;RedRoad&lt;/i&gt; detekci cesty, co běžela na
&lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D Pro kameře&lt;/a&gt;. Hloubková data jsem (zase) ignoroval a tak velký kámen vypadá někdy jako super dlážděná cesta &amp;hellip; &lt;i&gt;TODO later&lt;/i&gt;.
Na hradě jsem chtěl pak pouštět kód na &lt;a href=&#39;/competitions/roboorienteering/en&#39;&gt;RoboOrienteering&lt;/a&gt;, ale málo jsem ho oprášil z loňských Mariánských Lázní. Sigh.
Navíc &lt;i&gt;upgrade&lt;/i&gt; na &lt;a href=&#39;https://pypi.org/project/depthai/&#39; class=&#39;external&#39;&gt;depthai3&lt;/a&gt; pro OSGARa ještě není plně funkční a to se ukázalo jako fatální u YOLO neuronek, ano
např. natrénované detekce kuželu. Také IMU data z kamery jsem nesbíral &amp;hellip; a vůbec seznam věcí, co je třeba udělat, po testování rychle přibýval.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kde se Matty moc nechytal byly situace, kdy mu podklouzlo jedno (nebo více) kol a při rychlosti 0.5m/s už nedokázal udžet požadované natočení pasivního
kloubu. Jakub navrhoval, že by mohlo pomoci snížit rychlost, pokud jsem schopen prokluz detekovat &amp;mdash; uvidíme. Čekám, že minimálně úhel kloubu „uskočí”
a to by mohl být ten potřebný signál.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další, doslova „do očí bijící”, nedodělek je stabilita videa, resp. hrubé poskakování (po kamenech). Vím, že Jirkovi se dělá špatně z té &lt;i&gt;uzávěrky kamery&lt;/i&gt;
(&lt;i&gt;progressive scan&lt;/i&gt; (?) &amp;hellip; no prostě není to &lt;i&gt;global shutter&lt;/i&gt;), takže i chudák neuronka. Uvidíme, zda s tím AI programátorka něco vykouzlí, ale pokud ne, tak
&lt;b&gt;raw data&lt;/b&gt; zatím vypadají takto:&lt;/div&gt;
&lt;cemter&gt;
&lt;iframe width=&#34;583&#34; height=&#34;251&#34; src=&#34;https://www.youtube.com/embed/Hrm8Gc1bL1g&#34; title=&#34;Matty Dobyvatel (The Conqueror)&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/matty-twins/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>DTC Phase 3</title>
    <link rel='alternate' href="https://robotika.cz/competitions/dtc/phase3/en"/>
    <id>https://robotika.cz/competitions/dtc/phase3/en</id>
    <updated>2025-12-19T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        DARPA přišla s novou „výzvou”/soutěží: &lt;b&gt;DARPA Triage Challenge&lt;/b&gt;. &lt;i&gt;Triage&lt;/i&gt; 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. &lt;b&gt;Update:&lt;/b&gt; 14/4/2026 &amp;mdash;
&lt;a href=&#39;/competitions/dtc/phase3/en#260414&#39;&gt;DTC3 Systems - Opětné otevření registrace týmů&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://triagechallenge.darpa.mil/&#39; class=&#39;external&#39;&gt;https://triagechallenge.darpa.mil/&lt;/a&gt; &amp;mdash; oficiální stránky soutěže&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;DARPA Triage Challenge&lt;/i&gt; má podobný časový rozvrh jako již ukončená &lt;a href=&#39;/competitions/subtchallenge/en&#39;&gt;SubT Challenge&lt;/a&gt;.
Soutěž bude trvat 3 roky, jsou tři základní kategorie (&lt;i&gt;Primary System&lt;/i&gt;, &lt;i&gt;Primary Virtual&lt;/i&gt; a &lt;i&gt;Secondary Data&lt;/i&gt;) a účastníci
jsou jak DARPA sponzorované týmy, tak &lt;i&gt;self-funded&lt;/i&gt; týmy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 161px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://triagechallenge.darpa.mil/&#39;&gt;&lt;img src=&#39;/competitions/dtc/dtc-logo.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;155&#39; height=&#39;59&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://triagechallenge.darpa.mil/&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/dtc/phase3/en#251219&#39;&gt;251219 - Summary of Potential Major Rules Changes&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dtc/phase3/en#260115&#39;&gt;260115 - DTC3 Systems - Pravidla verze 3a&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dtc/phase3/en#260205&#39;&gt;260205 - DTC3 Systems - Konec registrace týmů&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/dtc/phase3/en#260414&#39;&gt;260414 - DTC3 Systems - Opětné otevření registrace týmů&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;

&lt;hr&gt;
&lt;a id=&#34;251219&#34;&gt;&lt;/a&gt;
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel right&#39; style=&#39;width: 166px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39; https://www.darpa.mil/sites/default/files/gallery/2025-05/rocket-attack-darpa-triage-challenge-high-res.jpg&#39;&gt;&lt;img src=&#39;/competitions/dtc/phase3/thumb.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;160&#39; height=&#39;120&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39; https://www.darpa.mil/sites/default/files/gallery/2025-05/rocket-attack-darpa-triage-challenge-high-res.jpg&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;19. prosince 2025 &amp;mdash; Summary of Potential Major Rules Changes&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Chvíli jsem přemýšlel, zda začínat tento &lt;b&gt;3. DTC Blog&lt;/b&gt;, když se do USA v roce 2026 na 95% nechystáme, ale &amp;hellip; pokud budu ignorovat těch 5%, tak minimálně můžu dát šanci potenciálnímu
týmu, který by mohl přehlednout &amp;hellip;&lt;/div&gt;

&lt;pre&gt;„Ale ty plány byly vyvěšeny&amp;hellip;“
„Vyvěšeny? Musel jsem je nakonec jít hledat do sklepa.“
„Tam je oddělení, kde je vyvěšují.“
„S baterkou.“
„Asi byl zrovna výpadek proudu.“
„A schody zřejmě taky vypadly.“
„Podívejte se, našel jste to oznámení nebo ne?“
„Ale jo, našel. Na dně zamčené registračky, a tu vecpali na zrušený záchod
a na dveře dali ceduli Pozor, leopard!.“&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://oldfriends.realtime.sk/uploads/Stoparuv%20pruvodce%20po%20galaxii.pdf&#39; class=&#39;external&#39;&gt;zdroj&lt;/a&gt; &amp;hellip; abych citoval oblíbenou knižku. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První informace, která je &lt;a href=&#39;https://www.darpa.mil/research/challenges/darpa-triage-challenge&#39; class=&#39;external&#39;&gt;veřejná&lt;/a&gt; a mohli jste jí přehlédnout je,
že &lt;b&gt;registrace končí až 2. února 2026&lt;/b&gt; (dřive byla do 2. ledna 2026). To znamená, že ještě máte cca měsíc čas &amp;mdash; ono na registraci
je třeba, vedle extra formulářů, doplnit ještě několik video nahrávek demonstrující funkčnost vašeho řešení, takže na poslední den
bych to určitě nenechával!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhá informace přišla včera (12/18/25, 14:09) mailem z &lt;a href=&#39;https://forum.triagechallenge.darpa.mil/t/phase-3-systems-competition-changes-summarized/1375&#39; class=&#39;external&#39;&gt;DTC fóra&lt;/a&gt;
(jen pro zvané, resp. potřebujete přístup = zamčená registračka) a téma bylo zmiňované &lt;i&gt;Summary of Potential Major Rules Changes&lt;/i&gt;. Po &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;loňsku&lt;/a&gt;
bych asi zdůraznil slovo &lt;b&gt;Potential!&lt;/b&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; tenkrát jsem si naivně přestavoval, že když v pravidlech je, že systémy musí být autonomní, tak musí být autonomní a ne
že &lt;i&gt;Version 2g&lt;/i&gt; danou sekci zase vypustí! Ale tím vás nechci demotivovat &amp;hellip; jako je zvláštní se registrovat na soutěž u které neznáte pravidla, ale už mne to tak
nepřekvapuje. Zatím na fóru není ani „hrubý nastin pravidel” s výjimkou zmíněného &lt;i&gt;Ph3 - Systems - summary of major changes-for DISTAR.pdf&lt;/i&gt;
Proč to zmiňuji je, že vedle úplně jiného formátu se mění i původní plán (toto je ze &lt;b&gt;starých pravidel&lt;/b&gt; verze 2g):&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 809px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/dtc/phase3/prizes-v2g.png&#39; alt=&#39;Původně plánované ceny&#39; title=&#39;Původně plánované ceny&#39; class=&#39;border&#39;  width=&#39;803&#39; height=&#39;269&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Původně plánované ceny&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Za &lt;b&gt;Data&lt;/b&gt; je nově jenom jedna cena za 1. místo (ušetříme 500,000 USD) &amp;hellip; to není ta &lt;i&gt;vzrušující motivační zpráva&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V kategorii &lt;b&gt;Systems&lt;/b&gt; jsou nově &lt;b&gt;4 Gates&lt;/b&gt; (v překladu to
nebudou &lt;i&gt;brány&lt;/i&gt;, spíše u chodících robotů to byly nějaké módy/schopnosti chůze?) v rámci &lt;b&gt;Lane 1&lt;/b&gt;. A &lt;b&gt;Lane 2&lt;/b&gt; je pak spolupráce strojů s mediky. Do &lt;i&gt;Lane 2&lt;/i&gt;
postupují pouze 4 nejlepší týmy. Ptáte se, kde jsou ty „dobré zprávy”? &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; No jsou tam extra ceny pro &lt;i&gt;self-funded teams&lt;/i&gt;, podobně jako v prvních dvou letech soutěže.
Jen aby ta &lt;i&gt;klička&lt;/i&gt; nebyla v tom, že tyto nesponzorované týmy se nejprve musí dostat do semi-finále a pak mají nárok na cenu (dříve 2. a 3. cena) &amp;hellip; (pravděpodobně ušetříme
950,000 USD). Suma sumárum to asi nebyla dobrá zpráva a nebo jsem jenom škarohlíd a ceny pro &lt;i&gt;self-funded teams&lt;/i&gt; platí i když se nedostanou do &lt;i&gt;Lane 2&lt;/i&gt;? V prezentaci je:
&lt;i&gt;1st and 2nd prize are for best self-funded teams on Lane 1 and 2.&lt;/i&gt; &amp;hellip; ta Booleovská algebra!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Závěr &amp;mdash; pokud uvažujete o účasti, tak to moc dlouho neodkádejte a zaregistrujte se na fórum, ať máte přístup k &lt;i&gt;zamčeným registračkám&lt;/i&gt;!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. &lt;b&gt;Fórum (22/12/2025):&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Is the best self-funded team eligible for a prize if it finishes on 5th place, i.e. it will not be among 4 best teams and will not score in Lane 2?&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Think about it as 3 separate prize pools. The cavate with the below is that a team must beat the minimum to be eligible for prizes&lt;/i&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Gate prizes: anyone is eligible to win in gates 1-4, the prize goes to the best on that particular gate&lt;/li&gt;

&lt;li&gt;Lane 1 prizes: the top two self-funded teams (based on weighted sum of score for gates 1-4) are eligible for prizes.&lt;/li&gt;

&lt;li&gt;Grandprize: anyone is eligible to win, based on performance in all lanes.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;So it is possible if the top 4 teams in lane 1 were all funded, there would still be Lane 1 prizes for the top 2 self-funded teams (place 5 and 6).&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260115&#34;&gt;&lt;/a&gt;
&lt;h2&gt;15. leden 2026 &amp;mdash; DTC3 Systems - Pravidla verze 3a&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera večer mi přišel mail od &lt;i&gt;DTC Team&lt;/i&gt;, jestli se chystáme na &lt;i&gt;Challenge Event 3&lt;/i&gt;. Chvili jsme si dělali srandu, jestli tedy už jsou k dispozici alespoň pravidla
(na uzavřeném fóru byla &#34;alfa verze&#34; od 6. ledna 2026) a &amp;hellip; jsou už &lt;a href=&#39;https://www.darpa.mil/sites/default/files/attachment/2026-01/darpa-dtc-challenge-event3-competition-systems.pdf&#39; class=&#39;external&#39;&gt;oficiální&lt;/a&gt;.
Trošku mne to překvapilo, že bych čekal nějakou revizi po komentářích na fóru (za mne alespoň to datum na první stránce &amp;mdash; ano, nestěžoval jsem si, tak bych měl teď mlčet),
ale můžete se případně podívat na změny v bodování a úpravy finančních cen co jsem zmiňoval minule.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jinak má odpověď byla: &lt;b&gt;Robotika team se na DTC3-Systems momentalně nechystá.&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. také jsme dostali nahrávky ze všech (?) DARPA kamer z našich dvou soutěžních jízd loni v říjnu &amp;hellip; ale bohužel z toho nemůžeme nic zveřejnit :-( &amp;hellip; ne že by to bylo tak úžasné, ale
je to trošku škoda a po sestříhání by alespoň byla vidět nějaká &lt;i&gt;Matty akce&lt;/i&gt;. No nic.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260205&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. únor 2026 &amp;mdash; DTC3 Systems - Konec registrace týmů&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera mi došlo, že už se nemusím trápit variantou výjezdu do USA na DTC3, protože registrace týmů skončila. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Někde na fóru jsem zahledl novější verzi pravidel, ale nemůžu to
teď najít a &lt;a href=&#39;https://www.darpa.mil/sites/default/files/attachment/2026-01/darpa-dtc-challenge-event3-competition-systems.pdf&#39; class=&#39;external&#39;&gt;oficiální&lt;/a&gt; jsou stale verze 3a. Ale vidím v mailech,
že dnes je další deadline: &lt;i&gt;Reminder to all teams - the qualification deadline for WS3 ends at midnight Feb 5th.&lt;/i&gt;, kde WS3 je &lt;i&gt;workshop systems 3&lt;/i&gt; v Texasu.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;260414&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. dubna 2026 &amp;mdash; DTC3 Systems - Opětné otevření registrace týmů&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Nedá mi to a vlastně třeba by to někoho zaujalo? Před pár dny mi příšel mail:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Greetings,
Thank you for your interest in the DARPA Triage Challenge (DTC). As we approach the Finals this November, we are extending the qualification deadline for new teams to&lt;/i&gt; &lt;b&gt;June 28, 2026&lt;/b&gt; &lt;i&gt;.
This extension applies to both the Systems and Data Competitions. A limited number of new teams will be accepted on a rolling basis. Acceptance will be at DARPA&#39;s discretion and based on the official qualification guide.
If you would like to demonstrate your technology in standoff sensing or autonomy, please visit the Team Portal for detailed qualification requirements.
Please note that a separate event qualification step will be required closer to the Finals.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Sincerely,
The DTC Team&lt;/i&gt;
&lt;a href=&#39;https://www.darpa.mil/research/challenges/darpa-triage-challenge&#39; class=&#39;external&#39;&gt;DARPA Triage Challenge Website&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A jinak? Před měsícem skončil &lt;i&gt;Workshop System 3&lt;/i&gt; a nikde nevidím nějaké výsledky, videa nebo fotografie (ty 3? v záložce
&lt;a href=&#39;https://www.darpa.mil/news/resources/high-res/darpa-triage-challenge&#39; class=&#39;external&#39;&gt;media&lt;/a&gt; bych nepočítal). Podle odsunutí termínu registrací skoro
o půl roku soudím, že se to až tak úplně nepovedlo, ale „čert ví”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; hele já to snad přivolal! Tak jim pískalo v uších, že poslali další mail: &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;[DTC Forum] [1 - General] May 6 2026 - DTC Workshop 3 Lessons Learned Meeting&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Please mark your calendars for May 6th, 2026 from 9:30-3:00pm EST.
This will be a virtual meeting to discuss experiences at Workshop 3, mainly focused on the Systems Competition.
We will have a small segment for the Data Competition at this meeting. There will be a longer ‘lessons learned’ just for the Data Competition in early July.
Registration information and agenda will be posted in this thread.&lt;/i&gt; &amp;hellip; míněno na fóru pro registrované uživatele.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/competitions/dtc/phase3/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>MDEK1001</title>
    <link rel='alternate' href="https://robotika.cz/articles/mdek1001/en"/>
    <id>https://robotika.cz/articles/mdek1001/en</id>
    <updated>2022-03-09T00:00:00Z</updated>
    <author><name>Martin Dlouhý, Jiří Iša</name></author>
    <summary type='html'>
        MDEK1001 (Module Development &amp;amp; Evaluation Kit) je další příklad zařízení s Decawave DW1000 čipem, který pomocí UWB (Ultra Wide Band)
technologie umožnuje lokalizaci a komunikaci. Cena je zhruba 200USD, což vychází cca 5x levněji než Pozyx. Co je lepší?
&lt;b&gt;Blog update:&lt;/b&gt; 24/11/2025 &amp;mdash; &lt;a href=&#39;/articles/mdek1001/en#251124&#39;&gt;Rehabilitace Qorvo krabiček (AI-powered)&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 446px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/mdek1001/mdek1001.jpg&#39; alt=&#39;MDEK1001 (zdroj Mouser.com)&#39; title=&#39;MDEK1001 (zdroj Mouser.com)&#39; class=&#39;border&#39;  width=&#39;440&#39; height=&#39;334&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;MDEK1001 (zdroj Mouser.com)&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Toto je vlastně druhý článek věnovaný UWB technologii. První část najdete v &lt;a href=&#39;/articles/pozyx/en&#39;&gt;blogu o Pozyxu&lt;/a&gt;.&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/mdek1001/en#220309&#39;&gt;220309 - Balíček dorazil&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/mdek1001/en#220311&#39;&gt;220311 - Android a Bluetooth&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/mdek1001/en#220313&#39;&gt;220313 - uwg, uwt, uwi a les&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/mdek1001/en#220317&#39;&gt;220317 - Bridge node, panid a IoT data&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/mdek1001/en#230117&#39;&gt;230117 - OSGAR driver a rychlost měření&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/mdek1001/en#251124&#39;&gt;251124 - Rehabilitace Qorvo krabiček (AI-powered)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;
&lt;a id=&#34;220309&#34;&gt;&lt;/a&gt;
&lt;h2&gt;9. březen 2022 &amp;mdash; Balíček dorazil&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://www.decawave.com/product/mdek1001-deployment-kit/&#39; class=&#39;external&#39;&gt;MDEK1001&lt;/a&gt; jsme si koupili s Jirkou přes &lt;a href=&#39;https://cz.mouser.com/ProductDetail/Qorvo/MDEK1001?qs=TiOZkKH1s2TlRZBi6MtMNg%3D%3D&#39; class=&#39;external&#39;&gt;Mouser&lt;/a&gt; (ještě tam mají 184 sad, tj. za týden zhruba podobné číslo prodali). Není to úplně levné (s posláním z USA, daněma
a clem to stálo 6 576,55Kč (na webu 5 480,46 Kč), ale stále je to řádově levnější než &lt;a href=&#39;/articles/pozyx/en&#39;&gt;Pozyx&lt;/a&gt; (&lt;a href=&#39;https://store.pozyx.io/creator-kit-65?_ga=2.151149433.1919396223.1646841475-490974699.1639763609#attr=85&#39; class=&#39;external&#39;&gt;1,050.00 EUR+doprava&lt;/a&gt;). V čem se tady obě sady liší? Častečnou odpověď jsme dostali
&lt;a href=&#39;/articles/pozyx/en#220104&#39;&gt;před časem od Pozyx podpory&lt;/a&gt;, kde k jednotlivým bodům se budeme postupně vracet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První pozorování je, že Pozyx krabiček je 10 (oprava 9) 5x kotva/anchor a 4x tag (ty jsem po pravdě ještě moc nepoužíval). MDEK1001 obsahuje 12 krabiček
bez rolišení role. Pozyx tagy mají na sobě ještě IMU (&lt;i&gt;9-axis inertial measurement unit&lt;/i&gt;), kotvy nemají nic. MDEK1001 by měl mít všude akcelerometry,
pro detekci pohybu, a Bluetooth pro konfiguraci. Pozyx má krabičky pouze pro tagy, MDEK1001 je má pro všech 12 zařízení.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://www.decawave.com/mdek1001/quickstart/&#39; class=&#39;external&#39;&gt;MDEK1001 Quick Start Guide&lt;/a&gt; doporučuje zapojit 4 kotvy v jedné rovině do obdélníka na zdroje, tag na baterku
nebo USB powerbanku, stáhnout si Android aplikaci a můžete začít konfigurovat přes Bluetooth. Zatímco Pozyx s kabely fakt nešetří (5 zdrojů s kabely, 3 malé
powerbanky, extra komunikační USB kabel), tak MDEK1001 obsahuje jediný USB kabel, 4x L-kové propojky a to je vše. S Pozyxem si tedy můžete začít hrát hned,
ale pro MDEK1001 potřebujete ještě „zajít do obchodu” nebo „znárodnit” Pozyx.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co se stane, když nebudu postupovat podle návodu a prostě tím jediným kabelem na flashování firmware DMW1001C modul zapnu? Vidim disco čtyř LEDek a &lt;i&gt;dmesg&lt;/i&gt;
říká:&lt;/div&gt;

&lt;pre&gt;[131295.467222] usb 1-6: new full-speed USB device number 13 using xhci_hcd
[131295.619237] usb 1-6: New USB device found, idVendor=1366, idProduct=0105, bcdDevice= 1.00
[131295.619243] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[131295.619246] usb 1-6: Product: J-Link
[131295.619249] usb 1-6: Manufacturer: SEGGER
[131295.619251] usb 1-6: SerialNumber: 000760154093
[131295.626959] cdc_acm 1-6:1.0: ttyACM0: USB ACM device&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A teď kde je (sakra) ten příklad s terminálem pro komunikaci přes USB?
&lt;a href=&#39;https://medium.com/garage-inside-garage/getting-started-with-ultra-wide-band-3d-positioning-dwm1000-and-dwm1001-modules-ba2f64e572b6&#39; class=&#39;external&#39;&gt;Toto&lt;/a&gt;
vypadá užitečně i když je to článek z roku 2018: &lt;i&gt;minicom -D /dev/ttyACM0&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/mdek1001/dwm-console.png&#39;&gt;&lt;img src=&#39;/articles/mdek1001/dwm-console_t.png&#39; alt=&#39;DWM console&#39; title=&#39;DWM console&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;382&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/mdek1001/dwm-console.png&#39;&gt;DWM console&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; i když se to se mnou začalo rozumně bavit až když jsem dal &lt;i&gt;Hangup&lt;/i&gt; &amp;hellip; a nebo to nějakou dobu nabíhá, nevím &amp;hellip;
ale na druhé straně je &lt;i&gt;chatbot&lt;/i&gt; se kterým se dá pokecat. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;dwm&gt; si
[001155.990 INF] sys: fw2 fw_ver=x01030001 cfg_ver=x00010700
[001155.990 INF] uwb0: panid=x0000 addr=xDECAB827E225DC19
[001156.000 INF] mode: tn (pasv,twr,np,le)
[001156.000 INF] uwbmac: disconnected
[001156.000 INF] uwbmac: bh disconnected
[001156.010 INF] cfg: sync=0 fwup=0 ble=1 leds=1 le=1 lp=0 stat_det=1 (sens=1) mode=0
  upd_rate_norm=1 upd_rate_stat=100 label=DWDC19
[001156.020 INF] enc: off
[001156.020 INF] ble: addr=EF:24:D0:2E:0F:B3

dwm&gt; ut
[001294.240 INF] uptime: 00:21:34.240 0 days (1294240 ms)

dwm&gt; av
acc: x = -1776, y = 4160, z = 6608

dwm&gt; utpg
utpg: pg_delay=xB5 tx_power=x456585A5 (pg_delay=xB8 tx_power=x446484A4)

dwm&gt; nmg
mode: tn (pasv,twr,np,le)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Možná vhodný okamžik první iteraci přerušit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. jo jo, je tam příkaz &lt;i&gt;help&lt;/i&gt; nebo jen &lt;b&gt;?&lt;/b&gt;, který vypíše asi 20+ příkazů „na hraní” &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220311&#34;&gt;&lt;/a&gt;
&lt;h2&gt;11. březen 2022 &amp;mdash; Android a Bluetooth&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Potvrzuji, že začátky s &lt;a href=&#39;https://www.decawave.com/product/mdek1001-deployment-kit/&#39; class=&#39;external&#39;&gt;MDEK1001&lt;/a&gt;
úplně hladké nejsou. Rozhodl jsem se tedy postupovat podle 
&lt;a href=&#39;https://www.decawave.com/mdek1001/quickstart/&#39; class=&#39;external&#39;&gt;návodu&lt;/a&gt;, věřte nevěřte. Stáhl jsem si tedy 
&lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2019/03/DRTLS_Manager_R2.apk&#39; class=&#39;external&#39;&gt;DRTLS_Manager_R2.apk&lt;/a&gt;
(z Google Play byla odstraněna) a pokusil se to nainstalovat na starší Android telefon:
&lt;i&gt;There was a problem parsing the package&lt;/i&gt;. Hmm. Povolil jsem instalaci z jiných zdrojů, ale výsledek stejný.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak jsem si včera hrál s Bluetooth (jak z konzole přes USB nastavit tag/kotvu jsem úplně nepochopil a přes
BT by to jít mělo). Existuje několik wrapperů jako &lt;a href=&#39;https://pypi.org/project/decawave-ble/&#39; class=&#39;external&#39;&gt;decawave-ble&lt;/a&gt;,
ale tam instalace skončila &lt;i&gt;ERROR: Failed building wheel for bluepy&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak jsem přešel na nápovědu od Jirky:
&lt;i&gt;K tématu Bluetooth &amp; Python:&lt;/i&gt;
&lt;a href=&#39;https://github.com/hbldh/bleak&#39; class=&#39;external&#39;&gt;https://github.com/hbldh/bleak&lt;/a&gt; a &lt;a href=&#39;https://github.com/pybluez/pybluez&#39; class=&#39;external&#39;&gt;https://github.com/pybluez/pybluez&lt;/a&gt;
&lt;i&gt;Jiné možnosti dost možná ani nejsou. Rozhodující nejspíš bude, co ti bude fungovat na Windows. Teoreticky obojí, prakticky možná ani jedno. Když jsem to zkoumal kolem Vánoc, vyšlo mi, tuším, &#34;radši Bleak.&#34; Argumenty si úplně nepamatuji. Něco kolem API a něco kolem pybluez &#34;not being maintained&#34; a se souvistlostí se zastaralými tooly (hcitool).&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://github.com/hbldh/bleak&#39; class=&#39;external&#39;&gt;Bleak&lt;/a&gt; opravdu vypadal „živější”, příklad fungoval, jen jsem pro UUID používal
kódy z &lt;a href=&#39;https://github.com/WildflowerSchools/decawave_ble/blob/master/decawave_ble/__init__.py#L29-L44&#39; class=&#39;external&#39;&gt;decawave_ble init tabulky&lt;/a&gt;.&lt;/div&gt;

&lt;pre&gt;import asyncio
from bleak import BleakScanner

async def main():
    devices = await BleakScanner.discover()
    for d in devices:
        print(d)

asyncio.run(main())&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;při zapnutém jednom zařízení ukázal:&lt;/div&gt;

&lt;pre&gt;5C:FB:7C:C6:B2:13: JBL Flip 4
24:FC:E5:6F:B2:C7: 24-FC-E5-6F-B2-C7
D6:DC:77:A5:C8:61: DW4D37
8C:79:F5:10:A5:E5: [TV] Samsung 7 Series (43)
53:62:1A:F4:32:35: 53-62-1A-F4-32-35
05:84:BC:18:E2:FB: 05-84-BC-18-E2-FB
F0:27:F0:09:B0:B8: F0-27-F0-09-B0-B8
6B:76:00:1B:A4:E6: 6B-76-00-1B-A4-E6
78:BD:BC:40:5B:BD: 78-BD-BC-40-5B-BD&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;jj, skoro to vypadá, že bych mohl sousedům vypnout televizi. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; A ano, to co hledáme, je &lt;b&gt;DW4D37&lt;/b&gt;.
Zatím asi nejzajímavější zpráva byla &lt;i&gt;Device Info&lt;/i&gt;:
&lt;b&gt;bytearray(b&#39;7M3\xfb\x08\xf3\xca\xde*\x00\xca\xde\x00\x00\x03\x01\x01\x00\x03\x01&gt;\x97pQ\t\x1e\xaf\xce\x00&#39;)&lt;/b&gt;
což v HEX vypadá lepší a prvních 8 bajtů je &lt;i&gt;Node ID = 374d 33fb 08f3 cade&lt;/i&gt;. Nějaké indicie? Vypadá to
na malé „indiány” a spodní/první bajty odpovídají identifikaci zařízení. Ale o moc dále jsem se nedostal.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď „Androidí rozuzlení” &amp;mdash; oni to vlastně je v tom &lt;a href=&#39;https://www.decawave.com/mdek1001/quickstart/&#39; class=&#39;external&#39;&gt;MDEK1001 Quick Start Guide&lt;/a&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/mdek1001/android-ver.png&#39;&gt;&lt;img src=&#39;/articles/mdek1001/android-ver_t.png&#39; alt=&#39;podporovaná Android APK MDEK1001 verze&#39; title=&#39;podporovaná Android APK MDEK1001 verze&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;181&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/mdek1001/android-ver.png&#39;&gt;podporovaná Android APK MDEK1001 verze&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No můj starší telefon je Android 4.4, žena měla 5.0 a poslední na testování UWB má verzi 12. Tak úplně není divu,
že s nabízenou verzi 6 a 7 to nemá žádný průnik &amp;hellip;&lt;/div&gt;

&lt;h3&gt;Update 11-03-2022 9:53pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Na mém když-to-funguje-tak-to-neupdatuj tabletu ta aplikace pustit jde.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První poznatek je, že Auto Positioning kotev při dvou kotvách nefunguje. Ta aplikace to ale neví, takže jí několik minut trvá, než vytimeoutuje. Naštěstí je tam i Cancel.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhý poznatek je, že při třech kotvách to trvá více než půl minuty.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Třetí poznatek je, že při třech kotvách v trojúhelníku se stranou lehce nad dva metry jsou vzdálenosti z Auto Positioning o deset až patnáct centimetrů špatně. To je na výstavní systém přímo od zdroje, s kalibrovanými zpožděními na anténách, podle mě docela slabota. Na druhou stranu, bylo to o několik týdnů rychlejší, než moje hrátky s BU01.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na ovládání z tabletu přes Bluetooth, bez natahování propojovacích kablíků z konvertoru USB&lt;-&gt;sériák, bych si taky zvykl docela rychle. Vlastně asi úplně nejvíc by se mi líbilo, kdyby ten DW1000 byl přímo v noteboku a měl bych k němu nízkoúrovňový přístup. Pak bych nemusel řešit ani kabely, ani dvě souběžné bezdrátové sítě vysávající baterky.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220313&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. březen 2022 &amp;mdash; uwg, uwt, uwi a les&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera mne Jirka motivoval to zase zkusit, když jemu to vše hned fungovalo. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Ty tajemné zkratky z názvu
jsou skoro všechny příkazy ze skupiny &lt;b&gt;UWBMAC&lt;/b&gt; a pokud je použijete, tak konzole začne vypisovat vzdálenost
dvou krabiček. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale postupně. Nejprve přehled nápovědy z konzolové aplikace (nevím, zda už jsem zmiňoval, že je třeba pro
přepnutí 2x po sobě stisknout Enter, viz &lt;a href=&#39;https://www.decawave.com/sites/default/files/dwm1001-api-guide.pdf&#39; class=&#39;external&#39;&gt;dokumentace&lt;/a&gt;), sekce &lt;i&gt;UWBMAC&lt;/i&gt;:&lt;/div&gt;

&lt;pre&gt;** Command group: UWBMAC **
nmg: Get node mode
nmp: Set UWB mode to passive
nmo: Set UWB mode to off
nma: Set mode to AN
nmi: Set mode to ANI
nmt: Set mode to TN
nmtl: Set mode to TN-LP
nmb: Set mode to BN
la: Show AN list
lb: Show BN list
nis: Set Network ID
nls: Set node label
udi: Show incoming IoT data
uui: Send IoT data
stg: Get stats
stc: Clear stats&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;nmg&lt;/b&gt; už jsem zmiňoval v &lt;a href=&#39;/articles/mdek1001/en#220309&#39;&gt;prvním příspěvku&lt;/a&gt;, kde všechny krabičky vracely
&lt;b&gt;mode: tn (pasv,twr,np,le)&lt;/b&gt;. Ne že bych tomu rozumněl, ale &lt;i&gt;pasv&lt;/i&gt; zní dost &lt;i&gt;pasivně&lt;/i&gt;, &lt;i&gt;twr&lt;/i&gt; by mohlo
být &lt;i&gt;Two Way Ranging&lt;/i&gt;, zbytek netuším. Také to &lt;i&gt;tn&lt;/i&gt; něco znamená a na &lt;a href=&#39;https://tn.cz&#39; class=&#39;external&#39;&gt;tn.cz&lt;/a&gt; to asi
nenajdete.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teorie byla taková, že když doporučený postup přes Android a Bluetooth nakonfiguruje nejprve kotvy (AN bude nejspíše &lt;i&gt;Anchor Node&lt;/i&gt;,
takže to &lt;i&gt;TN&lt;/i&gt; bude &lt;i&gt;Tag Node&lt;/i&gt;, konec „záhady”), tak pak je možné lokalizovat &lt;i&gt;tag&lt;/i&gt; vůči &lt;i&gt;kotvám&lt;/i&gt;. To &lt;b&gt;I&lt;/b&gt;
my přišlo jako &lt;i&gt;inicializační&lt;/i&gt;, jako kdo diriguje všechny kotvy v dané podsíti &amp;hellip; ale to si budu muset znova nastudovat
ať vás nematu. V každém případě po &lt;b&gt;nmt&lt;/b&gt; se změnil stav na &lt;b&gt;tn (act,twr,np,le)&lt;/b&gt; (aktivní tag?) a u druhé krabičky
&lt;b&gt;nmi&lt;/b&gt; byla odpověď &lt;b&gt;ani (act,real)&lt;/b&gt;. Pokud jsem tag znova zapojil do USB a napsal &lt;i&gt;les&lt;/i&gt; (&lt;i&gt;les: Show meas. and pos.&lt;/i&gt;)
tak jsem získal tento výpis:&lt;/div&gt;

&lt;pre&gt;dwm&gt; les
dwm&gt; 4D37[0.00,0.00,0.00]=0.54
4D37[0.00,0.00,0.00]=0.49
4D37[0.00,0.00,0.00]=0.44
4D37[0.00,0.00,0.00]=0.56
4D37[0.00,0.00,0.00]=0.48
4D37[0.00,0.00,0.00]=0.49
4D37[0.00,0.00,0.00]=0.52
4D37[0.00,0.00,0.00]=0.42&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Také &lt;b&gt;la&lt;/b&gt; (výpis kotev) už něco začal dělat:&lt;/div&gt;

&lt;pre&gt;dwm&gt; la
[000034.780 INF] AN: cnt=1 seq=x01
[000034.780 INF]    0) id=0000000000004D37 seat=0 seens=98 map=0000 pos=0.00:0.00:0.00
[000034.790 INF]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A ano, potvrzuji Jirkovu „předtuchu”, že se Pozyx s MDEK1001 nebude chtít vůbec bavit, minimálně
zapnutou Pozyx kotvu to nevypisuje (i když si myslím, že po startu oba systémy používaji kanál 5
a preambuli velikosti 64) &amp;hellip; ale to možná někdy později.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Mohl bych sem alespoň doplnit první fotky z rozbalování Qorvo (fakt se to čte &lt;i&gt;kurvo&lt;/i&gt;?)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/mdek1001/qorvo-box.jpg&#39;&gt;&lt;img src=&#39;/articles/mdek1001/qorvo-box_t.jpg&#39; alt=&#39;Qorvo krabice&#39; title=&#39;Qorvo krabice&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/mdek1001/qorvo-box.jpg&#39;&gt;Qorvo krabice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/mdek1001/qorvo-content.jpg&#39;&gt;&lt;img src=&#39;/articles/mdek1001/qorvo-content_t.jpg&#39; alt=&#39;tucet lokalizátorů&#39; title=&#39;tucet lokalizátorů&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/mdek1001/qorvo-content.jpg&#39;&gt;tucet lokalizátorů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. ještě jsem měl říci, že to nastavení tag/kotva/init zůstává platné i po vypnutí napájení&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 potvrzuji, že v tom &lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2019/01/MDEK1001_Quick_Start_Guide_1.1.pdf&#39; class=&#39;external&#39;&gt;návodu (quick start)&lt;/a&gt; vidím:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;All RTLS units will initially appear as tags in &#34;passive&#34; UWB mode&lt;/li&gt;

&lt;li&gt;Set &#34;UWB&#34; to &#34;Active&#34;&lt;/li&gt;

&lt;li&gt;For any one of the anchors, check the &#34;Initiator&#34; box (there must always be one initiator in the network)&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;220317&#34;&gt;&lt;/a&gt;
&lt;h2&gt;17. březen 2022 &amp;mdash; Bridge node, panid a IoT data&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;V rámci včerejšího &lt;i&gt;robotického callu&lt;/i&gt; jsme se trošku posunuli, resp. mne zase Jirka kousek poposunul. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
Sice výsledek je částečně z kategorie „Cimrmanovského foukání tabákového dýmu do vody”, ve smyslu „tudy ne přátelé”,
ale uvidíme.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pro mne první objev byl, co je to: B-node z nápovědy:&lt;/div&gt;

&lt;pre&gt;nmb: Set mode to BN
lb: Show BN list&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Je k tomu totiž potřeba &lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2019/03/DWM1001_Gateway_Quick_Deployment_Guide.pdf&#39; class=&#39;external&#39;&gt;novější dokumentace (DWM1001_Gateway_Quick_Deployment_Guide.pdf)&lt;/a&gt;, kde zmiňují nový typ nodu/uzlu a to &lt;i&gt;bridge node&lt;/i&gt;.
Je to krabička, která by měla umožnit napojení UWB sítě na klasický internet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/mdek1001/uwb-gateway.png&#39;&gt;&lt;img src=&#39;/articles/mdek1001/uwb-gateway_t.png&#39; alt=&#39;Příklad vícero gateway napojení&#39; title=&#39;Příklad vícero gateway napojení&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;276&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/mdek1001/uwb-gateway.png&#39;&gt;Příklad vícero gateway napojení&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bohužel se to nedá úplně snadno vyzkoušet, protože je k tomu třeba RaspberryPi3 a DWM1001 modul je třeba
připojit přes piny. Nakonfigurovat ale &lt;i&gt;node&lt;/i&gt; jako &lt;i&gt;bridge node&lt;/i&gt; pomocí &lt;b&gt;nmb&lt;/b&gt; jde a pak se objeví i při výpisu
pomocí &lt;b&gt;lb&lt;/b&gt;. Divné ale je, že tento výpis funguje pouze pro kotvy ale už ne pro tagy a přitom převzatý obrázek
zmiňuje UWB link s tagem &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Možná jsem měl začít motivací, jak jsem se k tomu vůbec dostal? No chtěl jsem poslat pár bajtů z jedné krabičky
do druhé a příkazy:&lt;/div&gt;

&lt;pre&gt;udi: Show incoming IoT data
uui: Send IoT data&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;vypadaly zprvu nadějně. Nikde o nich nebyla zmínka, tak znova Google a ta novější dokumentace:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Adding a gateway to a PANS network enables the possibility to exchange data other than location between gateways and nodes within the systems. This non-location data is called &#34;IoT Data&#34;. From the web-manager, it is possible to send IoT data to a node under the node properties window, in the &#34;messages&#34; tab. The data sent to the tag can be observed on the UART shell after using the &#34;udi&#34; command. Data is sent as hexadecimal.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tady si Jirka všiml klíčového slova &lt;i&gt;tag&lt;/i&gt; (prostě pro &lt;i&gt;anchors&lt;/i&gt; to nejspíše fungovat ani nemá). Bohužel z různých diskuzí (&lt;a href=&#39;https://decaforum.decawave.com/t/receiving-tag-position-using-a-bridge/6139/3&#39; class=&#39;external&#39;&gt;Receiving Tag position using a bridge&lt;/a&gt;, &lt;a href=&#39;https://decaforum.decawave.com/t/bridge-node-and-web-manager/4442/8&#39; class=&#39;external&#39;&gt;Bridge node and web manager&lt;/a&gt;)
to vypadá, že bez HW úpravy &lt;i&gt;bridge node&lt;/i&gt; nic poslat nepůjde.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jirka našel ještě &lt;a href=&#39;https://decaforum.decawave.com/t/pans-r2-some-questions-on-the-gateway-application-of-dwm1001/4395/2&#39; class=&#39;external&#39;&gt;PANS R2: Some questions on the Gateway application of DWM1001&lt;/a&gt; a &lt;a href=&#39;https://decaforum.decawave.com/t/how-to-communicate-with-listener-without-using-raspberry/10761/10&#39; class=&#39;external&#39;&gt;How to communicate with listener (without using raspberry)&lt;/a&gt;, tj. možná cesta existuje, ale bude poměrně trnitá &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A na závěr bych ještě zmínil tu &lt;b&gt;panid&lt;/b&gt; (&lt;i&gt;Personal Area Network ID&lt;/i&gt;), které lze nastavit pomocí příkazu &lt;i&gt;nis&lt;/i&gt; a je součástí &lt;i&gt;si&lt;/i&gt; (system info):&lt;/div&gt;

&lt;pre&gt;dwm&gt; si
[000116.510 INF] sys: fw2 fw_ver=x01030001 cfg_ver=x00010700
[000116.510 INF] uwb0: panid=x0000 addr=xDECA2B75F6248207
[000116.520 INF] mode: tn (pasv,twr,np,le)
[000116.520 INF] uwbmac: disconnected
[000116.520 INF] uwbmac: bh disconnected
[000116.530 INF] cfg: sync=0 fwup=0 ble=1 leds=1 le=1 lp=0 stat_det=1
                 (sens=1) mode=0 upd_rate_norm=1 upd_rate_stat=100 label=DW8207
[000116.540 INF] enc: off
[000116.540 INF] ble: addr=E2:47:07:28:12:6E&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. zatím se držím defaultu=0.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230117&#34;&gt;&lt;/a&gt;
&lt;h2&gt;17. leden 2023 &amp;mdash; OSGAR driver a rychlost měření&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes to bude opravdu stručné &amp;mdash; mám 10 minut, než to tady budeme muset opustit. Testoval jsem skoro po roce Qorvo UWB krabičky. Důvod? Pozyx mám doma a tam jsem se
nestavoval, ale Qorvo balíček jsem měl při ruce. První pozorování: &lt;b&gt;nic si nepamatuji!&lt;/b&gt; &amp;hellip; tj. opět se potvrdilo, že není nad to si to někam (třeba sem) napsat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Test přes &lt;i&gt;minicom&lt;/i&gt; fungoval a relativně rychle jsem zjistil, co znamená modrá nálepka (tag) a co červená (kotva). Na vzdálenost je třeba se ptát tagů a to příkazem &lt;i&gt;les&lt;/i&gt;. To také fungovalo, ale občas mi došla trpělivost a možná jsem výpisy zastavil. Ono se tím příkazem to jak zapíná tak vypíná a extra &lt;i&gt;Enter&lt;/i&gt; zopakuje minulý příkaz.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Myslím, že stav dobře vystihla Jakubova hláška: „ono je to live?!” &amp;hellip; když jsem se chtěl pochlubit, jak to pěkně funguje. Jak moc je to tedy &#34;živé&#34; lze nejlépe poznat
z timestamp a k tomu máme &lt;a href=&#39;https://github.com/robotika/osgar/&#39; class=&#39;external&#39;&gt;OSGARa&lt;/a&gt; přeci &amp;hellip;&lt;/div&gt;

&lt;pre&gt;0:00:06.547920 4 b&#39;4D37[0.00,0.00,0.00]=0.37 \r\n&#39;
0:00:16.545517 4 b&#39;4D37[0.00,0.&#39;
0:00:16.555737 4 b&#39;00,0.00]=0.34 \r\n&#39;
0:00:26.552047 4 b&#39;4D37[0.00,0.00,0.00]=0.37 \r\n&#39;
0:00:36.547780 4 b&#39;4D37[0.00,0.00,0.00]=0.43 \r\n&#39;
0:00:46.553412 4 b&#39;4D37[0.00,0.00,0.00]=0.40 \r\n&#39;
0:00:56.550504 4 b&#39;4D37[0.00,0.00,0.00]=0.34 \r\n&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Myslím si, že tento výpis mluví za vše. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; na jedno měření potřebuji 10 sekund! To moc na &lt;i&gt;follow me&lt;/i&gt;, kde by se hodilo spíše 10Hz (jen dva řády rozdíl)
úplně není &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak rychle, &lt;i&gt;git commit&lt;/i&gt;, &lt;i&gt;git push&lt;/i&gt; a opustit budovu &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;251124&#34;&gt;&lt;/a&gt;
&lt;h2&gt;24. listopad 2025 &amp;mdash; Rehabilitace Qorvo krabiček (AI-powered)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tento víkend jsem se dostal do podobné situace jako před skoro třemi lety výše &amp;mdash; &lt;a href=&#39;/articles/pozyx/en&#39;&gt;Pozyx&lt;/a&gt; krabičky jsem zapomněl doma v Praze a po ruce jsem měl pouze Quarvo,
které už jsem jednou opustil. Moc se mi do toho nechtělo, protože &lt;i&gt;update rate&lt;/i&gt; jednou za 10s je pro &lt;i&gt;follow me&lt;/i&gt; fakt nepoužitelné. Možná bych měl zmínit motivační kontext,
jenž je pro sledováni osoby pomocí OAK-D Pro kamery s YOLO modelem (viz &lt;a href=&#39;https://youtu.be/S5-Utioew7Q&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;) bych i rád lépe odhadl vzdálenost, případně nějakou „organizaci
tlupy robotů” &amp;hellip; a na to by ty zaprášené UWB krabičky šly možná použít?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V práci nás navádějí používat AI, tak co bych se nezeptal? Jako plus bych zmínil, že mi AI vyhrabala Python wrapper &lt;a href=&#39;https://pypi.org/project/pydwm1001/&#39; class=&#39;external&#39;&gt;pydwm1001&lt;/a&gt;. Tak jsem hned vytáhl
starou bolest a zeptal se &lt;i&gt;update rate&lt;/i&gt;. AI začala lehce halucinovat, že odpovídající C-funkce &lt;i&gt;dwm_upd_rate_set&lt;/i&gt; nejspíše bude v Pythonu &lt;i&gt;tracker.set_update_rate()&lt;/i&gt;. Hmm. Když se podíváte na
&lt;a href=&#39;https://github.com/the-hive-lab/pydwm1001&#39; class=&#39;external&#39;&gt;github projekt&lt;/a&gt;, tak tam nic takového není. Chtěl jsem to zase vzdát, ale zmínila i možnost nastavení přes &lt;i&gt;pyserial&lt;/i&gt; a UART:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 870px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/mdek1001/mdek-update-rate.jpg&#39; alt=&#39;Nastavení rychlosti posílání pozice pomocí AI&#39; title=&#39;Nastavení rychlosti posílání pozice pomocí AI&#39; class=&#39;border&#39;  width=&#39;864&#39; height=&#39;558&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Nastavení rychlosti posílání pozice pomocí AI&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm2. Takový příkaz existuje! Jak jsem ho mohl přehlédnout?!  Respektive ignorovat celou sekci!!&lt;/div&gt;

&lt;pre&gt;** Command group: API **
tlv: Send TLV frame
aurs: Set upd rate
aurg: Get upd rate
apg: Get pos
aps: Set pos
acas: Set anchor config
acts: Set tag config
aks: Set encryption key
akc: Clear encryption key
ans: Set NVM usr data
anc: Clear NVM usr data
ang: Get NVM usr data&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A opravdu &lt;b&gt;aurg&lt;/b&gt; vrací &lt;b&gt;aurg: nom=1 stat=100&lt;/b&gt; &amp;mdash; pokud je tag &lt;i&gt;stacionární&lt;/i&gt;, tak se použije druhé číslo a to odpovídá 100 * 100ms = 10s! A když jsem to měl připojené k počítači
tak holt byl „stacionární” (to vyhodnotil akcelerometr) a snažil se šetřit baterku. Stačí tedy zavolat &lt;b&gt;aurs 1 1&lt;/b&gt; a jede to na max 10Hz v každém případě. Tímto se Qorvo krabičkám
veřejně omlouvám &amp;hellip;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/articles/mdek1001/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Ichikaze</title>
    <link rel='alternate' href="https://robotika.cz/robots/ichikaze/en"/>
    <id>https://robotika.cz/robots/ichikaze/en</id>
    <updated>2025-06-26T00:00:00Z</updated>
    <author><name>Martin Sichra</name></author>
    <summary type='html'>
        Robota jsem začal stavět, protože mě v práci čeká podobný projekt  a chtěl jsem si vyzkoušet jak se takový robot bude chovat. A taky už mi chybělo si s něčím hrát &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Pojmenoval jsem ho s pomocí ChatGPT &#34;Ichikaze&#34; je to z Japonštiny kde Ichi = první a Kaze = vítr 
&lt;b&gt;Update:&lt;/b&gt; 14/10/2025 &amp;mdash; &lt;a href=&#39;/robots/ichikaze/en#251014&#39;&gt;Lodní fáze&lt;/a&gt;



    </summary>
	<content type='html'>
        
&lt;h1&gt;Ichikaze（いちかぜ / 一風）&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Význam: „Jedinečný vítr“ nebo i „podivínský způsob“ (v idiomu 一風変わった)&lt;/li&gt;

&lt;li&gt;Skvělé spojení! Zní poeticky, ale v japonštině „ippū kawatta“ znamená „trochu bláznivý“ – čili Ichikaze může naznačovat „ta, co má vlastní vítr / styl“.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;A AI mi navrhla i motto, které myslím, že bude sedět &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&#34;Jsem vítr, co se nikdy neptá na směr.&#34;
(&#34;I am the wind that never asks for direction.&#34;)&lt;/li&gt;

&lt;li&gt;&#34;Nezastavuj mě. Ani já nevím, kam běžím.&#34;
(&#34;Don&#39;t stop me. Even I don&#39;t know where I&#39;m going.&#34;)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 447px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/Ichikaze_model_v0.png&#39;&gt;&lt;img src=&#39;/robots/ichikaze/Ichikaze_model_v0_t.png&#39; alt=&#39;Model ver0&#39; title=&#39;Model ver0&#39; class=&#39;border&#39;  width=&#39;441&#39; height=&#39;336&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/ichikaze/Ichikaze_model_v0.png&#39;&gt;Model ver0&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Oficiálně (obhajoba rodinných výdajů) je to autonomní sekačka na zahradu, ikdyž to mi doma stejně nikdo nevěří&amp;hellip; Primárně to mám pro sebe na hraní - hlubší myšlenka je opravdu sekačka popř &#34;mula&#34; na převážení věcí. V práci máme velký areál a jít kvůli drobnosti přes celý areál - mnohdy i několikrát denně mě nebaví - kéž bych tak někomu mohl říct - zaběhni do budovy A a řekni ať ti dají to a to a pak se vrať&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Konstrukce pro v0 je komplet z 3D tiskárny. Je to jednodušší a rychlejší než jakákoliv ocelovka a pokud něco nevydrží můžu to vždy vytisknout znovu a lépe nebo nahradit pevnějším materiálem. Ichikaze má všechna 4 koho hnaná inwheel motory Waveshare &lt;a href=&#39;https://www.waveshare.com/ddsm210.htm&#39; class=&#39;external&#39;&gt;DDSM210&lt;/a&gt; a zároveň jsou natáčecí pomocí serv &lt;a href=&#39;https://www.waveshare.com/st3020-servo.htm&#39; class=&#39;external&#39;&gt;Waveshare ST3020&lt;/a&gt;.
Přední náprava je navíc kyvná (obdobně jako na &lt;a href=&#39;/robots/kloubak/en&#39;&gt;Kloubákovi&lt;/a&gt;), takže by měl umět zdolávat i nějaké ty překážky. Od tohoto řešení si slibuji silné menévrovací schopnosti, navíc ho plánuji udělat co nejvíc symetricky a všechny strany osadit stejnými senzory - pak bude &#34;téměř&#34; (natáčení kol není 360 - ukroutil bych kabely) jedno kterým směrem jedu. Což mě připomíná, že na řízení používám Raspberry Pi 4B, hodně si pohrávám s myšlenkou výhledově ho nahradit průmyslovým pc od B&amp;amp;R automation (které používám v práci) - jsou modulární, takže bych nemusel řešit omezené vstupy, sběrnice apod&amp;hellip;a také cenově někde jinde&amp;hellip;tak uvidíme&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Aktuálně má Ichikaze základní rám a popojel svých prvních pár cm pomocí všech 4 kol, nicméně to je jen první test. Verze 0 by k tomu měla umět natáčet všechny 4 kola a taky by měl přestřihnout &#34;pupeční šňůru&#34; = jen pouze na baterii. Pak začnu řešit úložný prostor na elektroniku a senzoriku atd.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/body.jpg&#39;&gt;&lt;img src=&#39;/robots/ichikaze/body_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 276px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/parts.jpg&#39;&gt;&lt;img src=&#39;/robots/ichikaze/parts_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;270&#39; height=&#39;480&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 276px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/whole-set.jpg&#39;&gt;&lt;img src=&#39;/robots/ichikaze/whole-set_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;270&#39; height=&#39;480&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/ichikaze1.jpg&#39;&gt;&lt;img src=&#39;/robots/ichikaze/ichikaze1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;center&gt;
&lt;iframe width=&#34;645&#34; height=&#34;363&#34; src=&#34;https://www.youtube.com/embed/W7Am4LxhVDw&#34; title=&#34;Ichikaze - first motions&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;251014&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. října 2025 &amp;mdash; Lodní fáze&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;MartinS: &lt;i&gt;Nicméně drobný update by asi si zasloužil, obzvláště když jsem se podíval co jsme o něm psali posledně a úplně tam chybí tzv. lodní fáze&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Samotný spojený rám se (překvapivě) ukázal jako nedostatečný pro umístění, alespoň nějakých komponent. Navíc jsem našel
&lt;a href=&#39;https://www.laskakit.cz/arduino-ultrazvukovy-meric-vzdalenosti-hc-sr04/&#39; class=&#39;external&#39;&gt;ultrazvukové snímače na I2C za kouzelných 38,- Kč&lt;/a&gt;
a zrovna mi chybělo asi 400,- Kč do poštovného zdarma - tak jsem jich vzal rovnou 10ks. Bohužel jsem ho přes I2C nerozchodil - ikdyž teď jsem našel ještě jiný návod, takže to ještě zkusím - nicméně přes TTL to jede&amp;hellip; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další velký a nezbytný upgrade byla baterka - z původní 3,2Ah jsem přešel na &lt;a href=&#39;https://www.laskakit.cz/geb-li-ion-baterie-18650-4s12p-14-8v-30ah/&#39; class=&#39;external&#39;&gt;30Ah&lt;/a&gt; &amp;mdash; to by mělo na chvilku stačit. Navíc dodala Ichimu patřičnou váhu (doslova). S ultrazvuky bylo potřeba i udělat držák pro ultrazvuky - nicméně nějakým záhadným způsobem pak Ichikaze vypadal spíš jako loď. Argumenty, že to je prostor, kterým pak potáhnu kabely nikoho neobměkčili - prý je to loď. Takže v další palubě&amp;hellip;tedy nadstavbě jsem se rozhodl pro maximálně nelodní tvar - což se povedlo. Nicméně dle slov HonzyK je to &#34;dobrá přepravka&#34; - tak už jen přemýšlím jaký tvar zvolit na další patro a kolik těch pater vlastně bude než to bude vypadat ok &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Nicméně hlavní úspěch mého snažení je konečně vidět - se zapojenými 2 ultrazvuky dokážu projet chodbou aniž bych odřel čerstvě vymalovanou stěnu &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A kam dál? Hlavní cíl je teď doupravit kabeláž a zapojit všechny ultrazvuky. A pak začít zkoumat OSGAR/ROS cestu &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; + zajet se podívat ven&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;PS: můj standalone SW pro Ichiho už nedává smysl &amp;mdash; resp udělal a otestoval jsem to co jsem chtěl, ale výhledově bude určitě výhodnější přejít na OSGAR/ROS - tj. kdybys měl čas chuť a náladu tak bych se nechal (znovu) zasvětit &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;M.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 330px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/ichikaze_1.png&#39;&gt;&lt;img src=&#39;/robots/ichikaze/ichikaze_1_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;324&#39; height=&#39;253&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 327px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/ichikaze_2.png&#39;&gt;&lt;img src=&#39;/robots/ichikaze/ichikaze_2_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;321&#39; height=&#39;251&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 283px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/ichikaze_4.png&#39;&gt;&lt;img src=&#39;/robots/ichikaze/ichikaze_4_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;277&#39; height=&#39;250&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 301px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/ichikaze_3.png&#39;&gt;&lt;img src=&#39;/robots/ichikaze/ichikaze_3_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;295&#39; height=&#39;266&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/ichikaze/ichikaze-20250717.jpg&#39;&gt;&lt;img src=&#39;/robots/ichikaze/ichikaze-20250717_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/aTMx4i8eH_Y&#39; class=&#39;external&#39;&gt;https://youtu.be/aTMx4i8eH_Y&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtube.com/shorts/Z6wovUbZzZA?feature=share&#39; class=&#39;external&#39;&gt;Autonomí jízda na sonary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/ichikaze/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Robotour 2025</title>
    <link rel='alternate' href="https://robotika.cz/competitions/robotour/2025/en"/>
    <id>https://robotika.cz/competitions/robotour/2025/en</id>
    <updated>2025-01-17T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        The twentieth year of the outdoor autonomous robot competition will be held
&lt;b&gt;13th-14th September 2025&lt;/b&gt; in Buchlovice Castle Park (re-try after the last year floods). You can go to a beautiful park
an entrance fee applies, but it can also be combined with a visit to the castle. The competition is accessible
the public. &lt;b&gt;Update:&lt;/b&gt; 3/10/2025 &amp;mdash;
&lt;a href=&#39;/competitions/robotour/2025/en#251003&#39;&gt;Online Workshop (recording available)&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Automatic translation by&lt;/i&gt; &lt;a href=&#39;https://translate.google.com/&#39; class=&#39;external&#39;&gt;Google translate&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;Rules&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The rules are the same as last year and can be found on GitHub with the tag ROBOTOUR2023RC1:
&lt;a href=&#39;https://github.com/robotika/robotour/blob/ROBOTOUR2023RC1/rules/pravidla.md&#39; class=&#39;external&#39;&gt;czech&lt;/a&gt;
and
&lt;a href=&#39;https://github.com/robotika/robotour/blob/ROBOTOUR2023RC1/rules/rules.md&#39; class=&#39;external&#39;&gt;english&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Location&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The competition will take place in the castle park &lt;a href=&#39;http://zamek-buchlovice.cz/&#39; class=&#39;external&#39;&gt;Buchlovice&lt;/a&gt;.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://zamek-buchlovice.cz/en/photogalleries/1469-the-chateau-garden&#39; class=&#39;external&#39;&gt;https://zamek-buchlovice.cz/en/photogalleries/1469-the-chateau-garden&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice1.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice2.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice3.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice3_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice4.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice4_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice5.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice5_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice6.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice6_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice7.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice7_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice8.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice8_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchlovice9.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchlovice9_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchloviceA.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchloviceA_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchloviceB.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchloviceB_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2024/buchloviceD.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/buchloviceD_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;h2&gt;Registration&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;As in the last years, please send &lt;b&gt;by the end of July 2025 an email&lt;/b&gt; to the address &lt;i&gt;webmaster-at-robotika.cz&lt;/i&gt; with the subject &lt;i&gt;Robotour 2025 - team name&lt;/i&gt;.
If the robot is new, add a more detailed HW/SW description.
Part of the registration is a link to this year&#39;s YouTube video with the title &lt;b&gt;ROBOTOUR 2025 REGISTRATION - team name&lt;/b&gt;, proving that your robot (still) works. Ride 10m after
path, obstacle detection, Emergency STOP button functionality.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250805&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Teams 2025&lt;/h2&gt;

&lt;h3&gt;Pre-registered teams from 2024&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/ieGYt8h8UDw&#39; class=&#39;external&#39;&gt;ARBot&lt;/a&gt; (CR)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/yiGkGTU4ros&#39; class=&#39;external&#39;&gt;BeMaTo&lt;/a&gt; (CR) &amp;mdash; renamed to &lt;b&gt;Helhest&lt;/b&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/s4KcbReyq8w&#39; class=&#39;external&#39;&gt;Istrobotics&lt;/a&gt; (SR)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/Y__Vo1_7brU&#39; class=&#39;external&#39;&gt;Sĺňava&lt;/a&gt; (SR)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/inLgOQPWspI&#39; class=&#39;external&#39;&gt;Smelý Zajko&lt;/a&gt; (SR)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/Du02mFZhLfc&#39; class=&#39;external&#39;&gt;SynthCat Robotics&lt;/a&gt; (CR)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Marathon&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/5kCnv1JORj4&#39; class=&#39;external&#39;&gt;ND Team&lt;/a&gt; (CR) &amp;mdash; registered via &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en&#39;&gt;Robotour Marathonu&lt;/a&gt; (2025-06-07)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;New teams&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/yPXVG3gU9hE&#39; class=&#39;external&#39;&gt;Artemis&lt;/a&gt; (CR)
&lt;details&gt;&lt;summary&gt;description&lt;/summary&gt;
HW:
Chassis: Hunter SE by Agilex
PC: Asus NUC I5
Cameras: 2x RealSense D435 from Intel
Display: 10&#34; WaveShare
GPS: Septentrio mosaic-go
Wifi: Mikrotik mAP lite
Software:
OS: Ubuntu 24.04 LTS
ROS2 Jazzy
NAV2
&lt;/details&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/k4xfRU_HCnA?si=LZoQaCRU1vbdp6r2&#39; class=&#39;external&#39;&gt;Ultimo Minuto&lt;/a&gt; (CR+SR)
&lt;details&gt;
  &lt;summary&gt;description&lt;/summary&gt;
Own construction assembled from the ground up, material mostly iron, skid steering
Drive: DC motor, 2×24 V
Driver: PWM of an older design, replacement with a more powerful driver is planned
Power supply: 2×12 V in series, gel-lead battery
Control: PC - laptop with Windows 11, control software in Python
Currently only works with a camera, but a small LiDAR will also be connected.
The video shows today&#39;s first ride outside, so there is still a lot to work on. We hope to have everything done by the competition deadline.
&lt;/details&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=jIPX0ZO7tB0&#39; class=&#39;external&#39;&gt;Unidroids&lt;/a&gt; (CR)
&lt;details&gt;
  &lt;summary&gt;description&lt;/summary&gt;
Hardware:
Computing unit: NVIDIA Jetson Orin Nano (8GB, JetPack 6.2)
Cameras: 2× IMX219 (CSI, 200° FOV) – stereo view down
LiDAR: Unitree L2 (Ethernet)
GNSS + Dead Reckoning: C102-F9R (USB)
Base: Hoverboard with modified firmware, controlled via USB serial line
Control: Mobile phone (Android Infinix Smart 8)
Data storage: SSD Lexar NM620 2TB (separated for system, logs and projects)
Software:
Linux (Ubuntu, JetPack 6), services written in Python
We use our own architecture with separate socket and HTTP services (FastAPI)
Videos, segmentation, obstacle detection and control are implemented as separate processes
Development is done remotely from VSCode via USB-C (gadget mode, headless)
https://github.com/unidroids/robotour2025
&lt;/details&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250905&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Invitation&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The competition will take place on &lt;b&gt;Saturday afternoon&lt;/b&gt; (13/9/2025 2-4pm) and &lt;b&gt;Sunday morning&lt;/b&gt; (14/9/2025 10-12am), but some teams will probably
test in the castle park on Friday. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The &lt;a href=&#39;/competitions/robotour/2025/RobotourInfo2025.pdf&#39;&gt;official invitation (PDF)&lt;/a&gt; is available for download.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 641px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/buchlovice-map.png&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/buchlovice-map_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;635&#39; height=&#39;455&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://live.robotour.cz/&#39; class=&#39;external&#39;&gt;https://live.robotour.cz/&lt;/a&gt; with exact start times and QR codes for robots will also be available.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Partners&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 358px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;http://zamek-buchlovice.cz/&#39;&gt;&lt;img src=&#39;/competitions/robotour/2024/npu-logo.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;352&#39; height=&#39;149&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;http://zamek-buchlovice.cz/&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
  &lt;tr&gt;
  &lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 454px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://www.bdsensors.cz/&#39;&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/robotour/2024/bd-sensors-logo.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39; width=&#39;444&#39; height=&#39;72&#39;/&gt;&lt;/ span&gt;
&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
  &lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 268px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://www.visc.cz/&#39;&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/robotour/2024/visc-logo.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39; width=&#39;258&#39; height=&#39;73&#39;/&gt;&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;hr&gt;
&lt;a id=&#34;250913&#34;&gt;&lt;/a&gt;
&lt;h1&gt;Blog (md)&lt;/h1&gt;

&lt;h2&gt;Saturday, September 13, 2025&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;10:00&lt;/b&gt; &amp;mdash; the journey along the D1 was surprisingly smooth (yes, I got up at 4:10, so &lt;i&gt;body&lt;/i&gt; forced me to get up, and yet I won&#39;t go back to bed when the alarm was set for 4:40), so Tomáš (&lt;i&gt;SynthCat Robotics&lt;/i&gt;) and I arrived in Buchlovice around 9 am. That was also the beginning of the park&#39;s opening hours, or
there couldn&#39;t have been a better timing. The weather is worse &amp;mdash; it&#39;s pouring like a bucket, which reminds me too much of &lt;a href=&#39;/competitions/robotour/2024/en#240913&#39;&gt;last year&amp;#039;s floods&lt;/a&gt;. :-(&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yesterday, 4 teams were supposed to arrive, but apparently none of them showed up at the park &amp;mdash; either they didn&#39;t arrive, or they have enough problems to solve without the park, or the message got lost somewhere. But
even now (10am) there&#39;s no one here except Tomáš. We have a luxurious castle setting &amp;hellip; I could imagine a wedding here. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; And if the weather doesn&#39;t improve (the forecast
isn&#39;t very positive), we&#39;ll be really grateful for a roof over our heads!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/teams-base.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/teams-base_t.jpg&#39; alt=&#39;Base&#39; title=&#39;Base&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/teams-base.jpg&#39;&gt;Base&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I had a quick look around the park and &amp;hellip; the competitors often complain that I&#39;m planning all sorts of tricks for them &amp;mdash; there&#39;s no need, the reality is really &#34;cruel&#34;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; I have a feeling
that &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty&lt;/a&gt; would do it, but &lt;a href=&#39;/robots/eduro/en&#39;&gt;Eduro&lt;/a&gt; probably wouldn&#39;t. Various bridges, drainage channels (they are really needed here), puddles (where there are no channels), roots &amp;hellip; just a proper &lt;i&gt;English park&lt;/i&gt; &amp;hellip; the fact that there is no GPS under the wet trees is just a detail. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; I know they will stone me anyway, but &amp;hellip; I didn&#39;t have to complicate anything.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;11:00&lt;/b&gt; &amp;mdash; &lt;i&gt;ARBot&lt;/i&gt; and &lt;i&gt;Istrobotics&lt;/i&gt; arrived. Aleš (&lt;i&gt;ARBot&lt;/i&gt;) is said to be returning to Prague today, but &lt;i&gt;Istrobotics&lt;/i&gt; managed to do one quick ride last night and it is said to be challenging. They mentioned the newly established flowerbed, which is black and the neuron evaluates it as an asphalt road. Otherwise, the rain stopped
and I briefly saw the sun. There is still hope. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;added 15/09/2025&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;12:00&lt;/b&gt; &amp;mdash; it was almost time to go for lunch, but at the same time other teams started to appear. Or this would be solved &#34;a little&#34; from an organizational point of view (most likely
by returning to the original competition only on Saturday, but from morning to evening). &lt;i&gt;Ultimo Minuto&lt;/i&gt; arrived with their obviously quite heavy machine (two people struggled with it in total). Michal said that he was returning to Robotour after 15 years and if you remember &lt;a href=&#39;/competitions/robotour/2010/teams/tatran-team.jpg&#39;&gt;tank from Robotour 2010&lt;/a&gt;,
&lt;i&gt;Tatran team&lt;/i&gt;, then that&#39;s the connection. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
&lt;a href=&#39;https://www.helhest.com/&#39; class=&#39;external&#39;&gt;Helhest&lt;/a&gt; and &lt;i&gt;Artemis&lt;/i&gt; also appeared &amp;mdash; bigger robots. And slowly, things started to get better. So at least a quick lunch &amp;hellip;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/artemis.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/artemis_t.jpg&#39; alt=&#39;Artemis&#39; title=&#39;Artemis&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/artemis.jpg&#39;&gt;Artemis&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/helhest.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/helhest_t.jpg&#39; alt=&#39;Helhest&#39; title=&#39;Helhest&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/helhest.jpg&#39;&gt;Helhest&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/ultimo-cats.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/ultimo-cats_t.jpg&#39; alt=&#39;Ultimo Minuto and SynthCat Robotics&#39; title=&#39;Ultimo Minuto and SynthCat Robotics&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/ultimo-cats.jpg&#39;&gt;Ultimo Minuto and SynthCat Robotics&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;&lt;b&gt;13:00&lt;/b&gt; &amp;mdash; test &lt;i&gt;pre-round&lt;/i&gt;. I accompanied &lt;i&gt;Istrobotics&lt;/i&gt; to the loading point and on the way to the unloading &amp;hellip; only at one point the robot angrily threw the beer away. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
It was a big step at the approach to the bridge and the keg fell out:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/istrobotics-unloading.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/istrobotics-unloading_t.jpg&#39; alt=&#39;Automatic unloading - Istrobotics&#39; title=&#39;Automatic unloading - Istrobotics&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/istrobotics-unloading.jpg&#39;&gt;Automatic unloading - Istrobotics&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I think several teams would have deserved at least a point, but I wasn&#39;t at the start and it doesn&#39;t count towards the overall results anyway.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;14:00&lt;/b&gt; &amp;ndash; &lt;b&gt;1st round&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The loading and unloading task was the same as in the test pre-round (motivation why to participate in the optional pre-round). This time I
accompanied a large tricycle &lt;i&gt;Helhest&lt;/i&gt;, which zigzagged to the first bridge and reached the loading. After entering the next goal (unloading), but while turning 180 degrees
the robot went off the road. But a very nice (and dramatic) ride.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/helhest-on-bridge.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/helhest-on-bridge_t.jpg&#39; alt=&#39;Helhest heads to the first bridge&#39; title=&#39;Helhest heads to the first bridge&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/helhest-on-bridge.jpg&#39;&gt;Helhest heads to the first bridge&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Istrobotics&lt;/i&gt; repeated the ride from the pre-round without any problems, but they also did not get to the unloading. I think they filmed all the rides, so I will add a documentary video if necessary.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;ARBot&lt;/i&gt; had problems with USB cameras &amp;mdash; they would fail at various times, so the robot would sometimes only drive to one camera instead of two. Another problem was with the position on the map and although the robot later navigated nicely along the paths, its routing did not necessarily lead to the goal and therefore only 1 point for leaving the semi-autonomous zone. Tomáš alias
&#34;SynthCat Robotics&#34;&#34; and the guys with &#34;Artemis&#34; were in a similar situation. &#34;Unidroids&#34;&#34; struggled the most at the start, where the robot swerved a lot, simply not going straight, and &#34;Ultimo Minuto&#34;&#34;
also always only moved a little. Both teams therefore lost points.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;15:30&lt;/b&gt; &amp;ndash; &lt;b&gt;2nd round&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;By the second round, several teams had started editing the map, or rather prohibiting automatic routing over some bridges. There were 4 bridges in the castle garden and each one had some kind of betrayal.
To be honest, I was a little scared when &#34;Istrobotics&#34;&#34; threw themselves down a narrow path down the hill onto a smaller bridge, but they were not alone, so it was probably the poorest route.
In the second round, &lt;i&gt;Helhest&lt;/i&gt; failed to repeat the successful loading, nor did any other team. On the other hand, &lt;i&gt;Ultimo Minuto&lt;/i&gt; scored points and &#34;something went wrong&#34;
&#34;SynthCat Robotics&#34;&#34;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/ultimo-minuto.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/ultimo-minuto_t.jpg&#39; alt=&#39;Ultimo Minuto scores a point in the last minute of round 2&#39; title=&#39;Ultimo Minuto scores a point in the last minute of round 2&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/ultimo-minuto.jpg&#39;&gt;Ultimo Minuto scores a point in the last minute of round 2&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Sunday, September 14, 2025
&lt;i&gt;added 15/09/2025&lt;/i&gt;&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;9:00&lt;/b&gt; &amp;mdash; it rained in the morning. More precisely, it poured and thundered all night, so much so that it reminded me of last year&#39;s floods. Nevertheless, PavelS/&lt;i&gt;ND Team&lt;/i&gt; arrived with &lt;i&gt;Saya&lt;/i&gt; and after a while
Andy/Sĺňava with a toy car. The bad news was that when PavelS drove the robot from the car to the joystick, one of the motors stopped turning and that ended the competition for &lt;i&gt;ND Team&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/nd-team.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/nd-team_t.jpg&#39; alt=&#39;ND Team - Saya with a cart&#39; title=&#39;ND Team - Saya with a cart&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/nd-team.jpg&#39;&gt;ND Team - Saya with a cart&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;10:00&lt;/b&gt; &amp;mdash; &lt;b&gt;3rd round&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Loading at the statue, unloading at the Chocolate Factory &amp;hellip; but it didn&#39;t work out. Actually, no team arrived for loading. To boost my optimism, I took &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty&lt;/a&gt;
and went for a walk with him in the park &amp;mdash; see &lt;a href=&#39;https://youtu.be/p1D3oDQE7AM&#39; class=&#39;external&#39;&gt;video&lt;/a&gt; (trailer: ends with a collision with Helhest).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/dtc/phase2/matty-wedding-hall.jpg&#39;&gt;&lt;img src=&#39;/competitions/dtc/phase2/matty-wedding-hall_t.jpg&#39; alt=&#39;Matty 2x and team Sĺňava&#39; title=&#39;Matty 2x and team Sĺňava&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/dtc/phase2/matty-wedding-hall.jpg&#39;&gt;Matty 2x and team Sĺňava&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;11:30&lt;/b&gt; &amp;mdash; &lt;b&gt;4th round&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Helhest&lt;/i&gt; drove around the bend to the second bridge, &lt;i&gt;Istrobotics&lt;/i&gt; successfully loaded, but did not deliver the cargo, &lt;i&gt;Artemis&lt;/i&gt; drove out of the semi-autonomous zone and continued to the park
(&lt;a href=&#39;https://youtu.be/L_ZbfdbkMTc&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;). &lt;i&gt;Sĺňava&lt;/i&gt; also drove to the park and received an unofficial point for leaving the start. Only &lt;i&gt;Unidroids&lt;/i&gt; danced in front of the entrance and did not want to go any further.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 297px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/unidroids.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/unidroids_t.jpg&#39; alt=&#39;dancer Unidroids&#39; title=&#39;dancer Unidroids&#39; class=&#39;border&#39;  width=&#39;291&#39; height=&#39;516&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotour/2025/unidroids.jpg&#39;&gt;dancer Unidroids&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;12:30&lt;/b&gt; &amp;mdash; end of the competition and announcement. I&#39;m actually glad that it turned out so clearly and we didn&#39;t have to argue whether both days count or just the better one
as I promised. The competition was very demanding and once again I would like to thank all the teams for their active participation and commitment and the management of Buchlovice Castle for the great facilities and support.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;21:00&lt;/b&gt; &amp;mdash; I&#39;m happily back home, completely exhausted &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; but it was really nice, the weather finally cleared up in the critical slots (it was horrible at night &amp;mdash;
many hours of rain and thunderstorms), so good. But now for some reason the results for the 4th round haven&#39;t been updated, so maybe you can tell from the photo who won. I would like to add
the two days of &#34;blog&#34;, but I&#39;d rather not promise anything anymore &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/robotour2025-teams-with-robots.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/robotour2025-teams-with-robots_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;290&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. when the results are downloaded and re-uploaded, they are visible &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 383px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotour/2025/robotour2025-results.png&#39;&gt;&lt;img src=&#39;/competitions/robotour/2025/robotour2025-results_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;377&#39; height=&#39;328&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250922&#34;&gt;&lt;/a&gt;
&lt;a id=&#34;251003&#34;&gt;&lt;/a&gt;
&lt;h1&gt;Online Robotour Workshop (recording)&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Robotour Workshop&lt;/li&gt;

&lt;li&gt;Wednesday, 1st October 2025, 20:00 – 21:00&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;
&lt;iframe width=&#34;814&#34; height=&#34;410&#34; src=&#34;https://www.youtube.com/embed/3vX_kgSu6tA&#34; title=&#34;Seminár Robotika.SK, 72. Minikonferencia Robotour 2025 (Istrobotics, Helhest, Ultimo Minuto, Slnava)&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;h1&gt;Other videos&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.youtube.com/shorts/9r1K6lacxHY&#39; class=&#39;external&#39;&gt;Robotour 2025 - Istrobotics crash&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=p1D3oDQE7AM&#39; class=&#39;external&#39;&gt;Matty M04 and Helhest on Robotour 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;If you want to support the competition in any way or have any additions/questions,
so please contact us using the &lt;a href=&#39;/competitions/robotour/2025/en#email&#39;&gt;contact form&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>RoboOrienteering 2025</title>
    <link rel='alternate' href="https://robotika.cz/competitions/roboorienteering/2025/en"/>
    <id>https://robotika.cz/competitions/roboorienteering/2025/en</id>
    <updated>2015-04-28T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Soutěž &lt;i&gt;RoboOrienteering&lt;/i&gt; se po delší době koná na nové lokaci &lt;strike&gt;v lázeňském parku
zámku Kynžvart&lt;/strike&gt;. Úkolem robota je stále navšívit co nejvíce kontrolních bodů označených
kužely s tím, že u pěti může odhodit míček  a získat extra body. Vzhledem k tomu, že
zámek Kynžvart je státní zámek a soutěž bude součástí oficiálního programu, je nutná
brzká &lt;b&gt;registrace do 31. května 2025&lt;/b&gt;. Samotná soutěž se koná &lt;b&gt;v sobotu 21. června 2025&lt;/b&gt;.
&lt;b&gt;Update:&lt;/b&gt; 26/06/2025 &amp;mdash; &lt;a href=&#39;/competitions/roboorienteering/2025/en#250626&#39;&gt;Freyja / Cogito - Přesnost lokalizace&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://robotika.vosrk.cz/roboorienteering/index.php&#39; class=&#39;external&#39;&gt;Oficiální stránky soutěže RoboOrienteering&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.zamek-kynzvart.cz/&#39; class=&#39;external&#39;&gt;https://www.zamek-kynzvart.cz/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 645px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/castle-kynzvart.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/castle-kynzvart_t.jpg&#39; alt=&#39;Zámek Kynžvart&#39; title=&#39;Zámek Kynžvart&#39; class=&#39;border&#39;  width=&#39;639&#39; height=&#39;308&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/castle-kynzvart.jpg&#39;&gt;Zámek Kynžvart&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
zdroj: &lt;a href=&#39;https://www.zamek-kynzvart.cz/cs/fotogalerie/69553-kynzvartsky-zamecky-areal-z-nebes&#39; class=&#39;external&#39;&gt;https://www.zamek-kynzvart.cz/cs/fotogalerie/69553-kynzvartsky-zamecky-areal-z-nebes&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/roboorienteering/2025/en#250621&#39;&gt;Výsledky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/roboorienteering/2025/en#250622&#39;&gt;Matty M03 - Robotika&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/roboorienteering/2025/en#250623&#39;&gt;Freyja - Tým Cogito&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/roboorienteering/2025/en#250626&#39;&gt;Freyja / Cogito - Přesnost lokalizace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250618&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Změna lokace!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Z důvodu revitalizace (?) zámeckého parku se soutěž přesouvá na jíné místo &amp;mdash; na dopravní hříště &lt;b&gt;Základní školy Úšovice v Mariánských Lázních!&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 586px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/new-location.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/new-location_t.jpg&#39; alt=&#39;nová lokace&#39; title=&#39;nová lokace&#39; class=&#39;border&#39;  width=&#39;580&#39; height=&#39;444&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/new-location.jpg&#39;&gt;nová lokace&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Doplňující info od organizátora soutěže:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;V příloze naleznete mapu s vyznačenými značkami a jejich přesné souřadnice. Vzhledem k menšímu prostoru bude pouze 8 kontrolních bodů. Pokud pojede robot v pořadí číslování kuželů 1 – 8, délka trati je cca 350m. Pořadí a počet navštívených kontrolních bodů si můžete zvolit sami.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Start prvního kola je v 10:30 hod, vzhledem k velkému počtu přihlášených robotů se bude startovat v tří minutových intervalech. Během max. tří minut musí robot opustit startovací pozici.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Pokládání golfových míčků je dobrovolné, ale pokud to robot zvládne, získá body navíc. Body získá i za průjezd, nebo přiblížení se k cíli. Cíl bude umístěn jinde než start, aby nedocházelo ke kolizím se startujícími roboty.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Pokud by mělo během jízdy dojít ke střetu dvou či více robotů, je povoleno robota zastavit ( měl by se sice umět jinému robotovi vyhnout), a opětovně zase zapnout. To platí hlavně u střetu více robotů u kontrolního bodu - kuželu. Tady můžete robota v dostatečné vzdálenosti zastavit a až bude prostor kolem kuželu volný, pokračovat v jízdě.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 586px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/destination-points.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/destination-points_t.jpg&#39; alt=&#39;Kontrolní body&#39; title=&#39;Kontrolní body&#39; class=&#39;border&#39;  width=&#39;580&#39; height=&#39;444&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/destination-points.jpg&#39;&gt;Kontrolní body&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;pre&gt;Start 49°954046 12°709531
Cíl 49°953423 12°709187
1 49°9539450 12°708882
2 49°9537240 12°709185
3 49°9539130 12°709649
4 49°9541606 12°709484
5 49°9543109 12°709360
6 49°9542960 12°708717
7 49°9546010 12°708368
8 49°9536645 12°708831&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; celková vzdálenost trasy při průjezdu všemi kontrolními body  v pořadí 1 – 8  je cca &lt;b&gt;350m&lt;/b&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250621&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Výsledky&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 532px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/results.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/results_t.jpg&#39; alt=&#39;výsledky&#39; title=&#39;výsledky&#39; class=&#39;border&#39;  width=&#39;526&#39; height=&#39;456&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/results.jpg&#39;&gt;výsledky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250622&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Matty M03 - Robotika&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včerejší soutěž byla fajn &amp;mdash; vlastně předčila všechna moje očekávání. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Na rovinu se přiznám, že jsem se těšil na Kynžvartský zámecký park a že to byla jedna z motivací, proč do toho
po delší době jít.
Pak Jirka/Cogito zmínil, že je to jedna z mála soutěží letos, kam by mohl dorazit sám ze Švýcar. No a korunu tomu nasadil MartinL, když prohlásil, že se ho žena ptala, zda nebude nějaka soutěž,
že by si udělali rodinný výlet. A s robotem (a ženou) do toho šel i PavelS, tak &amp;hellip; řekněte v této konstelaci &lt;b&gt;NE!&lt;/b&gt; a že máte už robotů po &lt;a href=&#39;/competitions/fieldrobot/2025/en&#39;&gt;FRE&lt;/a&gt; plné zuby?! &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Z čeho jsem však nakonec ustoupil byl počet robotů. Původně jsem chtěl „vyvětrat” velkého &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pata&lt;/a&gt;, který by na rozsáhlý zámecký park pěkně pasoval. A přihlásil jsem i &lt;i&gt;Mattyho M02&lt;/i&gt;,
hlavího učastníka FRE, kdyby si to studenti náhodou rozmysleli &amp;mdash; nerozmysleli. Nakonec jsem zůstal u jednoho robota &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty M03&lt;/a&gt;, kterému jsem se ale tady v Mariánkách
mohl plně věnovat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Přiznám se bez mučení, že přípravě jsem věnoval opravdu málo času &amp;hellip; a na rovinu nebylo z čeho brát. Schválně otevřu &lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/10&#39; class=&#39;external&#39;&gt;pull request&lt;/a&gt;,
tam to v těch &lt;i&gt;commitech&lt;/i&gt; bude vidět (mimochodem mne tady dostal TomíkK, že vlastně sleduje i změny na GitHubu, což je asi první člověk, kterého znám &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;) No myslel jsem, že tam bude vidět
i časová osa, ale není &amp;mdash; ta je lépe vidět &lt;a href=&#39;https://github.com/robotika/osgar-apps/commits/feature/roboorienteering-2025/&#39; class=&#39;external&#39;&gt;zde&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je tam nějaký &lt;i&gt;commit&lt;/i&gt; z 23. května 2025, kdy jsme se asi rozhodli, že do toho jdeme. Naházel jsem tam na hromadu kód z &lt;a href=&#39;/competitions/roboorienteering/2018/en&#39;&gt;2018&lt;/a&gt; (???), hrátky s Patem a 
&lt;a href=&#39;/robots/pat-a-mat/en#241020&#39;&gt;Cones Challenge&lt;/a&gt;. Další &lt;i&gt;příhoz&lt;/i&gt; byl 18. června (3 dny do soutěže), kdy jsem tam pro vyhybání se překážkám přidal kus kódu z &lt;a href=&#39;/competitions/fieldrobot/2025/en&#39;&gt;FREčka&lt;/a&gt;. 
I když to možná ještě byla jen jízda rovně &amp;hellip; no raději toho nechám, je to ostuda a takto se přece člověk na soutěž nepřípravuje. Ale opravdu nám šlo o soutěž? Plán byl to pojmout jako
&lt;i&gt;společenskou událost&lt;/i&gt; a přizvat k tomu i naše roboty. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;h3&gt;Testování na hřišti&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Asi největší radost jsem měl z toho, že &lt;i&gt;Matty M03&lt;/i&gt; detekoval (resp. jeho neuronka běžící na &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D Pro&lt;/a&gt;) oranžový kužel &lt;b&gt;bez pruhů!&lt;/b&gt; Model jsem převzal na zmiňovanou
&lt;i&gt;Cones Challenge&lt;/i&gt; (jen interní hecování) &lt;a href=&#39;https://github.com/mkrupczak3/Coneslayer&#39; class=&#39;external&#39;&gt;někde z internetu&lt;/a&gt; a nedotrénovával jsem to. (pozn. teď na ten odkaz koukám a je tam ukázka detekce přímo
na oranžových kuželech) To bych tady na místě opravdu nedal. A co více, nejen že kamera kužely detekovala, ona je detekovala velmi dobře i
na vzdálenost několika desítek metrů! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale klasicky to mělo i vedlejší efekt &amp;mdash; při prvních testovacích jízdách vždy hned po startu vyjel a zahnul vlevo?! On tam totiž byl kužel (číslo 2) a tak se na něj
vrhnul. Jen to bylo do kopce a ten před sebou krásně po rovince (číslo 1) ignoroval. Svůj starý kód si teď interpretuji tak, že pokud vidíš vícero kuželů, tak si vyber ten největší, tj.
nejblíž (z barevného obrazu).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone-at-distance.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/cone-at-distance_t.jpg&#39; alt=&#39;vzdálený kužel&#39; title=&#39;vzdálený kužel&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone-at-distance.jpg&#39;&gt;vzdálený kužel&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;1. kolo&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Startoval jsem poměrně na začátku, tak už nebyl čas na další úpravy a „problém” z testování jsem chtěl pořešit vhodným nasměrováním robota na startu. Úplně se to nepovedlo, ale myslím, že na druhý pokus vyjel
skoro rozumně. Detaily si teď už přesně nevybavím, ale při náhodné jízdě s algoritmem:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;když vidíš kužel, tak vyraž tím směrem&lt;/li&gt;

&lt;li&gt;pokud je před tebou překážka, tak uhni volným směrem, který je blíže středu (levá vs. pravá)&lt;/li&gt;

&lt;li&gt;jinak jeď rovně&lt;/li&gt;

&lt;li&gt;a pokud i přesto narazíš (přední nárazník), tak si 1m couvni mírně do zatáčky&lt;/li&gt;

&lt;li&gt;pokud je kužel méně než 1m před tebou zastav a čekej 3 sekundy&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;A tak &lt;i&gt;Matty M03&lt;/i&gt; vesele jezdil (rychlost jsem mu zvedl na maximálku 0.5m/s) a když to šlo, tak ze soutěžního prostoru „zdrhnul”. Nechal jsem ho přejet hřiště, silnici a až ke kontejnerům
v dalším bloku, ale pak podle GPS (kterou jsem jenom sbíral a nepoužíval) byl více jak 100m od nejbližšího &lt;i&gt;waypointu&lt;/i&gt;. Tam jsme robota se sudím o 180 stupňů otočili (to bylo v prvním kole
povolené). Body získal někde na začátku (kužel 4?) tak zbytek už byl test, co vše přežije &amp;hellip; a bylo to drsné.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První kolo skončilo bouráním do plotu, kdy se navíc připletl do plané růže a ta mu vytrhla kabel od kamery. Zpětně si uvědomuji, že za tu problémovou detekci drátěného plotu si možná můžu sám
&amp;mdash; místo nejblížší překážky jsem bral &lt;a href=&#39;https://github.com/robotika/osgar-apps/blob/feature/roboorienteering-2025/roboorienteering/ro.py#L236&#39; class=&#39;external&#39;&gt;np.percentile(data, 5)&lt;/a&gt;, tj. 5% nejbližších se ignoruje (typicky vyšší stonky trávy a šum) &amp;hellip; a možná i ten plot.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/g3JUw3Tzx9Y&#39; class=&#39;external&#39;&gt;1. kolo - Matty M03 - dokumentační video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;2. kolo&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Cílem druhého kola bylo se udržet v soutěžní aréně. Jelikož nedošlo k integraci kompasu (ani indicie typu míříš na sever nebo na jih), tak hrubou informaci měl robot pouze z GPS. Musel mezi tím
ujet alespoň metr &amp;hellip; a ano, byl to důvod &lt;i&gt;tanečků&lt;/i&gt;. Algoritmus se změnil na&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;jinak jeď rovně, pokud GPS pozice od nejbližšího waypointu je menší než 20m&lt;/li&gt;

&lt;li&gt;v opačném případě se otoč na waypoint&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;A jak to dopadlo? Jel krasně rovně na kužel číslo 1 a po dvaceti metrech se otočil o 180 stupňů zpět na start. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; A když v té divoké otočce neviděl žádný kužel, který by ho srovnal a nutil do &lt;i&gt;jízdy na kužel&lt;/i&gt;
tak se na té hranici 20m rád rozhlížel po okolí &amp;mdash; viz obrázek odometrie z poslední části (i když to možná byl už test navíc po soutěžní jízdě). Za startovní kužel mi nikdo body dát nechtěl,
ale přesto se robotu podařílo zase jeden (?) někde cestou ulovit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/dancing-matty.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/dancing-matty_t.jpg&#39; alt=&#39;tancující robot&#39; title=&#39;tancující robot&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/dancing-matty.jpg&#39;&gt;tancující robot&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/matty-on-fence-run2.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/matty-on-fence-run2_t.jpg&#39; alt=&#39;Matty M03 leze na plot&#39; title=&#39;Matty M03 leze na plot&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/matty-on-fence-run2.jpg&#39;&gt;Matty M03 leze na plot&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/M-SOQsDE0dQ&#39; class=&#39;external&#39;&gt;2. kolo - Matty M03 - dokumentační video&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/-61jw1tHqWY&#39; class=&#39;external&#39;&gt;Matty bojovík - video TomášP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;3. kolo&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Do posledního kola jsem přídal pár drobných, ale důležitých, změn:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;ignoruj první waypoint (start)&lt;/li&gt;

&lt;li&gt;pokud při reportu dosažení kužele jsi blíž jak 10m od nějakého waypointu, tak ho odstraň ze seznamu&lt;/li&gt;

&lt;li&gt;pokud jsi více jak 20m od nejbližího ze zbývajících waypointu, tak se otáčej pomalým obloukem jeho směrem (ať orientace z GPS pozice dává alespoň trošku smysl).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Na doporučení jsem také přesunul GPS anténu alespoň na krabici &amp;mdash; jak jsem tu GPS do té doby moc nepotřeboval, tak byla uvnitř.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A jezdilo to pěkně. Sice některé kužely si dal i 4x (v GPS waypointech je neměl, ale když je viděl, tak „nemohl odolat”), ale s časem a přirozenou randomizací
(&lt;i&gt;nature&lt;/i&gt;) za 75 minut navštívil všechny kužele. Ono třeba cíli byl cca v první třetině, ale nikde neni v pravidlech řečeno, že cíl musí být poslední. Bylo to úmorné a dalo se na to koukat
jenom s tím, že níkdo nevěděl, co teď přesně udělá! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/_WnGD0NHQps&#39; class=&#39;external&#39;&gt;3. kolo - Matty M03 - dokumentační video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;1:07 - cone4, scoring
4:04 - false detection
4:53 - cone1, not reporting, not scoring
8:39 - goal cone, scoring
10:20 - goal cone, not scoring
11:50 - goal cone, not scoring
13:42 - false detection
13:57 - false detection
14:54 - cone8, scoring
15:51 - Odroid, power reset
19:35 - cone6, scoring
21:13 - cone1, scoring
22:41 - cone2, scoring
23:57 - goal cone, not scoring
25:34 - manual intervention (?)
26:57 - false detection
27:53 - cone3, scoring
29:00 - start cone
30:24 - start cone
31:13 - found hole in the fence
31:50 - cone4, not scoring
37:55 - fence hole again
39:04 - cone4, not scoring
42:50 - cone4, not scoring
46:37 - cone5, not reporting, not scoring
50:05 - cone5, not reporting, not scoring
52:09 - start cone
52:25 - start cone
53:26 - cone4, not scoring
55:42 - cone5, scoring
57:48 - cone6, not scoring
59:05 - cone2, not scoring
1:00:07 - cone8, not scoring
1:04:15 - cone7, not reporting, not scoring
1:04:42 - camera restart
1:07:18 - cone7, scoring&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 394px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/matty-gps-round3.png&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/matty-gps-round3_t.png&#39; alt=&#39;GPS/NMEA trace - Matty M03, round 3&#39; title=&#39;GPS/NMEA trace - Matty M03, round 3&#39; class=&#39;border&#39;  width=&#39;388&#39; height=&#39;525&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/matty-gps-round3.png&#39;&gt;GPS/NMEA trace - Matty M03, round 3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;TIMEOUT&lt;/i&gt; &amp;hellip; časem snad doplním nějaké foto a video &amp;hellip; a závěr, že díky moc ogranizátorům za super outdoor robotický den! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250623&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Freyja - Tým Cogito&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jak kdysi napsal spolužák do protokolu o chemické laboratorní práci: Pokus se mi líbil.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Martin už předestřel, že jsme se letos účastnili podle motta &#34;robotická soutěž jako společenská událost.&#34; Jelikož praotce Čecha bolely nohy, jsou Čechy zbytečně daleko od mého současného bydliště. Do Mariánských Lázní ještě jakž takž dojedu jako jeden řidič za jeden den. Tj. v pátek tam, v neděli zpátky. Cokoli dál by mi zabralo div ne týden.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Po loňském nepředstavení na &lt;a href=&#39;/competitions/elrob/2024/en&#39;&gt;Elrobu&lt;/a&gt; bylo mým letošním cílem, aby se &lt;a href=&#39;/robots/freyja/en&#39;&gt;Freyja&lt;/a&gt; alespoň rozjela. Kód byl v zásadě právě z Elrobu. Jenom fázi 1, Následuj Mě a Pamatuj si Průjezdní Body, nahradily ručně zadané souřadnice průjezdních bodů. Prostě jsem kus kódu smazal.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Týden před soutěží zpochybňovala žena má - bez jejíž podpory by to nešlo! - moji snahu někam jet soutěžit, když robot nejezdí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V pátek jsem totiž odpálil pojistku, pořád nevím jak. V sobotu nenabíhalo PC a kamery. V tom horku se na některé komponenty v robotovi ani nedalo sáhnout. Odrivům - řadičům motorů - se do akce taky spíš nechtělo. Dobrá zpráva byla, že kamery se mi podařilo &#34;opravit.&#34; Nesmím totiž pustit všechny najednou, Jenže jsem při nějakém upgrade kódu vynechal veledůležité synchronizační sleepy. Potíž s Odrivy je podle všeho potíž s USB konektory. Robota jsem stavěl před šesti lety a nečekal jsem, že přežije svou první &lt;a href=&#39;/competitions/subtchallenge/tunnel-circuit/en&#39;&gt;Subterranean Challenge&lt;/a&gt;. Ten věk začíná být znát.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Do předsoutěžní neděle jsem vkročil s nadějí v srdci. Kompas s IMU ji vyrval. Přešel z režimu &#34;občas, velmi zřídka, zamrznu&#34; do režimu &#34;po každém startu za chvilku zamrznu.&#34; Ale já se nedám! Konečně ten problém dokážu reprodukovat! A co jde reprodukovat, jde spravit! No věřili byste tomu, že to několikasetmegahertzové dvoujádrové esp32 &#34;arduino&#34; se, když zaplní výstupní buffer sériové linky, totálně zasekne? Pracovní hypotéza je, že v tom horku něco zpomalilo a proto se ten buffer přeplňoval. Jednoduchým řešením je posílat data méně často. Beztak je podvzorkovávám na PC. O tom podivném kódu pro detekci překážek z lidaru, který tam byl už na &lt;a href=&#39;/competitions/elrob/2024/en&#39;&gt;Elrob 2024&lt;/a&gt;, se radši nebudeme bavit, ano? To do slušné společnosti nepatří.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pondělní rychlý ranní test vypadal nadějně. Pondělní odpolední pohled na již dlouho nepoužitý nafouklý záložní lipoly akumulátor mě natolik vyděsil, že jsem ho ve svém pyrotechnickém obleku okamžitě odvezl do sběrného dvora a objednal jiný.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V úterý večer jsem připrogramoval homologační &#34;když nemáš waypointy, jeď rovně.&#34; No jo, zapomněl jsem na homologaci. Ve středu večer jsem to otestoval a opravil, aby robot jel, ale ne na opačnou stranu. Robot se vcelku hýbal, jenom s těmi konektory toho už moc nenadělám.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V pátek jsem přejel do Čech, vybalil u hotelu robota, popojel rovně, senzory fungovaly, robota jsem vypnul a jal se moudře radit konkurenci.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/moudre_rady.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/moudre_rady_t.jpg&#39; alt=&#39;Freyja s Martinem a Pavlem&#39; title=&#39;Freyja s Martinem a Pavlem&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/moudre_rady.jpg&#39;&gt;Freyja s Martinem a Pavlem&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V sobotu jsme se přesunuli do soutěžního prostoru. Homologace se nějak nekonala, tak jsem nastavil trasu podle Plánu A a robota cvičně pustil. Robot na první dobrou projel celou trasu, jen cílové kužely objel bokem a zastavil trochu moc daleko za nimi. Posunul jsem cílový bod v konfiguraci na sever a šel se socializovat do pitstopu na východ.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Do prvního soutěžního kola se nechtělo pustit PC. Viz Těžká Sobota. A už jste to zkusili vypnout a zapnout? Robot vyráží, krásně nachází čtyři kužely a vydává se směrem k úzkým kovovým trubkám kolem fotbalového hřiště. Při testovací jízdě jimi Freyja prokličkovala, zůstávám v klidu. To jsem neměl. Tentokrát se dala s jednou z trubek do boje. Býval jsem měl dělat překážku, to se smělo. Robota vypínám stop tlačítkem. V prvním kole ho smím posunout a pustit znovu. Nicméně odrivy už nenaběhly. V systémovám logu jsem pak našel nějaké divné errory z USB systému. Dobré zprávy jsou dvě: 1. Robot se rozjel, mám splněno. 2. Aniž bych si to uvědomil, můj nezvyklý průjezd v protisměru oproti očekávání vedl nejdříve přes vysoce bodované kužely. Nedojeli jsme jen k plebsovým kuželům. Zůstáváme ve hře.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Do druhého kola jsem posunul jeden z průjezdních bodů, aby měla Freyja více prostoru při objezdu basketbalového koše. Ach ty úzké kovové tyče. Teď už jsem z nich nervózní. S trochou pomoci aktivních překážek kolem tyčí u fotbalového hřistě Freyja objíždí celou trasu kolem všech kuželů. Jenom do cíle opět přijíždí z boku, čímž přichází o pár bodů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Z mezivýsledků po druhém kole je zřejmé, že:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;První s Freyjou nebudeme. Vedoucí robot kladoucí golfové míčky, což Freyja nedělá, už má pro nás nedosažitelné množství bodů.&lt;/li&gt;

&lt;li&gt;Druzí taky nebudeme. To by musel průběžně druhý robot, taky kladoucí míčky, shořet, což se nejspíš nestane, a Freyja by musela předvést perfektní jízdu.&lt;/li&gt;

&lt;li&gt;Třetí bychom být měli. Pokud neshoří Freyja, což se stát může, ale nemělo by, a neustřelí naprosto nadstandardním výkonem některý z robotů za námi.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;V závěrečním kole chce organizátor vidět hodně pohybu a bodů a povoluje týmům roboty ručně zachraňovat z obtížných situací a znovu je pouštět. Tak na tomhle nemůžeme s Freyjou nic získat. Restarty nám zjevně nejdou. Můžeme jenom ztratit :-/ Musí něco předvést!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 381px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/freyja_vyrazi.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/freyja_vyrazi_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;375&#39; height=&#39;500&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Do závěrečného kola posouvám průjezdní bod u hřistě dál od těch #@! trubek. Stejně byla ale zase potřeba živá stěna. A předělávám příjezd do cíle. Chci maxim bodů! Moje blbost. Copy paste error a robot se po návštěvě všech kuželů místo nájezdu do cíle vydává do Kazachstánu. A kdo ví, třeba tam jede dodnes.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vrtá mi hlavou, jestli by se oprava waypointů v soutěžním prostoru považovala za ve třetím kole povolený restart, nebo za stále zakázanou úpravu kódu v poli.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Každopádně, na odražení Martinova závěrečného náporu to stačilo a ani při onom povoleném freestyle jiný robot bodově neustřelil.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Robot Freyja týmu Cogito získává třetí místo celkově a první v nevyhlášené mnou smyšlené kategorii robotů bez golfových míčků! Děkujeme organizátorům za krásné robotické setkání.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Po patřičné sobotní večerní socializaci v místních občerstvovacích zařízeních se v neděli vydávám domů, kde nacházím již připravený vítězný plán na příští ročník.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 381px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/plan2026.jpg&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/plan2026_t.jpg&#39; alt=&#39;Plán 2026&#39; title=&#39;Plán 2026&#39; class=&#39;border&#39;  width=&#39;375&#39; height=&#39;500&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/plan2026.jpg&#39;&gt;Plán 2026&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250626&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Freyja / Cogito - Přesnost lokalizace&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;RoboOrientering nám dává mimořádnou příležitost ověřit lokalizaci robota ve venkovním prostředí. Freyja totiž jede na zadanou souřadnici a dojede-li k ní, podle svého názoru, na méně než jeden metr, nahlásí kužel. Ale je opravdu kužel tam, kde ho očekává?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První indicii vysoké přesnosti Freyjiny lokalizace nám dává průběh soutěže. Všechny kužely, které Freyja hlásila, se vešly do 2,5 metru od ní, což je hranice měřená rozhodčími.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhou informaci nám dávají další senzory na robotovi a uložené logy z jízdy. Když robot zastaví u kuželu, měl by kužel být viditelný některým z lidarů nebo některou z hloubkových kamer. Pro účely tohoto článku se budu soustředit na vodorovný lidar. Je nejpřesnější a nejsnáze zpracovatelný.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Lokalizace na Freyje je možná trochu složitější, než je pro Roboorienteering nutné. Fúzuji dvě GPS (Septentrio Mosaic X5 na desce SimpleRTK3B, v RoboOreinteeringu bez RTK korekce), magnetický kompas (LIS3MDL), IMU (LSM6DSL), odometrii z kol a SLAM (simultánní lokalizace a mapování) z lidaru. Kompas z dvouanténových GPS kvůli rušení ze strany USB3 kamer během analyzovaného kola nefungoval a robot se pro určení své orientace musel spoléhat především na magnetický kompas a IMU. Odometrie je na smykově řízeném robotovi poměrně nekvalitní a pokud má lokalizace jinou možnost, odometrii moc nevěří. Kvalita lidarového SLAMu závisí na prostředí, na množství překážek a jejich pohyblivosti. V každém případě IMU, odometrie i SLAM dávají informaci jen o relativním otočení a nikoli o absolutním natočení, např. vůči severu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Začněme kuželem č. 1, kde se robot podle všeho během svého druhého kola nejvíce ztratil. Na obrázku vidíme, že se očekávaná poloha kuželu, symbolizovaná červenou tečkou, od polohy detekované lidarem, symbolizované shlukem modrých teček, liší o necelého 1.5 metru. I v nejhorším teoretickém případě, což není případ kuželu č. 1, kdyby robot tuto chybu udělal nedojetím ke kuželu přesně před sebou a zastavil by metr od domnělé polohy kuželu, nejbližší část robota by stále byla blíže než 2,5 metru od kuželu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 306px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone1.png&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/cone1_t.png&#39; alt=&#39;Kužel č. 1&#39; title=&#39;Kužel č. 1&#39; class=&#39;border&#39;  width=&#39;300&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone1.png&#39;&gt;Kužel č. 1&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;U dalších kuželů vidíme rozdíl mezi očekávanou a skutečnou polohou kuželu pod půl metru, i když ne o moc.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 306px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone2.png&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/cone2_t.png&#39; alt=&#39;Kužel č. 2&#39; title=&#39;Kužel č. 2&#39; class=&#39;border&#39;  width=&#39;300&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone2.png&#39;&gt;Kužel č. 2&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 306px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone3.png&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/cone3_t.png&#39; alt=&#39;Kužel č. 3&#39; title=&#39;Kužel č. 3&#39; class=&#39;border&#39;  width=&#39;300&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone3.png&#39;&gt;Kužel č. 3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 306px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone5.png&#39;&gt;&lt;img src=&#39;/competitions/roboorienteering/2025/cone5_t.png&#39; alt=&#39;Kužel č. 5&#39; title=&#39;Kužel č. 5&#39; class=&#39;border&#39;  width=&#39;300&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/roboorienteering/2025/cone5.png&#39;&gt;Kužel č. 5&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ostatní kužely, které neukazuji, na tom byly podobně. Jen zůstaly v zákrytu za částí robota a vodorovný lidar je v okamžiku jejich nahlášení neviděl. Detekce z ostatních senzorů dávají shodný obraz, jen s větším množstvím nepřesnosti ze strany senzorů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když se místo na fúzovanou lokalizaci soustředím jen na jednu z GPS a magnetický kompas s IMU, vychází to skoro také tak. U kuželu č. 1 se fúzovaná poloha a poloha s GPS shodují. U kuželu č. 2 je GPS dokonce přesnější. U kuželu č. 3 je fúzovaný odhad o 20 cm přesnější a u kuželu č. 5 o 50 cm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Závěrem tedy je, že navzdory stromům lze RoboOrienteering zvládnout jen s GPS a kompasem, bez detekce kuželů, a v naprosté většině případů dojet do 2.5 metru od kuželu. Při kombinaci více senzorů to jde i přesněji. Pochopitelně pak s využitím kamery nebo lidaru pro závěrečné přiblížení anebo přidáním RTK či SBAS GPS korekcí je možné jet na dotyk s kuželem, jak předváděl vítězný robot (SBAS korekce).&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/rdTPACa_xiY&#39; class=&#39;external&#39;&gt;Cogito team&amp;#039;s robot Freyja at the second round of RoboOrienteering 2025 (video)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/competitions/roboorienteering/2025/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Field Robot 2025</title>
    <link rel='alternate' href="https://robotika.cz/competitions/fieldrobot/2025/en"/>
    <id>https://robotika.cz/competitions/fieldrobot/2025/en</id>
    <updated>2025-02-02T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Field Robot Event 2025 (FRE2025) will take place in Milano, Italy, from June 9 to June 12, 2025, at Agriturismo da Pippo.
This competition is open to universities worldwide, offering a unique opportunity to push the boundaries of autonomous farming and agricultural robotics.
&lt;b&gt;Blog update:&lt;/b&gt; 18/06/2025 &amp;mdash; &lt;a href=&#39;/competitions/fieldrobot/2025/en#250618&#39;&gt;Official results task 3, 4, 5&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/fre2025.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/fre2025_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;396&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://fieldrobot.nl/event/index.php/2025/01/31/field-robot-event-2025-in-milano-italy/&#39; class=&#39;external&#39;&gt;official FRE2025 website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h1&gt;Official announcement&lt;/h1&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Competition Challenges FRE2025:&lt;/b&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;🚜 Task 1: Autonomous Maize Field Navigation&lt;/li&gt;

&lt;li&gt;🌽 Task 2: Autonomous Maize Field Navigation with Cobs Detection&lt;/li&gt;

&lt;li&gt;🍎 Task 3: Fruit Mapping&lt;/li&gt;

&lt;li&gt;🍄 Task 4: Bioluminescent Fungi Discovery&lt;/li&gt;

&lt;li&gt;✨ Task 5: Freestyle&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;💡 &lt;b&gt;Want to compete?&lt;/b&gt; Registration opens on &lt;b&gt;March 3, 2025&lt;/b&gt;, and closes on &lt;b&gt;April 25, 2025&lt;/b&gt;. The registration fee per team will be announced at the opening of registration.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;🤖 &lt;b&gt;Seeking sponsorship?&lt;/b&gt; New teams can apply for sponsorship to support their participation, with funding up to €1500 per team by CLAAS-Stiftung. More details and application link: &lt;a href=&#39;https://www.claas-foundation.com/students/field-robot-event/application&#39; class=&#39;external&#39;&gt;https://www.claas-foundation.com/students/field-robot-event/application&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;📢 &lt;b&gt;Have questions about the rules?&lt;/b&gt; Join our FRE2025 Discord server now to get updates, connect with teams, and participate in the Q&amp;amp;A discussion: &lt;a href=&#39;https://discord.gg/56unzZVBqn&#39; class=&#39;external&#39;&gt;https://discord.gg/56unzZVBqn&lt;/a&gt;.
Read the rules now!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;🌐 &lt;b&gt;Website Update:&lt;/b&gt; Further event details will soon be available on our website: &lt;a href=&#39;https://fieldrobot.nl/event/&#39; class=&#39;external&#39;&gt;https://fieldrobot.nl/event/&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;📍 &lt;b&gt;Getting here:&lt;/b&gt; The event venue is 12 km from Milano Linate Airport and 17 km from Milano Central Station (&lt;a href=&#39;https://maps.app.goo.gl/vvDwCqE4XHUdzBwW7&#39; class=&#39;external&#39;&gt;Google Maps&lt;/a&gt;).&lt;/div&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;CULS Robotics Team Blog (CRT-B)&lt;/h1&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;CULS Robotics&lt;/i&gt; is a new Czech student team for Field Robot 2025! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Yes, it took only &lt;a href=&#39;/competitions/fieldrobot/2015/en&#39;&gt;10 years&lt;/a&gt; to find a group of excited students and „start again”!
The team of 3 students was founded in &lt;a href=&#39;https://www.czu.cz/en&#39; class=&#39;external&#39;&gt;Czech University of Life Science Prague&lt;/a&gt;. The members are all in the last year of their study, so the priorities a bit colide with with
&lt;i&gt;details&lt;/i&gt; like finishing diploma thesis or final exams &amp;hellip; but their self-motivation is still strong so hopefully we will see them all competing in Italy in June.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;CRT will compete with robot &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty M02&lt;/a&gt; &amp;mdash; the green one, red one is a backup or it will be used for the &lt;i&gt;free style&lt;/i&gt; discipline. Robot is equipped only with
&lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D Pro camera&lt;/a&gt; and it is programmed in Python using &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGAR framework&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Team members:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Simona (team lead)&lt;/li&gt;

&lt;li&gt;Ondra (software)&lt;/li&gt;

&lt;li&gt;Franta (hardware)&lt;/li&gt;

&lt;li&gt;Elena (ChatGPT)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Content&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250410&#39;&gt;w18 - Matty GO!&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250411&#39;&gt;w17 - Fake it until you make it (matty-go-cam.json, github, Rules 2.0)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250414&#39;&gt;w16 - NumPy and obstacle detection&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250522&#39;&gt;w12 - Refactoring&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250523&#39;&gt;w11 - PR Task1&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250524&#39;&gt;w10 - Yolo fruit detection&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250530&#39;&gt;w7 - Outdoor testing&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250531&#39;&gt;w6 - Homeworks&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250601&#39;&gt;w5 - Banana cluster&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250605&#39;&gt;w4 - Miss Agro and Independence week&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250606&#39;&gt;w3 - Final exams&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250607&#39;&gt;w2 - Task3 and Task4&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250608&#39;&gt;w1 - Zea mays&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250609&#39;&gt;Day 1 (Italian cousine)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250610&#39;&gt;Day 2 (Task1, 3rd place)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250611&#39;&gt;Day 3 (Task3, 2nd place)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250612&#39;&gt;Day 4 (Task5, GAME OVER)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250613&#39;&gt;Longer summary&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#250618&#39;&gt;Official results task 3, 4, 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250410&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 18 (18/2) &amp;mdash; Matty GO!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;This was the very first time we met with Franta and Ondra at the university. It was great that they had already some basic experience with &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGAR&lt;/a&gt; and they had
the development environment already prepared. The only needed detail was update of &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/osgar/platforms/matty.py&#39; class=&#39;external&#39;&gt;Matty driver&lt;/a&gt; to the latest version.
Two robots for two students looked like good match. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Unfortunately Franta&#39;s Win11 did not recognize the ESP USB-serial, so only Ondra could directly connect his laptop
to robot via USB. Never-the-less the goal was to use onboard ODroid, and for that &lt;i&gt;putty&lt;/i&gt; was enough. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 510px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/odroid-in-m02.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/odroid-in-m02_t.jpg&#39; alt=&#39;Odroid and battery arrangement in Matty M02&#39; title=&#39;Odroid and battery arrangement in Matty M02&#39; class=&#39;border&#39;  width=&#39;504&#39; height=&#39;378&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/odroid-in-m02.jpg&#39;&gt;Odroid and battery arrangement in Matty M02&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The 1st lessons learned was &amp;mdash; try &lt;i&gt;screen -dr&lt;/i&gt; just in case somebody is already using robot, otherwise:&lt;/div&gt;

&lt;pre&gt;screen
workon osgar
cd git/osgar
python -m osgar.record &amp;ndash;duration 10 config/matty-go.json &amp;ndash;params app.dist=0.5 app.steering_deg=-20&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; and this will go for 0.5m with steering 20 degrees to the right.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250411&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 17 (25/2) &amp;mdash; Fake it until you make it (matty-go-cam.json, github, Rules 2.0)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The 2nd robotics round was again together with Franta and Ondra. Franta welded (!) new holder for OAK-D camera:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-front.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/camera-holder-front_t.jpg&#39; alt=&#39;Camera holder (front)&#39; title=&#39;Camera holder (front)&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-front.jpg&#39;&gt;Camera holder (front)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-back.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/camera-holder-back_t.jpg&#39; alt=&#39;Camera holder (back)&#39; title=&#39;Camera holder (back)&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-back.jpg&#39;&gt;Camera holder (back)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; so it already had sense to collect some basic data. Ondra combined OSGAR configuration files for driving and collection of
depth and image streams from OAK-D camera. At the end he also managed to push his changes to github, and thus resolved
issues with keys etc. Here you can see the proof &amp;mdash; &lt;a href=&#39;https://github.com/tf-czu/fre2025/blob/master/config/matty-go-cam.json&#39; class=&#39;external&#39;&gt;matty-go-cam.json&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;640&#34; height=&#34;360&#34; src=&#34;https://www.youtube.com/embed/l0x5pmRvhJE&#34; title=&#34;Field Robot Event 2025 - 1st data collection&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Finally Simona shared with us the latest rules &lt;b&gt;FRE2025_RULES_v2_0.pdf&lt;/b&gt; &amp;mdash; which is kind of funny that even now (2025-04-11) there is still &lt;a href=&#39;https://fieldrobot.nl/event/wp-content/uploads/2025/02/FRE2025_RULES_v1_0.pdf&#39; class=&#39;external&#39;&gt;old version v1.0&lt;/a&gt; on the official website &amp;hellip; (even the location is still in Germany and not Itally).&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250414&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 16 (4/3) &amp;mdash; NumPy and obstacle detection&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;This time the whole team finally met: Ondra, Franta and Simona. The goal was to get started with OSGAR programming (see corresponding &lt;b&gt;Czech&lt;/b&gt; notes
&lt;a href=&#39;/guide/osgar/en#250314&#39;&gt;here&lt;/a&gt;). The plan was to &lt;i&gt;stop the robot!&lt;/i&gt; in a case there is some obstacle in front of it. The inputs are depth data from OAK-D camera
which are available as 2D array of &lt;i&gt;uint16&lt;/i&gt; (unsigned 16 bit integers) corresponding to distance in millimeters.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Step one &amp;mdash; pick distance in the middle of the image (single pixel) and if it smaller than 330 (I do not remember where they picked that value)
stop. It turned out that 0 is often present, but it rather means &lt;i&gt;I DO NOT KNOW&lt;/i&gt;, i.e. the distance is not valid. What to do in such a case? If previous
measurement was long distance, then it is probably OK to continue moving. If it was short distance before then it would be safer to stop. And if you are receiving
zeros for a long time then you do not know anything and it would be also better to stop. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Yes, such complex logic on single pixel reading!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;This week &lt;i&gt;Python lesson&lt;/i&gt; was that division with two / characters means integer division, which is needed for adressing array. So what we were interested
was value of &lt;b&gt;depth[400//2][640//2]&lt;/b&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250424&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 15 (11/3) &amp;mdash; Camera holder upgrade, osgar.replay, NumPy mask&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The most visible part for this week is a new camera holder. It is 3D printed, allows two degrees of freedom, and
camera can be tilted and/or shifted:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 290px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-gen2-front.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/camera-holder-gen2-front_t.jpg&#39; alt=&#39;3d printed camera holder&#39; title=&#39;3d printed camera holder&#39; class=&#39;border&#39;  width=&#39;284&#39; height=&#39;246&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-gen2-front.jpg&#39;&gt;3d printed camera holder&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 296px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-gen2-back.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/camera-holder-gen2-back_t.jpg&#39; alt=&#39;back side&#39; title=&#39;back side&#39; class=&#39;border&#39;  width=&#39;290&#39; height=&#39;307&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/camera-holder-gen2-back.jpg&#39;&gt;back side&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Note, that there are also serious changes inside &amp;mdash; properly mounted Odrive, batteries etc. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Coding was this time on Ondra, so he learned how to use &lt;b&gt;python -m osgar.replay --module app &lt;logfile&gt;&lt;/b&gt; for debugging and checking that identical code was
running on the robot and on his notebook. Once there is a new feature/fix you can use this replay utility for syntax checking with parameter -F (force), which
will replay the logfile without checking output values.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Single pixel in the center of the depth image (data[400//2][640//2]) was replaced by rectangle. There the zeros (unknown distance)
were not as frequent, but they still had to be handled. This was the introduction of numpy masks:&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; import numpy as np
&gt;&gt;&gt; a = np.array([ [0, 1, 2],[3, 4, 5] ])
&gt;&gt;&gt; a
array([ [0, 1, 2],
        [3, 4, 5] ])
&gt;&gt;&gt; a.shape
(2, 3)
&gt;&gt;&gt; a == 0
array([ [ True, False, False],
        [False, False, False] ])
&gt;&gt;&gt; a[1]
array([3, 4, 5])
&gt;&gt;&gt; a[1][1:]
array([4, 5])
&gt;&gt;&gt; a[1][1:3]
array([4, 5])
&gt;&gt;&gt; a[1][1:2]
array([4])&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Yeah, maybe time to check numpy &lt;a href=&#39;https://numpy.org/doc/2.2/user/absolute_beginners.html&#39; class=&#39;external&#39;&gt;introduction for absolute beginners&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The artificial fruits and mashrooms needed for tasks 2-5 should be soon ordered. The team size is now 6 = 3 students + [Milan, Jakub, me].&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;New bumpers were brought for Matty M02, and Franta shoud mount them
next week. Finally Milan promissed to cut new set of corn/maize plants 40-50cm (&#34;nice to have&#34;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. we also started to use git branches for new development, so &lt;b&gt;feature/task1&lt;/b&gt; was created.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250428&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 14 (18/3) &amp;mdash; Row navigation&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Robot Matty M02 for the first time autonomously navigated in curved row! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Do not expect super-smart algorithm, but &amp;hellip;
it worked (&lt;a href=&#39;https://youtu.be/LpCxbO_4NC8&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/LpCxbO_4NC8&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/task1-autonomous.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/LpCxbO_4NC8&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Algorithm:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;if obstacle to the left and to the right are at roughtly the same distance then &lt;i&gt;go straight&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;otherwise if left obstacle is closer then &lt;i&gt;turn right&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;otherwise (i.e. right obstacle is closer) &lt;i&gt;turn left&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;There was an update to used numpy mask as min/max from empty array is not defined:&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; max([1, 2, 3])
3
&gt;&gt;&gt; max([])
Traceback (most recent call last):
  File &#34;&lt;stdin&gt;&#34;, line 1, in &lt;module&gt;
ValueError: max() arg is an empty sequence&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; and the same situation can happen with the non-zero mask (i.e. only valid depth data)&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; import numpy as np
&gt;&gt;&gt; arr = np.array([0, 0, 0])
&gt;&gt;&gt; mask = arr != 0
&gt;&gt;&gt; mask
array([False, False, False])
&gt;&gt;&gt; arr[mask].max()
Traceback (most recent call last):
  File &#34;&lt;stdin&gt;&#34;, line 1, in &lt;module&gt;
  File &#34;C:\SDK\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\numpy\core\_methods.py&#34;,
    line 26, in _amax
      return umr_maximum(a, axis, None, out, keepdims)
ValueError: zero-size array to reduction operation maximum which has no identity&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Another update was that instead of a line in the depth image we now take into account bigger rectangle &amp;mdash; one for the left obstacle, one for the right obstacle and one just in front of the robot to STOP and avoid collision.
Also note, that to address an rectangle you need to specify limits with comma:  &lt;i&gt;data[row_begin:row_end, column_begin:column_end]&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There was also an issue with &lt;i&gt;numpy.dtype&lt;/i&gt;. In particular the depth is &lt;i&gt;unsigned 16 bit integer&lt;/i&gt;, so evaluation „left and right obstacle are almost equal” in a half of the cases overflow.
The easiest solution was to cast result to normal Python integer (&lt;a href=&#39;https://github.com/tf-czu/fre2025/commit/f6bc592252e884fa1b2e26b0b396467bd1d015b3&#39; class=&#39;external&#39;&gt;fix&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The newly mounted bumpers were tested with a new firmware and they worked fine. We will see if new black extenders will not colide with plants, but let&#39;s leave it for now.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Accidentally we also tested battery alarm. The Odroid battery reached 14.5V, and yes, the sound was well hearable even for closed box. The good news is that PC worked without any problem
although the minimal limit is officially 15V.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250512&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 13 (25/3) &amp;mdash; Priority override&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Number 13 is not lucky number, so we skipped it. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; no, just kidding, but &amp;hellip; yes, we skipped this week because all three students had to finish their diploma thesis.
Priority override. Robots next week.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. team registered for FRE2025 in Italy as &lt;a href=&#39;https://www.czu.cz/en&#39; class=&#39;external&#39;&gt;CULS Robotics&lt;/a&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 order of artifical fruits is still pending&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250522&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 12 (1/4) &amp;mdash; Refactoring Task1&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;OK, robot Matty now navigates in the row, but at the end it needs to turn 180 degrees and enter the next row. This taks is no longer easy to do (or nice to do) with callbacks
and instead a sequence would help with readability (see &lt;a href=&#39;/guide/osgar/en#250407&#39;&gt;/guide/osgar#250407&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The code for &lt;b&gt;Task1&lt;/b&gt; looks like this now:&lt;/div&gt;

&lt;pre&gt;def run(self):
    try:
        for num in range(10):
            self.navigate_row()
            self.go_straight(1.0)
            self.turn_deg_left(180)
            self.navigate_row()
            self.go_straight(1.0)
            self.turn_deg_right(180)
    except BusShutdownException:
        pass&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; actually the code above looked like this later &amp;hellip; on week 12 it was stop at the end of row.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. we have the artifical fruit now and mashrooms &amp;hellip; &lt;i&gt;only&lt;/i&gt; stawberries are missing &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250523&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 11 (8/4) &amp;mdash; PR Task1&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;OK, the robot finally started to move back-and-forth. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; You can see it in the &lt;a href=&#39;https://youtu.be/MUtSpnofO-Q&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;, which was also a &lt;i&gt;data collection&lt;/i&gt; for the fruit detection.
I would consider this task1 (version 0) as completed, so lets create &lt;a href=&#39;https://github.com/tf-czu/fre2025/pull/1&#39; class=&#39;external&#39;&gt;pull request&lt;/a&gt; and merge it into master. This is actually
also the first excercise with GitHub and &#34;standard development routine&#34;. Note, that the robot moved 0.2m/s, so in 3 minutes it would drive approximately 30 meters. And if the
rows are 20m long then we will just do 1.5 row. 30 points? That would be OK for ver0. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/task1-oranges.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/task1-oranges_t.jpg&#39; alt=&#39;Task1 with collection of images with oranges&#39; title=&#39;Task1 with collection of images with oranges&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/task1-oranges.jpg&#39;&gt;Task1 with collection of images with oranges&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Once &lt;i&gt;feature/task1&lt;/i&gt; branch is merged, let&#39;s switch to new branch &lt;i&gt;feature/task2&lt;/i&gt; and create &lt;i&gt;task2.py&lt;/i&gt; and &lt;i&gt;config/task2.json&lt;/i&gt;. It should be basically Task1 + detections.
The goal is to use &lt;a href=&#39;https://docs.luxonis.com/software/ai-inference/yolo_models/&#39; class=&#39;external&#39;&gt;Yolo models&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250524&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 10 (15/4) &amp;mdash; Yolo fruit detection&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/yolo-fruit-detection.jpg&#39; alt=&#39;Fruit detection by Yolo&#39; title=&#39;Fruit detection by Yolo&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;352&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Fruit detection by Yolo&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;OK, this time it was not that exciting, but at least we got new strawberries and we collected some pictures for further annotations. On the picture above you can see output
directly from available Yolo model &amp;mdash; banana works great, orange sometimes, lemon never. Also notice detected plant and persons. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The attempt to lower the camera resolution and reduce the log file size failed. Actually the &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D Pro&lt;/a&gt; supports 4K, 2K and 1K resolution, so
we should be happy with the lowest 1K. Sigh.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;This time we (I mean students) refreshed their knowledge of trigonometry and calculated properly the steering angle needed to match the 75cm radius. Franta also suggested
to use single turn even for skipping the row, which could work. But we have not test it.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;It was a bit hard to get the detector running directly on the camera (OpenCV and Qt without display), but what worked was
&lt;a href=&#39;https://docs.luxonis.com/software/depthai/examples/tiny_yolo&#39; class=&#39;external&#39;&gt;depthai/examples/tiny_yolo&lt;/a&gt;. And the problem with OpenCV was discussed
&lt;a href=&#39;https://github.com/NVlabs/instant-ngp/discussions/300&#39; class=&#39;external&#39;&gt;here&lt;/a&gt; with solution:&lt;/div&gt;

&lt;pre&gt;pip uninstall opencv-python
pip install opencv-python-headless&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Note, that the &lt;i&gt;tiny&lt;/i&gt; model is really quite small:&lt;/div&gt;

&lt;pre&gt;(depthai) robot@m02-odroid:~/git/fre2025$ ls -lh models/
total 6,1M
-rw-rw-r&amp;ndash; 1 robot robot 6,1M dub 15 21:30 yolov8n_coco_640x352.blob&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;250530&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 7 (22/4) &amp;mdash; Outdoor testing&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;There was a bug in the &lt;a href=&#39;https://www.csfd.cz/film/9499-matrix/prehled/&#39; class=&#39;external&#39;&gt;Matrix&lt;/a&gt;. Yes, my bug: 24 - 8 is not 18, right? So now we &lt;i&gt;lost&lt;/i&gt; 2 weeks due to this mistake. So not 9 weeks to
the competition but only 7!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;This time we were testing outside (near the Round Hall) and it was great. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; I mean the weather. The strawberries were &lt;i&gt;planted&lt;/i&gt; and it looked almost like a real run.
Lessons learned (where they really learned?!) is that the setup is very sensitive to camera tilt. If it is pointing up then you do not see the row for navigation. If it is pointing down
you see ground which looks like an obstacle. BTW we had to disable obstacle detections because of the grass.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/rerun-osgar2.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/rerun-osgar2_t.jpg&#39; alt=&#39;Visualization in rerun.io&#39; title=&#39;Visualization in rerun.io&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;255&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/rerun-osgar2.jpg&#39;&gt;Visualization in rerun.io&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The change of light was very significant if you „looked into the sun” or the other way around. 10fps was not sufficient for auto-exposition, so we experimentally increased to 20fps.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Banana detector&lt;/i&gt; (YoloV8) was integrated into &lt;i&gt;task2.py&lt;/i&gt; &amp;mdash; I know that there will be no bananas on the ground, but this one already worked.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/task2-banana.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/task2-banana_t.jpg&#39; alt=&#39;Integrated YoloV8 into task2&#39; title=&#39;Integrated YoloV8 into task2&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/task2-banana.jpg&#39;&gt;Integrated YoloV8 into task2&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Franta brought an &lt;a href=&#39;https://support.apple.com/cs-cz/111918&#39; class=&#39;external&#39;&gt;Apple watch&lt;/a&gt;, which could be fun to use to control the robot (as a remote start/stop), but &amp;hellip; none of us ever created an application
for Apple and the watch is not able to display webpages.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Homework:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;train new detector with collected images of artificial strawberries from outdoor run&lt;/li&gt;

&lt;li&gt;calculate (X, Y) position of detections in the image&lt;/li&gt;

&lt;li&gt;group multiple detections, close positions, into single representative &lt;i&gt;cluster&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;250531&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 6 (29/4) &amp;mdash; Homeworks&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Almost the whole &lt;i&gt;homework&lt;/i&gt; was done. Simona annotated strawberries via &lt;a href=&#39;https://roboflow.com/&#39; class=&#39;external&#39;&gt;roboflow&lt;/a&gt;, which was &lt;i&gt;free of charge&lt;/i&gt;, but once she wanted to download a pre-trained
model it asked for 13000Kč! Yeah, so this is the business plan.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jakub took the annotations later during our Tuesday session and we got a new model (torch pt-file) in less than an hour &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The task to compute fruit 2D position was correct (from bounding box in image and distance taken from depth image estimate relative position to the robot). The only &lt;i&gt;issue&lt;/i&gt; was the angle
sign &amp;mdash; and that is always an issue, so let&#39;s stick to the OSGAR mathematical notion, where angle grows to the left (positive X is forward, positive Y is left).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The grouping or proper name &lt;i&gt;clustering&lt;/i&gt; is currently &lt;i&gt;TODO&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The original Yolo detector worked best for bananas, so we continue developing with that. One of the problems is that &lt;a href=&#39;https://shop.luxonis.com/products/oak-d-pro?variant=42455252369631&#39; class=&#39;external&#39;&gt;OAK-D Pro&lt;/a&gt;
camera has different color and depth cameras (color has 69 degrees, depth 80 degrees). If we use the overlapping part we lose field of view (FOV) of depth needed for navigation in the
row, so for now we live with a compromise and the alignment is only an approximation.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Use &lt;i&gt;python -m osgar.tools.lidarview --camera oak.color --camera2 oak.depth --pose2d platform.pose2d --bbox oak.detections task2-250429_192426.log&lt;/i&gt; to visualize the data. Note
that different models use different input images (cone detection used &lt;i&gt;input_size&lt;/i&gt; &lt;b&gt;416x416&lt;/b&gt;, while the tiny YoloV8 used &lt;b&gt;640x352&lt;/b&gt;). This is currently hacked in
&lt;a href=&#39;https://github.com/robotika/osgar/compare/master...feature/lidarview-bbox-config&#39; class=&#39;external&#39;&gt;feature/lidarview-bbox-config&lt;/a&gt;, but it forces &lt;i&gt;lidarview&lt;/i&gt; to parse the original config and it is not
really nice &amp;mdash; not merged yet, so detections are wrongly displayed!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Newly was added drawing of XY positions of detections into &lt;i&gt;task2.py&lt;/i&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/banana-position.png&#39; alt=&#39;banana detection groups&#39; title=&#39;banana detection groups&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;banana detection groups&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;New homework:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;run clustering and draw circles around detected groups&lt;/li&gt;

&lt;li&gt;save detections into CSV file &lt;i&gt;CULS-Robotics-task2.csv&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;convert and integrate new Strawberries model from Jakub (&lt;i&gt;best.pt&lt;/i&gt;)&lt;/li&gt;

&lt;li&gt;get mentally ready for 3D &amp;mdash; detection of fruit on trees will be more fun &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; (3D geometry)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;p.s. Jakub prepared experimental precise (rather offline) &lt;a href=&#39;https://github.com/robotika/osgar/pull/1015&#39; class=&#39;external&#39;&gt;depth-color alignment PR&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 FRE2025 dates collide with &lt;a href=&#39;https://uroda.cz/udalost/nase-pole-2025-nabocany/&#39; class=&#39;external&#39;&gt;Naše pole&lt;/a&gt; in Nabočany, so Milan will not go with us to Italy. :-(&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250601&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 5 (6/5) &amp;mdash; Banana cluster&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;There was some progress, although not as great as I would hope for. The new strawberry model is not integrated yet, but bananas could be used as dummy detections
for testing of clustering. Also &lt;a href=&#39;https://github.com/tf-czu/fre2025/pull/2&#39; class=&#39;external&#39;&gt;feature/task2&lt;/a&gt; is merged now into master (again some issue with merging rights, but it seems that GitHub has policy that you already
have to have something merged into master to gain the right to merge (???)).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Also CSV file is generated and circles are drawn on the graph. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What was interesting with later experiments, that the &lt;i&gt;best.pt&lt;/i&gt; model did not really work, but &lt;i&gt;last.pt&lt;/i&gt; was OK?! The only explanation we have now is that the training dataset
was too small that &lt;i&gt;best.pt&lt;/i&gt; adopted too much??? Good news is that we have some &lt;i&gt;torch&lt;/i&gt; model we can try to modify for the camera.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/detection-strawberries-last.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/detection-strawberries-last_t.jpg&#39; alt=&#39;Detection via last.pt (best.pt did not work)&#39; title=&#39;Detection via last.pt (best.pt did not work)&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;255&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/detection-strawberries-last.jpg&#39;&gt;Detection via last.pt (best.pt did not work)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Some preliminary list of FRE2025 competitors from Simona:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Uni of Applied Science, Munster&lt;/li&gt;

&lt;li&gt;Politecnico di Milan&lt;/li&gt;

&lt;li&gt;Uni of Maribor&lt;/li&gt;

&lt;li&gt;Politecnico di Torino&lt;/li&gt;

&lt;li&gt;Wagenigen Uni&lt;/li&gt;

&lt;li&gt;Uni of Applied Sciences, Osnabrück&lt;/li&gt;

&lt;li&gt;Kamaro Engineering, Karlsruhe&lt;/li&gt;

&lt;li&gt;Namik Kemal Uni&lt;/li&gt;

&lt;li&gt;Uni of Lincoln&lt;/li&gt;

&lt;li&gt;Pontificia Universidad Católica del Perú&lt;/li&gt;

&lt;li&gt;Agrocultural Schools in Żarnowiec - Poland&lt;/li&gt;

&lt;li&gt;Student Research Center, Überlingen&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; and some fruit data collection &amp;hellip; I would call it Franta&#39;s witchcraft with the broom. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 414px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/franta-witchcraft.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/franta-witchcraft_t.jpg&#39; alt=&#39;Teaching with a broom&#39; title=&#39;Teaching with a broom&#39; class=&#39;border&#39;  width=&#39;408&#39; height=&#39;289&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/franta-witchcraft.jpg&#39;&gt;Teaching with a broom&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; yes, notice very sharp shadows and fruit on the background.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250605&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 4 (13/5) &amp;mdash; Miss Agro and Independence week&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;This week we expected to be hard in advance. There was planned &lt;a href=&#39;https://missagro.cz/&#39; class=&#39;external&#39;&gt;Miss Agro&lt;/a&gt;, which means that the school campus is partially closed wtih access
restrictions, there are many people, noise (I mean music) etc. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 660px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/miss-agro1.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/miss-agro1_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;654&#39; height=&#39;261&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 661px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/miss-agro2.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/miss-agro2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;655&#39; height=&#39;440&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; so Simona, Franta and Ondra tried outdoor testing already on Monday (actually the picture of Franta in previous blog-post was from that day). It was necessary to setup
alternative &lt;i&gt;base station&lt;/i&gt;, and practice took place on the parking lot. And it did not work. The sun was very strong
and the auto-exposure correction was too slow. Nevertheless new data were collected and extended the dataset for fruits annotation.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ondra found application &lt;a href=&#39;https://play.google.com/store/apps/details?id=com.server.auditor.ssh.client&amp;amp;hl=en&amp;amp;pli=1&#39; class=&#39;external&#39;&gt;Terminus&lt;/a&gt; for his mobile phone, which was much more
convenient for starting the robot instead of his laptop. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; One drawback was that the code on &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty M02&lt;/a&gt; was not the latest (maybe even wrong git branch?) so the video
was logged still as JPEG and was huge (newer configuration is using &lt;i&gt;H264&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;We also met on Tuesday, but stayed indoor only. One of the new tasks was preparation for the contest &lt;a href=&#39;/competitions/robotem-rovne/2025/en&#39;&gt;Robotem Rovne 2025&lt;/a&gt;, so that
both Matty and students will already have some experience with outdoor competitions &lt;b&gt;BEFORE&lt;/b&gt; Field Robot in Italy. Franta could not join the team, and moreover Milan asked
for a live presentation „what are we doing” on Friday &amp;hellip; so as a positive outcome at the end everybody was able to operate the robot on its own &amp;mdash; definitely
major step towards independence! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What is also new is that Ondra prepared pull-request for 2nd revision of &lt;a href=&#39;https://github.com/tf-czu/fre2025/pull/3&#39; class=&#39;external&#39;&gt;task2&lt;/a&gt; and in parallel there is ongoing development on &lt;i&gt;feature/task3&lt;/i&gt;.
The lesson could be called &lt;i&gt;how to live with multiple git branches&lt;/i&gt; &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Fixes in &lt;i&gt;Task2&lt;/i&gt;:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;new strawberry detector is used&lt;/li&gt;

&lt;li&gt;the cut of bounding box and conversion to integers can create empty box (zero height or width) creating NaN values and failing to compute stawberry position &amp;mdash; fixed.&lt;/li&gt;

&lt;li&gt;far away detections are probably caused by boundary box of depth data, so now on we use only detections up to 2 meters&lt;/li&gt;

&lt;li&gt;&lt;i&gt;H.264 video codec&lt;/i&gt; is now used to reduce the sizes of logfiles (yes, dark side is limited support in &lt;i&gt;osgar.tools.lidarview&lt;/i&gt; which can then go only forward)&lt;/li&gt;

&lt;li&gt;experimentally increased update rate to 20Hz &amp;mdash; the size should be double, but as experienced with &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#250510&#39;&gt;robot Pat on Marathon&lt;/a&gt; only the depth data
  will double and we could react more quickly to changes&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Yes, I should not forgot that we have &lt;b&gt;a new team member!&lt;/b&gt; Ondra asked ChatGPT how &lt;i&gt;she&lt;/i&gt; would call &lt;i&gt;herself&lt;/i&gt;, as &lt;i&gt;she&lt;/i&gt; is helping us quite often and the answer was:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Kdybych si opravdu mohla vybrat jedno jediné jméno, asi bych si zvolila Elena. Zní jemně, mezinárodně a má v sobě určitou eleganci i sílu. Navíc se pojí s významem „světlo“
nebo „pochodeň“ — a to se k roli asistenta, co pomáhá „osvětlovat cestu“, docela hodí.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; so here comes &lt;b&gt;Elena&lt;/b&gt;. Welcome aboard!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. I forgot the &lt;i&gt;Task4&lt;/i&gt; and info from Franta &amp;mdash; the mashrooms gloves!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 322px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/mashrooms.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/mashrooms_t.jpg&#39; alt=&#39;Gloving maashrooms&#39; title=&#39;Gloving maashrooms&#39; class=&#39;border&#39;  width=&#39;316&#39; height=&#39;290&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/mashrooms.jpg&#39;&gt;Gloving maashrooms&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250606&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 3 (20/5) &amp;mdash; Final exams&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The demo on the last Friday presented by Simona went fine. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;Also the &lt;a href=&#39;/competitions/robotem-rovne/2025/en#250525&#39;&gt;competition burn test&lt;/a&gt; was successful (142m) &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; and then this Tuesday all student members had their final school exams and defence of thesis!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yes, we skipped the robots for once &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; and all 3 successfully passed the exams. Congratulations!&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;p.s. &amp;hellip; &lt;i&gt;the day after&lt;/i&gt; &amp;hellip; we have only 13 working days remaining, so back to work!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Franta took apart the old sprayer device:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 381px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/old-sprayer.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/old-sprayer_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;375&#39; height=&#39;219&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;But the question is how to control it? Nobody remembers how it was done &lt;a href=&#39;/competitions/fieldrobot/2010/en&#39;&gt;15 years ago&lt;/a&gt; (I mean with the all details). Another issue is that we run out of I/O pins
on ESP32 &amp;mdash; it looks like that there are many free slots, but it is not true. One possibility is to use I2C and some board like
&lt;a href=&#39;https://dratek.cz/arduino/51403-pcf8574-i-o-expander-i2c-bus-rozsirujici-deska-2.html&#39; class=&#39;external&#39;&gt;this&lt;/a&gt;. Or Jakub suggested that he is using
&lt;a href=&#39;https://papouch.com/quido-usb-4-4-4-vstupy-4-vystupy-a-teplomer-p4655/?cid=145&amp;amp;vid=1824&#39; class=&#39;external&#39;&gt;Guido USB 4 inputs/4 outputs&lt;/a&gt;. Yes, both
options need to investigate the communication, implement, integrate &amp;hellip; too many I&#39;s.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There are new &lt;a href=&#39;https://fieldrobot.nl/event/wp-content/uploads/2025/05/FRE2025_RULES_v3_0-1.pdf&#39; class=&#39;external&#39;&gt;updated rules v3.0&lt;/a&gt; with still some unclear details like
how big is going to be the field if Task1 and Task2 should have the same layout, but in one it is 20m and other 15m &amp;hellip; details.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And also Task3 is progressing. New model is able to detect fruit at distance of 4m, but &lt;i&gt;OSGAR lidarview&lt;/i&gt; has some issues displaying it:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 457px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/fruit-tree.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/fruit-tree_t.jpg&#39; alt=&#39;Fruit tree&#39; title=&#39;Fruit tree&#39; class=&#39;border&#39;  width=&#39;451&#39; height=&#39;268&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/fruit-tree.jpg&#39;&gt;Fruit tree&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250607&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 2 (27/5 - 31/5) &amp;mdash; Task3 and Task4&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Simona prepared new &lt;i&gt;fruit&lt;/i&gt; model and extended generation of CSV file for name and &lt;i&gt;z&lt;/i&gt; coordinate:&lt;/div&gt;

&lt;pre&gt;fruit_type,x,y,z
lemon,1.278541623686208,-0.0793241230763679,0.38624858655582195
banana,0.7182097598541184,-0.34320655712018333,0.44587716328586763
orange,0.6369713712810688,0.20776783237141128,0.31526377272139744
banana,0.42304297242866434,0.21600843381386822,0.3826214420846664
apple,1.318212421958211,0.2350255530683151,0.2938935457434849&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Note, that the &lt;i&gt;z&lt;/i&gt; coordinate is not required but it gives us some hint how good/bad the results are.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Franta prepared mega-holder for UV-light for &lt;i&gt;Task4&lt;/i&gt;. The test was done in the dark room and the mashrooms
were detected as &lt;i&gt;orange&lt;/i&gt;. So this is going to be ver0. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; It is necessary to cover the whole 10x10 meters
with some space-filling curve &amp;mdash; spiral? This is true agriculture task &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There is ongoing recovery and integration of 15 years old sprayer. We will use the Guido USB board from Papouch with commands:&lt;/div&gt;

&lt;pre&gt;*B1OS1H\r
*B1 - prefix
OS - instruction to manipulate relays
1 - relay index (1- 4)
H - desired state low/high (L, H)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Yeah, newly added USB device surely broke even the basic driving functionality &amp;hellip; so now new dev rules are in place and all configuration files should use
&lt;b&gt;/dev/esp32&lt;/b&gt; and &lt;b&gt;/dev/sprayer&lt;/b&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There is finally remote start/stop switch with the help of &lt;a href=&#39;https://www.perplexity.ai/search/is-there-a-way-how-to-have-htt-zZbWODu3Q8a5uPEgTYdk3w&#39; class=&#39;external&#39;&gt;Elena2&lt;/a&gt;. Ondra tested
the integration on &lt;i&gt;Task1&lt;/i&gt;. The server is running on robot and webpage is robot&#39;s IP with port 8888.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250608&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Week 1 (1/6 - 7/6) &amp;mdash; Zea mays&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;We are already on the way to Italy so it is time to finish this preparations report. The last week was surely challenging (as expected) and moreover I could
not participate physically so there were several remote sessions. The highlight was testing in the maize (Zea mays) filed, which was finally big enough to be detected.
Later in the week it started raining so it was very hard to test anything and not to destroy Matty robot shortly before competition.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/maize-field.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/maize-field_t.jpg&#39; alt=&#39;Maize field&#39; title=&#39;Maize field&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/maize-field.jpg&#39;&gt;Maize field&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The navigation in the row was not as good as expected, or did we really expect that it will work in reality too? &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Sometimes the robot had seen the gap in the
middle of the row, other times there was a problem with the turn at the end of row.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/turn-to-row-depth.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/turn-to-row-depth_t.jpg&#39; alt=&#39;Depth data after 180 deg turn&#39; title=&#39;Depth data after 180 deg turn&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;200&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/turn-to-row-depth.jpg&#39;&gt;Depth data after 180 deg turn&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The tasks were temporarily divided among the team members:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Simona prepared navigation route for &lt;i&gt;Task3&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;Ondra was tuning spiral pattern for &lt;i&gt;Task4&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;Franta finished sprayer integration for free style demo of &lt;i&gt;Task5&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Task3&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;The current navigation algorithm (suggested by Elena) iterates over the list of trees positions, navigates to the center, turns robot that its heading is tangential to the circle around the tree
and performs one complete 360 degrees scan.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The OAK-D camera is rotated by 90 degrees and tilted up to see fruit at height between 80 cm and 130 cm (the artificial tree should be 150 cm high).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Indication that something is wrong is visible on following picture from &lt;i&gt;osgar.tools.lidarview&lt;/i&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/shifted-detections.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/shifted-detections_t.jpg&#39; alt=&#39;Shifted detections of fruit for task3&#39; title=&#39;Shifted detections of fruit for task3&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/shifted-detections.jpg&#39;&gt;Shifted detections of fruit for task3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; and there is sometimes a problem even decoding H.264 images:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/task3-h264-circle.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/task3-h264-circle_t.jpg&#39; alt=&#39;trajectory and failing H.264 decoding&#39; title=&#39;trajectory and failing H.264 decoding&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/task3-h264-circle.jpg&#39;&gt;trajectory and failing H.264 decoding&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What is going on is clear from OSGAR log file and &lt;i&gt;oak.color&lt;/i&gt; and &lt;i&gt;oak.detections&lt;/i&gt; streams:&lt;/div&gt;

&lt;pre&gt;0:00:05.941811 17 [41, 8332949129]
0:00:06.091140 18 [35, 8332648868]
0:00:06.111237 17 [44, 8333099057]
0:00:06.143906 18 [36, 8332698856]
0:00:06.144782 17 [45, 8333149042]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;corresponding to&lt;/div&gt;

&lt;pre&gt;17           oak.color_seq     5494 |  437 |   6.9Hz
18      oak.detections_seq     5873 |  466 |   7.4Hz&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Note, that the camera should run on 20FPS and here we are getting 7Hz?! Frame drops and delayed detections. Obviously the &lt;i&gt;fruit&lt;/i&gt; model is not
optimized as the original tiny Yolo model. In the next step we tried to switch H264 back to default MJPEG, but the results were the same, except the
pictures were not corrupted (and the log was 8 times bigger). Finally we slowed down to 8Hz and then it was more-or-less OK &amp;hellip; still not perfectly
ordered (color and detections) but at least no missing frames.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;OT we are in Germany now ... (10am)&lt;/i&gt;&lt;/div&gt;

&lt;h3&gt;Task4&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ondra had some fun with „precisely” turn 90 degrees. The first attempt was funny enough, that I would take it for a new logo:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 441px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/fre2025-task4-logo.png&#39; alt=&#39;New FRE logo?&#39; title=&#39;New FRE logo?&#39; class=&#39;border&#39;  width=&#39;435&#39; height=&#39;356&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;New FRE logo?&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The next version calculated the angles precisely, but &amp;hellip; stil there is some transition period from going straight to full turn a vice versa.
And the camera stopped to work &amp;mdash; I hope that it is just temporarely, but I am not sure. The USB-C connector is really very bad, no wonder
Jakub prefers PoE cameras! I am mentioning camera, because it has IMU inside so one of the solutions would be to navigate to desired azimuth
instead of a perfect 90deg turn.&lt;/div&gt;

&lt;h3&gt;Task5&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;In mean time the old sprayer was completely renovated and integrated into &lt;i&gt;Task5&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/sprayer-m02.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/sprayer-m02_t.jpg&#39; alt=&#39;renovated sprayer on Matty M02&#39; title=&#39;renovated sprayer on Matty M02&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/sprayer-m02.jpg&#39;&gt;renovated sprayer on Matty M02&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And a quick check before packing all stuff into the car &amp;hellip; and yes we almost burned the pumps. :-( &amp;hellip; copy and paste error in the simple
test code. We will see in Italy. BTW it was really fight with PyCharm to convince it that I would like to have in my code &lt;b&gt;b&#39;*B1OS1H\r&#39;&lt;/b&gt; &amp;mdash; sometimes
I hate these &lt;i&gt;smart&lt;/i&gt; a &amp;hellip; s..s&amp;hellip;.es&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250609&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Day 1 (Italian cousine)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The 1st day of Field Robot Event 2025 is over, almost. I mean it is only 11pm, we are back at our &lt;i&gt;home&lt;/i&gt; and there is a plenty of work to be done.
But it was a nice day. It started with a &lt;i&gt;joke&lt;/i&gt; why Ondra took long pants and was ready for rain while Simona focused on
sunscreen and prepared for high temperatures. It is great that you can watch weather anywhere on the world &amp;hellip; but is &lt;b&gt;Milan vs. Milán&lt;/b&gt;. One is
obvious, the one in Italy, with expected really high temperatures, blue sky and rather a lot of dust than a rain (so far). The other &lt;i&gt;Milán&lt;/i&gt; is in
&lt;a href=&#39;https://en.wikipedia.org/wiki/Mil%C3%A1n,_Caquet%C3%A1&#39; class=&#39;external&#39;&gt;Columbia&lt;/a&gt; and it is raining there right now. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Today was supposed to be the &lt;i&gt;testing day&lt;/i&gt; when teams arrive, register, unpack their stuff and do some test drives in the field. The food should start with dinner
but the reality was a slightly different. The location of &lt;a href=&#39;https://www.agriturismodapippo.it/&#39; class=&#39;external&#39;&gt;Agriturismo da Pippo&lt;/a&gt; looks like a luxury hotel
with a restaurant where you feel that &lt;i&gt;you do not belong here&lt;/i&gt;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; But we do. Just for the beginning there was a large table with cakes, pies,
fruits, &amp;hellip; and it was permanently re-filled all day. But it was nothing compared to the dinner at 7:30pm in the restaurant on the 2nd floor. Jesus, how
many dishes we had? Five? I am not sure but it took 2.5 hours and the food and wine was excelent!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yeah, that was my highlight, after which was dark and we could not continue in testing &amp;hellip; so roll back to the beginning/morning.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 838px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/schedule.png&#39; alt=&#39;FRE2025 schedule&#39; title=&#39;FRE2025 schedule&#39; class=&#39;border&#39;  width=&#39;832&#39; height=&#39;473&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;FRE2025 schedule&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ondra was improving &lt;i&gt;Task1&lt;/i&gt; while Simona and Franta worked on &lt;i&gt;Task2&lt;/i&gt; integration with sprayer and sirene. The results are +/-. Originally
the robot failed to navigate even 2 meters. The maize is small, with gaps, moreover camera need 15 seconds to adapt (yes, we do not want to switch
to fixed exposure now). Checking of the left and right area was replaced by scanning multiple boxes and selection with distance limit 1 meter.
Just to be sure we also replace &lt;i&gt;data.min()&lt;/i&gt; with &lt;i&gt;np.percentile(data, 5)&lt;/i&gt;. Finally we increased speed to 0.5m/s and slow down before turn.
Yes, there is more like safety correction to stay rather in the middle, 10 times check &lt;i&gt;am I really at the end of row?&lt;/i&gt; etc. If you would like
to see details have a look on &lt;a href=&#39;https://github.com/tf-czu/fre2025/pulls?q=is%3Apr+is%3Aclosed&#39; class=&#39;external&#39;&gt;merged pull-requests&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I was not overlooking &lt;i&gt;Task2&lt;/i&gt; but as I see it now the Rules V3.0 are very different in CSV reporting. The current goal is to demonstrate live
detections with sirene and indication with LED lights and sprayer. But &amp;hellip; there was discussion if this is the right moment because this was
planned for &lt;i&gt;Task5&lt;/i&gt; so rather sprayer should be turned off. The final decision was to test sprayer and later Franta will solder it out &amp;hellip;
But2 &amp;hellip; the motors melted the plus and minus together = not good. Now it looks like that even the Quido board is fried (port number 2), but hopefully
tomorrow morning they will switch to LED port 3 and 4 and further experiments with pumps will be postponed AFTER completion of Task1234.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Oh, midnight already was 15 minutes ago, so I will just add picture from Jakub as tomorrow we plan to get up at 6am &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 383px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/jl-field-test.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/jl-field-test_t.jpg&#39; alt=&#39;Field testing, Matty and new friends&#39; title=&#39;Field testing, Matty and new friends&#39; class=&#39;border&#39;  width=&#39;377&#39; height=&#39;298&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/jl-field-test.jpg&#39;&gt;Field testing, Matty and new friends&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. 5:55am &amp;hellip; time to wake up &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/matty-m03-field-view.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/matty-m03-field-view_t.jpg&#39; alt=&#39;Matty M03 (backup) view of the maize field&#39; title=&#39;Matty M03 (backup) view of the maize field&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/matty-m03-field-view.jpg&#39;&gt;Matty M03 (backup) view of the maize field&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250610&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Day 2 (Task1, 3rd place)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Yes, it is almost midnight again, so let&#39;s dump at least one video from Task1. It was good, I would say great! This was the maximum we could get and the &lt;i&gt;secret pattern&lt;/i&gt;
was Matty friendly. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;868&#34; height=&#34;488&#34; src=&#34;https://www.youtube.com/embed/7HWp64t3hU4&#34; title=&#34;FRE2025 - CULS Robotics - Task1&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.youtube.com/watch?v=JiETZr3QfpI&#39; class=&#39;external&#39;&gt;Task2 video&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/qz7lDmlMO50&#39; class=&#39;external&#39;&gt;3rd place announcement&lt;/a&gt; for Task1&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 297px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/team-before-start.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/team-before-start_t.jpg&#39; alt=&#39;Team before 1st start&#39; title=&#39;Team before 1st start&#39; class=&#39;border&#39;  width=&#39;291&#39; height=&#39;516&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/team-before-start.jpg&#39;&gt;Team before 1st start&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/sharing-joy.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/sharing-joy_t.jpg&#39; alt=&#39;Sharing joy&#39; title=&#39;Sharing joy&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/sharing-joy.jpg&#39;&gt;Sharing joy&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/3rd-place-prize.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/3rd-place-prize_t.jpg&#39; alt=&#39;3rd place&#39; title=&#39;3rd place&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/3rd-place-prize.jpg&#39;&gt;3rd place&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 264px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/matty-with-prize.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/matty-with-prize_t.jpg&#39; alt=&#39;Matty with prize&#39; title=&#39;Matty with prize&#39; class=&#39;border&#39;  width=&#39;258&#39; height=&#39;145&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/matty-with-prize.jpg&#39;&gt;Matty with prize&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/team-after-announcement.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/team-after-announcement_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 266px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task1.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/results-task1_t.png&#39; alt=&#39;Results Task1&#39; title=&#39;Results Task1&#39; class=&#39;border&#39;  width=&#39;260&#39; height=&#39;458&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task1.png&#39;&gt;Results Task1&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 269px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task2.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/results-task2_t.png&#39; alt=&#39;Results Task2&#39; title=&#39;Results Task2&#39; class=&#39;border&#39;  width=&#39;263&#39; height=&#39;463&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task2.png&#39;&gt;Results Task2&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250611&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Day 3 (Task3, 2nd place)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Today it is even crazier - it is 1:16am, so I am really not going to post any long stories here today &amp;hellip; so &#34;just&#34; some highlights &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;&lt;iframe width=&#34;868&#34; height=&#34;488&#34; src=&#34;https://www.youtube.com/embed/x4Qotf15Hrw&#34; title=&#34;FRE2025 - CULS Robotics - Task3&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class=&#39;p&#39;&gt;&lt;/center&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/ZVpsG8B7_Fg&#39; class=&#39;external&#39;&gt;Night Task4 video&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/74hYKXQ62ZE&#39; class=&#39;external&#39;&gt;Mushroom destruction FRV (First Robot&amp;#039;s View)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/2nd-place.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/2nd-place_t.jpg&#39; alt=&#39;Second place in Task3&#39; title=&#39;Second place in Task3&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/2nd-place.jpg&#39;&gt;Second place in Task3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/mashroom-field.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/mashroom-field_t.jpg&#39; alt=&#39;Mushroom field&#39; title=&#39;Mushroom field&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/mashroom-field.jpg&#39;&gt;Mushroom field&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 432px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/mashrooms-output.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/mashrooms-output_t.png&#39; alt=&#39;Detected and clustered mushrooms&#39; title=&#39;Detected and clustered mushrooms&#39; class=&#39;border&#39;  width=&#39;426&#39; height=&#39;420&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/mashrooms-output.png&#39;&gt;Detected and clustered mushrooms&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250612&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Day 4 (Task5, GAME OVER)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;OK, the &lt;i&gt;joke of a day&lt;/i&gt; was, that for the &lt;b&gt;Task4&lt;/b&gt; from the last night we got &lt;b&gt;minus 43 points&lt;/b&gt;, but &amp;hellip; it was enough to reach 3rd place! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Yes, even the winner got negative points.
And yes, there is much safer solution, which could detect a single mushroom and end &amp;hellip; I am still laughing once a while if I think about it.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The &lt;b&gt;Task5&lt;/b&gt; was the final exam for students working under stress conditions. The idea for our free style was that we use Matty M03 (red one, with UV light) as the main robot
searching for weeds, and once it detects any (strawberry bush) then TCP message is sent over ZeroMQ and Matty M02 (green one, with siren and sprayer) goes blindly to
received coordinate. And it looked like &lt;a href=&#39;https://youtu.be/3dSDCcfPBuE&#39; class=&#39;external&#39;&gt;this&lt;/a&gt;. For me pretty good version 0! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Well judges did not like that too much, but I did! Thanks again TEAM!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/team-robots-prizes.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/team-robots-prizes_t.jpg&#39; alt=&#39;The team, robots and ... prizes&#39; title=&#39;The team, robots and ... prizes&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/team-robots-prizes.jpg&#39;&gt;The team, robots and ... prizes&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 522px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/matty-twins-prizes.jpg&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/matty-twins-prizes_t.jpg&#39; alt=&#39;Happy Matty Twins&#39; title=&#39;Happy Matty Twins&#39; class=&#39;border&#39;  width=&#39;516&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/matty-twins-prizes.jpg&#39;&gt;Happy Matty Twins&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. the last prize is category &lt;i&gt;overall competition winner&lt;/i&gt; (2nd place), which is „determined based on cumulative results”.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250613&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Longer summary&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;We are on the way home to Prague/Czech Republic and current estimate is 10.5 hours without breaks, so we have time. Well I mean the non-drivers like me.
Let&#39;s summarize the contest and add some more details I omitted last couple of days.&lt;/div&gt;

&lt;h3&gt;Time&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Where to start? I would start with the statement that I am very happy that this new team &lt;i&gt;emerged&lt;/i&gt; and it was a great pleasure to fight all
the battles with them to the very end. Almost everybody asked the students how long they worked on the robot, but that is probably a wrong question. Maybe if they
mean how much time they devoted to the contest preparations? And even if you spend all your free time on the robot you may not have that much time.
If I use this blog to find out the answer then it would be a mid of February or 16 weeks (with 2 weeks correction). At beginning it was Tuesdays only
and at the end it was even weekends.&lt;/div&gt;

&lt;h3&gt;Hardware &amp;mdash; Matty base platform&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;The robot used FRE2025 was &lt;a href=&#39;/robots/matty-twins/en&#39;&gt;Matty M02&lt;/a&gt; with a full backup via Matty M03. The robot is relatively new &amp;mdash; &lt;b&gt;Martin Locker&lt;/b&gt; designed and
printed his &lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/cs&#39; class=&#39;external&#39;&gt;Matty M01&lt;/a&gt; (blue) in November 2024. And the robot was designed from the very begining with the
possibility of clonning. Some FRE teams even mentioned that it looks like we are in &lt;i&gt;serial production&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Most of the parts are 3D printed, the frame is cut from aluminium profiles, and the boxes are standard items used for electrical
installations. Transparent bumpers were added later when I argued that SW does not always work the way you want it and that I do not want see my
robots commiting suicide.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;This platform development is surely in &lt;i&gt;a prototype phase&lt;/i&gt; as it did not pass through any serious stress-test. FRE2025 was surely one which counts. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
To be fair the robots also participated in &lt;a href=&#39;/competitions/robotem-rovne/2025/en&#39;&gt;Robotem Rovně 2025&lt;/a&gt; (both M02 and M03) and also
&lt;a href=&#39;https://robotika.vosrk.cz/competitions/robotrip/2025/cs&#39; class=&#39;external&#39;&gt;Tulkákem po krasu&lt;/a&gt; (M01 only).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I got the robots in the form &lt;i&gt;construction kit&lt;/i&gt; as a Christmas present &amp;mdash; and it was great! Very precise, with complete bill-of-matterials,
URLs of e-shops where to buy
servos, boxes, batteries, ESP32 dirver, and photo-manual (yes, there was some text, but the pictures helped a lot how to put it all together).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The original motivation was to build or &lt;i&gt;print-out&lt;/i&gt; 5 identical robots for &lt;a href=&#39;/competitions/dtc/phase2/en&#39;&gt;DARPA Triage Challenge - Systems 2025&lt;/a&gt;.
There was an extra requirement that one person should be able to take with him/her 2 robots as a standard lagguage. Yeah, the contest takes
place in the end of Septeber 2025 in Georgia/USA and we/I need to get them there cheaply.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;As several other teams expressed their interests please &lt;b&gt;feel free to contact us if you would like
to buy the platform or cooperate with us on any further testing and improvements&lt;/b&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The platform is designed to minimize the power consumption so relatively small battery can drive it for 2 hours (estimate). It is controlled by
ESP32 board, which is probably so far the weakest part &amp;mdash; alghough it looks like there are plenty of I/O ports it is not true, and we basically
run out of them after bumpers integration. For that extra peripherials addition board is needed.&lt;/div&gt;

&lt;h3&gt;Software &amp;mdash; OSGAR framework&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;I am mostly forgotting it, as we use &lt;a href=&#39;/guide/osgar/en&#39;&gt;OSGAR&lt;/a&gt; for many years now, but &amp;hellip; it actually is quite valuable. Yes, it is 
&lt;a href=&#39;http://github.com/robotika/osgar&#39; class=&#39;external&#39;&gt;open source&lt;/a&gt; as ROS or ROS2, but the comunity around it is rather small. We also use it as base and development
for &lt;a href=&#39;http://robotika-intl.com/&#39; class=&#39;external&#39;&gt;commertial projects&lt;/a&gt; so we are motivated to keep it up-to-date and maintain it. Yes, we also know the internals, so if something
breaks we should (in theory) be able to debug it and fix it quite quickly. This is not true for ROS as we talked with other teams.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The team routine work is:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;code the simplest possible version&lt;/li&gt;

&lt;li&gt;run it on target machine (robot in real environment)&lt;/li&gt;

&lt;li&gt;download and re-run the log file on the host computer (typically laptop)&lt;/li&gt;

&lt;li&gt;fix crashes, prepare new version, git commit, git push&lt;/li&gt;

&lt;li&gt;repeat &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;What I heard from other teams that they even do not bother to record ROSbags unless specific data collection is organized.&lt;/div&gt;

&lt;h3&gt;Sensors&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;I wanted to use some light weight sensor for our small robot and the camera is must have, while LIDAR is only optional (from the DTC point of view
where the goal is to localize the victims and assest their health status). We are using &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;RGB-D OAK camera&lt;/a&gt;, but we
have not test them in full darkness for example (FRE2025 &lt;i&gt;Task4&lt;/i&gt; or what is also required by DARPA).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The impression from stress-test of &lt;a href=&#39;https://shop.luxonis.com/products/oak-d-pro&#39; class=&#39;external&#39;&gt;OAK-D Pro camera&lt;/a&gt; is kind of mixed. It worked as expected, but the USB-C cable connector is really
nightmare. Also night test was a full of stress &amp;mdash; once we switched from testing M03 (red) to M02 (green) used for &lt;i&gt;Task3&lt;/i&gt; detecting
fruits on the trees, we found out that it does not work with „cloned” setup?! Yes, we had to interrupt the great Italian dinner for several
times, but we are still not sure with the utimate root cause. M02 used older Luxonis camera, one of the first OAK-D Pro prototypes, M03 used latest one
and I had also replacement camera, which did not start at all?! The theory is that it was caused by power consumption but hard to guess now.&lt;/div&gt;

&lt;h3&gt;Team&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;The team was a lottery &amp;mdash; they did not know me, I did not know them. My judgement was based on a lecture I had at CZU three days
before Christmass. There were only a few students, but they were interested and the questions they asked me confirmed their interest. Then I wrote the
&lt;i&gt;liebesbrief&lt;/i&gt; as Simona named it &amp;hellip; and they agreed. What I learned last night in a restaurant in Milano was that they were also afraid but
they were curious how it would look like if I lead them. Yeah, Milan&#39;s stories about me &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; but I have to admit that we play with the mobile
robots already for some time &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The strongest value was surely the students energy to go for it no matter how difficult or confusing it is at the moment. None of them is programmer, except
Ondra some experience with C# and web design. What I learned also in Italy that they passed some lessons with databases and data analysis. That
helped, I guess. Finally they had already some experience with OSGAR from Jakub&#39;s seminars, so it was not the first time when they met Matty robot. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Simona is &lt;i&gt;natural lead&lt;/i&gt;, Franta inclines to HW so the division that Franta took over all cabling, mounting, holders, sprayer, while
Simona and Ondra tried to push SW forward to some usable &lt;i&gt;version 0&lt;/i&gt; worked well. The only team member I had issues with was Elena. Her
code snippets sometimes looked great, but the devil (devel?) was in the details like what orientation should the robot follow
around the tree. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Finally to reach some good results requires a lot of testing. And they invest their free time to it so they definitely earn the rewards.
For me the &lt;i&gt;transition point&lt;/i&gt; was contest &lt;i&gt;Robotem Rovně&lt;/i&gt; when they worked fully on their own, improve the code during the competition
day and reached better score then me last year. They said that it was very stressful and that they were afraid that they will not make
it on FRE, as this stress was supposed to be for several days. But they did it.&lt;/div&gt;

&lt;h3&gt;Support&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;The support from the university and the faculty was great. The financial support of the trip and large school car simplified logistics a lot.
Thank you CZU, Milan, Jirka and others. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h3&gt;Contest&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;I should at least flush here my emotions/impressions from the contest re-starting after many years. I liked it a lot. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Italians were very friendly, it was like
being at home. The food was great and there was a plenty of it. Missing internet connection I would consider as plus, actually (probably not
the others, but in the case of trouble there was always some workaround). And the tasks, scoring, etc?&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Task1&lt;/i&gt; is the oldest and it is still &lt;i&gt;must have&lt;/i&gt;. There was an opportinity to continue to former &lt;i&gt;Advanced Task&lt;/i&gt; with skipping
some rows or changing direction, but I am glad that we even did not try to bother (and saved extra development and testing time) and as
seen on other teams that was the moment when the robot failed and started to collect extra penalty points.&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Task2&lt;/i&gt; was in old days &lt;i&gt;Professional Task&lt;/i&gt; with weed detections and reporting. Using strawberries was a nice/funny idea, just the
execution and validation was a bit weak. I liked our siren, but even that was not enough to distinguish between left and right detections.
Even now I am not sure if it was OK, to report strawberries randomly as you passed them but then re-mapped them on the way back?
The detector should be improved (yes Simona, you were right, and thanks for preparation of &lt;i&gt;strawberry2.pt&lt;/i&gt; model). Also detail scoring and
drone videos would be nice, but that will/may come later I guess.&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Task3&lt;/i&gt; was completely new one. It was nice place for visitors, although the performance was poor (except one team which did really
a great job). Again the scoring was a bit unclear &amp;mdash; should the robot scanning only one tree but properly be scored higher than robots
which scans all trees but makes several mistakes? Again the evaluation of performance online was hard. BTW why was the 3D, I mean &lt;i&gt;z&lt;/i&gt;
coordinate, ignored and only &lt;i&gt;x&lt;/i&gt; and &lt;i&gt;y&lt;/i&gt; was evaluated? At the end I was happy that the team decided to report fruit type by number
of honks after complete tree mapping. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Task4&lt;/i&gt; was hard, at least for us. We have not really test on large squared area in true night with only UV turned on. The depth camera
had many false detections causing our robot to avoid collision with the wall, but it was fun. The mushrooms ver1 were much smaller so
we gave up obstacle detection „a long time ago”, I mean it was at the end of priority list. Again I am not sure about scoring or rather
notification detection. Maybe large TV could be installed and display progress over time or the mushrooms could be picked, I do not know.
We were also quite exhausted to compete at midnight (exactly &lt;i&gt;task4-250611_214721.log&lt;/i&gt; plus 2 hours offset from GMT). Again I am not sure
if robot watching the field from starting area and not moving should be scored more that active driver? But it was fun and very challenging
for sensing.&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Task5&lt;/i&gt; is again &lt;i&gt;a standard&lt;/i&gt;. I mised the official tables, both summary and sub-categories. I am glad students managed to get the
networking running (maybe &lt;i&gt;CULS Robotics&lt;/i&gt; was the only team with multiple robots in demonstration field?) and I am glad &lt;i&gt;ver0&lt;/i&gt;
worked.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;OK, let&#39;s close it now &amp;hellip; I see we are approaching the border crossing &amp;hellip; so quick cross-check, that I can only push it once on
electricity and internet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Neplecha ukončena&lt;/b&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250618&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Official results task 3, 4, 5&lt;/h2&gt;

&lt;h3&gt;Task3 - Fruit Mapping&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 505px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task3.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/results-task3_t.png&#39; alt=&#39;Results Task3&#39; title=&#39;Results Task3&#39; class=&#39;border&#39;  width=&#39;499&#39; height=&#39;415&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task3.png&#39;&gt;Results Task3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Task4 - Bioluminescent Fungi Discovery&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 882px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task4.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/results-task4_t.png&#39; alt=&#39;Results Task4&#39; title=&#39;Results Task4&#39; class=&#39;border&#39;  width=&#39;876&#39; height=&#39;419&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task4.png&#39;&gt;Results Task4&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Task5 - Freestyle&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 271px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task5.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/results-task5_t.png&#39; alt=&#39;Results Task5&#39; title=&#39;Results Task5&#39; class=&#39;border&#39;  width=&#39;265&#39; height=&#39;291&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-task5.png&#39;&gt;Results Task5&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Overall results&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 261px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-overall.png&#39;&gt;&lt;img src=&#39;/competitions/fieldrobot/2025/results-overall_t.png&#39; alt=&#39;Overall results&#39; title=&#39;Overall results&#39; class=&#39;border&#39;  width=&#39;255&#39; height=&#39;422&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/fieldrobot/2025/results-overall.png&#39;&gt;Overall results&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/competitions/fieldrobot/2025/en#email&#39;&gt;contact form&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Robotem rovně 2025</title>
    <link rel='alternate' href="https://robotika.cz/competitions/robotem-rovne/2025/en"/>
    <id>https://robotika.cz/competitions/robotem-rovne/2025/en</id>
    <updated>2024-05-18T00:00:00Z</updated>
    <author><name>Martin Dlouhý a spol.</name></author>
    <summary type='html'>
        V sobotu 17. května 2025 se konal již 16.(? moderátor říkal 17., tj. +/- 1?) ročník závodů autíček, RC autíček a autonomních mobilních robotů nazvaný
&lt;b&gt;Robotem Rovně aneb Autíčka V Parku&lt;/b&gt;. Soutěž se opět konala ve středu města Písek na trase 314m
dlouhé (letos bez stánků!). Cílem soutěže robotů je ujet 314metrů rovně (ideálně tam a zpět tj. 2x) bez zásahu obsluhy.
&lt;b&gt;Blog update:&lt;/b&gt; 
28/5/2025 &amp;mdash; &lt;a href=&#39;/competitions/robotem-rovne/2025/en#250528&#39;&gt;Matty 02 na Robotem Rovně 2025&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2024/robotem-rovne-logo.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2024/robotem-rovne-logo_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;245&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/robotem-rovne/2025/en#250518&#39;&gt;Matty M03 - Robotika&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotem-rovne/2025/en#250525&#39;&gt;Saya - NDTeam&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/robotem-rovne/2025/en#250528&#39;&gt;Matty 02 na Robotem Rovně 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 744px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/roro2025-teams.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;738&#39; height=&#39;792&#39;&gt;&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;

&lt;hr&gt;
&lt;a id=&#34;250518&#34;&gt;&lt;/a&gt;
&lt;h2&gt;18. května 2025 - Matty M03 - Robotika [MD]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na Robotem Rovně 2025 jsem tentokrát vyrazil se studenty z CZU (tým &lt;i&gt;CULS Robotics&lt;/i&gt;) a když už jsem je do toho nahnal, tak by bylo nefér je v tom nechat úplně samotné. Dorazil i
Jakub s Kloubákem K2, takže by měli i další podporu, ale &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Klasicky se to na poslední chvíli vůbec nehodilo, protože &lt;i&gt;Mission Impossible&lt;/i&gt; byla dovézt mamce sazenice rajčat a paprik na Šumavu &amp;mdash; ale Písek byl cestou, „tak jsme se &#34;na chvíli&#34; stavili”.
Nový plán byl odjet dopolední dvě kola, což se úplně časově nezvládlo (cca 2h spoždění). Následovaly hromadné starty a těch už se Matty M03 nezúčastnil. Uvidíme, zda budou
nějaké záběry z Matty M02, se kterým jeli studenti.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Loni byla pro mne soutěž přípravou na &lt;a href=&#39;/competitions/elrob/2024/en&#39;&gt;ELROB&lt;/a&gt;, aneb logistika s velkým robotem a pod. Letos jsem se alespoň pokusil zapojit 
&lt;a href=&#39;https://github.com/pavliik/oak_segmentation&#39; class=&#39;external&#39;&gt;neuronku od PavlaJ&lt;/a&gt; na detekci
cesty. Takže &lt;a href=&#39;https://robotika.vosrk.cz/robots/matty/&#39; class=&#39;external&#39;&gt;hardware byl od MartinaL&lt;/a&gt;, navigace od PavlaJ, integrace ODroidu od PavlaS a integrační rady od Jirky = na mne tam toho moc nezbylo. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Den před soutěží jsem vyrazil s Matty
na test u železniční trati (viz &lt;a href=&#39;/competitions/robotour/marathon-5kmh/en#250516&#39;&gt;Marathon 140m&lt;/a&gt;), což ráno fungovalo, ale na přejezdu vypadlo napájení do počítače, tak mne to alespoň donutilo
ODroid pořádně přidělat (za to vlastně díky TomášoviP). Odpolední pokus (po dešti), ale skončil &lt;a href=&#39;https://youtu.be/FCxdMFrL6EU&#39; class=&#39;external&#39;&gt;převácením Matta ,,na kapotu&amp;#039;&amp;#039;&lt;/a&gt;, resp. hůře na kameru &amp;mdash; poučení bylo odstranit detekce
v horní části kamery, kde je typicky nebe. Oboje myslím na RORO25 pomohlo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co se mi ale dělo opakovaně při testování a pak i na soutěži byly problémy s kamerou. Konkrétně:&lt;/div&gt;

&lt;pre&gt;2025-05-15 21:35:19,359 osgar.drivers.oak_camera INFO     Used the first available device.
[2025-05-15 21:35:22.885] [depthai] [warning] Skipping X_LINK_UNBOOTED device with name &#34;1.1&#34; ()
[2025-05-15 21:35:23.994] [depthai] [warning] skipping X_LINK_UNBOOTED device having name &#34;1.1&#34;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; prostě pak už jsem s robotem nenastartoval, kameru bylo třeba odpojit a znova připojit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Homologace byla dost tragická &amp;mdash; prošel jsem až napotřetí (?!) a to tak, že jsem pustil &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/config/matty-go.json&#39; class=&#39;external&#39;&gt;matty-go.json&lt;/a&gt; bez kamery. Ale při registraci se měří i rychlost, která defaultně je pomalá 0.2 m/s, takže ještě
jedna re-registrace. No sudí byli moc hodní, ještě jednou děkuji za trpělivost. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První jízda, když konečně naběhla kamera a manipulaci s kabely jsem obešel přes Access Point na mobilu, byla super. V závěrečné fázi 314m ůseku jsem navíc potkal kamaráda ze
&lt;a href=&#39;https://www.skupina.hm/&#39; class=&#39;external&#39;&gt;skupiny Hm&lt;/a&gt;, která ten večer hrála v Písku v rámci slavností. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Robot dojel k cíli na 314m, ale jelikož letos se musí otočit sám, už více bodů získat nemohl.
Na cestě zpět narazil do koše &amp;mdash; prostě na náměstíčku už to nestihl vybrat (při druhé jízdě zpět to dal).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak následoval relativně dlouhý čas do druhého startu a tak jsem se pokusil o kódování otočky na druhé straně parku. No nedal jsem to. Kde jsou ty časy (ano, -15let), kdy jsem na
&lt;a href=&#39;/competitions/fieldrobot/2010/en&#39;&gt;FRE2010&lt;/a&gt; sithl během přivítací řeči z logu naprogramovat detekci plevele a následně jsme s Edurem vyhráli &amp;hellip; bylo nebylo. Kde byla chyba nevím, do 
&lt;a href=&#39;https://github.com/robotika/osgar-apps/pull/8&#39; class=&#39;external&#39;&gt;kódu&lt;/a&gt; jsem ještě pořádně nekoukal. Abych vůbec odstartoval, musel jsem detekci cíle raději vpnout &amp;hellip; a pak už jsme hned jeli na slibovanou Šumavu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Potěšili mne i studenti, jednak nasazením a dále, že nechtěli „flashnout” M02 s úspěšným kódem a raději sami zápasili s detekci zelené dostali se dál, než  &lt;a href=&#39;/competitions/robotem-rovne/2024/en#240518&#39;&gt;Pat loni&lt;/a&gt;. Jak to ale celé dopadlo zatím netuším.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. podle všeho byl problém s otočení na konci trasy fakticky &lt;i&gt;jen&lt;/i&gt; problém s kamerou, která v kritický okamžik (druhý pokus o start) nenaběhla a díky fázování do oddělených skriptu:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;čekej dokud není uvolněné STOP tlačítko&lt;/li&gt;

&lt;li&gt;naviguj 320m&lt;/li&gt;

&lt;li&gt;otoč se o 180 stupňů&lt;/li&gt;

&lt;li&gt;naviguj neomezeně&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tak tam špatně vycházelo to zapnout/vypnout přes STOP tlačítko. No nic, meta pro příště, že „raketa” může vzlétnout a doletět až k Měsíci, takže je dobré si připravit i rutinu na přístání. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;python -m osgar.replay &amp;ndash;module app matty-follow-road-250517_114139.log 
original args: b&#34;[&#39;/home/robot/git/osgar/osgar/record.py&#39;, &#39;config/matty-follow-road.json&#39;]&#34;
0:11:11.709410 reached 320.15312656437806&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/view-at-320m.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/view-at-320m_t.jpg&#39; alt=&#39;pohled z kamery na 320m&#39; title=&#39;pohled z kamery na 320m&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/view-at-320m.jpg&#39;&gt;pohled z kamery na 320m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250525&#34;&gt;&lt;/a&gt;
&lt;h2&gt;25. května 2025 - Saya - NDTeam [PS]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na letošní RoRo jsem se po dlouhé době docela těšil a možná jsem to neměl dělat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Už od října 2024 jsem pomalu dával dohromady již třetí reinlarnaci hromady nařezaných 20 mm automatizačních profilů Bosch, která se postupně jmenovala Skiddy, Rocky a nyní dostala jméno Saya.
Protože mi zbyl už jenom jeden funkční Odrive pro pohon howerboardových kol a častečné také diky nevalným zkušenostem s předchozími verzemi podvozků, zvítězil tentokrát koncept, který jsem nazval &#34;inverzní invalidní vozík&#34;.
Jedná se tedy o dvojici poměrně velných (průměr 30 cm) hnanych kol a dvojice castorů vlečených na zádi stroje. Nespornou výhodou je možnost otáčení na místě a jednoduchá kinematika diferenciálního robota.
Pro lepší kopírování terénu je mezi hnanou nápravou a zbytkem robota s castory kloub umožňující kývání v podélné ose.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/saya-ndteam.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/saya-ndteam_t.jpg&#39; alt=&#39;Saya - NDTeam (foto Martin Paleček)&#39; title=&#39;Saya - NDTeam (foto Martin Paleček)&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;282&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/saya-ndteam.jpg&#39;&gt;Saya - NDTeam (foto Martin Paleček)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Robota jsem tedy postupně vystrojil senzory, vybavil novými bateriemi a tradičně nezvládl dotáhnout software do žádané podoby. Neříkám nestihl, protože jsem to prostě nezvládl, i když čas přes zimu byl.
Protože jsem si nemohl vzít v pracovní dny volno, bylo nutné vyrazit do Písku pouze na &#34;otočku&#34;. Smutným důsledkem tohoto faktu je nutnost vstávat 3:30 ráno, abych do Písku dorazil mezi 7:00 a 7:30.
Zdánlivá pohoda prázdných silnic mi vydržela až cca 30 km před cíl, kde se mi rozsvítila kontrolka motoru.
V tu chvíli bylo jasné, že den bude plný zábavy i poučení. Naštěstí se vozidlo omezilo pouze na tuto kontrolku a předem prozradím, že mě dovezlo i zpět.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na místě samém vše zpočátku probíhalo poměrně standardně - pár hovorů s kolegy a organizátory, vybalení robota a dalšího příslušenství, &#34;nahození&#34; systému a konečně homologace.
Kód pro homologaci, tj. jeď tam kam koukáš, před čelní překážkou zastav a pokud uhne pokračuj dokud ti nezmáčknou Big Red Switch, byl také jediným kódem, který byl toho dne použit v soutěži.
Po prvním kole jsem pojal úmysl doplnít alespoň detekci zelené trávy úpravou detektoru kužele pro Roboorienteering. Kód se mi sice poveldo napsat, ale už jsem nestihl jej vložit do řídící smyčky robota.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Výsledkem tedy bylo ujetých 171 metrů a hezké 6. místo hned za Martinem s jeho Mattym.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://ok1kpi.cz/umisteni-vitezu-roro-2025/&#39; class=&#39;external&#39;&gt;https://ok1kpi.cz/umisteni-vitezu-roro-2025/&lt;/a&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 554px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/roro25-results.png&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/roro25-results_t.png&#39; alt=&#39;oficiální výsledky (roboti)&#39; title=&#39;oficiální výsledky (roboti)&#39; class=&#39;border&#39;  width=&#39;548&#39; height=&#39;590&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/roro25-results.png&#39;&gt;oficiální výsledky (roboti)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Potěšil mě kolega z práce, kerý přišel fandit i s přítelkyní. Bylo také fajn vidět po dlouhé době kolgy robotiky naživo, i když vzhledem k &#34;soutěžnímu nasazení&#34; nebylo moc času na hovory.
Zajímavým zpestřením byl robot (píše neřízené vozítko) poháněný parním strojem.
Soutěž samotná probíhala trochu neobvykle, protože běhěm dopoledne se pořadatelům podařilo získat zhruba dvouhodinové zpoždění. Důsledkem byly dva hromadné starty robotů v odpolední části, kdy každý byl sám sobě komisařem.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I přes popsané softwarové nedostatky nový robot příjemně překvapil jízdními vlastnostmi, takže dostane letos ještě šanci v dalšich soutěžích (&lt;a href=&#39;https://robotikahrave.cz/tulak/&#39; class=&#39;external&#39;&gt;Tulák po krasu&lt;/a&gt;,
&lt;a href=&#39;/competitions/roboorienteering/2025/en&#39;&gt;Roboorienteering&lt;/a&gt; a &lt;a href=&#39;/competitions/robotour/2025/en&#39;&gt;Robotour&lt;/a&gt;), které doufám proběhnou.
Cesta domů proběhla v klidu a robot zdá se přežil bez úhony.
Pokud příští rok bude enrgie, tak se snad zůčastním i s řídícím software na palubě.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/saya-ready.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/saya-ready_t.jpg&#39; alt=&#39;Saya na startu&#39; title=&#39;Saya na startu&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;427&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/saya-ready.jpg&#39;&gt;Saya na startu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/saya-go.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/saya-go_t.jpg&#39; alt=&#39;Saya v akci&#39; title=&#39;Saya v akci&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;427&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/saya-go.jpg&#39;&gt;Saya v akci&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 325px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/parni-robot.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/parni-robot_t.jpg&#39; alt=&#39;Parní stroj/robot&#39; title=&#39;Parní stroj/robot&#39; class=&#39;border&#39;  width=&#39;319&#39; height=&#39;258&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/parni-robot.jpg&#39;&gt;Parní stroj/robot&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;250528&#34;&gt;&lt;/a&gt;
&lt;h2&gt;28. května 2025 - Matty 02 na Robotem Rovně 2025 [Sim]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Ahoj, dnes vás zdraví Simča z robotického týmu CULS Prague, ktorý sa pripravuje na tohtoročné &lt;a href=&#39;/competitions/fieldrobot/2025/en&#39;&gt;FRE2025&lt;/a&gt;. S ohľadom na priebeh príprav a naše doterajšie robotické (ne)skúsenosti sme spolu s naším pánom vedúcim Martinom usúdili, že by Mattymu 02 (a nám) pred ostrým štartom v Taliansku na FRE2025 prospelo vyraziť niekam do terénu. Vybrali sme teda na Robotem Rovně 2025 do Písku. Musíme uznať, že výlet dopadol nad očakávania dobre a cesta k celkovému 8. miestu z 18 viedla takmer rovno!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 510px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-m02-concurrent-start.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/matty-m02-concurrent-start_t.jpg&#39; alt=&#39;Matty M02 na hromadném startu&#39; title=&#39;Matty M02 na hromadném startu&#39; class=&#39;border&#39;  width=&#39;504&#39; height=&#39;378&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-m02-concurrent-start.jpg&#39;&gt;Matty M02 na hromadném startu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V prvom a druhom kole, kedy mal Matty skutočne len jeden jediný pokyn, a síce choď rovno bez využitia akejkoľvek senzoriky, zvládol ujsť 32 m a 42 m z celkových 314 m. Výsledkom sme boli príjemne potešení, ale keďže nás čakali ešte dve kolá, rozhodli sme sa využiť čas medzi nimi a napísať kód, ktorý by nás dostal ešte ďalej. Pracovali sme s kamerou, ktorú Matty má, a princíp bol jednoduchý – vyhnúť sa zelenej farbe. Na chodníku, po ktorom šiel robot, bolo trávy minimum, ale bol obklopený trávnatou plochou. S malou pomocou umelej inteligencie a veľkou pomocou Jakuba Leva sa nám to podarilo a Matty nakoniec zvládol v 3. kole ujsť 142 m. V poslednom kole sme skúsili jazdu optimalizovať naklonením kamery čo najviac dole, dopadlo to však tragicky a Matty celkom ušiel 10 metrov 😊 Testovanie v teréne ale dopadlo výborne a rozhodne nás namotivovalo na ďalšiu prácu v rámci príprav na FRE2025. Moc ďakujeme za príležitosť!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 233px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-m02-in-car.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/matty-m02-in-car_t.jpg&#39; alt=&#39;Matty M02 bezpečně v autě&#39; title=&#39;Matty M02 bezpečně v autě&#39; class=&#39;border&#39;  width=&#39;227&#39; height=&#39;302&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-m02-in-car.jpg&#39;&gt;Matty M02 bezpečně v autě&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 233px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-twins-in-action.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/matty-twins-in-action_t.jpg&#39; alt=&#39;Akce M02 + M03&#39; title=&#39;Akce M02 + M03&#39; class=&#39;border&#39;  width=&#39;227&#39; height=&#39;302&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-twins-in-action.jpg&#39;&gt;Akce M02 + M03&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 233px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-twins-on-table.jpg&#39;&gt;&lt;img src=&#39;/competitions/robotem-rovne/2025/matty-twins-on-table_t.jpg&#39; alt=&#39;Matty na stole&#39; title=&#39;Matty na stole&#39; class=&#39;border&#39;  width=&#39;227&#39; height=&#39;302&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/robotem-rovne/2025/matty-twins-on-table.jpg&#39;&gt;Matty na stole&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h1&gt;Pokud jste se soutěže zúčastnili, tak mi případně prosím pošlete &lt;i&gt;odstaveček&lt;/i&gt; do tohoto „článku”. Připadně pokud máte nějaké foto/video. Ideálně subj &lt;b&gt;Robotem Rovne 2025 - jmeno tymu&lt;/b&gt;. Díky!
(md-at-robotika-cz)&lt;/h1&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Pokud máte nějaké doplňující informace či komentáře
&lt;a href=&#39;/competitions/robotem-rovne/2025/en#email&#39;&gt;napište nám&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Bezpečnostní kamery</title>
    <link rel='alternate' href="https://robotika.cz/articles/security-cameras/en"/>
    <id>https://robotika.cz/articles/security-cameras/en</id>
    <updated>2024-08-26T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Bezpečnostní kamery jsou již běžné spotřební zboží &amp;mdash; nelze je nějak využít pro mobilní robotiku?
Jsou to „černé krabičky” pouze s mobilní aplikací a daty na &lt;i&gt;cloudu&lt;/i&gt; nebo je alternativa?
&lt;b&gt;Blog update:&lt;/b&gt; 16/9/2024 &amp;mdash; &lt;a href=&#39;/articles/security-cameras/en#240916&#39;&gt;Reolink Support&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/security-cameras/en#240826&#39;&gt;240826 - Náhodný výběr&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/security-cameras/en#240906&#39;&gt;240906 - AbsoluteMove&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/security-cameras/en#240915&#39;&gt;240915 - Reolink E1 Outdoor&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/security-cameras/en#240916&#39;&gt;240916 - Reolink Support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;
&lt;a id=&#34;240826&#34;&gt;&lt;/a&gt;
&lt;h2&gt;26. srpna 2024 &amp;mdash; Náhodný výběr&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Původně jsem to chtěl nazvat spíše „výběr kamery”, ale nabídka bezpečnostních kamer je široká a má trpělivost
cokoliv nakupovat je nerozumně omezená. Asi jediný požadavek byl &lt;i&gt;outdoor&lt;/i&gt; s tím, že bych rád nějaké otevřené
API. Konzultoval jsem to s &lt;a href=&#39;https://www.perplexity.ai/search/would-you-recommend-some-secur-suWjVup8TpuA5b9hh9FXAA&#39; class=&#39;external&#39;&gt;perplexity&lt;/a&gt;
a ve zkratce mi doporučila &lt;a href=&#39;https://reolink.com/&#39; class=&#39;external&#39;&gt;Reolink&lt;/a&gt; a ke kamerám
&lt;a href=&#39;https://www.datart.cz/ip-kamera-tp-link-tapo-c500-tapo-c500.html&#39; class=&#39;external&#39;&gt;TP-Link Tapo C500&lt;/a&gt; naznačovala, že existuje
&lt;a href=&#39;https://pypi.org/project/pytapo/&#39; class=&#39;external&#39;&gt;PyTapo Python knihovna&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď zpětně trošku chápu, o čem to ta AI psala. Zatím jsem vybalil tu &lt;i&gt;TP-Link Tapo C500&lt;/i&gt;, která podporuje pouze
WiFi přípojení a používá zdroj 12V/1A. Vyžadovalo to instalovat 
&lt;a href=&#39;https://play.google.com/store/apps/details?id=com.tplink.iot&amp;amp;hl=cs&amp;amp;pli=1&#39; class=&#39;external&#39;&gt;TP-Link Tapo&lt;/a&gt; Android applikaci,
aby se kamera přepnula z &lt;i&gt;access point&lt;/i&gt; módu na připojení na WiFi router. V rozšířených nastaveních lze pak
přidat nového uživatele s heslem. A s tím je spojeno to &lt;a href=&#39;https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol&#39; class=&#39;external&#39;&gt;RTSP&lt;/a&gt;
(Real-Time Streaming Protocol):&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;rtsp://username:password@camera_ip:554/stream1&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 486px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/security-cameras/rtsp-vlc.jpg&#39;&gt;&lt;img src=&#39;/articles/security-cameras/rtsp-vlc_t.jpg&#39; alt=&#39;RTSP stream v VLC&#39; title=&#39;RTSP stream v VLC&#39; class=&#39;border&#39;  width=&#39;480&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/security-cameras/rtsp-vlc.jpg&#39;&gt;RTSP stream v VLC&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; toto fungovalo vlastně ve &lt;a href=&#39;https://www.videolan.org/vlc/&#39; class=&#39;external&#39;&gt;VLC Media Playeru&lt;/a&gt; hned. Časem jsem dohledal, že
&lt;i&gt;stream1&lt;/i&gt; je s vyšším rozlišením a existuje ještě &lt;i&gt;stream2&lt;/i&gt; s nižším rozlišením. Stejné URL funguje i v
&lt;a href=&#39;https://opencv.org/&#39; class=&#39;external&#39;&gt;OpenCV&lt;/a&gt; a tím pádem i rovnou v &lt;a href=&#39;https://github.com/robotika/osgar&#39; class=&#39;external&#39;&gt;OSGARovi&lt;/a&gt;
(stačí změnit v &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/config/test-opencv-camera.json&#39; class=&#39;external&#39;&gt;config/test-opencv-camera.json&lt;/a&gt;
port na URL výše). Jen v tom VLC je navíc slyšet i audio. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další krok byl s kamerou pohnout. Co fungovalo bylo posouvání v aplikaci na telefonu (a stále streamovat video).
S tím je spojeno to druhé klíčové slovo &lt;a href=&#39;https://www.onvif.org/&#39; class=&#39;external&#39;&gt;ONVIF&lt;/a&gt; (Open Network Video Interface Forum).
A jelikož o tom nic nevím, tak jsem zase zkoušel &lt;a href=&#39;https://www.perplexity.ai/search/if-i-would-like-to-use-onvif-p-5AJzqKwKQuKbuDhgqN8m6A&#39; class=&#39;external&#39;&gt;perplexity&lt;/a&gt;.
Podle doporučení jsem nainstaloval &lt;a href=&#39;https://pypi.org/project/zeep/&#39; class=&#39;external&#39;&gt;zeep&lt;/a&gt; a &lt;a href=&#39;https://pypi.org/project/onvif-zeep/&#39; class=&#39;external&#39;&gt;onvif_zeep&lt;/a&gt;.
Ale příklad použití na &lt;i&gt;Tapo C500&lt;/i&gt; úplně nefungoval. První zrada byla s portem &amp;mdash; místo 80 je třeba použít 2020,
jen už nevím, kde jsem tuto nápovědu sebral. Což mi ale připomíná, že jsem úplně vynechal &lt;i&gt;PyTapo&lt;/i&gt;, které se zaseklo
na problému autorizace a přes to jsem se nedostal &amp;mdash; stáhl si &lt;a href=&#39;https://github.com/JurajNyiri/pytapo&#39; class=&#39;external&#39;&gt;github repo&lt;/a&gt;,
jestli tam není novější verze, ale nepomohlo to. Také jsem zapomněl zmínit, že na kameře jsem po prvním připojení
upgradeoval firmware &amp;mdash; to také mohlo rozbít aktuální &lt;i&gt;pytapo&lt;/i&gt;. A také jsem nezmínil, že při dalším připojení
se změnila IP adresa kamery, ale to bych asi případně mohl změnit na routeru (aneb další možnost, jak se to mohlo pokazit).&lt;/div&gt;

&lt;pre&gt;from onvif import ONVIFCamera

# Replace with your camera&#39;s IP address, port, username, and password
camera_ip = &#39;192.168.1.100&#39;
camera_port = 2020
username = &#39;admin&#39;
password = &#39;password&#39;

# Create an ONVIF camera object
camera = ONVIFCamera(camera_ip, camera_port, username, password)

# Get device information
device_info = camera.devicemgmt.GetDeviceInformation()
print(&#34;Manufacturer:&#34;, device_info.Manufacturer)
print(&#34;Model:&#34;, device_info.Model)
print(&#34;Firmware Version:&#34;, device_info.FirmwareVersion)
print(&#34;Serial Number:&#34;, device_info.SerialNumber)
print(&#34;Hardware ID:&#34;, device_info.HardwareId)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; toto fungovalo (se správnou IP, username a password)&lt;/div&gt;

&lt;pre&gt;Manufacturer: tp-link
Model: Tapo C500
Firmware Version: 1.1.4 Build 240506 Rel.39487n
Serial Number: a19999 (upraveno)
Hardware ID: 1.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;ale při pokusech o posunutí se mi podařilo „položit server”, míněno server běžící na kameře:&lt;/div&gt;

&lt;pre&gt;capabilities = camera.devicemgmt.GetCapabilities()&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;skončilo s chybou:&lt;/div&gt;

&lt;pre&gt;http.client.BadStatusLine: POST /onvif/device_serviceHTTP/1.1Host 192.168.1.18:2020
User-Agent Zeep/4.2.1 (www.python-zeep.org)Accept-Encoding gzip, deflateAcHTTP/1.1
500 Internal Server Error&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Pro dnešek asi stačí &amp;hellip; časem bych doplnil i úvodní „omáčku” aneb motivace a pod. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. thumb jsem převzal z &lt;a href=&#39;https://www.railfanguides.us/oblivion/&#39; class=&#39;external&#39;&gt;https://www.railfanguides.us/oblivion/&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240906&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. září 2024 &amp;mdash; AbsoluteMove&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Toto se pokusím ještě teď v noci „odbavit” jako důkaz, že už nic nebrání nočnímu testování. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Posledně jsem psal, že dostat video z &lt;i&gt;Tapo C500&lt;/i&gt; bylo vlastně bez problémů (s použítím VLC).
Dobrá zpráva je, že je i poměrně triviální to streamované video nahrát (pokud je kamera na síti).
Co ale bylo (naštěstí už minulý čas) peklo bylo s tou kamerou programově pohnout! Jako ten &lt;i&gt;ONVIF&lt;/i&gt;
je pěkná věc, ale to by to musel každý výrobce pořádně dodržovat. A jak jsem psal, že posledně to
skončilo 500 na serveru, tak s tím jsem dnes začal &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A k mému překvapení to není tak stará věc:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://community.tp-link.com/en/smart-home/forum/topic/638288?replyId=1310860&#39; class=&#39;external&#39;&gt;ONVIF GetStatus method does not work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Jako myslím, že to novějším FW nevyřešili (mě to s 1.1.4 padá stále), ale zaujala mne tam další poznámka:
&lt;i&gt;the &#34;UtcTime&#34; element should be returned in the ISO 8601 format.&lt;/i&gt;, která pěkně korelovala s chybou:&lt;/div&gt;

&lt;pre&gt;ERROR:zeep.xsd.types.simple:Error during xml -&gt; python translation
Traceback (most recent call last):
  File &#34;/home/md/.virtualenvs/tapo/lib/python3.8/site-packages/isodate/isodatetime.py&#34;, line 51, in parse_datetime
    datestring, timestring = datetimestring.split(&#39;T&#39;)
ValueError: not enough values to unpack (expected 2, got 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File &#34;/home/md/.virtualenvs/tapo/lib/python3.8/site-packages/zeep/xsd/types/simple.py&#34;, line 79, in parse_xmlelement
    return self.pythonvalue(xmlelement.text)
  File &#34;/home/md/.virtualenvs/tapo/lib/python3.8/site-packages/zeep/xsd/types/builtins.py&#34;, line 44, in _wrapper
    return func(self, re.sub(r&#34;[\n\r\t ]&#34;, &#34; &#34;, value).strip())
  File &#34;/home/md/.virtualenvs/tapo/lib/python3.8/site-packages/zeep/xsd/types/builtins.py&#34;, line 180, in pythonvalue
    return isodate.parse_datetime(value)
  File &#34;/home/md/.virtualenvs/tapo/lib/python3.8/site-packages/isodate/isodatetime.py&#34;, line 53, in parse_datetime
    raise ISO8601Error(&#34;ISO 8601 time designator &#39;T&#39; missing. Unable to&#34;
isodate.isoerror.ISO8601Error: ISO 8601 time designator &#39;T&#39; missing. Unable to parse datetime string 
                                                                                          &#39;Fri Sep  6 20:52:11 2024&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Teď už si nevzpomenu, co jsem z té kamery chtěl dostat, asi&lt;/div&gt;

&lt;pre&gt;media = mycam.create_media_service()

# Create ptz service object
ptz = mycam.create_ptz_service()

# Get target profile
media_profile = media.GetProfiles()[0]

# Get PTZ configuration options for getting continuous move range
request = ptz.create_type(&#39;GetConfigurationOptions&#39;)
request.ConfigurationToken = media_profile.PTZConfiguration.token
ptz_configuration_options = ptz.GetConfigurationOptions(request)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no nevím, měl jsem si to hned psát. Sigh.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale je to Python, takže stačilo oeditovat &lt;i&gt;/home/md/.virtualenvs/tapo/lib/python3.8/site-packages/isodate/isodatetime.py&lt;/i&gt;, konkrétně&lt;/div&gt;

&lt;pre&gt;try:
        datestring, timestring = datetimestring.split(&#39;T&#39;)
    except ValueError:
        return datetime.strptime(datetimestring, &#34;%a %b %d %H:%M:%S %Y&#34;)
#        raise ISO8601Error(&#34;ISO 8601 time designator &#39;T&#39; missing. Unable to&#34;
#                           &#34; parse datetime string %r&#34; % datetimestring)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Další milník byl výpis &lt;b&gt;ptz_configuration_options&lt;/b&gt;:&lt;/div&gt;

&lt;pre&gt;&#39;Spaces&#39;: {
        &#39;AbsolutePanTiltPositionSpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                },
                &#39;YRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],
        &#39;AbsoluteZoomPositionSpace&#39;: [],
        &#39;RelativePanTiltTranslationSpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/PanTiltSpaces/TranslationGenericSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                },
                &#39;YRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],
        &#39;RelativeZoomTranslationSpace&#39;: [],
        &#39;ContinuousPanTiltVelocitySpace&#39;: [],
        &#39;ContinuousZoomVelocitySpace&#39;: [],
        &#39;PanTiltSpeedSpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: 0.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],
        &#39;ZoomSpeedSpace&#39;: [],
        &#39;Extension&#39;: None,
        &#39;_attr_1&#39;: None,
        &amp;hellip;
    },
    &#39;PTZTimeout&#39;: {
        &#39;Min&#39;: datetime.timedelta(seconds=1),
        &#39;Max&#39;: datetime.timedelta(seconds=600)
    },
    &#39;_value_1&#39;: [
        &lt;Element {http://www.onvif.org/ver10/schema}PTControlDirection at 0x7f88cca96e80&gt;
    ],
    &#39;PTControlDirection&#39;: None,
    &#39;Extension&#39;: None,
    &#39;_attr_1&#39;: None
}&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Nyní mám zpětně teorii, že ty prázdné listy znamenají, že to ta kamera prostě neumí. Ale co by měla umět je &lt;i&gt;AbsolutePanTiltPositionSpace&lt;/i&gt;!
Jenom k tomu dohledat, co že je to klíčové slovo, které se má někde vyplnit? Kupodivu to je &lt;b&gt;AbsoluteMove&lt;/b&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;# 
    positionrequest = ptz.create_type(&#39;AbsoluteMove&#39;)
    positionrequest.ProfileToken = media_profile.token

    if positionrequest.Position is None:
        positionrequest.Position = ptz.GetStatus({&#39;ProfileToken&#39;: media_profile.token}).Position
        positionrequest.Position.PanTilt.space = ptz_configuration_options.Spaces.AbsolutePanTiltPositionSpace[0].URI
#        positionrequest.Position.Zoom.space = ptz_configuration_options.Spaces.AbsoluteZoomPositionSpace[0].URI
    if positionrequest.Speed is None:
        positionrequest.Speed = ptz.GetStatus({&#39;ProfileToken&#39;: media_profile.token}).Position
        positionrequest.Speed.PanTilt.space = ptz_configuration_options.Spaces.PanTiltSpeedSpace[0].URI

    request = positionrequest
    request.Position.PanTilt.x = x
    request.Position.PanTilt.y = y
    ptz.AbsoluteMove(request)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Z velké části opsáno z &lt;a href=&#39;https://github.com/FalkTannhaeuser/python-onvif-zeep/blob/zeep/examples/AbsoluteMove.py&#39; class=&#39;external&#39;&gt;FalkTannhaeuser/python-onvif-zeep&lt;/a&gt;.
Ten &lt;i&gt;Zoom&lt;/i&gt; je třeba zakomentovat/odstranit, protože C500 žádný zoom nemá. A výsledek po mini wrapperu a volání z konzole:&lt;/div&gt;

&lt;pre&gt;(tapo) md@md-ThinkPad-P50:~/git/pytapo$ python patapo.py 0.5 -0.5
(tapo) md@md-ThinkPad-P50:~/git/pytapo$ python patapo.py -0.4 -0.5
(tapo) md@md-ThinkPad-P50:~/git/pytapo$ python patapo.py 0 -0.7&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; viz &lt;a href=&#39;https://youtu.be/Pa4O8b6jnmc&#39; class=&#39;external&#39;&gt;noční video&lt;/a&gt; &amp;ndash; aréna je přípravena! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;https://youtu.be/Pa4O8b6jnmc&#39;&gt;&lt;img src=&#39;/articles/security-cameras/night-arena_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
	&lt;a href=&#39;https://youtu.be/Pa4O8b6jnmc&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240915&#34;&gt;&lt;/a&gt;
&lt;h2&gt;15. září 2024 &amp;mdash; Reolink E1 Outdoor&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Venku lije, tak jsem z trudomyslnosti rozbalil další kameru, tentokrát od firmy &lt;a href=&#39;https://reolink.com/&#39; class=&#39;external&#39;&gt;Reolink&lt;/a&gt;. Po pravdě už první problém byl zjistit,
co přesně mám za kameru. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Na krabici jsou hlavně reklamy, tj. &lt;i&gt;Pan, Tilt and 3x Optical Zoom&lt;/i&gt;, 5MPx, 2.4/5GHz Dual-Band Wifi, Auto Tracking, a pod.
Na faktůře je &lt;a href=&#39;https://www.reolink.cz/produkt/reolink-e1-outdoor-bezpecnostni-kamera/&#39; class=&#39;external&#39;&gt;IP kamera Reolink E1 Outdoor&lt;/a&gt; &amp;mdash; no jo, teď už jsem to našel i na te „reklamní” krabici.
Na českých stránkách (ale myslím, že jsou pouze přeložené z angličtiny) mne zmátlo &#34;Typ připojení: wi-fi&#34;, ale tuto kameru jsem primárně vybíral s tím, že
má i Ethernetový konektor (a kabel). Ale je to ona, podle dalších indicií (nemá např. 4K video).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Můj první cíl byl rozchodit komunikaci s kamerou, aniž bych si instaloval aplikaci. Pokud kameru zapojíte do napájení, tak začne dokola asi v pěti jazycích
hlasitě prskat, ať si nainstalujete aplikaci a ukážete jí na kameru. :-( &amp;hellip; zacpat „reprák” jí můžete jen pár způsoby:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;vypnete napájení&lt;/li&gt;

&lt;li&gt;nainstalujete si aplikaci&lt;/li&gt;

&lt;li&gt;připojíte Ethernetový kabel&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Že funguje třetí varianta jsem zjistil náhodou. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Alternativou k aplikaci je nějaký &lt;a href=&#39;https://reolink.com/software-and-manual/&#39; class=&#39;external&#39;&gt;client&lt;/a&gt;, ale ten je pouze pod Windows &amp;mdash; začínám chápat Jirkovo trápení, když nová
zařízení vyžadují instalaci čehosi, co pak typicky pošle jen dotaz po síti. Stáhnul jsem si i manuál, kde první co mne uhodilo mezi oči bylo
&lt;b&gt;The default username is &#34;admin&#34; and the password is blank (no password).&lt;/b&gt; Teď už chápu, proč jsou &lt;i&gt;některé&lt;/i&gt; kamery snadno napadnutelné, aneb kolik uživatelů
si heslo změní? (mimochodem, já si ho rovnou změnil, ale už se tam nemůžu dostat, ale to později)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Uživatel a „heslo” není vše - jakou IP adresu použít? Zkusil jsem znova &lt;a href=&#39;https://www.perplexity.ai/search/what-is-the-default-user-for-r-Vo77z5JMTz.PwwDWe7RZvQ&#39; class=&#39;external&#39;&gt;perplexity.ai&lt;/a&gt;,
která suveréně odpověděla: &lt;i&gt;The default IP address for Reolink cameras and NVRs with an Ethernet interface is: 192.168.1.108&lt;/i&gt; s odkazem na
&lt;a href=&#39;https://support.reolink.com/hc/en-us/articles/900000629066-Introduction-to-the-Default-IP-Address-of-Reolink-Cameras-and-NVRs/&#39; class=&#39;external&#39;&gt;Reolink support&lt;/a&gt;. Tam žádná IP
adresa není a ono i doporučení: &lt;i&gt;All Reolink cameras and NVRs with Ethernet interface are allocated a default IP Address when they came out from the factory. Their default IP address can be located when connected directly to your PC with an Ethernet cable.&lt;/i&gt; Prostě když do browseru vyplníte IP adresu, tak vám pak stránka vygenerovaná kamerou, řekne IP adresu,
žádný probém! &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nakonec jsem udělal to, co jsem úplně nechtěl, a připojil kameru do routeru s DHCP. Pak jsem pustil již osvědčený příkaz:&lt;/div&gt;

&lt;pre&gt;md@md-ThinkPad-P50:~/git/osm$ nmap -sP 192.168.1.*
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-15 13:32 CEST
Nmap scan report for router.home (192.168.1.1)
Host is up (0.00064s latency).
&amp;hellip;
Nmap scan report for Camera1.home (192.168.1.31)
Host is up (0.0013s latency).
&amp;hellip;
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.51 seconds&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a pak v browseru opravdu fungovala &lt;a href=&#39;https://192.168.1.31/&#39; class=&#39;external&#39;&gt;https://192.168.1.31/&lt;/a&gt;, admin a prázdné heslo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/security-cameras/reolink-browser.jpg&#39;&gt;&lt;img src=&#39;/articles/security-cameras/reolink-browser_t.jpg&#39; alt=&#39;Reolink v prohlížeči&#39; title=&#39;Reolink v prohlížeči&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/security-cameras/reolink-browser.jpg&#39;&gt;Reolink v prohlížeči&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/security-cameras/reolink-1st-image.jpg&#39;&gt;&lt;img src=&#39;/articles/security-cameras/reolink-1st-image_t.jpg&#39; alt=&#39;První obrázek z kamery&#39; title=&#39;První obrázek z kamery&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/security-cameras/reolink-1st-image.jpg&#39;&gt;První obrázek z kamery&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/security-cameras/setting-port.jpg&#39;&gt;&lt;img src=&#39;/articles/security-cameras/setting-port_t.jpg&#39; alt=&#39;Nastavení portů&#39; title=&#39;Nastavení portů&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/security-cameras/setting-port.jpg&#39;&gt;Nastavení portů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zapnul jsem si RSTP a ONVIF, nastavil statickou IP adresu (stejnou co kamera dostala přes DHCP) a rebootoval. A už jsem se více z prohlížeče na kameru nedostal. Předpokládám,
že je nutné i ten první RTMP a možná i to HTTP &amp;hellip; no nic, asi budu zkoušet resetovat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Streamování s novým heslem a pevnou IP adresou funguje OK, ale upravený kus kódu pro Tapo C500 už nikoliv. Přidal jsem si tam assert 0, až mi vypíše schopnosti kamery:&lt;/div&gt;

&lt;pre&gt;AssertionError: {
    &#39;Spaces&#39;: {
        &#39;AbsolutePanTiltPositionSpace&#39;: [],
        &#39;AbsoluteZoomPositionSpace&#39;: [],
        &#39;RelativePanTiltTranslationSpace&#39;: [],
        &#39;RelativeZoomTranslationSpace&#39;: [],
        &#39;ContinuousPanTiltVelocitySpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                },
                &#39;YRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],
        &#39;ContinuousZoomVelocitySpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/ZoomSpaces/VelocityGenericSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],
        &#39;PanTiltSpeedSpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: 0.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],

        &#39;ZoomSpeedSpace&#39;: [
            {
                &#39;URI&#39;: &#39;http://www.onvif.org/ver10/tptz/ZoomSpaces/ZoomGenericSpeedSpace&#39;,
                &#39;XRange&#39;: {
                    &#39;Min&#39;: -1.0,
                    &#39;Max&#39;: 1.0
                }
            }
        ],
        &#39;Extension&#39;: None,
        &#39;_attr_1&#39;: None
    },
    &#39;PTZTimeout&#39;: {
        &#39;Min&#39;: datetime.timedelta(seconds=1),
        &#39;Max&#39;: datetime.timedelta(seconds=10)
    },
    &#39;_value_1&#39;: None,
    &#39;PTControlDirection&#39;: None,
    &#39;Extension&#39;: None,
    &#39;_attr_1&#39;: None
}&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Přijde mi pěkné, že existuje nějaký ONVIF, ale rozhodně nemůžu prohodit jednu IP kameru za druhou, když jejich schopnosti jsou doslova &lt;i&gt;ortogonální&lt;/i&gt;
(co má jedna nemá druhá a obráceně). Ale možná jsem jenom škarohlíd. Paradoxně si teď dovedu snáz představit programování té levnější Tapo kamery
s absolutním poziciováním, než E1, kde ovládám jenom rychlost posunu. Ona možná vrací aktuální pozici, ale pak bych čekal i ty absolutní příkazy?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. po hard resetu už nefunguje ani ONVIF ani RSTP ani prohlížeč. Je čas se vrátit ke trudomyslnosti &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240916&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. září 2024 &amp;mdash; Reolink Support&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem si ještě chvíli povídal s AI chatbotem na &lt;a href=&#39;https://support.reolink.com/requests/&#39; class=&#39;external&#39;&gt;stránkách podpory&lt;/a&gt;. Jako úplně jsme si nerozumněli, takže když napsal:&lt;/div&gt;

&lt;pre&gt;(22:55:55) Reolink Bot: Sorry. You can try to rephrase your question or directly contact an agent by typing “Talk to human”.
(22:56:14) Web User 66e6f48bddc40a1b5199c30a: Talk to human&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak to chtělo vyplnit pětipoložkový formulář a za chvíli přišel mail s detaily naší konverzace. Ty časy z konverzace jsou nejspíše Čína??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem si vyměnil cca 5 mailu s vyšší AI &lt;i&gt;Ewelina&lt;/i&gt; &amp;mdash; možná to byl člověk a možná lepší kompilátor: &lt;i&gt;Firstly, I&#39;d like to acknowledge that you&#39;re using a Linux-based system, 
which can sometimes present unique challenges when interfacing with security cameras. While Reolink doesn&#39;t officially support Linux operating systems,
there are still ways we can try to resolve your issue.&lt;/i&gt; Když to hodně zkrátím, tak jsem si myslel, že mám skoro nejnovější verzi firmware &lt;b&gt;v3.1.0&lt;/b&gt;, ale ona se dost
zásadně lišila v buildu: &lt;i&gt;Firmware Version&lt;/i&gt; v3.1.0.1789_23021701 vs. v3.1.0.3429_24041813. Firmware lze upgradeovat i z browseru, ale když ten nefunguje, tak smůla.
Skončilo to nainstalováním klienta na prastarý notebook s Win7 a tam vše krásně fungovalo. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Např. první krok, co to chtělo, byla změna hesla administrátora. Fajn.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Naklikal jsem stejné nastavení jako včera, naformátoval 256GB SD kartu a ověřil, že kameru mohou ovládat z linuxového prohlížeče. Asi bych si to teď měl zopakovat,
jestli se mi to náhodou nezdálo &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co Evelína zmiňovala byl pro mne nový příkaz &lt;b&gt;rtsp://[username]:[password]@[IP_address]:554//h264Preview_01_main&lt;/b&gt; &amp;hellip; funguje, jenom další screenshot nepořádku
už asi sdílet nemusím. Ten časový posun se nějak neuložil &amp;hellip; 10h, tj. zase západní pobřeží USA. Ono by to až tak nevadilo, ale pak v těch nahrávkách je hrozný guláš.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zkoušel jsem ted &lt;i&gt;tracking feature&lt;/i&gt; a opravdu se to otáčelo za naším psem &amp;mdash; no hlavně jestli se to bude otáčet i za &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Patem&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. už zase prší &amp;hellip;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/articles/security-cameras/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Rocker</title>
    <link rel='alternate' href="https://robotika.cz/robots/rocker/en"/>
    <id>https://robotika.cz/robots/rocker/en</id>
    <updated>2024-01-25T00:00:00Z</updated>
    <author><name>Martin Locker</name></author>
    <summary type='html'>
        Robota s nezávislým pohonem a řízením všech kol jsem si chtěl postavit již dávno.
Konečně jsem objevil vhodné pohony - robotická serva (WaveShare ST3215), 
která splnila téměř všechny požadavky (a za rozumnou cenu). 
A tak vznikl robot se čtyřkolovým podvozkem typu rocker-bogie.
&lt;b&gt;Aktualizace:&lt;/b&gt; 24.7.2024 &lt;a href=&#39;/robots/rocker/en#240724&#39;&gt;Jízda po naprogramované dráze&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h1&gt;Základní údaje&lt;/h1&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel right&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/robot.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/robot_t.jpg&#39; alt=&#39;Podvozek robota&#39; title=&#39;Podvozek robota&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/robot.jpg&#39;&gt;Podvozek robota&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Autor&lt;/dt&gt;
&lt;/dl&gt;

&lt;ul&gt;
&lt;li&gt;Martin Locker&lt;/li&gt;
&lt;/ul&gt;

&lt;dl&gt;
&lt;dt&gt;Řídicí počítače&lt;/dt&gt;
&lt;/dl&gt;

&lt;ul&gt;
&lt;li&gt;low level - STM32F103&lt;/li&gt;

&lt;li&gt;high level - Raspberry Pi 3B&lt;/li&gt;
&lt;/ul&gt;

&lt;dl&gt;
&lt;dt&gt;Senzory&lt;/dt&gt;
&lt;/dl&gt;

&lt;ul&gt;
&lt;li&gt;IMU&lt;/li&gt;

&lt;li&gt;GPS&lt;/li&gt;

&lt;li&gt;Lidar LDrobot LD-06&lt;/li&gt;

&lt;li&gt;hloubková kamera RealSense D455&lt;/li&gt;
&lt;/ul&gt;

&lt;dl&gt;
&lt;dt&gt;Pohon&lt;/dt&gt;
&lt;/dl&gt;

&lt;ul&gt;
&lt;li&gt;8x digitální robotické servo WaveShare ST3215&lt;/li&gt;
&lt;/ul&gt;

&lt;dl&gt;
&lt;dt&gt;Napájení&lt;/dt&gt;
&lt;/dl&gt;

&lt;ul&gt;
&lt;li&gt;pohony LiPol 3s 5Ah&lt;/li&gt;

&lt;li&gt;elektronika power banka 20Ah&lt;/li&gt;
&lt;/ul&gt;

&lt;dl&gt;
&lt;dt&gt;Koncepce&lt;/dt&gt;
&lt;/dl&gt;

&lt;ul&gt;
&lt;li&gt;čtyřkolový podvozek typu Rocker-bogie (výkyvné uložení kol)&lt;/li&gt;

&lt;li&gt;každé kolo má nezávislý pohon a nezávislé natočení směru&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h2&gt;Charakteristika robota&lt;/h2&gt;

&lt;h3&gt;Podvozek&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Podvozek robota je postaven z hliníkových profilů, plexi a dílů vyrobených 3D tiskem z PLA.
Snahou bylo udělat konstrukci co nejčistší (aby nikde nic nepřekáželo, nekoukaly dráty, &amp;hellip;).
Takže některé části jsou nakonec celkem komplikované - převodovka s pohonem uvnitř kola,
vidlice kol, jejímž vnitřkem vedou vodiče k servům (viz. fotky).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/kolo.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/kolo_t.jpg&#39; alt=&#39;Kolo&#39; title=&#39;Kolo&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/kolo.jpg&#39;&gt;Kolo&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/vidlice.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/vidlice_t.jpg&#39; alt=&#39;Vidlice kola&#39; title=&#39;Vidlice kola&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/vidlice.jpg&#39;&gt;Vidlice kola&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/motor.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/motor_t.jpg&#39; alt=&#39;Pohon kola&#39; title=&#39;Pohon kola&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/motor.jpg&#39;&gt;Pohon kola&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/pohon.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/pohon_t.jpg&#39; alt=&#39;Kompletní pohon&#39; title=&#39;Kompletní pohon&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/pohon.jpg&#39;&gt;Kompletní pohon&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/soucasti.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/soucasti_t.jpg&#39; alt=&#39;Součásti kyvných ramen&#39; title=&#39;Součásti kyvných ramen&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/soucasti.jpg&#39;&gt;Součásti kyvných ramen&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/telo.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/telo_t.jpg&#39; alt=&#39;Tělo robota&#39; title=&#39;Tělo robota&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/telo.jpg&#39;&gt;Tělo robota&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/robot2.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/robot2_t.jpg&#39; alt=&#39;Podvozek 2&#39; title=&#39;Podvozek 2&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/robot2.jpg&#39;&gt;Podvozek 2&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/robot3.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/robot3_t.jpg&#39; alt=&#39;Podvozek 3&#39; title=&#39;Podvozek 3&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/robot3.jpg&#39;&gt;Podvozek 3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/robot4.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/robot4_t.jpg&#39; alt=&#39;Podvozek 4&#39; title=&#39;Podvozek 4&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/robot4.jpg&#39;&gt;Podvozek 4&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Řízení pohybu&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Podvozek je navržen tak, že osy zatáčení kol jsou ve vrcholech čtverce (robot má stejný rozchod
i rozvor kol).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Díky nezávislému natáčení každého kola lze realizovat dva základní způsoby řízené:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&#34;automobilové&#34; řízení s (ackermannovým) řízením všech čtyř kol a samostatným řízením rychlosti každého kola&lt;/li&gt;

&lt;li&gt;synchrodrive (všesměrové řízení) - všechna kola natáčena do stejného směru a otáčejí se stejnou rychlostí&lt;br&gt;+ otáčení na místě (kola se natočí ve směru kružnice procházející osami natáčení kol)
&lt;br&gt;Vlastní řízení (výpočty natočení kol a jejich rychlosti) řídí mikrokontroler na základě
povelů z nadřízeného systému &lt;br&gt;
(1. dopředná rychlost + úhlová rychlost, 2. rychlost + směr).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Video&lt;/h3&gt;
&lt;center&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/ROULPehfyL0&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;První jízda - dálkově řízeno
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;220128&#34;&gt;&lt;/a&gt;
&lt;h3&gt;28. ledna 2024 - Odladěn driver pro komunikaci se servy&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Po postrčení Martinem D. jsem (po delší době) vytáhl robota a pustil se konečně do
napsání rozumného rozhraní pro komunikaci s digitálními servy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Snažil jsem se to napsat tak, aby to bylo použitelné na různých platformách
(zatím tedy AVR, STM32 a ESP32). Nejnižší vrstvu implementující jednodrátovou
sériovou komunikaci jsem oddělil od vyšších vrstev a pro STM32 vyzkoušel
tři varianty realizace - standardní využití knihovní obsluhy uartu
(s možností využití hw řešení single wire half duplex na STM32), vlastní obsluha
uartu přes přerušení (zatím nevyzkoušeno) a využití dma přenosu (to by měla být 
cílová varianta). Bohužel zatím DMA přenos nepůjde použít, protože na použité desce
zrovna UART3 sdílí stejné kanály s rozhraním SPI1, které bude sloužit pro komunikaci
s RPi a tam je dma nutností.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Low level mikrokontroler by měl být v budoucnu schopen obsloužit všechny
periferie (kromě kamery), tj. pohony, imu, gps a lidar. Z hlediska pohonů
bude zajišťovat výpočet natočení jednotlivých kol a jejich rychlosti dle
povelů z nadřízeného systému a zpětné čtení enkodérů. U dalších periferií bude
zajišťovat periodické vyčítání dat. Proto se snažím napsat obsluhu tak, aby co
nejméně zatěžovala mikrokontroler. Použití dma pro uart jsem už zvládl (po
větším úsilí) při vyčítání lidaru. Proto to u komunikace se servy už celkem
šlo (jen se museli použít dva kanály - pro vysílání a příjem).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Závěr&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;hotovo: vyčítání dat z lidaru, komunikace se servy&lt;/li&gt;

&lt;li&gt;k řešení: doladit řízení pohonů (výpočty natočení a rychlostí), komunikace s imu (třetí uart po fyzické vrstvě can), komunikace s RPi (spi)&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;240505&#34;&gt;&lt;/a&gt;
&lt;h3&gt;5. května 2024 - Uživatelské rozhraní pro robota&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Po posouzení možností jak realizovat na robotovi uživatelské rozhraní (GUI),
tj. lehkého prozkoumání jak to naprogramovat v Qt, wxWidgets, &amp;hellip; a
zhodnocení času potřebného k jejich zvládnutí s dostupným výkonem na Raspberry Pi 3B, 
jsem došel k závěru, že tudy cesta nevede. Při povídání s Martinem D.
jsem nadhodil možnost realizovat GUI jako webovou stránku, což bylo
ohodnoceno, že to není tak špatný nápad.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Trošku problém je, že je potřeba obousměrná komunikace - zobrazování, ovládání.
Což se na webu realizuje obvykle různými oklikami. Před nedávnem jsem však 
toto zkoušel na ESP32, kde je dostupná knihovna pro komunikaci pomocí websocketů.
Celkem to fungovalo, takže jsem očekával, že něco podobného najdu i pro 
Raspberry Pi, resp. linux. Určitě nechci na RPi provozovat webserver 
(toho výkonu není na rozdávání).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bohužel jsem nic vhodného nenašel. Tak jsem začal z různých zdrojů zkoumat
komunikaci pomocí socketů, není to až taková věda. Takže z nějakých
příkladů upravit socket server nebyl problém. Horší je, že jsem nenašel
žádný příklad, kde by to bylo řešeno neblokujícím způsobem. Všude používali
blokující volání, tj. nebylo možné posílat a přijímat data současně (předpokládali
pouze komunikaci - dotaz/odpověď). Nakonec jsem to tedy snad nějak zvládl
přepsat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Poslední krok bylo to upravit na websockety, aby to fungovalo s webovým prohlížečem.
O tom jsem neměl vůbec povědomost. Takže jsem opět začal hledat nějakou 
knihovnu, výběr byl velmi omezený. Nakonec jsem vybral
&lt;a href=&#39;https://github.com/Rolice/libwebsocket&#39; class=&#39;external&#39;&gt;libwebsocket&lt;/a&gt;. Než jsem začal zkoumat zdrojáky, tak jsem raději nejprve nastudoval
příslušné RFC (a bylo to dobrá volba, celkem jsem pochopil jak to celé funguje).
S drobnými úpravami se mi podařilo ukázkový příklad přeložit, spustit a kupodivu
se to tvářilo, že to funguje. Opět to ale bylo napsáno s využitím blokujicího
volání funkcí socketu. Takže s přechozí zkušeností jsem to přepsal a vypadalo to,
že je hotovo (pátek po 8. večer).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V sobotu chci poslat na webovou stránku nejen text, ale i obrázek. Ale ouha,
nějak to nejde poslat, resp. zjišťuji, že přijde jen kus dat a následně
socket spadne. Z těch dat přijde jen malý kousek, řádově desítky bytů (u přenosu
textu to stačilo). Tak zkoumám, kde se to &#34;rozbije&#34; a nakonec zjišťuju, že
to je v přípravě rámce. V té knihovně je obrovská bota, parametr udávající délku 
dat se ukládá do proměnné o velikosti &#34;7 bitů&#34;. Výsledkem je, že nejde poslat 
více než 125 B. Ono to kódování packetů je trochu složitější (do 125 B je základní,
pro delší se to kóduje jinak). Takže po úpravě velikosti proměnné na int se to rozbíhá
a přenáším celý obrázek o velikosti cca 20 KB.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Chvíli bojuji s překódováním dat do base64 v javascriptu, aby se to dalo zobrazit
jako obrázek. A opět to vypadá, že to funguje. Ale nejásejme předčasně.
Zkouším trošku větší obrázek, a to pro změnu shodí socket ihned.
Už jdu téměř na jistotu a kontroluju vygenerovanou hlavičku packetu. Druhý
limit pro odlišné kódování je 64 KB a opravdu tentokrát to uloží do hlavičky
jen první byte délky zprávy (ostatní zahodí) = druhá zásadní chyba. Ještě, že jsem si prozíravě
nastudoval to RFC (jinak bych to těžko hledal). Po opravě přenáším i ten 100 KB
obrázek. Že nikdo u doporučované knihovny, která je téměř 10 let na githubu,
nezkusí přenášet více než 125 B dat, jsem opravdu nečekal. Proč si já vždycky
vyberu špatně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dalším testováním odhaluji, že to ještě není ono. Sice socket otevřený při
připojení clienta beží jako neblokující, ale socket serveru je stále blokující.
V principu by to nevadilo, ale pokud to pustím ve zvláštním vláknu, tak to nejde 
shodit (visí to na funkci čekající na připojení klienta). Upravuju i serverovou
stranu na neblokující. Zase to vypadá dobře, ale jen než zkusím opět ten velký obrázek.
Bohužel je teď neblokující i zápis do streamu, a když se to nevejde do bufferu (64 KB),
resp. ještě není vyprázdněný, tak to spadne. Takže ještě upravit volání write, aby zkontrolovalo
kolik dat se předalo k odeslání a postupně to odeslat po částech.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 334px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/rocker/websocket.jpg&#39;&gt;&lt;img src=&#39;/robots/rocker/websocket_t.jpg&#39; alt=&#39;WebSocket funguje!&#39; title=&#39;WebSocket funguje!&#39; class=&#39;border&#39;  width=&#39;328&#39; height=&#39;283&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/rocker/websocket.jpg&#39;&gt;WebSocket funguje!&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Už dlouho jsem se do programování takhle nezakousl. Ale po třech &#34;dnech&#34; to snad 
funguje.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Závěr&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;hotovo (snad, je třeba to řádně otestovat): odesílání dat na webovou stránku (text, obrázek) a příjem dat z webu (pouze text)&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;240515&#34;&gt;&lt;/a&gt;
&lt;h3&gt;15. května 2024 - Jízda na kužel&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Myslel jsem si, že když mám funkční jednotlivé komponenty - komunikace s řídicím mikrokontrolerem, websocket,
webkameru, detekci kužele, tak to jen dám dohromady a mám funčního robota. Bohužel to opět tak
přímočaré nebylo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Snažil jsem se veškeré komponenty psát jako samostatná vlákna, aby se vzájemně
nezdržovaly (hlavně detekce kužele). Jakmile jsem to všechno dal do jednoho programu, tak během startu websocket serveru to padalo do GP fault.
Nakonec jsem to vyřešit tím, že vlákno nevytvářím hned v konstruktoru objektu, ale až po startu vlastního programu.
To ještě musím dostudovat, co tam je za problém.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ale první test jízdy na kužel fungoval na první dobrou, tak jak jsem to od stolu napsal. Jedinou úpravu jsem udělal, snížil jsem
zesílení regulátoru řízení (mělo to snahu kmitat). Teď to jezdí dle mých představ.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;center&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/U44g5-y4KZ4&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;Jízda na kužel - první testy
&lt;/center&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Horší bude až to pustím venku, jsem zvědav jak se s tím ta webkamerka popere.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240724&#34;&gt;&lt;/a&gt;
&lt;h3&gt;24. července 2024 - Jízda po naprogramované dráze&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Konečně jsem se dostal k tomu, že jsem vzal robota ven, abych otestoval jízdu
přes waypointy. Pro navigaci se používá odometrie (tedy jen měření ujeté vzdálenosti)
a směr z kompasu (AHRS). 
První test byl trojúhelník, k prvnímu waypointu to dojelo bez problémů, ale pak
se robot měl otočit o více než 90° a ztuhnul (doma jsem testoval jen čtvetec a tam
byly všechny úhly max. 90°). Tušil jsem, co je za chybu, ale nemohl jsem najít, proč
není úhel zatáčení omezen na 45° (max. co dovoluje kinematika). Nakonec nalezena
blbá chyba (hodnota se sice omezí, ale přesto se počítá s původní).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zhodnocení po složitější trase (5 bodů). Vzdálenost ujetá podle odometrie je nad očekávání dobrá
(chyba v jednotkách procent odpovídá jízdě po nerovnostech). 
S kompasem je to trošku horší, po první jízdě jsem tam přidal korekci na odchylku magnetického severu (a chyby 
montáže IMU), nakonec kompromisní hodnota 7°. Ještě výhledově zkusím překalibrovat
kompas, vzal jsem ho tak, jak je z minulého robota. 
Výsledná ochylka po ujetí celé cca 100 m trasy rychlostí 0,5 m je méně než 2 m, viz. video.&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/2zP923K-shg&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;Jízda po trase - 5 waypointů, cca 100 m
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Korekci z gps jsem nakonec nevyzkoušel (někde tam mám chybu v přepočtu z gps na xy)
a na sluníčku je na to blbě vidět (pozn. už je to opravené).
Ale vzhledem k přesnosti jízdy z odometrie a kompasu by tomu ta obyčená gps (kde to lítá +- 10 m)
asi moc nepomohla.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď to horší, použitá webkamera je venku na sluníčku úplně slepá (přepálený obraz).
Po návratu domů a hledání chyby v přepočtu gps se mi dvakrát opakovaně
stalo, že přestalo komunikovat STM32 s Raspberry. Pomohlo až kompletní vypnutí.
Doufám, že zjistím, co se to děje, do teď s tím nebyl žádný problém.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Článek je převzat z&lt;/i&gt; &lt;a href=&#39;https://robotika.vosrk.cz/&#39; class=&#39;external&#39;&gt;https://robotika.vosrk.cz/&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>ELROB 2024</title>
    <link rel='alternate' href="https://robotika.cz/competitions/elrob/2024/en"/>
    <id>https://robotika.cz/competitions/elrob/2024/en</id>
    <updated>2022-12-22T00:00:00Z</updated>
    <author><name>Martin Dlouhý and Jiří Iša</name></author>
    <summary type='html'>
        What does ELROB look like after almost twenty years of existence? I don&#39;t know, but it will be later
less than two years, so it could be such a milestone for our mobile robots and algorithms
dust and connect in a new one. &lt;b&gt;Blog update:&lt;/b&gt;
29/06/2024 &amp;mdash; &lt;a href=&#39;/competitions/elrob/2024/en#240629&#39;&gt;Pat like a mule&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.elrob.org/elrob-2024&#39; class=&#39;external&#39;&gt;https://www.elrob.org/elrob-2024&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;ELROB 2024 - European Land Robot Trial, 12th European Land Robot Trial, 9th Military ELROB24 - 28 June 2024, Trier, Germany&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;This is the first official announcement for the twelfth European Land Robot Trial 2024! The military ELROB, which takes place for the ninth time now, enables you to get a glance at the latest R&amp;D in the area of unmanned outdoor/off-road ground systems. The scenarios have been developed in closest co-operation with the military users and reflect the up-to-date requirements of the forces. This event offers the fantastic opportunity to mingle with the international experts from the user community, the industry and the R&amp;D sector. ELROB is a strictly non-profit activity! The event is organized and carried out only by non-profit organisations. All participation fees are completely redistributed among the participants to cover travel expenses.&lt;/i&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;jirka says:
&lt;a href=&#39;https://www.elrob.org/files/elrob2022/ELROB2022_Scenario_Mule.pdf&#39; class=&#39;external&#39;&gt;https://www.elrob.org/files/elrob2022/ELROB2022_Scenario_Mule.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Google translate říká:&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;ELROB 2024 – European Land Robot Trial, 12. European Land Robot Trial, 9. Military ELROB24 – 28. června 2024, Trier, Německo
Toto je první oficiální oznámení pro dvanáctý European Land Robot Trial 2024! Vojenský ELROB, který se koná již podeváté, vám umožní nahlédnout do nejnovějšího výzkumu a vývoje v oblasti bezpilotních venkovních/terénních pozemních systémů. Scénáře byly vypracovány v nejužší spolupráci s vojenskými uživateli a odrážejí aktuální požadavky sil. Tato událost nabízí fantastickou příležitost setkat se s mezinárodními odborníky z komunity uživatelů, průmyslu a sektoru výzkumu a vývoje. ELROB je přísně nezisková aktivita! Akci organizují a provádějí pouze neziskové organizace. Veškeré účastnické poplatky jsou zcela přerozděleny mezi účastníky na pokrytí cestovních nákladů.&lt;/i&gt;&lt;/div&gt;

&lt;h2&gt;Content&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/competitions/elrob/2024/en#240311&#39;&gt;240311 - Half an hour (105 days left)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/elrob/2024/en#240403&#39;&gt;240403 - Hali, white (81 days left)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/elrob/2024/en#240610&#39;&gt;240610 - Freezing (fourteen days left)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/elrob/2024/en#240625&#39;&gt;240625 - ELROB Day 1 and 2&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/elrob/2024/en#240626&#39;&gt;240626 - C&amp;#039;est la vie&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/competitions/elrob/2024/en#240629&#39;&gt;240629 - Pat like a mule&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Automatic translation by&lt;/i&gt; &lt;a href=&#39;https://translate.google.com/&#39; class=&#39;external&#39;&gt;Google translate&lt;/a&gt;&lt;/div&gt;
&lt;a id=&#34;221222&#34;&gt;&lt;/a&gt;
&lt;h2&gt;December 22, 2022 - What&#39;s it all about? (550 days left) [MD]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jirka convinced me at yesterday&#39;s regular &#34;call&#34; that it would make sense to participate in the &#34;competition&#34;
&lt;a href=&#39;/competitions/elrob/en&#39;&gt;ELROB&lt;/a&gt;. I was last there in &lt;a href=&#39;/competitions/elrob/2006/en&#39;&gt;2006&lt;/a&gt; as a “journalist”, but already
then I was struck by the difference between the American and European versions of the “competition”: while the American
&lt;a href=&#39;https://www.darpa.mil/&#39; class=&#39;external&#39;&gt;DARPA&lt;/a&gt; will offer you a million dollars or more to win, in the European
you will (hopefully) receive a diploma and still pay a registration fee of 500 EUR &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; but maybe
it&#39;s not like that anymore &amp;mdash; we&#39;ll check in time.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So why even bother with it? ELROB offers many comparison categories, from which Jirkov
liked &lt;a href=&#39;https://www.elrob.org/files/elrob2022/ELROB2022_Scenario_Mule.pdf&#39; class=&#39;external&#39;&gt;mula&lt;/a&gt;.
In short, the robot first follows you to the target position and then you switch it to &#34;autonomous mode&#34;.
The robot itself returns to the start along the same route and then commutes start-goal-start-goal-&amp;hellip; and when
it becomes too boring, so the organizers will add an obstacle for you.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A similar task can also be used in practice and it doesn&#39;t matter if the robot carries a brick (md) or rolls (zw).
You simply create such a temporary &#34;transport channel&#34;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;If we were to leave today, Jirka has &lt;a href=&#39;/robots/freyja/en&#39;&gt;Freyja&lt;/a&gt;, Jakub &lt;a href=&#39;/robots/kloubak/en&#39;&gt;K2 and K3 hats&lt;/a&gt;, “in stock”
and actually all &lt;a href=&#39;/competitions/robotour/en&#39;&gt;Robotour&lt;/a&gt; robots could probably be used. Well, it&#39;s such a milestone, or yet
distant &lt;i&gt;deadline&lt;/i&gt;, so we&#39;ll see&amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231005&#34;&gt;&lt;/a&gt;
&lt;h2&gt;October 5, 2023 - Time to Begin (263 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/freyja/en#231004&#39;&gt;Freyja 2.0&lt;/a&gt; is complete except for minor details. &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;PatAMat&lt;/a&gt; floats. It&#39;s time to write software and drive!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Freyja has a bit of a head start on this because I started writing the software back in the winter when we started talking about the competition. I tested it on Deedee, which is a smaller home robot that I already used as a &#34;technology demonstrator&#34; at SubT. Deedee followed me around the apartment and then back to the start, going back and forth already in the spring. In the meantime, I finished rebuilding Freyja and started &#34;porting&#34; the software. This week Freyja went there and back for the first time. On 34 meters next to the house, she drove 830 meters in 25 minutes. There, back, there, back, there &amp;hellip; simply a thrilling experience.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What did I learn from these experiments?&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;The RealSense tracking camera that Deedee uses at home is a powerful weapon. The robot always knows where it is. Freyja does not have such certainty with such precision outside. It is necessary to continue working on the localization and fusion of data from different sensors. Relative localization to the sample path may be sufficient.&lt;/li&gt;

&lt;li&gt;&#34;Follow human&#34; and &#34;avoid obstacles&#34; are mutually exclusive tasks. Man is also an obstacle! I don&#39;t see a solution here yet. I tried deleting the tracked person from the local map, but on the one hand, the detection of the leading person is not reliable and accurate enough for this at the moment, and on the other hand, the robot will willingly hack into me. Which I don&#39;t like very much. A related problem is when he wipes not only me off the map, but also the wall next to me, and crashes into it.&lt;/li&gt;

&lt;li&gt;When the robot detects obstacles (so far) only with the lidar and the data from the lidar stops, it is bad. Who would have said?&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/freyja_against_the_wall.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/freyja_against_the_wall_t.jpg&#39; alt=&#39;Freyja hits the wall&#39; title=&#39;Freyja hits the wall&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/freyja_against_the_wall.jpg&#39;&gt;Freyja hits the wall&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231018&#34;&gt;&lt;/a&gt;
&lt;h2&gt;October 18, 2023 - Achilles&#39; Heel (250 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The robot is driven for as long as the wheel breaks off. Whoever wants to beat a dog can always find a stick. With these and other words, Mr. Jiří does not announce the arrival of Aunt Kateřina, but a broken robot. You&#39;ve already heard some &#34;I told you so&#34; too.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What&#39;s going on? Freyja is a robotic construct of the &#34;Good Programmer&#34; type. And sometimes you can tell. Mechanical attachment at the point of transmission of power from the engine to the wheels is a challenge. On
&lt;a href=&#39;/robots/kloubak/en&#39;&gt;K2&lt;/a&gt;, cousins ​​(or cousins?) to &lt;a href=&#39;/competitions/subtchallenge/en&#39;&gt;SubT&lt;/a&gt;, hold the wheels in turned iron blocks. Robík (or was it his follower?) has an iron block bored and carefully cut in the same place, with a very similar result. Freyje holding the wheels 3D printing. I can totally hear it, &#34;What the heck?&#34; In his defense: &#34;I know.&#34; Someday I&#39;ll have to learn how to say &#34;I need to turn such and such a bazmek&#34; in the local dialect, &lt;a href=&#39;https://als.wikipedia.org/wiki/Z%C3%BCrichdeutsch&#39; class=&#39;external&#39;&gt;Züritüütsch&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To be honest, after this year&#39;s stress tests where I let Freyja jump over logs, I was expecting it to hold up. It wasn&#39;t like that. When attempting a skid turn almost on the spot - &lt;a href=&#39;/robots/freyja/en&#39;&gt;another &amp;quot;I told you so!&amp;quot;&lt;/a&gt; - it snapped, the wheel gave way and the cable snapped. &#34;Fortunately&#34; always - well, even the previous experience would be - first they loosen the thin cable to the hall sensors, ODrive gets scared and stops.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The team of experts called to the site of the robot accident, ie me, then concluded that the design team, ie me, could have done a better job. The printed part is made of carbon reinforced PLA, which helps, but I left the infill low and the part was more empty than not. In addition, for version 2.0 there was a screw hole left over from version 1.0, which is no longer needed. It burst along her side.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I still don&#39;t master Züritüütsch, so Freyja received a hard copy of version 2.1. Without the extra screw hole, with a larger infill and with a piece of aluminum attached where it gave way. For sure on all four wheels. So Freyja drives again. Hopefully it will last longer now.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231203&#34;&gt;&lt;/a&gt;
&lt;h2&gt;December 3, 2023 - Not like this? (203 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Maybe it won&#39;t look like this at ELROB in June:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/snow-freyja.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/snow-freyja_t.jpg&#39; alt=&#39;Freyja in the snow&#39; title=&#39;Freyja in the snow&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/snow-freyja.jpg&#39;&gt;Freyja in the snow&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Or yes?&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Water in the air &amp;hellip; it can rain.&lt;/li&gt;

&lt;li&gt;Snow on the ground &amp;hellip; not, but mud can pack up quite similarly.&lt;/li&gt;

&lt;li&gt;Visually poor environment &amp;hellip; sandy area, concrete area, mowed area, undefined path, it will probably be all.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;So what did Freyja and I learn?&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Snow in the air does not matter for lidar obstacle detection.&lt;/li&gt;

&lt;li&gt;The mess on the bikes is okay to some extent, but it can be worse with mud.&lt;/li&gt;

&lt;li&gt;Once Freyja sits on her stomach, nothing can save her.&lt;/li&gt;

&lt;li&gt;The robot remained dry.&lt;/li&gt;

&lt;li&gt;Bacha on the joystick falling when carrying the robot into a snowdrift. The search is bad.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;240105&#34;&gt;&lt;/a&gt;
&lt;h2&gt;January 5, 2024 - Non-Invertible Behavior (171 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Q: How do I send Freyje a control signal to turn at 70 degrees per second? Answer: Freyja and turn? Are you serious?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Turning a skid-controlled robot in a controlled manner is not easy. Freyja is no exception. In 2005, we published an article on this topic at a conference about the control of the &lt;a href=&#39;/robots/ester/en&#39;&gt;tracked robot Ester&lt;/a&gt; using neural networks.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The idea was pretty straightforward:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;We will &#34;randomly&#34; ride the joystick for a while.&lt;/li&gt;

&lt;li&gt;From the log we collect data &amp;lt;management, behavior&amp;gt;. Or &#34;if I do X, Y will happen&#34;.&lt;/li&gt;

&lt;li&gt;I will switch the data to &amp;lt;behaviour, management&amp;gt;. Or &#34;in order for Y to happen, I have to do X&#34;.&lt;/li&gt;

&lt;li&gt;I train a neural network modeling behavior -&amp;gt; management.&lt;/li&gt;

&lt;li&gt;Done. When I need to turn, I ask the neural network what control signal to send.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;But it&#39;s not that simple!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Let&#39;s simulate this on a simplified but realistic enough problem. Let our system be linear with inaccuracies / with noise.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;First, we generate sample data:&lt;/div&gt;

&lt;pre&gt;import numpy

N = 1000000
numpy.random.seed(42)
control = numpy.random.normal(scale=6, size=(N,))
behavior = 0.1 * control + numpy.random.normal(scale=2, size=control.shape)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;I.e. to the control signal (&#34;control&#34;) our simulated robot turns (&#34;behavior&#34;) at a speed corresponding to one tenth of the control signal. We can easily imagine that the turn is in radians per second. It happens to be, perhaps to scale, a reasonable simplified model of Freyja&#39;s turning. Freja&#39;s turning also depends on the surface, current forward and rotation speed, and a few other things. Our simplified model does not explicitly include these. They fall under noise / imprecision.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Now let&#39;s &#34;learn&#34; the inverse model (&lt;i&gt;control_model&lt;/i&gt;). We have a linear system, a linear model should do. To be sure, we will also make a forward behavior model (&lt;i&gt;behavior_model&lt;/i&gt;).&lt;/div&gt;

&lt;pre&gt;import scipy

behavior_model = scipy.stats.linregress(control, behavior)
control_model = scipy.stats.linregress(behavior, control)

print(behavior_model)
&gt; LinregressResult(slope=0.100300724814567, intercept=-0.00048361981064025785,
 rvalue=0.28784673170627245, pvalue=0.0, stderr=0.0003337044737230931,
 intercept_stderr=0.0020026058962632327)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;It looks good. The behavior model understood that the yaw rate is a tenth of the control signal and the curve passes through zero.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Who bets &lt;code&gt;control_model.slope == 10&lt;/code&gt;, i.e. the &#34;opposite&#34; of the forward behavior model? I! The idea is simple: If &lt;code&gt;behavior = 0.1 * control&lt;/code&gt;, then &lt;code&gt;control = 10 * behavior&lt;/code&gt;, right?&lt;/div&gt;

&lt;pre&gt;print(control_model)
&gt; LinregressResult(slope=0.8260732024336218, intercept=-0.008403739321622323,
 rvalue=0.28784673170627245, pvalue=0.0, stderr=0.00274837817757052,
 intercept_stderr=0.005747146531042411)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Huh? So according to the forward behavior model if I send a control signal of 10.0 the robot will turn 1 rad/s, but according to the behavior model for the robot to turn 1 rad/s I have to send a control signal of 0.8? But the robot will turn only 0.08 rad/s, i.e. almost not at all! What&#39;s going on?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;First, it&#39;s not a lack of training data. We simulated a lot of them, and according to &lt;code&gt;control_model.stderr&lt;/code&gt;, scipy is confident in its output.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Second, it&#39;s not that we &#34;drive the joystick badly&#34;. The data is simulated, beautifully normally distributed. But it&#39;s getting hot here. The distribution of the data matters. And it also depends on what one of those linear models minimizes.&lt;/div&gt;

&lt;pre&gt;import matplotlib.pyplot as plt

plt.xlabel(&#39;Control&#39;)
plt.ylabel(&#39;Behavior&#39;)

plt.plot(control[:500], behavior[:500], &#39;bo&#39;, label=&#39;Training data&#39;)
plt.plot(control[:1000], control[:1000] * behavior_model.slope + behavior_model.intercept,
 &#39;ro&#39;, label=&#39;Behavior model: control -&gt; behavior&#39;)
plt.plot(behavior[:1000] * control_model.slope + control_model.intercept, behavior[:1000],
 &#39;yo&#39;, label=&#39;Management model: behavior -&gt; control&#39;)
plt.legend()
plt.show()&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/fig1.png&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/fig1_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;269&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;First, the sample data is denser around the zero control signal. On a real robot, this would correspond to the robot driving mostly straight.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Second, the behavior model minimizes the square of the difference between expected and observed behavior. The control model minimizes the square of the difference between the expected control and the actual control. The first of those two differences is measured in the Y-axis, the second in the X-axis! Note that the average value of the control signal that caused a rotation of 1 rad/s is indeed very close to zero. The two linear models have different tasks and there is not the slightest reason for the control model to be the inverse of the behavior model.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The two points together mean that the data is pulling the control model towards zero.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And indeed, if you &#34;play&#34; with the distribution of the sample data - those two &lt;code&gt;numpy.random.normal&lt;/code&gt; calls - you can get quite a wide range of values ​​in &lt;code&gt;control_model.slope&lt;/code&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Even evenly distributing the control signal from a limited interval instead of a normal distribution won&#39;t do it.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;On a real robot, even the inaccuracy in behavior is not symmetrically normally distributed. It is more likely that the robot will fail to turn than that it will unexpectedly begin to spin violently. This also drags the behavior model to zero. But to zero on a different axis than where the control model is drawn. The scissors will open even more.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;If you&#39;re more confused now than you were at the beginning, that&#39;s okay. At least in your own experiments with machine learning, or even with simpler approximations, you will be more cautious than we are about the effect of the distribution of the data and the effect of the error function on the result.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And if this is all clear to you, congratulations. You are eighteen years faster than me. Honestly, I have a nagging feeling that I&#39;m not getting all the implications yet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So what about that? Maybe I&#39;ll leave that for another time. Unless &lt;a href=&#39;https://cs.wikipedia.org/wiki/Velk%C3%A1_Fermatova_v%C4%9Bta&#39; class=&#39;external&#39;&gt;the margin of this page is too small&lt;/a&gt;.&lt;/div&gt;
&lt;details&gt;
 &lt;summary&gt;&lt;b&gt;Comments (1)&lt;/b&gt;&lt;/summary&gt;
&lt;i&gt;1/6/24, 12:44&lt;/i&gt;
Hi Jirko and Martin,
I would like to make a few comments on Non-Invertible Behavior. I apologize in advance.
Neural networks don&#39;t tell me much, but common sense (and a bit of control theory I remember from school)
they tell me that the road does not lead here.
What you are trying to do here is the so-called forward control, i.e. if I have a model of behavior
robot, so by inversion I find the required action to obtain the desired result.
This works, but under the crucial assumption that the system is not influenced by others
significant influences (what you call noise/disruption) - the system is predictable.
Even this problem can be compensated if I am able to somehow &#34;measure&#34; the malfunction (which in this case
in this case it probably won&#39;t work - e.g. to determine the current slippage). It is used for example
in the case of the so-called equiterms of regulation. I measure the temperature outside (fault/noise) and based on the model
behavior in response to a fault I control the heating to achieve the desired temperature inside.
This works if the conditions resemble the state in which the model was built
(if it is e.g. -10 degrees and the sun is shining, it will no longer work so nicely,
but it doesn&#39;t matter much here, because the house has a huge inertia).
The use of a neuron to control rotation feels like I want to drive
heating according to the image from the webcam, which I will stick out of the window (= I will announce according to
picture the outside temperature and based on that, I will heat).
So in my opinion the only chance is to use the proven feedback control which
manages based on measurements of the current state. I.e. I&#39;m still measuring
the current speed of rotation (gyroscope) and I compare it with the request, I process the difference
&#34;some&#34; regulator. This is guaranteed to work though adjusting it
of the controller will not be completely trivial, because malfunctions or their rate of change
they are huge here.
Martin
P.S. I am quite tempted to try it.
&lt;/details&gt;
&lt;hr&gt;
&lt;a id=&#34;240109&#34;&gt;&lt;/a&gt;
&lt;h2&gt;January 9, 2024 - On, off, on, off &amp;hellip; (167 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Something to lighten up today.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Elrob rules require every robot to be equipped with an orange beacon. Available orange beacons are either for construction or for trucks. They hardly fit on a small robot.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;But such hipster super-luminous bicycle flashers sure do!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/elrob/2024/freyja_lights_medium.gif&#39; alt=&#39;Freyja with lights&#39; title=&#39;Freyja with lights&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Freyja with lights&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240311&#34;&gt;&lt;/a&gt;
&lt;h2&gt;March 11, 2024 - Half Hour (105 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Robotics is an activity for the patient. Or for fools. When a robot snaps somewhere after fifteen years of work, it makes me sad.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;But now I was lucky enough to make an interesting observation. I needed to clean up the logs and free up disk space. So I looked at which ELROB logs I wanted to keep and which I didn&#39;t. At the end of July, the robot did not start. At the end of August, he took off, but on the wrong side. Yesterday he rode for 29.5 minutes and covered 1720 meters. And then he parked under the van, well. That&#39;s progress, right?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;29.5 minutes is close enough to the half-hour limit in Elrob for me to feel some satisfaction. The excuse for the van is that there is probably a solution. Such a van bothers the robot with the height of its chassis. Freyja can see below with the lidar and the only visible obstacle is the wheels, somewhere far away. The good news is that there are also four stereo cameras on the Freyje. One of them detected an obstacle. I am &#34;just&#34; ignoring the detection from the cameras for now, because I am not yet satisfied with the small side cameras. They give rise to frequent false alarms. I should probably start using the front and rear camera to protect the vans in the vicinity. Those are OK. They and the side ones after recalibration and with more conservative settings start to look better.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So what moved Freyja to a brighter tomorrow? I got advice from MartinL. PavelS confirmed that he does something similar. I added one feedback loop for yaw control. In the original solution, the high-level control consumed the compass and gyroscope to produce the required forward and rotational speeds. I transformed these into the required wheel speed on the left and right side, which, according to a simple mathematical model (inversion to odometry), should lead to the desired effect. The left and right motor controllers then, with the help of PI control, made sure the wheels turned at the correct speeds. Unfortunately, this leads to the correct speed and several times underestimated turning.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The new solution cancels that model and the decomposition into left and right speed. Adds mid-level PID control with feedback from gyroscope and encoders, or hello If the robot doesn&#39;t turn fast enough, it will take longer. The low level of speed control of individual wheels remains. And it is done. The robot is now much more agile.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I just didn&#39;t let MartinL convince me that I needed a microcontroller for this. The real-time priority of processes on the PC and communication via USB lead to the fact that even from the PC I can manage the new loop sufficiently regularly at 100 Hz without the computer suffocating. It&#39;s enough for me.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;This solves one of the two motivations - the public one - for the recent lengthy discussion on the subject of forward and backward modeling. The second motivation will be a separate conference paper, so I will leave it for another time.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A more nimble robot has discovered a flaw in a new experimental obstacle avoidance. Somehow I can&#39;t remember why I didn&#39;t use an older, working solution. I guess I had a smart idea :-/ I have to have fun with something &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Anyway, I fixed the mistake and that helped a lot too.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Oh, and in high-level trajectory planning, the shoe was like a gate too. There was a reason for that, when I said before Christmas 2022 that a year and a half until ELROB 2024 would be just enough with scratched ears.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And what else? The second reason for Freyja&#39;s trip under the van was that she got lost after that half hour. To my surprise, she knew her position correctly, but she was disoriented by sixty degrees, so she was headed in the wrong direction. I understand that the two on-board GPS compasses don&#39;t always have enough signal, but the CMPS14 combined magnetometer and gyro (BNO080) shouldn&#39;t get lost like that, right? Except he does. Not just me. Greetings PavlaJ! I read on the net that it is very sensitive to its location. So I&#39;m moving it today. Compass. Not Paul.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240403&#34;&gt;&lt;/a&gt;
&lt;h2&gt;April 3, 2024 - Halí, belí (81 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;So I replaced it. Compass. Not Paul.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://www.pololu.com/product/2764&#39; class=&#39;external&#39;&gt;UM7&lt;/a&gt;, another attempt at &#34;I&#39;ll just buy an off-the-shelf solution&#34; went wrong. The sensor holds tilts (roll, pitch) well, but it drifts outrageously in rotation along the vertical axis (yaw). In two days of working with it, I couldn&#39;t figure out if it shows the turn from the north, from the starting position, from the east, or from where actually. The advice on the forums is: &#34;Install the older firmware.&#34; That&#39;s easy to say, but harder to do. Both the &#34;current&#34; manufacturer and the original manufacturer have probably already gone bankrupt. Anyway, their websites are down. When I see that compass, I&#39;m not too surprised.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So the time of total domination (total control) is coming. Or Do it yourself. Like MartinL and PavelS. Since I&#39;m a suspicious creature and there&#39;s not much time left for Elrob, I bought the &lt;a href=&#39;https://www.pololu.com/product/2739&#39; class=&#39;external&#39;&gt;AltIMU-10 v5&lt;/a&gt; - a board with an accelerometer, gyroscope, magnetometer and pressure sensor. The pressure sensor will come later. In SubT he helped a lot with localization stabilization. I added &lt;a href=&#39;https://docs.arduino.cc/hardware/nano-esp32/&#39; class=&#39;external&#39;&gt;Arduino Nano ESP32&lt;/a&gt; to the AltIMU. This means that the first Arduino also arrives on Freyja. You can make a dash. Not that it was necessary. Some kind of USB-I2C converter can be found in the drawer and, as I have already shown with the CMPS14, 200 Hz communication can be handled via it, and the AHRS (attitude and heading reference system) could easily be calculated on a PC. Maybe one day it will happen. Now I just wanted to play around with the ESP32 for educational reasons. Maybe there will be some Micropython. When there is so little time left &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Branch: Arduino Nano ESP32 &lt;a href=&#39;https://www.u-blox.com/en/product/nora-w10-series&#39; class=&#39;external&#39;&gt;includes&lt;/a&gt; dual-core RISC-V processor at 240 MHz, wifi, bluetooth. It runs FreeRTOS. It&#39;s &#34;total overkill&#34; for my purpose. This is what the entire robot should be driving. But what amazed me is that thanks to the Arduino HAL (hardware abstraction layer), all the existing Arduino libraries for working with the accelerometer, gyro, and magnetometer work on it. Some RISC-V, two cores or FreeRTOS don&#39;t matter! Unfortunately, there is a lack of support in &lt;a href=&#39;https://github.com/sudar/Arduino-Makefile&#39; class=&#39;external&#39;&gt;Arduino-Makefile&lt;/a&gt; and Arduino Studio, but I really don&#39;t need it. Maybe even in 2000 there was a better development environment. And she didn&#39;t freeze. Hell. End of turn.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Back to total domination. With great power comes great responsibility. Have you ever calibrated a magnetometer? &#34;You just take it and turn it in all directions.&#34; OK, I can do it. “And you have to do it with the robot too, to decalibrate your own interference. Have you ever twirled a 30-pound object that can&#39;t be properly grasped, with fragile antennae sticking out, in all directions, right? Fortunately, these are extreme values ​​for basic calibration. These can be reached by pointing each of the three axes north and south. Not all directions are needed. In our geographical location, the lines of force run downwards between forty and sixty degrees. You also have to take that into account. So take the robot, tilt it and, because of course I can&#39;t hit the exact north and the exact slope, swing it. A woman walked by and asked if I wanted to sing a lullaby to Freyja. Nevermind.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;That was the calibration on the balcony, which I didn&#39;t really trust in the end. Who knows where there is something iron around and where some electricity flows. &#34;You definitely have to go outside!&#34; Until MartinL. So to the yard. And since I don&#39;t want to sing, it&#39;s time to get creative:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/harness.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/harness_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;With a suspended robot, it&#39;s easier to move!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;With the magnetometer calibrated, it&#39;s time for software. It is said that &lt;a href=&#39;https://courses.cs.washington.edu/courses/cse466/14au/labs/l4/madgwick_internal_report.pdf&#39; class=&#39;external&#39;&gt;Madgwick Filter (pdf)&lt;/a&gt; offers an appropriate ratio between the quality of behavior and computational complexity. PavelS uses it. MartinL is happy with the Mahony filter. &lt;a href=&#39;https://github.com/bjohnsonfl/Madgwick_Filter&#39; class=&#39;external&#39;&gt;Madgwickpro Arduino&lt;/a&gt; exists, screw it! Did someone say something about great responsibility? But hey! It&#39;s acting &#34;somewhat weird&#34;. So I reset the gain (beta parameter), the only thing that can be reset. Well, that&#39;s not possible. Not in that library. There is a beta &#34;private&#34; parameter. Why?? And while I&#39;m digging into it, why does it initialize to the zero direction and not from the first measurement? This is how the first estimates are completely stupid! Big responsibility, own code fork. Like everyone else. These are exactly the things I didn&#39;t want to deal with!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Custom fork, initialization, reset gain, it&#39;s still weird. Many. The various copies of the Madgwick filter circulating around the world &lt;a href=&#39;https://github.com/RideBeeline/madgwick-investigation/blob/main/README.md&#39; class=&#39;external&#39;&gt;contain various bugs&lt;/a&gt;. E.g. In my [[https://github.com/Ridebeeline/madgwick-investigation/blob/a2b129964542EE4FA4D3787DA608991F25E746C6/MADFILTERS/CPP/MADGWICK_ORIGINALS/MADGWICHARKS_SQRT KAHRS_SQ_FIX.CPP#L108-L109 | missing in two places *2]. In a copy of MartinL, who uses Mahony anyway, too. It&#39;s not pretty code to read and neither is the article, but yes, the *2 really belongs there.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Add *2, readjust the magnetometer bias one more time and it starts to make sense. Except that the environment is always working against it. That &#34;yard&#34; is the roof of an underground garage. Reinforced concrete, some electrical lines here and there. Definitely out! Yeah. In one place, the compass points north in the direction where the sun rises. That&#39;s probably not right, is it? The new compass on the robot even points south at that point.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Interestingly, the copied filters do not seem to try to ignore the obviously invalid measurements. Oh well, it&#39;s my responsibility now. One interesting option is to monitor the strength of the magnetic field. With an external disturbance, there is a chance that it will add to or subtract from the Earth&#39;s magnetic field. When an obviously invalid value like this comes in, Madgwick can only hold heading from the gyro for a while.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;When I draw a histogram of the magnetic field strength while driving around the house, I see a distinct spike of correct readings, distinct bad too strong and too weak readings, and lots of &#34;sort of in between&#34; readings.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 544px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/magmag.png&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/magmag_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;538&#39; height=&#39;270&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There is no obvious range of correct values. But it can be done with a little hysteresis. When the power exceeds 0.46, it is definitely a biased measurement. And from that moment I don&#39;t trust the magnetometer until it drops back below 0.42. Similarly on the low end side. With this method, the IMU ignores the magnetometer while driving back and forth in the same places repeatedly. Among other things, in the place where the compass is completely off. That looks promising. I have yet to test how Madgwick behaves with just the gyro. I hope there are no more errors.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Another method of detecting an invalid measurement is by the direction of the magnetic field. It should point its forty to sixty, or however many, degrees downwards. I can tell the direction down from &amp;hellip; the world hold on &amp;hellip; I have an IMU! I don&#39;t do this yet, and I quietly hope I don&#39;t have to.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I&#39;m a bit concerned that these carefully selected cut-off values ​​and expected magnetic field gradients apply here, but not quite at the other end of Germany, where ELROB will be. Perhaps it&#39;s close enough that the magnetic field doesn&#39;t change that much.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I&#39;m starting to think that there is no such thing as a ready solution because it can&#39;t :-/&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240610&#34;&gt;&lt;/a&gt;
&lt;h2&gt;June 9, 2024 - Freezing (14 days left) [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;With two weeks left in the competition, it&#39;s time to stop smashing the robot. The last month has been tough. Both humans and robots crumble under pressure. There was also a leak of magic brushes, without which the electronics no longer work. The next two weeks and the competition should not be like this. So! End of hardware redesign. A &#34;hardware freeze&#34; occurs. A &#34;software freeze&#34; also occurs. End of fundamental changes in the program - no new strategies, no new program modules, no new features. From now on &#34;only&#34; repairs and tuning of already existing parts.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What else got into the robot before the slightly shifted deadline?&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/unitree-lidar-l1/en&#39;&gt;New lidars&lt;/a&gt; for slope detection and corresponding software.&lt;/li&gt;

&lt;li&gt;Sending messages via XBee on &lt;a href=&#39;/articles/ardusimple-rtk3b/en&#39;&gt;GPS modules&lt;/a&gt; to the base station (&#34;base station&#34;) and from there saving the trajectory on the WebDav server of the organizers. This will need to be tested on site as it seems WebDav has different versions and flavors and their server and my client may not understand each other.&lt;/li&gt;

&lt;li&gt;Reporting the status of the robot via the on-board http server. Together with the pre-existing startup and shutdown, this means I can start, check and shut down the program from the browser on my mobile phone. Anyone who has ever stood with a laptop in the rain will appreciate it.&lt;/li&gt;

&lt;li&gt;Not avoiding tall grass. Who would have thought that &lt;b&gt;not&lt;/b&gt; detecting an obstacle could be a difficult thing? In the videos from Elrob from last year, I looked out for tall grass, and finally the organizers also warned us that they deliberately leave waist-high grass there in several places. Freyja is, for this task, a small robot and she hides completely in such grass. In addition, so that the small robots do not have to follow the path ridden by the big robots, the small robots will go first. So the grass won&#39;t even be mowed. Freyja is possibly the smallest robot competing as a mule this year. Let&#39;s guess who will go first.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Which way is &lt;b&gt;not&lt;/b&gt; an obstacle?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 581px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/all-labeled.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/all-labeled_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;575&#39; height=&#39;314&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240625&#34;&gt;&lt;/a&gt;
&lt;h2&gt;June 25, 2024 - ELROB Day 1 and 2 [MD, photo SP]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;It goes by very quickly and after a whole day of testing at a military base near Trier (not far from Luxembourg), one is happy to take a shower and go to sleep, and the “report” falters.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To begin with, I am attaching at least a few photos from Standa from the first day:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/old-autonomous-trucks.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/old-autonomous-trucks_t.jpg&#39; alt=&#39;older autonomous trucks&#39; title=&#39;older autonomous trucks&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/old-autonomous-trucks.jpg&#39;&gt;older autonomous trucks&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/big-toy.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/big-toy_t.jpg&#39; alt=&#39;big toys&#39; title=&#39;big toys&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/big-toy.jpg&#39;&gt;big toys&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/mule-competitor.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/mule-competitor_t.jpg&#39; alt=&#39;Mule competition&#39; title=&#39;Mule competition&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/mule-competitor.jpg&#39;&gt;Mule competition&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/themis.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/themis_t.jpg&#39; alt=&#39;THeMIS - other competition&#39; title=&#39;THeMIS - other competition&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/themis.jpg&#39;&gt;THeMIS - other competition&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/pat-and-freyja.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/pat-and-freyja_t.jpg&#39; alt=&#39;Pat and Freyja&#39; title=&#39;Pat and Freyja&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/pat-and-freyja.jpg&#39;&gt;Pat and Freyja&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/shadow.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/shadow_t.jpg&#39; alt=&#39;the most valuable here is the shadow!&#39; title=&#39;the most valuable here is the shadow!&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/shadow.jpg&#39;&gt;the most valuable here is the shadow!&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/other-monster.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/other-monster_t.jpg&#39; alt=&#39;another monster&#39; title=&#39;another monster&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/other-monster.jpg&#39;&gt;another monster&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Today, Jirka tested in tall grass (crazy), but Freyja gave it until she hummed into some invisible hole. Pat didn&#39;t even flinch even though Standa weighed him down. That was clear
a long time ago, Pat actually has no backup, both on the SW and HW side. The competition is tomorrow, so we&#39;ll see &amp;mdash; hold us, or Thumbs up to Jirko/Freyje! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240626&#34;&gt;&lt;/a&gt;
&lt;h2&gt;June 26, 2024 - C&#39;est la vie [JI]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Before the competition, I quite publicly announced, following the example of the Japanese space agency, three levels of goals:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Minimum: Drive off the start.&lt;/li&gt;

&lt;li&gt;To satisfaction: Lead the robot from the starting point to the destination point.&lt;/li&gt;

&lt;li&gt;Excellent: Autonomously then return to the start.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Any further driving to the destination again and possibly back would be a bonus.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;We met the minimum goal.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yesterday&#39;s testing, which Martin commented with the word &#34;crazy&#34;, was not only about tall grass, but also about a meadow dug up by wild pigs. We heard from the organizers that this is what awaits us at the competition area. Freyja somehow managed to dig herself out of the holes, but she wasn&#39;t very good at it. So I was faced with a difficult choice: Do something about it or let it go? The competition surface, which we did not have access to, I expected even worse.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So I shifted the maximum power of the engine. The result was &amp;hellip; well, it was a tough choice between going and not going. With the increased power, the controllers hit the current limit every moment during the competition ride, the software reset them, which means a nice twenty seconds of inactivity with ODRive, and the robot drove a bit again.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;After jumping for a while, the robot entered a narrow passage where, prepared to pass through the meter-high grass, it did not consider the grass on the sides as an obstacle. Instead of the path, Freyja took it through the grass. She made good progress for a while, but eventually the grass got wrapped around her wheels in such a way that I couldn&#39;t get it off, and the regulators gave up completely. At that moment, I was convinced that I was done with the robot. And Martin, that he has an afternoon ride and Pat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Much to our surprise, Freyja woke up after a full reboot. We knew about Pat that he doesn&#39;t quite give off-road. So a second chance for Freyja.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Back to the previous settings of the controllers, a slightly more conservative setting of Follow Me, so that it does not meander so much to the sides when the route is almost straight, and the organizers are already looking for us, saying that we should go an hour earlier against the schedule and that we should be there in four minutes. Quickly turn off everything, replace the batteries with charged ones, quickly move to the start, turn on the robot &amp;hellip; and nothing.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Sometime during that switching off and on, one of the two controllers decided that they really had had enough for today and were calling it quits. Finding out exactly what happened will be a job for forensic detectives.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To illustrate the weather, I&#39;ll add that my 3D-printed holder for the GPS antenna stand on the base station (PLA) melted within about fifteen minutes of the first lap. The laptop was so hot in preparation for the second ride that you couldn&#39;t touch it. If some electronics decided to quit, I&#39;m not surprised.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Now we have to think about what I learned from it, what follows from it and what to do next. We are probably hitting the limits of our abilities, possibilities and motivation somewhere here.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/freyja-in-grass.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/freyja-in-grass_t.jpg&#39; alt=&#39;Freyja in the grass&#39; title=&#39;Freyja in the grass&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/freyja-in-grass.jpg&#39;&gt;Freyja in the grass&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240629&#34;&gt;&lt;/a&gt;
&lt;h2&gt;June 29, 2024 - Pat as a Mule [MD]&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;You look like Death!&lt;/i&gt; &amp;mdash; were my wife&#39;s first words when I finally arrived at the cottage on Friday night. And probably that was/is apt. I was sick from the moment we
they arrived at their destination (a village not far from Trier/Trier) until the last rest stop on the way to the house in front of Rozvadov. I don&#39;t know if it was some kind of &#34;geofence&#34; &amp;mdash; how sick I am still and
as a &lt;i&gt;preview age&lt;/i&gt; it was/is definitely a warning. So a motivational photo from the Trier church&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/smrtka.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/smrtka_t.jpg&#39; alt=&#39;Death in Trier Church&#39; title=&#39;Death in Trier Church&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;427&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/smrtka.jpg&#39;&gt;Death in Trier Church&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;That&#39;s one take on it that I didn&#39;t really enjoy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The second was a bit more fun, meeting and discussing with other teams. Teams from Canada or Finland also flew in, so the Czech Republic (and Switzerland) is just around the corner. The guy next door was good:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/robot-wars-lover.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/robot-wars-lover_t.jpg&#39; alt=&#39;SWX-Robotics&#39; title=&#39;SWX-Robotics&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;569&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/robot-wars-lover.jpg&#39;&gt;SWX-Robotics&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; or he was the first person I ever met who actively participated in &lt;b&gt;RobotWars&lt;/b&gt;. And he said, as he was also in India, that they have a category of heavy robots there &amp;hellip; and now that
I&#39;m arguing with &lt;a href=&#39;https://www.perplexity.ai/search/what-is-the-weight-limit-for-r-5a9ScoonTWiMi2rtKqsOYg&#39; class=&#39;external&#39;&gt;perplexity.ai&lt;/a&gt;, so it looks like the limit was 60kg, but there doesn&#39;t his weight of 115 kg fit again?
Maybe other units? Otherwise, he had the robot&#39;s wheels shot through to prove that it didn&#39;t matter. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Just a different world &amp;mdash; how did he look at us in a straw hat? (he wore a military uniform throughout the event
and occasionally put on a helmet and set off with the robot &#34;hunting&#34; at a leisurely 5 m/s (rough estimate).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Otherwise, it was mainly Jirka who saw it as a &#34;social event&#34;, so maybe he will throw in some more impressions in time.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And thirdly, how did Pat the robot see it? Finally a bigger trip, a lot of spectators, a lot of concrete, where you can drive to the max, :) Probably one Polish team liked it the most, that it is prettier than
green competition. I did most of the tuning on the spot, so it was quite moving and people like that too. He didn&#39;t succeed so much in the task itself &amp;mdash; I actually wrote that he needed to load,
but the weight of the man was already too much. On the way to the &#34;Scenario Mule&#34; playground, we picked up some broken concrete, and Standa put it together into a beautifully saddled mule. Even positively
was also evaluated by several higher nobles. But there was no time for the test itself, because 2 teams canceled the second attempt in the afternoon&amp;hellip; they just somehow forgot to tell us. :-( So we were the last ones
the team, the judges (typically older people) were “cooking” under the shelter, so the original promise that we could deploy both robots in the given time window fell through. I take it that we were all over them
stolen and they enjoyed more when they could teleoperate various &#34;tanks&#34;. They just didn&#39;t consider super-autonomy that much.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;ELROB is&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;not organized as a competition but as a trial,&lt;/li&gt;

&lt;li&gt;a strictly non-profit activity and&lt;/li&gt;

&lt;li&gt;strictly R&amp;amp;D oriented.
(source &lt;a href=&#39;https://elrob.org/&#39; class=&#39;external&#39;&gt;elrob.org&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/pat-na-startu.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/pat-na-startu_t.jpg&#39; alt=&#39;Pat at the start (photo Jirka)&#39; title=&#39;Pat at the start (photo Jirka)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/pat-na-startu.jpg&#39;&gt;Pat at the start (photo Jirka)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/pat-v-akci.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/pat-v-akci_t.jpg&#39; alt=&#39;Pat in action (photo by Stand)&#39; title=&#39;Pat in action (photo by Stand)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/pat-v-akci.jpg&#39;&gt;Pat in action (photo by Stand)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/odbocka-do-vysoke-travy.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/odbocka-do-vysoke-travy_t.jpg&#39; alt=&#39;Turn-off into tall grass (photo by Stand)&#39; title=&#39;Turn-off into tall grass (photo by Stand)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/odbocka-do-vysoke-travy.jpg&#39;&gt;Turn-off into tall grass (photo by Stand)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/elrob/2024/konkurence-na-koni.jpg&#39;&gt;&lt;img src=&#39;/competitions/elrob/2024/konkurence-na-koni_t.jpg&#39; alt=&#39;Competition on horseback (photo by Stand)&#39; title=&#39;Competition on horseback (photo by Stand)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/elrob/2024/konkurence-na-koni.jpg&#39;&gt;Competition on horseback (photo by Stand)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And that&#39;s about all I can sweat out right now. I can still add a link to a video of how the whole ride looked from the robot&#39;s point of view: &lt;a href=&#39;https://youtu.be/7JkO5qXuSZ0&#39; class=&#39;external&#39;&gt;https://youtu.be/7JkO5qXuSZ0&lt;/a&gt;
(it&#39;s a &#34;raw&#34; recording, so long boring)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. check out Standy&#39;s video from the opening section&amp;mdash;it&#39;s a bit snappier and shorter &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;805&#34; height=&#34;453&#34; src=&#34;https://www.youtube.com/embed/1zBAZVKO0kE&#34; title=&#34;Pat as mule on ELROB 2024&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;
&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;If you have any additional information or comments
&lt;a href=&#39;/competitions/elrob/2024/en#email&#39;&gt;email us&lt;/a&gt;.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Infento</title>
    <link rel='alternate' href="https://robotika.cz/articles/infento/en"/>
    <id>https://robotika.cz/articles/infento/en</id>
    <updated>2021-12-12T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Infento je stavebnice snů, minimálně podle marketingu. Lze z ni postavit nejrůznější vozítka pro děti,
a v co bych doufal, i středně velké mobilní roboty. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Prostě jsem neodolal a před vánoci 2021 to
pořídil jako „firemní dárek”. Jestli to byl dobrý nebo špatný nápad se asi ukáže poměrně brzy
(doufám, že z toho nebudu natolik otrávený, že bych se o info nechtěl ani podělit).
&lt;b&gt;Blog update:&lt;/b&gt; 13/6/2024 &amp;mdash; &lt;a href=&#39;/articles/infento/en#240613&#39;&gt;Bubnovka&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h2&gt;Představení stavebnice&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.infento.com/&#39; class=&#39;external&#39;&gt;www.infento.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Pro úvod bych zatím použil volný překlad &lt;a href=&#39;https://www.infento.com/about-us/&#39; class=&#39;external&#39;&gt;popisu od výrobce&lt;/a&gt;:
&lt;i&gt;Vzpomínáte na hračky z Lega nebo Merkuru? Nuže, toto je o trošku větší. Infento je první na světě, které vyrábí stavebnice pro rodiny, jenž umožnují konstrukci vozítek pro děti. Potřebujete pouze stavebnice a šestihranný klič
k sestavení nekonečného&lt;/i&gt; (to bych asi trošku rozporoval) &lt;i&gt;množství typu vozítek, které můžete používat celé dětství...&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Původní text: &lt;i&gt;Remember the iconic toys Lego and Meccano? Well, this is bigger than that. Infento is the first in the world to develop a kit for families that lets them build real constructible rides together. You only need one kit and one hex key to create unlimited rides for their whole childhood. From toddler to teenager. From a walker, scooter, tricycle, bicycle, go-kart, skibock to a sledge and more. Infento’s modular parts allow endless possibilities.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co jsem to vlastně objednal? No naivně si představuji, že je to &lt;a href=&#39;https://www.infento.com/product/legend-kit/&#39; class=&#39;external&#39;&gt;Legend Kit&lt;/a&gt; s nějakýma extra drobnostna
(nechci říci blbostma, ale nějak se mi to slovo vnucuje) &amp;mdash; svítící kola a lyžiny zdarma, no neberte to.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/riders.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/riders_t.jpg&#39; alt=&#39;Vozítka&#39; title=&#39;Vozítka&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;410&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/riders.jpg&#39;&gt;Vozítka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/box.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/box_t.jpg&#39; alt=&#39;Krabice&#39; title=&#39;Krabice&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;416&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/box.jpg&#39;&gt;Krabice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/infento/en#211212&#39;&gt;211212 - Balíček dorazil&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/infento/en#211230&#39;&gt;211230 - První výtvor - Ice Breaker&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/infento/en#220205&#39;&gt;220205 - Sněžný test - FAIL&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/infento/en#220905&#39;&gt;220905 - Elektrická tříkolka&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/infento/en#240120&#39;&gt;240120 - Inverzní vánoce&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/infento/en#240128&#39;&gt;240128 - Multi Angle Joint Set&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/infento/en#240613&#39;&gt;240613 - Bubnovka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;
&lt;a id=&#34;211212&#34;&gt;&lt;/a&gt;
&lt;h2&gt;12. prosinec 2021 &amp;mdash; Balíček dorazil&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Balíček z Amsterdamu dorazil v pátek 10. prosince 2021. Objednával (resp. platil) jsem to v pondělí, takže první část slibu
&lt;i&gt;Fast delivery: 2-5 working days&lt;/i&gt; opravdu splnili. Doma se to úplně s nadšením nesetkalo (krabice zabírají skoro půlku chodby),
ale to se dalo čekat. Na vánoce se to odveze pryč a doma bude klid &amp;hellip; možná.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/delivered-boxes.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/delivered-boxes_t.jpg&#39; alt=&#39;Vánoční nadílka&#39; title=&#39;Vánoční nadílka&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/delivered-boxes.jpg&#39;&gt;Vánoční nadílka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co mne zatím „trošku” mate je, že přestože ty tři krabice byly těžké jak prase (kamarádi z ČZU by jistě oponovali, že prase
může být daleko těžší) &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; tak to bylo 55.73 Kg ve třech krabicích a uplně to nesedí k obrázku výše. Nálepky také nesedí
a osobní váhu tu nemám, tak to asi holt bude překvapení!&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;211230&#34;&gt;&lt;/a&gt;
&lt;h2&gt;30. prosinec 2021 &amp;mdash; První výtvor - Ice Breaker&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsme to už nevydrželi a krabice rozbalili (oficiálně jsme měli počkat až do Silvestra, na kdy se odsunuly společné
Vánoce). V těch třech bednách, o celkové váze asi 50kg, je šest „malých” (cca 40x40cm) krabic a čtyři „velké” (cca 40x70cm).
Vše je ve svítivé červené, což jsem si z obrázků na webu automaticky spojil s plechem &amp;mdash; nevím proč. Jsou normálně papírové.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V &lt;i&gt;legend&lt;/i&gt; sadě jsou 4 velká kola (průměr 33cm), které mi připomínají &lt;a href=&#39;/robots/kloubak/en&#39;&gt;Kloubáka&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Ty jsou pořádné,
s duší a pláštěm. Pak tam jsou 4 prostřední plastové a 4+2 malé, jako na inline brusle. A ano, děti nejvíce zaujaly LEDkové
kola (co jsem je komentoval „taková blbost”) &amp;hellip; prostě děti to vidí jinak. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Poměrně rychle jsem propadl malomyslnosti &amp;mdash; jak začít?! Možností je opravdu hodně, tak jsme koukali na různé obrázky
a vypadalo to, že malá tříkolka by byl dobrý úvod. Ale přes noc napadlo 5cm nového sněhu a tak padla volba na „něco
s lyžema”, což byl druhý přídavek k vanočnímu balení. Volba padla na
&lt;a href=&#39;https://d2qy34mdia9x7s.cloudfront.net/wp-content/uploads/2017/06/InfentoICEBREAKER_G2_EN-v1.1.pdf&#39; class=&#39;external&#39;&gt;Ice Breaker&lt;/a&gt; (PDF, 60 stran).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/icebreaker.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/icebreaker_t.jpg&#39; alt=&#39;Ice Breaker PDFko&#39; title=&#39;Ice Breaker PDFko&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/icebreaker.jpg&#39;&gt;Ice Breaker PDFko&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vypadá to, že každé konstrukci je ke stažení PDFko &amp;mdash; no došlo na varování Jirky, že sestavit cokoliv je na několik
hodin a pro úplně malé děti to není. Prostě tak dlouho tu pozornost neudrží. A navíc první stavba znamená i
mnoho omylů a nejasností &amp;hellip; ale &lt;i&gt;dopadlo to výborně, jsem jen trošku v šoku.&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Mimochodem na sestavovaní se hodí
dost velký volný prostor. Po 21h byl skůtr na světě. Jen venku v mezičase začalo pršet a sníh slezl, takže možná
před prvním testem ještě lyže nahradíme za kola.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. asi jedinou výtku, kterou bych zatím měl, je chybějící malý šestihranný klíč na přidělání úchytu na řidítka,
ale stejně tak je možné, že jsem ho zatím přehledl.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 motivace, že až to dostavíte, tak se na tom projedete, je opravdu silná &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/ski-and-wheel.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/ski-and-wheel_t.jpg&#39; alt=&#39;Lyže a kolo&#39; title=&#39;Lyže a kolo&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/ski-and-wheel.jpg&#39;&gt;Lyže a kolo&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/motor.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/motor_t.jpg&#39; alt=&#39;Elektrický motor&#39; title=&#39;Elektrický motor&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/motor.jpg&#39;&gt;Elektrický motor&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/room-with-boxes.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/room-with-boxes_t.jpg&#39; alt=&#39;Pokoj s krabicema&#39; title=&#39;Pokoj s krabicema&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/room-with-boxes.jpg&#39;&gt;Pokoj s krabicema&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220205&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. únor 2022 &amp;mdash; Sněžný test - FAIL&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Po dlouhé době konečně nějaký pokus a report. Dnes jsme ověřili, ze na &lt;i&gt;Ice Breaker&lt;/i&gt; sníh není dostačující podmínka. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
Pár pozorování:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;konstrukce je pro děti celkem těžká (na nošení určitě)&lt;/li&gt;

&lt;li&gt;asi jsem opravdu měl zakapávat šroubky barvou, protože přestože jsem je včera všechny sám dotáhl, tak se řidítka trošku uvolnila
  (ano, může to být skleróza, že jsem na nějaké šroubky zapomněl &amp;hellip; a s „nedosažitelnými” jsem rozhodně nic nedělal)&lt;/li&gt;

&lt;li&gt;chce to doplnit úchyt na tahání (psí vodítko OK, ale je třeba, aby přední lyže následovala „tažné zvíře”)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Jinak co jsme výtvor &lt;i&gt;dorvali&lt;/i&gt; na kopec, tak po nasednutí se o 10cm probořil skrz vrchní zmrzlou krustu a nikam se mu jet
nechtělo. Menšímu dítěti se podařil „drobný kotrmelec” přes řidítka, když předek více zapadl. No bude to chtít nějaký &lt;i&gt;upgrade&lt;/i&gt;
nebo nejprve nástroj na udusání kopce/bobové dráhy &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220905&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. září 2022 &amp;mdash; Elektrická tříkolka&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Koukám, jak se ta „věc” jmenovala a &lt;i&gt;icebreaker&lt;/i&gt; vypadá po sedmi měsících úplně stejně:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/icebreaker-in-summer.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/icebreaker-in-summer_t.jpg&#39; alt=&#39;Icebreaker v létě&#39; title=&#39;Icebreaker v létě&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/icebreaker-in-summer.jpg&#39;&gt;Icebreaker v létě&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Není divu, že to na půdě pomalu „překáží” a &lt;i&gt;měl bych si to odvézt pryč&lt;/i&gt; &amp;hellip; ale příšlo mi to škoda, včera byl krásný
slunečný den a tak jsem vytahal všechny ty krabice (ono už to je první energetická překážka, kterou člověk musí překonat)
ven na trávu a &#34;hrál si&#34;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nahradit zadní lyže za kola byla otázka cca jedné minuty &amp;mdash; chtěl jsem napsat pár sekund, ale ta minuta to asi byla. Osa
je kompatibilní šestihran, takže stačilo povolit dorazy, vyndat lyžiny na ložisku a zandat velká kola, také s ložisky.
Až později jsem zjistil, že si nejsou všechna 4 kola rovna &amp;mdash; jedno je napevno, míněno pravděpodobně jako pohonné.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/semi-breaker.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/semi-breaker_t.jpg&#39; alt=&#39;Mutant&#39; title=&#39;Mutant&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/semi-breaker.jpg&#39;&gt;Mutant&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co ale s předkem? Nabízely se nášlapy na rychlý test, což nevypadalo úplně špatně, ale funkční to nebylo &amp;mdash; kam dát nohy a
limit na zatáčení:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/fake-front.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/fake-front_t.jpg&#39; alt=&#39;Falešný předek&#39; title=&#39;Falešný předek&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/fake-front.jpg&#39;&gt;Falešný předek&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Situaci trošku řešila delší osa umístěná místo přední lyžiny:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/fixed-front-mount.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/fixed-front-mount_t.jpg&#39; alt=&#39;Pevný úchyt předních kol&#39; title=&#39;Pevný úchyt předních kol&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/fixed-front-mount.jpg&#39;&gt;Pevný úchyt předních kol&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Moc bytelně to ale nevypadalo. Navíc hned začaly vyskakovat body, jako co se bude dít v terénu, v zatáčce,
každé kolo by se mělo točit jinou rychlostí (ano, toto byl okamžik, kdy jsem zjistil, že jen jedno kolo je jiné, ale zde
se hlavní osa protáčela). Jako popojet se na tom dalo, ale „nic moc”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pak šel okolo OndraP a říká, že je to divné a jak to bude fungovat s těma náklonama? &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Tj. tato varianta měla hodně krátkou
dobu života.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kyvná náprava byla super, ale že by to bylo nějak extra stabilní se opravdu říci nedalo. Navíc jízda po trávě šla ztuha a
„chtělo by to motor”. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Ale to už jsem nebyl sám a hráli jsme si dva.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/flexible-front.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/flexible-front_t.jpg&#39; alt=&#39;Kyvná přední náprava&#39; title=&#39;Kyvná přední náprava&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/flexible-front.jpg&#39;&gt;Kyvná přední náprava&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ondra předělal předek na jedno kolo, po pravdě chtěl zkusit spíše elektrokoloběžku, a já experimentoval s pohonem. Ve stavebnici
jsou 3 ozubené řemeny ruzných délek, ale ani jedna moc nepasovala, tak Ondra ještě celou konstrukci o pár cm prodloužil výměnou
zadních dílů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/electric-tricycle.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/electric-tricycle_t.jpg&#39; alt=&#39;Elektrická trojkolka&#39; title=&#39;Elektrická trojkolka&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/electric-tricycle.jpg&#39;&gt;Elektrická trojkolka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Mno, evidentně jsem přestal pravidelně dokumentovat změny, protože první fotka má „časovou známku” 11:18 a posledni 17:59 &amp;hellip;
skoro jakoby poslední „refactoring” trval 4 hodiny &amp;hellip; hmm, no byl tam ještě oběd, káva, &amp;hellip; nějaké testy. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/eli-etri.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/eli-etri_t.jpg&#39; alt=&#39;EliEtri&#39; title=&#39;EliEtri&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/eli-etri.jpg&#39;&gt;EliEtri&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A ještě pár „detailů”:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;nejsou tam brzdy&lt;/li&gt;

&lt;li&gt;není připojen chránič řemenu&lt;/li&gt;

&lt;li&gt;převod je do pomala&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;To první mne asi trápilo nejméně - ono to celkem brutálně &lt;i&gt;brzdí motorem&lt;/i&gt;. Pravda, že jsem měl dnes v noci sen, jak to proletí
výlohou, ale to mi spíše připomínalo robota ze SubT, možná v rámci ročního výročí &lt;a href=&#39;/competitions/subtchallenge/finals/en&#39;&gt;finále&lt;/a&gt;. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kryt mi příšel na první pokusy trošku zbytečný, ale jak Eli měla dlouhé šaty, tak bych tomu skoro dal „vysokou prioritu do další
iterace”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No a převod do pomala jsem primárně dělal kvůli sobě &amp;mdash; a ano i po té trávě to táhlo skvěle &amp;hellip; ale děti chtějí rychlost, nebezpečí,
&amp;hellip; no comment &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; &amp;hellip; možná bych to řešil s tou brzdou a jestli tam Infento nemá i spojku?? Za mne ať to raději jezdí nudně pomalu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, čas přepnout na jinou „zábavu” &amp;mdash; ve zkratce pro dospělé je ta stavebnice fajn. Chce ale hodně prostoru na vybalení
a ještě více času &amp;hellip; jo a ty děti bude třeba do toho nějak znova zapojit &amp;hellip; jednou.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240120&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. ledna 2024 &amp;mdash; Inverzní vánoce&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Asi jsem &lt;i&gt;zlej strejda&lt;/i&gt; &amp;mdash; letos (vlastně teď už je to loni) o vánocích jsem dětem stavebnici &#34;zabavil&#34;, protože se na ní
pomalu na půdě prášilo a já zjistil, že má nová hračka (&lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;robot Pat&lt;/a&gt;) má na horní straně dvě „kolejnice”,
které vypadají úplně stejně jako &lt;a href=&#39;https://www.infento.com/parts/profiles/&#39; class=&#39;external&#39;&gt;Infento profily&lt;/a&gt;,
a že bych nějaké pokusné &lt;i&gt;nadstavby&lt;/i&gt; mohl zkusit právě ze stavebnice&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; se čtyřma velkýma krabicema se tu už skoro nehnu a nostalgicky vzpomínám na první pokusy, kdy vše bylo rozbalené na
nově dokončeném (tehdy ještě úplně prázdném) podkroví. Skoro mi přišlo, že bude rychlejší hledat na internetu, co všechno za díly
mám k dispozici (což není úplně dobré znamení), ale jako malá inventura to jde:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.infento.com/parts/&#39; class=&#39;external&#39;&gt;https://www.infento.com/parts/&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.infento.com/parts/bolts/&#39; class=&#39;external&#39;&gt;https://www.infento.com/parts/bolts/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Po pravdě jsem hledal &lt;i&gt;Infento fasteners measurement sheet&lt;/i&gt;, kde jsou v poměru 1:1 vyobrazeny všechny dostupné šrouby a spojky.
Klasicky jsem to našel ve spodní krabici úplně na dně. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co jsem postavil? No chtěl jsem začít nějakým uchytem pro lidar a kameru, protože z robota čouhá takový „trn” (něco jako
konektor na připojení do Matrixu) a je tedy nutné se dostat výše. V praxi jsem pak ověřil, co kamarádí říkali minulý týden
ve škole, ty profily vypadají podobně ale nejsou stejné! Tj. takové &lt;a href=&#39;https://www.infento.com/parts/nuts/&#39; class=&#39;external&#39;&gt;kouzelné spojky&lt;/a&gt;
(&lt;i&gt;profile nut short&lt;/i&gt;) s pružinkou do čínského profilu nepasovaly. :-( &amp;hellip; dobrá zpráva ale byla, že alespoň šrouby jsou
&lt;i&gt;kompatibilní&lt;/i&gt; a tak jsem konstrukci namotoval místo dvou šroubů držící původní děrovanou desku.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/lidar-holder.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/lidar-holder_t.jpg&#39; alt=&#39;Držák na senzory&#39; title=&#39;Držák na senzory&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;225&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/lidar-holder.jpg&#39;&gt;Držák na senzory&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240128&#34;&gt;&lt;/a&gt;
&lt;h2&gt;28. ledna 2024 &amp;mdash; Multi Angle Joint Set&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Vedle snadného uchycení a rychlého polohování pomocí profilů jsem si teď o víkendu celkem užil &lt;a href=&#39;https://www.infento.com/parts/connectors/&#39; class=&#39;external&#39;&gt;Multi Angle Joint Set&lt;/a&gt; &amp;mdash;
prostě spojku s nastavitelným úhlem.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 546px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/infento/infento-multi-angle-joint.jpg&#39; alt=&#39;Multi angle joint (převzato z webu Infento)&#39; title=&#39;Multi angle joint (převzato z webu Infento)&#39; class=&#39;border&#39;  width=&#39;540&#39; height=&#39;540&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Multi angle joint (převzato z webu Infento)&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Potřeboal jsem přidělat &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D hloubkovou kameru&lt;/a&gt; a už při testování na &lt;a href=&#39;/robots/eduro/en&#39;&gt;Eduru&lt;/a&gt; jsem vyzkoušel, že musí být mírně
nakloněna dolů, aby detekovala blízké překážky. Otázka ale je, jak moc ji naklonit? Případně vyzkoušet pár experimentů pro různé úhly? Na tuto úlohu je ta
spojka úplně ideální nástoj. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/camera-10deg.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/camera-10deg_t.jpg&#39; alt=&#39;náklon 10 stupňů&#39; title=&#39;náklon 10 stupňů&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/camera-10deg.jpg&#39;&gt;náklon 10 stupňů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/camera-20deg.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/camera-20deg_t.jpg&#39; alt=&#39;náklon 20 stupňů&#39; title=&#39;náklon 20 stupňů&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/camera-20deg.jpg&#39;&gt;náklon 20 stupňů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/camera-30deg.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/camera-30deg_t.jpg&#39; alt=&#39;náklon 30 stupňů&#39; title=&#39;náklon 30 stupňů&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/camera-30deg.jpg&#39;&gt;náklon 30 stupňů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Interface&lt;/i&gt; propojení kamery se stavebnicí je „lehce” ostudný, ale požadavky &lt;i&gt;ver0&lt;/i&gt; to splňuje a třeba se toho TomášP chytí a vytiskne k tomu pak
nový úchyt &amp;hellip; až to vše bude fungovat! Pro teď chápu Jirku, proč preferuje jako materiál dřevo &amp;mdash; prostě i my programátoři to nějak uděláme. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/camera-holder.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/camera-holder_t.jpg&#39; alt=&#39;držák na kameru&#39; title=&#39;držák na kameru&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/camera-holder.jpg&#39;&gt;držák na kameru&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/camera-holder-side.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/camera-holder-side_t.jpg&#39; alt=&#39;boční pohled&#39; title=&#39;boční pohled&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/camera-holder-side.jpg&#39;&gt;boční pohled&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/oak-camera-on-robot-pat.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/oak-camera-on-robot-pat_t.jpg&#39; alt=&#39;OAK-D kamera na Patovi&#39; title=&#39;OAK-D kamera na Patovi&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/oak-camera-on-robot-pat.jpg&#39;&gt;OAK-D kamera na Patovi&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Řešení spoje pomocí 3 hlavních dílů umožňuje polohování s krokem 10 stupňů. Říkal jsem si, že kdyby u toho prostředního kolečka posunuli zuby
o 5 stupňů, tak by bylo možné, podle výběru středového dílu, dostat kroky 0, 10, 20 nebo 5, 15, 25 &amp;hellip; a co myslíte? Ano, viz
&lt;a href=&#39;https://www.infento.com/parts/connectors/&#39; class=&#39;external&#39;&gt;přehledová stránka spojek&lt;/a&gt; a konkrétně díl
&lt;i&gt;Knurled Disc I Stripe (Knurled Disc I-stripe can make angles of 5 ° – 15 ° – 25 ° -35 ° – etc.)&lt;/i&gt;
a &lt;i&gt;Knurled Disc II Stripes (Knurled Disc II-stripes can make angles of 0 ° – 10 ° – 20 ° – 30 ° – etc.)&lt;/i&gt;.
Je tedy dost pravděpodobné, že v těch krabicích někde mám i ten první typ. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240613&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. června 2024 &amp;mdash; Bubnovka&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Takto to dopadne, když si robotici hrají s dětskou stavebnicí &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/infento/bubnovka.jpg&#39;&gt;&lt;img src=&#39;/articles/infento/bubnovka_t.jpg&#39; alt=&#39;připojení robota k bubnové sekačce&#39; title=&#39;připojení robota k bubnové sekačce&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;300&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/infento/bubnovka.jpg&#39;&gt;připojení robota k bubnové sekačce&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nebo video, když to ještě jezdilo na dálkové ovládání:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/wAUIVAtVBRw&#39; class=&#39;external&#39;&gt;https://youtu.be/wAUIVAtVBRw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/articles/infento/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Unitree Lidar L1</title>
    <link rel='alternate' href="https://robotika.cz/articles/unitree-lidar-l1/en"/>
    <id>https://robotika.cz/articles/unitree-lidar-l1/en</id>
    <updated>2024-05-22T00:00:00Z</updated>
    <author><name>Jiří Iša</name></author>
    <summary type='html'>
        Do you want your robot to not bump into obstacles or fall into holes, are not happy with the limitations of &lt;i&gt;stereo vision&lt;/i&gt;, but you are not willing to pay for an Ouster (resp. Velodyne)/RoboSense/Livox/&amp;hellip; &#34;industrial&#34; 3D lidar? Worry no more, there is a new player on the scene.
&lt;b&gt;Blog update:&lt;/b&gt; 
12/6/2024 &amp;mdash; &lt;a href=&#39;/articles/unitree-lidar-l1/en#240612&#39;&gt;Two out of three&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h2&gt;Unitree Lidar L1 - The Hardware&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;http://www.unitree.com&#39; class=&#39;external&#39;&gt;Unitree&lt;/a&gt;, a producer of quadruped and humanoid robots, now also offers a budget-friendlier lidar.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 276px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/unitree-lidar-l1/unitree-lidar-l1.jpg&#39;&gt;&lt;img src=&#39;/articles/unitree-lidar-l1/unitree-lidar-l1_t.jpg&#39; alt=&#39;Unitree Lidar L1 (source: shop.unitree.com)&#39; title=&#39;Unitree Lidar L1 (source: shop.unitree.com)&#39; class=&#39;border&#39;  width=&#39;270&#39; height=&#39;270&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/unitree-lidar-l1/unitree-lidar-l1.jpg&#39;&gt;Unitree Lidar L1 (source: shop.unitree.com)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;In their own words: &#34;360° × 90° Omnidirectional ultra-wide angle scanning; Replacing traditional LIDAR sensing solution, achieving the same effect, with less than 1/10 of the price.&#34; They offer it for $349 on their shop, which happens to be exactly what Luxonis asks for OAK-D Pro stereo camera.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The argument by Unitree is that for small and slow robots, one does not need a &#34;full&#34; 3D lidar.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Unitree L1 is relatively slow and sparse and its design reminds me a lot of &lt;a href=&#39;https://www.slamtec.ai/product/slamtec-rplidar-a3/&#39; class=&#39;external&#39;&gt;RPLidar&lt;/a&gt;. There is a rotating head over a single &#34;normal&#34; TOF sensor and that&#39;s it. Except that L1&#39;s head rotates around two axes, unlike RPLidar&#39;s one axis.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;From all that you can deduce that the capabilities of this sensor are expected to sit somewhere between RPLidar and the &#34;industrial&#34; 3D lidars. And indeed they do: L1 provides 21600 measurements per second, which is not that many, and measures distances between 0.05 and 20 meters, which is fine, at 11 Hz, which is OK. Resp. this is for the PM &#34;precision&#34; model. There is also a 30m &#34;long range&#34; RM version, which costs more. I did not find other differences between their specifications.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Unitree advertisers &#34;non-repetitive static scanning&#34; as a feature. Two consecutive scans from a static lidar will measure different parts of the environment. Well, the rotations around the two axes are simply not synchronized, as far as I can tell, so the lidar measures wherever it happens to point at the moment. Wherever it points is probably estimated from some encoders or from some rotation key(s) and time interpolation. This hardware goes as simple as it gets. Do not expect any nicely aligned lines in the produced data.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There is also an onboard IMU on the device.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;It wasn&#39;t very clear to me what is in the box, so here we go:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;The sensor itself.&lt;/li&gt;

&lt;li&gt;53cm dangling UART + Power connector. It is mechanically mounted to the lidar, which I find very unfortunate, because it makes it harder to replace it with a shorter one. Space is a luxurious item on a small robot and cables tend to eat it. There is a 4-pin GH1.25mm JST connector on the dangling end. This one is described &lt;a href=&#39;https://www.unitree.com/download/&#39; class=&#39;external&#39;&gt;in the documentation&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;The box contains a USB-to-UART converter based on CP2104. If you want to use your own, keep in mind that you are aiming for 2Mbaud. Not all converters support that. The JST connector plugs into this converter. CP2104 reports a serial number, which means it should be possible to connect multiple such lidars on a single robot and differentiate between them in the operating system.&lt;/li&gt;

&lt;li&gt;A 100-240VAC 12V/1A power adapter is supposed to provide energy. It is an &lt;b&gt;American&lt;/b&gt; plug. Very useless to me. But the whole thing ends up on a mobile robot anyway, so what is the adapter for?&lt;/li&gt;

&lt;li&gt;Which brings us to an important part that is not documented or I missed it: The outer diameter of the power barrel going into the UART converter is 3.5mm. I am unfortunately uncertain about the inner diameter, because I happend to have an unlabeled connector that fits. I can put a 1.1mm nail into the connector, fwiw. On one hand, it fits in without falling out, on the other hand I &lt;i&gt;can&lt;/i&gt; slightly wiggle it. 1.3mm inner diameter is not entirely out of question.&lt;/li&gt;

&lt;li&gt;There is a 1m USB-A to USB-C cable for connecting the UART converter with the computer.&lt;/li&gt;

&lt;li&gt;And there are few small screws for mounting the lidar.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Let&#39;s keep the software part and experience with it for later articles.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240523&#34;&gt;&lt;/a&gt;
&lt;h2&gt;The Software&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Unitree provides an &lt;a href=&#39;https://github.com/unitreerobotics/unilidar_sdk&#39; class=&#39;external&#39;&gt;SDK for communication with the lidar&lt;/a&gt; on Github. The project provides header files and static libraries. I &amp;hellip; don&#39;t like binary libraries like this. I really don&#39;t. Have I mentioned I don&#39;t like binary libraries?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;These ones are at least static, so there is less of a chance of some dependency of theirs disappearing after some time. Still, I am pretty confident that two or three years from now I would struggle making it work on some system or hardware. I already have MyntEye stereo cameras that I can use as cute bricks, because the company went bankrupt and their binary SDK stopped working over time. Even if Unitree does not go bankrupt, will they care about supporting this particular lidar three years from now?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The good news is that the SDK works for me (TM) &lt;b&gt;now&lt;/b&gt;. Which means I can log communication to and from the lidar, cross-check with the pieces of code that are on Github and write my own communication library. I would not have bought the lidar without being confident I can do this. I was still over-confident and got lucky.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To reiterate before I get into details: The SDK works (for me). You can likely use it without getting as defensive as I am and writing an own library. If you want to make sure before buying the lidar, compile the SDK, create a linux pseudoterminal (pty) - I used `socat` to do the job for me - and let the example code in the SDK write to the pty. You will need to modify the example to not open &lt;a href=&#39;https://github.com/unitreerobotics/unilidar_sdk/blob/1bd7d95d8ab7ce7a22058d2bb07e39fd62612aa6/unitree_lidar_sdk/examples/example_lidar.cpp#L14&#39; class=&#39;external&#39;&gt;/dev/ttyUSB0&lt;/a&gt;, but the pty. You should see the example writing some data into the pty and then complaining about timing out before receiving data from the lidar. Which is, given you have not bought it and plugged it in yet, a perfectly correct behavior.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The important pieces of information for defensive folks are:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Unilidar L1 uses &lt;a href=&#39;https://mavlink.io/en/guide/mavlink_2.html&#39; class=&#39;external&#39;&gt;Mavlink v2&lt;/a&gt; communication protocol without message signatures.&lt;/li&gt;

&lt;li&gt;The Github repository contains &lt;a href=&#39;https://github.com/unitreerobotics/unilidar_sdk/tree/main/unitree_lidar_sdk/include/mavlink/SysMavlink/&#39; class=&#39;external&#39;&gt;code for processing input and output messages&lt;/a&gt; generated by &lt;a href=&#39;https://mavlink.io/en/mavgen_c/&#39; class=&#39;external&#39;&gt;Mavgen&lt;/a&gt;. I could either use this code directly to parse and serialize the messages or there is enough information to understand the message structure and to peek magical parameters such as &#34;&lt;a href=&#39;https://mavlink.io/en/guide/serialization.html#crc_extra&#39; class=&#39;external&#39;&gt;extra checksum&lt;/a&gt;&#34;.&lt;/li&gt;

&lt;li&gt;Where I got lucky, or Unitree is friendlier than I am giving them credit, is that the repository also contains &lt;a href=&#39;https://github.com/unitreerobotics/unilidar_sdk/blob/1bd7d95d8ab7ce7a22058d2bb07e39fd62612aa6/unitree_lidar_sdk/include/parse_range_auxiliary_data_to_cloud.h#L20-L81&#39; class=&#39;external&#39;&gt;code for turning distance data packet and auxiliary data packet into a point cloud with reflexivity&lt;/a&gt;. This is non-trivial and I am not sure if I could deduce it from the structure of the two messages. Maybe. If I am optimistic. It would certainly take a lot of time.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;With all this information &amp;hellip; yes, I can parse the incoming data myself. Distance, reflexivity, IMU. At some point I should also send commands (turning the lidar on and off - it is on by default) and, with lower priority, to control LEDs.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Some of the messages I receive do not pass a checksum test. I may not be parsing data correctly, but I don&#39;t think this is the case. There isn&#39;t that much room for mistakes. Famous last words. Maybe there are some communication hiccups? Remember the half a meter long dangling serial line cable I mentioned in the previous article?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;One more detail you may find interesting or important is that one distance + auxiliary data packet pair contains measurements from one rotation of the &#34;fast&#34; mirror. It is almost as getting 120 measurements from a 180deg field of view 2D lidar. Except that the slower axis of rotation gives it an extra twist, so the 2D scan does not come from a plane, even when the robot is static. And then you get another packet pair with another slice, slightly rotated. And then another one. And another one.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vertical slice of my office room with L1 on a table, facing up:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 438px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/unitree-lidar-l1/l1_scan.png&#39;&gt;&lt;img src=&#39;/articles/unitree-lidar-l1/l1_scan_t.png&#39; alt=&#39;L1 scan&#39; title=&#39;L1 scan&#39; class=&#39;border&#39;  width=&#39;432&#39; height=&#39;234&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/unitree-lidar-l1/l1_scan.png&#39;&gt;L1 scan&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240612&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Two out of three&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;I did not mention it before, but I got two L1 lidars, not just one. After I made my software work with the first one, I finally plugged in the second one. I should have done it earlier and try it with the provided software. Because the second one did not work.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Luckily I did it just before the expiration of the &#34;no questions asked&#34; return window of the European re-seller I bought them from. Mind you, I am not in EU and some of the EU customer protections are complicated here or do not apply at all.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I traced the issue to the USB-TTL converter. The sensor itself was OK. It worked with the converter from the first unit. Unitree - the original producer - does not provide spare parts. At least not this one. Despite its simplicity, I did not manage to make my own USB-TTL work with the lidar. I may have just been soldering the teeny-weeny GH JST connector wrong. Or there is more to the converter, such as a some magical wake-up byte exchange. I have not explored deeper. The provided USB-TTL converter is wrapped in a transparent piece of plastic and I could check it neither visually, nor with a multimeter or other measurement tool without breaking that plastic.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Either way, with the return window very quickly closing and the event where I need the robot to work approaching, I have returned the second lidar and bought a third one instead. Poor man&#39;s &#34;give me a replacement.&#34; The third unit works fine, which gives me two units out of three working.&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>VanJee Lidar</title>
    <link rel='alternate' href="https://robotika.cz/articles/vanjee-lidar/en"/>
    <id>https://robotika.cz/articles/vanjee-lidar/en</id>
    <updated>2023-11-03T00:00:00Z</updated>
    <author><name>Martin Dlouhý, Jiří Iša</name></author>
    <summary type='html'>
        WLR-719C je 4-paprskový lidar od čínské firmy &lt;b&gt;VanJee&lt;/b&gt;. Jedná se venkovní variantu používanou u donáškových robotů.
Lidar je otočný a pokrýva celých 360 stupňů. Cenově je do 1000 USD.
&lt;b&gt;Blog update:&lt;/b&gt; 3/5/2024 &amp;mdash; &lt;a href=&#39;/articles/vanjee-lidar/en#240503&#39;&gt;Neviditelný trávník&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h2&gt;VanJee Lidar WLR-719C&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.vanjee.net/vanjee_products/196228.html&#39; class=&#39;external&#39;&gt;VanJee Lidar WLR-719C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#231103&#39;&gt;231103 - Vánoce v listopadu&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#231104&#39;&gt;231104 - První data?&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#231105&#39;&gt;231105 - Parsování dat&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#231106&#39;&gt;231106 - Lidarview&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#240310&#39;&gt;240310 - Zapojení a WAGO spojky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#240503&#39;&gt;240503 - Neviditelný trávník&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;
&lt;a id=&#34;231103&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. listopadu 2023 &amp;mdash; Vánoce v listopadu&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes dorazil FedEx balíček. Chvíli jsem u sebe neměl telefón a málem to Santa vzdal &amp;hellip; prý že adresa neni v Google maps, tak jako by nebyla. Teď jsem to zkoušel
a už chápu &amp;hellip; ono to neřekne, že přesnou adresu to nenalezlo, ale ukáže to úplně jinam. No nic, paní řidička byla ochotna se zase vrátit a balíček (cca 20x20x20cm)
mi předala. Co je uvnitř? Dva všesměrové lidary &lt;a href=&#39;https://www.vanjee.net/vanjee_products/196228.html&#39; class=&#39;external&#39;&gt;WLR-719C&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na první pohled dost připomínají TiM lidary od německé firmy SICK, ale tady by měly pokrýt všech 360 stupňů a hlavně detekovat překážky/díry ve čtyřech směrech:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/lidar-params.png&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/lidar-params_t.png&#39; alt=&#39;základní parametry lidaru&#39; title=&#39;základní parametry lidaru&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;279&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/lidar-params.png&#39;&gt;základní parametry lidaru&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Koukám, že už je to rok, co Jirka  posílal takové &lt;a href=&#39;https://www.youtube.com/watch?v=uOpzEVw-DOY&amp;amp;ab_channel=JiriIsa&#39; class=&#39;external&#39;&gt;šílené video&lt;/a&gt; &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-box.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/vanjee-box_t.jpg&#39; alt=&#39;krabice&#39; title=&#39;krabice&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-box.jpg&#39;&gt;krabice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/unboxing.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/unboxing_t.jpg&#39; alt=&#39;obsah krabice&#39; title=&#39;obsah krabice&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/unboxing.jpg&#39;&gt;obsah krabice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/lidar.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/lidar_t.jpg&#39; alt=&#39;VanJee Lidar&#39; title=&#39;VanJee Lidar&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/lidar.jpg&#39;&gt;VanJee Lidar&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231104&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. listopadu 2023 &amp;mdash; První data?&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Mno, včera jsem to ani nezapnul. Jako mohl jsem si to nastudovat dříve a trošku se připravit &amp;hellip; prostě ten lidar je spíše na 24V a já tady mám tak leda 12V baterku
z traktůrku. Ono sice píšou &lt;i&gt;operating voltage is 12-28V DC&lt;/i&gt;, ale ještě v té samé větě je &lt;i&gt;nominal operating voltage is 24V DC, nominal operating current is 0.25A,
nominal power is 6W&lt;/i&gt;. Asi není úplně ideální začínat na hranici povoleného rozmezí, ale &amp;hellip; když tu baterku více nabiju, tak bude mít třeba 14V a rozjede se to?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, tak zas úplně triviální to není. Nastavil jsem pevnou IP adresu, abych si po Ethernetu mohl povídat s &lt;b&gt;192.168.0.2&lt;/b&gt; (default). Dobrá zpráva je:&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=0.384 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=255 time=0.418 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=255 time=0.408 ms&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Také krabička po chvíli od připojení na baterku začala „vrnět”, tj. snad úplně cihla to není.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No není nad „přítele na telefonu”. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; &lt;i&gt;Posli 
&#39;\xFF\xAA\x00\x1E\x00\x00\x00\x00\x00\x00\x01\x01\x19\x0C\x00\x00\x00\x00\x00
\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x0D\xEE\xEE&#39;
UDP packet na port 6050 a cti, co ti prijde zpatky. O parsovani te ale preci ochudit nemuzu!&lt;/i&gt;&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.record -duration 10 
                      config/test-vanjee-lidar.json -note &#34;port 6050, trigger from Jirka, in run()&#34;
2023-11-04 19:29:25,123 root             WARNING  Environment variable OSGAR_LOGS is not set - using working directory
2023-11-04 19:29:25,124 __main__         INFO     /home/md/git/osgar/test-vanjee-lidar-231104_182925.log
2023-11-04 19:29:25,144 __main__         INFO     SIGINT handler installed
2023-11-04 19:29:35,176 __main__         ERROR      vanjee_udp: maximum delay of 0:00:10.031742 at 0:00:10.052223

(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.logger /home/md/git/osgar/test-vanjee-lidar-231104_182925.log 
 k           name   bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&amp;mdash;
 0            sys  130460 | 1591 | 158.3Hz
 1     vanjee.raw      36 |    1 |   0.1Hz
 2     vanjee.xyz       0 |    0 |   0.0Hz
 3    vanjee.scan       0 |    0 |   0.0Hz
 4 vanjee_udp.raw 2198431 | 1586 | 157.8Hz

Total time 0:00:10.052477&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Za mne dobrý! Myslím, že můžu v klidu vypnout počítač (v sobotu mám typicky „odvykačku” &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;) &amp;hellip; co ty pakety obsahují tedy až zítra.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. pokud by někoho zajímaly detaily, tak viz &lt;a href=&#39;https://github.com/robotika/osgar/compare/feature/vanjee-lidar&#39; class=&#39;external&#39;&gt;https://github.com/robotika/osgar/compare/feature/vanjee-lidar&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/first-test.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/first-test_t.jpg&#39; alt=&#39;první test&#39; title=&#39;první test&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/first-test.jpg&#39;&gt;první test&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231105&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. listopadu 2023 &amp;mdash; Parsování dat&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, venku je tma, tak hurá na bitíky &amp;hellip; Upravil jsem původní callback z&lt;/div&gt;

&lt;pre&gt;def on_raw(self, data):
    pass&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;na&lt;/div&gt;

&lt;pre&gt;def on_raw(self, data):
    assert len(data) == 0, len(data)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a pak pustil přehrávání logu:&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.replay -module vanjee 
                                                test-vanjee-lidar-231104_182925.log
original args: b&#34;[&#39;/home/md/git/osgar/osgar/record.py&#39;, &#39;-duration&#39;, &#39;10&#39;, &#39;config/test-vanjee-lidar.json&#39;,
                  &#39;-note&#39;, &#39;port 6050, trigger from Jirka, in run()&#39;]&#34;
Exception in thread Thread-1:
Traceback (most recent call last):
  File &#34;/usr/lib/python3.8/threading.py&#34;, line 932, in _bootstrap_inner
    self.run()
  File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 24, in run
    self.update()
  File &#34;/home/md/git/osgar/osgar/node.py&#34;, line 36, in update
    handler(data)
  File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 17, in on_raw
    assert len(data) == 0, len(data)
AssertionError: 34
maximum delay: 0:00:00&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; což takto malý paket jsem opravdu nečekal. Asi je to odpověď na ten &lt;i&gt;magic packet&lt;/i&gt;?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak znova &lt;i&gt;replay&lt;/i&gt; a změna očekávané hodnoty na 34:&lt;/div&gt;

&lt;pre&gt;File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 17, in on_raw
    assert len(data) == 34, len(data)
AssertionError: 1384&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; to už vypadá spíše jako &lt;i&gt;point cloud data&lt;/i&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;OK, tak teď už na&lt;/div&gt;

&lt;pre&gt;assert len(data) in [34, 1384], len(data)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;projde celá 10s nahrávka ze včerejška. &lt;i&gt;The effective length of the WLR-719C data packet is 1380 bytes&lt;/i&gt; &amp;hellip; hmm, skoro.&lt;/div&gt;

&lt;pre&gt;File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 20, in on_raw
    assert data[:2] == b&#39;\xFF\xAB&#39;, data[:2].hex()
AssertionError: ffaa&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj. na začátku je SoF, &lt;i&gt;Start of frame&lt;/i&gt; (to FFAB jsem tam dal úmyslně, aby to selhalo a vypsalo to očekávane FFAA)&lt;/div&gt;

&lt;pre&gt;length = struct.unpack_from(&#39;&amp;lt;H&#39;, data, 2)
        assert length == 42, length
&amp;hellip;
  File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 22, in on_raw
    assert length == 42, length
AssertionError: (25605,)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;hmm, nečekané, tj. obrácený endians?&lt;/div&gt;

&lt;pre&gt;length = struct.unpack_from(&#39;&gt;H&#39;, data, 2)
        assert length == 42, length
&amp;hellip;
  File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 22, in on_raw
    assert length == 42, length
AssertionError: (1380,)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; lepší, jen jsem zapomněl si vzít 0tý prvek a ta délka tedy snad už odpovídá tomu &lt;i&gt;the effective length&lt;/i&gt;.&lt;/div&gt;

&lt;pre&gt;frame = struct.unpack_from(&#39;&gt;H&#39;, data, 4)[0]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; to už pěkně jede od 1 dále.&lt;/div&gt;

&lt;pre&gt;assert data[6:10] == bytes.fromhex(&#39;00000000&#39;), data[6:10].hex()
&amp;hellip;
  File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 24, in on_raw
    assert data[6:10] == bytes.fromhex(&#39;00000000&#39;), data[6:10].hex()
AssertionError: 000007f9&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tak to už očekávané není. Vycházím z PDFka stažitelného v
&lt;a href=&#39;https://www.vanjee.net/repository/portal-local/ngc202208190002/cms/file/f5300115-68ac-4a8b-88d0-8badbd762910.pdf&#39; class=&#39;external&#39;&gt;download sekci výrobce&lt;/a&gt;.
A pro případ, že by to zmizelo, tak zde je očekávaný začátek paketu:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/packet.png&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/packet_t.png&#39; alt=&#39;úvodní část paketu&#39; title=&#39;úvodní část paketu&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;568&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/packet.png&#39;&gt;úvodní část paketu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; prostě rezervovaná data jsou jiná, což si nemůžeme moc stěžovat &amp;hellip; od toho jsou rezervovaná. A mění se:&lt;/div&gt;

&lt;pre&gt;assert data[6:10] == bytes.fromhex(&#39;000007f9&#39;), data[6:10].hex()
AssertionError: 000007fa&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Další bajty &amp;hellip;&lt;/div&gt;

&lt;pre&gt;assert data[11:14] == bytes.fromhex(&#39;02 000C&#39;), data[11:14].hex()
AssertionError: 02190c&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; jako s assertama na real-time robotovi je „trošku” problém, ale zatím mi to přijde jako nejrychlejší způsob porovnání
co říká dokumentace a co leze ze zařízení. Tj. asi nějaký nový &lt;i&gt;device type&lt;/i&gt;?&lt;/div&gt;

&lt;pre&gt;bank, motor_speed = struct.unpack_from(&#39;&gt;BH&#39;, data, 18)
assert 1 &lt;= bank &lt;= 16, bank
assert 38000 &lt;= motor_speed &lt;= 39300, motor_speed&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; banky, jak slibovali (ne že bych tušil co že to je) a rychlosti motoru jsou proměnné &amp;mdash; časem asi budu muset zvednout, resp. assert zrušit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě tam nejsme, ale blíží se to &amp;hellip;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/packet-end.png&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/packet-end_t.png&#39; alt=&#39;druhá část paketu&#39; title=&#39;druhá část paketu&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;393&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/packet-end.png&#39;&gt;druhá část paketu&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Už to taková zábava není &amp;hellip; asi chápu Jirku, že preferuje, když dokumentace je generovaná stejně tak s parsery pro všechny možné
programovací jazyky. No nic, ověřil jsem ještě EEEE na konci a teď je na čase se zakousnout do té největší časti (jj, checksum by to asi také
chělo ověřit). NTP bych si nechal někdy na jindy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;1350 bajtů co má nést informaci o 450 bodech = 3 bajty na bod.
&lt;i&gt;10 circles/second; 7200 points/circle; Scanning data -10°, -5°, 0°, 0.3° in sequence; 24 bytes per point, 1-byte reserved +
7-byte intensity + 16-byte distance.&lt;/i&gt; &amp;hellip; to zní opravdu drsně. Tak alespoň sedí, že 450 bodů krát 16 bank je těch 7200 bodu na otočku.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;... every 3 bytes corresponds to a single point cloud information. It outputs point cloud data at
-10°, -5°, 0° and 0.3° in cycle, where the lower 7 bits of the first byte represent the intensity value, and
the last two bytes represent the distance&lt;/i&gt; &amp;hellip; aha, tak oni si také pletou bity a bajty, fajn. Tj. nikoliv 24 bajtů, ale pouze 24 bitu = 3 bajty
a rezervovaný je jen jeden bit u intenzity.&lt;/div&gt;

&lt;pre&gt;points = struct.unpack_from(&#39;&gt;&#39; + &#39;BH&#39; * 450, data, 21)
assert 0, points[:20]
&amp;hellip;
  File &#34;/home/md/git/osgar/osgar/drivers/vanjee.py&#34;, line 35, in on_raw
    assert 0, points[:20]
AssertionError: (4, 808, 16, 980, 10, 0, 4, 111, 0, 0, 17, 976, 0, 0, 16, 0, 0, 0, 17, 971)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; jako není to obrázek v lidarview, co jsem měl původně v plánu, ale timeout 2 hodiny právě nastal a asi bych si dal večeři a pokračování
zítra (??? &amp;hellip; ono je to pracovní den a večer je &lt;a href=&#39;https://triagechallenge.darpa.mil/&#39; class=&#39;external&#39;&gt;DARPA DTC kick-off&lt;/a&gt;, takže tomu dávám jen 30%).&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231106&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. listopadu 2023 &amp;mdash; Lidarview&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jenom rychlovka. Ty banky 1 až 16 vypadají jako pouze rozdělení velkého scanu na bloky, tj. je třeba je slepit dohromady a pak pracovat
s celým scanem. Trošku mne zmátlo, že to „řežou v půlce” &amp;mdash; ty body jdou za sebou podle jednotlivých vrstev pro -10, -5, 0 a +0.3 stupně.
Prostě 450 úplně není dělitelné 4 (vrstvami). Slepené je to OK.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když teď Jakub nově oprášil &lt;a href=&#39;https://github.com/robotika/osgar/blob/master/osgar/drivers/replay.py&#39; class=&#39;external&#39;&gt;OSGAR driver replay&lt;/a&gt;, který simuluje
v běžícím systému data z původní nahrávky, tak jsem mohl i doplnit &lt;b&gt;vanjee.scan&lt;/b&gt;, který na začátku implementován nebyl. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;{
  &#34;version&#34;: 2,
  &#34;robot&#34;: {
    &#34;modules&#34;: {
      &#34;vanjee&#34;: {
          &#34;driver&#34;: &#34;vanjee&#34;,
          &#34;in&#34;: [&#34;raw&#34;],
          &#34;out&#34;: [&#34;raw&#34;, &#34;scan&#34;],
          &#34;init&#34;: {}
      },
      &#34;vanjee_udp&#34;: {
          &#34;driver&#34;: &#34;replay&#34;,
          &#34;in&#34;: [&#34;raw&#34;],
          &#34;out&#34;: [&#34;raw&#34;],
          &#34;init&#34;: {
              &#34;filename&#34;: &#34;/home/md/git/osgar/test-vanjee-lidar-231104_182925.log&#34;,
              &#34;pins&#34;: {&#34;vanjee_udp.raw&#34;:  &#34;raw&#34;}
          }
      }
    },
    &#34;links&#34;: [[&#34;vanjee_udp.raw&#34;, &#34;vanjee.raw&#34;],
              [&#34;vanjee.raw&#34;, &#34;vanjee_udp.raw&#34;]
      ]
  }
}&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A když jsem restartoval celý počítač, abych si zase mohl pustit &lt;b&gt;lidarview&lt;/b&gt;, tak jsem dostal:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/lidarview-scan.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/lidarview-scan_t.jpg&#39; alt=&#39;Lidarview 360deg scan&#39; title=&#39;Lidarview 360deg scan&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/lidarview-scan.jpg&#39;&gt;Lidarview 360deg scan&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. to restartování mne hrozně irituje, ale vždy mi nějakou dobu trvá si vzpomenout, co že je to za problém :-(&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/osgar$ python -m osgar.tools.lidarview
   /home/md/git/osgar/test-replay-vanjee-lidar-231106_100810.log &amp;ndash;lidar vanjee.scan
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  91
  Current serial number in output stream:  92&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;240310&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. březen 2024 &amp;mdash; Zapojení a WAGO spojky&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Číňan měl pravdu, že jsem s „VanJee blogem” moc nepostoupil. To ale neznamená, že jsem si s lidarem vůbec nehrál!
Nějaký čas jsem s ním jezdil na robotu Eduro a zkoušel ICP (viz &lt;a href=&#39;/guide/scan-matching/en&#39;&gt;průvodce scan matching&lt;/a&gt;).
Pak se ale ukázalo, že pro dostatečné vykrytí prostoru před robotem stejně potřebuji zapojit kameru a tak se pozornost
přesunula na &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;OAK-D Pro&lt;/a&gt;. Včera jsem lidar konečně přidělal na &lt;a href=&#39;/robots/pat-a-mat/en&#39;&gt;Pata&lt;/a&gt;
a dnes se snažil narychlo nasbírat nějaká data venku:&lt;/div&gt;
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-on-pat.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/vanjee-on-pat_t.jpg&#39; alt=&#39;VanJee lidar na Patovi&#39; title=&#39;VanJee lidar na Patovi&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-on-pat.jpg&#39;&gt;VanJee lidar na Patovi&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-on-pat-side.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/vanjee-on-pat-side_t.jpg&#39; alt=&#39;pohled z boku&#39; title=&#39;pohled z boku&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-on-pat-side.jpg&#39;&gt;pohled z boku&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/wago.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/wago_t.jpg&#39; alt=&#39;WAGO spojky&#39; title=&#39;WAGO spojky&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/wago.jpg&#39;&gt;WAGO spojky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;Už jsem za tu dobu zapomněl, co je ten žlutý kabel, tak pro příště vytrhávám z dokumentace:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 270px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/cables.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/cables_t.jpg&#39; alt=&#39;kabely&#39; title=&#39;kabely&#39; class=&#39;border&#39;  width=&#39;264&#39; height=&#39;327&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/cables.jpg&#39;&gt;kabely&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Negative pole of the power supply is black (wire 1)&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Positive pole of the power supply is red (wire 2)&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Chassis ground is yellow (wire 3)&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Toto byla také moje první zkušenost s &lt;a href=&#39;https://www.conrad.cz/cs/p/wago-221-221-413-1-kabelova-svorka-pin-3-450-v-32-a-1-ks-1188437.html&#39; class=&#39;external&#39;&gt;WAGO spojkami&lt;/a&gt;.
Ostatní je používají, tak jen varování, že jsou dva druhy &amp;mdash; WAGO 2273 - na tuhé dráty (ty nechcete) a dále &lt;b&gt;WAGO 221&lt;/b&gt;, které jednoduše zaklapnete.
Pokud si chcete dělat elektriku, tak jsem při tom narazil na celkem koukatelné video:
&lt;a href=&#39;https://www.youtube.com/watch?v=dIWvuAAFBds&amp;amp;ab_channel=DominikShaim&#39; class=&#39;external&#39;&gt;Základní práce s Wago svorkami, kontrolní otvory bez rozebrání a tipy (Elektrika pro začátečníky)&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A jak vypadají dnešní data? No nijak, protože když jsem zapojil Ethernetový kabel lidaru, tak jsem ztratil wifinu. Ano, je to mým nastavením na počítači,
ale dohledávat skript na změnu IP od Jirky nebyl čas. :-( Tak snad příští týden bude už &lt;i&gt;datová sada&lt;/i&gt; kompletní.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;240503&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. května 2024 &amp;mdash; Neviditelný trávník&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Možná to &lt;a href=&#39;/robots/pat-a-mat/en#240502&#39;&gt;prvomájové testování&lt;/a&gt; nebylo úplně k ničemu, resp. bych skoro řekl, že &lt;b&gt;každý test něco nového přinese&lt;/b&gt;.
A ano, bylo to neočekávané a došlo mi to až když jsem koukal na logy a přemýšlel jak na 4-řádkovém lidaru najít 50cm (resp. 54cm i s podstavou)
kužely.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Po pravdě mi „chvilku” trvalo, než mi došlo, co je na tom pravém obrázku špatně:
&lt;center&gt;
&lt;table border=&#34;0&#34;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-ok.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/vanjee-ok_t.jpg&#39; alt=&#39;VanJee OK&#39; title=&#39;VanJee OK&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-ok.jpg&#39;&gt;VanJee OK&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
		&lt;td&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-nok.jpg&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/vanjee-nok_t.jpg&#39; alt=&#39;VanJee NOK&#39; title=&#39;VanJee NOK&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-nok.jpg&#39;&gt;VanJee NOK&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; prostě druhý lidar, co kouká pod úhlem 10 stupňů dolu (hnědé tečky) najednou zmizel a de facto zem (posekaný &lt;i&gt;trávník&lt;/i&gt;) neviděl?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-gaps.png&#39;&gt;&lt;img src=&#39;/articles/vanjee-lidar/vanjee-gaps_t.png&#39; alt=&#39;chybějící odrazy pro daný scan (-10deg a -5deg paprsky)&#39; title=&#39;chybějící odrazy pro daný scan (-10deg a -5deg paprsky)&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/vanjee-lidar/vanjee-gaps.png&#39;&gt;chybějící odrazy pro daný scan (-10deg a -5deg paprsky)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bude to chtít více prozkoumat &amp;hellip; je už neděle a zatím pouze potvrzuji, že to není chybou &lt;i&gt;lidarview&lt;/i&gt; (viz graf výše).&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/articles/vanjee-lidar/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Servo WaveShare ST3215</title>
    <link rel='alternate' href="https://robotika.cz/articles/digitalservo/en"/>
    <id>https://robotika.cz/articles/digitalservo/en</id>
    <updated>2024-01-02T00:00:00Z</updated>
    <author><name>Martin Locker</name></author>
    <summary type='html'>
        Ke konci roku 2022 jsem konečně objevil pohon &#34;snů&#34; pro malé roboty 
- digitální servo WaveShare ST3215. Digitální robotická serva samořejmě existují již dávno, 
ale buď jsou cenově mimo běžné možnosti, nebo mají jiný nedostatek, 
např. nemají měření polohy v celém rozsahu otáčení (obvykle jen 0 - 270°). 
Servo ST3215 splňuje téměř všechny požadavky na ideální pohon pro malé roboty.
    </summary>
	<content type='html'>
        
&lt;h2&gt;Technický popis&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jedním ze stěženích problémů při stavbě vlastního robota je výběr vhodného pohonu. 
Je jedno jestli se jedná o robota mobilního, kde využijeme pohony pro vlastní pohyb, 
nebo o robotické rameno, kde pohony zajišťují pohyb kloubů.&lt;br&gt;
Vždy potřebujeme pohon, který má vhodnou rychlost, požadovanou sílu, 
možnost řízení rychlosti a polohy a v neposlední řadě i rozumnou cenu.&lt;/div&gt;

&lt;h3&gt;Parametry serva&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel right&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/ST3215-hw.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/ST3215-hw_t.jpg&#39; alt=&#39;Konstrukce serva&#39; title=&#39;Konstrukce serva&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/ST3215-hw.jpg&#39;&gt;Konstrukce serva&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;velikost standardního serva&lt;/li&gt;

&lt;li&gt;napájení 6 – 12,6V&lt;/li&gt;

&lt;li&gt;krouticí moment 3 Nm (30kg.cm)&lt;/li&gt;

&lt;li&gt;komunikace – sériová linka TTL&lt;/li&gt;

&lt;li&gt;magnetický snímač otáčení 360° ! 	(rozlišení 4096 poloh, tj. &lt; 0,1°)&lt;/li&gt;

&lt;li&gt;režim servo polohové / servo rychlostní - motor&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Dobré vlastnosti&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;zpětná vazba pozice, rychlost, teplota, &amp;hellip;&lt;/li&gt;

&lt;li&gt;kvalitní převodovka (kovová kola, malé vůle)&lt;/li&gt;

&lt;li&gt;super cena ~650,- Kč (za to nelze pořídit slušný motor s převodovkou, enkodér, H-můstek a procesor pro řízení)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Horší vlastnosti&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;není dokumentace – pouze příklady zdrojových kódů //(update: výrobce už má na wiki popis komunikačního protokolu)//&lt;/li&gt;

&lt;li&gt;nižší rychlost (oproti standardním servům) //(update: už existuje rychlejší varianta serva ST3215 HS - cca 2,5x rychlejší)//&lt;/li&gt;

&lt;li&gt;obousměrná TTL sériová linka&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h2&gt;Připojení serva k mikrokontroleru&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Pro komunikaci se servy je použita 1-drátová sériová sběrnice v úrovních 3V,
umožňující teoreticky připojit 253 serv.
Proto jen nutné u mikrokontrolerů, které tento typ sběrnice hardwarově nepodporují
doplnit potřebný obvod. Obvykle se pro komunikaci využije uart mikrokontroleru
a &#34;spojí se&#34; signály TX a RX.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 243px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/esp32_servodriver.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/esp32_servodriver_t.jpg&#39; alt=&#39;Servo Driver WaveShare&#39; title=&#39;Servo Driver WaveShare&#39; class=&#39;border&#39;  width=&#39;237&#39; height=&#39;134&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/esp32_servodriver.jpg&#39;&gt;Servo Driver WaveShare&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 190px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/esp32_servodriver2.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/esp32_servodriver2_t.jpg&#39; alt=&#39;Servo Driver WaveShare&#39; title=&#39;Servo Driver WaveShare&#39; class=&#39;border&#39;  width=&#39;184&#39; height=&#39;133&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/esp32_servodriver2.jpg&#39;&gt;Servo Driver WaveShare&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pro prvotní hraní jsem použil desku Servo Driver od výrobce serv. Je založena
na mikrokontroleru ESP32 a obsahuje budič 1-drátové sběrnice s automatickým
přepínámí směru.&lt;/div&gt;

&lt;h3&gt;Budič s automatický přepínáním směru (originálního zapojení)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 441px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/hw1.png&#39;&gt;&lt;img src=&#39;/articles/digitalservo/hw1_t.png&#39; alt=&#39;Originální zapojení servo driveru&#39; title=&#39;Originální zapojení servo driveru&#39; class=&#39;border&#39;  width=&#39;435&#39; height=&#39;199&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/hw1.png&#39;&gt;Originální zapojení servo driveru&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Budič s automatický přepínáním směru&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;zjednodušená varianta originálního zapojení (bylo by vhodné přidat zpoždění přepnutí směru pro rychlejší přechod linky do H)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 280px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/hw2.png&#39;&gt;&lt;img src=&#39;/articles/digitalservo/hw2_t.png&#39; alt=&#39;Budič s automatickým přepínáním směru&#39; title=&#39;Budič s automatickým přepínáním směru&#39; class=&#39;border&#39;  width=&#39;274&#39; height=&#39;192&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/hw2.png&#39;&gt;Budič s automatickým přepínáním směru&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Budiče s „ručním“ přepínáním směru&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;v tomto zapojení je přepínání směru - vysílání/příjem řízeno zvláštním výstupem
mikrokontroleru (používá originál Dynamixel)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 280px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/hw3.png&#39;&gt;&lt;img src=&#39;/articles/digitalservo/hw3_t.png&#39; alt=&#39;Budič s ručním přepínáním směru&#39; title=&#39;Budič s ručním přepínáním směru&#39; class=&#39;border&#39;  width=&#39;274&#39; height=&#39;192&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/hw3.png&#39;&gt;Budič s ručním přepínáním směru&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Wired AND (drátový AND)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;realizace diodou, která zajistí aktivní výstup pouze pro logickou &#34;0&#34;, v logické &#34;1&#34; je výstup odpojen
a požadovanou úroveň zajišťuje pull-up rezistor&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&#34;nevýhoda&#34; - na RXD echo vysílaných dat&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 209px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/hw4.png&#39;&gt;&lt;img src=&#39;/articles/digitalservo/hw4_t.png&#39; alt=&#39; Wired AND &#39; title=&#39; Wired AND &#39; class=&#39;border&#39;  width=&#39;203&#39; height=&#39;123&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/hw4.png&#39;&gt; Wired AND &lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;pokud využijeme v mikrokontroleru výstup TXD v režimu otevřeného kolektoru, tak můžeme ušetřit
diodu&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 174px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/hw5.png&#39;&gt;&lt;img src=&#39;/articles/digitalservo/hw5_t.png&#39; alt=&#39; Wired AND open colector &#39; title=&#39; Wired AND open colector &#39; class=&#39;border&#39;  width=&#39;168&#39; height=&#39;123&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/hw5.png&#39;&gt; Wired AND open colector &lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Mechanicky je připojování serv na sběrnici realizováno pomocí konektorů SPOX (molex) 2,5 mm – 3 pin.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 218px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/con1.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/con1_t.jpg&#39; alt=&#39;Konektor SPOX 3&#39; title=&#39;Konektor SPOX 3&#39; class=&#39;border&#39;  width=&#39;212&#39; height=&#39;144&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/con1.jpg&#39;&gt;Konektor SPOX 3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 188px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/con2.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/con2_t.jpg&#39; alt=&#39;Konektor SPOX 3&#39; title=&#39;Konektor SPOX 3&#39; class=&#39;border&#39;  width=&#39;182&#39; height=&#39;144&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/con2.jpg&#39;&gt;Konektor SPOX 3&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Konfigurace serva&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;U digitálních serv lze nastavovat řadu parametrů - režim práce, rychlost, maximální moment, teplotu, &amp;hellip;
Stejně tak lze mnoho údajů ze serva číst - poloha, aktuální rychlost, krouticí moment, napětí, proud, &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bohužel výrobce dokumentaci s popisem registrů serva nemá k dispozici (tedy zatím jsem neobjevil).
Ale dostal jsem tip, že toto servo vypadá jako klon serv firmy FeeTech. Takže jsem zapátral
na jejich stránkách a našel jejich software pro konfiguraci serv (odkaz ve zdrojích).
Zkusil jsem se připojit tímto softwarem k servu a opravdu servo komunikovalo.
Vypadá to, že i struktura registrů je stejná (všechny parametry, které jsem zatím 
zkusil nastavit fungovaly). // (update: už existuje i konfigurační software od WaveShare)//&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 701px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/digitalservo/ft.png&#39; alt=&#39;Konfigurační software FeeTech&#39; title=&#39;Konfigurační software FeeTech&#39; class=&#39;border&#39;  width=&#39;695&#39; height=&#39;540&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Konfigurační software FeeTech&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pro práci s tímto sw je potřeba připojení sériovou linkou s PC. To lze snadno realizovat
jednoduchým prográmkem s využitím výše uvedené desky Servo Driver. Program
pouze přeposílá data ze sériové linky z PC (USB) na sériovou linku, která je převáděna
na 1-drátovou sběrnice a naopak.&lt;/div&gt;

&lt;pre&gt;#include &amp;lt;Arduino.h&amp;gt;

#define S_RXD 18
#define S_TXD 19

void setup() {
  Serial.begin(115200);
  Serial1.begin(1000000, SERIAL_8N1, S_RXD, S_TXD);
  delay(1000);
}

void loop() {
  if (Serial.available()) {
    int a = Serial.read();
    Serial1.write(a);
  }
  if (Serial1.available()) {
    int a = Serial1.read();
    Serial.write(a);
  }
}&lt;/pre&gt;

&lt;hr&gt;

&lt;h2&gt;SW řešení - jak si se servy povídat&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Pro použití serv ve vlastních projektech je potřeba softwarová obsluha komunikace po
sběrnici (viz. popis komunikačního protokolu) a mapa registrů v paměti serva.
Lze využít knihovnu, která je součástí &lt;a href=&#39;https://files.waveshare.com/upload/d/d8/ST_Servo.zip&#39; class=&#39;external&#39;&gt;ukázkového demo projektu&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Já osobně používám vlastní knihovnu (originální mi přijde zbytečně složitá), protože 
využívám jednodušší variantu zapojení 1-drátové sběrnice wired and (a tedy
je potřeba řešit echo při vysílání).&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Projekty se servy ST3215&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/robo.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/robo_t.jpg&#39; alt=&#39;Jednoduchý robot s diferenciálním řízením&#39; title=&#39;Jednoduchý robot s diferenciálním řízením&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/robo.jpg&#39;&gt;Jednoduchý robot s diferenciálním řízením&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
 
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/brachiograph.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/brachiograph_t.jpg&#39; alt=&#39;Kreslicí ruka&#39; title=&#39;Kreslicí ruka&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/brachiograph.jpg&#39;&gt;Kreslicí ruka&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/digitalservo/rocker.jpg&#39;&gt;&lt;img src=&#39;/articles/digitalservo/rocker_t.jpg&#39; alt=&#39;Terénní robot Rocker&#39; title=&#39;Terénní robot Rocker&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/digitalservo/rocker.jpg&#39;&gt;Terénní robot Rocker&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h3&gt;Použitá literatura a odkazy na internetu&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;[1] &lt;a href=&#39;https://www.waveshare.com/product/robotics/motors-servos/servos/st3215-servo.htm&#39; class=&#39;external&#39;&gt;Waveshare Servo ST3215 - stránka výrobce&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;[2] &lt;a href=&#39;https://www.waveshare.com/wiki/ST3215_Servo&#39; class=&#39;external&#39;&gt;Waveshare Servo ST3215 - wiki&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;[3] &lt;a href=&#39;https://www.waveshare.com/servo-driver-with-esp32.htm&#39; class=&#39;external&#39;&gt;Waveshare Servo driver&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;[4] &lt;a href=&#39;https://emanual.robotis.com/docs/en/dxl/protocol1/&#39; class=&#39;external&#39;&gt;Protokol Dynamixel 1.0&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;[5] &lt;a href=&#39;https://files.waveshare.com/upload/2/27/Communication_Protocol_User_Manual-EN%28191218-0923%29.pdf&#39; class=&#39;external&#39;&gt;WaveShare Communication Protocol&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;[6] &lt;a href=&#39;https://www.theremino.com/wp-content/uploads/files/SmartMotors/Feetech_Motors_Programming_Kit_V1.1.zip&#39; class=&#39;external&#39;&gt;FeeTech - programming kit&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Článek je převzat z&lt;/i&gt; &lt;a href=&#39;https://robotika.vosrk.cz/&#39; class=&#39;external&#39;&gt;https://robotika.vosrk.cz/&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Enrich 2023</title>
    <link rel='alternate' href="https://robotika.cz/competitions/enrich/2023/en"/>
    <id>https://robotika.cz/competitions/enrich/2023/en</id>
    <updated>2023-09-25T00:00:00Z</updated>
    <author><name>Jonas Wuehr</name></author>
    <summary type='html'>
        I can highly recommend visiting Enrich. Already the exclusive guided tour through the power plant is worth it. We participated with the hexapod and my robot Lois. The hexapod had some electrical problems and could not participate. Anyway, we had 3 successul rounds with Lois and could also find some artifacts and create a 3D map of a small part of the area. So it was not a complete shame &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
&lt;b&gt;Update:&lt;/b&gt; 8/11/2023 &amp;mdash; &lt;a href=&#39;/competitions/enrich/2023/en#231108&#39;&gt;The Full Story&lt;/a&gt;


    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;I totally underestimated how complicated is to operate a robot remotely but after the first round and some additional training I got familiar with the situation. The big problem at the competition is bad WIFI. Although it is provided by the organisator, it is a really bad connection because of the thick concrete walls and the robot also switches between multiple access points. So You can completely forget about using a distributed ROS setup or something similar. I fixed the problem by creating a tmux session, where I could give the robot simple commands like drive 1m on this course and then stop. For camera transmission X-forwarding worked kind of well. The whole mapping was running on the robot and based on rtabmap.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Next year the organizer wants fully autonomous robots.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;In the end many other teams had the same problems and it was a great week anyway. I would definitely go there again.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/control-room.jpg&#39; alt=&#39;Control room&#39; title=&#39;Control room&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Control room&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/display.jpg&#39; alt=&#39;Display&#39; title=&#39;Display&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Display&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/hexapod.jpg&#39; alt=&#39;Hexapod&#39; title=&#39;Hexapod&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Hexapod&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/lois.jpg&#39; alt=&#39;Lois&#39; title=&#39;Lois&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Lois&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/map3d.jpg&#39; alt=&#39;3D Map&#39; title=&#39;3D Map&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;3D Map&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/power-plant.jpg&#39; alt=&#39;Power plan&#39; title=&#39;Power plan&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Power plan&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 606px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/reactor.jpg&#39; alt=&#39;Reactor&#39; title=&#39;Reactor&#39; class=&#39;border&#39;  width=&#39;600&#39; height=&#39;800&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Reactor&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 806px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/competitions/enrich/2023/reactor2.jpg&#39; alt=&#39;Reactor door&#39; title=&#39;Reactor door&#39; class=&#39;border&#39;  width=&#39;800&#39; height=&#39;600&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Reactor door&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231108&#34;&gt;&lt;/a&gt;
&lt;h1&gt;ENRICH - The European Robotics Hackathon&lt;/h1&gt;

&lt;div class=&#39;p&#39;&gt;Incidents such as Fukushima, Majak or Chernobyl as well as the decommissioning and dismantling of old nuclear facilities (e.g. Sellafield, Asse or Murmansk) have taught us that the use of robotics technology has clear advantages. There are many measurement and sampling tasks too risky for humans to carry out. For these radiological and nuclear (RN) scenarios specialized robot systems have to be developed.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;ENRICH takes place every two years at Zwentendorf Nuclear Power Plant in Austria. The organisers are The Austrian Armaments and Defence Technology Agency (ADTA), EVN AG, European Robotics and mainly the Cognitive Mobile Systems Department of the Fraunhofer Institute for Communication, Information Processing and Ergonomics FKIE. The event is not organised as a competition but as a trial. There are  some awards for best performance in specific subject areas. The main goal of the event is to give the teams the ability to demonstrate and test their technology in a realistic enviroment. The boiling water reactor of Zwentendof NPP ist perfect for this. This power plant was completed but never put into operation, so there is no high level of radioactivity.  Already the exclusive guided tour through the power plant is worth visiting ENRICH &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;h2&gt;ENRICH 2023 (10.6.23 - 16.6.23)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;There were four tasks at ENRICH 2023:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Mapping: Draw a digital 3D map of the power plant and a heat map of artifically placed real radiation sources.&lt;/li&gt;

&lt;li&gt;Manipulation: Identify pipes containing radioactive coolant and close the corresponding valves.&lt;/li&gt;

&lt;li&gt;Search and Rescue: Move dummy humans to a safe area with Your robot.&lt;/li&gt;

&lt;li&gt;UAV: Do the Mapping task with an UAV (in a different area).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;I joined 107-Systems as one of the 13 teams going for ENRICH 2023. We participated with a hexapod called L3XZ and my differentially driven robot Lois one might know from different competitions. We decided to go for the mapping and manipulation tasks. For mapping I set up RTAB-Map using an Intel Realsense D435i and a SICK Lidar as source for odometry data. For the manipulation task a portal frame was added on the back of Lois. I 3D-printed a drum shaped tool with a camera in it&#39;s middle in order to be able to open and close the valves.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 246px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/enrich/2023/manipulationtask.jpg&#39;&gt;&lt;img src=&#39;/competitions/enrich/2023/manipulationtask_t.jpg&#39; alt=&#39;manipulatio task&#39; title=&#39;manipulatio task&#39; class=&#39;border&#39;  width=&#39;240&#39; height=&#39;381&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/enrich/2023/manipulationtask.jpg&#39;&gt;manipulatio task&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/enrich/2023/manipulationtool.jpg&#39;&gt;&lt;img src=&#39;/competitions/enrich/2023/manipulationtool_t.jpg&#39; alt=&#39;manipulation tool&#39; title=&#39;manipulation tool&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/enrich/2023/manipulationtool.jpg&#39;&gt;manipulation tool&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;There are three runs. As the hexapod had some electrical problems we only participated with Lois. I totally underestimated how complicated it is to operate a robot remotely and crashed the valve manipulation tool by driving backwards into a door during round one. After the first round and some additional training I got familiar with the situation. One problem at the competition is bad WIFI. Although it is provided by the organisator, it is a really bad connection because of the thick concrete walls and the robot also switches between multiple access points. So You can completely forget about using a distributed ROS setup or something similar. I fixed the problem by creating a tmux session, where I could give the robot simple commands like drive 1m on this course and then stop. For camera transmission X-forwarding worked kind of well. The whole mapping was running on the robot itself, so it was not affected by connectivity issues.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/enrich/2023/crashedtool.jpg&#39;&gt;&lt;img src=&#39;/competitions/enrich/2023/crashedtool_t.jpg&#39; alt=&#39;crash&#39; title=&#39;crash&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/enrich/2023/crashedtool.jpg&#39;&gt;crash&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Anyway, we had 3 successul rounds where Lois came back from the area to be explored. We could also find some radioactive artifacts and create a 3D map of a small part of the area.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/competitions/enrich/2023/uavmappingtask.jpg&#39;&gt;&lt;img src=&#39;/competitions/enrich/2023/uavmappingtask_t.jpg&#39; alt=&#39;UAV mapping task&#39; title=&#39;UAV mapping task&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/competitions/enrich/2023/uavmappingtask.jpg&#39;&gt;UAV mapping task&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Many other teams had the same problems and it was a great week anyway. I would definitely go there again. Next year the organiser wants fully autonomous robots.&lt;/div&gt;

&lt;h2&gt;Links&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://enrich.european-robotics.eu/&#39; class=&#39;external&#39;&gt;https://enrich.european-robotics.eu/&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://107-systems.org/&#39; class=&#39;external&#39;&gt;https://107-systems.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    </content>
</entry>
<entry>
    <title>Freyja</title>
    <link rel='alternate' href="https://robotika.cz/robots/freyja/en"/>
    <id>https://robotika.cz/robots/freyja/en</id>
    <updated>2019-08-07T00:00:00Z</updated>
    <author><name>Jiří Iša (compiled by Martin Dlouhý, translation by František Brabec)</name></author>
    <summary type='html'>
        Freyja is four-wheels differentially driven robot, which turns with skidding.
It is work of Swiss &lt;b&gt;Cogito Team&lt;/b&gt;, which is one of the „organisations”
involved in &lt;i&gt;SubT Challenge Tunnel Circuit&lt;/i&gt;. Freyja was growing up for 3
months from nothing and in one person it is almost unbelievable, that it can be
done &amp;hellip;  so it would be pity not to document it! &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
&lt;b&gt;Update:&lt;/b&gt; 4/10/2023 &amp;mdash; &lt;a href=&#39;/robots/freyja/en#231004&#39;&gt;Freyja 2.0, spring and summer 2023&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;div class=&#39;p&#39;&gt;https://robotika.cz/robots/freyja/&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://sites.google.com/site/cogitoteam/subterranean-challenge&#39; class=&#39;external&#39;&gt;https://sites.google.com/site/cogitoteam/subterranean-challenge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;This &#34;Article&#34; is a compilation of Jirka&#39;s email reports during the preparation for
&lt;a href=&#39;/competitions/subtchallenge/tunnel-circuit/en&#39;&gt;SubT Challenge Tunnel Circuit&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;It is necessary to consider the very limited time frame in which Freyja was created &amp;mdash;
decision was made after our return from &lt;a href=&#39;/competitions/subtchallenge/stix/en&#39;&gt;SubT
STIX in Idaho Springs / Colorado&lt;/a&gt; in April and by the end of June it had to
qualify (demonstrate an autonomous ride, show functionality of manual and remote
EMERGENCY STOP and demonstrate the passage through a narrow space). The competition itself begins
on 15 August 2019.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freya: as of 27.5.&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Freyja was born. Its weight (without batteries) is 25 kg. A little can be shaved off by
removing some electronics (pc, stereocamera) and placing it into the backpack (see attachment).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The design is mostly completed. A couple of components such as SICK lidars are missing but
they are not required for homologation. The cable is not ready. Batteries are not yet procured.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The good news is that it can withstand weight of a person. The bad news is that
combining the selected tires with skid-steering was not thought through. So now
I am afraid not just of it ripping apart but also of turns. I almost want to redesign it
as an articulated robot &lt;a href=&#39;/robots/kloubak/en&#39;&gt;kloubak&lt;/a&gt;, but in reality there is no risk of that given the time constraints &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
Also, it wouldn&#39;t fit into my luggage.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel right&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/freyja/freya-birth.jpg&#39;&gt;&lt;img src=&#39;/robots/freyja/freya-birth_t.jpg&#39; alt=&#39; IMG_20190527_211726883.jpg&#39; title=&#39; IMG_20190527_211726883.jpg&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/freyja/freya-birth.jpg&#39;&gt; IMG_20190527_211726883.jpg&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zbyněk: &lt;i&gt;Wow. That&#39;s pretty impressive! Have you sent the link where you bought its
wheels?&lt;/i&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.uumotor.com/9-10-13-15-350w-500w-800w-mono-shaft-motor.html&#39; class=&#39;external&#39;&gt;https://www.uumotor.com/9-10-13-15-350w-500w-800w-mono-shaft-motor.html&lt;/a&gt;
respectively. &lt;a href=&#39;https://www.uumotor.com/ws/p/48v-800w-gearless-brushless-mono-shaft-motor/&#39; class=&#39;external&#39;&gt;https://www.uumotor.com/ws/p/48v-800w-gearless-brushless-mono-shaft-motor/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;PavelS: &lt;i&gt;It is a pity that no one has learned from Robík - 
I wrote and spoke a lot regarding problems with skid-steering,
most of the participants saw it on their own eyes ...&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&#34;Nobody learned&#34; is a bit of an extreme statement. I took note of it and made design changes, for example the wheels are rounder in the transverse direction. 
The frame is designed for excess strength. Hence the fear of tearing. And I regret that due to the luggage contraints the robot can&#39;t be wider to have better grip.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;On the other hand, despite repeated attempts to find out exactly what the
problems are I was only able to find out that &#34;I would not again design a
skid-steering robot&#34;,&#34; &lt;a href=&#39;/robots/eduro/en&#39;&gt;Eduro&lt;/a&gt; had no chance because of
the caster &#34;and other advice on what NOT to build. Just yesterday: &#34;I wouldn&#39;t
(yet) duplicate Kloubák&#34;.  I can combine all this knowledge with my own
experience - for example that to design a suspension for a heavy robot is not
easy. In such circumstances I have two options: Do nothing, or take a guess and
choose a variant that may be functional and that I may be able to
manufacture.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;After all, I rode with both &#34;mob&#34; and six-wheeler, so I have some experience with skid-steering robots. Which is why my previous designs didn&#39;t involve skid-steeing.
&lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; If I guessed wrong, &#34;do nothing&#34; may still very well be the path I ultimately choose.
I&#39;ll live with it.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;Well, it looks like a flame ... :(&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;So far, as far as I am concerned, Robík was the only robot that was able to navigate more complex terrain -
and that is still true. Further, it&#39;s still the &#34;simplest design&#34; - I would stick with that assessment too. Other teams chose this design as well so it is not completely misplaced (CMU, Colorado / Husky, now
CRAS). Even after a month, Kloubík does not go forward on a straight line and it is quite possible that it will end up being reconfigured as Robík.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;I disagree with PavelS (we&#39;ve heard it many times, but in practice it
used to be better) ... and for the reasons I saw back then I would have chosen it again (see my
older emails about proposing to buy it). I will change my mind once someone builds an alternative platform which within 30 days will be able to handle the terrain in the tunnel.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So for the time being I have no problems. Just fears. So it is hard to describe the problem.
One concern is that at this point the grip on the smooth floor is such that no skidding
will take place. Not at all.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The best way to describe it would probably be by showing a video from the perspective of an outside observer in
a situation where a skidding robot is in trouble. Otherwise, as he says, it is quite a vague description.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A somewhat agitated debate where we clarify our views and assumptions is useful. If we were only to scream at each other and repeat the same thing over and over again,
then there would be no point.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;At the moment I see it pretty much like Martin &amp;mdash; it was the only platform
which had some achievements and has a non-zero chance of doing it again. And when tanks use this method,
it must be possible to make it work. I don&#39;t have time for inventions. In the same time I am aware of the risks, and
therefore, all my participation is conditioned on making it &#34;run a meter and then turning&#34;. If the robot can do this,
it will be able to do the other things too. If not, it was fun and I have a lot of new parts for my old
robots.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freyja: Status to 2.6.&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The light is on, the wheels are spinning (in the air). I.e. the base cabling is complete. Including the
Red button.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Scheduled for the next week: Drive it manually with a joystick. And if I am really lucky, getting the remote stop to work.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;When you finally place the robot on the ground (I am sure you&#39;ve done so already), do you want to just shoot a video with the STOP button - manual and remote (Ctrl + C)?
If you file it as &lt;/i&gt; unlisted &#34;&#34; or something like &#34;Robotika / Freyja SubT Tunnel
Circuit Qualification &#34;, I can forward it directly&#34;&#34;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No, I didn&#39;t put it on the ground yet. It&#39;s too menacing for that  &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; But driving it with a joystick while in the air seems to work. It is a bit disappointing that I can&#39;t (yet) feed the controllers faster than 20 Hz. The pleasant surprise is that &#34;odrive&#34; (already?) supports
watchdog, so when I implement it on my side, the engines should stop maintaining speed after CTRL + C is pressed.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To qualify, do you really just need a red button and ctrl + c or do you need
the remote e-stop as well? I assume that joydrive is acceptable for homologation
given that some of the teams do nothing else in the tunnel. Do we need to pretend object detection?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;no need to pretend to detect an object for sure (we&#39;ve already done that at STIX
 and once is enough per team). e-stop is debatable but I will tell them that we use 
unified SW and if they insist, they can send two samples to Switzerland
(I suppose they won&#39;t insist after that). What we talked with Zbyňek, the kill switch is probably primarily for drones and &#34;dangerous monsters&#34; and Freyja 
looks friendly. But the earlier I send them the &#34;homologation videos&#34;, the sooner
I will be sure that they won&#39;t bother us with the E-stop.&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freya - first videos (milestone set) (7/6/2019)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Martin, tell me if the first video suits you.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The second one shows that on four wheel vehicles it will probably be better to measure odometry as a minimum from the
encoder on one side instead of the average of all of them. This seems obvious, but it&#39;s implemented wrong in the code. PID is not tuned, the electrical current limit is low, so I wouldn&#39;t make big conclusions based on the second video.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I even saw it make a turn (milestone reached!) But because of the rubber and weak PID it
was either a very uncontrolled slip on that smooth floor, or a really wide turn
outdoors on asphalt. I also rode on it for a meter &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/L738ZErWUe8&#39; class=&#39;external&#39;&gt;https://youtu.be/L738ZErWUe8&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://youtu.be/aAVI79Q2SiE&#39; class=&#39;external&#39;&gt;https://youtu.be/aAVI79Q2SiE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;:) I was just startled by the darkness in the first half of the first video -
the lights just go off when you press the STOP button. Hopefully they will understand that the second STOP
it is from the keyboard (you may have commented on it, I watched it without sound). I will send it and 
we will see&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Good idea, but did not comment. &#34;Remote stop&#34; is in the caption below the video.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;PavelJ: &lt;i&gt;Nice :-) I just don&#39;t want to believe it&#39;s just 45cm wide. It appears more massive.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;46 cm is a more accurate number. But almost half of it is wheels, so that&#39;s why
it looks a little wild. The body is narrow. 24 cm could be the width &lt;a href=&#39;/robots/mobos/en&#39;&gt;mobos&lt;/a&gt; without
one wheel, right?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;With a better PID setting, it looks better: &lt;a href=&#39;https://youtu.be/ROKj9tp_a94&#39; class=&#39;external&#39;&gt;https://youtu.be/ROKj9tp_a94&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And now I&#39;m going to reinforce the wheel attachments because they got loose :-/&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Maybe this is my &#34;low week&#34;. Paradoxically, because the development takes place precisely
as expected :-) No miracles are happening.&lt;/b&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freyja: as of 16.6.&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Good news:
  Driving it with joystick works including logging data from cameras and stereo cameras.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Bad news:
  Mostly.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Source problem:
USB is reaching the limit of its capabilities or just crossed them. Each device requests
certain transmission speed and each of them asks for the upper bound of what they may need. Given four
cameras, two stereo cameras, a joystick and the wifi module it all adds up. The USB then refuses to
cooperate. &lt;a href=&#39;/articles/reviews/kayeton-camera/en&#39;&gt;Kayeton cameras&lt;/a&gt; simply require the maximum bandwidth available which is the final straw : - /&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Current Solution:
Custom fork of uvcvideo drivers, which for compressed stream cameras (i.e.
kayeton) makes its own estimation of the data transferred, whereas for uncompressed stream
(Stereo Mynt Eye) respects the device&#39;s override. I also attached the
joystick and the wifi in various ways to make sure they are on other USB &#34;bus&#34;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Future Risk:
I haven&#39;t yet connected IMU and Franta&#39;s &lt;a href=&#39;/articles/reviews/lora/en&#39;&gt;LoRa module&lt;/a&gt;. They also attach via USB: - /&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Possible future solutions:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Get rid of the USB wifi and Wifi router instead of the current silly Ethernet switch. Or try to get virtual wifi going on an integrated wifi module.&lt;/li&gt;

&lt;li&gt;Maybe we could add RaspberryPI or something like a USB proxy, but I don&#39;t really want to. Among other things, because it would not fit.&lt;/li&gt;

&lt;li&gt;Reduce FPS cameras from the current 30 Hz to 15 Hz.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Another unfortunate consequence:
Looks like the USB controller is warming up so much that even the CPU next to it complains of
high temperature. And I haven&#39;t started any processing yet.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Interesting tidbit:
I log about 3 GB per minute. I.e. The disk drive I use can store only data from two hours of driving and even the largest disk I have laying around does not fit dazzlingly much.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;good god! :).&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;3GB / min - do you have some &#34; - -stat&#34;, how much each process uses up? I assume this is
without lidar, right? 4 cameras, 2 stereo cameras?&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Excellent question. I added a log of statistics to the logviewer. It looks like approx
half of the data is the depth map from the front of the stereo camera. So when I include the rear one, I&#39;m screwed. But the good news is that the depth is at the moment
meters in floats. When I change it to centimeters or millimeters and protobuf saves it as varint, it should decrease drastically (to about half?). For the price of more 
demanding serialization / deserialization. The bad news is that the rear stereo camera
has almost twice higher framerate. Maybe we need to look for compression
algorithms for depth maps.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Four minute log (hm, so it&#39;s more than 3GB / min outside):&lt;/div&gt;

&lt;pre&gt;.configuration: 1.83 KB
                camera_back.jpeg: 1.34 GB
               camera_front.jpeg: 1.57 GB
                camera_left.jpeg: 1.54 GB
               camera_right.jpeg: 1.32 GB
                  freyja.buttons: 163.86 kB
              freyja.pose2d_info: 78.62 kB
          freyja.velocity2d_info: 69.56 KB
            heartbeat.heart_beat: 154.78 KB
                   joydrive.beep: 217.01 KB
         joydrive.velocity2d_cmd: 239.72 KBs
               joystick.joystick: 683.92 KB
             logging.LoggingInfo: 385B
               loginfo2text.text: 313B
           selfcheck.LoggingInfo: 392 B
                stereo_back.jpeg: 1.04 GB
          stereo_front.depth_map: 6.20 GB
               stereo_front.jpeg: 545.89 MB&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;
stereo_front.depth_map: 6.20 GB
is it a zipped output? or an unpacked array? (working with Husky or the virtual track I couldn&#39;t survive handling the depth map without compression) :(
thanks
   m.
ps assume you use your own code for all the logging, right?
&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Unpacked array. I wouldn&#39;t expect much from the zip compression. You found it helpful? If I store integers and subsequent values are stored as a difference from the previous value, then due to the high &#34;flatness&#34; it could produce a very small number of
different values ​​and their combination and then the zip compression could work well.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yes, they are all protocol buffers.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zbyněk: &lt;i&gt;Yeah, but zipping it isn&#39;t a good idea CPU-wise. The only thing
worked somewhat reasonably was lz4. Unless you had an unused core that
could take care of it.&lt;/i&gt;&lt;/div&gt;

&lt;pre&gt;$ ls -lh / tmp / depth
-rw-r- -r- - 1 Jirka Jirka 6.2G Jun 17 18:57 /tmp/depth.log
-rw-r- -r- - 1 Jirka Jirka 898M Jun 17 19:11 /tmp/depth.log.gz&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;When gzip -9.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;So there would be room for improvement. Regarding cpu, it may be worth considering to
log the data uncompressed and then packing it afterwards.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And logging it in centimeters is even smaller.&lt;/div&gt;

&lt;pre&gt;$ ls -lh /tmp/depth_cm.log
-rw-r- -r- - 1 Jirka Jirka 2.0G Jun 17 20:12 /tmp/depth_cm.log
-rw-r- -r- - 1 Jirka Jirka 522M Jun 17 20:32 /tmp/depth_cm.log.gz&lt;/pre&gt;

&lt;hr&gt;

&lt;h2&gt;Freyja: as of 24.6.&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;I was slowed down by a cold. And my daughter keeps throwing up. And on top of all that we have some 60 people at work coming for a visit from all over the world: - /&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;In theory, I have programmed a drive following the right wall according to the stereocamera. That should be sufficient for homologation.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;In practice, it did not drive more than three meters on the balcony, where there is not much space.
At home, the stereocamera has problems with a not very textured, highly reflective floor. In is possible, that at the test polygon (ie in the basement) it will be similar.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;Do you have a lidar involved? Wouldn&#39;t that be easier? OSGAR on Freya is probably still
not available, right?&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Lidar is not involved and will not be by the end of the week. And yes, it would be easier for the drive along the wall.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;SubT Qualification - Robotika Robots Freyja and Kloubak (28/6/2019)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;Thanks for sending Martin. We&#39;ll go ahead and accept these videos as
sufficient for qualifying the two additional platforms. We would still be
interested in seeing any other videos, but nothing else is required for
bringing your platforms to the Tunnel Circuit and competing with them.&lt;/b&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Martin, can you send them a new video?&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://youtu.be/VMXuGFwEE8I&#39; class=&#39;external&#39;&gt;https://youtu.be/VMXuGFwEE8I&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;@ &#34;piece of cake&#34;: You don&#39;t even know how I froze when the next turn would not succeed &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freyja: as of 30.6.&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Qualified.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What was the problem:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Sometimes (I suspect high cpu or motherboard temperature) odrive does not start and the log contains &#34;not enough bandwidth&#34; messages. I filmed the homologation videos with the cameras off.&lt;/li&gt;

&lt;li&gt;Even though everything runs (including cameras), the drive seems sluggish.&lt;/li&gt;

&lt;li&gt;Driving around a corner without a map, when the stereo camera looks just forward and can&#39;t see the corner.&lt;/li&gt;

&lt;li&gt;The compass sometimes jumps sixty degrees at a time. For now I ignore such jumps but they should not occur.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;What worked nice:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Freyja forceful turns no longer loosen the wheel mounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;What I have planned for the next week:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Not much. My parents are visiting.&lt;/li&gt;

&lt;li&gt;If I find some time, I will be either solving some of the known problems or I will look into the suitability of the Jupyter Notebook as an environment for the operator. Running Python on a robot and accessing it from a browser seems like an interesting option.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h2&gt;Freya: as of 7.7.&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SICKs are attached and connected. They&#39;re producing (somewhat strange) data.&lt;/li&gt;

&lt;li&gt;I added a 1.8 TB hard disk formatted as ZFS with compression. An estimated 2.5 - 3.5 TB of log (~ 13 - 19 hours of driving) should fit on it.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Overcome problems:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;SSD is so fast that the ZFS driver can&#39;t manage the data inflow, crashes and takes the system down with. There were no error messages I could use : - / The solution was to switch ZFS from asynchronous to synchronous mode. I don&#39;t know why. Lucky guess.&lt;/li&gt;

&lt;li&gt;I can change SICK&#39;s IP address even without magic applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Unconquered problems:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;SICK Sopas and App Studio for Linux do not exist and do not run under Wine. Without the App Studio, I cannot package their Luu properly. I don&#39;t plan to worry about this.&lt;/li&gt;

&lt;li&gt;The measured distances from both SICKs somehow &#34;pulsate&#34;. The whole thing oscillates about ten centimeters back and forth. If you&#39;ve seen it before, let me know what to do with it.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Remains to be added:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Critical hw: Remote shutdown.&lt;/li&gt;

&lt;li&gt;Noncritical hw:&lt;/li&gt;

&lt;li&gt;Better side boxes with on / off switches, emergency stop button, cameras and lightbulbs. Cameras and bulbs stick out and suffer from friction when carrying the robot around and on impacts into walls.&lt;/li&gt;

&lt;li&gt;Lora. Although I still don&#39;t know what we&#39;re going to do with it.&lt;/li&gt;

&lt;li&gt;Sw: Everything.&lt;/li&gt;

&lt;li&gt;Organization: plane tickets, batteries for USA.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Franta: &lt;i&gt;Re LoRa - of course it could be used to some coordinated
exploration (swarm, etc.), but even without this, robots should at least
broadcast found artifacts and position, speed, orientation, etc. and be on receiving end for
stop, turn, return to base, go to x / y coordinates
etc.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Sounds nice. And it has a few weak spots:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;We don&#39;t have artifact detection, and we&#39;re just talking about setting up a coordinate system, so there&#39;s nothing to report.&lt;/li&gt;

&lt;li&gt;The boxes are with you, so no one can integrate them into either Osgar or Erro. So there is no * where to report.&lt;/li&gt;

&lt;li&gt;We don&#39;t have a Control Station and nobody&#39;s programming it. So there is nowhere to report.&lt;/li&gt;

&lt;li&gt;The operator doesn&#39;t know the robot&#39;s status, so * why * would he call it back?&lt;/li&gt;

&lt;li&gt;* Who * program this and * when *?&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;If there is a plan for these things, I want to hear it. I don&#39;t know there is. If it is
a long-term vision, not a short-term plan for Pittsburgh, that&#39;s different. Then
I would postpone this whole discussion to after Pittsburgh and resolve it properly.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freyja can drive through a door (open &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;https://youtu.be/ZlWl-0S2OXk&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A lot of sensors are not yet integrated, so a big part of that debugging
video is black. By the time I start using ima, I should be able to detect stereo obstacles
closer to the ground. I also removed the side lamps because they are in the way.
I want to redo them. And I will have to shade the front and rear lights to keep them from shining
directly to the cameras.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;However, I expected that my first big robot to successfully pass through the door
will be Clementine. I wasn&#39;t able to do it with Eduro if I remember well.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;PS: It can probably drive through closed doors too &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freya: as of 14.7.&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Add hw:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;I redesigned the side camera mounts and the lights so they wouldn&#39;t damage so easily.&lt;/li&gt;

&lt;li&gt;I have replaced the plastic spacer screws with metal ones, which should prevent cross threading.&lt;/li&gt;

&lt;li&gt;I swapped the board under the PC whose corner I broke off in the middle of the call on Wednesday.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;I&#39;m starting to put sw together:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Local planner over lidar data (no mapping) works. See video &#34;Passing through the Door&#34; in the week. Stereo cameras are not yet integrated into it.&lt;/li&gt;

&lt;li&gt;Global localization: I have a prototype with MRTP rbpf-slam &lt;a href=&#39;https://www.mrpt.org/&#39; class=&#39;external&#39;&gt;https://www.mrpt.org/&lt;/a&gt;. It&#39;s basically what Pavel tried but without ROS. Again, just over the lidar data. And (so far) only in 2D. It is quite irritating that even after ten years of attempts I cannot write my own custom SLAM :-(&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Catching up on organizational things:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;I bought plane tickets.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 266px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/robots/freyja/map.png&#39; alt=&#39; SLAM&#39; title=&#39; SLAM&#39; class=&#39;border&#39;  width=&#39;260&#39; height=&#39;310&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt; SLAM&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Freyja: as of 21.7. 01.10 The Good, The Bad, The Ugly&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;The Good:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;SLAM is integrated. If the robot feels like it, it&#39;s not too far and it&#39;s full moon, the robot returns back to start.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;The Bad:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;I wrote off one SICK. Freyja * can * climb a wall, but can&#39;t *stay* there : - /&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;The Ugly:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;For some reason, the relatively trivial processing of lidar data is slowing down and messages are piling up there. When not driving, it can handle almost 10k messages per second, during
a drive sometimes data from 15 FPS lidar are piling up. The first suspicion falls on cpu
throttling due to overheating. After increasing the speed of the cooling fan it no longer overheats but the problem persists. Another suspect is the Linux task scheduler, but
according to &#34;perf sched record&#34; et al. everything is fine and nothing is throttled.
According to htop the CPU load is around 20%. The accumulation of messages results in driving based on data that is several seconds old so the robot gets lost and crashes into the wall. If it doesn&#39;t climb it. I&#39;m starting to feel hopeless.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;So I managed to link the slow processing to high CPU temperature (&gt; = 75
C). The trouble is that it gets warm like this, even if I leave the robot open. So
it&#39;s not due to insufficient ventilation. Probably need to install liquid nitrogen tanks.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;1) how to read SICK data - do you use sleep to get to 15Hz,
or did you force it to &#34;stream&#34;? By default, it is capable of sending you the same data 10 times&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yes, I&#39;m streaming. So unless I don&#39;t remember correctly or unless I measured something else,
it runs at 15 Hz. I can check &amp;hellip; I confirm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;2) do you plan to temporarily replace TIM with your old (TIM551?)&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Yes, my TIM551 is now screwed in and I carefully run after the robot &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;I needed such an uncle sooner &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; And there were times, not so long ago, when I couldn&#39;t write such an email: - /&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Context for others: SICK replacement is on its way.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;The problem was / is quite complicated. A little like an airplane disaster.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;1) The computer is overheating and the CPU responds by slowing down.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;2) After slowing down the individual modules, messages begin to accumulate in various places instead of reaching their destination.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;3) Watchdog runs on ODrive. If it doesn&#39;t receive the control signal for a while, it stops.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;4) Such a stop can only be recovered from by reboot of ODrive, which the code attempts.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;5) Reboot of ODrive takes about 20 seconds. (It takes a long time to negotiate between the variety and the PC on the current protocol and to set all possible RPCs.)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;6) In the case of a reboot after the watchdog stop, I unfortunately managed to trigger a blocking call until ODrive wakes up.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;7) During the blocking call, more messages were accumulating.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;8) After restarting odrive there would be half a minute worth of buffered control messages.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;9) A lot of confused instructions follow because they were calculated based on delayed measurements.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;10. Odrive executes and rushes to climb a wall.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;11) That 20s wait along with a listing on the console that it had already returned to base, was the reason
why I didn&#39;t respond fast enough.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;PavelS: &lt;i&gt;Hi, just such an idea - heatpipe cooling could be more effective and
the radiator could be placed outside the cooled compartment.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I was wondering if anyone would respond to that nonsense (or not?) &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Thanks.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;First, I will try software solutions, such as setting BIOS fan speed to
maximum, possibly also disabling Turbo Boost. Intel Pstate, Linux
Control of the cpu frequency, demonstrates typical properties of Intel software: It is a
piece of crap. I&#39;ll try to reset it, or turn it off &amp;amp; replace it. For example
when I switch from &#34;performance&#34; to &#34;ondemand&#34;, it takes * much * longer to overheat the cpu again. &#34;ondemand&#34; holds it just below 75 ° C much more aggressively without
anything freezing. I.e. in the &#34;performance&#34; mode I get worse performance. Ehm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zbyněk: &lt;i&gt;Yeah, trying to turn off Turbo Boost also occurred to me. If you figure out how to do it
let us know. A while back I was looking for a case that acts as a
cooler and the processor is connected by a heatpipe - ie basically what
Pavel suggested. At work I used to use such a large CPU cooler to cool the warm side of a peltier and it for sure chilled over 100W.&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freya: as of 28.7. (Own SLAM 5/5)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Resolved problems with overheating: I turned off the BIOS Turbo Boost cpu, turned on fans to
100%, I am significantly subsampling data from kayeton cameras.
 
RBPF SLAM a) thought for a long time, b) got lost. ICP SLAM behaves
better, but it also gets lost. Finally, I wrote my own hybrid with the help of Ceres
between ICP and GraphSLAM using the ORB SLAM trick (keyframes). It&#39;s written 
taking into account real-time requirements and is customized for the specific task (rotation information
is absolute because the compass; &#34;closed loop&#34; is usually a special case,
because the robot returns home following its own tracks). It should be easier
to integrate detected &lt;a href=&#39;/articles/reviews/apriltag/en&#39;&gt;april tags&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;The result is five successful returns of the house in five consecutive trips.&lt;/b&gt;
    
Of these five rides, it came back three times with its butt first, twice with its front. Long live symmetrical robots.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Also, in almost two hours of testing, the robot only lightly touched the wall twice. No
wild bumps. This is new. This means that for now it is processing data fast enough.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A new SICK has arrived, but I&#39;m still driving with my own old one.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Concerns for the future: i) There is little time and a lot of work to do. ii) I have no representative
test environment. iii) SLAM may not work with the same parameters in different 
environments. iv) I obviously operate close to the thermal / computing / power limits.
And I still miss one stereo vision and artifact detection from four cameras. (v) In a narrow space or in a corner, Freyja can get into a situation where it is afraid to go
both forward and backward.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;MD: &lt;i&gt;:) congratulations :) 5/5 good enough!
Another gotcha scenario I can think of - can you incorporate a sloping area / garage ramp? What about the obstacles that do not show on the lidar?
There is nothing better than a regular Freyja update --- it always gives me hope :)&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Well, I got depressed in the middle of the week. The PC overheated and resisted my attempts, the messages
were delayed and it wasn&#39;t possible to debug, SLAM didn&#39;t work and I knew that
to write a functional myself was something I never managed to do.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;And you are right, &#34;it&#39;s 2D&#34; should be on the list of risks. In addition to the whole inclined surface problem I would also include &#34;the robot drove one wheel on a brick&#34;. That&#39;s what I meant by &#34;I don&#39;t have a representative test space.&#34; However, I do have a garage ramp. I could try that.&lt;/div&gt;

&lt;hr&gt;

&lt;h2&gt;Freya: as of 4.8.&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Freyja got its suitcase (see appendix).&lt;/li&gt;

&lt;li&gt;Starting / stopping the program and displaying and playing data in the browser
works reasonably well (see next appendix). Control via a browser is not finished yet.
Lesson learned: ipywidgets do not support mouse click on image, I didn&#39;t manage to make ipyevents work.&lt;/li&gt;

&lt;li&gt;The soldered power cord has fallen off of one of the encoders. It is in an unfortunate place making the repair difficult. The repair is completed. I would hate to see something like this happen during the competition.&lt;/li&gt;

&lt;li&gt;I&#39;m getting message delays again. The current main candidate is Erro itself
in the place where I store logs. If I don&#39;t flush after every message, it gets better.
If I don&#39;t log at all, it gets even better. Not logging to a compressed
file system also helps. But I haven&#39;t found a solution that works to my complete satisfaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/freyja/freyja-as-lagguage.jpg&#39;&gt;&lt;img src=&#39;/robots/freyja/freyja-as-lagguage_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;231004&#34;&gt;&lt;/a&gt;
&lt;h2&gt;Freyja 2.0, spring and summer 2023&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/freyja/freyja2.jpg&#39;&gt;&lt;img src=&#39;/robots/freyja/freyja2_t.jpg&#39; alt=&#39;Freyja 2.0&#39; title=&#39;Freyja 2.0&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/freyja/freyja2.jpg&#39;&gt;Freyja 2.0&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Since the last photos four years ago, Freyja grew up. New &lt;a href=&#39;https://shop.luxonis.com/collections/oak-cameras-1/products/oak-d-pro-w?variant=43715946447071&#39; class=&#39;external&#39;&gt;OAK-D Pro W&lt;/a&gt; stereo cameras replaced older cameras from now bankrupt MyntEye. The new cameras have their own RGB sensors, so I removed the original standalone RGB cameras. I also replaced RGB cameras on the sides with &lt;a href=&#39;https://shop.luxonis.com/collections/oak-cameras-1/products/oak-d-sr&#39; class=&#39;external&#39;&gt;OAK-D SR&lt;/a&gt; stereo cameras. This way Freyja lost color perception to the sides, but gained depth perception and thus can detect obstacles next to the robot.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Freyja now carries a single &lt;a href=&#39;https://www.vanjee.net/vanjee_products/196228.html&#39; class=&#39;external&#39;&gt;four-line lidar from VanJee&lt;/a&gt; with a full circle view instead of two single-line SICK lidars with 270 degrees field of view.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I have added two &lt;a href=&#39;/articles/ardusimple-rtk3b/en&#39;&gt;simpleRTK3B GNSS modules&lt;/a&gt; with an RTK base station. These modules tell the robot the heading, pitch and roll, because after &lt;a href=&#39;/competitions/subtchallenge/tunnel-circuit/en&#39;&gt;exploring coal mines&lt;/a&gt; in SubT, Freyja will participate in &lt;a href=&#39;/competitions/elrob/2024/en&#39;&gt;ELROB&lt;/a&gt;, where she is going to drive back and forth outdoors in a role of a robotic mule.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I will use &lt;a href=&#39;/articles/pozyx/en#220201&#39;&gt;UWB BU01&lt;/a&gt; to follow the leading person in the initial stage of the ELROB run.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;What&#39;s left from version 1.0? ODrive motor controllers, even though with much better settings of current limits. They are much less timid now and do not shut down at every increase of current. I optically isolated their USB connection, because ODrives on other robots in SubT burned because of ground loops.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;The robot is still controlled by an Intel NUC. Besides Hall sensors in hub motors, only one original sensor is left. And that is &lt;a href=&#39;https://www.robot-electronics.co.uk/products/sensors/compass-sensors/cmps14-tilt-compensated-compass.html&#39; class=&#39;external&#39;&gt;CMPS14&lt;/a&gt;, a magnetic compass combined with a gyroscope and an accelerometer.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;With new 3d-printed wheel mounts from carbon-reinforced PLA, Freyja is ready for new off-road adventures.&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;692&#34; height=&#34;389&#34; src=&#34;https://www.youtube.com/embed/yzmFZMYC65c&#34; title=&#34;Freya off-road, manual driving&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/freyja/en#email&#39;&gt;contact form&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Paula</title>
    <link rel='alternate' href="https://robotika.cz/robots/paula/en"/>
    <id>https://robotika.cz/robots/paula/en</id>
    <updated>2021-02-02T00:00:00Z</updated>
    <author><name>Martin Dlouhý</name></author>
    <summary type='html'>
        Paula je loňský model malé drony do dlaně. Je to hračka na doma za necelých 3kkč
od DJI a Intelu. Oficiální jméno zní &lt;b&gt;Ryze Tello&lt;/b&gt;. Standardní použití je
řízení pres WiFi z mobilního telefonu, ale výrobce podporuje i oficiální SDK.
Tento blog je pro podobně praštěné, na které již to „domácí vězení” trošku padá
a potřebují rozptýlit. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &lt;b&gt;Blog update:&lt;/b&gt; 
10/6/2023 &amp;mdash; &lt;a href=&#39;/robots/paula/en#230613&#39;&gt;Tello go, go, go!&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210202&#39;&gt;210202 - Základní info&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210203&#39;&gt;210203 - Google Play 2.8&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210204&#39;&gt;210204 - command &amp;quot;command&amp;quot;&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210205&#39;&gt;210205 - H.264 video&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210206&#39;&gt;210206 - Takeoff!&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210207&#39;&gt;210207 - Selfie&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#210208&#39;&gt;210208 - cv2.Stitcher_create&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/robots/paula/en#230613&#39;&gt;230613 - Tello go, go, go!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog / Paula&lt;/h1&gt;
&lt;a id=&#34;210202&#34;&gt;&lt;/a&gt;
&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/tello.jpg&#39;&gt;&lt;img src=&#39;/robots/paula/tello_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;251&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;2. únor 2021 &amp;mdash; Základní info&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na &lt;a href=&#39;https://www.ryzerobotics.com/tello&#39; class=&#39;external&#39;&gt;Tello&lt;/a&gt; dronu jsem narazil před pár dny,
kdy mi na YouTube vyskočilo 3 hodinové video
&lt;a href=&#39;https://www.youtube.com/watch?v=LmEcyQnfpDA&#39; class=&#39;external&#39;&gt;Drone Programming With Python Course (2021)&lt;/a&gt;.
Jednak mne zaujalo, že je někdo schopen v tomto prostoru vysvětlit základy létání s dronou,
programování v Pythonu, OpenCV a pod. + i ta malá drona vypadala zajímavě. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Autor videa sice píše, že s DJI a Intel nemá nic společného, ale za mne jim reklamu rozhodně
dělá. Mne zviklal, že jsem si dronu objednal a dnes by měla dorazit (možná je to i motivace
začít sepisovat poznámky, než budu realitou nemile překvapen). Evidentně se nemohu dočkat/dospat,
protože bylo &lt;i&gt;3:45&lt;/i&gt;, když jsem prvně koukl na hodiny.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co je na té droně tak zajímavého? No připomíná mi to kombinaci staré &lt;a href=&#39;/robots/heidi/en&#39;&gt;Parrot ARDrone2 (Heidi)&lt;/a&gt;
s SDK a možností řízení přes WiFi a o něco novější mini-drony &lt;a href=&#39;/robots/jessica/en&#39;&gt;Parrot Rolling Spider (Jessica)&lt;/a&gt;.
Reklama slibuje 13 minut letu, streaming HD videa a snadné ovldádání. Je fakt, že &lt;a href=&#39;https://terra-1-g.djicdn.com/2d4dce68897a46b19fc717f3576b7c6a/Tello%20%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/For%20Tello/Tello%20SDK%20Documentation%20EN_1.3_1122.pdf&#39; class=&#39;external&#39;&gt;Tello SDK 1.3 (pdf)&lt;/a&gt;
má pouhých 8 stránek a projdete to za pár minut.&lt;/div&gt;

&lt;h3&gt;Řízení&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Drona se ovládá pomocí UDP paketů, kde na první pohled vidím tři kanály pro tři porty:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;8889 &amp;mdash; posílání příkazů&lt;/li&gt;

&lt;li&gt;8890 &amp;mdash; příjem stavů&lt;/li&gt;

&lt;li&gt;11111 &amp;mdash; příjem videa&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Defaultní IP adresa je 192.168.10.1 a předpokládám, že drona má DHCP s nastavitelným zabezpečením.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Příkazy jsou textové, jako &lt;i&gt;takeoff&lt;/i&gt;, &lt;i&gt;land&lt;/i&gt;, &lt;i&gt;streamon&lt;/i&gt;, &lt;i&gt;streamoff&lt;/i&gt;, tj. vlet, přistání,
zapnutí a vypnutí posílání videa. Dále &lt;i&gt;emergency&lt;/i&gt; vypne všechny motory, &lt;i&gt;up 20-500&lt;/i&gt; vzlétne
nahoru 20cm až 5m, podobně &lt;i&gt;down&lt;/i&gt;, &lt;i&gt;left&lt;/i&gt;, &lt;i&gt;right&lt;/i&gt;, &lt;i&gt;forward&lt;/i&gt;, &lt;i&gt;back&lt;/i&gt; &amp;hellip; a to už jsme
na čtvrté stránce dokumentace SDK. Zbývá otočení &lt;i&gt;ccw 1-3600&lt;/i&gt; (conterclockwise/proti směru hodinových ručiček),
tj. až 10 otáček, podobně &lt;i&gt;cw&lt;/i&gt; ve směru hodinových ručiček. S &lt;i&gt;flip&lt;/i&gt; a &lt;i&gt;go x y z speed&lt;/i&gt;
už máte všechny jednoduché stavební bloky „pro děti” (ano, těm je tato hračka primárně určena).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Drsněji vypadá &lt;i&gt;curve x1 y1 z1 x2 y2 z2 speed&lt;/i&gt; což by měl být oblouk. Rychlost se pak nastavuje
pomocí &lt;i&gt;speed 10-100&lt;/i&gt; v cm/s, tj. do 1m/s. No a kdyby někomu nestačily tyto základní příkazy
tak ještě existuje &lt;i&gt;rc a b c d&lt;/i&gt;, který nastavuje podobně jako u &lt;i&gt;ARDrone2&lt;/i&gt; RC kanály &lt;i&gt;left/right&lt;/i&gt;,
&lt;i&gt;forward/backward&lt;/i&gt;, &lt;i&gt;up/down&lt;/i&gt;, &lt;i&gt;yaw&lt;/i&gt;, vše s hodnotami &lt;i&gt;-100&lt;/i&gt; až &lt;i&gt;100&lt;/i&gt;.&lt;/div&gt;

&lt;h3&gt;Čtení stavu&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Průběžně se můžete dotazovat na stav jednotlivých parametrů jako: &lt;i&gt;speed?&lt;/i&gt;, &lt;i&gt;battery?&lt;/i&gt;,
&lt;i&gt;height?&lt;/i&gt;, &lt;i&gt;temp?&lt;/i&gt; (teplota), &lt;i&gt;attitude?&lt;/i&gt; (IMU data pitch, roll, yaw), &lt;i&gt;baro?&lt;/i&gt;
(barometer v metrech?), &lt;i&gt;acceleration?&lt;/i&gt; (ve všech osách x, y, z), &lt;i&gt;tof?&lt;/i&gt; (time of flight,
předpokládám sonar dolu), &lt;i&gt;wifi?&lt;/i&gt; (SRN &amp;hellip; seriové číslo?). A to je všechno.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Konečně se lze zeptat na &lt;i&gt;Tello State&lt;/i&gt;, což by měl být string a jako příklad uvádí:&lt;/div&gt;

&lt;pre&gt;&#34;pitch:%d;roll:%d;yaw:%d;vgx:%d;vgy%d;vgz:%d;templ:%d;temph:%d;tof:%d;h:%d;bat:%d;baro:%.2f;
  time:%d;agx:%.2f;agy:%.2f;agz:%.2f;\r\n&#34;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; hmm, to vypadá spíše jako print příkaz do Pythonu nebo C &amp;hellip; tj. asi se lze zeptat na vše najednou??
To by asi byl i můj případ ale otázka, jak často se člověk může ptát?&lt;/div&gt;

&lt;h3&gt;Závěr&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;O videu se v SDK PDFku nic nepraví, tak doufám, že to bude nějaký standardní video stream nebo JPEG obrázky.
Stejně tak očekávám ještě nějaký „druhý protokol”, binární, pro interní účely. No možná to byly vyhozené
peníze, ale to se člověk nedozví, dokud to nezkusí (ano, nebo dokud nebude více sledovat internet, ale
to už mne pomalu přestává bavit). Tak uvidíme &amp;mdash; držte mi palce. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. pokud dronu máte a už s ní máte i nějaké zkušenosti, tak napište &amp;hellip; díky!&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;210203&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. únor 2021 &amp;mdash; Google Play 2.8&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem si ještě před vyzvednutím balíčku nainstaloval
&lt;a href=&#39;https://play.google.com/store/apps/details?id=com.ryzerobotics.tello&amp;amp;hl=en&amp;amp;gl=US&#39; class=&#39;external&#39;&gt;Google
Play aplikaci Tello&lt;/a&gt;. Co mne ale „trošku” vyděsilo bylo její hodnocení:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/tello-google-play.jpg&#39;&gt;&lt;img src=&#39;/robots/paula/tello-google-play_t.jpg&#39; alt=&#39;hodnocení Tello aplikace&#39; title=&#39;hodnocení Tello aplikace&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;312&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/tello-google-play.jpg&#39;&gt;hodnocení Tello aplikace&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Možná jsem měl zrovna smůlu, ale vzhledem k tomu, že nejčastější hodnocení byla
pouze jedna hvězdička, to bylo asi očekávané.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Tello drones are garbage.  Ordered 1 new for my son for christmas and came
with a dud battery. Returned and replaced with a 2nd and it worked for 1 day,
tho never stable and always floated to the side banging into objects. Then day
2 the back propellers began going haywire, outspinning the front making the
piece junk flip over every takeoff. Returned a 2nd time for full refund, no
replacements. We&#39;re done. Our worst experience ever on Amazon was this
garbage.&lt;/i&gt; &amp;hellip; no hned jsem se těšil více (ironie).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dronu a extra ochrannou klec jsem si včera večer vyzvedl. Pro referenci jsem kupoval:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://dronpro.cz/dji-tello-boost-combo&#39; class=&#39;external&#39;&gt;RYZE Tello Boost Combo&lt;/a&gt; (4 190 Kč)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://dronpro.cz/ryze-tello-ochranna-klec&#39; class=&#39;external&#39;&gt;RYZE Tello ochranná klec&lt;/a&gt; (299 Kč)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;První, co mne překvapilo, jak je to hrozně malinké. Balíček je jak malá
svačinka. Těch by se opravdu bez problému vešlo 10 do komínkui i na
&lt;a href=&#39;/robots/kloubak/en&#39;&gt;Kloubáka K2&lt;/a&gt;. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhé pozorování bylo, že jsem udělal dobře a koupil &lt;i&gt;combo&lt;/i&gt;. V praxi to
znamená dvě baterky navíc a malá nabíječka. V opačném případě by totiž člověk
chvíli lítal a pak musel dronu použít jako nabíječku a za hodinu by mohl udělat
další mini-pokus. Baterky se nabíjí postupně s tím, že u každé svítí, zda je
nabitá (zelená), právě se nabíjí (blikající zelená) nebo je ve frontě na
nabíjení (žlutá). Předpokládám, že jsou ještě nějaké chybové stavy, ale ty snad
hned tak neuvidím.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Baterky jsem nechal nabíjet přes noc, tj. teď mám „tři dávky”,
jenom to bude muset počkat (pes, snídaně, práce,
&lt;a href=&#39;http://www.robotika.sk/seminar.php&#39; class=&#39;external&#39;&gt;Robotour webinář&lt;/a&gt;, SubT středeční call
&amp;hellip;), takže report z prvního pokusu o navázání komunikace až zítra.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. ještě jsem se dozvěděl, že &lt;i&gt;EDU&lt;/i&gt; verze podporuje SDK 2.x a swarm dronů,
což základní (moje) verze nepodporuje, ale tím se nechám znervózňovat až zítra
&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 přiložený český manuál říká „revidovaná verze 1.2 z roku 2018”, takže
tyto mini-drony žádná novinka nejsou&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;210204&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. únor 2021 &amp;mdash; command &#34;command&#34;&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; aby k tomu nedošlo, prozradím vám konec celé detektivky:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 683px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/robots/paula/first-talk.jpg&#39; alt=&#39;první úspěšný pohovor&#39; title=&#39;první úspěšný pohovor&#39; class=&#39;border&#39;  width=&#39;677&#39; height=&#39;342&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;první úspěšný pohovor&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;(Cimrman)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nechtěla se se mnou mrcha bavit. Stáhl jsem si příklad
&lt;a href=&#39;https://terra-1-g.djicdn.com/2d4dce68897a46b19fc717f3576b7c6a/Tello%20%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/Both/Tello3(1).py&#39; class=&#39;external&#39;&gt;Tello3.py&lt;/a&gt;
odkazovaný z SDK a ani to nefungovalo. Aplikace na Android byla také taková
„zvláštní”. Obraz z kamery byl rozbitý, ale když jsem si uložil obrázek, tak
pak v galerii vypadal OK. Když jsem ale přepnul na nahrávání videa, tak
aplikace po chvíli napsala &lt;i&gt;Overheet, shutting down&lt;/i&gt;?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A rozuzlení? No ono je to vlastně v tom SDK v úvodu napsané: &lt;i&gt;Remark2: Send
“command” command to Tello via UDP PORT 8889 to initiate Tello’s SDK mode,
before sending all other commands&lt;/i&gt;, prostě je nejprve třeba poslat
příkaz/commnad &#34;command&#34;, aby se zapnul SDK mód.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A vlastně mi už funguje i první pokus v &lt;a href=&#39;https://github.com/robotika/osgar/compare/feature/tello&#39; class=&#39;external&#39;&gt;OSGARovi&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger tello-210203_225017.log
 k           name bytes | count | freq Hz
- - - - - - - - -  - - - - - - - - - - - - - -
 0            sys   916 |   6 |   0.6Hz
 1      tello.cmd     9 |   1 |   0.1Hz
 2    udp_cmd.raw     0 |   0 |   0.0Hz
 3 udp_status.raw 13343 | 101 |   9.9Hz
 4  udp_video.raw     0 |   0 |   0.0Hz

Total time 0:00:10.163582&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. po odeslání &lt;i&gt;command&lt;/i&gt; už chodí stavové data na 10Hz.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Data pak vypadají takto:&lt;/div&gt;

&lt;pre&gt;0:00:00.110007 3 b&#39;pitch:0;roll:0;yaw:-2;vgx:0;vgy:0;vgz:0;templ:92;temph:94;tof
:10;h:0;bat:27;baro:358.34;time:0;agx:-2.00;agy:6.00;agz:-999.00;\r\n&#39;
0:00:00.213012 3 b&#39;pitch:0;roll:0;yaw:-2;vgx:0;vgy:0;vgz:0;templ:92;temph:94;tof
:10;h:0;bat:27;baro:358.35;time:0;agx:-3.00;agy:7.00;agz:-998.00;\r\n&#39;
0:00:00.314018 3 b&#39;pitch:0;roll:0;yaw:-2;vgx:0;vgy:0;vgz:0;templ:92;temph:94;tof
:10;h:0;bat:27;baro:358.39;time:0;agx:-4.00;agy:4.00;agz:-1000.00;\r\n&#39;
&amp;hellip;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tj. baterky jsou asi skoro vybité (27%). Na večer experimentování z jedné baterky OK.
Tak první krůček snad učiněn.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;210205&#34;&gt;&lt;/a&gt;
&lt;h2&gt;5. únor 2021 &amp;mdash; H.264 video&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem se kousek posunul i s nahráváním videa, ale bohužel skoro o zanedbatelný
kousek:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger tello-210204_154413.log
 k           name   bytes | count | freq Hz
- - - - - - - - - - - - - - - - - - - - - - - - -
 0            sys     918 |    6 |   0.6Hz
 1      tello.cmd      30 |    3 |   0.3Hz
 2    udp_cmd.raw      12 |    3 |   0.3Hz
 3 udp_status.raw   13737 |  101 |  10.0Hz
 4  udp_video.raw 2494746 | 1801 | 178.6Hz

Total time 0:00:10.085510&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Tj. vidíte tam zhruba 2.5MB video UDP paketů. Přidal jsem i jednoduchou sekvenci:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger tello-210204_154413.log &amp;ndash;stream tello.cmd
0:00:00.017842 1 b&#39;command&#39;
0:00:02.009850 1 b&#39;streamon&#39;
0:00:05.010625 1 b&#39;streamoff&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj. v čase 0 zapni SDK protokol mód, v čase 2s spusť nahrávání a v čase 5s ho zase vypni.
Datově cca 1MB/s myslím zní celkem rozumně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Z &lt;a href=&#39;https://github.com/dji-sdk/Tello-Python/blob/master/doc/readme.pdf&#39; class=&#39;external&#39;&gt;https://github.com/dji-sdk/Tello-Python/blob/master/doc/readme.pdf&lt;/a&gt; cituji:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Listen to the data stream with the port number 11111 through UDP. The data stream is
encoded with the format of h264. Because size of encoded data of one frame image in this
stream is larger than the maximum load for a single udp transmission, every segment of one
frame encoded picture’data are divided into different blocks, with the unit size of 1460bytes.
And the last block of a image data is smaller than 1460 bytes.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; toto zní celkem rozumně. Jeden frame může být (typicky je) veliký a tak se rozdělí na několik
o velikosti 1460 bajtů&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;So by detecting the size of the block, it can be determined whether the data block is
the end of the data of the current single image. Splicing the last block in sequence with the
data blocks previously listened to, you can get the complete encoded data of a single image.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; toto ale už je divočina! Pokud vám přijde kratší paket, tak je to konec frame?! A co výpadky?&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger tello-210204_154413.log &amp;ndash;format &#34;{timestamp} {len(data)}&#34; 
    &amp;ndash;stream udp_video.raw | head -n 25
0:00:00.036130 1460
0:00:00.036936 1460
0:00:00.037336 1460
0:00:00.038663 1460
0:00:00.038781 1460
0:00:00.039000 1460
0:00:00.039154 1460
0:00:00.041383 1460
0:00:00.041505 1460
0:00:00.041573 1460
0:00:00.041779 1460
0:00:00.041900 552
0:00:00.070896 1460
0:00:00.071040 1460
0:00:00.071232 1460
0:00:00.071323 1460
0:00:00.073455 1460
0:00:00.073628 1460
0:00:00.073719 1460
0:00:00.073964 1460
0:00:00.075897 1460
0:00:00.076018 1460
0:00:00.076285 1460
0:00:00.076400 729
0:00:00.105331 1460&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Takto to vypadá skoro rozumně, časově jsou si ty bloky blízko a pak začíná nový, ale dekódovat to jako H.264
frame se mi zatím nedaří. Parrot u každého paketu měl jeho index a délku, tak možná něco podobného je i zde??
Z nostalgie bych se po letech mohl podívat zase dovnitř, viz starý článek
&lt;a href=&#39;/articles/h264-drone-vision/en&#39;&gt;H.264 pro vidění dravce&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;210206&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. únor 2021 &amp;mdash; Takeoff!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;První vzlet je vždycky drama, obzvláště pokud se jedná o start autonomní mise. A ani &lt;i&gt;Paula&lt;/i&gt;
nezklamala. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Sekvence byla poměrně minimalistická:&lt;/div&gt;

&lt;pre&gt;self.tasks = [
            [2, b&#39;streamon&#39;],
            [3, b&#39;takeoff&#39;],
            [5, b&#39;land&#39;],
            [8, b&#39;streamoff&#39;]
        ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj. zapni nahrávání videa, odstartuj a po dvou sekundách zase raději přistaň a následně
vypni nahrávání videa. A jak to dopadlo?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/first-flight.png&#39;&gt;&lt;img src=&#39;/robots/paula/first-flight_t.png&#39; alt=&#39;první let&#39; title=&#39;první let&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;167&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/first-flight.png&#39;&gt;první let&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Program skončil, ale drona stále visela ve vzduchu (necelý metr nad zemí).
Byl jsem rád, že jsem použil ochrannou klec, ale stejně, jak jí sundat dolů?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nenapadlo mne nic lepšího, než ten jediný program, co jsem dosud měl, pustit znova:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/second-flight.png&#39;&gt;&lt;img src=&#39;/robots/paula/second-flight_t.png&#39; alt=&#39;druhý let&#39; title=&#39;druhý let&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;183&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/second-flight.png&#39;&gt;druhý let&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Home, sweet home! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Předpokládám, že u vzletu drona neakceptuje další příkazy
nebo se něco porouchalo. Mám pocit, že podobné chování měla i &lt;a href=&#39;/robots/jessica/en&#39;&gt;Jessica&lt;/a&gt;
&amp;mdash; což bylo extrémně nepříjemné, pokud se na startu vymkla kontrole, prostě neakceptovala
ani příkaz přistaň.&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger tello-210205_190125.log &amp;ndash;stream tello.cmd udp_cmd.raw
0:00:00.032778 1 b&#39;command&#39;
0:00:00.046018 2 b&#39;ok&#39;
0:00:02.086795 1 b&#39;streamon&#39;
0:00:02.137147 2 b&#39;ok&#39;
0:00:03.002316 1 b&#39;takeoff&#39;
0:00:05.000937 1 b&#39;land&#39;
0:00:08.001190 1 b&#39;streamoff&#39;
0:00:08.003700 2 b&#39;ok&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no nevypadá to, že by &#34;takeoff&#34; byl potvrzený!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A v druhém pokusu, začínaje ve vzduchu, na &#34;takeoff&#34; odpověděla &#34;error&#34;:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger tello-210205_190142.log &amp;ndash;stream tello.cmd udp_cmd.raw
0:00:00.032203 1 b&#39;command&#39;
0:00:00.076145 2 b&#39;ok&#39;
0:00:02.065302 1 b&#39;streamon&#39;
0:00:02.115965 2 b&#39;ok&#39;
0:00:03.024324 1 b&#39;takeoff&#39;
0:00:03.036509 2 b&#39;error&#39;
0:00:05.026166 1 b&#39;land&#39;
0:00:08.023093 1 b&#39;streamoff&#39;
0:00:08.034631 2 b&#39;ok&#39;
0:00:09.106121 2 b&#39;ok&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; a to potvrzení přistání vypadá také jako až po jeho skončení. Byla by pěkná nějaká
stavová proměnná, nebo holt na ten start musím počkat o něco déle.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;210207&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. únor 2021 &amp;mdash; Selfie&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Další cíl dosažen a vypadá takto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/paula074.jpg&#39;&gt;&lt;img src=&#39;/robots/paula/paula074_t.jpg&#39; alt=&#39;Paula selfie z tello-210205_190125.log&#39; title=&#39;Paula selfie z tello-210205_190125.log&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/paula074.jpg&#39;&gt;Paula selfie z tello-210205_190125.log&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To řešení je brutální, ale šlo o „prokopnutí cesty” a stačí náznak světla na konci tunelu.
Prostě video jsem nahrával už předevčírem, ale nebyl jsem schopen ho dekókovat. Potvrdil jsem
si, že je to H264 kodek, dokonce upravený starší kód vylámal počty &lt;i&gt;makrobloků&lt;/i&gt;, tj. zjistil
jsem, že výsledný obrázek je menší než u ARDrone2 &amp;hellip; ano, marketingový klam 720p &amp;hellip; jen to není
16:9, ale 4:3, tj. rozlišení je 960x720. Ale pokusy dekódovat I-frame (jestli to nepletu) selhal.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když už jsem propadl malomyslnosti, tak jsem koukal &lt;a href=&#39;https://youtu.be/LmEcyQnfpDA?t=1293&#39; class=&#39;external&#39;&gt;dále na to 3h video&lt;/a&gt;.
Říkal jsem si, že on to také musí nějak řešit?! Pro řízení drony používá &lt;a href=&#39;https://github.com/damiafuentes/djitellopy&#39; class=&#39;external&#39;&gt;DJITelloPy&lt;/a&gt;
a &lt;a href=&#39;https://github.com/damiafuentes/DJITelloPy/blob/master/djitellopy/tello.py&#39; class=&#39;external&#39;&gt;tam&lt;/a&gt; je čtení
videa řešeno přes &lt;b&gt;cv2.VideoCapture()&lt;/b&gt; a jako parametr dostává &lt;b&gt;address_schema = &#39;udp://@{ip}:{port}&#39;&lt;/b&gt;.
Prostě pustí pomocné vlákno a to přímo čte UDP pakety a OpenCV to i rovnou dekóduje do numpy obrázků.
Pěkné! Ale funguje to? Jako první jsem zkusil jsem
&lt;a href=&#39;https://github.com/damiafuentes/DJITelloPy/blob/master/examples/take-picture.py&#39; class=&#39;external&#39;&gt;take-picture.py&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Napůl mne vlastně potěšila záplava hlášek:&lt;/div&gt;

&lt;pre&gt;(osgar) md@md-ThinkPad-P50:~/git/DJITelloPy/examples$ python take-picture.py 
[INFO] tello.py - 104 - Tello instance was initialized. Host: &#39;192.168.10.1&#39;. Port: &#39;8889&#39;.
[INFO] tello.py - 418 - Send command: &#39;command&#39;
[INFO] tello.py - 443 - Response command: &#39;ok&#39;
[INFO] tello.py - 418 - Send command: &#39;streamon&#39;
[INFO] tello.py - 443 - Response streamon: &#39;ok&#39;
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] decode_slice_header error
[h264 @ 0x153f740] no frame!
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] decode_slice_header error
[h264 @ 0x153f740] no frame!
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] decode_slice_header error
[h264 @ 0x153f740] no frame!
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] non-existing PPS 0 referenced
[h264 @ 0x153f740] decode_slice_header error
[h264 @ 0x153f740] no frame!
[h264 @ 0x153f740] non-existing PPS 0 referenced
&amp;hellip;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ale drona vzlétla, opravdu jeden snímek udělala a přistála. Dveře do „tajemné komnaty”
jsou tímto pootevřeny. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V druhém pokusu, kdy jsem zkoušel příklad nahrávání videa, už to bylo divočejší, protože
drona se zamotala do věšáku &amp;mdash; ochranná klec byla dobrá investice. Ono to trošku vypadá jak
míč, tak jsem to zkusil vzít do ruky a po vzoru starých ARDrone2 to otočit vzhůru nohama
a motory se zastavily. To se také může někdy hodit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Problém je tedy množství nevalidních snímků v úvodu nahrávání videa a zatím
nevím, jak ty nástroje přesvědčit, aby to ignorovaly. Alternativa byla vytvořit
fiktivní Tello dronu, předstírat, že vysílá UDP pakety s daným časováním a výsledek
vypadá takto 
(po spojení obou kousků pomocí &lt;i&gt;ffmpeg -i &#34;concat:video1.avi|video2.avi&#34; -c copy video.avi&lt;/i&gt;).&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;640&#34; height=&#34;480&#34; src=&#34;https://www.youtube.com/embed/VXZVHs6Bfds&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;210208&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. únor 2021 &amp;mdash; cv2.Stitcher_create&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Přemýšlel jsem, co by nejlépe vystihlo dnešní pokusy s dronou (neděle 7/2 &amp;hellip; je to takové posunuté)
a je to pokus o poskládání panoramatu z videa drony. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Nejprve jsem trošku ladil kód, abych droně
posílal další příkazy až když předešlé vykoná (hlavně &lt;i&gt;takeoff&lt;/i&gt;) a když toto začalo celkem rozumně
fungovat, tak jsem chtěl udělat &lt;i&gt;panoramatický snímek&lt;/i&gt;, resp. video 360 stupňů dokola. Asi rovnou
naznačím co je další cíl &amp;mdash; udělat &lt;b&gt;dva panoramatické snímky nad sebou&lt;/b&gt;. Drona má totiž senzor
na měření vzdálenosti od země a tak bych mohl udělat &lt;i&gt;panoramatické stereo&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Příkaz pro dronu:&lt;/div&gt;

&lt;pre&gt;command
streamon
takeoff
cw 360
land
streamoff&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;cw 360&lt;/i&gt; je „otoč se o 360 stupňů po směru hodinových ručiček”. Samozřejmě jsem tam měl překlep,
což je ve vzduchu vždy „komické”:&lt;/div&gt;

&lt;pre&gt;0:00:01.069556 SEND b&#39;streamon&#39;
0:00:01.119955 &amp;mdash; b&#39;streamon&#39; b&#39;ok&#39;
0:00:02.004058 SEND b&#39;takeoff&#39;
0:00:03.263466 Battery: 78 -&gt; 77
0:00:07.193178 Battery: 77 -&gt; 76
0:00:08.315170 &amp;mdash; b&#39;takeoff&#39; b&#39;ok&#39;
0:00:09.183728 Battery: 76 -&gt; 75
0:00:10.010189 SEND b&#39;cv 360&#39;
0:00:10.050536 &amp;mdash; b&#39;cv 360&#39; b&#39;unknown command: cv&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; ale pak to správně přistálo, takže OK.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No a teď to skládání obrázků. Je to na dva řádky (!):&lt;/div&gt;

&lt;pre&gt;stitcher = cv2.Stitcher_create()
status, result_img = stitcher.stitch(images)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Drsné, nemyslíte? Uplně se mi nechce sdílet panoramatický snímek pracovno-ložnice, ale &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První pokus je jen pár snímků „obrazu” (takové to černé je ochranný kryt drony).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/stitch-image.jpg&#39;&gt;&lt;img src=&#39;/robots/paula/stitch-image_t.jpg&#39; alt=&#39;Poskládaný obraz&#39; title=&#39;Poskládaný obraz&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;177&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/stitch-image.jpg&#39;&gt;Poskládaný obraz&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhý pokus skončil &lt;i&gt;Killed&lt;/i&gt; (pravděpodobně na nedostatek paměti) a tak místo všech
obrázků z 360 stupňové otočky jsem tomu podhodil jenom každý pátý snímek. A dopadlo to
takto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/stitch-bedroom.jpg&#39;&gt;&lt;img src=&#39;/robots/paula/stitch-bedroom_t.jpg&#39; alt=&#39;360deg snímek z videa z drony&#39; title=&#39;360deg snímek z videa z drony&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;80&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/stitch-bedroom.jpg&#39;&gt;360deg snímek z videa z drony&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230613&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. červen 2023 &amp;mdash; Tello go, go, go!&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na &lt;i&gt;robotickém víkendu&lt;/i&gt; jsme zase po letech vytáhli různé „kostlivce ze skříně”. Sám jich pár mám a nakonec padl los na mini-dronu Tello
(to, že jsem ji pojmenoval &lt;i&gt;Paula&lt;/i&gt;, jsem už za ty dva roky zapomněl). Nepamatoval jsem si nic, tak mne potešilo, že jsem našel tématicky pojmenovou
větev v gitu &lt;i&gt;feature/tello&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; a poslední commit &lt;i&gt;Date:   Thu Feb 11 14:08:03 2021 +0100&lt;/i&gt; &amp;hellip; to už tak veselé nebylo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dobrá zpráva byla, že stačilo jen pustit nahrávání&lt;/div&gt;

&lt;pre&gt;python -m osgar.record config/tello.json &amp;ndash;note &#34;test na zahrade&#34;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a drona vzlétla, cca v metru se otočila o 360 stupňů, pak vystoupala ještě cca 1 metr, znova provedla scan 360 stupňů a přistála. Pohoda.
Celý „program” byl schován v seznamu příkazů:&lt;/div&gt;

&lt;pre&gt;self.tasks = [
             [1, b&#39;streamon&#39;],
             [2, b&#39;takeoff&#39;],
             [10, b&#39;cw 360&#39;],
             [11, b&#39;up 30&#39;],
             [12, b&#39;cw 360&#39;],
             [20, b&#39;land&#39;],
             [22, b&#39;streamoff&#39;]
         ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; a odkazy na dokumentaci jsem si naštěstí napsal do tohoto článku. Koukám do gitu a nebyl to tedy 1m, ale pouze 30cm a ještě připomenu, že &lt;i&gt;streamon&lt;/i&gt; pouští
kameru, resp. streamování, a &lt;i&gt;streamoff&lt;/i&gt; kameru vypíná.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První, co jsem si do kódu doplnil byl seznam existujících příkazů:&lt;/div&gt;

&lt;pre&gt;class TelloCmd(Enum):
    COMMAND = b&#39;command&#39;  # entry SDK mode
    TAKEOFF = b&#39;takeoff&#39;  # Tello auto takeoff
    LAND = b&#39;land&#39;  # Tello auto land
    STREAMON = b&#39;streamon&#39;  # Set video stream on
    STREAMOFF = b&#39;streamoff&#39;  # Set video stream off
    EMERGENCY = b&#39;emergency&#39;  # Stop all motors immediately
    UP = b&#39;up&#39;  # Tello fly up with distance x cm, x: 20-500
    DOWN = b&#39;down&#39;  # Tello fly down with distance x cm, x: 20-500
    LEFT = b&#39;left&#39;  # Tello fly left with distance x cm, x: 20-500
    RIGHT = b&#39;right&#39;  # Tello fly right with distance x cm, x: 20-500
    FORWARD = b&#39;forward&#39;  # Tello fly forward with distance x cm, x: 20-500
    BACK = b&#39;back&#39;  # Tello fly back with distance x cm, x: 20-500
    CW = b&#39;cw&#39;  # Tello rotate x degree clockwise, x: 1-3600
    CCW = b&#39;ccw&#39;  # Tello rotate x degree counter-clockwise, x: 1-3600
    FLIP = b&#39;flip&#39;  # Tello fly flip x, l (left), r (right), f (forward), b (back)
    GO = b&#39;GO&#39;
    # go x y z speed - Tello fly to x y z in speed (cm/s) (x: 20-500, y: 20-500, z: 20-500, speed: 10-100)
    CURVE = b&#39;curve&#39;
    # curve x1 y1 z1 x2 y2 z2 speed - Tello fly a curve defined by the current and two given coordinates
    # with speed (cm/s) If the arc radius is not within the range of 0.5-10 meters, it responses false
    # x1, x2: 20-500, y1, y2: 20-500, z1, z2: 20-500, speed: 10-60
    # x/y/z can’t be between -20 – 20 at the same time .
    SPEED = b&#39;speed&#39;  # set speed to x cm/s, x: 10-100
    RC = b&#39;rc&#39;
    # rc a b c d - Send RC control via four channels.
    # a: left/right (-100~100), b: forward/backward (-100~100),
    # c: up/down (-100~100), d: yaw (-100~100)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a v rámci experimentování jsem se dostal k testu &lt;b&gt;go&lt;/b&gt;:&lt;/div&gt;

&lt;pre&gt;self.tasks = [
            [1, b&#39;streamon&#39;],
            [2, b&#39;takeoff&#39;],
            [11, b&#39;up 300&#39;],
            [12, b&#39;cw 360&#39;],
            [12, b&#39;go 200 0 300 50&#39;],
            [12, b&#39;go 200 200 300 50&#39;],
            [12, b&#39;go 0 0 300 50&#39;],
            [12, b&#39;go 0 0 100 50&#39;],
            [20, b&#39;land&#39;],
            [22, b&#39;streamoff&#39;]
        ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;kontrolní otázka &amp;mdash; co si myslíte, že tento kód udělá? No můžu vám řící, co jsem chtěl aby udělal: drona vystoupá do 3m,
zatočí se, aby se neřeklo, a pak poletí dopředu 2m, pak vlevo 2m, pak se vrátí, klesne na 1m nad zemí a přistane. No úplně takto
se to fakt nechovalo. &lt;b&gt;go je relativní&lt;/b&gt; (!!!), takže s každým příkazem si nastoupal další 3 metry. Skončil cca ve 12m a tam se drona
zasekla a já už jenom čekal, kdy jí dojdou baterky a spadne. Fouknul ale větřík a dostal jsem tyto výstupy:&lt;/div&gt;

&lt;pre&gt;&amp;hellip;
0:04:58.926733 Battery: 11 -&gt; 10
0:05:00.051663 &amp;mdash; b&#39;go 0 0 300 50&#39; b&#39;error Big wind&#39;
0:05:00.051663 SEND b&#39;go 0 0 100 50&#39;
0:05:00.918411 Battery: 10 -&gt; 9
0:05:03.160410 &amp;mdash; b&#39;go 0 0 100 50&#39; b&#39;error Auto land&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a pak už byl v seznamu příkaz na přistání, tak šla celkem elegantně k zemi. S tímto zážitkem bych testování skončil, ale OndraL
trval na opravě, takže ještě správná verze kódu:&lt;/div&gt;

&lt;pre&gt;self.tasks = [
            [1, b&#39;streamon&#39;],
            [2, b&#39;takeoff&#39;],
            [11, b&#39;up 300&#39;],
            [12, b&#39;cw 360&#39;],
            [12, b&#39;go 200 0 0 50&#39;],
            [12, b&#39;go 0 200 0 50&#39;],
            [12, b&#39;go -200 -200 0 50&#39;],
            [12, b&#39;go 0 0 100 50&#39;],
            [12, b&#39;go 0 0 -200 50&#39;],
            [20, b&#39;land&#39;],
            [22, b&#39;streamoff&#39;]
        ]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Mimochodem v SDK dokumentaci jsou nesmysly (přepsal jsem je i do popisu, ale asi to v nějakém dalším commitu opravím), protože &lt;i&gt;go&lt;/i&gt; akceptuje i nulu
a záporné hodnoty (všechna čísla jsou v centimetrech, nebo ve stupních + rychlost v cm/s).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě rekonstrukce „z černé OSGARovi skříňky” (logy) ukázala, proč se drona na cca 12m výšky zasekla:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/tello-altitude.png&#39;&gt;&lt;img src=&#39;/robots/paula/tello-altitude_t.png&#39; alt=&#39;měřená vzdálenost od země&#39; title=&#39;měřená vzdálenost od země&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/tello-altitude.png&#39;&gt;měřená vzdálenost od země&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Proste někde okolo 9m nad zemí přestal senzor fungovat a začal vracet 65m, přesněji 6553cm, což &lt;a href=&#39;https://cs.wikipedia.org/wiki/Hip_Hap_Hop&#39; class=&#39;external&#39;&gt;modří už vědí&lt;/a&gt;,
že interně nejspíše počítá v milimetrech a toto je max uint16, tj. 65535.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Čas na googlení &#34;tello max altitude&#34;: &lt;a href=&#39;https://dronies.org/tello-drone/&#39; class=&#39;external&#39;&gt;https://dronies.org/tello-drone/&lt;/a&gt; (April 28, 2022)
&lt;i&gt;The altitude limit for the tello drone is 30 meters (100 feet). Upon the drone’s initial release, Ryze had set the altitude limit to only 10 meters, but after a firmware update, a new setting was added. The new feature grants the user to set the altitude limit from 2 up to 30 meters.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zajímavé, možná bych si měl dronu flashnout?! Asi bude i lepší si o tom něco přečíst &amp;hellip; v poslední sekci, jestli se Tello může koupat píšou: 
&lt;i&gt;Tello lacks GPS and compass, therefore it uses a belly camera facing downwards and a sophisticated algorithm to locate itself and find its course, allowing distance measurement and RTH emergency maneuver into third-party apps, like Tello FPV. Unfortunately, Optical Flow fails when flying above a patterned or moving body like grass or water, and the drone crashes. Despite this, some people had managed to fly over water bodies. The trick is choosing a flight path carefully by finding calm, shallow water or islands, rocks, dams, and every fixed reference (not floating objects) you can find. Any fixed object is enough for the belly camera to recognize its location.&lt;/i&gt;
&amp;hellip; tak už chápu, proč se relativně dobře visela na místě &amp;mdash; má tam ještě jednu kameru směrem dolu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. čtu ten článek od začátku &lt;i&gt;Tello drone is mainly aimed at the younger audience.&lt;/i&gt; ha ha ha &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 vypadá to, že je k dispozici ještě binární protokol, kdyby mne ty ASCII znaky přestaly bavit, viz
&lt;a href=&#39;https://bitbucket.org/PingguSoft/pytello/src/8ecc0037f05f16cb494aa29859a04d834f9c58c2/tello.py#lines-396&#39; class=&#39;external&#39;&gt;tello.py hack 30m alt limit&lt;/a&gt; &amp;hellip;
odkazovaný z &lt;a href=&#39;https://tellopilots.com/threads/tello-whats-possible.88/page-9#post-1829&#39; class=&#39;external&#39;&gt;této diskuse&lt;/a&gt;
na &lt;a href=&#39;https://tellopilots.com&#39; class=&#39;external&#39;&gt;tellopilots.com&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.3 ještě nějaký „důkazový materiál”&lt;/div&gt;

&lt;pre&gt;python -m osgar.tools.play_udp_video /home/md/git/osgar/tello-230610_134957.log&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/robots/paula/tello-alt-12m.jpg&#39;&gt;&lt;img src=&#39;/robots/paula/tello-alt-12m_t.jpg&#39; alt=&#39;drona ve 12m&#39; title=&#39;drona ve 12m&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;533&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/robots/paula/tello-alt-12m.jpg&#39;&gt;drona ve 12m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&amp;hellip; ta divná věc v obraze je ochranný kryt/kopule&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/robots/paula/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
<entry>
    <title>Pozyx</title>
    <link rel='alternate' href="https://robotika.cz/articles/pozyx/en"/>
    <id>https://robotika.cz/articles/pozyx/en</id>
    <updated>2021-12-17T00:00:00Z</updated>
    <author><name>Martin Dlouhý, Jiří Iša</name></author>
    <summary type='html'>
        GPS je velice užitečný systém pro velké množství aplikací vyžadující pozici &amp;hellip; ale co dělat, pokud jste uvnitř budovy a nemáte signál?
Pozyx je možná odpověď, kterou se pokusíme blíže prozkoumat. Konkrétně s „Creator Kit” máme více plánů, ale postupně.
&lt;b&gt;Blog update:&lt;/b&gt; 1/3/2023 &amp;mdash; &lt;a href=&#39;/articles/pozyx/en#230301&#39;&gt;pypozyx.SingleRegister(size=2)&lt;/a&gt;

    </summary>
	<content type='html'>
        
&lt;h2&gt;Creator Kit&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.pozyx.io/creator&#39; class=&#39;external&#39;&gt;pozyx.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Firma &lt;a href=&#39;https://www.pozyx.io/&#39; class=&#39;external&#39;&gt;Pozyx&lt;/a&gt; nabízí několik sestav pro lokalizaci uvnitř budov. (*)
V tomto článku se budeme zabývat sadou &lt;a href=&#39;https://www.pozyx.io/creator&#39; class=&#39;external&#39;&gt;Creator Kit&lt;/a&gt;, který jsme
na experimenty pořídili. Není to úplně levná hračka (cca 1000EUR), ale pokud systém umožní
lokalizaci s přesností na 10cm do vzdálenosti 100m od majáčků (&lt;i&gt;anchors&lt;/i&gt;), tak se to možná
vyplatí. Uvidíme. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A pokud to úplně fungovat nebude, tak tento blog je ideální místo, kde se ventilovat. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;(*) &lt;i&gt;Pozyx by měl fungovat i venku, ale v některých zemích platí různá omezení.&lt;/i&gt;&lt;/div&gt;

&lt;h2&gt;Obsah&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211217&#39;&gt;211217 - První test&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211219&#39;&gt;211219 - pozyx.doRanging()&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211221&#39;&gt;211221 - Lillyino robotické kvarteto&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211222&#39;&gt;211222 - Hodinový test a mrtvé kotvy&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211223&#39;&gt;211223 - Decaware, DWM1000 a další&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211224&#39;&gt;211224 - Creator Anchor vs. Developer Tag&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211225&#39;&gt;211225 - DW1000 první přiblížení&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#211227&#39;&gt;211227 - DWM1001 API a Jirkovy dotazy&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220104&#39;&gt;220104 - Informační střípky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220106&#39;&gt;220106 - Follow me&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220110&#39;&gt;220110 - pozyx.doPositioning()&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220114&#39;&gt;220114 - (Ne)dostupnost a časové známky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220115&#39;&gt;220115 - Dosah 100 metrů? Ha, ha, ha&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220116&#39;&gt;220116 - UWB channels&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220123&#39;&gt;220123 - Channel 1, preambule 4096, gain 33 = více jak 80 metrů&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220201&#39;&gt;220201 - DW1000 + BU01 (Jirka)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220210&#39;&gt;220210 - Decawave driver (Jirka)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220213&#39;&gt;220213 - Pozyx + GPS&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220216&#39;&gt;220216 - No GPS vs. BU01 Single Sided&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220217&#39;&gt;220217 - Pozyx path vs. BU01 default range&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220221&#39;&gt;220221 - BU01 korekce korekce&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220303&#39;&gt;220303 - BU01 měření rychlosti světla&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220304&#39;&gt;220304 - Auta a UWB stereo tag&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220306&#39;&gt;220306 - 2+D vs. 2.5D&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220308&#39;&gt;220308 - Eduro a dosažené BU01 milníky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220320&#39;&gt;220320 - BU01 mesh a Babel&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220330&#39;&gt;220330 - BU01 kalibrační čtverec&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220413&#39;&gt;220413 - BU01 zapouzdřeno jest&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220420&#39;&gt;220420 - BU01 Follow Me&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220426&#39;&gt;220426 - BU01 Follow Me obrázky&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#220504&#39;&gt;220504 - BU01 stavový automat&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230108&#39;&gt;230108 - Pozyx digital I/O&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230110&#39;&gt;230110 - Look-at-me ver0&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230124&#39;&gt;230124 - Dva na jednoho&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230131&#39;&gt;230131 - followme_uwb ver0&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230207&#39;&gt;230207 - Bezpečnost především, časem ...&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230214&#39;&gt;230214 - Follow me UWB on/off&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230221&#39;&gt;230221 - Pull request #953&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;/articles/pozyx/en#230301&#39;&gt;230301 - pypozyx.SingleRegister(size=2)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;hr&gt;

&lt;h1&gt;Blog&lt;/h1&gt;
&lt;a id=&#34;211217&#34;&gt;&lt;/a&gt;
&lt;h2&gt;17. prosinec 2021 &amp;mdash; První test&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera dorazil balíček z Belgie. Po odtranění DHL expres obalovací krabice z něj vypadlo toto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/creator-kit.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/creator-kit_t.jpg&#39; alt=&#39;Zabalená krabice&#39; title=&#39;Zabalená krabice&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;180&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/creator-kit.jpg&#39;&gt;Zabalená krabice&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A co je uvnitř? K tomu použiji &lt;a href=&#39;https://store.pozyx.io/creator-kit-65?_ga=2.169182370.2026377525.1639763609-490974699.1639763609#attr=85&#39; class=&#39;external&#39;&gt;foto přímo od výrobce&lt;/a&gt;:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 262px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/creator-kit-inside.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/creator-kit-inside_t.jpg&#39; alt=&#39;Obsah Creator kit balíčku&#39; title=&#39;Obsah Creator kit balíčku&#39; class=&#39;border&#39;  width=&#39;256&#39; height=&#39;256&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/creator-kit-inside.jpg&#39;&gt;Obsah Creator kit balíčku&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je tam 5 &lt;i&gt;kotev&lt;/i&gt; (anchor) majáčků, které jsou typicky umístěny na známých pozicích po budově.
Dále najdete 4 &lt;i&gt;vývojové tagy&lt;/i&gt; pro mobilní zařízení, které chceme lokalizovat.
Zbývají ještě 3 power banky, 5 USB zdrojů (je dobré správně zvolit zemi, pro kterou budou
zástrčky), nějaké uchyty na suchý zip a spousta USB kabelů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A jak dopadl &lt;b&gt;první test&lt;/b&gt;? Podle očekávání &amp;mdash; selhal. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Zapojil jsem &lt;i&gt;anchor&lt;/i&gt; přes
USB kabel do počítače, ale nic. Žádná zpráva v &lt;i&gt;dmesg&lt;/i&gt;, nic nového v &lt;i&gt;lsusb&lt;/i&gt;? Nějaké nápady?
Ano, asi mne to mělo hned napadnout, že „napájecí kabely” z power banky komunikaci podporovat
nebudou. No byl tam ještě jeden super-kabel, který ma na sobě dokonce display. Podle čísel tipuji
že je to napájení a proud, který kabelem protéká, ale hlavně to komunikuje:&lt;/div&gt;

&lt;pre&gt;[1063478.914191] usb 1-6: new full-speed USB device number 8 using xhci_hcd
[1063479.064155] usb 1-6: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 2.00
[1063479.064161] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1063479.064164] usb 1-6: Product: Pozyx Virtual ComPort in FS Mode
[1063479.064167] usb 1-6: Manufacturer: Pozyx Labs
[1063479.064170] usb 1-6: SerialNumber: 203E359F484E
[1063479.113745] cdc_acm 1-6:1.0: ttyACM0: USB ACM device
[1063479.114345] usbcore: registered new interface driver cdc_acm
[1063479.114349] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Hodí se balíčk &lt;a href=&#39;https://pypi.org/project/pypozyx/&#39; class=&#39;external&#39;&gt;pypozyx&lt;/a&gt; a fajn je &lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library&#39; class=&#39;external&#39;&gt;Pozyx-Python-library&lt;/a&gt;
na GitHubu. Asi nejrychlejší je si repository stáhnout, editovat
&lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/blob/master/tutorials/ready_to_range.py&#39; class=&#39;external&#39;&gt;tutorials/ready_to_range.py&lt;/a&gt;
(je tam třeba vyplnit vůči kterému ID chcete měřit vzdálenost) a pak už jenom vidíte výpis jako:&lt;/div&gt;

&lt;pre&gt;1966732 ms, 1034 mm, -79 dBm
1966777 ms, 959 mm, -79 dBm
1966823 ms, 1006 mm, -79 dBm
1966868 ms, 1011 mm, -79 dBm
1966912 ms, 1002 mm, -79 dBm
1966957 ms, 1020 mm, -79 dBm
1967001 ms, 992 mm, -79 dBm
1967045 ms, 978 mm, -79 dBm
1967090 ms, 983 mm, -79 dBm
1967137 ms, 974 mm, -79 dBm
1967183 ms, 988 mm, -79 dBm
1967228 ms, 974 mm, -79 dBm&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Asi očekávané chování, že když mezi majáčky cca 1m od sebe dám ruku, tak se detekovaná vzdálenost nepatrně změní.
Příště by to chtělo autodetekci, jaké majáčky jsem vůbec zapnul.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;211219&#34;&gt;&lt;/a&gt;
&lt;h2&gt;19. prosinec 2021 &amp;mdash; pozyx.doRanging()&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://pypozyx.readthedocs.io/en/develop/pypozyx_api/index.html&#39; class=&#39;external&#39;&gt;Pypozyx&lt;/a&gt;
knihovna má „trošku” zvrhlou notaci volání jednotlivých funkcí. Asi je to inspirováno Arduinem, ale &amp;hellip;
prostě místo aby funkce vrátila daný výsledek, tak je třeba jí předat třídu (resp. strukturu?), kam se výsledky
uloží a funkce pouze vrací kód pro úspěch nebo selhání.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jako další plán jsem chtěl zkusit &lt;i&gt;remote ranging&lt;/i&gt;, tj. mám-li zařízení A, B a C, kde v počítači mám zapojený
přes USB (jo, tentokrát již spravným kabelem) zařízení A, tak se chci dozvědět vzdálenost mezi B a C. A opravdu to je
přímočaré, prostě zavoláte &lt;b&gt;pozyx.doRanging(B, C)&lt;/b&gt; a je to. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Ono totiž všechna zařízení spolu komunikují a
tak si to nasdílí. Celkový kód vypadá takto:&lt;/div&gt;

&lt;pre&gt;import pypozyx

serial_port = &#39;/dev/ttyACM0&#39;
pozyx = pypozyx.PozyxSerial(serial_port)

remote_id = 0x0D53
destination_id = 0x0D67

device_range = pypozyx.DeviceRange()
status = pozyx.doRanging(destination_id, device_range, remote_id)
print(device_range)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A výsledek je jednoduše:&lt;/div&gt;

&lt;pre&gt;63812 ms, 1081 mm, -80 dBm&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. tak už mi funguje i ta autodetekce &amp;mdash; funkce &lt;b&gt;getDeviceListSize()&lt;/b&gt; mi stále vracela 0, i když jsem měl zapnuto
hned několik zařízení. Trik je v tom, že je třeba nejprve zavolat &lt;b&gt;doDiscoveryAll()&lt;/b&gt;. Pak už číslo sedí a pokračování
kódu vypadá takto:&lt;/div&gt;

&lt;pre&gt;pozyx.doDiscoveryAll()
list_size = pypozyx.SingleRegister()
pozyx.getDeviceListSize(list_size)
device_list = pypozyx.DeviceList(list_size=list_size[0])
pozyx.getDeviceIds(device_list)
print([hex(i) for i in device_list])&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a výsledek jsou ta dvě vzdálená zařízení:&lt;/div&gt;

&lt;pre&gt;[&#39;0xd53&#39;, &#39;0xd67&#39;]&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;211221&#34;&gt;&lt;/a&gt;
&lt;h2&gt;21. prosinec 2021 &amp;mdash; Lillyino robotické kvarteto&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jedna z motivací, proč jsem si Pozyx pořídil, bylo demo &lt;a href=&#39;https://sites.google.com/usc.edu/lillyclark/home&#39; class=&#39;external&#39;&gt;Lilly Clark&lt;/a&gt;
se čtyřmi autonomními mobilními
roboty. Všichni mají na sobě &lt;i&gt;anchor&lt;/i&gt; majáček a v daném čase se vždy pohybuje pouze jeden
a jeho pozici odměřují zbývající tři stojící roboti. A tak se postupně střídají a jako skupina
udržují celkem kvalitní globální pozici.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;K dispozici je TEAM (Trilateration for Exploration and Mapping with Robotic Networks)
&lt;a href=&#39;https://lillyclark.github.io/files/TEAM.pdf&#39; class=&#39;external&#39;&gt;článek&lt;/a&gt; a &lt;a href=&#39;https://youtu.be/nPLf2tXtbJ0?t=1689&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;.
Je to nějaká studentská prezentace a některé „detaily” jsou tam možná až moc zjednodušené,
ale jako motivační video snad OK. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;
Konkrétně popis GPS je v realitě 3D a neznámá je i absolutní čas. Demo s robotama je
ale ve školních prostorách v jednom patře, tj. 2D, a navíc Pozyx přimo vrací vzdálenost mezi
zařízeními.&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;640&#34; height=&#34;480&#34; src=&#34;https://www.youtube.com/embed/nPLf2tXtbJ0?start=1689&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;a id=&#34;211222&#34;&gt;&lt;/a&gt;
&lt;h2&gt;22. prosinec 2021 &amp;mdash; Hodinový test a mrtvé kotvy&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Je čas vrátit se do reality. Chtěl jsem udělat první test, kdy budu měřit vzdálenost mezi dvěma majáčky po dobu jedné hodiny.
První divnost byla, že zařízení, které je přímo zapojené přes USB do počítače své ID zamlčuje, resp. lze zjistit, ale přes
&lt;b&gt;pozyx.doRanging()&lt;/b&gt; místo ID potrebuje &lt;i&gt;remote_id=None&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Po 50 minutách už jsem to nevydržel, vypnul test a přidal další majáček. A po chvíli koukám, že dva majáčky/kotvy jsou
mrtvé (nebliká ani LEDka na majáčku ani LEDka na powerbance). Co to?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ono asi stačí jenom trošku počítat. Ten vychytralý USB kabel, co ukazuje proud a napětí, říká 5V a 0.2A. Pronásobením je
tedy spotřeba cca 1W (potvrzeno i supportem, kdy ale záleží na konfiguraci, množství majáčků v dosahu a režimu měření).
A teď powerbanky. Jsou překvapivě malé = tak malé jsem ještě neviděl. ;-( &amp;hellip; 1200mAh. Zkrátím to, napájet majáček ta
powerbanka (nebo powerbančička) vydži max tu hodinu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě je možné, že po prvním nabití nemají plnou kapacitu, protože se dvěma plně nabitými a jednou napůl jsem dostal tento
graf:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/one-hour-test.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/one-hour-test_t.png&#39; alt=&#39;hodinový test se čtyřmi majáčky&#39; title=&#39;hodinový test se čtyřmi majáčky&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/one-hour-test.png&#39;&gt;hodinový test se čtyřmi majáčky&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dobrá zpráva je, že ty dva majáčky vydržely celou hodinu. Ale ten částečně nabitý jen cca 20s. Je vidět i rozptyl, jak to
poskakuje cca těch +/- 10cm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Možná ještě podivné pozorování ze včerejška, kdy jsem měřil pouze vzdálenost dvou vzdálených majáčků a je tam vidět díra,
kdy žádná měření nejsou k dispozici &amp;mdash; dnes bych podezříval tu baterku, tj. možná se jeden resetoval a po nějakém čase
se vzpamatoval??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/pozyx-50min.png&#39; alt=&#39;včerejší 50min běh s výpadky&#39; title=&#39;včerejší 50min běh s výpadky&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;včerejší 50min běh s výpadky&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. pro to hraní jsem si udělal pracovní &lt;a href=&#39;https://github.com/robotika/osgar/tree/feature/pozyx&#39; class=&#39;external&#39;&gt;feature/pozyx&lt;/a&gt; větev a je tam i
&lt;a href=&#39;https://github.com/robotika/osgar/blob/feature/pozyx/osgar/drivers/pozyx.py&#39; class=&#39;external&#39;&gt;experimentální OSGAR Pozyx driver&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 nabití všech třech powerbank trvalo 2 hodiny, tak jsem ready na další hodinový test &amp;hellip; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;MartinL píše&lt;/b&gt;:
&lt;i&gt;S největší pravděpodobností je v té powerbance LiON baterka, která má nominální napětí 3,6V a tebou uváděnou kapacitu 1200 mAh.
Obsahuje měnič na 5V, který nebude mít 100% učinnost, ale takových 80% to snad bude. Tudíž proud odebíraný z baterky bude cca dvojnásobný oproti tomu, co teče na těch 5V. Tj. pro 5V a 0,2A to bude asi 0,4A.
Takže teoretická výdrž baterky by měla být 1200 / 400 = 3 hodiny. Pokud to vydrží jen tu hodinu, tak je ta baterka hodně špatná nebo je ten odběr podstatně vyšší.&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;211223&#34;&gt;&lt;/a&gt;
&lt;h2&gt;23. prosinec 2021 &amp;mdash; Decaware, DWM1000 a další&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na včerejším &lt;i&gt;Robotika post SubT&lt;/i&gt; pravidelném callu došlo i na Pozyx a jestli to není nějaká mrtvá větev
v oblasti &lt;i&gt;indoor radiové lokalizace&lt;/i&gt;. Jirka říkal, že existuje &lt;a href=&#39;https://www.firaconsortium.org/&#39; class=&#39;external&#39;&gt;FIRA Consortium&lt;/a&gt;,
do kterého jsou zapojeni velcí hráči (Apple, Google, Samsung, &amp;hellip;) a jestli spíše to není cesta? A že také
existují i &lt;a href=&#39;https://www.makerfabs.com/esp32-uwb-ultra-wideband.html&#39; class=&#39;external&#39;&gt;jiné hračky&lt;/a&gt; za $40 ve srovnání s 1050EUR za
&lt;a href=&#39;https://store.pozyx.io/creator-kit-65?_ga=2.169182370.2026377525.1639763609-490974699.1639763609#attr=85&#39; class=&#39;external&#39;&gt;Pozyx Creator kit&lt;/a&gt;?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dobrá zpráva je, že obě cesty mají společný základ a to jsou UWB (Ultra Wide Band) čipy od firmy &lt;a href=&#39;https://www.decawave.com/&#39; class=&#39;external&#39;&gt;Decawave&lt;/a&gt;,
kterou loni koupila firma Quorvo (viz. &lt;a href=&#39;https://www.decawave.com/qorvo-completes-acquisition-of-decawave/&#39; class=&#39;external&#39;&gt;Qorvo Completes Acquisition of Decawave&lt;/a&gt;).
Když jsem o Pozyxu slyšel poprvé a psal o tom svému bývalému šefovi z Haptica/Irsko (podle mailu to bylo před šesti lety),
tak to komentoval: &lt;i&gt;I don’t know the guys but their kit is based on the UWB sensors of another Irish company&lt;/i&gt; &lt;a href=&#39;http://www.decawave.com/&#39; class=&#39;external&#39;&gt;http://www.decawave.com/&lt;/a&gt;.
Malý svět.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jirka také zmiňoval firmu &lt;a href=&#39;https://locatify.com/blog/in-practice-precise-indoor-location-detection-with-uwb-ultra-wideband/&#39; class=&#39;external&#39;&gt;Locatify&lt;/a&gt;,
kde lokalizaci použivají pro audio doprovod v galerii. A až to bude standard v telefonech, tak nebudete potřebovat ani žádné další zařizeni.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Franta posílal odkaz na článek &lt;a href=&#39;https://www.cnx-software.com/2021/12/22/esp32-uwb-board-features-dw1000-module-for-accurate-indoor-positioning/&#39; class=&#39;external&#39;&gt;ESP32 UWB board features DW1000 module for accurate indoor positioning&lt;/a&gt; (aha, to jsem si ani nevšiml, že je ze včerejška), tak se nám to pěkně schází. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď je asi na čase si přečíst to společné jádro &amp;mdash; &lt;a href=&#39;https://www.decawave.com/sites/default/files/resources/dwm1000-datasheet-v1.3.pdf&#39; class=&#39;external&#39;&gt;DWM1000 datasheet&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě přidám dvě poznámky ke včerejšímu blogu. Když jsem zkoušel měřit jenom vůči jednomu majáčku, tak to vydrželo skoro dvě hodiny a to jsem před tím
ještě cca 20min jen tak měřil sensory s pohybem. Tj. výdrž powerbanky není jen 1 hodina, ale ani ty 3 hodiny co počítal MartinL. 2 hodiny je ale
na test už OK, tak se posunu k dalším pokusům.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě bylo zvláštní, že když jsem zase zkoušel měřit vzdálenosti mezi čtyřmi majáčky, tak se to po nějaké době „kousne” (dříve jsem myslel,
že to došla ta baterka). Možná to má něco společného s tím, co píše Lilly, kdy jednotlivé &lt;i&gt;anchor&lt;/i&gt; moduly měla zapojené přes USB do robotů,
ale dávala si velký pozor, aby nemluvili současně:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;One thing I&#39;ve wondered about is that it seems you can&#39;t call .doRanging(device B) on pozyx device A and .doRanging(device A) on pozyx device B at the same time -- in my experience it would cause them to stop outputting anything usable until reboot. Have you observed the same thing?&lt;/i&gt; &amp;hellip; zatím ještě nevím, ale možná to je to, co vidím na grafu níže:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/multi-range.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/multi-range_t.png&#39; alt=&#39;20 minutový test se třema zařízeníma&#39; title=&#39;20 minutový test se třema zařízeníma&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/multi-range.png&#39;&gt;20 minutový test se třema zařízeníma&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na co se to koukáme? Jenotlivé barvy odpovídají páru majáčků/kotev, pro které v daném čase volám &lt;i&gt;doRanging()&lt;/i&gt;. &lt;i&gt;None&lt;/i&gt; odpovídá zařízení zapojenému
přímo do PC. Na začátku jsem to nechal vše staticky v pokoji, ale po cca 10 minutách (čas 600s) mne to přestalo bavit a každý jednotlivý majáček jsem
vzal a prošel se s ním a pak ho vrátil na své místo. Ještě bych měl říci, že ta funkce vrací 3 hodnoty: POZYX_SUCCESS, POZYX_FAILURE, POZYX_TIMEOUT.
V grafu vidíte pouze ty POZYX_SUCCESS.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jedna z divností je třeba zelená (3431, 3455), která je po chvíli konstantní. Mimochodem ta funkce vrací ve
struktuře i čas měření, ale bohužel netuším jakého zařízení, protože je to čas od spuštění. Tato čára má stále stejný čas. Skoro to vypadá, že modro-žlutá
3431 umře, ale fialovo-hnědá 3455 žije dál a reportuje základně poslední měření z 3431??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě mám jednu obavu, jestli mi prostě neusínají? Ona cena Pozyxu je i v &lt;a href=&#39;https://docs.pozyx.io/enterprise/Installing-the-Device-Configurator.1337786400.html&#39; class=&#39;external&#39;&gt;nástrojích na konfiguraci&lt;/a&gt;,
které jsem ještě ani nezkoušel instalovat &amp;hellip; a &lt;a href=&#39;https://docs.pozyx.io/enterprise/Configuring-the-tags.1224015986.html&#39; class=&#39;external&#39;&gt;auto-sleep&lt;/a&gt; tam je &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. přemýšlím, jestli vedle dotazu &lt;i&gt;pozyx.doRanging(A, B)&lt;/i&gt; bych neměl také zkoušet &lt;i&gt;pozyx.doRanging(B, A)&lt;/i&gt;, aneb jak to vidí ze svého pohledu
to druhé zařízení?&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;211224&#34;&gt;&lt;/a&gt;
&lt;h2&gt;24. prosinec 2021 &amp;mdash; Creator Anchor vs. Developer Tag&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Vánoce, vánoce, přicházejí &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem to nevydržel a rozšrouboval &lt;i&gt;anchor&lt;/i&gt;/kotvu, abych se podíval dovnitř. Zkoumal jsem totiž nově i na &lt;i&gt;Developer Tag&lt;/i&gt; (Arduino shield)
a přišlo mi, že rozměrově jsou si hodně podobné. Zkoušel jsem ale také &lt;i&gt;Pozyx Device Configurator&lt;/i&gt; a ten nějak poznal, že to jsou různá zařízení:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/creator-anchor.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/creator-anchor_t.png&#39; alt=&#39;Developer Anchor&#39; title=&#39;Developer Anchor&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;418&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/creator-anchor.png&#39;&gt;Developer Anchor&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/creator-tag.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/creator-tag_t.png&#39; alt=&#39;Developer Tag&#39; title=&#39;Developer Tag&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;419&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/creator-tag.png&#39;&gt;Developer Tag&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;„Trošku” zklamání bylo „množství” věcí co lze nastavit &amp;mdash; vlastně je všechny vidíte výše: &lt;i&gt;Channel&lt;/i&gt;, &lt;i&gt;Datarate&lt;/i&gt;, &lt;i&gt;Preamble&lt;/i&gt;, &lt;i&gt;PRF&lt;/i&gt; a &lt;i&gt;Power&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/boards-comparison.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/boards-comparison_t.jpg&#39; alt=&#39;Creator Anchor vs. Developer Tag&#39; title=&#39;Creator Anchor vs. Developer Tag&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/boards-comparison.jpg&#39;&gt;Creator Anchor vs. Developer Tag&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jak vidíte, tak desky jsou jiné &amp;mdash; na kotvách chybí akcelerometry, gyra, kompas, tlakoměr &amp;hellip; prostě se očekává, že budou statické.&lt;/div&gt;

&lt;pre&gt;acc = pypozyx.Acceleration()
pozyx.getLinearAcceleration_mg(acc)
print(acc)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;s výsledkem:&lt;/div&gt;

&lt;pre&gt;X: -4.0, Y: -7.0, Z: -33.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Ještě drobná mezihra byla, že po připojení &lt;i&gt;developer tagu&lt;/i&gt; jsem zkoušel zase &lt;i&gt;anchor&lt;/i&gt; a vůbec nic nefungovalo! Trošku jsem se vyděsil,
že jsem v konfiguraci něco zmenil. Panika. Zkusím další kotvu a stejné chování! A důvod? No změnilo se číslo portu. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;[1146360.588322] usb 1-6: new full-speed USB device number 20 using xhci_hcd
[1146360.738850] usb 1-6: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 2.00
[1146360.738855] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1146360.738859] usb 1-6: Product: Pozyx Virtual ComPort in FS Mode
[1146360.738861] usb 1-6: Manufacturer: Pozyx Labs
[1146360.738863] usb 1-6: SerialNumber: 359E385B3438
[1146360.741406] cdc_acm 1-6:1.0: ttyACM1: USB ACM device&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;No jo no &amp;hellip; asi žádné překvapení &lt;b&gt;ttyACM1&lt;/b&gt; místo nuly na konci.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pěkné je, že se můžete ptát na stavy senzorů i vzdálených zařízení: &lt;i&gt;pozyx.getLinearAcceleration_mg(acc, 0x680a)&lt;/i&gt;.
Pro kotvu je pak odpověď poměrně nudná: &lt;i&gt;&#39;X: 0.0, Y: 0.0, Z: 0.0&#39;&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě existuje &lt;i&gt;raw&lt;/i&gt; varianta, která najednou vrací měření ze všech senzorů:&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; raw = pypozyx.RawSensorData()
&gt;&gt;&gt; pozyx.getAllSensorData(raw)
1
&gt;&gt;&gt; str(raw)
&#39;97840500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0&#39;

&gt;&gt;&gt; pozyx.getAllSensorData(raw, 0x680a)
1
&gt;&gt;&gt; str(raw)
&#39;97824750, -101, 224, 949, -28, -224, -520, -2, -1, 2, 202, -87, -217, 16152, 2007, 567, -1788,
    -8, -4, 0, -93, 229, 948, 32&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Včera jsem také koukal na ten &lt;a href=&#39;https://www.decawave.com/sites/default/files/resources/dwm1000-datasheet-v1.3.pdf&#39; class=&#39;external&#39;&gt;datasheet DWM-1000&lt;/a&gt;
a on je to vlastně pouze modul co obaluje čip DW1000:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/dwm1000.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/dwm1000_t.png&#39; alt=&#39;Schema DWM-1000&#39; title=&#39;Schema DWM-1000&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;283&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/dwm1000.png&#39;&gt;Schema DWM-1000&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A jak vidíte, tak SPI komunikace jde přimo do čipu, žádný extra konvertor tam není. Ale to si necháme až na příště &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;211225&#34;&gt;&lt;/a&gt;
&lt;h2&gt;25. prosinec 2021 &amp;mdash; DW1000 první přiblížení&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Nevím, kolik toho k tématu dnes sepíšu, tak alespoň dva odkazy, ze kterých budu vycházet:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.decawave.com/sites/default/files/resources/dw1000_user_manual_2.11.pdf&#39; class=&#39;external&#39;&gt;DW1000 USER MANUAL - HOW TO USE, CONFIGURE AND
PROGRAM THE DW1000 UWB TRANSCEIVER&lt;/a&gt; (242 stran)&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.decawave.com/sites/default/files/aps010_dw1000_wsn.pdf&#39; class=&#39;external&#39;&gt;APS010 APPLICATION NOTE- WIRELESS SENSOR NETWORKS AND THE DW1000&lt;/a&gt; (28 stran)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;První PDFko jsem před pár dny jenom narychlo prolílt, abych se ujistil, že to moc číst nemůžu. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; A to druhé (&lt;i&gt;application note&lt;/i&gt;)
mi naopak přišlo čtivé a zajímavé. Teď mám pocit, že bych se měl zase vrátit k tomu prvnímu, protože z toho by mělo být jasné
co všechno řeší čip DW1000 a o co se musí postarat řídící počítač, ale uvidíme &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The DW1000 is a physical layer ultra-wideband (UWB) radio and brings the features of
location awareness, robust communications and resilience to multipath fading to a wireless sensor network (WSN).&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;A more formal definition of a WSN is that it could be considered as a physically distributed
computing system that interacts with the surrounding environment and provides a means to
efficiently transfer this interaction over a span of physical area larger than the transmission
range of the individual radio links between nodes.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The radio communications over a link between nodes is relatively expensive in terms of
power. The communications of 1-bit of information over a radio link is equivalent to the
execution of 1000 to 3000 instructions on a microprocessor.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;... this means a sensor node needs a quarter of the transmit power to communicate over half
the distance. This means that multi-hop networking is more efficient in terms of transmit
power and the expense of more nodes.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 406px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/mesh-multi-hop-wsn.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/mesh-multi-hop-wsn_t.png&#39; alt=&#39;Mesh multi-hop wireless sensor network architecture&#39; title=&#39;Mesh multi-hop wireless sensor network architecture&#39; class=&#39;border&#39;  width=&#39;400&#39; height=&#39;288&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/mesh-multi-hop-wsn.png&#39;&gt;Mesh multi-hop wireless sensor network architecture&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;A node in any WSN could use a routing table with range to neighbouring nodes as a metric
to control the transmit power to the minimum it requires to reliably communicate with that
neighbouring node.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;For the DW1000 UWB PHY, the receive power is a constant for any link distance, therefore
the policy or protocol that controls when the receiver is active is very important for energy
conservation.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The DW1000 physical layer (PHY) has the capability to provide communication and precision ranging functions, even
where a line of sight (LOS) radio path may not exist.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ve zkratce &amp;mdash; vyplatí se posílat signál na kratší vzdálenost, protože je to méně energeticky náročné.
DW1000 umožňuje jak komunikaci tak měření vzdálenosti a je to tedy základní kámen pro mesh-sítě.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ve článku následuje vysvětlení generování signálu a přeposílání +1 a -1 pulzu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The DW1000 derives ranging capability from calculations using its ability to precisely
timestamp message transmission and reception events.
The DW1000 acquires these precision timestamps by building an accurate estimate of the
channel impulse response (CIR) and processing this data.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The DW1000 builds estimates of the CIR by correlating a known preamble sequence against
the received signal and accumulating the result over a period of time. These preamble
sequences are based on preamble codes from the large family of codes called perfect
ternary sequences.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The estimated CIR provides information about the first received radio path from another
node. This radio path is known as the first path or leading edge of the CIR. The DW1000
contains signal processing technology that finds this leading edge in the CIR and produces
timestamps to a resolution of 15 picoseconds. By using the DW1000 generated timestamps
a ranging application can produce ranges to a precision of 10 cm.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The method used by DW1000 for ranging is known as threshold based time of arrival (TOA).&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The DW1000 payload consists of a number of symbols. A single symbol carries two
information bits.&lt;/i&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;i&gt;The payload bit is encoded as a burst in the symbol position&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;The convolutional parity bit is encoded as the polarity of the burst.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;A coherent receiver such as the DW1000 has the ability to see the polarity of a transmitted
burst and so may utilise it in a convolutional decoding algorithm. This is known as systematic
forward error correction (FEC) as the encoding preserves the original data bits.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;In two-way ranging, a node exchanges timestamps with another node to calculate a time of
flight (TOF) between the nodes. This allows the calculation of a range between the two
nodes.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;In one-way ranging, a node can transmit blinks to a number of other receiving nodes. The
timestamps from these other receiving nodes are used as time difference of arrival (TDOA)
values. A multilateration algorithm can then calculate the position of the transmitting node
from the TDOA values.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;If the receiving nodes are in fixed location then the scheme is known as anchor based
location. If the receiving nodes are mobile then the scheme is known as anchor-less
location, however the receiving nodes may need to locate themselves before the TDOA
multilateration is performed.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;DecaWave is a pioneering fabless semiconductor company whose flagship product, the
DW1000, is a complete, single chip CMOS Ultra-Wideband IC based on the IEEE 802.15.4-
2011 UWB standard. This device is the first in a family of parts that will operate at data rates
of 110 kbps, 850 kbps and 6.8 Mbps.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To by asi na &lt;i&gt;copy and paste&lt;/i&gt; stačilo. Za mne to UWB vypadá zajímavě. Možná ještě
než se pokusím znova prokousat tím uživatelským manuálem k DW1000, tak motivační český
článek ze Smartmanie:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://smartmania.cz/vse-co-potrebujete-vedet-o-uwb-technologie-budoucnosti-ktere-fandi-samsung-apple-i-xiaomi/&#39; class=&#39;external&#39;&gt;Vše, co potřebujete vědět o UWB. Technologie budoucnosti, které fandí Samsung, Apple i Xiaomi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Co mne tam zaujalo, že nové (resp. už skoro rok staré) &lt;i&gt;Samsung Galaxy S21+&lt;/i&gt; a další telefony již UWB technologii podporují!
Bylo by zajímavé to zkusit zkombinovat s Pozyxem, ale mám obavy, že si „moc rozumnět nebudou”. Leda by existovala
nějaká &lt;i&gt;zadní vrátka&lt;/i&gt; a přes seriák se dalo bavit přímo s SPI čipu &amp;hellip; ale je to spíše nepravděpodobné. :-(&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Což mne ještě přivádí k otázce, co měl Jirka: kdo tedy tu pozici počítá? No je to na 90% ten extra čip,
kterému po seriáku čtete nebo zapisujete registry a případně i pouštíte extra funkce. Seznam dostupných registrů/příkazů je na
&lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/blob/master/pypozyx/definitions/registers.py&#39; class=&#39;external&#39;&gt;pypozyx/definitions/registers.py&lt;/a&gt;.
Je to cílené jako aplikace pro Arduino a Python wrapper je jen malý extra bonus.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. tak ještě doplním řádově levnější alternativu k &lt;i&gt;Pozyx Creator Kit&lt;/i&gt;: 
&lt;a href=&#39;https://www.symmetryelectronics.com/products/decawave-now-qorvo/mdek1001/&#39; class=&#39;external&#39;&gt;MDEK1001&lt;/a&gt; přímo od Decawave/Qorvo:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;12 modulů&lt;/b&gt; (konfigurovatelné jako &lt;i&gt;anchor&lt;/i&gt; nebo &lt;i&gt;tag&lt;/i&gt;)&lt;/li&gt;

&lt;li&gt;cena &lt;b&gt;$199&lt;/b&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&#39;https://www.decawave.com//wp-content/uploads/2019/01/MDEK1001_System_User_Manual-1.1.pdf&#39; class=&#39;external&#39;&gt;MDEK1001_System_User_Manual-1.1.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;
&lt;a id=&#34;211227&#34;&gt;&lt;/a&gt;
&lt;h2&gt;27. prosinec 2021 &amp;mdash; DWM1001 API a Jirkovy dotazy&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes bych se vrátil k modulu &lt;b&gt;DMW1001&lt;/b&gt;, který prodávají za cca 5x nižší cenu než &lt;i&gt;Pozyx&lt;/i&gt;. Ono tam ještě může být nějaké „ale” &amp;hellip; no to
se asi časem vyjasní. Jirka mi poslal několik odkazů a pár dotazů, na které asi zatím nemám odpověď, ale třeba někdo z vás ano. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První dokument je &lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2019/01/DWM1001-API-Guide.pdf&#39; class=&#39;external&#39;&gt;DWM1001-API-Guide.pdf&lt;/a&gt;, kde o modulu píší:
&lt;i&gt;The DWM1001 module is a radio transceiver module integrating the Nordic Semiconductor nRF52
MCU and Decawave’s DW1000 IC. The nRF52 MCU, which has Bluetooth v4.2 protocol stack
implemented, is acting as the main processor of the DWM1001 module.&lt;/i&gt; &amp;hellip; a možná nám pomůže rozlousknout otázky, co řeší čip
DW1000 a o co se musí starat &lt;i&gt;main processor&lt;/i&gt; (tady ten &lt;i&gt;Nordic Semiconductor nRF52&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Uhh, chtěl jsem připsat, že na rozdíl od &lt;i&gt;Pozyxu&lt;/i&gt; budou k &lt;i&gt;DMW1001&lt;/i&gt; i zdrojové kódy &amp;hellip; a jsou:
&lt;a href=&#39;https://www.decawave.com/dwm1001-dw10001-dev-and-mdek1001-documents-source-code-android-application-firmware-image/&#39; class=&#39;external&#39;&gt;
DWM1001, DW10001-DEV AND MDEK1001 DOCUMENTS, SOURCE CODE, ANDROID APPLICATION &amp;amp; R2.0 FIRMWARE IMAGE&lt;/a&gt;
&amp;hellip; jen je to 1.8GB!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, zpět k API dokumentu. Každé jednotlivé zařízení si můžete nakonfigurovat jako &lt;i&gt;anchor&lt;/i&gt; nebo &lt;i&gt;tag&lt;/i&gt;, kde &lt;i&gt;anchor&lt;/i&gt;
je očekáván, že je statický se známou pozicí a &lt;i&gt;tag&lt;/i&gt; je pohyblivý a pozici určuje vůči pozorovaným &lt;i&gt;anchors&lt;/i&gt;/kotvám.
Většina příkazu je typu &lt;i&gt;set&lt;/i&gt;/&lt;i&gt;get&lt;/i&gt;. Příkladem může být &lt;b&gt;dwm_pos_set&lt;/b&gt;, který nastaví pozici, pokud je zařízení
konfigurované jako kotva (v &lt;i&gt;tag&lt;/i&gt; módu je pozice uložena, ale jinak je ignorována). Odpovídající funkce je &lt;b&gt;dwm_pos_get&lt;/b&gt;,
která vrátí aktuální pozici a pokud není k dispozici, tak tu jenž je uložena.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Funkce, která mne asi nejvíce zaujala je &lt;b&gt;dwm_loc_get&lt;/b&gt; &amp;mdash; 
&lt;i&gt;Get last distances to the anchors (tag is currently ranging to) and the associated position. The
interrupt is triggered when all TWR measurements have completed and the LE has finished.&lt;/i&gt;
Vrací to pole jak vzdáleností ke kotvám, tak jejich pozice. Pole má maximálně 15 prvků.
A také to posílá pozici samotného zařízení &amp;hellip; prostě kompletní info na jakém základě
je pozice počítaná. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je tam ještě spousta funkcí pro konfiguraci, správu verzi firmware (všechny zařízení se umí automaticky
updateovat) a Bluetooth. Zatím jsem moc nepochopil co jsou &lt;i&gt;user data&lt;/i&gt; (max 34 bajtů) a co je
&lt;i&gt;label&lt;/i&gt; (max 16 bajtů). A ještě jsem zapomněl na GPIO, tj. vzdálené digitální vstupy a výstupy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Modul poskytuje i jednoduchý terminál přes UART. Zajímavě vypadají např. příkazy: &lt;b&gt;la&lt;/b&gt;, &lt;b&gt;ln&lt;/b&gt; a &lt;b&gt;lr&lt;/b&gt;,
tedy &lt;i&gt;list anchors&lt;/i&gt;, &lt;i&gt;list nodes&lt;/i&gt; a &lt;i&gt;list routes&lt;/i&gt;. Předpokládám, že je to popis aktuální sítě,
ale třeba větě: &lt;i&gt;List nodes heard by BN through backhaul, only works for BN.&lt;/i&gt; moc nerozumím. :(
Aha, tak BN = Bridge Node, to zatím ještě neznám.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další link od Jirky: &lt;a href=&#39;https://www.decawave.com/sites/default/files/aps010_dw1000_wsn.pdf&#39; class=&#39;external&#39;&gt;https://www.decawave.com/sites/default/files/aps010_dw1000_wsn.pdf&lt;/a&gt;
&lt;i&gt;The DW1000 provides the physical layer of the protocol stack and has some MAC protocol assist features.
The remaining layers of the protocol stack are realized as software executing on an external microprocessor.&lt;/i&gt; [kapitola 5]&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A Jirkův dotaz: &lt;i&gt;Tj. zajímalo by me, jestli se Pozyx umí domluvit &#34;za roh.&#34; Z robotika.cz vím, ze se můžeš nodu A zeptat na vzdálenost mezi B a C. Ale je nutné, aby A aspoň na jeden z těch dvou měl přímé spojeni? Nebo se můžu zeptat i na Y a Z, které jsou dostupné jen s meziskoky přes další uzly? Pokud umi Pozyx i meziskoky, je tam nezanedbatelný value-add nad DW1000, asi i ospravedlňující cenový rozdíl.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hmm, ale jak to vyzkoušet? Byt máme malý a tak si myslím, že když je všude WiFi, tak všude bude i signal pro kotvy/tagy.
Napadl mne jeden pokus s tagem ve výtahu a monitorovat z domova, ve kterém je patře &amp;hellip; ale zas tak moc jich nemám
a na hru &lt;i&gt;follow me&lt;/i&gt; teď úplně náladu nemám. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. jinak s tím Androidem to úplně růžově nevypadá. Viz článek
&lt;a href=&#39;https://www.xda-developers.com/google-adding-ultra-wideband-uwb-api-android/&#39; class=&#39;external&#39;&gt;Google has added an Ultra-wideband (UWB) API in Android&lt;/a&gt;,
kde ale pak píšou &lt;i&gt;update&lt;/i&gt;, že to API pro Android 12 zatím nebude dostupné aplikacím třetích stran &amp;hellip; ale2 už je to skoro rok a třeba se něco
brzy změní &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 procházka se psem &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/walk-dog.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/walk-dog_t.png&#39; alt=&#39;Procházka se psem&#39; title=&#39;Procházka se psem&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/walk-dog.png&#39;&gt;Procházka se psem&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; no na sledování polohy výtahu to rozhodně není. Jediné co z toho vidím je, že procházka byla cca 15 minut a že ten signal
se ztratil už na chodbě, tak ten Jirkův pokus by asi šel udělat i tady &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.3 tak se ta vzájemné měření propagují &amp;hellip; bez spojky nevidím vzdálenosti &amp;hellip; ale vlastně vzájemné
vzdálenosti těch přimo nedosažitelných nodů nedostanu :(&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/remote-range-indirect.png&#39; alt=&#39;vzdálené měření&#39; title=&#39;vzdálené měření&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;vzdálené měření&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;(je tam také úlet na začátku &amp;mdash; těch cca 70 metrů, ale pak se to srovná)&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220104&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. leden 2022 &amp;mdash; Informační střípky&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Minulý týden jsem toho moc na počítači neudělal &amp;mdash; to jsem si raději užival tajících hor, kde se turistické stezky změnily v divoké horské potoky. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
Ale Jirka se činil a mám plnou schránku nejrůznějších odkazů, článků a doporučení. Také jsem dostal nějaké odpovědi od podpory Pozyxu a od Lilly.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Začal bych od opovědi Pozyxu. Poslali jednak datasheet k &lt;i&gt;Development tagu&lt;/i&gt; a pak odpověď na téma kompatibility a otevřenosti SW:
&lt;i&gt;Regarding your other question, there is no compatibility with other devices due to the software which is indeed closed source. We also don&#39;t provide a way to directly communicate with the DW1000 chip.&lt;/i&gt; Ještě přidali přání do nového roku, ale tyto špatné zprávy (asi očekávané) to přebily. Obávám se, že
svým dalším dotazem, jak je to ve srovnání s &lt;i&gt;DMK1001&lt;/i&gt; za 199USD jsem asi podporu ukončil &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tak ne, před chvíli ještě Robb odpověděl: &lt;i&gt;I understand your remarks, the creator kit was our first product when the company just started and is thus already quite a few years old by now. Regarding the advantage compared to the MDEK1001 Kit. Our product has different features that I don&#39;t find for the other kit such as:&lt;/i&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Arduino compatibility&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Python programming using the python library&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Extensive documentation with code examples&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Visualization on a floor plan&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;on board IMU with access to IMU data&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Access data via the MQTT stream (locally or via the cloud)&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Implementation of certain filters&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Implementation of localization algorithms&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Auto calibration for more than 4 anchors&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Easy configuration using the creator controller&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;&lt;i&gt;Cleaner looking application with more options&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;If you want program on the MDEK1001 Kit you will need a good technical knowledge and invest a significant time in reading the documentation whereas our system is much more user-friendly for people who don&#39;t have such a technical background.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, tolik info přímo od Pozyxu. Zatím srovnání nemám, ale Jirka vypadal, že si možná ten alternativní &lt;i&gt;kit&lt;/i&gt; pořídí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď co nového od Jirky, který se rozhodně mezi svátkama neflákal. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi první skupina se týká komunikace. Ona &lt;i&gt;mesh&lt;/i&gt; komunikace je primární účel této technologie a lokalizace je
takový vedlejší prodkut, i když je nutná k vytvoření rozumné komunikační sítě. DWM1001 kit podporuje pouze 34 bajtů pro uživatelská data
což je na jeden packet hrozně málo.&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2019/01/DWM1001-Firmware-User-Guide-2.1.pdf&#39; class=&#39;external&#39;&gt;DWM1001-Firmware-User-Guide-2.1.pdf&lt;/a&gt; &amp;mdash; &lt;i&gt;After reading this guide developers should be able to compile, build and run the DWM1001 firmware, including custom modifications.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Decawave does not provide the library source code, or support any use of the PANS
library except through the PANS API which is described in the API Document.&lt;/i&gt; &amp;hellip; hmm, tak také samá voda.
A po pravdě žádné info o 1023 bajtových zprávách jsem tam neviděl (ale prošel jsem to hodně rychle).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dále tu mám dotaz k minulému experimentu &amp;mdash; doplňuji obrázek bytu a umístění kotev ke grafu:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 718px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/home-tags.png&#39; alt=&#39;Pozice kotev k experimetu z 27/12&#39; title=&#39;Pozice kotev k experimetu z 27/12&#39; class=&#39;border&#39;  width=&#39;712&#39; height=&#39;405&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Pozice kotev k experimetu z 27/12&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Sedím u počítače, kde základna je &lt;b&gt;None&lt;/b&gt;, bez &lt;b&gt;3455&lt;/b&gt; další kotvy vůbec nevidím, a když přidám &lt;b&gt;3455&lt;/b&gt;
tak můžu zjistit pouze vzdálenosti k &lt;b&gt;3455&lt;/b&gt;, ale nikoliv vzdálenosti sousedních kotev &lt;b&gt;3411&lt;/b&gt; a &lt;b&gt;3431&lt;/b&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jirka píše: &lt;i&gt;Při činnosti skrz zdi a za roh doporučuje Decawave přenastavit parametry:&lt;/i&gt;
&lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2018/10/APS006_Part-2-NLOS-Operation-and-Optimizations_v1.5.pdf&#39; class=&#39;external&#39;&gt;APS006_Part-2-NLOS-Operation-and-Optimizations_v1.5.pdf&lt;/a&gt;.
&lt;i&gt;Pak si věří na zhruba 10m skrz dvě slabé zdi. Tj. na byt by to mohlo při troše štestí a dobrém umístění kotev stačit.
V dalším dokumentu pak přidávají &#34;nižši frekvence, vyšší dosah&#34; (což je vidět i na 2.4 GHz wifi vs 5 GHz wifi):&lt;/i&gt;
&lt;a href=&#39;https://www.decawave.com/sites/default/files/aps017_max_range_in_dw1000_systems.pdf&#39; class=&#39;external&#39;&gt;aps017_max_range_in_dw1000_systems.pdf&lt;/a&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220106&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. leden 2022 &amp;mdash; Follow me&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes bych přidal druhou dávku „kompilovaných mailů od Jirky”. Včera jsme se na callu bavili, že není špatné najít všechny odkazy na jednom místě,
tak je to lepší hledat na webu než v mailech. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Začal bych mailem z 30/12: &lt;i&gt;A trochu pro pobavení UWB Follow Me - čtyři kotvy na robotovi, jeden tag na clověkovi:&lt;/i&gt;&lt;/div&gt;
&lt;center&gt;
&lt;iframe width=&#34;640&#34; height=&#34;360&#34; src=&#34;https://www.youtube.com/embed/fieUOGI0wnw&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;div class=&#39;p&#39;&gt;&amp;hellip; něco podobného bych rád zkusil s &lt;a href=&#39;/robots/eduro/en&#39;&gt;Edurem&lt;/a&gt;, pak &lt;a href=&#39;/guide/osgar/en&#39;&gt;John Deere&lt;/a&gt; a případně i se Spiderem (ten má rozhodně širší základnu). &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další maily se točili kolem toho, jak moc je UWB s DW1000 čipem certifikované a použitelné v různých zemích.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;JI:&lt;/b&gt; Odkazy táham z téhle přednašky (půl hodiny, asi za ten čas asi stojí): &lt;a href=&#39;https://www.youtube.com/watch?v=TR-rahy3Y2k&#39; class=&#39;external&#39;&gt;https://www.youtube.com/watch?v=TR-rahy3Y2k&lt;/a&gt; (Po třinácté minutě jsou tyhle regulace.)&lt;/div&gt;

&lt;h3&gt;Evropská regulace&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;As per the ECC/DEC/(06)04 [i.2] and Decision 2007/131/EC [i.4] and its amendments [i.5], [i.6], the UWB transmitter equipment conforming to the present document is not to be installed at a fixed outdoor location, for use in flying models, aircraft and other forms of aviation. The present document applies to UWB equipment with an output connection used with a dedicated antenna or UWB equipment with an integral antenna.&lt;/i&gt;
&lt;a href=&#39;https://www.etsi.org/deliver/etsi_en/302000_302099/30206501/02.01.01_60/en_30206501v020101p.pdf&#39; class=&#39;external&#39;&gt;ETSI.ORG en_30206501v020101p.pdf&lt;/a&gt; (strana 7)
Mobilní nelétající užití venku je asi OK.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nicméně, navazující pravidla přidávají:
(LT = Location Tracking)
&lt;i&gt;LT2 systems: These systems, operating in the 3,1 GHz to 4,8 GHz region (see ECC/REC(11)09 [i.8]), are intended for person and object tracking and industrial applications at well-defined locations. The transmitting terminals in these systems may be located indoors or outdoors, and may be fixed or mobile. They operate at fixed sites and may be subject to registration and authorization, provided local coordination with possible interference victims has been performed, ECC Report 167 [i.10] and ECC Report 170 [i.11].&lt;/i&gt;
&lt;a href=&#39;https://www.etsi.org/deliver/etsi_en/302000_302099/30206502/02.01.00_20/en_30206502v020100a.pdf&#39; class=&#39;external&#39;&gt;ETSI.ORG en_30206502v020100a.pdf&lt;/a&gt; (strana 8)
Tj. pro určité frekvence je asi lokalizace (ne přenos dat) možná i outdoor fixed.
Auta a vlaky v pohybu (!) budou asi jestě další speciální kategorie: &lt;i&gt;Furthermore, it does not cover LT1 UWB transmitters that are operated on board a road or rail vehicle running on a public network or highway.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jestli ty frekvence čtu dobře, jsou to kanály 1 až 4. Z nějakého Decawave dokumentu si vybavuju &lt;i&gt;default: 5&lt;/i&gt;.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Martine, v tom 1.8 GB zipu od Decawave je sice hromada zdrojaků, ale to nejdůležitější, co běží na tom Nordic cosi Armu řídícím DW1000, je tam jenom v binarní formě:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Otázka: &lt;i&gt;... But I can’t fing the PANS’s source code&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Odpověď: &lt;i&gt;PANS is shipped as a library/binary only. There is no source code for this library available for download.&lt;/i&gt;
&lt;a href=&#39;https://decaforum.decawave.com/t/dwm1001-pans-release-2/4347/17&#39; class=&#39;external&#39;&gt;https://decaforum.decawave.com/t/dwm1001-pans-release-2/4347/17&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je tam dost knihoven a zdrojáků, aby si člověk napsal vlastní, ale je nutné začít od nuly.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Koukám na to, protože hledám původ omezení uživatelských zpráv na 34 B. Jeden strop je TLV format, který používá 1B pro délku zprávy. Nicméně jsou tam 3B headeru a 252 B zbývá (anebo víc? počítá se ten header do délky?). Takže nevím. Jenže „prostě to zkompiluju s vyšší hodnotou” kvůli nepřítomnosti zdrojáků nepůjde.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;U mě se podobně ochladilo po zjištení, že ten Decawave firmware pro dev board je closed source. Je tam pár drobností, které bych dělal jinak. Jednak těch 34 B pro &lt;b&gt;usr_data&lt;/b&gt; packet, jednak celé chovaní kolem bluetooth - kupříkladu tam neni mesh &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;, takže při nastavování musí být všechna zařízení v dosahu BLE. Vždyť je to komunikační modul s dlouhym dosahem, proboha!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tj. koukám, kolik může dát práce to celé přeprogramovat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Což je zajímavá výzva pro matfyzáky:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vstup:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;N komunikačních zařízení, která umí &lt;i&gt;Send&lt;/i&gt;, &lt;i&gt;Receive&lt;/i&gt;, &lt;i&gt;GetTime&lt;/i&gt; a &lt;i&gt;GetUniqueId&lt;/i&gt;.&lt;/li&gt;

&lt;li&gt;Všechna komunikují na jednom komunikačním kanálu a když mluví dvě blízká zařízení najednou, ruší se.&lt;/li&gt;

&lt;li&gt;Ne všechna zařízeni jsou v komunikačním dosahu, ale každé je v dosahu aspoň tří dalších, která nejsou v jedné přímce.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Výstup:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Všech N zařízení zná své 3D souřadnice.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Volitelný výstup:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Schopnost routovat zprávy z A do B, i když nejsou v přímém komunikačním dosahu.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;S pomocí &lt;i&gt;Send&lt;/i&gt;, &lt;i&gt;Receive&lt;/i&gt;, &lt;i&gt;GetTime&lt;/i&gt; a &lt;i&gt;GetUniqueId&lt;/i&gt; se snadno udelá &lt;i&gt;GetDistanceTo&lt;/i&gt; (two-way ranging), takže předpokladejme, že ta existuje taky. Akorát spotřebuje 2xSend, ideálně těsně po sobě.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Rozšířená varianta úlohy:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Některá z těch N zařízení jsou mobilní a průběžně mění jak pozici, tak topologii sítě.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;Alternativni vyrobce podobné technologie:
&lt;a href=&#39;https://www.nxp.com/products/wireless/secure-ultra-wideband-uwb:UWB-TRIMENSION&#39; class=&#39;external&#39;&gt;www.nxp.com&lt;/a&gt;
Plus: &lt;i&gt;FIRA stack installed&lt;/i&gt; (ať už to znamená co přesně)
Mínus: Nevidím volně dostupné velké množství datasheetu, jako ma Decawave.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. Oprava matfyzácké úlohy: „Vždycky jsou v dosahu alespoň čtyři další zařízení a nejsou v jedne rovině.” Nebo tak nějak. Proste „cokoli je geometricky potřeba, je splněno.”&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;MD:&lt;/b&gt; nebylo by použitelné některé to jejich repo? &lt;a href=&#39;https://github.com/Decawave/uwb-apps&#39; class=&#39;external&#39;&gt;https://github.com/Decawave/uwb-apps&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;JI:&lt;/b&gt; Jo, jo, z těch příkladů se dá vyjít. Jsou to, mimochodem, ty zdrojáky v tom 1.8 GB balíku.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jsou nejspíš dobré na ověření toho, že dokážeme zkompilovat, nahrát a pustit funkční kód. Mezi těmi příklady a celou tou jejich closed source PANS funkcionalitou je ale dlouhá cesta.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;MD:&lt;/b&gt; oni tam těch repo mají 8 &amp;hellip; není toto blíže? &lt;a href=&#39;https://github.com/Decawave/uwb-core&#39; class=&#39;external&#39;&gt;https://github.com/Decawave/uwb-core&lt;/a&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;JI:&lt;/b&gt; Jo, to vypada sloziteji. Já jsem se napoprvé lekl někde u NewtOS („Co prosim?”), ale asi jsem měl pokračovat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Mimochodem, proklikal jsem se odtamtud na &lt;a href=&#39;https://lohmega.com/faq/&#39; class=&#39;external&#39;&gt;https://lohmega.com/faq/&lt;/a&gt;, kde dole zmiňují důležitost výšky antény nad zemí. A když si tak vybavuju snímky některých průmyslových instalací z přednášek, co jsem videl, asi by se to mělo aplikovat i na výšku pod stropem a vlastně vůbec vzdálenost od odrazive plochy 
(&lt;a href=&#39;https:/wikipedia.org/wiki/Fresnel_zone&#39; class=&#39;external&#39;&gt;https:/wikipedia.org/wiki/Fresnel_zone&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. Autoři článku &lt;a href=&#39;https://www.researchgate.net/publication/341586825_Error_Corrections_for_Ultrawideband_Ranging/fulltext/5ec8754c92851c11a8815f25/Error-Corrections-for-Ultrawideband-Ranging.pdf&#39; class=&#39;external&#39;&gt;Error-Corrections-for-Ultrawideband-Ranging.pdf&lt;/a&gt; (obr. 5), který je teda hlavně o něčem jiném, pozoruji nekolikaminutový (až ~18 min) warmpup DW1000, než začne hlásit stabilní čísla.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220110&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. leden 2022 &amp;mdash; pozyx.doPositioning()&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Asi je na čase udělat pár pokusů ve scénáři, pro který je Pozyx primárně určený &amp;mdash; lokalizace. Přiznám se, že voláním jednotlivých funkcí
jsem neuspěl a od automatické kalibrace sítě autoři odrazují. Používám tedy &lt;i&gt;manuální nastavení&lt;/i&gt; a vzor tutoriál
&lt;a href=&#39;https://docs.pozyx.io/creator/Tutorial-2:-Ready-to-localize-(Python).1189118273.html&#39; class=&#39;external&#39;&gt;Ready to localize&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Přepsaný kód vypadá následovně:&lt;/div&gt;

&lt;pre&gt;from pypozyx import PozyxSerial, DeviceCoordinates, Coordinates

serial_port = &#39;/dev/ttyACM0&#39;
pozyx = PozyxSerial(serial_port)

anchors = [DeviceCoordinates(0x0D53, 1, Coordinates(2980, 2240, 1250)),
           DeviceCoordinates(0x0D67, 1, Coordinates(2980, 3140, 1250)),
           DeviceCoordinates(0x0D7F, 1, Coordinates(710, 160, 930)),
           DeviceCoordinates(0x6826, 1, Coordinates(130, 4350, 2230))]

remote_id = None
status = pozyx.clearDevices(remote_id)
for anchor in anchors:
    status &amp;amp;= pozyx.addDevice(anchor, remote_id=remote_id)

position = Coordinates()
status = pozyx.doPositioning(position, 3, remote_id=remote_id)
print(status, position)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A výsledek:&lt;/div&gt;

&lt;pre&gt;1 X: 2841.0, Y: 1249.0, Z: 776.0&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;To je OK. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Stejně tak potěšila &lt;i&gt;vzdálená lokalizace&lt;/i&gt;, kdy místo &lt;i&gt;remote_id=None&lt;/i&gt; vyplníte
konkretní ID zařízení. Jen poznámka, že informace o všech kotvách je třeba nejprve do zařízení
nahrát (lze případně uložit dlohodobě pomocí &lt;i&gt;pozyx.saveAnchorIds()&lt;/i&gt; a &lt;i&gt;pozyx.saveRegisters()&lt;/i&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Aby to zas nebylo tak moc růžové, tak ta pozice 2x extra stabilní není, ale to může být mým
rozložením kotev:&lt;/div&gt;

&lt;pre&gt;POS ID 0x0000, x(mm): 2780.0 y(mm): 1240.0 z(mm): 834.0
POS ID 0x0000, x(mm): 2882.0 y(mm): 1177.0 z(mm): 856.0
POS ID 0x0000, x(mm): 3541.0 y(mm): 1390.0 z(mm): 1539.0
POS ID 0x0000, x(mm): 2618.0 y(mm): 1414.0 z(mm): 754.0
POS ID 0x0000, x(mm): 2710.0 y(mm): 1233.0 z(mm): 1133.0
POS ID 0x0000, x(mm): 2860.0 y(mm): 1212.0 z(mm): 845.0
POS ID 0x0000, x(mm): 2881.0 y(mm): 1228.0 z(mm): 858.0
POS ID 0x0000, x(mm): 2864.0 y(mm): 1225.0 z(mm): 842.0
POS ID 0x0000, x(mm): 2890.0 y(mm): 1122.0 z(mm): 933.0
POS ID 0x0000, x(mm): 2882.0 y(mm): 1227.0 z(mm): 844.0
POS ID 0x0000, x(mm): 2871.0 y(mm): 1158.0 z(mm): 940.0
POS ID 0x0000, x(mm): 2896.0 y(mm): 1218.0 z(mm): 847.0
POS ID 0x0000, x(mm): 2898.0 y(mm): 1206.0 z(mm): 863.0
POS ID 0x0000, x(mm): 2675.0 y(mm): 1356.0 z(mm): 888.0&lt;/pre&gt;

&lt;hr&gt;
&lt;a id=&#34;220114&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. leden 2022 &amp;mdash; (Ne)dostupnost a časové známky&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dlužím vám pár informací ohledně vývojového kitu &lt;a href=&#39;https://www.symmetryelectronics.com/products/decawave-now-qorvo/mdek1001/&#39; class=&#39;external&#39;&gt;MDEK1001&lt;/a&gt;
za $199 (teoreticky). První co mne při objednání trošku zklamalo byla cena dopravy:
&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/mdek-shipping.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/mdek-shipping_t.png&#39; alt=&#39;Cena dopravy pro MDEK1001 z Smmetry Electronics&#39; title=&#39;Cena dopravy pro MDEK1001 z Smmetry Electronics&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;498&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/mdek-shipping.png&#39;&gt;Cena dopravy pro MDEK1001 z Smmetry Electronics&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Plus to nebylo na skladě, tak jsem se 2x rozhoupával, zda do toho jít. Naskladněné to mělo být 12. ledna 2022
(ano, to již bylo &amp;mdash; ja to objednával 5. ledna). Jirka přiznal, že si to již objednal a to mne poštouchlo, ale
chyba lávky. Nejprve přišel formulář, na co že se to chystáme používat. Byl jsem varován Jirkou, takže OK.
Druhý den ale přišel mail: &lt;i&gt;Unfortunately, we are now out of stock and it will take until April for item to arrive.
Please confirm if you would like to wait and keep your order opened.&lt;/i&gt; Hmm, no Jirka objednával dříve a tak snad se vešel
do té várky k 12/1 &amp;hellip; jo jo, to by bylo moc jednoduché. 11/1 přeposílal mail: &lt;i&gt;Unfortunately, the supplier had a delay
and the new date is May 2022&lt;/i&gt;. Jirka objednávku zrušil a hledá alternativy. Já bych asi také měl &amp;hellip; aneb &lt;i&gt;Pozyx&lt;/i&gt;
je předražený, ale na druhou stranu jsem ho dostal ještě ten týden před vánoci.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak a teď ty &lt;i&gt;časové známky&lt;/i&gt;. V úterý jsem dělal nějaké experimenty v hale ČZU a to také úplně růžové nebylo.
Vedle informace &lt;i&gt;kolik je naměřená vzdálenost mezi A a B?&lt;/i&gt; je třeba se i ptát &lt;i&gt;jak stará je tato informace?&lt;/i&gt;.
Krabičky totiž s radostí odpoví &lt;i&gt;to vím, to vím&lt;/i&gt;, ale může to být několik minut staré! Měřil jsem totiž nejprve
krátké (cca 5m) vzdálenosti a pak přes celou halu (cca 20m) a chodily mi dál ty krátké &amp;hellip; ale se starou
časovou známkou, což zase oceňuji.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A ještě se mi často děje jedna &lt;i&gt;nepěknost&lt;/i&gt; &amp;mdash; zapomínám některé kotvy zapnout (případně jim může dojít baterka).
Pokud se ptáte jen na pozici, tak je schopné si to něco vymyslet, tedy nejčastěji (0, 0, 0), což možná člověka
trkne. Ale pokud to jsou jiná čísla a vezme to v úvahu měření &lt;i&gt;z minulého století&lt;/i&gt;, tak &lt;i&gt;špatný, špatný,
špatný&lt;/i&gt;, abych citoval jednu sci-fi co jsem dostal pod stromečkem. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A jak moc velká skleróza může být naznačuje tento obrázek (pozn. že ty časové známky jsou interní, od času 0
od okamžiku napájení kotvy) &amp;hellip; hmm, takže jsem si ten obrázek interpretoval „naruby”??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/forgotten-anchors.png&#39; alt=&#39;zapomenuté (nenapájené) kotvy&#39; title=&#39;zapomenuté (nenapájené) kotvy&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;zapomenuté (nenapájené) kotvy&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No jsou vidět dvě hlavní „časové” skupinky, ale ta červená mne mate &amp;hellip; to bude chtít ještě nějakou revizi.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220115&#34;&gt;&lt;/a&gt;
&lt;h2&gt;15. leden 2022 &amp;mdash; Dosah 100 metrů? Ha, ha, ha&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Jo, jo, jak titulek z Blesku. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Jirka by to jistě rozporoval, že pro jiný kanál a preambuli bych mohl dostat více,
takže první &lt;i&gt;dálkové měření&lt;/i&gt; venku na zahradě bylo s defaultním nastavením: kanál 5, datarate 110, preambule 1024,
PRF 64, power 11.5
(vycházím z toho obrázku pro 0x6867, kterou jsem měl zapojenou do počítače). Bylo to na výšku na monitoru na notebooku
(jinak položeném na zemi) a s druhou krabičkou (0x0D67) připojenou na powerbance jsem šel přes zahradu tam a pak zpět.
Přidal jsem tam cca 5s pauzy u „visuálně význačných bodů”, ale nutně jsem trasu nezopakoval. A výsledek vypadá takto:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-outdoor1.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-outdoor1_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-outdoor2.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-outdoor2_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No 100m to není. Je zvláštní, že v druhém pokusu je to ještě horší než v tom prvním &amp;mdash; že by se ta powerbanka tak
rychle vybila? Skoro to vypadá jistější do 30m a někdy do 50m. Možná znova zkusím projít nastavení, jestli nemůžu
zvětšit citlivost a ty powerbanky nabiju na max, ale s tímto nastavením by pořádně nefungovalo ani sekání zahrady,
resp. by to chtělo hustější síť kotev.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. koukám znova na to nastavení a kanál můžu nastavit na 1, 2, 3, 4, 5, 7 (ano, 6 tam chybí). Datarate můžu zvýšit
z 110 na 850 nebo 6810. Preambule je od 64 do 4096 (mám 1024). PRF je 16 nebo 64 a power je od 0.0 do 33.0 (používám 11.5).
Závěr &amp;mdash; je tam prostor pro zlepšení/experimenty. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220116&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. leden 2022 &amp;mdash; UWB channels&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes bych začal opisem tabulek z &lt;a href=&#39;https://www.decawave.com/sites/default/files/resources/dw1000_user_manual_2.11.pdf&#39; class=&#39;external&#39;&gt;dw1000_user_manual_2.11.pdf&lt;/a&gt;.
Jirka včerejší post komentoval: &lt;i&gt;Co nejnižší kanál, co nejnižší datarate, co nejdelší preamble, PRF netuším, &#34;power&#34; zní jako &#34;moarrrrre&#34;,
anténu aspoň půl metru nad zemí ve volném prostoru, ještě lépe metr nad zemí, a v cestě by neměla být žádná překážka nebo odrazová plocha,
jako třeba země, takže nejlépe testovat přes údolí nebo mezi mrakodrapy.&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;První tabulka naznačuje, že defaultní kombinace co používám (110kbs a 1024 preambule) není výrobcem doporučovaná:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 545px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/dw1000-preamble-lengths.png&#39; alt=&#39;Tabulka doporučených délek preambule&#39; title=&#39;Tabulka doporučených délek preambule&#39; class=&#39;border&#39;  width=&#39;539&#39; height=&#39;306&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Tabulka doporučených délek preambule&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;The preamble sequence used at all data rates is the same, i.e. it does not depend on the chosen data rate.
The preamble sequence length, (i.e. the number of symbol intervals for which it is repeated), has a
significant effect on the operational range and the accuracy of timestamps. Table 57 gives some
recommended preamble sequence lengths to use depending on the data rate. In general, a longer preamble
gives improved range performance and better first path time of arrival information while a shorter preamble
gives a shorter air time and saves power. When operating a low data rate for long range, then a long
preamble is needed to achieve that range. At a high data rate the operating range is naturally short so there
is no point in sending a very long preamble as it wastes time and power for no added range advantage.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;There are two choices of mean pulse repetition frequency (PRF) within the DW1000. These are 16 MHz PRF
or 64 MHz PRF. The higher PRF gives
more accuracy on the first path timestamp and perhaps slightly improved operating range, however this
comes at the price of additional power consumption.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 735px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/dw1000-channels-tab.png&#39; alt=&#39;Tabulka frekvencí a šířka pásma pro jednotlivé kanály&#39; title=&#39;Tabulka frekvencí a šířka pásma pro jednotlivé kanály&#39; class=&#39;border&#39;  width=&#39;729&#39; height=&#39;369&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Tabulka frekvencí a šířka pásma pro jednotlivé kanály&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Strana 209, sekce 9.1 Operating Range: &lt;i&gt;The operating
range also varies depending on the channel centre frequency and channel bandwidth selected – a lower
centre frequency gets more range than a higher one, while the wider bandwidth channels channel 4 and
channel 6 have more range than the standard 500 MHz bandwidth channels as the wider channel allows
more energy to be sent at a given dBm / MHz regulatory limit.&lt;/i&gt; (předpokládám, že 6 má být 7?)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zatím si to interpretuji tak, že nejlepší výsledek bych měl dostat pro kanál 1 (možná 4?), &lt;i&gt;datarate&lt;/i&gt;
nechat na 110kbps, &lt;i&gt;preamble&lt;/i&gt; zvýšit na 4096, PRF nechat na 64 a &lt;i&gt;power&lt;/i&gt; „co to dá”???&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nic, dnes to nebude. :( Ten úžasný nastavovač &lt;b&gt;device-configurator-1.3.6.appimage&lt;/b&gt; sice dovolí
vyplnit co jsem napsal výše, ale neuloží to do zařízení a po zapnutí se to vrátí do defaultu. Divné.
Je tam možnost si vytvořit vlastní &lt;i&gt;profil&lt;/i&gt; pro danou kombinaci (našel jsem tam např. &lt;i&gt;High range&lt;/i&gt;
a &lt;i&gt;High update rate&lt;/i&gt;), ale do zařízení se to uloží jen krátkodobě. Co je nastavené lze zjistit i
z Pythonu:&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; serial_port = &#39;/dev/ttyACM0&#39;
&gt;&gt;&gt; pozyx = pypozyx.PozyxSerial(serial_port)
&gt;&gt;&gt; data = pypozyx.SingleRegister()
&gt;&gt;&gt; pozyx.getUWBChannel(data)
1
&gt;&gt;&gt; print(data)
0x5&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Je tam i odpovídající &lt;b&gt;setUWBChannel()&lt;/b&gt;, s popisem &lt;i&gt;If using this remotely, remember to change
the local UWB channel as well to make sure you are still able to communicate with the remote device.&lt;/i&gt;
Trošku mi to připomíná „Kdyby tisíc klarinetů” &amp;mdash; až vyhodíte pojistky bude tma &amp;hellip; no nic, je
čas sekat třisky a vrátit se do civilizace.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220123&#34;&gt;&lt;/a&gt;
&lt;h2&gt;23. leden 2022 &amp;mdash; Channel 1, preambule 4096, gain 33 = více jak 80 metrů&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnešní měření mi zase dodala naději. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Udělal jsem &lt;a href=&#39;https://github.com/robotika/osgar/commit/524671bb37ae983c58f440b07dd1428c0440faea&#39; class=&#39;external&#39;&gt;drobný hack&lt;/a&gt;,
který všem vypsaným zařízením nastaví:&lt;/div&gt;

&lt;pre&gt;settings = pypozyx.UWBSettings()
settings.bitrate = 0  # {0: &#39;110 kbit/s&#39;, 1: &#39;850 kbit/s&#39;, 2: &#39;6.81 Mbit/s&#39;}
settings.channel = 1
settings.prf = 2  # {1: &#39;16 MHz&#39;, 2: &#39;64 MHz&#39;}
settings.gain_db = 33.0
# {0x0C: &#39;4096 symbols&#39;, 0x28: &#39;2048 symbols&#39;, 0x18: &#39;1536 symbols&#39;, 0x08: &#39;1024 symbols&#39;,
#  0x34: &#39;512 symbols&#39;, 0x24: &#39;256 symbols&#39;, 0x14: &#39;128 symbols&#39;, 0x04: &#39;64 symbols&#39;}
settings.plen = 0x0C
self.pozyx.setUWBSettings(settings, remote_id=remote_id)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;A když jsem nechal jednu kotvu uvnitř a druhou obešel chatu, tak nebyl žádný výpadek. Podobně pak dole
na zahradě stejný test jako před týdnem. Základnu jsem dal tentorkát na převráceny plastový sud (tj. mělo by to být
alespoň ten metr nad zemí) a druhou kotvu jsem napájel z 5000mA powerbanky dříve používané na &lt;a href=&#39;/robots/marina/en&#39;&gt;lodičce&lt;/a&gt;.
Primárně jsem zkoušel nové nastavení výše (kanál 1, preambule 4096, max gain 33 čert ví čeho). A výsledky (opakované 2x)
mne tak potěšili, že jsem se prošel ještě vedle na „pole” a na 80 metrech to stále něco měřilo. Je tam mezera, protože
čast zakrýva &lt;i&gt;skoro padlý&lt;/i&gt; strom. No a nakonec jsem použil defaultní nastavení jako referenci.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-82m.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-82m_t.png&#39; alt=&#39;Maximální vzdálenost pro (1, 4096, 33)&#39; title=&#39;Maximální vzdálenost pro (1, 4096, 33)&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;169&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-82m.png&#39;&gt;Maximální vzdálenost pro (1, 4096, 33)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-power5000mA.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-power5000mA_t.png&#39; alt=&#39;Původní nastavení&#39; title=&#39;Původní nastavení&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;169&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-power5000mA.png&#39;&gt;Původní nastavení&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-channel1.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-channel1_t.png&#39; alt=&#39;Bezztratové měření s novým nastavením&#39; title=&#39;Bezztratové měření s novým nastavením&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;169&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-channel1.png&#39;&gt;Bezztratové měření s novým nastavením&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě bych zmínil, že při testování změny nastavení mi vzdálenost mezi dvěma kotvama skočila v průměru z 3.93m na 4.01m,
ale to je vlastně v toleranci &amp;mdash; možná by s různým nastavením šlo zjistit, zda je mezi zařízeními nějaká překážka?? No nic,
příště, možná, &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220201&#34;&gt;&lt;/a&gt;
&lt;h2&gt;1. únor 2022 &amp;mdash; DW1000 + BU01 (Jirka)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Už mi zase ten seznam co jsem všechno za poslední dobu neudělal nějak nezdravě narostl. Navíc dnes není 1. února, ale už 5.
To datum se ale váže k Jirkovu mailu (začal psát s diakritikou, abych při přepisování nedělal tolik chyb &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;), kde popisuje
své první úspěchy s alternativní deskou používající DW1000 čip.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Za sebe bych si udělal alespoň „záložku” na českou IoT stránku, kde jednak je celá technologie UWB popsána, a dále jsem
tam poprvé viděl grafy energetické náročnosti v závislosti na typu vysílané/přijímané části zpráv:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#39;https://www.iot-portal.cz/2018/08/23/urcovani-polohy-v-realnem-case-s-presnosti-na-10-cm/&#39; class=&#39;external&#39;&gt;Určování polohy v reálném čase s přesností na 10 cm (2018-08-23)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Tak teď ten slibovaný mail od Jirky:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel right&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/nodemcu-bu01.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/nodemcu-bu01_t.png&#39; alt=&#39;NodeMCU-BU01 (ai-thinker.com)&#39; title=&#39;NodeMCU-BU01 (ai-thinker.com)&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;220&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/nodemcu-bu01.png&#39;&gt;NodeMCU-BU01 (ai-thinker.com)&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pracuju s &lt;a href=&#39;https://docs.ai-thinker.com/en/uwb&#39; class=&#39;external&#39;&gt;NodeMCU-BU01&lt;/a&gt;, což je poměrně minimalistická deska s STM32F103C8 mikrokontrolérem kolem BU01 modulu s DW1000 čipem od Decawave pro komunikaci a následně pro měření vzdálenosti. Koupil jsem těch desek deset a vypadá to, že některé přišly flashnuté jako &#34;anchor&#34; a jiné jako &#34;tag&#34;. To je ale zatím vcelku jedno, protože s defaultním firmware jsem je zatím nedonutil k vzájemné komunikaci. Ani se moc nesnažím, protože chci firmware vlastní.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Slušnou nadvládu nad tou deskou získávám, když vyjdu z &#34;opencm&#34; příkladu na &lt;a href=&#39;https://github.com/satoshinm/pill_blink&#39; class=&#39;external&#39;&gt;https://github.com/satoshinm/pill_blink&lt;/a&gt;. OpenCM3 je knihovna dostatečne nízkoúrovňová, abych mohl řešit potíže, a dostatečně vysokoúrovňová na to, abych se nezbláznil z registrů a prescalerů a všeho možného. V důsledku dokážu blikat všemi třemi LED na palubě, komunikovat s PC přes UART a reagovat na přerušení vyvolané stiskem tlačítka. Dokumentaci OpenCM3 bych ale hodnotil jako nedostatečnou.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Mikrokontrolér programuji a debuguji pomocí &lt;a href=&#39;https://packages.debian.org/sid/electronics/stlink-tools&#39; class=&#39;external&#39;&gt;stlink-tools&lt;/a&gt; přes &lt;a href=&#39;https://www.waveshare.com/wiki/ST-LINK/V2_(mini)&#39; class=&#39;external&#39;&gt;ST-LINK/V2 Mini&lt;/a&gt;. Občas sáhnu po &lt;a href=&#39;https://openocd.org/&#39; class=&#39;external&#39;&gt;OpenOCD&lt;/a&gt;, které se zdá mocnější, ale konkrétní výhody jsem zatím nenašel. Resp. tu jednu, o které vím, zatím nevyužívám. Snad až se budu snažit flashovat firmware větší než 64kB. Ono totiž tenhle procesor má podle datasheetu 64kB flash a to samé o sobě i tvrdí, ale &lt;a href=&#39;https://mecrisp-stellaris-folkdoc.sourceforge.io/stm32f103c8-diags.html&#39; class=&#39;external&#39;&gt;ve skutečnosti má často 128kB&lt;/a&gt;. Jak je to konkrétně s mými kousky zatím nevím. S OpenOCD jde při flashování ignorovat, co o sobě ten procesor hlásí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co zatím taky nevím, je, jestli funguje USB pro přenos dat a ne jen pro napájení. Defaultní firmware přes USB nekomunikuje. USB bootloadery, které jsem nahrával - &lt;a href=&#39;https://github.com/Serasidis/STM32_HID_Bootloader&#39; class=&#39;external&#39;&gt;HID Bootloader&lt;/a&gt; a &lt;a href=&#39;https://github.com/rogerclarkmelbourne/STM32duino-bootloader&#39; class=&#39;external&#39;&gt;STM32duino-bootloader&lt;/a&gt; - nefungují. PC ani nedetekuje připojené zařízení. Včera jsem asi konečně vykopal psa, který to způsobuje. Externí oscilátor na NodeMCU-BU01 tiká na 16MHz, zatímco většina desek se stejným procesorem používá oscilátor na 8Mhz. Pokud bootloadery předpokládají 8MHz, je pak časování na USB úplně mimo.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nejspíš z podobného důvodu, kvůli oscilátoru, jsem zatím nerozchodil ani &lt;a href=&#39;https://github.com/stm32duino/Arduino_Core_STM32&#39; class=&#39;external&#39;&gt;Arduino pro STM32&lt;/a&gt;. &lt;a href=&#39;https://www.zephyrproject.org/&#39; class=&#39;external&#39;&gt;Zephyr OS&lt;/a&gt; jednak naráží na to samé, jednak i po pokusu o přenastavení padá program v nějakém ošetření přerušení, o které jsem ani neprosil. Zephyr i Arduino prozatím odkládám.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jako další krok bude nutné rozchodit SPI, abych se měl jak domluvit s DW1000. Jako bonus by se mi líbilo rozchodit to USB, abych nemusel pořád pracně připojovat USB-UART převodník. Pak by možná i znovu nastal čas na bootloader, aby nebyl potřeba ani ten STLINK.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220210&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. únor 2022 &amp;mdash; Decawave driver (Jirka)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;OK, dnes to budou zase novinky od Jirky, jeden starší a jeden nový &amp;hellip;&lt;/div&gt;

&lt;h3&gt;[Update 5/2/2022]&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;b&gt;0xdeca0130!&lt;/b&gt; Tj. dokážu přes SPI přečíst device id z DW1000. Zádrhel byl &lt;a href=&#39;http://libopencm3.org/docs/latest/stm32f1/html/group__spi__file.html&#39; class=&#39;external&#39;&gt;opět v mizerné dokumentaci knihovny OpenCM3&lt;/a&gt;. Pro zápis a čtení přes SPI neslouží funkce spi_write() a spi_read(), a to dokonce navzdory tomu, že jsou tyhle dvě funkce použité ve &lt;a href=&#39;https://github.com/libopencm3/libopencm3-examples/blob/master/examples/stm32/f1/lisa-m-2/spi/spi.c&#39; class=&#39;external&#39;&gt;vzorovém příkladu pro SPI&lt;/a&gt;. Je potřeba &lt;a href=&#39;https://www.mail-archive.com/libopencm3-devel@lists.sourceforge.net/msg00338.html&#39; class=&#39;external&#39;&gt;použít spi_xfer()&lt;/a&gt;. Teď ještě k tomu vlastnímu readfromspi() přidat writetospi() a měl by začít fungovat &lt;a href=&#39;https://github.com/Decawave/dwm1001-examples/tree/master/deca_driver&#39; class=&#39;external&#39;&gt;celý driver od Decawave&lt;/a&gt;. Kus jsem ho už použil pro to čtení device id.&lt;/div&gt;

&lt;h3&gt;[Update 10/2/2022]&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Mám portovaný &lt;i&gt;Decawave driver&lt;/i&gt;. Funguje mi posílání a příjem zpráv. Mačkáním tlačítka na jedné desce blikám ledkou na druhé. Na obou deskách je stejný firmware, takže se přepínají navzájem.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zajímavý zádrhel je vnitřní stavový automat DW1000. Kupříkladu ze stavu &#34;přijímám&#34; neumí přejít přímo do stavu &#34;vysílám&#34;. Nejdříve je potřeba příjem přerušit a přejít do stavu &#34;nic nedělám&#34;. Zároveň se taky ve stavu &#34;přijímám&#34; sám od sebe neudrží. Když přijde částečná, či jinak porušená zpráva, přejde DW1000 do stavu &#34;chyba, nic nedělám&#34;. Takže je nutné pořád kontrolovat, zda pořád ještě přijímá, a případně ho znovu nahodit. Nebo si nastavit přerušení, aby pokrylo nejen příjem nové platné zprávy, ale i různé chyby, a v rámci obsluhy přerušení pak řešit, jestli přišla zpráva, nebo nastala chyba. A když tak znovu zapnout příjem.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když už mluvím o přerušení &amp;hellip; Na desce je bohužel tlačítko na portu A, pinu 0, zatímco DW1000 IRQ pin je připojený na port B, pin 0. Ztěžuje to život. U procesoru stm32f103 jsou oba připojitelné pouze na ten stejný interrupt, EXTI0. Řešit v jedné obslužné rutině dva možné zdroje přerušení není nic pěkného. Vlastně jsem to ani nezkoušel, takže nevím, jestli to zkombinovat vůbec jde. Alternativou je jeden z těch zdrojů pollovat. Protože v budoucnu asi tlačítko nebude potřeba, polluju to. Později tuhle ošklivou část kódu smažu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Blíží se čas na nižší aplikační vrstvu: Komunikační protokol z PC přes sériák, komunikace se vzdálenými moduly přes proxy modul a UWB, časem snad včetně výroby mesh sítě. Pro vyšší aplikační vrstvu budou potřeba pokusy s časováním a měřením vzdálenosti.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220213&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. únor 2022 &amp;mdash; Pozyx + GPS&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem udělal pár rychlých testů na zahradě. Zasloužilo by si to pořádně rozměřit a udělat už &lt;i&gt;pořádné kotvy&lt;/i&gt;, ale &amp;hellip; raději něco málo než vůbec nic.
Graf (z druhého pokusu) mne zaujal:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-gps.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-gps_t.png&#39; alt=&#39;vzdálenosti pro 3 kotvy a opakovaný okruh&#39; title=&#39;vzdálenosti pro 3 kotvy a opakovaný okruh&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-gps.png&#39;&gt;vzdálenosti pro 3 kotvy a opakovaný okruh&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je na něm pěkně vidět, že ty tři kotvy se nepohybovaly, zatímco &lt;i&gt;None&lt;/i&gt; „základna” (notebook s GPS a Pozyxem) vzdálenost je proměnná.
Špatná zpáva je, že tam byla ještě čtvrtá kotva a ta při druhém pokusu vůbec vidět není.&lt;/div&gt;

&lt;pre&gt;set OK 3431
set OK 3455
set OK 3411
ERROR 26662
set OK None&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, už to vidím &amp;hellip; ono již při prvním pokusu vypadlo spojení v čase 150s a pak už se tedy spojení neobnovilo. :-( &amp;hellip; moc spolehnutí na to tedy není.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/gps-pozyx-4anchors.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/gps-pozyx-4anchors_t.png&#39; alt=&#39;výpadek 4. kotvy v čase 150s&#39; title=&#39;výpadek 4. kotvy v čase 150s&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/gps-pozyx-4anchors.png&#39;&gt;výpadek 4. kotvy v čase 150s&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď bych měl přidat obázek z JOSM a spočítat pozici pomocí &lt;i&gt;trilaterace&lt;/i&gt;, ale asi na to úplně při nedělním večeru nemám sil. Možná zítra. Pro referenci si sem
schovám logy &lt;a href=&#39;/articles/pozyx/gps-pozyx-220213_142833.log&#39;&gt;gps-pozyx-220213_142833.log&lt;/a&gt; a &lt;a href=&#39;/articles/pozyx/gps-pozyx-220213_143221.log&#39;&gt;gps-pozyx-220213_143221.log&lt;/a&gt;.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220216&#34;&gt;&lt;/a&gt;
&lt;h2&gt;16. únor 2022 &amp;mdash; No GPS vs. BU01 Single Sided&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Ještě o víkendu jsem si říkal, že by mohla být zábava jet s Jirkou „paralelní slalom” a porovnávat,
kdo se kam za jakou dobu dostal, ale teď už vím s jistotou, že by to divácky byla hrozná nuda: Jirka by byl
v cíli dříve než já se vůbec rozhoupu vyjet. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak jsem si konečně rozchodil &lt;a href=&#39;https://josm.openstreetmap.de/wiki/Download&#39; class=&#39;external&#39;&gt;JOSM&lt;/a&gt; (ano, nakonec zbaběle pod Windows)
a dupnul data z GPS seriáku:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;python -m osgar.logger gps-pozyx-220213_142833.log --stream gps_serial.raw --raw&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,142833.775,V,,,,,,,130222,,*25
$GPGGA,142834.775,,,,,0,00,,,M,0.0,M,,0000*5B
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,142834.775,V,,,,,,,130222,,*22
$GPGGA,142835.775,,,,,0,00,,,M,0.0,M,,0000*5A
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,142835.775,V,,,,,,,130222,,*23
$GPGGA,142836.775,,,,,0,00,,,M,0.0,M,,0000*59
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,07,29,54,218,31,02,43,079,27,31,23,084,26,27,28,165,*76
$GPGSV,2,2,07,04,22,045,,24,13,156,,20,01,100,*4F&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;(zdá se, že ani naformátovat text s dolarama a dvěma mínus mi moc nejde) &amp;hellip; no nic, o co jde? Není tam žádná pozíce!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nechal jsem se naivně ukolébat &#34;statistikou&#34;:&lt;/div&gt;

&lt;pre&gt;python -m osgar.logger gps-pozyx-220213_142833.log
 k           name bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;-
 0            sys   715 |    6 |   0.0Hz
 1   gps.position   540 |  180 |   1.0Hz
 2 gps_serial.raw 36730 | 5731 |  31.8Hz
 3    pozyx.range 56498 | 3104 |  17.2Hz
 4 pozyx.settings   796 |   10 |   0.1Hz

Total time 0:03:00.231309&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;ale ona ta `gps.position` je&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;python -m osgar.logger gps-pozyx-220213_142833.log --stream gps.position&lt;/i&gt;&lt;/div&gt;

&lt;pre&gt;0:00:01.093414 1 [None, None]
0:00:02.105047 1 [None, None]
0:00:03.097231 1 [None, None]
0:00:04.101952 1 [None, None]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; tak teorie, že Pozyx (na plný výkon) nejspíše trošku ovliňuje i příjem GPS. Zároveň se přiznám,
že jsem se nijak nesnažil je od sebe extra odstínit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď příspěvky Jirky:&lt;/div&gt;

&lt;h3&gt;Update 14-02-2022 (Jirka)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Posílám strukturované zprávy, včetně hlavičky podle IEEE 802.15.4. Díky tomu může DW1000 filtrovat příchozí zprávy podle adresáta a nezatěžovat mikroprocesor cizími zprávami.&lt;/li&gt;

&lt;li&gt;Prvním uživatelem strukturovaných zpráv je Single-sided Two-way Ranging, aneb cesta tam a zase zpátky. To je nejjednodušší způsob měření vzdálenosti a Decawave ho v uživatelské dokumentaci srdečně nedoporučuje kvůli velké citlivosti na různé nepřesnosti. Dobrá zpráva je, že mi naměřená doba letu signálu roste se vzdáleností mezi moduly. Ne tak dobrá zpráva je, že při malých vzdálenostech, pod 1.5 metru, ten vztah není lineární.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;V dalším kroku nejspíš přejdu na Double-Sided Two-way ranging, které je sice složitější, vyžaduje více poslaných zpráv, ale mělo by být o řád až dva přesnější. Pak bude potřeba přijít na to, jak je to s těmi zpožděními signálu při cestě k anténě a z ní, což do naměřené doby letu signálu zanáší konstantní chybu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Takhle nějak, viz příloha, vypadá odhad vzdálenosti vůči skutečné vzdálenosti. Tohle je hodně optimistický případ, protože to jsou stejná data, na kterých jsem ten převod kalibroval. Přijde mi to dost citlivé na umístění předmětů, včetně mě, kolem antén(y). Něco takového asi způsobovalo i tu nelinearitu včera, kterou dneska nevidím. Po 1.9 m se změní typ povrchu podlahy a celé to skočí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 418px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/single-sided-two-way-ranging.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/single-sided-two-way-ranging_t.png&#39; alt=&#39;Single sided two way ranging&#39; title=&#39;Single sided two way ranging&#39; class=&#39;border&#39;  width=&#39;412&#39; height=&#39;218&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/single-sided-two-way-ranging.png&#39;&gt;Single sided two way ranging&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Update 16-02-2022 (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Doporučované Double-sided Two-way Ranging na krátké vzdálenosti vypadá skoro nerozlišitelně od Single-sided Two-way Ranging. Viz příloha. Střední kvadratická chyba je téměř stejná. Rozdíly v rychlosti hodin obou zařízení, a tedy výhody Double-sided, se ale asi více projeví až při větší vzdálenosti. Budu muset vymyslet, jak testovat na větší vzdálenost a nezmoknout při tom &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 418px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/double-sided-two-way-ranging.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/double-sided-two-way-ranging_t.png&#39; alt=&#39;Double sided two way ranging&#39; title=&#39;Double sided two way ranging&#39; class=&#39;border&#39;  width=&#39;412&#39; height=&#39;218&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/double-sided-two-way-ranging.png&#39;&gt;Double sided two way ranging&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220217&#34;&gt;&lt;/a&gt;
&lt;h2&gt;17. únor 2022 &amp;mdash; Pozyx path vs. BU01 default range&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Tak jo, nejlepší je mít nějakou urgentní nezajímavou práci a pak hraní jde úplně samo. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; A ano, zase jsem to „lehce” ošidil, protože místo pořádné trilaterace
je to pouze průběžný update pozice vůči měření k právě přijaté vzdálenosti ke kotvě. Ty chodí v různé časy &amp;hellip; a vlastně by to i Kalmanem skončilo, jen
tam teď není žádný model pohybu a K=1.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-path-overview.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-path-overview_t.png&#39; alt=&#39;Přehled trasy&#39; title=&#39;Přehled trasy&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;160&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-path-overview.png&#39;&gt;Přehled trasy&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-path-detail.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-path-detail_t.png&#39; alt=&#39;Detail cesty&#39; title=&#39;Detail cesty&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;160&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-path-detail.png&#39;&gt;Detail cesty&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co mne ale zase znervónilo byl assert na měření vzdálenosti mezi kotvami:&lt;/div&gt;

&lt;pre&gt;AssertionError: ((0, 0, 0), (12.721, 29.308, 0), 31.94969021759053, 12.417)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Prostě dvě kotvy co mají být cca 32 metrů od sebe „naměříme” 12.4m! No je to na 95% přetečení měření k mezi jinými uzly &amp;hellip;&lt;/div&gt;

&lt;h3&gt;Update 17-02-2022 12:44am (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Maximální hlášená vzdálenost v garáži je těsně nad 30 metrů. Až překvapivě se to shoduje s délkou té garáže, resp. toho parkoviště, odhadnuté podle Google maps. Kolem 29 metrů to měření začalo vypadávat. Těžko říct, jestli kvůli vzdálenosti, nebo kvůli rušivým odrazům.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V bytě přes zdi končím po pěti metrech.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Nastavené je to podle &lt;a href=&#39;https://github.com/Decawave/dwm1001-examples/blob/1b2a46e14546d8f24cf08ff3d64d802e109cd2d3/examples/ss_twr_init/main.c#L41-L52&#39; class=&#39;external&#39;&gt;příkladu od Decawave&lt;/a&gt;. Zkusím si s tím pohrát.&lt;/div&gt;

&lt;h3&gt;Update 17-02-2022 8:50pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Na čerstvém povětří:
channel=5, prf=64M, prefix_len=128,preamble_code=10: 77 m hlášených, ale podle Google maps to dost možná bylo ke 100 m. Že by se našla ta chybějící třetina rychlosti světla při převodu? Pak bych měl ale při malých vzdálenostech docela velkou chybu.
channel=4, prf=64M, prefix_len=128,preamble_code=20: 60 m hlášených, ale nad 50 m už to bylo mizerné, s mnoha výpadky. Podle map 80 m.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zajímavostí terénního profilu je, že jsem šel přes mělký ďolík. Na protějším svahu byl příjem spolehlivější, než uprostřed dole. Navzdory tomu, že to bylo pořád v přímé viditelnosti. Tj. pro lokalizaci sekačky bude nejvhodnější, bude-li sekačka létat.&lt;/div&gt;

&lt;h3&gt;Update 17-02-2022 9:54pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;(to bylo po mém dotazu, zda to nechce vyzkoušet na více zařízeních)&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dost vysoko na mém seznamu priorit je kalibrace a ta chybějící třetina rychlosti světla. Dokud neměřím vzdálenost, nechce se mi to komplikovat více zařízeními. Decawave driver obsahuje &lt;a href=&#39;https://github.com/Decawave/dwm1001-examples/blob/1b2a46e14546d8f24cf08ff3d64d802e109cd2d3/deca_driver/deca_range_tables.c#L457-L485&#39; class=&#39;external&#39;&gt;korekční tabulku&lt;/a&gt; a &lt;a href=&#39;https://github.com/Decawave/dwm1001-examples/blob/1b2a46e14546d8f24cf08ff3d64d802e109cd2d3/deca_driver/deca_range_tables.c#L34&#39; class=&#39;external&#39;&gt;magický offset&lt;/a&gt;, které používá pro &lt;a href=&#39;https://github.com/Decawave/dwm1001-examples/blob/1b2a46e14546d8f24cf08ff3d64d802e109cd2d3/deca_driver/deca_range_tables.c#L622-L698&#39; class=&#39;external&#39;&gt;opravu odhadu&lt;/a&gt;. To ale můj problém neřeší. Takže tady ještě nějaká práce zbývá.&lt;/div&gt;

&lt;h3&gt;Update 17-02-2022 9:54pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2018/10/APS011_Sources-of-Error-in-Two-Way-Ranging-Schemes_v1.1.pdf&#39; class=&#39;external&#39;&gt;Application Note 11&lt;/a&gt; popisuje, kde se bere ta korekční tabulka. Silnější signál dřív překročí threshold pro detekci jeho přítomnosti. Různí uživatelé interpolují různě nelineárně [ &lt;a href=&#39;https://decaforum.decawave.com/t/a-viable-range-compensation-model/3741/15&#39; class=&#39;external&#39;&gt;1&lt;/a&gt;, &lt;a href=&#39;https://decaforum.decawave.com/t/trilateration-algorithms/848&#39; class=&#39;external&#39;&gt;2&lt;/a&gt; ]. V [ &lt;a href=&#39;https://decaforum.decawave.com/t/a-viable-range-compensation-model/3741/15&#39; class=&#39;external&#39;&gt;1&lt;/a&gt; ] taky pozorovali citlivost na náklon antény a na přítomnost vodivých předmětů v jejím okolí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zajímavá je taky &lt;a href=&#39;https://www.decawave.com/wp-content/uploads/2018/10/APS017_Max-Range-in-DW1000-Systems_v1.1.pdf&#39; class=&#39;external&#39;&gt;Application Note 17&lt;/a&gt;, která tvrdí, že kvůli odrazům od země může nastat situace, kdy je signál detekovaný do nějaké vzdálenosti, pak kus není a pak zase je.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;p.s. k tomu mé pozorování, že ta pozice je taková klikatice je očekávaně, protože se nutně nepohybuji v rovině kotev a tak jsou vzdálenosti větší a budou moji pozici odstrkovat ... mi přijde v kontextu tech šílených kalibrací jen takové drobné placnutí do vody&lt;/i&gt; &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220221&#34;&gt;&lt;/a&gt;
&lt;h2&gt;21. únor 2022 &amp;mdash; BU01 korekce korekce&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Doplňuji víkendové reporty od Jirky &amp;hellip;&lt;/div&gt;

&lt;h3&gt;Update 19-02-2022 9:01am (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Kalibrace na větších vdálenostech s anténou výš nad zemí, i když jen 80 cm místo doporučených 140 cm, vypadá lépe. Viz příloha. Na obrázku je méně bodů, než minule, protože různá měření v jedné vzdálenosti tentokrát nejdříve průměruji a pak až interpoluji.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Strmost převodu z tiků DW1000 na vzdálenost tentokrát odpovídá 97.4 % očekávané rychlosti světla. To je o řád lepší, než minule. A stále o řád horší, než abych byl spokojený. Pořád je to čtvrt metru rozdílu v desetimetrové vzdálenosti.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jedním možným vysvětlením je ta dříve vysvětlená korekce pro klesající sílu signálu. Jestli čtu kód dobře, je zhruba na úrovni 3 % vzdálenosti. Podle odpovědi na fóru na poměrně detailní dotaz je korekci potřeba odečítat, což po zamyšlení dává smysl, ne přičítat, jak jsem myslel podle názvu funkce. To už by pak sedělo o kus lépe.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Druhým zajímavým prvkem je výrok ve stejné odpovědi: &#34;As was mentioned in the code comment, uus indicates UWB microsecond, not microsecond. In calculation, 1 uus is around 1.025 us.&#34; To je jako co, tyhle dvoje různé mikrosekundy, které se liší o 2.5 %, resp. 2.4 % v opačném směru porovnání? Na to se budu muset ještě podívat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 630px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/double-sided-two-way-ranging-v2.png&#39; alt=&#39;Double sided two-way ranging ver2&#39; title=&#39;Double sided two-way ranging ver2&#39; class=&#39;border&#39;  width=&#39;624&#39; height=&#39;521&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Double sided two-way ranging ver2&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Update 19-02-2022 9:58am (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Tak ten 1.025 faktor to není. To je něco specifického pro jejich kód a mého se to netýká. Převádí tam zadanou dobu odezvy kotvy z mikrosekund na tiky pomocí *512, jenže 512 tiků je ve skutečnosti trochu více, než jedna mikrosekunda, což pak musí zohlednit. Já všechno zadávám a měřím v ticích a takový převod tam nikde nemám.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V tuhle chvíli mi asi jako možná příčina zbývající chyby zůstávají odrazy signálu od zdí a podlahy a ten pokles síly signálu se vzdáleností, který pak ovlivňuje čas detekce.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Martine, přijde mi to, že ty tomu Pozyxu prostě věříš a že jsi přesnost s metrem v ruce neměřil. Je to tak? Pravda, je, že s metrem v ruce beztak nepoznáš, jestli pro převod nepoužívají nějakou podezřelou rychlost světla, nebo nějakou magickou konstantu či tabulku :-/&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Tady bych asi měl připsat nějakou odpověď. Nahrubo jsem to měřil na začátku, ale teď tomu opravdu &#34;slepě věřím&#34;, resp. nevěřím a ptám se na vzdálenosti mezi kotvami, které už by měly být konstantní. Měl jsem sem dát grafy od Lilly, které jsem úplně nepochopil, ale třeba někdo jo. A vlastně graf rozdílů k Ground Truth mi přijde čitelnější. Tak tedy skok v čase ...&lt;/i&gt;&#34;&lt;/div&gt;

&lt;h3&gt;Update 19-01-2022 (Lilly, před měsícem)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;I didn&#39;t experiment with the settings (so as to not have to reconfigure them every reboot). Looking through your blog, I see you got ranges 30-50m, which is pretty good!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;I did all my experimenting indoors (much smaller ranges) but one thing I noticed was that there appeared to be different and non-zero biases for different pairs of pozyx anchors:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-error.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-error_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;408&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Another thing I was trying to figure out was whether estimates would be equally good in every direction. Here &#34;UWB inside&#34; was when I had installed the pozyx anchors next to the RPis on the robot (so the body of the robot itself was causing obstructions), and &#34;UWB on top&#34; was after moving the pozyx anchor externally, above the lidar. It looks like there might be some directionality, but hard to say from this one test.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-direction.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-direction_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;312&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-direction2.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-direction2_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;312&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Update 27-01-2022 (Lilly, cca před měsícem)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;80m is really promising!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;My old notes are somewhat unorderly, but I have these plots of error and true distance. The pozyx devices were around 20cm off the ground, and the hallway width changed from about 2m to about 5m, which probably had a significant impact. I only realized that after these tests, so it&#39;s not carefully noted in my measurements.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-error2.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-error2_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;259&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-error3.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-error3_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;259&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-error4.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-error4_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;259&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/lilly-pozyx-error5.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/lilly-pozyx-error5_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;259&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Update 19-02-2022 8:11pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Když si tu korekční tabulku od Decawave překreslím do grafu &#34;korekce relativní vůči vzdálenosti&#34; (příloha), je vidět, že ve vzdálenostech 4 až 12 metrů dochází k opravě o 1.8 % až 3.5 %. Zuby v grafu jsou artefakty toho, že je ta korekce po částech konstantní. O 2.6 % nižší rychlost světla v mé lineární interpolaci dělá v tomto rozsahu vzdáleností něco podobného. Z poklesu křivky korekčního grafu se dá tušit, že pro vyšší vzdálenosti vyjde moje lineární interpolace špatně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/jirka-corr.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/jirka-corr_t.png&#39; alt=&#39;korekce relativní vůči vzdálenosti&#39; title=&#39;korekce relativní vůči vzdálenosti&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;320&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/jirka-corr.png&#39;&gt;korekce relativní vůči vzdálenosti&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi ještě zkusím, jestli tu korekční tabulku nejde aplikovat na měření z mého modulu. Nebo najít nějakou pěknou výpočetně nenáročnou nelineární aproximaci. Pokud ne, nechám to být, protože vevnitř nad 10 m stejně nenaměřím a ven se s tím zatím nechystám.&lt;/div&gt;

&lt;h3&gt;Update 19-02-2022 8:11pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Při započtení korekcí od Decawave pro jejich vývojové moduly se mi interpolační převodní konstanta z času na vzdálenost přiblíží k rychlosti světla na 0.6  %. Dovedl bych si představit, že to při pečlivější kalibraci dokážu ještě srazit tak na polovinu, či třetinu. O řád už to nesrazím, tam někde už narazím na závislost rychlosti světla ve vzduchu na teplotě/tlaku.&lt;/div&gt;

&lt;h3&gt;Update 21-02-2022 7:53pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/jirka-uwb-holder.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/jirka-uwb-holder_t.jpg&#39; alt=&#39;UWB na špejli&#39; title=&#39;UWB na špejli&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/jirka-uwb-holder.jpg&#39;&gt;UWB na špejli&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tohle není konečná verze, ale spíš proof-of-concept na uchycení modulu, který nemá díry na šrouby. Zatím to použiju jako stojan pro kalibraci ve volném prostoru.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220303&#34;&gt;&lt;/a&gt;
&lt;h2&gt;3. březen 2022 &amp;mdash; BU01 měření rychlosti světla&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes bych začal zase s víkendovými novinkami od Jirky. Vlastně mi celkem přijde vtipné, že s těma UWB krabičkami si člověk &lt;i&gt;na koleně&lt;/i&gt;
může měřit rychlost světla &amp;hellip; (no teď koukám, že chybí i nějaké dovětky k poslednímu reportu, takže toho bude více).&lt;/div&gt;

&lt;h3&gt;Update 21-02-2022 9:20pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ano, za ideálních podmínek to vypadá dobře. Ale znáš mě &amp;hellip; jak to nemám na mikrometry, jsem nesvůj &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Je potřeba brát v potaz, že jsem pro tu interpolaci vždycky průměroval dvanáct měření. Jednotlivá měření mi pořád ještě dost skákala. Nicméně včera jsem výrazně zkrátil pevnou dobu odezvy v two-way ranging a vypadá to, ťuk ťuk na dřevo, že poskakování ubylo. Tak uvidíme při příští kalibraci, na špejli, ve volnějším prostoru.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dost se bojím těch různých efektů, které popisuje Lilly a na které narážím já: Směrovost, citlivost na náklon, citlivost na předměty okolo a především v cestě signálu, snížený výkon u podlahy. Většinu času to bude fungovat v podmínkách hodně neideálních. Proto to chci zpřesnit co nejvíc, aby to i při zvýšené chybě pořád stačilo. Na tu závislost na konkrétní dvojici zařízení, kterou zmiňuje Lilly, jsem teda taky hodně zvědavý.&lt;/div&gt;

&lt;h3&gt;Update 24-02-2022 12:47pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Kalibrace i na větší vzdálenosti venku ve volném prostoru, průměrování přes ještě víc měření plus opravená optimalizace interpolačních parametrů rovná se naměřená rychlost světla 0.013 % od udávané (ve vzduchu). Takže nakonec až někde u té hranice závislosti na tlaku, teplotě, vlhkosti a spol. To jsem nečekal. Pro srovnání, ve vzduchu je světlo o 0.03 % pomalejší než ve vakuu (&lt;a href=&#39;https://en.wikipedia.org/wiki/Speed_of_light&#39; class=&#39;external&#39;&gt;wikipedia&lt;/a&gt;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V dalším kroku zkusím naměřit rozptyl jednotlivých měření, bez průměrování. A pak asi přijde na řadu zkusit, nakolik je to se stejnými parametry přenositelné na jinou dvojici modulů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/interpol.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/interpol_t.png&#39; alt=&#39;Interpolace&#39; title=&#39;Interpolace&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;290&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/interpol.png&#39;&gt;Interpolace&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Update 27-02-2022 10:34pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Různé dvojice modulů dávají, asi podle očekávání, trochu jiná měření. Viz příloha. Jedna dvojice odhaduje stejnou vzdálenost na 174 cm, druhá na 179.5 cm. Obě dvojice se směrodatnou odchylkou &#34;šumu&#34; pod tři centimetry.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když matematicky ne úplně korektně smíchám chybu, kterou vidím v kalibraci převodu z tiků na vzdálenost, směrodatnou odchylku šumu, a těch pět centimetrů rozdílu mezi moduly, čekal bych dvě třetiny měření tak do osmi centimetrů od správné hodnoty a téměř všechna do šestnácti cm. V tomhle odhadu ještě nejsou zahrnuty chyby vzniklé náklonem antény a blízkostí k různým překážkám. To přidá k odhadu dalších pár centimetrů. Tohle platí pro jednotlivá měření. Při prohnání série měření Kalmanem a při kalibraci každé antény zvlášť, jak doporučuje Decawave, zase pár centimetrů zmizí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Malý robot bez dalších senzorů takhle přesně na nabíječku nejspíš nenajede, ale dveřmi v bytě by naslepo projet mohl. Větší robot by mohl zvládnout mostek v Martinově japonské zahradě, aniž by polekal pádem kapry koi.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 611px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/different-pairs.png&#39; alt=&#39;Měření pro dva různé páry&#39; title=&#39;Měření pro dva různé páry&#39; class=&#39;border&#39;  width=&#39;605&#39; height=&#39;340&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Měření pro dva různé páry&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. Odvolávám. Příště se musím nejdřív víc zamyslet. Šum jednotlivých měření není 3 cm. To je šum průměrovaných (!) měření. Ten 5cm rozdíl mezi dvěma dvojicemi modulů platí.&lt;/div&gt;

&lt;h3&gt;Update 03-03-2022 1:17pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Jenom rychlá poznámka &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zatímco u dev kitů z Decawave by měla být zpoždění antén změřená v továrně a zapsaná v One Time Programmable paměti, u mých modulů na dané OTP adrese není nic.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Toto se váže k úternímu mailu, že Mouser psal, že už má ﻿MDEK1001﻿ na skladě:&lt;/i&gt; &lt;a href=&#39;https://cz.mouser.com/ProductDetail/Qorvo/MDEK1001?qs=TiOZkKH1s2TlRZBi6MtMNg%3D%3D&#39; class=&#39;external&#39;&gt;mouser.com:MDEK1001&lt;/a&gt; &amp;hellip; &lt;i&gt;v úterý tam bylo něco přes 300, teď je 216 a než dám push na web, tak už možná nebudou. No nic.&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;Vidím to tak, že své &#34;novinky&#34; s &#34;dual tagem&#34; si nechám na příště ... (md)&lt;/i&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220304&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. březen 2022 &amp;mdash; Auta a UWB stereo tag&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Téma „k čemu je to vlastně vůbec dobré?” je takové „oblíbené”, resp. se stále vracející. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Zhruba před 14 dny jsme se s Jirkou bavili,
že &lt;a href=&#39;https://www.bmw.com/en/innovation/bmw-digital-key-plus-ultra-wideband.html&#39; class=&#39;external&#39;&gt;BMW používá UWB zámky&lt;/a&gt; a jestli by z toho nešlo vymačkat
trošku více? Jirka navrhoval, že by bylo fajn se dozvědět, že auto před autem, za kterým jedete, prudce brzdí. Mohlo by tuto informaci
poslat a člověk (resp. jeho stroj) by se to dozvěděl dříve než by to uviděl. To by jako aplikace šlo, co říkate? U těch zámků asi nebude extra velký
radiový výkon, ale třeba jich tam bude více?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Já cvičně experimentoval s párem &amp;mdash; přidělal jsem ho na prkno 115cm dlouhé a to má přijít na zahrádku
auta. No a pro první pokusy vlastně auto vůbec není potřeba. Po pravdě ani nevím, jestli ta motivace byl Jirkův nápad nebo jsem chtěl
zjistit, jak dobře by šla zjišťovat vedle absolutní pozice i absolutní orientace pouze z UWB tagů, ale to je teď asi už jedno.
V praxi je rozhodně užitečné vědět, že to zuřivě brzdící auto je před vámi nebo v sousedním pruhu, což se z jednoho majáku
úplně snadno nedozvíte. Jo a &lt;i&gt;ultra rychle zipování&lt;/i&gt; by se mi také líbilo. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &lt;i&gt;(trávíce včera půl hodiny v koloně způsobené
jenom zipem)&lt;/i&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/20220301-base.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/20220301-base_t.jpg&#39; alt=&#39;Sběrná kotva&#39; title=&#39;Sběrná kotva&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/20220301-base.jpg&#39;&gt;Sběrná kotva&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/20220301-stereo-tag.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/20220301-stereo-tag_t.jpg&#39; alt=&#39;Stereo tag&#39; title=&#39;Stereo tag&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/20220301-stereo-tag.jpg&#39;&gt;Stereo tag&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/20220301-rose-anchor.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/20220301-rose-anchor_t.jpg&#39; alt=&#39;Kotva u růží&#39; title=&#39;Kotva u růží&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;124&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/20220301-rose-anchor.jpg&#39;&gt;Kotva u růží&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Hrál jsem si zase pouze s pěti Pozyx kotvama &amp;mdash; dvě na prkně a tři statické. Jako vedlejší efekt je pozorování, že autodetekce
statických kotev by asi selhala, protože to jsou dva „pod-grafy”, resp. dvě soustavy, které se vůči sobě pohybují.
Začnu s dalším &lt;i&gt;kryptickým&lt;/i&gt; obrázkem, který jsem posílal Pozyx supportu:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-lost-module.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pozyx-lost-module_t.png&#39; alt=&#39;Ztráta modulu 26727&#39; title=&#39;Ztráta modulu 26727&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pozyx-lost-module.png&#39;&gt;Ztráta modulu 26727&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co na obrázku vidíme? Minimálně v čase 40s končí &lt;i&gt;fialovo-modré koleje&lt;/i&gt;. Prostě v grafu už nejsou žádná měření vůči krabičce
s ID 26727. Dále mne tam rozčiluje žlutá tečka na šedivé stopě take okolo 40s &amp;hellip; skoro jako by to souviselo?! (za mne je to
záměna IDs &amp;mdash; prostě ta naměřená vzdálenost patří jinému páru)&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co ještě můžu řící, že počítač aneb „sběrné místo” jsem měl připojen k jedné statické kotvě a ta ID na prkně byla 0x0D7F a 0x0D53.
hex(3411), hex(3455) = (&#39;0xd53&#39;, &#39;0xd7f&#39;) &amp;hellip; takže opravdu ta šedivá stopa jsou &#34;tagy&#34; na prkně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Co je snad dobrá zpráva je, že ostatní kotvy si povídaly celou dobu i když jsem rozhodně nebyl v přímé viditelnosti. Byl jsem zvědav
co Z-ová souřadnice mimo rovinu těch třech kotev &amp;hellip; příště.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě jeden obrázek, resp. 2D mapka dvou okruhů s prknem/stereo-tagy. Trošku to skáče, což může být Z-ová souřadnice, případně
zastínění &#34;operátorem&#34;. Ale nahrubo je myslím vidět, že ty dva okruhy jsou cca 1m od sebe:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/stereo-track.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/stereo-track_t.png&#39; alt=&#39;Stereo-track, dva okruhy&#39; title=&#39;Stereo-track, dva okruhy&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/stereo-track.png&#39;&gt;Stereo-track, dva okruhy&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220306&#34;&gt;&lt;/a&gt;
&lt;h2&gt;6. březen 2022 &amp;mdash; 2+D vs. 2.5D&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes nemám nic nového, jen takové „bloumání” nad tím co dále. Přemýšlel jsem nad scénářema, které bych rád realizoval.
Vlastně je to klasické &lt;i&gt;dostaň se z místa A na místo B&lt;/i&gt; a &lt;i&gt;vyplň ohraničený prostor&lt;/i&gt; (sekání, uklízení, sázení stromků, &amp;hellip;).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;U té cesty si přestavuji, že jako uživatel „vytýčím koridor” pomocí majáčků/kotev, možná bych to jednou projel ručně
a zbytek „kyvadlové dopravy” už by jezdil sám. Na robotovi bych nechal dva tagy, to se mi zatím líbí, ale pro trilateraci bych
typicky viděl pouze maják před a za sebou. Že by to byla spíše &lt;i&gt;bilaterace&lt;/i&gt;? &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;
&lt;a href=&#39;https://www.youtube.com/watch?v=eaJ8cdu6y0w&#39; class=&#39;external&#39;&gt;Před naší za naší cesta má ať nepráší&lt;/a&gt; &amp;hellip; jestli to teď nebude na blacklistu, vlastně na
&lt;a href=&#39;https://abusix.com/resources/blocklists/why-changing-the-terms-blacklist-and-whitelist-isnt-as-easy-as-it-might-seem/&#39; class=&#39;external&#39;&gt;blocklistu&lt;/a&gt;.
No nic, co jsem to chtěl říci? Že situace, kdy uvidím právě dvě kotvy bude nejběžnější a měl bych se s tím
tedy vypořádat.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 345px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/uwb-follow-path.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/uwb-follow-path_t.png&#39; alt=&#39;Sledování cesty definované UWB kotvami&#39; title=&#39;Sledování cesty definované UWB kotvami&#39; class=&#39;border&#39;  width=&#39;339&#39; height=&#39;290&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/uwb-follow-path.png&#39;&gt;Sledování cesty definované UWB kotvami&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;U posekání zahrady nebo osázení mýtiny bych si představoval typicky 4 kotvy po obvodu a zase pár na robotovi/robotech. Vlastně
mi přijde UWB technologie v lese daleko rozumnější než DGPS &amp;hellip; schválně jestli na podobný projekt ještě znova dojde.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď ten název &lt;b&gt;2+D vs. 2.5D&lt;/b&gt; &amp;hellip; určitě existuje nějaký termín pro &lt;i&gt;povrchovou lokalizaci&lt;/i&gt; vs. 3D lokalizaci v prostoru.
Nechť mám pozemního robota a jezdím v terénu, tj. pro každé XY mám pravě jediné Z, na které robot skonči, když ho „pustím”.
Ale to není &lt;b&gt;2.5D&lt;/b&gt;, co používá Pozyx. Tam je jedním ze vstupů Z-ová souřadnice (konstantní) a 3D pozice kotev vůči této &lt;i&gt;hladině&lt;/i&gt;
pozici kompenzují. Pokud ale pojedu přímo od kotvy K(i) na K(i+1) se stereo-tagem, tak bych asi měl být schopen dopočítat i ten Z-ový
profil.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;To mi připomíná stále ty Jirkovy &lt;i&gt;kapry koi&lt;/i&gt; co jsem ještě nekomentoval. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; no je to spíše polorozpadlá, cca 1m široká, lávka,
po které bych chtěl být schopen spolehlivě navigovat robůtky, třeba s cihlou, taškou nebo barelem na zádech &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220308&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. březen 2022 &amp;mdash; Eduro a dosažené BU01 milníky&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes jsem jezdil s &lt;a href=&#39;/robots/eduro/en&#39;&gt;Edurem&lt;/a&gt; na ČZU a bylo to celkem užitečné cvičení. Nejprve „klasika” aneb
staré bolesti, na které jsem už s radostí zapomněl:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;nepoužívat STOP tlačítko (občas se resetuje APU3 počítač)&lt;/li&gt;

&lt;li&gt;odometrie občas „skočí”&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Zásilka s &lt;a href=&#39;https://cz.mouser.com/ProductDetail/Qorvo/MDEK1001?qs=TiOZkKH1s2TlRZBi6MtMNg%3D%3D&#39; class=&#39;external&#39;&gt;MDEK1001&lt;/a&gt;
dnes nedorazila a v rozčílení jsem si nakonec na testy vzal jen dvě kotvy na hraní. Na Eduru
jsem doinstaloval &lt;a href=&#39;https://pypi.org/project/pypozyx/&#39; class=&#39;external&#39;&gt;pypozyx balíček&lt;/a&gt; a hned to fungovalo. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; Drobný problém byl, když jsem kotvu vypnul a zapomněl,
že ta stále napájena na robotovi se s tou nově nabootovanou nedomluví (jiný kanál, preambule, atd.).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;K věci &amp;mdash; zajímavé mi přišlo toto měření:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;span&gt;&lt;img src=&#39;/articles/pozyx/eduro-pozyx-5m.png&#39; alt=&#39;Eduro jízda 5m&#39; title=&#39;Eduro jízda 5m&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;480&#39;&gt;&lt;/span&gt;&lt;br&gt;
&lt;span&gt;Eduro jízda 5m&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Trošku jsem &lt;i&gt;hacknul&lt;/i&gt; &#34;go.py&#34;, aby robot jel 2x tam a zpět a výstup byl následující:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/eduro-pozyx-w.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/eduro-pozyx-w_t.png&#39; alt=&#39;Opakovaná jízda 5m&#39; title=&#39;Opakovaná jízda 5m&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/eduro-pozyx-w.png&#39;&gt;Opakovaná jízda 5m&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi je jasné o co mi jde &amp;mdash; v oblasti mezi 3. a 4. metrem je nějaká divnost. Obě kotvy byly po celou dobu
jízdy vzájemně viditelné, volný koridor byl minimálně 1m (odhad). Skoro to vypadá, že došlo k nějakému odrazu
od zaparkovaného Spidera nebo nějaká interference s WiFi??&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další pokusy na chobě bez překážek bohužel byly k ničemu, protože jsem si nevšiml, že umřela powerbanka u kotvy
a následně jsem zapomněl vypnout kotvu na Eduru, takže každá komunikovala na jiném kanálu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď ještě novinky od Jirky &amp;hellip;&lt;/div&gt;

&lt;h3&gt;Update 07-03-2022 11:30pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Dosáhl jsem několika milníků najednou:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Přidal jsem jednoduché textové rozhraní přes sériák, včetně automatického doplňování příkazů a vyhledávání v historii na straně PC.&lt;/li&gt;

&lt;li&gt;K použitému printf() přibylo sscanf(), takže se nevejdu do 64 kB flash a žiju i z těch druhých 64 kB, které oficiálně neexistují. Šlo by to udělat úsporněji, ale chtěl jsem to zkusit i takhle.&lt;/li&gt;

&lt;li&gt;Moduly teď &#34;blikají&#34;, takže si můžu vypsat seznam viditelných sousedů. Soused, který se nějakou dobu neozval, je ze seznamu odebrán.&lt;/li&gt;

&lt;li&gt;Dohromady tak místo broadcastové adresy můžu při měření vzdálenosti měřit vůči konkrétnímu viditelnému sousedovi. Zatím nepodporuji měření, kdy iniciátorem není modul připojený k PC.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;&#34;Blikání&#34; je zárodek mesh protokolu - záblesk posílá routovací informace - ale mám toho ještě hodně k rozmyšlení. Statická spolehlivá síť je jednoduchá, ale mizení a roaming modulů to zesložiťují.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220320&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. březen 2022 &amp;mdash; BU01 mesh a Babel&lt;/h2&gt;

&lt;h3&gt;Update 11-03-2022 1:49pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Mesh síť funguje, včetně roamingu, mizení a restartování uzlů. Můžu provádět traceroute na uzel mimo přímý dosah. Klíčové slovo je &lt;a href=&#39;https://datatracker.ietf.org/doc/html/rfc8966&#39; class=&#39;external&#39;&gt;Babel&lt;/a&gt;, i když jsem ten algoritmus pro své účely hodně zjednodušil.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď je otázka, jestli budu nějak zobecňovat přeposílání traceroute packetů, nebo to řešit &#34;case by case&#34;. Pokud začnu zobecňovat, skoro abych si nastudoval &lt;a href=&#39;https://en.wikipedia.org/wiki/OSI_model&#39; class=&#39;external&#39;&gt;OSI vrstvy&lt;/a&gt;.&lt;/div&gt;

&lt;h3&gt;Update 20-03-2022 9:50am (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Upravil jsem mesh protokol, aby fungovalo nejen restartování jednotlivých uzlů, ale i celých podsítí. To se například hodí, když jsou moduly v jedné místnosti napájené z jednoho zdroje. Teď se během pár sekund přisynchronizuje všechno a ne jen krajní uzel připojený do vnějšího světa.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A hlavně, přidal jsem schopnost uzlu A zeptat se uzlu B na jeho vzdálenost k uzlu C. V kombinaci s tou mesh sítí mohou být B a C kdekoli v síti. Jestli jsem to dobře pochopil, u Pozyxu musí být B v přímém rádiovém dosahu A.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Když už teď můžu z modulu připojeného k PC měřit vzdálenost mezi jinými moduly, je asi čas vrátit se ke kalibraci antén a provést ji nejen pro jednu konkrétní dvojici zařízení. Při té příležitosti asi vznikne na straně PC nějaká knihovna ke komunikaci moduly, abych nemusel všechno pořád zadávat a kopírovat ručně. A pak už snad dojde na lokalizaci &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220330&#34;&gt;&lt;/a&gt;
&lt;h2&gt;30. březen 2022 &amp;mdash; BU01 kalibrační čtverec&lt;/h2&gt;

&lt;h3&gt;Update 29-03-2022 8:30pm (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Když umístím moduly do čtverce a změřím vzdálenost mezi všemi dvojicemi, dokážu z toho vypočítat zpoždění na jednotlivých anténách. Podle očekávání vyjde pro každý modul jiné.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Respektive, protože je double-sided two-way ranging lehce asymetrické, dokážu spočítat zvlášť zpoždění na anténě při vysílání a při příjmu. Nicméně pro všech pět modulů, které jsem zatím zkoušel, vychází obě hodnoty, až na drobné odchylky, stejně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď musím přijít na to, jak vyrobit, nejspíš na flash, konfiguraci, abych mohl každý modul nastavit jinak, aniž bych překompilovával kód. Na &#34;write once&#34; paměť v DW1000 se mi moc sahat nechce. Jednak je to &#34;once&#34; a to nemám rád, jednak je to podle dokumentace podivné cvičení, ve kterém dokonce vystupuje vyšší napětí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Abych mohl stavět velký kalibrační čtverec, začal jsem taky řešit napájení z baterie a plastové krabičky, abych nebyl omezený délkou USB kabelů. Dobrá zpráva je, že když zapojím Li-Ion článek s napětím 3.6 V na napájecí piny pro 5 V, modul funguje. Takže tam možná nemusím přidělávat vlastní step down z 3.6 V na 3.3 V. Připojovat těch 3.6 V, resp. až 4.2 V (?), rovnou na 3.3 V se mi nechce. Ještě musím vyzkoušet chování při téměř vybitém článku, kolem 3 V. Ten step down, který mám, je totiž zároveň step up, takže tady by mohl pomoct. Ale zase bude mít nějaké vlastní ztráty, takže se to celé vybije dřív. No nevím. Asi &#34;keep it simple&#34;. Vlastně už při vyšších napětích to bude &#34;zajímavé&#34;, protože palubní regulátor z 5 V na 3.3 V na výstupu klesne pod 3.3 V. Ještě je co zkoušet &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220413&#34;&gt;&lt;/a&gt;
&lt;h2&gt;13. duben 2022 &amp;mdash; BU01 zapouzdřeno jest&lt;/h2&gt;

&lt;h3&gt;Update 4/4/22, 10:20 AM (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Zapouzdřeno jest. Viz příloha. Teď se můžu pustit do prostorově rozsáhlejších instalací a můžu zkoušet životnost na baterie.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 506px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/bu01-enclosure.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/bu01-enclosure_t.jpg&#39; alt=&#39;Zapouzdření BU01&#39; title=&#39;Zapouzdření BU01&#39; class=&#39;border&#39;  width=&#39;500&#39; height=&#39;375&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/bu01-enclosure.jpg&#39;&gt;Zapouzdření BU01&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dobrá zpráva: Modul přestane fungovat až někde mezi 3.25 - 3.3 V na 5V napájení, po téměř čtyřech hodinách běhu s 32 měřeními vzdálenosti za sekundu plus režie pro mesh síťování. V tu chvíli je baterie téměř vybitá. Nabíječka do ní pak dostane 670 mAh, při kapacitě baterie 700 mAh. Takže připojovat step down/up converter je zbytečné, déle to stejně nepoběží.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Špatná zpráva: Moduly, které vybijí baterii až do dna, po jejím nabití a opětovném spuštění &#34;blbnou&#34;. Opraví to přeflashování kódu. Což mě vede k podezření, že při nízkém napětí se poruší data na flash. Takže se modul až do tak hlubokého stavu vybití dostat nesmí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Dobrá zpráva: Palubní mikrokontrolér umí monitorovat vlastní napájecí napětí a umí se uspat. Jestli si dobře pamatuju, DW1000 je také možné uspat. Takže příští krok je naprogramovat pud sebezáchovy.&lt;/div&gt;

&lt;h3&gt;Update 4/6/22, 3:49 PM (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Uspání při vybité baterii už funguje. Sledování napětí na mikrokontroléru jsem sice nerozchodil, ale to nevadí, protože DW1000 ho umí také, ve větším rozsahu a s jemnějším rozlišením. Za cenu další SPI komunikace.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Víte, co se stane, když si chcete ověřit sleep kontroléru tím, že ho dáte hned na začátek main()? Šípková Růženka! Takový sebeuspávající se modul se blbě flashuje novým kódem. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; No nic. Ponaučení pro příště.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zajímavé debugování bylo na téma &#34;jednou za čas se to zasekne.&#34; Když jsem zvýšil četnost komunikace po sériáku, pravděpodobnost záseku vzrostla. Když jsem povypínal okolní moduly, klesla. Abych tu detektivku zkrátil: Pokud seriák na mikrokontroléru nestíhá, nastane &#34;overrun error&#34;, nastaví se error flag, zavolá se interrupt, ten zjistí, že nejsou k dispozici žádná data, ukončí se, mikrokontrolér najde nastavený error flag, zavolá interrupt, ehm. A zatímco se ten interrupt handler takhle krásně cyklí, všechno ostatní musí počkat. Na věky věků. Ámen. Mazání toho flagu jeho přečtením následovaným voláním recv() mi taky nepřijde zrovna intuitivní.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kdyby ode mně někdo tohle chtěl koupit, tak by mi cena nastavená Pozyxem snad ani nepřišla nesmyslná. Pro jednohubku na ochutnávku. Takových &#34;pitomostí&#34;, které je potřeba vyřešit, je docela hodně. A to to ještě vlastně ani nedělá nic užitečného. &lt;b&gt;reklama-begin&lt;/b&gt; Potřebujete sledovat objekty ve vymezeném prostoru? Můžeme vám pomoct s řešením na míru! Ptejte se Martina, co a jak.&lt;b&gt;reklama-end&lt;/b&gt; A tak &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220420&#34;&gt;&lt;/a&gt;
&lt;h2&gt;20. duben 2022 &amp;mdash; BU01 Follow Me&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dal jsem tři moduly na Deedee, malého domácího robota, a zkouším jízdu za čtvrtým modulem, neseným v ruce. Takové malé &#34;follow me&#34;. Jenže. Jak je ten robot úzký, pod 30 cm, tak 2d &lt;a href=&#39;https://cs.wikipedia.org/wiki/Trilaterace&#39; class=&#39;external&#39;&gt;trilaterace&lt;/a&gt; protíná téměř soustředné kruhy. Takový výpočet je, jak by řekla dcera, hodně hodňácky citlivý na chybu měření vzdálenosti. Ať už systematickou, nebo nesystematickou. Empiricky vzato, odhad polohy majáčku neseného dva metry rovně před robotem poskakuje o půl metru na každou stranu a dost často trilaterace ani nenajde platné řešení. Ze zjednodušené simulace mi vychází šum s odchylkou do strany (1 sigma) 0.4 m, tj. většina odhadů Y, které je ve skutečnosti 0, někde mezi -1 m a +1m. To je na dvoumetrové vzdálenosti hodně. Robot se podle toho chová: zmateně.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Částečným řešením pro nesystematickou chybu bude co nejvíc zvýšit frekvenci měření a průměrovat polohu majáčku v čase. Dobrý den, &lt;a href=&#39;/guide/filtering/en&#39;&gt;pane Kálmáne&lt;/a&gt;. Pro vyřešení systematické chyby je užitečný všechen ten předchozí čas investovaný do kalibrace modulů.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Jiným řešením by byl větší robot. Podle simulace alespoň půl metru široký. Metr by byl ještě lepší, ale to už by se robot ani nevešel do dveří. Každopádně nový robot na doma, natož větší, není na pořadu dne.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další zajímavý zdroj potíží je umístění modulů na robotovi i majáčku nízko nad zemí. V závislosti na výšce majáčku nad zemí vzniká při trilateraci systematická (!) chyba do strany zhruba taky někde mezi 0.3 a 0.5 m. S tou asi nepůjde dělat nic. Jedině už opravdu pevná instalace &#34;kotev&#34; v prostředí, místo na robotovi, a víc krmit dítě, aby rychleji rostlo a mohlo držet majáček výš. Do dvou metrů nad zemí doporučených v dokumentaci dceři ještě &#34;něco málo&#34; zbývá.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220426&#34;&gt;&lt;/a&gt;
&lt;h2&gt;26. duben 2022 &amp;mdash; BU01 Follow Me obrázky&lt;/h2&gt;

&lt;h3&gt;Update 4/21/22, 7:58 PM (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Chtěl jsi obrázek, máš ho mít. Červeně polohy robota, zeleně odhadnuté polohy majáčku. Je to dost smutný pohled.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/beacon.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/beacon_t.png&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. No, nejel rovně. Navigoval na poskakující maják a vyhýbal se při tom překážkám. Ta červená trajektorie podle tracking kamery je asi dobře.&lt;/div&gt;

&lt;h3&gt;Update 4/24/22, 7:41 PM (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ale jo. Když lépe nastavím parametry antén a proženu odhad pozice majáčku Kalmanovým filtrem, něco to dělá.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Lépe to funguje na krátkou vzdálenost tak do tří metrů. A i tak to občas mívá několikasekundové výpadky. Budu se muset podívat, jestli nefunguje měření vzdálenosti, nebo chodí odhady, ze kterých je zmatená trilaterace.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 256px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/followme-bella.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/followme-bella_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;250&#39; height=&#39;333&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 256px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/followme-bella2.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/followme-bella2_t.jpg&#39; alt=&#39;&#39; title=&#39;&#39; class=&#39;border&#39;  width=&#39;250&#39; height=&#39;348&#39;&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;220504&#34;&gt;&lt;/a&gt;
&lt;h2&gt;4. květen 2022 &amp;mdash;BU01 stavový automat&lt;/h2&gt;

&lt;h3&gt;Update 4/30/22, 10:23 PM (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Ach, ten stavový automat. Výpadky při jízdách za majáčkem byly způsobené tím, že chodily nesmyslné vzdálenosti, řádově v kilometrech, a kód na PC je zahazoval. Nesmyslné vzdálenosti chodily, protože mikrokontrolér při měření vzdálenosti často používal časovou známku následující příchozí zprávy. Následující zpráva ale neměla ani přijít, protože DW1000 neměl ani být na příjmu. Jenže byl. Jak to? Protože ze stavu RX (příjem) po přijetí zprávy nejdříve (!) přejde do IDLE (nicnedělání) a až potom (!) ohlásí mikrokontroléru, že přišla zpráva. Na základě předchozí zkušenosti, že DW1000 přechází z RX do IDLE i při chybách při příjmu, mikrokontrolér monitoroval stav DW1000 a při IDLE okamžitě znovu aktivoval příjem. Když se to špatně sešlo, aktivoval příjem před zpracováním příchozí zprávy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Řešením je aktivovat příjem až po zpracování příchozí zprávy, po ukončení vlastního vysílání a když nastane chyba při příjmu. Jenže ne všechny chyby při příjmu, ukazuje se, přepnou DW1000 z RX do IDLE. Když RX znovu aktivuji při všech chybách příjmu, nastane předchozí problém. Jenom v tom řetězci musí ještě těsně před přijetím zprávy nastat chyba příjmu, čímž se to stává vzácnějším. Takže jsem musel zjistit, co které chyby způsobují. Které přepnou do IDLE a které ne. Dokumentace je bohužel neúplná a, řekl bych, v tomhle bodě dokonce špatně. Takže jsem jsem strávil několik dní čekáním na každý jednotlivý typ chyby příjmu. Moc pěkné cvičení.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Teď už to vypadá, že race condition nenastává (přidal jsem její detekci) a že neplatné vzdálenosti jsou řádově v metrech, což může klidně být nějaký odražený signál. Tak snad to teď, ťuk ťuk na dřevo, bude lepší.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;MD: o jaké dvě skupiny zpráv se tedy jedná?&lt;/i&gt;&lt;/div&gt;

&lt;h3&gt;Update 5/1/22, 1:33 PM (Jirka)&lt;/h3&gt;

&lt;div class=&#39;p&#39;&gt;Z RX do IDLE přepíná Frame Wait Timeout (RFTO). V RX to zůstane po PHY Header Error (RPHE), CRC Error (RFCE), Sync Loss Error (RFSL), Preamble Timeout (RXPTO), SFD Timeout (SFDT) a Frame rejected due to filtering configuration (ARFE).&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Podle dokumentace by to mělo přinejmenším při RXPTO, SFDT a RFTO přejít do IDLE. Ostatní nejsou dokumentované.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Až na ten Frame Wait Timeout se to chová, jako by bylo zapnuté RX-auto-reenable (RXAUTR), což ale nedělám. Asi bych se měl aspoň podívat, jestli tohle je zapnuté, nebo není. Podle dokumentace by default měl být &#34;vypnuto&#34;, i když fráze typu &#34;děje se X, pokud není zapnuté RXAUTR, pak Y&#34;, vlastně o defaultu, v matematickém smyslu, nic neříkají. Tak odvolávám: &#34;The default value is 0.&#34; To zní jednoznačně.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230108&#34;&gt;&lt;/a&gt;
&lt;h2&gt;8. leden 2023 &amp;mdash; Pozyx digital I/O&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Přes vánoční prázdniny jsem měl &lt;i&gt;domácí úkol&lt;/i&gt;, který jsem samozřejmě neudělal. :( V rámci příprav na &lt;a href=&#39;/competitions/elrob/2024/en&#39;&gt;ELROB 2024&lt;/a&gt; Jirka navrhl,
že bychom mohli využít další z vlastnosti UWB modulů a to jejich digitálních vstupů a výstupů. Konkrétně po úvodní fázi „follow me” (následuj mne) je
třeba robotu „říci”, že má přepnout do módu „vrať se na start” a proč k tomu rovnou nepoužít UWB tag? &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ano, Jirkova motivace je „oprášit všechny technologie co tu tak leží” a tak už samotný &lt;i&gt;follow me&lt;/i&gt; by používal jak prastarý lidar (viz &lt;a href=&#39;https://www.youtube.com/watch?v=c-SXdDgbi0s&#39; class=&#39;external&#39;&gt;Eduro follow me&lt;/a&gt; na Floriade 2012, tj. před deseti lety), &lt;a href=&#39;/articles/oak-d-pro/en&#39;&gt;RGBD kamery&lt;/a&gt; a UWB tagy a kotvy. Jirka plánuje (resp. on na rozdíl
ode mne úkol přes vánoce samozřejmě udělal, takže bych měl použít už minulý čas) použít své čínské moduly s vlastním kódem, já pak Pozyx.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Pozyx digitální I/O moc popsané nejsou. Našel jsem zmínku v &lt;i&gt;developer tag_v1.5 datasheet.pdf&lt;/i&gt;, ale tento dokument není veřejně dostupný, resp. jsem ho nenašel.
Tam píšou:
&lt;i&gt;A general purpose input/output pin. By default this pin is not configured and
it can be used for other purposes. When configured as an output pin, the
maximum output voltage is 3.3V (the operating voltage of the board). The
pin is 5V tolerant.&lt;/i&gt; + tabulka:&lt;/div&gt;

&lt;pre&gt;GPIO1 Pin 9
GPIO2 Pin 10
GPIO3 Pin 11
GPIO4 Pin 12&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Další indicie jsou &lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/blob/master/pypozyx/definitions/constants.py#L62&#39; class=&#39;external&#39;&gt;popisy Pozyx konstant&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;# The GPIO modes
    GPIO_DIGITAL_INPUT = 0
    GPIO_PUSH_PULL = 1
    GPIO_OPEN_DRAIN = 1

    ALL_GPIO_MODES = [GPIO_DIGITAL_INPUT, GPIO_PUSH_PULL, GPIO_OPEN_DRAIN]

    # The GPIO pull resistor configuration
    GPIO_NO_PULL = 0
    GPIO_PULL_UP = 1
    GPIO_PULL_DOWN = 2

    ALL_GPIO_PULLS = [GPIO_NO_PULL, GPIO_PULL_UP, GPIO_PULL_DOWN]&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a konečně např. funkce &lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/blob/master/pypozyx/lib.py#L174&#39; class=&#39;external&#39;&gt;setConfigGPIO()&lt;/a&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Kód asi nikoho neohromí, ale stejně &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; import pypozyx
&gt;&gt;&gt; pozyx = pypozyx.PozyxSerial(&#39;/dev/ttyACM0&#39;)
&gt;&gt;&gt; reg = pypozyx.SingleRegister()
&gt;&gt;&gt; pozyx.getConfigModeGPIO(1, reg)
1

&gt;&gt;&gt; pypozyx.POZYX_SUCCESS
1
&gt;&gt;&gt; pypozyx.POZYX_FAILURE
0
&gt;&gt;&gt; pypozyx.POZYX_TIMEOUT
8

&gt;&gt;&gt; mode = pypozyx.SingleRegister()
&gt;&gt;&gt; pull = pypozyx.SingleRegister()
&gt;&gt;&gt; mode.value = pypozyx.PozyxConstants.GPIO_DIGITAL_INPUT
&gt;&gt;&gt; pull.value = pypozyx.PozyxConstants.GPIO_PULL_UP
&gt;&gt;&gt; pozyx.setConfigGPIO(1, mode, pull, 0x6827)
/home/md/.virtualenvs/osgar/lib/python3.8/site-packages/pypozyx/lib.py:194: UserWarning: setConfigGPIO: 0 wrong GPIO mode
  warn(&#34;setConfigGPIO: {} wrong GPIO mode&#34;.format(mode[0]))
/home/md/.virtualenvs/osgar/lib/python3.8/site-packages/pypozyx/lib.py:196: UserWarning: setConfigGPIO: 1 wrong GPIO pull
  warn(&#34;setConfigGPIO: {} wrong GPIO pull&#34;.format(pull[0]))
1
&gt;&gt;&gt; pozyx.setConfigGPIO(1, mode, pull, 0x6827)
1

&gt;&gt;&gt; pozyx.getGPIO(2, reg, 0x6827)
1
&gt;&gt;&gt; reg.value
0
&gt;&gt;&gt; pozyx.getGPIO(1, reg, 0x6827)
1
&gt;&gt;&gt; reg.value
1
&gt;&gt;&gt; 
&gt;&gt;&gt; pozyx.getGPIO(1, reg, 0x6827)
1
&gt;&gt;&gt; reg.value
0
&gt;&gt;&gt; pozyx.getGPIO(1, reg, 0x6827)
1
&gt;&gt;&gt; reg.value
1&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;trošku omáčky &amp;mdash; už jsem dost zapomněl, jak se Pozyx používá, takže na vše je třeba nějaký pomocný &#34;register&#34; (&lt;i&gt;pypozyx.SingleRegister()&lt;/i&gt;),
co obsahuje vstupně-výstupní hodnoty. Funkce vrací úspěch, selhaní nebo timeout &amp;hellip; co je co ale není zřejmé, tak proto ten výpis konstant
(1 je úspěch). Pak mne zmátlo, že konfigurace GPIO 1 jako vstup s &lt;i&gt;pull up&lt;/i&gt;em generovalo varování?! Ale jak vidíte, tak pouze jednou.
Neodolal jsem a vytvořil &lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/pull/78&#39; class=&#39;external&#39;&gt;pull request #78&lt;/a&gt; do jinak dost mrtvého projektu.
No a co není úplně vidět, tak po zapnutí pull-upu je vstup 1 (u GPIO 2 jsem to neudělal a tam zůstala 0) a když jsem spojil drátkem pin 9
a GND, tak jsem ze vzdáleného zařízení vyčetl 0. Hurá! &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A teď už to jenom celé udělat pořádně &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230110&#34;&gt;&lt;/a&gt;
&lt;h2&gt;10. leden 2023 &amp;mdash; Look-at-me ver0&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnešní pokusy s robotem &lt;a href=&#39;/robots/eduro/en&#39;&gt;Eduro&lt;/a&gt;, třema Pozyx kotvama a jedním tagem bych úplně za úspěšné neprohlásil. Na druhou stranu je to
po několika měsících (na Eduru byl posledni git log z &lt;i&gt;Fri Mar 4 19:40:45 2022 +0100&lt;/i&gt;), bylo fajn, že balíčky s Pozyxem už tam byly nainstalované
a tato část hned fungovala. Co tedy nefungovalo?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Rozhodl jsem se kopirovat Jirkův setup se třema kotvama na robotovi a pouze jedním tagem, který má být sledován. Plán byl rovnostranný trojúhelník
s tím, že jsem nejprve zvažoval jeden vrchol dopředu, ale pak mi přišlo snažší jen porovnávat měření z levé a pravé kotvy a zadní si nechat jen jako
„zálohu”, pokud by robot byl otočený o 180 stupňů, tak aby měl šanci to vůbec zjistit.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Skript se jmenuje &lt;b&gt;follome_uwb.py&lt;/b&gt;, ale fakticky jsem skončil u nějakého &lt;i&gt;Look-at-me&lt;/i&gt;, kdy dopřednou rychlost jsem dal 0 a manipuloval pouze
s úhlovou rychlostí (a robot se tedy pouze otáčel na místě). „Mrtvou zónu” jsem nechal pro rozdíl levého a pravého měření +/- 5cm a jinak se robot točil rychlostí
&lt;b&gt;math.degrees(10)&lt;/b&gt; ve směru korekce. A ano, toto byla první chyba &amp;mdash; stále se mi vracející. Toto převádí 10 radiánů na stupně, které pak interpretuji jako radiány!
Škoda mluvit i když po opravě ten assert naznačuje, jak moc jsem byl mimo. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre&gt;AssertionError: ([0, 1000], [0, 3282806], datetime.timedelta(microseconds=907468))&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Je to hodně citlivé a ten mechanický setup si holt zaslouži revizi. Konstrukci je třeba dát výše, dál od všech železných divnosti, wifi anténa 15cm od UWB krabičky
také není ideální. Robot „tančil” i když tag byl položený na židli. Také mi přišlo, že 0 není uprostřed a bude třeba tam doplnit nějaký umělý offset,
ale to se pomalu dostáváme k ultra přesné kalibraci co dělal Jirka loni.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;to be continued&lt;/i&gt; (teď už timeout, než nás vyhodí ze školy) &amp;hellip;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230124&#34;&gt;&lt;/a&gt;
&lt;h2&gt;24. leden 2023 &amp;mdash; Dva na jednoho&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnes to celkem šlo. Zapojil jsem dvě Pozyx kotvy přímo do počítače a oba moduly současně měřily vzdálenost na společný tag. Co mne trošku překvapilo
byly průběžné výsledky. Nejprve statistika měření s dotazem na vstupy a výstupy:&lt;/div&gt;

&lt;pre&gt;k           name bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;-
 0            sys   458 |   5 |   0.3Hz
 1    pozyx.range 10251 | 603 |  40.0Hz
 2 pozyx.settings   158 |   2 |   0.1Hz
 3     pozyx.gpio  3618 | 603 |  40.0Hz&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;OK, tj. cca 40Hz (i když jak jsem později zjistil, z těchto měření může být netriviální zlomek nevalidních).&lt;/div&gt;

&lt;pre&gt;k           name bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;-
 0            sys   497 |   5 |   0.5Hz
 1    pozyx.range 10897 | 641 |  62.4Hz
 2 pozyx.settings   158 |   2 |   0.2Hz
 3     pozyx.gpio     0 |   0 |   0.0Hz&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Pak jsem GPIO vyhodil z konfigurace a frekvence se zvýšila. Prima, ale to bylo očekávané. A pak přišla to nečekané měření:&lt;/div&gt;

&lt;pre&gt;k                 name bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&amp;ndash;
 0                  sys   996 |   8 |   0.8Hz
 1     pozyx_left.range 15279 | 900 |  85.4Hz
 2  pozyx_left.settings    78 |   1 |   0.1Hz
 3      pozyx_left.gpio     0 |   0 |   0.0Hz
 4    pozyx_right.range 15131 | 893 |  84.7Hz
 5 pozyx_right.settings   158 |   2 |   0.2Hz
 6     pozyx_right.gpio     0 |   0 |   0.0Hz&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Zapojil jsem dvě kotvy na dva různé seriové (resp. USB) porty a frekvence ještě více narostla?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No zakopaný pes, velmi pravděpodobně, je v tom, že vždy i druhá kotva „slyší” komunikaci té první a reportuje to do PC.
Tj. jednotlivá měření nejsou pouze vlastní, ale i přeslechy. Tam jsem i viděl neplatné (status pro &lt;i&gt;doRanging()&lt;/i&gt; je 0)
záznamy.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Asi nejlepší je tabulka se zapojeným &lt;i&gt;followme&lt;/i&gt;, kde příkaz s rychlosti (&lt;i&gt;followme.desired_speed&lt;/i&gt;) se odešle pouze pro
validní měření:&lt;/div&gt;

&lt;pre&gt;k                   name bytes | count | freq Hz
&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&lt;strike&gt;-&lt;/strike&gt;&amp;mdash;-
 0                    sys  1504 |   9 |   0.9Hz
 1       pozyx_left.range 15475 | 914 |  86.7Hz
 2    pozyx_left.settings   158 |   2 |   0.2Hz
 3        pozyx_left.gpio     0 |   0 |   0.0Hz
 4      pozyx_right.range 15041 | 893 |  84.7Hz
 5   pozyx_right.settings   158 |   2 |   0.2Hz
 6       pozyx_right.gpio     0 |   0 |   0.0Hz
 7 followme.desired_speed  2090 | 418 |  39.6Hz&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&amp;hellip; zhruba tedy cca na 20Hz pro každou kotvu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Zkoušel jsem to pak na Eduru a tam mne zase iritovalo, že záleží jakou kotvu připojím dříve, aby získala port 0.
Přimé dotazy jsou s &lt;i&gt;remote_id=None&lt;/i&gt;, ale tím se ztrácí ID té přípojené kotvy. Řešení je identifikace na začátku:&lt;/div&gt;

&lt;pre&gt;&gt;&gt;&gt; pozyx = pypozyx.PozyxSerial(&#39;/dev/ttyACM0&#39;)
&gt;&gt;&gt; pozyx.getNetworkId(network_id)
1
&gt;&gt;&gt; hex(network_id.id)
&#39;0xd67&#39;

&gt;&gt;&gt; pozyx = pypozyx.PozyxSerial(&#39;/dev/ttyACM1&#39;)
&gt;&gt;&gt; network_id = pypozyx.NetworkID()
&gt;&gt;&gt; pozyx.getNetworkId(network_id)
1
&gt;&gt;&gt; hex(network_id.id)
&#39;0xd53&#39;&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Moc pokusů jsem pak už neudělal, tak alespoň jeden &lt;a href=&#39;https://youtu.be/GZFPtOw0IT0&#39; class=&#39;external&#39;&gt;vzorek&lt;/a&gt;. Ono většina videí je obráceně,
což bych možná z pohledu &lt;a href=&#39;/competitions/elrob/2024/en&#39;&gt;ELROBu24&lt;/a&gt; zvážil? Prostě na kameře nebude překážet osoba, které robota
vede.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. zapomněl jsem napsat, že k řízení jsem používal &lt;a href=&#39;https://docs.python.org/3/library/statistics.html&#39; class=&#39;external&#39;&gt;statistics.median&lt;/a&gt; pro okénko posledních deseti měření&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230131&#34;&gt;&lt;/a&gt;
&lt;h2&gt;31. leden 2023 &amp;mdash; followme_uwb ver0&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;OK, první pokus &lt;a href=&#39;https://youtu.be/iLogETobEIQ&#39; class=&#39;external&#39;&gt;Eduro sleduje UWB maják&lt;/a&gt; &amp;hellip; a stejně tak i první (ano, samozřejmá) pozorování:&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;prohodím-li pravou a levou kotvu, tak je třeba i prohodit směr jízdy dopředu (za směr dozadu)&lt;/li&gt;

&lt;li&gt;jezdí-li robot jenom dopředu a člověk je dál za robotem, tak vyrazí úplně špatným směrem&lt;/li&gt;

&lt;li&gt;detekci nárazu moc neodkádat&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;p&#39;&gt;Možná jsem měl neprve zmínit ten primitivní algoritmus co robota řídí:&lt;/div&gt;

&lt;pre&gt;diff = self.left_range - self.right_range
dist = (self.left_range + self.right_range)/2

speed = 0.0
if dist &gt; 1.2:
    speed = 0.1

angular_speed = math.radians(10)
if abs(diff) &lt; 0.05:
    self.send_speed_cmd(speed, 0.0)
elif diff &gt; 0:
    self.send_speed_cmd(speed, -angular_speed)
else:
    self.send_speed_cmd(speed, angular_speed)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Ano, tak primitivní, žádné počítání průsečíků kružnic &amp;hellip; a ano, také teď používám jen dvě kotvy, takže ani nepoznám co je vpředu a co je vzadu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Chtělo by to nějaké srovnání, tj. asi lidar data (když už je stejně mám). Na druhou stranu lidar vidí nohy a jak je vidět na videu, tak dost zuřivě
mávam rukama, abych robota nasměroval. Pak by se měl rychleji pohybovat a rychleji otáčet &amp;hellip; ale tím spíše potřebuje &lt;i&gt;collision avoidance&lt;/i&gt;.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/eduro-followme-uwb-230131.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/eduro-followme-uwb-230131_t.png&#39; alt=&#39;eduro-followme-dual-uwb-230131_175427.log&#39; title=&#39;eduro-followme-dual-uwb-230131_175427.log&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/eduro-followme-uwb-230131.png&#39;&gt;eduro-followme-dual-uwb-230131_175427.log&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Úplně „růžově” ty data nevypadají, ale ještě je tam skrytý ten median na 10 prvků, který to snad trošku srovná&amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/eduro-pozyx-diff-230131.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/eduro-pozyx-diff-230131_t.png&#39; alt=&#39;diff mediánů&#39; title=&#39;diff mediánů&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/eduro-pozyx-diff-230131.png&#39;&gt;diff mediánů&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No nesrovnal. Pokud jsou kotvy od sebe 25cm, tak rozdíl 80cm je fakt marnost. No nevím, zda mám z toho obrázku úplně radost, ale je asi očekávaný.
Další pokus bude s dřevěnou lištou od Standy a tedy se širší základnou.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/eduro-wide-arms.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/eduro-wide-arms_t.jpg&#39; alt=&#39;Eduro se širokýma (80cm) ramenama&#39; title=&#39;Eduro se širokýma (80cm) ramenama&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;360&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/eduro-wide-arms.jpg&#39;&gt;Eduro se širokýma (80cm) ramenama&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;A také o trošku zábavnější &lt;a href=&#39;https://youtu.be/zPMrLg4dfrQ&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;. Ještě tam byla meziverze, ale ta byla pomalá/nudná, tak jsem zvedl rychlost:&lt;/div&gt;

&lt;pre&gt;speed = 0.0
if dist &gt; 1.2:
    speed = min(0.5, 0.1 + (dist - 1.2) * 0.4)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;tj. max 0.5m/s, ale s těma širokýma ramenama a pomalou úhlovou rychlostí už to trošku adrenalin je. Jasný další krok je ověření bezpečnosti
a jak to teď je, tak si i myslím, že možná ta vysunutá ramena i vidí 270deg lidar &amp;hellip; takže možná i uvidí ten okamžik, kdy si je urazí.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další vylepšení bude třeba u rychlosti korekce směru, resp. omezení rychlosti když je směr pravděpodobně hodně špatně (např. kolmo vlevo).&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230207&#34;&gt;&lt;/a&gt;
&lt;h2&gt;7. únor 2023 &amp;mdash; Bezpečnost především, časem &amp;hellip;&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dnešek byl celkem poučný. Opakoval jsem pokus na chodbě, jen jsem vyrazil na druhou stranu a šel poměrně daleko od robota (4 až 5 metrů). A najednou
se robot „zbláznil” a málem to napral plnou rychlostí do zdi:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/wall-direction.jpg&#39;&gt;&lt;img src=&#39;/articles/pozyx/wall-direction_t.jpg&#39; alt=&#39;hurá do zdi&#39; title=&#39;hurá do zdi&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;240&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/wall-direction.jpg&#39;&gt;hurá do zdi&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;No doběhl jsem ho a zastavil těsně před nárazem, ale &amp;hellip; proč mi to dělá?!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 646px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/eduro-uwb-230207_193615.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/eduro-uwb-230207_193615_t.png&#39; alt=&#39;diff a potenciální náraz v čase 90s&#39; title=&#39;diff a potenciální náraz v čase 90s&#39; class=&#39;border&#39;  width=&#39;640&#39; height=&#39;338&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/eduro-uwb-230207_193615.png&#39;&gt;diff a potenciální náraz v čase 90s&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Prostě najednou bylo měření skoro o metr vedle. A ano, myslím si že už jsem minule sliboval, že tam bude třeba dodělat „collision avoidance”
a místo toho jsem přidal sběr senzorických dat z tagu (jak to dělat jsem našel &lt;a href=&#39;/articles/pozyx/en#211224&#39;&gt;tady&lt;/a&gt;). To jsem zvědav, jestli tam
bude alespoň vidět, že jsem popoběhl?&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;V každém případě se ptám na stav senzorů jen na jedné straně robota a tak se tam snížil update na cca 10Hz, zatím co na druhé zůstal cca na 30Hz.
Nemyslím si, že tím to bylo, ale vyloučit to nemůžu.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Senzorická data tagu vypadají, že odpovídají &lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/blob/master/pypozyx/definitions/registers.py#L67-L92&#39; class=&#39;external&#39;&gt;tabulce registrů&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;registers:
    PRESSURE = 0x50  # Pressure data in mPa
    ACCELERATION_X = 0x54  # Accelerometer data (in mg)
    ACCELERATION_Y = 0x56
    ACCELERATION_Z = 0x58
    MAGNETIC_X = 0x5A  # Magnemtometer data
    MAGNETIC_Y = 0x5C
    MAGNETIC_Z = 0x5E
    GYRO_X = 0x60  # Gyroscope data
    GYRO_Y = 0x62
    GYRO_Z = 0x64
    # Euler angles heading (or yaw)  (1 degree = 16 LSB )
    EULER_ANGLE_HEADING = 0x66
    EULER_ANGLE_YAW = 0x66
    EULER_ANGLE_ROLL = 0x68  # Euler angles roll ( 1 degree = 16 LSB )
    EULER_ANGLE_PITCH = 0x6A  # Euler angles pitch ( 1 degree = 16 LSB )
    QUATERNION_W = 0x6C  # Weight of quaternion.
    QUATERNION_X = 0x6E  # x of quaternion
    QUATERNION_Y = 0x70  # y of quaternion
    QUATERNION_Z = 0x72  # z of quaternion
    LINEAR_ACCELERATION_X = 0x74  # Linear acceleration in x-direction
    LINEAR_ACCELERATION_Y = 0x76  # Linear acceleration in y-direction
    LINEAR_ACCELERATION_Z = 0x78  # Linear acceleration in z-direction
    GRAVITY_VECTOR_X = 0x7A  # x-component of gravity vector
    GRAVITY_VECTOR_Y = 0x7C  # y-component of gravity vector
    GRAVITY_VECTOR_Z = 0x7E  # z-component of gravity vector
    TEMPERATURE = 0x80  # Temperature&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;je to 24 čísel s tím, že první asi opravdu je tlak, poslední teplota (ta odpovídá i startu ve studené hale a pak po třetí minutě návrat)
a aktivita před 90s je trošku vidět na „linear acceleration”:&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/pressure.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/pressure_t.png&#39; alt=&#39;tlak&#39; title=&#39;tlak&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;116&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/pressure.png&#39;&gt;tlak&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel left&#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/linear-acceleration.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/linear-acceleration_t.png&#39; alt=&#39;lineární zrychleni&#39; title=&#39;lineární zrychleni&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;116&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/linear-acceleration.png&#39;&gt;lineární zrychleni&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table class=&#39;image_panel &#39; style=&#39;width: 226px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/temperature.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/temperature_t.png&#39; alt=&#39;teplota&#39; title=&#39;teplota&#39; class=&#39;border&#39;  width=&#39;220&#39; height=&#39;165&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/temperature.png&#39;&gt;teplota&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230214&#34;&gt;&lt;/a&gt;
&lt;h2&gt;14. únor 2023 &amp;mdash; Follow me UWB on/off&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Na posledním callu Jirka říkal, že ještě před vyhybáním se překážkam nejprve zapojí ten digitální vypínač. A to bych nebyl já, abych se hned
neopičil. Tímto tedy děkuji TomášoviP za připájení konektoru a tlačítka &amp;mdash; mini demo můžete vidět na &lt;a href=&#39;https://youtu.be/jeDxVSeiWCw&#39; class=&#39;external&#39;&gt;mini-videu&lt;/a&gt;.
Po minulých zkušenostech jsem tam také rovnou přidal test na volný prostor &amp;mdash; pokud je překážka blíž jak 1m, tak dovol pouze otáčení. To se ukázalo
až moc opatrné, tak půlením intervalu a přeměřováním robota, kdy 50cm je málo, jsme skončili na 70cm.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Další kousek je rychlost otáčení odpovídající chybě natočení robota. Zatím jsem to ignoroval a byl „pyšný” na kód, kdy detekuje tag vlevo/uprostřed/vpravo
a neřeší jak moc &amp;hellip; tak teď by mne to celkem zajímalo a jestli jsem neudělal chybu ve výpočtu, tak by to mělo být relativně jednoduché. Nechť je robot v pozici
(0, 0) a kouká ve směru osy X. Kotvy nechť jsou od sebe daleko B, jako base, a tak jejich pozice je (0, B/2) a (0, -B/2). Pak změřím dvě vzdálenosti L a R. Pro
pozici tagu na (x, y) platí, že&lt;/div&gt;

&lt;pre&gt;L = sqrt(x^2 + (y-B/2)^2)
R = sqrt(x^2 + (y+B/2)^2)

L^2 - R^2 = x^2 + (y-B/2)^2 - x^2 - (y+B/2)^2
L^2 - R^2 = -2*y*B*/2 - 2*y*B*/2 = -2*y*B
y = (R^2 - L^2)/(2*B)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;Jak se znám, tak tam bude určitě nějaká „drobná numerická chybička” &amp;hellip; hlavně by to nemělo fungovat, když R bude větší než L + B, není-liž pravda?!
Nevidím to, tak opravu nechám zkušenému čtenáři. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. jestě jedna drobnost z dnešního testování &amp;mdash; ty USB konektory nejsou nějak super spolehlivé a při „ťuknutí” o zeď nejspíše částečně vypadly.
Po opětném zapojení se ale detekovaly jako nová zařízení &lt;i&gt;/dev/ttyACM2&lt;/i&gt; a &lt;i&gt;/dev/ttyACM3&lt;/i&gt; &amp;hellip; no asi by to chtělo ta USB pravidla.&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230221&#34;&gt;&lt;/a&gt;
&lt;h2&gt;21. únor 2023 &amp;mdash; Pull request #953&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Dneska jsem to do limitu (22h) nedal. A ani není žádný velký posun, kterým bych se mohl pochlubit. Jirka už minulou středu říkal, že řeší návrat po
trase a problém s průjezdem úzkými dveřmi &amp;hellip; no holt se mi pomalu ztrácí za horizontem, sigh. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Tak co je nového? Říkal jsem si, že bych si měl odložit skoro-použitelné &lt;i&gt;UWB follow me&lt;/i&gt; demo a tak jsem vytvořil &lt;a href=&#39;https://github.com/robotika/osgar/pull/953&#39; class=&#39;external&#39;&gt;pull request do OSGARa&lt;/a&gt;. Tedy nejprve jsem asi 10 minut hledal, jak se sakra pull requesty vytváří, než mi došlo, že nejsem přihlášený a tak tam tlačítko &lt;i&gt;create pull request&lt;/i&gt; chybí. V druhém kroku všechny testy na linuxu (&lt;i&gt;Ubuntu 18.04&lt;/i&gt;) byly ve stavu &lt;i&gt;canceled&lt;/i&gt; s odkazem na &lt;a href=&#39;https://github.com/actions/runner-images/issues/6002&#39; class=&#39;external&#39;&gt;github issue&lt;/a&gt;, že nebude tato vykopávka dále v CI podporovaná. Po domluvě s Jakubem jsem tedy zvedl na poslední stabilní &lt;i&gt;Ubuntu 22.04&lt;/i&gt;, ale tam jsem zase narazil na nepodporovaný &lt;i&gt;Python 3.6&lt;/i&gt;. Ten jsem tedy nahradil za &lt;i&gt;Python 3.9&lt;/i&gt; (OSGAR byl testovaný pro linux a windows s Python 3.6, 3.7 a 3.8), ale to zase kolidovalo s prastarými balíčky a &amp;hellip; vzdal jsem to a teď je tam pouze &lt;i&gt;Python 3.7&lt;/i&gt; a &lt;i&gt;Python 3.8&lt;/i&gt;. TODO. &amp;hellip; nějak pomalu tuším, kde jsem propálil trošku toho času &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Vznikla nová větev &lt;i&gt;feature/follow-uwb-path&lt;/i&gt; a pokusil jsem se o první „návrat na základnu”. Původní název dnešního zápisu měl být „červená a modrá” (tlačítka na Eduru) nebo „Freudovo nabájení” (když chcete zároveň říci napájení a nabíjení, to byla zase řeč o Spiderovi) &amp;hellip; ale to by asi bylo kryptické i pro mne. &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt; Jo, tak ty tlačítka červené mi evokuje &lt;i&gt;nahrávání&lt;/i&gt;, tj. &lt;i&gt;follow me mode&lt;/i&gt; a zbylé modré je tedy &lt;i&gt;follow recorded path&lt;/i&gt;. Nejjednodušší varianta, co mne napadla, bylo si průběžně ukládat &lt;i&gt;pose2d&lt;/i&gt;, tj. (x, y, heading) do pole a když se měl po trase vrátit domu, tak pokud o 180 stupňů otočený heading robota z první pozice od startu bližší než 20cm byl menší než jeden stupeň, tak jeď jinak se pomalu otáčej, aby rozdíl nahraného a současného (převráceného) headingu byl menší. Možná kód bude srozumitelnější:&lt;/div&gt;

&lt;pre&gt;elif self.navigation_mode == MODE_FOLLOW_PATH:
            for i, p in enumerate(self.path):
                d = math.hypot(data[0] - p[0], data[1] - p[1]) / 1000.0
                if d &lt; DIST_STEP:
                    break
            if i == 0 or not self.follow_enabled:
                self.send_speed_cmd(0, 0)
            else:
                speed = 0.0
                diff = (data[2] - p[2]) % 36000 - 18000
                if abs(diff) &lt; 100:
                    angular_speed = 0
                    speed = 0.1
                elif diff &lt; 0:
                    angular_speed = math.radians(10)
                else:
                    angular_speed = -math.radians(10)
                self.send_speed_cmd(speed, angular_speed)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;V prvním pokusu jsem špatně odhadl singularitu na 360deg, ve druhém zapomněl robota zastavovat, když UWB tlačítko je ve stavu off &amp;hellip; a pak to vlastně zhruba dělalo co mělo. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt; &amp;hellip; no resp. ne úplně, viz
např. poslední &lt;a href=&#39;https://youtu.be/ixIo1xJDO3Y&#39; class=&#39;external&#39;&gt;video&lt;/a&gt;. Vybral jsem ho, že je tam vidět Spider, což byl ještě další bod na seznamu a ten skončil s&lt;/div&gt;

&lt;pre&gt;File &#34;/home/md/git/osgar/osgar/drivers/spider.py&#34;, line 186, in update
    assert False, channel  # unsupported channel
AssertionError: move&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;takže je jasné, kde budeme navazovat příště. Jinak i u Spidera jsem uvažoval o aplikaci &lt;i&gt;follow me&lt;/i&gt; (možná se čtyřma kotvami, každá v jednom rohu &amp;hellip; ve &lt;i&gt;spider módu&lt;/i&gt; totiž může jet libovolným směrem), ale po dnešních pokusech s oživením bych udělal opak, že ten tag by uživatele chránil a pokud bude blíže jak 3 metry, tak se Spider automaticky zastaví až už jede jakýmkoliv směrem!&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě jsem chtěl napsat doplnění k minulému záznamu &amp;hellip; teď vím, že mám alespoň dva čtenáře &lt;span class=&#39;wink&#39;&gt;&lt;/span&gt;. Ano, ten problém s počítáním pozice tagu nastane, když se pokusím vedle &lt;i&gt;y&lt;/i&gt; ještě zjistit &lt;i&gt;x&lt;/i&gt; a tam mohu mít odmocninu ze záporného čísla &amp;hellip; díky ML za potvrzeni. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s. koukám, že ani do 00:00 limitu jsem to nedal :(&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;p.s.2 ono vlastně není překvapivé, že Eduro do Spidera narazilo, protože algoritmus výše řeže zatáčky o 20cm &amp;hellip;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;&lt;table class=&#39;image_panel center&#39; style=&#39;width: 326px;&#39;&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&#39;/articles/pozyx/eduro-follow-path.png&#39;&gt;&lt;img src=&#39;/articles/pozyx/eduro-follow-path_t.png&#39; alt=&#39;sledování cesty zpět&#39; title=&#39;sledování cesty zpět&#39; class=&#39;border&#39;  width=&#39;320&#39; height=&#39;263&#39;&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#39;/articles/pozyx/eduro-follow-path.png&#39;&gt;sledování cesty zpět&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;a id=&#34;230301&#34;&gt;&lt;/a&gt;
&lt;h2&gt;1. březen 2023 &amp;mdash; pypozyx.SingleRegister(size=2)&lt;/h2&gt;

&lt;div class=&#39;p&#39;&gt;Včera se toho na poli Pozyxu moc nedělo. TomášP mi vytvořil druhé tlačítko na UWB tag, takže teď můžu (stejně jako Jirka) přepínat vzdáleně mód sledování
a návratu po trase. Motivace byla přechod z robota &lt;a href=&#39;/robots/eduro/en&#39;&gt;Eduro&lt;/a&gt; na &lt;a href=&#39;/robots/kloubak/en&#39;&gt;Kloubáka K2&lt;/a&gt;, který žádný přepínač přímo na robotovi nemá.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Koukal jsem do kódu &lt;i&gt;pypozyx&lt;/i&gt; knihovny, protože jsem odmítal kvúli vyčítání druhého bitu posílat extra dotaz. Implementace je taková, že 
&lt;a href=&#39;https://github.com/pozyxLabs/Pozyx-Python-library/blob/master/pypozyx/definitions/registers.py#L45-L48&#39; class=&#39;external&#39;&gt;každý GPIO má vlastní registr&lt;/a&gt;:&lt;/div&gt;

&lt;pre&gt;GPIO_1 = 0x85  # Value of the GPIO pin 1
GPIO_2 = 0x86  # Value of the GPIO pin 2
GPIO_3 = 0x87  # Value of the GPIO pin 3
GPIO_4 = 0x88  # Value of the GPIO pin 4&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;a pro dotaz se pak používá funkce &lt;i&gt;getGPIO()&lt;/i&gt;, která je implementovaná následovně:&lt;/div&gt;

&lt;pre&gt;def getGPIO(self, gpio_num, value, remote_id=None):
    gpio_register = PozyxRegisters.GPIO_1 + gpio_num - 1
    return self.getRead(gpio_register, value, remote_id)&lt;/pre&gt;

&lt;div class=&#39;p&#39;&gt;&lt;i&gt;getRead&lt;/i&gt; už je pak obecné čtení spojené s komunikací s dalším zařízením pokud &lt;i&gt;remote_id&lt;/i&gt; není &lt;i&gt;None&lt;/i&gt;. Co s tím? No trik je v tom, že volání toho čtení
neobsahuje (tedy na první pohled) informaci, kolik se toho má přečíst?! Toto je dané typem vstupně/výstupní struktury předávané ve &lt;i&gt;value&lt;/i&gt;. Zde je použitý &lt;i&gt;SingleRegister&lt;/i&gt;,
tedy jeden bajt. Ale &amp;hellip; registry můžou být i 2 a 4 bajtové, takže pokud změníte defaultní &lt;i&gt;size=1&lt;/i&gt; na 2, tak vyčtete stavy obou pinů najednou. Ano, mají pak třeba hodnotu
257 = 0x101 &amp;hellip; ale to už se dá. &lt;span class=&#39;smile&#39;&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Na K2 jsme &lt;i&gt;popozyx&lt;/i&gt; doinstalovali, ale vlastně jsem ho už nestihl vyzkoušet. USB by měla být k dispozici, ale vše je „pod kapotou”.&lt;/div&gt;

&lt;div class=&#39;p&#39;&gt;Ještě jsem udělal pár pokusů s Edurem s testem návratu po trase (stejný kód jako minule) a moc slavné to nebylo, tj. dnes bez videa.&lt;/div&gt;

&lt;hr&gt;

&lt;div class=&#39;p&#39;&gt;&lt;a href=&#39;/articles/pozyx/en#email&#39;&gt;kontaktní formulář&lt;/a&gt;&lt;/div&gt;

    </content>
</entry>
</feed>