(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby

Založil kosutoki, 23.02.2018, 08:01:46

Předchozí téma - Další téma

0 Uživatelé a 1 Host prohlíží toto téma.

kosutoki

Ahoj!

mám rozdělanou knihovnu na ovládání EV3 z jazyka Ruby. Nevyžaduje zvláštní firmware jako např. ev3dev, pracuje s originálním.
Zatím to umí velmi málo věcí, ale třeba to někoho bude zajímat už teď.

https://github.com/mvidner/lignite
https://rubygems.org/gems/lignite

Foton

Cože rubysta a Mindstorm!? Získal jsi moji pozornost.
Kdo chce hledá způsoby, kdo nechce hledá důvody.

ThomasMorta

Ruby mě zatím minulo, ale rozhodně mě zajímá veškeré rozšiřování možností EV3.

Můžete mě kdyžtak nějak stručně seznámit s přednostmi Ruby. A taky tím, jak přesně z pohledu uživatele vypadá to ruby navlečené přes klasický firmware - chápu tedy správně, že je to  něco jako "alternativní" IDE, které se potom překládá do stejných programů jako EV3-G?
Jsem AFOL a miluju řadu Nexo Knights!
Diskuse o Nexo Knights: NEXO KNIGHTS :: vlastní tvorba, modifikace, sbírky... :: Galerie mojí tvorby (hostováno na Rajce.cz)

kosutoki

Foton:

Díky. Až to bude umět něco pořádného, budu spamovat :)

ThomasMorta:

Shodou okolností Ruby zrovna slaví 25. narozeniny a tady pod tím hashtagem se sešla spousta důvodů, proč ho lidi mají rádi: https://twitter.com/search?q=%23ruby25th

Lignite není IDE. Mně se ta oficiální grafická prostředí celkem líbí (EV3 Programmer na tablety, EV3-G (Labview) na Windows), ale chyběl mi k tomu přístup přes "normální" textový jazyk, na které jsem zvyklý.

Výsledný kód jsou bytekódy interpretované oficiálním firmwarem (LMS2012), tedy obsah souborů RBF. Něco jako lmsasm, ale z vyššího jazyka: https://github.com/ev3dev/lmsasm

kosutoki


Foton

#5
Vypadá to vtipně.
Předpokládám, že řízení pohybu je skrz barevný senzor a čtverce na podlaze. V takovém případě bych zvolil spíš klasické "sledování čáry".

Ale ten samotný program je tedy tfuj velebnosti. Rozhodně se nečte dobře. Když budumít čas, zkusím to upravit.
Kdo chce hledá způsoby, kdo nechce hledá důvody.

kosutoki

Citace od: Foton kdy 26.02.2018, 09:45:27
Předpokládám, že řízení pohybu je skrz barevný senzor a čtverce na podlaze. V takovém případě bych zvolil spíš klasické "sledování čáry".

Ne, pohyb je úplně naslepo. Ten robot je standardní Bobb3e, https://www.lego.com/mindstorms/build-a-robot/bobb3e, a přestože barevný senzor se nabízí jako logické vylepšení, zatím to nebylo potřeba. Stačí zvolit standardizované prostředí (podložka z Boostu) a několik hodin kalibrovat :D

Foton

No právě. Jednou jsem stavěl robota co kreslil "prostřelené srdce" (https://www.youtube.com/watch?v=9r5CNmIwiT4) a kalibrace vydržena přesně 1 běh. Jednou ujede na jednu otočku X, příště Y.

A proč teda vždycky ten Tvůj tak couvá? Já myslel, že hledá "hranici".
Kdo chce hledá způsoby, kdo nechce hledá důvody.

kosutoki

Jé, ten Picasso je dobrý! Ale jak je dlouhý, tak se setrvačností snadno přetočí a kalibrace asi moc nepomůže.

Samozřejmě, že kalibrace naslepo má limity. Proto například jezdím na papírové podložce, abych měl stálé tření, a je to podložka z Boostu, která na rozdíl od té z EV3 má pěkné čtverce. Pěkně tuhý pásový robot je nutnost. Humanoidní Everstorm sice vypadá cool, ale na těch vrdlavých nohách je to fakt loterie, kam se otočí.

To couvání je proto, aby robot udělal pěkně vpravo-vbok uvniř čtverce. Má totiž osu otáčení mezi zadními osičkami, takže pro vycentrovaný vpravo-vbok musí popojet dopředu, otočit se, a zacouvat. Chytřejší program by stejnosměrné+protichůdné pojezdy sloučil prodloužením nebo zkrácením, ale to bude možná až v budoucí verzi.

kosutoki

Určitě znáte Jasona Allemanna z JK Brickworks.

Postavil jsem si jeho telegrafní tiskárnu http://jkbrickworks.com/telegraph-machine-and-printer/ a přepsal jsem ovládací program do Ruby, s použitím Lignitu.

Tady je k tomu pár slajdů: https://speakerdeck.com/mvidner/lignite-program-lego-mindstorms-ev3-robots-in-ruby