Android aplikace RoboNav

AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Android aplikace RoboNav

Příspěvek od AlesH »

Ahoj. Zajímají mě možnosti využití chytrých mobilů pro hobby robotiku, tak jsem si pro svoje potřeby napsal Android aplikaci RoboNav (s využitím knihoven OpenCv a BlueTerm). Jde o využití "senzorů" integrovaných ve smartphonu (kamera, GPS, kompas) pro vyšší úroveň řízení mobilního robota (GPS navigace podle mapy, vizuální navigace podle obrazu z kamery, komunikace s robotem pomocí bluetooth). Aplikaci jsem dotáhnul do použitelného stavu a používám ji už od roku 2014 pro navigaci svých robotů na soutěžích Robotem rovně, Roboorienteering a Robotour. Výsledky jsou solidní (i když nijak oslnivé) a myslím, že má smysl to rozvíjet dál. Navíc mne zajímá umělá inteligence a v nejbližší době bych ji chtěl zkoumat a ověřovat právě v příští verzi mojí aplikace RoboNav.

Budu rád, pokud aplikaci vyzkouší další hobby robotici a pošlou mi svoje náměty a připomínky pro další vývoj. Zdrojový kód RoboNavu je volně dostupný na https://github.com/alesholub/RoboNav (pro vývojové prostředí Eclipse). Na zkoušení ale stačí i jen samotný výsledný APK soubor na adrese https://github.com/alesholub/RoboNav/ra ... oboNav.apk (pro instalaci je třeba mít v mobilu povolenu instalaci z neznámých zdrojů a také je třeba si nejprve z Google Play nainstalovat aplikaci OpenCv Manager). Můj proprietární způsob obousměrné komunikace je popsán v dokumentaci aplikace, ale pro základní vyzkoušení nepotřebujete ani žádného robota, protože aplikace svojí navigaci zobrazuje a píše i "říká" povely, které se snaží posílat robotovi.

Screenshot z aplikace Robonav:
Obrázek

Video ukázka navigace RoboNavu je na adrese https://youtu.be/K4NAOucGbWQ (stejná jízda zachycená kamerou mimo robota je na adrese https://youtu.be/uGqbYSZYkg8 ).

Protože v programování Androidu jsem samouk, tak kód aplikace je bohužel dost nepřehledný a rozhodně není optimální. Uvítám parťáka, který by chtěl se mnou spolupracovat na vývoji RoboNavu. I tady na fóru se chci ostatních zeptat, jak to udělat, aby RoboNav byl univerzálnější (uměl komunikovat s různými "bluetooth enabled" roboty), srozumitelnější (měl jasnější uživatelské rozhraní), spolehlivější (uměl lépe analyzovat obraz z kamery a sloučit všechny dostupné informace do řídicích příkazů) a chytřejší (aby se mohl sám učit a zdokonalovat, např. v oblasti segmentace obrazu, nebo třeba při volbě vhodné soutěžní strategie).

Ohledně univerzálnosti RoboNavu mi připadá důležité mít jasné komunikační rozhraní mezi mobilem a robotem. V RoboNavu mám teď "zadrátováno" svoje vlastní rozhraní (kterému lze přizpůsobit vašeho robota) ale rád bych ho měl obecnější. Pro začátek se tedy tady na fóru ptám. Jak doporučujete definovat a udělat bluetooth komunikační rozhraní, aby se dalo přizpůsobit většině robotů (ovladatelných přes bluetooth)?

Případně se tady zeptejte na cokoliv souvisejícího s RoboNavem, nebo sem pošlete libovolné připomínky k mé aplikaci.

Aleš H.

P.S.: Právě tato aplikace by měla být mým hlavním příspěvkem do případné (virtuální) týmové spolupráce na vývoji soutěžního mobilního robota (o této spolupráci jsem před pár dny založil jiné téma na tomto fóru). Aplikaci ale samozřejmě můžete použít i pro svoje vlastní potřeby (roboty) a můžete ji i sami podle svého uvážení libovolně upravovat (mám na ní MIT licenci, kterou považuji téměř za freeware).
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Android aplikace RoboNav

Příspěvek od Dex »

Tak předně je fajn, že se to tu objevilo! ;)

a rovnou bych měl jeden nápad - co k BT přidat podporu OTG? Spousta zařízení to umí a co si budeme povídat, drát je většinou jistota. Pochopitelně jen OTG nestačí. Přes něj se pak připojí třeba nějaké FTDIčko.

Přes Vánoce si zkusím najít trochu času a prozkoumat, co to vlastně umím ;)
"all your robots are belong to us"
robodoupe.cz
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Android aplikace RoboNav

Příspěvek od DavidO »

