Dobrý den,
potřeboval bych poradit s projektem, ve kterém robotem projíždím celé bludiště a vykresluji mapu na pc. Můj problém spočívá v tom, že nevím jak převést pohyb do souřadnic x a y.
Děkuji za rady.
Mapování bludiště robotem
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Re: Mapování bludiště robotem
V podstate to mas jednoduche - budes si zaznamenavat, kam ses otocil a jak dlouho jsi jel (pripadne jakou rychlosti). Pak z toho zpetne dopocitas trasu.
Problem je, jak urcit presne ty uhly a vzdalenosti, protoze pokud pojedes "jen tak" tak se ti ty chyby budou kumulovat.
Pokud je to bludiste pravouhle a pravidelne (nakreslene na ctvercove siti), tak je to jednoduche - pokazde kdyz dojedes ke krizovatce, tak se zaokrouhlis k ni a k nejblizsimu "pravouhlemu" smeru a tim se zbavis nepresnosti (pokud zatim nedosahly az k dalsi krizovatce).
Takze kdyz zacnes "vodorovne doprava" v bodu 0,0 a pojedes rovne (1,0, >), rovne(2,0,>), doleva(2,0,^), rovne(2,1,^), doprava (2,1,>), rovne(3,1,>) doleva (3,1,^), rovne(3,2,^), doleva(3,2,<), rovne (2,2,<), rovne(1,2,<) tak skoncis ve vzdalenosti 1 ve smeru osy X, 2 ve smeru osy Y a natoceny vodorovne doleva
kdyz jedes ctverec doprava, X se zvysi o 1, kdyz doleva, snizi se o 1, kdyz nahoru, y se zvysi o 1, kdyz dolu tak se snizi.
(Nebo si zmeris hranu ctvrece a prepoctes to na centimetry, treba ctverec bude 25x25 cm)
Problem je, jak urcit presne ty uhly a vzdalenosti, protoze pokud pojedes "jen tak" tak se ti ty chyby budou kumulovat.
Pokud je to bludiste pravouhle a pravidelne (nakreslene na ctvercove siti), tak je to jednoduche - pokazde kdyz dojedes ke krizovatce, tak se zaokrouhlis k ni a k nejblizsimu "pravouhlemu" smeru a tim se zbavis nepresnosti (pokud zatim nedosahly az k dalsi krizovatce).
Takze kdyz zacnes "vodorovne doprava" v bodu 0,0 a pojedes rovne (1,0, >), rovne(2,0,>), doleva(2,0,^), rovne(2,1,^), doprava (2,1,>), rovne(3,1,>) doleva (3,1,^), rovne(3,2,^), doleva(3,2,<), rovne (2,2,<), rovne(1,2,<) tak skoncis ve vzdalenosti 1 ve smeru osy X, 2 ve smeru osy Y a natoceny vodorovne doleva
kdyz jedes ctverec doprava, X se zvysi o 1, kdyz doleva, snizi se o 1, kdyz nahoru, y se zvysi o 1, kdyz dolu tak se snizi.
(Nebo si zmeris hranu ctvrece a prepoctes to na centimetry, treba ctverec bude 25x25 cm)
Re: Mapování bludiště robotem
Co použít Arduino kompas, tím by se úhly daly měřit poměrně slušně.
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Mapování bludiště robotem
Hehe
teď si hraji s mBootem - pohledej po internetu - někdo to už řešil,
já se na to nechci koukat - chci to řešit s mladým "sám" bez pomoci - je třeba trénovat mozek.
teď si hraji s mBootem - pohledej po internetu - někdo to už řešil,
já se na to nechci koukat - chci to řešit s mladým "sám" bez pomoci - je třeba trénovat mozek.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Mapování bludiště robotem
Dobrý den,
tyto problémy jsou celkem dobře prozkoumané a jsou různé způsoby, jak k nim přistupovat.
Zkuste pohledat Arduino and SLAM.
SLAM jsou obecně algoritmy pro současné mapování a lokalizaci robota v neznámém prostředí.
K tomo převodu pohybu na polohu. Úplně nejjednodušší možností je
a) počáteční polohu si označit jako souřadnice [0, 0]
b) natočení robota zjišťovat pomocí kompasu (tím se dá zjistit směr pohybu)
c) rychlost robota spočítáte z úhlové rychlosti otáčení motoru a obvodu pneumatik (přibližně), čas pohybu taky změříte - prostě měříte jak dlouho se ovládají kola
d) protože znáte velikost rychlosti i směr, můžete rozložit rychlost do jednotlivých os (sinus a cosinus) a z toho dopočítávat polohu
To, co jsem popsal, je velice základní algoritmus a využívá tzv. odometrie. Je celkem náchylný k chybám. Někde se ale začít musí
Potom se dají ještě kombinovat měření z různých senzorů (akcelerometr, gyroskop, kamery, ...). To už ale roste komplexita. Pokud vás to zajímá, hledejte SLAM algoritmy.
Docela pěkná práce, která mapování robotem řeší je: https://dspace.cvut.cz/handle/10467/68406
tyto problémy jsou celkem dobře prozkoumané a jsou různé způsoby, jak k nim přistupovat.
Zkuste pohledat Arduino and SLAM.
SLAM jsou obecně algoritmy pro současné mapování a lokalizaci robota v neznámém prostředí.
K tomo převodu pohybu na polohu. Úplně nejjednodušší možností je
a) počáteční polohu si označit jako souřadnice [0, 0]
b) natočení robota zjišťovat pomocí kompasu (tím se dá zjistit směr pohybu)
c) rychlost robota spočítáte z úhlové rychlosti otáčení motoru a obvodu pneumatik (přibližně), čas pohybu taky změříte - prostě měříte jak dlouho se ovládají kola
d) protože znáte velikost rychlosti i směr, můžete rozložit rychlost do jednotlivých os (sinus a cosinus) a z toho dopočítávat polohu
To, co jsem popsal, je velice základní algoritmus a využívá tzv. odometrie. Je celkem náchylný k chybám. Někde se ale začít musí
Potom se dají ještě kombinovat měření z různých senzorů (akcelerometr, gyroskop, kamery, ...). To už ale roste komplexita. Pokud vás to zajímá, hledejte SLAM algoritmy.
Docela pěkná práce, která mapování robotem řeší je: https://dspace.cvut.cz/handle/10467/68406
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů