czech english

Formula-E Roborace cs

fandorama blog

Závod autonomních elektrických formulí ROBORACE by se měl poprvé konat v sezóně 2016-2017. Deset týmů, každý se dvěma vozy bez řidiče, bude soutěžit v jednohodinovém závodě na závodních okruzích po celou sezónu. Všechny týmy budou mít stejná auta, takže to bude soutěž použitých řídicích AI programů. Jeden soutěžící bude „crowd-sourced community team”, tj. otevřený veřejnosti. Máme se nač tešit … Blog update: 3/3 — LEGO?!



Autonomní auta mne zajímají už od DARPA Grand Challenge z roku 2004. Co ale nevím, jestli by to zajímalo i vás, čtenáře? Má smysl přepisovat útržky nalezených článků do češtiny? Případně zajímavé kusy kódu, pokud opravdu desátý tým bude vše zveřejňovat? Proto fandorama blog, který by měl pokrýt celou první soutěžní sezónu.
Zde je odpovídající fandorama link:

22. prosinec 2015 — fandorama do 24h

To jsem opravdu nečekal, že do 24 hodin od zveřejnění se naplní fandorama rozpočet! velké díky prvnímu stoupenci:
Oficiální informace k soutěži jsou přislíbené až začátkem příštího roku, tak alespoň přehled odkazů:
Asi zatím nejvíce informací je na již zmiňovaném wired.co.uk. Teď se snaží získat firmy, které již autonomní vozy vyvíjí (Google, Uber, Continental a Bosh). Existuje i první verze API, aby týmy mohly začít se simulátory … dokumentaci jsem si vyžádal, tak uvidíme jestli odpoví.
A hle https://github.com/roborace/roborace jen tam zatím nic není.

15. leden 2016 — Wikipedia

Zatím je na všech „informačních frontách” klid. Jedinou novou informaci, co jsem dnes našel je na stránkách Wikipedia/Roborace. Je tam odkaz na Formula E sezónu 2016-2017 a první závod se pojede v září 2016 v Montrealu/Kanada.
Možná za zmínku i stojí poslední odstavec z The Verge článku:
Roborace fills a gap left by the School Series, an electric kit car competition for kids that was run before a number of races in Formula E's first season. The School Series was dropped from the season two schedule shortly before the first race in Beijing, leaving room for a new support series like Roborace. … tj. ruší závody pro děti a nahrazují je závody pro roboty … a co děti, mají si kde hrát?

16. únor 2016 — API na výsledky

