Kostky.org

Diskuse o stavebnicích => Technic => LEGO Robotics => Téma založeno: kosutoki kdy 23.02.2018, 08:01:46

Název: (vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: kosutoki kdy 23.02.2018, 08:01:46
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
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: Foton kdy 23.02.2018, 09:06:07
Cože rubysta a Mindstorm!? Získal jsi moji pozornost.
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: ThomasMorta kdy 23.02.2018, 13:58:41
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?
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: kosutoki kdy 23.02.2018, 14:18:51
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
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: kosutoki kdy 26.02.2018, 09:06:46
Plyšáci s tou knihovnou zadali svému robotovi, aby jim servíroval čajík.

Video: https://www.youtube.com/watch?v=0KOEvz09kkA (https://www.youtube.com/watch?v=0KOEvz09kkA)

Zdroják: https://github.com/mvidner/lignite/blob/a334ed349bcd6621c0dd9585414b6ad3eeee9fe8/examples/bobbee.rb (https://github.com/mvidner/lignite/blob/a334ed349bcd6621c0dd9585414b6ad3eeee9fe8/examples/bobbee.rb)
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: Foton kdy 26.02.2018, 09:45:27
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.
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: kosutoki kdy 26.02.2018, 10:20:55
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 (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
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: Foton kdy 26.02.2018, 10:46:50
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".
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: kosutoki kdy 26.02.2018, 11:08:33
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.
Název: Re:(vlastní) Lignite: Program LEGO Mindstorms EV3 in Ruby
Přispěvatel: kosutoki kdy 20.04.2018, 13:32:12
Určitě znáte Jasona Allemanna z JK Brickworks.

Postavil jsem si jeho telegrafní tiskárnu http://jkbrickworks.com/telegraph-machine-and-printer/ (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 (https://speakerdeck.com/mvidner/lignite-program-lego-mindstorms-ev3-robots-in-ruby)