Na tohle bude určitě jeden z nepovolanějších tady Dex. Akorát bacha, aby tě jeho firma nespolkla jako nepříjemnou konkurenci :twisted:
Každopádně tohle bys měl předvést na Robodoupěti! Už se na to těším! Nejbližší bude 6.1., pak 10.2.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Android aplikace RoboNav

Příspěvek od AlesH »

O komunikaci přes OTG už jsem také uvažoval, jenže jsem nevěděl jak na to, a navíc jsem se bál k napájenému Arduinu připojit napájené USB (z mobilu). Tak jsem to zatím odložil "na neurčito". Ale OK, podpora komunikace přes USB/OTG by pro RoboNav byla určitě užitečná pokusím se o ni.

Ohledně ukázky na Robodoupěti ještě nevím, jak na tom budu s časem, a bude záležet i na tom, jaký tam bude jiný program (přece jen bych tam rád jel i kvůli svému poučení).
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Android aplikace RoboNav

Příspěvek od Dex »

Brácha by měl dorazit, takže ti můžeme něco málo prozradit o OTG - v těch našich appkách je. Jo a brácha taky kdysi zkoušel připojit k Androidu přes OTG dvě webkamerky naráz, aby měl prostorový obraz a to taky funguje ;)

Čili program by myslím byl :lol:
"all your robots are belong to us"
robodoupe.cz
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Android aplikace RoboNav

Příspěvek od pgerla »

Shrnu to do dvou vět.
...
Bránu z pozinku to bralo jako cestu ... tudy cesta nevede.
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Android aplikace RoboNav

Příspěvek od AlesH »

Pokud máš na mysli to ukázkové video z tohoto víkendu, tak tam je opravdu vidět, že rozpoznávání cesty určitě není dokonalé. Za "cestu" to bere skoro všechno, co je "málo barevné", což je v zimě skoro všechno. Rozumně to ale funguje na jaře a v létě, kdy jsou výše zmiňované soutěže a kdy kolem cestiček bývá docela hezky zelená tráva. Zlepšení "rozpoznávání cesty" chci dosáhnout v příští verzi RoboNavu, nejspíš využitím neuronové sítě a "plánováním na mřížce", tedy zapamatováním stavu okolí robota. Jak to dopadne samozřejmě teprve uvidím.

To "demo video" tedy, prosím, berte spíš jako ukázku vzhledu aplikace a ukázku GPS navigace na stanovené průjezdní body (a to i při poměrně mizerném [nepřesném] kompasu [měření směru jízdy] - je to tedy i ukázka nedokonalosti mého robota, což uznávám).
Naposledy upravil(a) AlesH dne 04 pro 2017, 21:58, celkem upraveno 1 x.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Android aplikace RoboNav

Příspěvek od Dex »

Ona detekce cesty za všech možných podmínek není zrovna jednoduchá úloha. Kdo to zkoušel, tak ví ;) Ovšem rozhodně je to slušný začátek o tom žádná :)
"all your robots are belong to us"
robodoupe.cz
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Android aplikace RoboNav

Příspěvek od pgerla »

AlesH píše: 04 pro 2017, 21:30 Za "cestu" to bere skoro všechno, co je "málo barevné", což je v zimě skoro všechno.
...
Zlepšení "rozpoznávání cesty" chci dosáhnout v příští verzi RoboNavu, nejspíš využitím neuronové sítě.
Uvedu příklad mé cesty z bydliště do sousedního města.

Z hlíny v jíždím na vcelku pěknou asfaltku, kterou hojně využívají traktory, tak je část roku blátivá.
Z této cesty sjedu na kostkovici, která má nejen jinou barvu, ale i strukturu. Kostkovice přecházi na hodně tmavy asfalt. Dál dojedu ke kolejim, kde je uprostřed černy plast. Pak už následuje dlouhý šedý úsek až do vesmice, kde je na několika místech asfalt červeny. Z ní vede nová černá asfaltka až do vesnice kde je stará hodně světla a pak zas nová tmavá. Konečně se dostanu do sousedního města. Opět kostkovice a retardéry v jiném odstínu.

Otázka: Jakou barvu mám nastavit?

Odpověď: sleduj tvar ;)
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Android aplikace RoboNav

Příspěvek od AlesH »

Ano, díky za námět (radu). V začátcích vývoje RoboNavu jsem zkoušel i hledání linií v obraze z kamery. Bohužel se mi to moc nedařilo a vestavěné funkce knihovny OpenCv byly pro moje účely příliš pomalé. Analýza "barvy" (a "sytosti" v HSV prostoru) mi tak vyšla schůdnější. Ke sledování linií se vrátím ve svých dalších pokusech.
Odpovědět