Otázka:
Nalezení určitých pozic v místnosti?
Anarkie
2014-04-26 14:03:03 UTC
view on stackexchange narkive permalink

Mám LEGO NXT a čtvercový pokoj o rozměrech 100 x 100 cm. Jako výchozí bod bych chtěl vždy použít střed místnosti (černá skříňka). Zelená krabička bude mým parkem. Kruhy mohou být náhodně umístěnými překážkami na mé cestě. Červené jsou stěny místnosti. Cíle:

  • Při spuštění bez ohledu na to, kde se robot nachází, měl by se vrátit do středu, poté by měl být schopen na požádání zaparkovat do zeleného pole.
  • V vracející se centrum / postup domů mohou být na cestě překážky, měl bych se pokusit tyto překážky překonat a úspěšně zaparkovat. Překážky nemusí být kruhové, mohou být také čtvercové.
  • Pokud je v oblasti parku / středu překážka, měl bych uvést chybu, že není možné zaparkovat nebo přerušit parkování .. .

Nejhorší scénáře: Robot vycházející z rohu a překážky na cestě k parkování. Prozatím používám barevný senzor a ultrazvukový senzor, mohu také přidat gyroskopický senzor, ale zatím jsem o něm nehledal. Mám také RFID senzor, ale myslím, že jen se 2 transpondéry to moc nepomůže.

Moje první výzva je bez jakýchkoli překážek pro začátečníky, bude identifikovat střed robota a ví, kde je musí pocházet z náhodné polohy. Nějaké tipy?

Robot room

Jeden odpovědět:
zovits
2014-05-01 00:37:23 UTC
view on stackexchange narkive permalink

Existuje několik různých, ale souvisejících problémů.

  • Poloha Váš robot by měl vědět, kde se v místnosti nachází. Toho lze dosáhnout několika způsoby:
    • Pomocí ultrazvukového senzoru jako sonaru, jeho otáčením a ukládáním odečtů, pak výpočtem na základě známé mapy místnosti (pokud je rozložení pevné a známé v předem).
    • Sledování pohybů a výpočet z poslední známé polohy. Tato metoda závisí na tom, jak přesné jsou počáteční údaje a měření pohybu. Tím také v průběhu času ztrácíte přesnost.
    • Umístěním jedinečných značek podél podlahy nebo stěny, které robot dokáže přečíst. Nevím, jak by toho bylo možné dosáhnout pomocí LEGO dílků, ale neřekl bych, že je to nemožné. Můžete však označit dvě důležitá místa (zelené pole a střed), abyste mohli snadno zjistit, zda jste u nich.
  • Orientace Váš robot by měl také vědět, kterým směrem je otočen. Většina výše uvedených metod nabízí způsob, jak to vypočítat, ale můžete také použít senzor kompasu.
  • Znalost prostředí Váš robot by měl vědět, zda v jeho překážce není překážka způsob. Náhodné překážky nelze předem definovat, takže je budete muset nějak detekovat.
    • Pokud jsou překážky dostatečně dobré, můžete použít výše zmíněný ultrazvukový sonar.
    • Jsou-li překážky vyrobeny z vhodného materiálu, můžete zkusit pomocí barevného senzoru zjistit, zda je nějaký před robotem.
    • Teoreticky byste mohli zkusit změřit odpor motorů když se pokusíte vjet do překážky, ale to se může ukázat jako nemožné, v závislosti na schopnostech použitého hardwaru a softwaru. Tato metoda také znemožňuje použití metody přírůstkového umístění.

Vzhledem k těmto problémům je podle mého názoru nejlepším řešením jednodušší a hrubější přístup. Níže je uveden velmi abstraktní pseudokód:

  přechod na zelené cílové pole: zatímco není v cílové oblasti, zatímco není na zdi, pokud je překážka přede mnou: obejít jinde: posunout dopředu konec, zatímco / / teď jste u zdi, pohybujte se vpřed podél zdi, zatímco // teď jste v cíli směřující do středu: // za předpokladu, že jste na zelené odbočce směrem ke středu, zatímco ne ve středu: pokud je překážka před já: obejít jinde: posunout se vpřed, pokud se přesunete více, než měla cesta trvat: oznámte, že jste zasekli, zatímco // teď jste ve středu nebo ztraceni  
Rád bych svou otázku zjednodušil. Jsem ve středu, udělal jsem nějaké pohyby, jen se chci vrátit do výchozí polohy. Nemám senzor kompasu. Četl jsem, že by to bylo možné s motorovým dekódováním, ale v této oblasti jsem ztracen ...
Zdá se mi, že nenajdu související dokumentaci o načítání měření kodérů na motorech. K problému byste se ale vždy mohli přiblížit sledováním každého pohybu, který robot provedl ze známé výchozí polohy. Pak, když se musíte otočit, můžete jednoduše přehrát uložené pohyby s obrácenými rotacemi. Například pokud jste uložili F10, R90, F25, L60, F20, budete se muset otočit (L180) a poté postupovat zpět: F20, R60, F25, L90, F10.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...