Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Postup stavby, dotazy, úspěchy, slepé uličky a zkušenosti
Uživatelský avatar
Dex
Administrátor
Příspěvky: 759
Registrován: 16 úno 2013, 14:26

Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex » 09 říj 2015, 13:24

Zdravím,

plánuji pro mobilního robota antisrážkový systém z levných ultrazvukových dálkoměrů HC-SR04. Robot bude mít půdorys čtverce o straně cca 30 cm. Na každý vrchol bych chtěl dát dva dálkoměry v pravém úhlu vůči sobě. A optimálně ještě další dálkoměr v polovině každé strany. Celkem je to tedy 8 respektive 12 dálkoměrů.

Pro Arduino existuje šikovná knihovna NewPing. Klasické Arduino jich ale zvládne najednou obsloužit "jen" pět. Jen Arduino Mega jich zvládá patnáct, ale to zabírá dost místa :-)

A teď premýšlím, jak to udělat co nejefektivněji ;) Napadlo mne například použít dvě "klasická" Arduina a každým zpracovávat polovinu dálkoměrů. Také by šlo doplnit každý dálkoměr nějakým malým "broukem" a ty mezi sebou propojit.

Možná jsem ale něco přehlédl. Třeba nějakou desku, kompatibilní s Arduinem, která má tak akorát dostatek pinů pro dálkoměry, ale nic moc navíc.

Nemáte náhodou někdo nějaký nápad? :)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Uživatelský avatar
jrt
Příspěvky: 1195
Registrován: 17 úno 2013, 17:13

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od jrt » 09 říj 2015, 13:38

Kde jsou tvé ideje distribuované inteligence? Co třeba ke každému UZ PICAXE-08M2 a pak je všechny spojit s nadřízeným systémem jedním adresovatelným sériákem?
A pozor na to, že HC-SR04 podle mých zkušeností detekují všechno možné, jen ne překážku, protože jejich měniče strašně "šilhají".
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

Uživatelský avatar
Dex
Administrátor
Příspěvky: 759
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex » 09 říj 2015, 14:11

Však to tam píšu
Dex píše:Také by šlo doplnit každý dálkoměr nějakým malým "broukem" a ty mezi sebou propojit.
:-)

Já mám s HC-SR04 docela dobré zkušenosti. Na jednoduchou detekci jedu-li do stromu či ne to více než vyhovuje ;-)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

MartinL
Příspěvky: 101
Registrován: 24 úno 2013, 14:13

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od MartinL » 09 říj 2015, 19:36

Sice nevím jak je ta knihovna pro arduino napsaná, ale proč by nemělo být schopné jedno arduino obsloužit více než 5 sonarů? Pokud se nepletu, tak stačí jeden pin na odstartování impulsu a druhý na poslouchání echa (mám ještě někde v povědomí, že to u SRF04 dokonce šlo i na jednom pinu - pokud mě už paměť neklame?). Stejně je nutné je "odpalovat" postupně, jinak se z toho moc nezměří, tzn. že času je habaděj.
Jinak jsem zarytým zastáncem distribuce, ale není to příliš, ke každému sonaru, který už uP obsahuje ještě jeden přidávat?
Naposledy upravil(a) MartinL dne 10 říj 2015, 15:39, celkem upraveno 1 x.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 759
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex » 10 říj 2015, 10:17

Tak oprava. Podle všeho to vypadá, že je možné připojit až šest dálkoměrů :-) K tomu jak to funguje jsem zatím našel, že "to používá časovač a přerušení" ;)

Je fakt, že na normálním Arduinu prostě dojdou piny. Podívám se na to jednovodičové připojení. Podle všeho by to mohlo fungovat (http://www.instructables.com/id/Hack-an ... /?ALLSTEPS).

Jestli jste to ale někdo zkoušel, tak se pochlubte ;)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

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

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od AlesH » 10 říj 2015, 11:50

Použil jsem jednovodičové připojení HC-SR04 na obsluhu tří sonarů Arduinem. Funguje to dobře (výsledky jsem mel stejné, jako když jsem předtím měl na stejném robotu použito dvouvodičové připojení každého sonaru). Jednovodičové zapojení tedy bez rozpaků doporučuji.

Díky za toto téma (sám jsem ho chtěl založit jako první "odnož" zásad pro robotiku). Chtěl bych ho ale trochu rozšířit na obecnější diskuzi o "protisrážkovém systému", protože i u RoboTour je to jeden z hlavních problémů, který musí být dobře vyřešen (i při hromadném startu robotů) a naopak je takový systém vhodný třeba i pro Robotický den (např. v kategorii Ketchup House).

Osobně mám problém s tím, jak skutečně spolehlivě a kompletně "pokrýt" celý prostor okolo robota (do všech směrů, kam se může pohnout). Tím myslím i to, že pokud se robot může otočit na místě, tak musí "vidět" překážky i "do boku". Pokud má Ackermanovo řízení, tak by také měl vidět i překážky "těsně vedle sebe", protože o ně může "štrejchout" bokem při zatáčení.

Jak to řešíte?

Já zatím zkoušel sonary a infradálkoměry a oba mají dost úzké pásmo detekce, takže "pokrytí" je mizerné. Zkoušel jste někdo dálkoměry na servu? Jak to fungovalo?

A ještě jeden problém mne napadá. Jak se ovlivňují se sonary dvou různých robotů, které "na sebe koukají"? Testoval jste to někdo? A s jakým výsledkem?

Uživatelský avatar
Dex
Administrátor
Příspěvky: 759
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex » 11 říj 2015, 19:42

Udělal jsem v rychlosti obrázek, jak si to představuji:
4kolka_UZ.png
4kolka_UZ.png (4.68 KiB) Zobrazeno 2241 x
Pokud jde o to jednovodičové připojení, stačí propojit trigger a echo nebo je potřeba mezi ně něco dát? Jeden člověk mezi ně dává rezistor, ale nepochopil jsem proč.

O natáčení senzorů servem jsem uvažoval, ale odhaduji, že čas nutný k pohybu musí být dost na obtíž. Napadlo mne ale umístit třeba na servo kříž, na každý jeho konec ultrazvuk do jednoho ze směrů a pak tím celým pootočit o 45 stupňů. Zatím jsem to ale nezkoušel.

Infra dálkoměry jsem zkoušel a fungují dobře, ovšem nikoliv venku. Slunce je docela problém. Možná existují ale nějaké, které tím tolik netrpí?

Ovlivňování senzorů dvou robotů navzájem je zajímavá poznámka. Budu to muset zkusit nasimulovat ;)

Jinak jsou také na netu k dohledání pokusy, kdy se jedním sonarem "pípne" a ostatními se poslouchá. Jejich vzájemná poloha je známa, čili už jde jen o to, rozumně to zpracovat :D
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

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

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od AlesH » 11 říj 2015, 21:54

Mnohasonarové schéma je jasné. Přesto jsou podle mne v rozích dost široké sektory, ve kterých by překážka nebyla detekována. Pokud tím směrem nepojedeš, nebude to vadit (ale psal jsi, že principiálně můžeš jet libovolným směrem).

Jednovodičové zapojení jsem použil s rezistorem (cca 1k8). Beru to jako "bezpečnostní opatření". Signál z Arduina se pak musí připojit přímo na trigger.

Před chvílí jsem vyzkoušel vzájemné ovlivňování sonarů ze dvou robotů. Chová se to podle mého očekávání. Nepravidelně to pak detekuje "falešné překážky" které tam vůbec nejsou. Vůbec mne nenapadá, jak by se to mělo rozumně řešit. Brát to jako reálnou překážku? To by se po hromadném startu všichni roboti zastavili a už nikdy by se nerozjeli (pořád by detekovali překážky). Možná, že by se dala využít ta nepravidelnost a mohlo by se to nějak "vyfiltrovat". Víte někdo o vhodném řešení?

Ještě se zeptám, zda je opravdu nutné sonary "spouštět" postupně? Já to teď také tak dělám (pro jistotu), ale podle mých dřívějších testů byly výsledky prakticky stejné i v případě, kdy jsem všechny sonary "spouštěl" naráz (současně) a pak jsem je všechny současně "četl". Abych byl přesnější, tak do dobře fungovalo hlavně venku (na větším prostranství). V menší místnosti je moc odrazů, sonary se vzájemně ovlivňují a výsledky byly horší (přesto mi to ale připadalo dost podobné v obou metodách "spouštění" sonarů). Jaké máte praktické zkušenosti v tomto detailu?

Uživatelský avatar
Dex
Administrátor
Příspěvky: 759
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex » 11 říj 2015, 22:24

Vím, že to není dokonalé. Taky si pohrávám s myšlenkou dát do středu ultrazvuky do "kruhu". A třeba tím kruhem mírně pootáčet. Taky by šlo doplnit ultrazvuky servy a natočit je vždy do potřebných směrů. Zatím to promýšlím a doufám, že mne napadne něco dokonalého :)

Nefungovala by na "falešné překážky" metoda více měření a spočítání mediánu? Ta knihovna NewPing tuto "funkci" také nabízí. Další věc k vyzkoušení.

S tím postupným spouštěním nevím. Podle mne to není nutné, pokud se např. používají najednou sonary na dvou protilehlých stranách. Otázka ale je, jestli to půjde rozumně napsat tak, aby se stíhala dvě (či více) měření najednou.

Pořád tajně doufám, že tu je někdo, kdo už tyhle (možná slepé) cestičky prošlapal?! ;)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

micer
Příspěvky: 120
Registrován: 12 čer 2014, 19:14

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od micer » 11 říj 2015, 23:57

Ultrazvuk je pěkná věc, ale rozhodně ne jako jediný princip detekce překážek.
1/ mám tu zkušenost, že se umí zrádně odrážet na hladkých materiálech a "vidět za roh" - viz http://robodoupe.cz/2015/srf05-jak-ho-asi-neznate/ a měřit třeba místo vzdálenosti k překážce výšku stropu.
2/ vidí do materiálů a reaguje na nehomogenity - příklad: před týdnem na Auto-show jezdil robot perfektně (cca 2x2 m ohrádka), ale když se dostal do jednoho konkrétního místa v rohu (plocha cca 10x10 cm), tak se zastavil a začal točit, jako by kolem něj byly všude kolem překážky. Beton hladký, bez prasklin, na pohled vše ideální. Musela tam být v betonu bublina (řada bublin) nebo něco takového, museli jsme posunout ohrádku, v tom místě vždy selhal (i když ... bylo to selhání, nebo dokonalá funkce?)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host