Koukám, že už je to měsíc, co jsem zde naposledy napsal odstaveček. Ono se stále nic neděje. Alespoň jednou týdně projdu oficiální stránky a github … a nic. Jen různé polemiky typu deseti důvodů proč neignorovat robotrace, kde pozorování, že publikum bude trošku jiné a možná to přiláká i ostatní, kteří k F1 závodům nemají žádný vztah, mne moc nenadchly.
Zkouším také hledat "e-formula api" a na to jsem dnes skoro poskočil, když vyběhl odkaz na Ergast Developer API. The Ergast Developer API is an experimental web service which provides a historical record of motor racing data for non-commercial purposes. The API provides data for the Formula One and Formula E series, from the beginning of the world championships in 1950 and 2014 respectively. Tj. není to API na řízení formule :-(, ale přístup do databáze výsledků. Třeba se i toto bude časem hodit …

5. duben 2016 — Nový design

Informaci, že elektrická závodní auta budou mít nový design, jsem četl už zhruba před mesícem. Ale byla to agentura JPP (Jedna Paní Povídala), resp. Roborace hired the man behind Tron: Legacy's light cycles to design its driverless cars. Musím uznat, že některé návrhy Daniela Simona jsou opravdu „cool”, ale nějak mne spíše trápí technická stránka soutěže a toto patří spíše do kategorie „nice to have”. No nic, už je to oficiální a tak si můžete prohlédnout „vyrenderovaný obrázek”:
Originál, v plném rozlišení, naleznete zde.
p.s. mezi řádky The first Roborace 'shows' will take place during the 2016/2017 Formula E season., tj. už to nevypadá, že by závodilo pokaždé a začalo to letos … ???

27. duben 2016 — Nvidia

Když jsem se koukal posledně, tak jsem zaznamenal nějaké útržky, že Roborace podpoří Nvidia, ale teprve teď vidím relevantní článek. Každé auto bude tedy vybaveno počítačem NVIDIA DRIVE PX 2. Už podle obrázků to vypadá moc pěkně … no to by bylo zlé, kdyby Nvidia neměla pěkné obrázky .
DRIVE PX is a powerful auto-pilot car computer designed to run deep neural networks paving the way for the autonomous car.
Ještě přidám odkaz s informacemi o Nvidia na letošním CESu. 10x výkonější než starší generace (Dual NVIDIA Tegra® X1 processors = 2.3 Teraflops) … asi bych udělal malou odbočku. Cogito posílal před časem odkaz na nahrávané přednášky ze Stanfordu z ledna letošního roku — jestli o Deep Neural Networks nic netušíte (ale i když tušíte) tak vřele doporučuji (já se tím prokousávam jenom pomalinku, přeci jenom je to 15h videa, ale lepší zdroj asi nenajdete): CS231n Winter 2016 Tam člověk pochopí, jaká revoluce proběhla nárůstem výpočetní síly a množstvím vstupních dat.
ukázka klasifikace (zdroj Nvidia)
ukázka klasifikace (zdroj Nvidia)
DRIVE PX 2 can process the inputs of 12 video cameras, plus lidar, radar and ultrasonic sensors. It fuses them to accurately detect objects, identify them, determine where the car is relative to the world around it, and then calculate its optimal path for safe travel.
Hm, tak to už tam pro programátora snad nezbývá ani co dělat??

5. květen 2016 — Vzdělání škodí lidem?!

Teď se mnou cloumá vztek, tak ho ventiluji alespoň do jednoho odstavečku tohoto blogu. Jestli jste se nestihli podívat na ty DNN videa ze Stanfordu, co jsem o nich psal minule, tak už máte smůlu. Jsou stažená: This video is private. :-(. Vysvětlení je na Karpathyho twitteru. Sigh. Prostě pokud něco uděláte pro vzdělané lidi, tak vás za to můžou i zažalovat, viz odkaz z toho twitteru: Harvard and M.I.T. Are Sued Over Lack of Closed Captions. Už vidím, jak se budou ilegálně kopírovat vysokoškolské přednášky … nebylo to tu už někdy? Proletáři všech zemí vy…
p.s. díky za komentář — ještě že existuje underground

2. srpen 2016 — Self Racing Cars

Na poli „Roborace” je trošku „okurková sezóna”. Proto mne celkem potěšil newsletter od NVIDIA (přihlásil jsem se do jejich NVIDIA Automotive News), kde byl článek o prvním testování závodních autonomních aut. A z něj se pak dostanete na stránku selfracingcars.com.
Vedle akce samotné mne na první pohled upoutal dataset ke stažení. Má 4.57GB, zabalený tar, takže si ho asi moc na svém notebooku neprohlédnu, ale už samotný fakt, že si náhodný kolemjdoucí může stáhnout data z Lidaru (na autech jsem viděl Velodyne 32) a kamer (?) mne těší . Asi budu potřebovat viewer od PolySync, ale věřím, že někde bude formát popsán. Až dojde na Roborace, tak to asi bude podobné …
Koukám, že ke stažení jsou i čistě data z Velodyne HDL-32 na data.selfracingcars.com (1.2GB).
YouTube video zas tak moc odvaz není. Je celkem dobře vidět vnitřek auta, ale závodní dráha v ostrém slunci je spíše bílá … a je to jenom demo, sběr dat, jen jedno auto na trati. Ale nějak se začít musí.

17. srpen 2016 — Roborace welcomes you

Asi jsem zase zaspal. To je mi podobný! Na druhou stranu jsem skoro přesvědčený, že tlačítko ENQUIRE bylo na oficiálních stránkách Roborace už od začátku a že jsem ho v únoru (?) použil, když jsem organizátorům psal. Jen vedlo na jiný formulář :-(.
Ono je i možné, že se to změnilo nedávno?? Každopádně, když teď na to tlačítko kliknete, tak se vám objeví Join us as a můžete zvolit Team or Roboracer a dále jestli registrujete tým nebo hledáte místo v týmu … pak vás čeká dotaz na znalosti a když správně odpovíte robotovi:
Hi, it’s Roborace AI speaking.
I believe you are one of us. Aren’t you?

4 + seven is:
tak dostanete mail s linkem na NDA (non-disclosure agreement). Je nutné podepsat, naskenovat a poslat … skoro mám obavy, jestli potom ještě budu moci v tomto blogu pokračovat. Uvidíme. Ještě jsem to neposlal — to tlačítko jsem dnes stiskl, protože jsem se chtěl zeptat jestli už nějaké týmy jsou … nepřidáte se ještě někdo?

24. srpen 2016 — DevBot

Z Roborace organizátorů se po mailu zatím nikdo neozval (automatické odpovědi nepočítám), ale teď jsem narazil na článek a youtube video, kde je první zmínka o stroji — DevBot. Příliš krátké = skoro nezajímavé, ale snad už brzy bude známo více.
p.s. ještě jeden článek, nesoucí stejnou informaci, kde je ale zmínka, že Roborace's DevBot will make its public debut on August 24th, at the Formula E open practice sessions at Donington Park. (to bylo včera) Na The Verge je také podrobnější článek o plánovaných senzorech, i když se obávám, že je to zatím spíše spekulace a je to definované možnostmi vstupů Nvidia Drive PX2.
Tady je zmínka, že demo již proběhlo, ale chtělo by to více …

29. srpen 2016 — První autonomní jízdy

Na webu jsou už k vidění první videa s autonomní jízdou. Přiznám se, že bych v DevBot-u moc sedět nechtěl. První video je s Lucas Di Grassi … trošku, jak když vás vystřelí na měsíc:
A toto je první veřejná jízda — škoda, že je video oříznuté:

18. zaří 2016 — TORCS?

Včera na Robotour večeři byla vyslovena hypotéza, že Roborace bude možná postavené na TORCS (The Open Racing Car Simulator), a zde je důkaz, že o tom organizátoři uvažovali … pro případ, že by link přestal fungovat, zde je originalní text:
> On 4/8/2016 3:52 PM, Vadim Butakov wrote:
>
>     Hi,
>
>     I'm a member of Roborace:
>     http://spectrum.ieee.org/cars-that-think/transportation/self-driving/
         nvidia-to-supply-roborcar-brains-for-roborace-formula-e-series
>
>     I'm evaluating an idea of modifying Speed Dreams to create a free
>     open-source platform that anyone can use to develop, test their ai
>     algorithms and compete with each other in virtual Roborace events.
>     It can be an alternative to a high-end (hence inaccessible to the
>     general public) sim that will be used by the actual teams.
>
>     The questions to you guys are:
>
>     - what do you think of this idea?
>
>     - are you willing to help us to build such a platform? The to-do
>     list will be to create a udp bot server addon (similar to one used
>     in TORCS championships), create a Robocar model, (if there is
>     enough time) crate tracks that will be used in the championship
>     and a Roborace event in the game.
>
>     Let me know what you think!
>
>     Cheers,
>
>     Vadim

26. zaří 2016 — Speed Dreams

Jako první krok Vadim doporučuje Speed Dreams, což je simulátor, který z TORCS vychází.
At some point we considered it as an option because it's an open source and there is a great community around it, but unfortunately it's quite outdated and there is plenty of work has to be done in order to get it to standards we aim. We might suggest Speed Dreams as a free simulator for very early algorithms testing, but no more than that.
OK, má pravdu, že už je to trošku outdated. Zdrojáky si můžete stáhnout na SourceForge, ale zabalené mají 2.98GB a rozbalené pak asi 4.5GB. Kód je psaný primárně v C/C++. Začít bude asi nejlepší v složce doc/tutorials/robot … ale ta je i online.
A robot is a program that drives a car (technically it's a function encapsulated into a shared object in Linux, into a DLL in Windows). It is executed from TORCS and gets as input information about the current status of its car and the situation on the track. Based on this it can compute how much it wants to steer, to brake or accelerate, which gear it needs and if it wants to pit. Your robot returns the data to TORCS and the next simulation step will be performed.
… a první lekce jak řídit robota středem závodní dráhy vypadá dobře … uvidíme …

6. říjen 2016 — DevBot v Hong Kongu

Ten čas hrozně utíká! Dnes jsem dostal info, že DevBot je v Hong Kongu a po chvíli hledání mi vyskočil starý článek, kde psali: The first Roboraces will take place during the upcoming Formula E season, which kicks off in Hong Kong October 9. … tj. závody začínají už tuto neděli!
Přes FIA Formula E se dostanenete na televizní program:
HKT Hong Kong ePrix - Qualifying LIVE 	09/10/2016 	Sunday 	05:45 CEST 	07:10 CEST
HKT Hong Kong ePrix - Race LIVE 	09/10/2016 	Sunday 	09:30 CEST 	11:30 CEST

9. říjen 2016 — Závod Formule-E v Hong Kongu

Přestože podle časového rozvrhu měla být ukázka Roborace jak v sobotu tak v neděli, tak jsem jí zatím na YouTube nenašel. Během dne jsem alespoň narazil na stream z kvalifikace a závodů Formule-E. Stojí to za shlédnutí, co že všechno bude muset ten počítač zvládat
[video bylo změněno na "private" a není již k dispozici]
(start závodu je cca v 8:12:00)

12. říjen 2016 — DevBot měl v Hong Kongu problémy

Už vím, proč … DevBot nebyl na žádných záběrech, viz článek na CNN:
However, things didn’t quite go to plan for its first scheduled street track outing at the inaugural Formula E Hong Kong ePrix this weekend.
There were no high-speed figures of eight, only seven engineers struggling to push the 1.1-ton car through a three-point turn outside its temporary home in Hong Kong — problems recharging the battery the reason given for the no show.
We are calling this a Beta season — getting people on board and getting them up to speed.
The Roborace team will try again at next month’s Marrakech ePrix on November 12 with Tomlinson hopeful that they will be running races before the third season of Formula E ends next July.
Uvidíme tedy za měsíc v Maroku … (viz seznam závodů).
p.s. stream z víkendu je již nedostupný, tak alespoň sestřih:
p.s.2 vypadá to, že 14. října 2016 Roborace začne vysílat dokument Inside Roborace (viz Instagram, )

13. říjen 2016 — github Roborace-Dreams

Včera jsem víceméně omylem narazil na Vadimův repozitář Roborace-Dreams. Na první pohled to vypadalo jako prázdné repo, podobně jako roborace/roborace, ale klonování trvalo nějak hrozně dlouho. Důvod? On je skoro prázdný master, ale větev dev obsahuje modifikovanou verzi Speed Dreams!
Konkrétně by vás mohl zajímat adresář Info_Roborace. Je to 3 měsíce staré a asi opuštěné, ale zároveň v tom Info.docx je popis UDP stavový paketů a paketů pro řízení formule:

The protocol for the simulator out stream is defined below.

Signal

Start Byte

Type

Units

Description

LapTime

0

float

seconds

current lap time

DistStart

4

float

meters

distance from start line

LastLapTime

8

float

seconds

last lap time

RacePos

12

int32

-

race position

RPM

16

float

rev/min

RPM

EnergyLevel

20

Float

TBD

battery level

GearPos

24

int32

-

gear position

WheelVelFR

28

float

rad/sec

wheel speed front right

WheelVelFL

32

float

rad/sec

wheel speed front left

WheelVelRR

36

float

rad/sec

wheel speed rear right

WheelVelRL

40

float

rad/sec

wheel speed rear left

AbsPosX

44

float

meters

position of vehicle CG in abs CS

AbsPosY

48

float

meters

AbsPosZ

52

float

meters

AngX

56

float

rad

roll (X), pitch (Y) and yaw (Z) angles of the vehicle

AngY

60

float

rad

AngZ

64

float

rad

AngRateX

68

float

rad/s

angle rates

AngRateY

72

float

rad/s

AngRateZ

76

float

rad/s

AbsVelX

80

float

m/s

absolute speeds along the axis of the global CS

AbsVelY

84

float

m/s

AbsVelZ

88

float

m/s

AccelX

92

float

m/s2

vehicle acceleration in the local CS

AccelY

96

float

m/s2

AccelZ

100

float

m/s2

SteerAngle

104

float

deg

current road wheel angle

WheelReactionFL

108

float

N

front left wheel reaction

WheelReactionFR

112

float

N

front right wheel reaction

WheelReactionRR

116

float

N

rear right wheel reaction

WheelReactionRL

120

float

N

rear left wheel reaction

Collision

124

int32

-

collision state (0-no collision)

V2xN

128

uint8

-

number of V2x objects

V2xType

129

uint8 [39]

-

type of the objects:

0 – unknown, 1 – ai racing car

2 – human driver, 3 - slow car, 10 - static object

V2xXPos

168

float [39]

meters

position of the objects in the absolute CS

V2xYPos

324

float [39]

meters

V2xSpeed

480

float [39]

m/s

speed of the object

V2xYaw

636

float [39]

rad

yaw angle of the object

SimStatus

792

uint8

-

3 – active, 5 - stopped

SimCounter

793

uint8

-

increments every send cycle

Total size: 794 bytes


The protocol for the simulator in stream is defined below.

Signal

Start Byte

Type

Units

Description

SteerAng

0

float

deg

“+” – left, “-“ - right

AccelRequest

4

float

N∙m or % gas

Overall torque request or gas pedal percentage (depending on CtrlMode)

BrakeRequest

8

float

% brake

brake pedal request (0 to 1)

GearPos

12

int32

-

gear position: -1 – reverse,

0 – neutral, 1 - drive

CtrlMode

16

uint8

-

control mode:

3 – torque request, N∙m

11 –gas pedal request, %

Ctr

20

uint8

-

the simulator checks if controller is alive using this counter

Je to kompromis mezi Speed Dreams a Roborace. Vedle absolutní pozice na trati máte k dispozici i rychlosti, zrychlení, úhly, derivace úhlů, rychlosti jednotlivých kol, úhel zatáčení, reakci kol (to moc netuším co je) a informace o stavu baterie, kolize a absolutní pozici soupeřů (X, Y, směr a rychlost).
Pro řízení pak posíláte příkaz na otočení volantu, sešlápnutí „plynu”, brzdy a řazení.

14. říjen 2016 — pyroborace ver0

Neodolal jsem. Vytvořil jsem si VirtualBox s Ubuntu, abych mohl snadno postupovat podle instrukcí. Až na to, že je to PDFko, celkem OK (obyčejný text by šel lépe kopírovat, případně ideálně rovnou pustit nebo patchovat). Drobnost s mkdir bild (má být mkdir build) a pak mi neprošla kompilace kvůli Windows socketům. Ono hned vedle je linux_fix/fix.zip, který po rozbalení skrývá README.md:
# Roborace Ubuntu Fix

#Install:

- Clone the original repo (https://github.com/vadbut/Roborace-Dreams)
- Copy the 'drivers' folder into 'Roborace-Dreams/src/' and choose to
     overwrite all conflicting files
… no asi bych to dělal jinak, ale vzhledem k tomu, že to fungovalo a jinak je to asi mrtvá větev OK. Prostě natvrdo překopírovat zdrojáky z toho ZIPu přes ty trackované v repozitory a pak zkompilovat a nainstalovat.
Chvilku jsem hledal, co mám vlastně pustit … odpověď je speed-dreams-2. V samotném programu pak vyberete závod (Quick Race pro test stačí), účastníky si vyberete ze skupinky UDP (v mém případě první byl UDP Nico Watt) a po odstartování, kdy vaše auto stojí a všichni vás předjedou, je vidět na konzoli, že nepřicházela žádná UDP data a spojení bylo ukončeno.
K Hello World! už je jenom krůček: opakovaně posílat 21 bajtů na port 3001, viz pyroborace/ver0.py:
# simplest version = just go straight with 50% gas

import socket
import struct

soc = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
ctr = 0
while True:
    data = struct.pack('fffiBB', 0, 0.5, 0, 1, 11, ctr & 0xFF)
    soc.sendto(data, ('127.0.0.1', 3001))
    ctr += 1
Když si představím, že toto by šlo pustit na závodní formuli, tak mne až zamrazí . Co to v simulátoru udělá? Částečně šlápne na plyn, jede to rovně a v první zatáčce to nabourá.
Co dál? Asi bych si rozchodil přesměrování portů, abych řízení mohl pouštět mimo VirtualBox (pro pohodlí), a pak ver1, která zároveň bude číst stavy a popojede s formulí 1 metr.

15. říjen 2016 — pyroborace ver1

Přidání čtení stavu simulované formule je v Pythonu poměrně triviální:
soc.bind( ('', 4001) )
soc.settimeout(1.0)
s tím, že ten timeout je pouze pro pohodlnost (nechci teď ještě řešit nějaká vlákna).
pyroborace/ver1.py opravdu dostával požadovanou strukturu velikosti 794 bajtů, včetně absolutní pozice na trati, a tak veškerá „logika” byla zapamatovat si pozici startu (není to (0, 0)) a když je vzdálenost (math.hypot()) větší než 10 metrů, jeden metr mi přeci jenom přišlo málo, sundej nohu z plynu.
Celkem to fungovalo, jenom mne překvapilo, když po chvíli formule začala couvat?! Že by tam byl kopec?? Přidal jsem si vypisování ještě Z-ové souřadnice a byl …
Po těch 10 metrech jsem tedy ještě začal zuřivě dupat na brzdu (soupeři za mnou se to moc nelíbilo a obratem do mne naboural) a celkově jsem zastavil až na 116 metru.
Další krok bude nastudovat trasu (netuším, jak ten 3D model popisují) a zkusit objet celé kolo. Pomalu.

16. říjen 2016 — Inside Roborace - Episode 1

… úplně jsem na to zapomněl …
Z toho záznamu z Hong Kongu je vidět, že Vadim Butakov hraje poměrně aktivní roli a další důležitou osobou je Gregory Forostovsky.

9. listopad 2016 — pyroborace track

Tento víkend se pojede závod v Maroku a tentokrát to snad DevBot alespoň jednou objede. Předpokládám, že následně sestříhají Epizodu 2.
Na poli Pythonovské Roborace je drobný update: přibyl jednoduchý parser popisu trasy track.py. Řeší zatím jenom 2D trasu a ignoruje náklony a stoupání. Mezi problematické segmenty patří zatáčky s proměnnou křivostí (popisují se pomocí poloměru na začátku a na konci), které u některých tras nesedí. Defaultní Espie Grand Prix Circuits ale funguje a tak je na čase se pohnout z místa „alespoň trošku inteligentně”.
Jinak potvrzuji, co mi psal Vadim, že souřadnice ostatních závodních aut jsou k dispozici pouze pro UDP roboty. Vedle Nico Watta jsem si přidal ještě UDP robota Petera Fleminga a začala chodit lepší data . Není to dokonalé, ale krůček to je.

10. listopad 2016 — DevBot #2 a Epizoda 2

Díky Jirkovi za korekci, že Epizoda 2 už je skoro týden online …

17. listopad 2016 — Roborace-Dreams ve Windows

Minulý týden se do Roborace aktivně zapojil i Zbyněk a prošlapal minimalistickou verzi simulátoru Roborace ve Windows. A klasicky „když dva dělají totéž není to totéž” — výsledek stojí za to (myslím, že i střípky z jeho trnité cesty), tak bych to zde zmínil …
Začal bych ale ještě pár poznámkami k „mé” Ubuntu verzi ve VirtuálBoxu (ta vlastně zavdala popud k větší revizi a vytvoření forku Roborace-Dreams). Lze si totiž zapnout Port Forwarding (Network >> Advanced >> Port Forwarding >> '+' >> UDP 127.0.0.1 3001 10.0.2.15 3001 a UDP 127.0.0.1 3002 10.0.2.15 3002), povolit ve firewall oba porty jak na straně Windows, tak ve VirtualBoxu (sudo ufw 3001 a sudo ufw 3002), restartovat VirtualBox a pak ověřit, že spojení funguje (netcat -lu 3001 — testovat to přímo ve speed-dreams-2 není moc dobrý nápad).
Cvičně jsem si pustil proti sobě ver0.py vs. ver2.py (u ver0.py jsem si změnil číslo portu na 3002), jedno auto dal na začátek a druhé na konec startovního pole a … začala mi chodit nesmyslná data jak pro mé auto, tak pro pozici soupeře:
(1,) 813.676025391 764.784240723 0.0
(873.676025390625, 764.78466796875)
0.0
(1,) 873.676025391 764.784667969 0.0
60.0000000015
(1,) 813.676025391 764.784240723 0.0
0.0
(1,) 873.676025391 764.784667969 0.0
60.0000000015
(1,) 813.676025391 764.784240723 0.0
0.0
(1,) 873.676025391 764.784667969 0.0
60.0000000015
… prostě to vypadá, že všechny informace se chybně posílají na port 4001 a pokud by druhé auto poslouchalo na 4002, tak nic nedostane … což byla motivace, proč zasahovat do Vadimových zdrojáků.
Následující sekci Zbyněk možná brzy zcenzuruje … ale v mezičase … začalo to mailem se subj. speed dreams (nebo spíš nightmares?) … jen pár výseků ze série mailů:
Tak jsem se do toho pustil…
[ale nakonec jsem nic užitečného nesepsal, takže to klidně ignorujte]
Klonuji
gitgithub.com:robotika/Roborace-Dreams.git
ale už to nějakou dobu běží, mám staženo 1.3G a píše to 60% - hmm, docela nářez. Snažím se postupovat dle
neb mám rozchozené MSVC express 2008 včetně qmake a cmake. Jinak ale vůbec netuším, co vlastně dělám. Potřebuji to vlastně kompilovat? No nic, časem snad asi jo, tak to nebude zbytečná práce. Ze souborů
soudím, že to asi potřebuji.
Mimochodem, už mám 2.2G a říká to, že je to 80%. Prostě je to na dýl.
Jinak pokračuji v rozchozování pod win 7 a vc express 2008. První problém je, že to nemá inttypes (a to tvrdí, že msvc 2008 je podporované). Proboha chápete někdo, proč má CMake gui tak strašně malé to okno s logem? No, pak nemohl najít 3rdparty - tak vězte, že mají být "vedle" checkoutu (../3rdParty). Pak prošel jak Configure, tak Generate, takže mám otevřené msvc a v něm sln se spoustou projektů. Dávám build all a "odcházím na párek" . Builduje se to v 21 paralelních jobech a stejně to v součtu nevytíží mé 4 procesory na víc jak na 30%. Tak uvidíme. A, už to frčí na 100% (je 12:36).
Můj nynější plán je, podívat se v debugeru, jak se vlastně parsují ty xml tracky.
Uhh, ho. Je 12:42 a je dobuildováno a žádný error! Teď už jen zjistit, jestli je tam ten udp driver. Projekt udp tam je, ale z roku 2006.
@Martine, co tam ten Vadim vlastně přidával či měnil?
SpeedDreams2 jde pustit. První věc - chci vypnout hudbu. Bohužel dostávám access violation :-(. A to v nějakém loggeru :-(. Protože _pStream není inicializovaný. Nicméně po ručním restartu už to alespoň nehraje, … a budu mít ještě chvilku čas se v tom vrtat .
Vybírám Race => QuickRace, ale nemůžu najít, jak tam vybrat nějakého UDP závodníka :-(. Tj. asi končím. Respektive nepustím si ver0.py, ale furt můžu zkusit kouknout na ty xml tracks.
Bingo (další polední spánek)! Jinak já teda nevím, ale asi máme o UI úplně jiné představy (tím myslím já vs. vývojáři Speed Dreams). Takže, když vyberete Quick Race, tak si nevybírejte jezdce kliknutím na tlačítko "Players", ne ne. Tím se jezdci nevybírají. Jak píše Martin, vybírají se tlačítkem Configure. A ta "herní" myš mě taky pěkně štve - vždycky, když to nad něčím přemýšlí, tak myš zmizí a člověk vůbec netuší, co se děje. A že to před startem přemýšlí fakt dlouho. Ale možná je to tou debug verzí.
Jestli to celé dobře chápu, tak na to, aby člověk programoval UDP bota, tak na to vůbec nemusí kompilovat vlastní Speed Dreams, ale stačí stáhnout binární instalaci. Ještě jsem to neověřoval, ale nemám dojem, že tam Vadim něco přidal či změnil. A to repozitory je teda mega nepříjemné na práci - 2.2G na stahování a po checkoutu a buildu to má 7.5G.
Čili první milník dosažen! Již druhý člověk po prvním průkopníkovi byl schopen spustit ver0.py!
… přijde mi, že kdybych sem dal pouze dvouřádkový návod, jak si to celé rozchodit, tak by si málokdo uvědomil, že to nebylo úplně „zadarmo” …
  1. nainstalujte si minimalistickou verzí Speed Dreams 2 speed-dreams-base-2.2.1-r6404-win32-setup.exe (148MB)
  2. přidejte Zbyňkův build UDP robota s Vadimovu konfiguraci a modelem Robocar speed-dreams-2.2.1-roborace.zip (10MB)
A je to. A je to celkem sranda.
Zbyňkova pozorování (resp. „detaily”, kterých jsem si já dříve nevšiml):
  • simulace je včetně zvuku (já ho mám na notebooku skoro permanentně vypnutý)
  • UDP roboti ve Speed Dreams byli ještě před Roborace
  • Roborace autíčka udp_1 až udp_20 jsou, včetně Robocar modelu, k dispozici pod složkou Roborace
  • ver0.py na Windows funguje a je to dost agresivní strategie (ve starších pokusech mi zůstávala v první zatáčce, ale s Robocar se odráží od mantinelů a i někam dojede)

19. listopad 2016 — Episode 3 (Maroko/12 autonomních okruhů)

Tentokrát díky za mailové echo od Martina … už je k vidění Inside Roborace — Episode 3:
Konečně pořádné záběry! Podle CNN Twitteru z minulého víkendu bylo sice vidět, že DevBot #1 jel v Maroku autonomně bez řidiče, ale info žádné.
Články ze včerejška:
(oba asi vychází ze stejné tiskové zprávy)
Ve zkratce:
  • DevBot #1 úspěšně dokončil 12 autonomních objezdů (bez řidiče) s tím, že v každém kole zrychloval
  • na příště plánují již „závod” dvou aut (pravděpodobně DevBot #1 a DevBot #2)

28. listopad 2016 — pyroborace - end_radius a predikce

Na poli Roborace byl minulý týden klid (jestli jsem zase něco nepřehlédnul) a tak bych alespoň zmínil, co nového s pyroborace — řízení Roborace-Dreams simulované formule programované v Pythonu.
Asi první zásadní změna je, že s demo.py už je možné jezdit po libovolném okruhu a ne nutně pouze Espie. Zbyněk vyřešil problém s offsetem tak, že teď je startovní čára vždy na pozici (0, 0, 0). Je k tomu potřeba jiná udp_Roborace.dll (viz Remove offset, fix #3, kde je detailněji řešení popsáno).
Druhý problém, který je snad již vyřešen (hrubou silou), ale zatím není v masteru, byly zatáčky s proměnlivou křivostí. Poznají se tak, že vedle radius mají v XML popisu také end radius. Jak se s tím pracuje je vidět v Roborace-Dreams zdroji, ale přiznám se, že mi to trvalo poměrně dlouho to pochopit (viz druhý pokus).
Algoritmus:
  • odhadni délku segmentu: arc * (radius + end_radius)/2
  • definuj počet dělících kroků jako podíl délky segmentu a hodnoty parametru profil steps length
  • přepočítej jednotlivé kousky tak, aby první měl poloměr radius, poslední end_radius a délka trajektorie byla v každém kousku stejná (tj. odpovídající úhel arc se pro proměnný poloměr také mění, stejně tak střed kružnice)
Výsledkem je výřez ze spirálovité křivky, kde ale každý jednotlivý úsek je stále „micro zatáčka” s pevným poloměrem.
K dalším drobnostem patří lepší počítání nejbližšího segmentu (chyba se projevila na okruhu Aalborg, kde jsou celkem divoké zatáčky) a řízení s 0.5s predikci, kdy Robocar už pěkně řeže zatáčky. S lepší regulací plynu se Robocar čas okruhu Espie snížil z 3 minut na 2:28 … ale stejně je stále na posledním místě.
Ještě doplním krátký návod od Ondry aneb „pyroborace snadno a rychle”:
git clone git@github.com:robotika/pyroborace.git
cd pyroborace
git checkout XXX
(poslední krok je nutný pouze v případě, že chcete testovat nějakou „feature větev”)
  • spustit: c:\Program Files (x86)\speed-dreams-2.2.1\bin\speed-dreams-2.exe
  • naklikat Race->Quick Race->Configure->next
  • Z competitors odebrat player
  • Pod candidates přepnout na Roborace a do competitors přidat udp1
  • Next Next Start
  • Blokne se to na čekaní na UDP
  • spustit: ver0.py
  • nebo: demo.py "c:\Program Files (x86)\speed-dreams-2.2.1\data\tracks\circuit\espie\espie.xml"
A je to!

29. listopad 2016 — sada senzorů

Dnes jenom „štěk” z Twitteru: 17 ultrasonics, 6 cameras, 5 lidars, 2 radars and 2 optical speed sensors

4. prosince 2016 — pyroborace - kreslení trasy

Na poli pyroborace je drobný posun. Předevnším už si můžete vykreslit trasu a do ní pozice auta nalogované během závodu. Kreslení je pomocí matplotlib, což je trošku „monstrum”, ale na kreslení grafů z Pythonu vřele doporučuji.
Merge kreslícího nástroje zatím probíhá zde, tj. v tuto chvíli v masteru ještě není. Já se ale zatím naučil spousty užitečných triků:
Další plán byl rozchodit logování přes WinCap, ale jelikož je komunikace pouze lokální, tak je ještě třeba Loopback a to už mi přišlo na „minimalistickou verzi” nějak nezdravě složité :-(. Dočasné řešení je tedy pouze:
log.write('{} {}\n'.format(absPosX, absPosY))
a drobné rozšíření plot.py.
A nějaké výsledky?! Co mne asi nejvíce překvapilo, jak je trajektorie po třech (resp. 2.5) kolech opakovatelná:
p.s. tak ještě video (zdroj má 4.7GB, 4806 PNG souborů, konverze pomocí upraveného img2video.py). Je to bez zvuku, i když Speed Dreams zvuk generuje … někdy příště.

13. prosince 2016 — pyroborace - AmBot Espie 1:45

Včera mne potěšil AmBot, který v mailu píše:
Posílám jen informaci o tom, že také zkouším Roborace-Dreams a pyroborace.
Díky tvému blogu na robotika.cz se mi před pár dny podařilo systém zprovoznit (na Windows 10) a funguje jak ver0.py, tak i demo.py.
Už jsem si s tím i trochu hrál a hrubou silou se mi podařilo dosáhnout času pod 5:30 (v Quick race na trati Espie). Ta hrubá síla spočívala v tom, že jsem do skriptu pro každou zatáčku zadal maximální rychlost průjezdu a k tomu udělal jednoduchý regulátor rychlosti. Funguje to docela hezky. Zjistil jsem přitom, že když nechám jet to auto moc "tvrdě" (prudké přidávání plynu, prudké brzdění a rychlé průjezdy zatáčkami), tak se "rozbije" ještě před dojetím do cíle (selže na "damage", zastaví a je odtažen mimo trať). Také jsi to už zjistil?
Každopádně chci v pokusech pokračovat. Mám v plánu dopočítávat vhodnou rychlost v zatáčkách z parametrů trati (a ne to tam mít zadané natvrdo) a také se chci pokusit vyhýbat soupeřům (zatím na ně neberu ohled a počítám s tím, že uhnou oni).
a přiložil i link na video, jako důkaz:
Na titulním snímku je i vidět Best: 01:45.129, takže můj vánoční milestone už Aleš dosáhnul!
p.s. u Alešova videa si i můžete pustit zvuk

17. prosince 2016 — Episode 4 (Michelin HQ)

Testování na okruhu Michelinu

13. leden 2017 — Nvidia Autopilot

Tomáš S. mi poslal na první pohled nevinný link http://kevinhughes.ca/blog/tensor-kart s komentářem: „Pěkný článek, umělá inteligence pro Mario Kart pomocí Tensor Flow.” Nemusíte se bát na něj kliknout, jen varování, že přes pár odkazů se dostanete ke zdrojákům a datasetu Nvidia Autopilota! Ten původní článek se snaží ovládat počítačovou hru Mario Kart s využitím neuronových sítí a Tensor Flow frameworku.
Autor ve svém blogu zmiňuje, že Later, I switched to use Nvidia’s Autopilot developed specifically for self-driving vehicles. Cože?! Má tam odkaz na github Autopilot-TensorFlow, který implementuje nápady z Nvidia článku (pdf). Aby toho nebylo úplně málo, tak dává k dispozici i 2.2GB dataset, kde naleznete 45405 JPEG obrázků a soubor data.txt obsahující referenční úhel pro zatáčení. Nevím, zda úplně přesně implementoval, co bylo v článku. Tam je to 1/r, kde r je poloměr otáčení se znaménkem a rovné jízdě odpovídá hodnota 0.
obrázek 10070.jpg z datasetu
obrázek 10070.jpg z datasetu
Nvidia pro učení použila stejný trik jako dříve švýcarská skupinka s učením drony (viz starší video od Cogito) — 3 kamery. Dopředná se učí kam má auto/drona jet/letět a levá a pravá jsou reference, pro které je třeba nějaká korekce. Nvidia ještě navíc generovala umělé pohledy s posunem z kombinace více snímků, ale základní myšlenka je stejná. Po naučení stačí už jen jedna (prostřední) kamera pro navigaci. Požadovaná reakce je sbírána ze senzoru na volantu auta.
Jestli vás to alespoň trošku vyvedlo z míry jako mne , tak toto cvičení máte skoro zadarmo. Je třeba si nainstalovat TensorFlow, k tomu ještě numpy, scipy, pillow" a opencv"" (de facto jsem vše instaloval z http://www.lfd.uci.edu/~gohlke/pythonlibs/ pro Windows a Python 3.5) a můžete nechat váš počítač zatopit. Pokud nemáte pořádnou grafickou kartu, tak to holt bude déle trvat, ale … uvidíme.
A proč to zmiňuji v tomto blogu? Nvidia je partner Roborace a řídicí algoritmy poběží na jejich DRIVE PX-2…
Ještě poznámka k velikosti zdrojového kódu: model.py má 88 řádek, train.py 55 řádek a run.py, který z video kamery určuje úhel pro zatočení, má 32 řádek. Nevím jak vás, ale mne to trošku děsí. Toto je předzvěst konce programátorů.
p.s. Udacity stejný kód použila pro svoji druhou lekci

21. leden 2017 — Episode 5


1. únor 2017 — Nvidia DRIVE PX2

Minulý týden jsem se snažil zjistit více informací k plánovanému řídicímu počítači Nvidia DRIVE PX2. Nevím, zda je to záměrné, ale je kolem toho docela guláš. Teď myslím sporné zprávy, že DRIVE PX2 má spotřebu 250W a musí být chlazený vodou vs. informace na že The new single-processor configuration of DRIVE PX 2 for AutoCruise functions —which include highway automated driving and HD mapping—consumes just 10 watts of power.
Zajímavá byla i informace, že DRIVE PX2 bude vedle Roborace používat i Tesla Motors ve všech svých autech (Model S, Model X a brzy i Model 3). To hned zvedlo diskusi na Tesla Motors Club, jak je možné dodávat počítač v ceně 15000 USD do aut, která mají stát 35000 USD?
Ono důvodem bude nejspíše více variant platformy, kde ta minimální by měla být brzy výrazně levnější, se spotřebou 10W, a na druhém konci spektra je výkoná se zdvojenou GPU i CPU jednotkou. Že se jedná spíše o platformu naznačuje i článek ZF debuts ProAI, a production self-driving system based on Nvidia’s Drive PX 2.

Představení DRIVE PX2 na loňském CESu

Product Specifications: NVIDIA DRIVE PX 2 is powered by the company's newest system-on-a-chip, featuring a GPU based on the NVIDIA Pascal™ architecture. A single NVIDIA Parker system-on-chip (SoC) configuration can process inputs from multiple cameras, plus lidar, radar and ultrasonic sensors. It supports automotive inputs/outputs, including ethernet, CAN and Flexray.
P.S. ještě bych přidal link na video, kde s tím Nvidia teprve začínala a auto, podle očekávání, dělalo pěkné skopičiny … je to jenom cca 20s předehra, pak už je prezentace, jak je to dokonalé po trénovaní 3000 mil z března 2016 …

17. únor 2017 — Zítra DevBotí duel v Buenos Aires!

Zítra se v Buenos Aires jede další kolo závodů FIA Formule E. V Čechách by to měla vysílat Sport Aréna TV (resp. na Slovensku), kdy kvalifikace je v sobotu v 15:45:
Buenos Aires  Qualifying LIVE  18/02/2017  Saturday  15:45 CET  17:10 CET
Buenos Aires  Race LIVE        18/02/2017  Saturday  19:45 CET  21:30 CET
Roborace je ale pouze doplňkový program, který ale televize vysílat neplánuje:
Schedule - Saturday 18 February 2017
8:00 am - 8:45 am: PRACTICE 1
8:55 - 9:15 am: Roborace Practice
10:00 am - 10:20 am: Qualifying Group Lottery
10:30 - 11:00 am: PRACTICE 2
12:00 pm - 12:36 pm: QUALIFYING
12:45 pm - 13.00 pm: SUPER POLE
2:00 pm - 3:00 pm: ROBORACE
1:45 pm - 2:00 pm: eRace
2:00 pm - 2:30 pm: Drivers autograph session
3.00 pm - 3:18 pm: Drivers parade
3:30 pm: GRID POSITIONING
4:00 pm FORMULA E BUENOS AIRES ePRIX RACE 1
5.00 pm: Podium ceremony
6:00 pm: Gates close
Jestli dobře počítám, tak 20-16 je časový posun jen 4h … hmm, tak to by Roborace byl snad někde ke shlédnutí mezi 18-19h. No uvidíme. Při nejhorším to bude určitě další Roborace Epizoda.

19. únor 2017 — ibeo Wide Angle Scanning (ScaLa) Sensor

Včerejší závod stál za houby, resp. já z něj nic neviděl :-(. YouTube video stream byl povolen jenom v británii (The uploader has not made this video available in your country.) a proxy přes UK mi nefungovala. Veškeré info je tedy pouze z Roborace Twitteru, konkrétně Devbot 2 while pushing the boundaries of AI had a racing incident on track, leaving Devbot 1 to win. No drivers were harmed though
Co mne ale včera potěšilo je spekulace o použitých laserových senzorech. Tipoval bych (95%), že to jsou IBEO ScaLa senzory. Uznávám, že vycházím pouze z „podobnosti krabiček”, umístění úchytů a konektoru a z obrázku z listopadu, kde pět laserů má rozsah cca slibovaných 145 stupňů.
Foto z autonomoustuff.com
Foto z autonomoustuff.com
Tento senzor jsem viděl poprvé loni na Dni chytrých aut. Moc pěkný — skenuje ve čtyřech rovinách, rozlišení 0.25 stupně a záběr zmíněných 145 stupňů. Navíc se jedná o „chytrý” senzor, což znamená že snímaná data rovnou zpracovává (viz ibeo-Object-Tracking-3.pdf).
Pro představu přikládám toto veřejné video … možná to místo poznáte … mám pocit, že jsem tam za rohem roky chodil do školy

25. únor 2017 — Episode 6 - kolize při závodu v Buenos Aires

V šesté epizodě je alespoň malý střípek toho co se minulý víkend v Buenos Aires stalo: DevBot2 narazil na pravý mantinel, zlomil přední osu a demo závod byl ukončen.

3. březen 2017 — LEGO?!

Koukal jsem se teď na video s detailními záběry Robocar z Barcelony (viz Engadget.com) a zaskočilo mne logo LEGA?! Chvíli jsem hledal a jedno podezření bylo, že původní název Roborace používalo před mnoha lety LEGO (IEEE článek z 2004).
Další nápověda je přímo na Roborace twitteru z loňského léta s pěkným komentářem Please tell me the Roborace cars aren't using Mindstorms. They are really great for kids... not so much racing cars
No a podle všeho LEGO zvažuje výrobu hraček Formula E (tři dny starý update): https://ideas.lego.com/projects/169283
Licensing: Potentially a big issue as this will need the approval of all the featured teams, their sponsors, drivers and Formula E themselves. However, Formula E's support series, Roborace, has already partnered up with Lego Speed Champions and placed the logo on the Roborace car; this means that a Roborace set is quite likely to be announced in the future. If the support series with close ties to FE decides to go for the Lego option, how long until the main series follows suit? In terms of attracting a younger audience, which is what both Formula E and Roborace set out to do, it makes perfect sense.
No čím nás ještě Roborace nepřekvapí

Send email to the editors

Your message could not be sent
but you can also reach us at

Your message was successfully sent.

You need to turn on javascript to submit this form.