<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="https://jacek.zlydach.pl/blog/tags/lego-mindstorms-feed.xml" rel="self" type="application/rss+xml"/>
    <title>Posts tagged: Lego Mindstorms - Jacek Złydach - blog</title>
    <link>https://jacek.zlydach.pl/blog/tags/lego-mindstorms.html</link>
    <lastBuildDate>Tue, 25 Jan 2022 12:54:25 +0100</lastBuildDate>
    <description>Blog of Jacek Złydach - a programmer and science enthusiast.</description>
    <generator>Regenerate2</generator>
    <managingEditor>temporal.pl@gmail.com (Jacek Złydach)</managingEditor>
    <webMaster>temporal.pl@gmail.com (Jacek Złydach)</webMaster>
    <ttl>1440</ttl>
    <copyright>© 2017, 2018, 2019, 2020, 2021, 2022, Jacek Złydach</copyright>
    <item>
      <title>Stulecie Robotów w Krakowie - Reportaż, część 2</title>
      <link>https://jacek.zlydach.pl/blog/2009-06-07-stulecie-robotow-w-krakowie-reportaz-czesc-2.html</link>
      <guid isPermaLink="true">https://jacek.zlydach.pl/blog/2009-06-07-stulecie-robotow-w-krakowie-reportaz-czesc-2.html</guid>
      <pubDate>Sun, 07 Jun 2009 18:58:39 +0200</pubDate>
      <category domain="https://jacek.zlydach.pl/blog/tags/old-blog.html">Old blog</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/cpp.html">C++</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/roboty.html">roboty</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/stulecie-robotow.html">Stulecie Robotów</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/lego-mindstorms.html">Lego Mindstorms</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/qfix.html">qfix</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/graupner-robotics.html">Graupner Robotics</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/galeria-krakowska.html">Galeria Krakowska</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/atmega128.html">ATmega128</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/reportaze.html">reportaże</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/soccerboard.html">SoccerBoard</category>
      <description><![CDATA[<em><a href="blog/2009-06-06-stulecie-robotow-w-krakowie-reportaz-czesc-1.html">(kontynuacja tematu o Festiwalu Robotów w Krakowie)</a>
<em><a href="galleries/stulecie-robotow-w-krakowie/index.html">(Stulecie Robotów - Galeria)</a></em>
(<a href="blog/2009-06-06-stulecie-robotow-w-krakowie-reportaz-czesc-1.html">&lt;&lt; poprzednia część</a>)</em>

Oto kolejna część reportażu z imprezy Stulecie Robotów. W ramach testu <a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/">plugina NextGEN Gallery</a> wrzuciłem kilka pierwszych zdjęć z tego wydarzenia. Niedługo pojawią się filmiki, stay tuned... :)

<center><strong>Starcie Drugie - Czwartek, 04.06.2009</strong></center>
Niedługo później, bo w czwartek (04.06.2009) wróciłem do Galerii by zająć się budową robotów. Przyszedłem dość późno, gdyż miałem tego dnia egzamin zerowy z Podstaw Sterowania ;). Na miejscu spotkałem jednego z chłopaków od Lego Mindstorms. Poprosiliśmy o wspomniane zestawy programowalne w C++. Okazało się, że są to <a href="http://www.graupner-robotics.de/en/robot/rc-soccerbot.html">roboty niemieckiej firmy Graupner Robotics</a> służące do zawodów w piłkę nożną. Obsługa powiedziała mi, że w Niemczech takie roboty dawane są szkołom na okres kilku miesięcy, by uczniowie mieli czas przygotować oprogramowanie, a następnie roboty biorą udział w jakiegoś rodzaju konkursie. Po konkursie roboty są zwykle zostawiane szkołom.

Roboty dostaliśmy w dość rozsypanej postaci - przez pierwsze pół godziny grzebaliśmy w pudełkach szukając zasilania i programatora do szkieletu, który zdawał się być najprostszą w pełni działającą konstrukcją. Po uruchomieniu mechaniki przyszedł czas na programowanie; odnalezienie się zajęło jakieś kolejne pół godziny. Niestety, robot po wgraniu programu wyprawiał nieopisane cuda z silniczkami. Próba rozwiązania tego problemu zajęła mi praktycznie cały czas do 19:00. Pomagał w tym <a href="http://wawszczak.pr0.pl">Stanisław</a>, który pojawił się w międzyczasie w Galerii. Robot jednak nie zaczął działać poprawnie; musieliśmy go w końcu zostawić i opuścić galerię.

<strong>Roboty Graupnera</strong>
<p><a href="old-blog/download/roboty_krakow/soccerboard_big.png" target="_blank"><img src="old-blog/download/roboty_krakow/soccerboard_small.png" alt="Układ SoccerBoard firmy qfix" style="float: right; margin-left: 15px;"></a></p>
Platforma Graupnera różni się zasadniczo od Lego Mindstorms i Fischertechnika - w przypadku dwóch ostatnich konstrukcja robota to plastikowe klocki, natomiast ten pierwszy to pełnoprawny metalowy robot zrobiony z przykręcanych / mocowanych części. Sercem układu sterującego, <a href="old-blog/download/roboty_krakow/soccerboard_big.png" target="_blank">nazwanego SoccerBoard</a>, jest procesor ATmega128. SoccerBoard pozwala na podłączenie aż sześciu różnych silników (trzy z nich typowa konstrukcja wykorzystuje do poruszania się), 8-miu wejść cyfrowych oraz 8-miu wejść analogowych. Dodatkowo pierwsze cztery wejścia analogowe i cyfrowe mogą służyć za wyjścia mocy, którymi można np. zasilać żaróweczki. Przydatnym do debugowania programów mogłaby się okazać możliwość podłączenia małego wyświetlacza LCD - gdyby ktoś na festiwalu taki wyświetlacz miał.

Roboty Graupnera oparte są o platformę <a href="http://www.qfix.de">niemieckiej firmy qfix</a>. Całość programuje się w C++ przy użyciu specjalnie przygotowanego prostego API. Razem z oprogramowaniem robota instalowany jest Programmer's Notepad, w którym proces kompilacji i programowania układu został uproszczony do naciskania klawiszy F5 i F6.


<center><strong>Starcie Trzecie - Piątek, 05.06.2009</strong></center>
<p><a href="old-blog/download/roboty_krakow/pnotepad.png" target="_blank"><img src="old-blog/download/roboty_krakow/pnotepad_small.png" alt="Jak zostałem największym idiotą Galaktyki" width="128" style="float: left; margin-right: 15px;"></a></p> Korzystając z chwili wolnego (nie mieliśmy tego dnia zajęć) udałem się do Galerii by kontynuować próby poprawnego zaprogramowania SoccerBoard'a. Analizowałem dokładnie API qfix'a i studiowałem pojedyncze bity na portach, które ustawiały funkcje mające wpływ na silniczki. Wreszcie doszło do tego, że znalazłem w Internecie SDK i zainstalowałem je na swoim laptopie. I wtedy przypadkiem odkryłem prawdziwą przyczynę błędnej pracy układu - niewielka lista rozwijana, która - jak mi się zdawało - służyła tylko do wyboru języka, dla którego kolorowana będzie składnia kontrolowała także model programowalnego chipa. Narzędzia kompilacji i nagrywania programu, dostępne pod klawiszami F5 i F6, były zależne od wyboru dokonanego na tej liście. Tak zostałem największym idiotą Galaktyki ;).

Dzięki powyższemu odkryciu udało mi się w końcu w pełni poprawnie zaprogramować robota (wszystkie hacki, które zainstalowałem w API qfix'a okazały się w tym momencie niepotrzebne ;) ). Niestety, musiałem w tym momencie opuścić Galerię ale przynajmniej było pewne, że robot Graupnera może być łatwo i przyjemnie zaprogramowany. Postanowiłem powrócić... :)

<em>Ciąg dalszy nastąpi...</em>
]]></description>
    </item>    <item>
      <title>Stulecie Robotów w Krakowie - Reportaż, część 1</title>
      <link>https://jacek.zlydach.pl/blog/2009-06-06-stulecie-robotow-w-krakowie-reportaz-czesc-1.html</link>
      <guid isPermaLink="true">https://jacek.zlydach.pl/blog/2009-06-06-stulecie-robotow-w-krakowie-reportaz-czesc-1.html</guid>
      <pubDate>Sat, 06 Jun 2009 11:06:08 +0200</pubDate>
      <category domain="https://jacek.zlydach.pl/blog/tags/old-blog.html">Old blog</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/cpp.html">C++</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/roboty.html">roboty</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/stulecie-robotow.html">Stulecie Robotów</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/fischertechnik.html">Fischertechnik</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/lego-mindstorms.html">Lego Mindstorms</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/qfix.html">qfix</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/graupner-robotics.html">Graupner Robotics</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/galeria-krakowska.html">Galeria Krakowska</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/atmega128.html">ATmega128</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/reportaze.html">reportaże</category>
      <description><![CDATA[W Galerii Krakowskiej odbywa się obecnie festiwal o nazwie &quot;Stulecie Robotów&quot;. Trwać będzie on (według moich informacji) <strong>do końca przyszłego tygodnia, tj. do niedzieli 14.06.2009</strong>. Galeria pełna jest gablot z małymi i dużymi robotami, jednak najciekawszym miejscem jest czynny codziennie w godzinach 09:00 - 19:00 (czasem 10:00 - 20:00) punkt, w którym przygotowano zestawy <a href="http://en.wikipedia.org/wiki/LEGO_Mindstorms">Lego Mindstorms</a>, <a href="http://en.wikipedia.org/wiki/Fischertechnik">Fischertechnik</a> i <a href="http://fjernstyret.dk/graupner-r1001-rc-soccerbot-p-121.html">Graupner Robotics (Soccerbot)</a> i do samodzielnego złożenia i zaprogramowania. Zwłaszcza ten ostatni &quot;zestaw&quot; jest ciekawy, gdyż wewnętrznie jest to układ ATmega128 programowany w C++.

Ponieważ jestem studentem i właśnie mam sesję, postanowiłem się pouczyć i tak zawędrowałem na wspomniany festiwal :). W najbliższych kilku postach postaram się zrelacjonować to wydarzenie. Pojawi się trochę zdjęć i filmów, których jeszcze nie zrobiłem bo byłem zbyt zajęty psuciem robotów ;)


<center><strong>Starcie Pierwsze - Wtorek, 02.06.2009</strong></center>
Po krótkim spacerze między gablotami trafiłem do 'części konstrukcyjnej', gdzie zostałem zaproszony do skorzystania z zestawów Fischertechnik. Lego Mindstorms zajęte były przez młodych chłopaków, którzy tworzyli dość ambitne konstrukcje kroczące, by następnie udać się na pobliską arenę dla robotów i przetestować je w walce. Wspomniana 'arena' to specjalna plansza, na której można testować zbudowane przez siebie roboty oraz sterować trzema robotami-zabawkami &quot;na pilota&quot;. <del datetime="2009-06-06T19:22:42+00:00">Dwa z nich przypominają transformersy :) i poruszają się na dwóch nogach,</del><ins datetime="2009-06-06T19:22:42+00:00">Jeden z nich porusza się na dwóch nogach, drugi na owadzich kończynach a</ins> trzeci to model węża. Zdjęcia i filmiki wkrótce :).

Posadzony przed klockami Fischertechnik znalazłem jakąś instrukcję i zacząłem konstrukcję podstawowego modułu jeżdżącego. Nie było to takie proste zadanie, pierwszy raz widziałem takie klocki na oczy ;). Otrzymałem procesor sterujący, baterię oraz dostęp do kabli i oprzyrządowania. Gdy robot był już gotowy, miły człowiek z obsługi festiwalu posadził mnie przy komputerze i poinstruował jak korzystać z oprogramowania. Po podpięciu procesora robota do PC przez kabel USB zaczęła się zabawa :).

<center><a href="old-blog/download/roboty_krakow/fischertechnik_1.jpg" style="padding-right: 30px;" target="_blank"><img src="old-blog/download/roboty_krakow/fischertechnik_1_small.jpg" alt="Robot Fischertechnik, widok z boku"></a><a href="old-blog/download/roboty_krakow/fischertechnik_2.jpg" style="padding-left: 30px;" target="_blank"><img src="old-blog/download/roboty_krakow/fischertechnik_2_small.jpg" alt="Robot Fischertechnik, widok z góry"></a>
<em>Robot mojej konstrukcji</em></center>

<strong>Narzędzia Fischertechnik</strong>
Narzędzia Fischertechnik - podobnie jak Lego Mindstorms - pozwalają na tworzenie aplikacji przez wyklikiwanie schematów blokowych w dedykowanej aplikacji. Program, z którego korzystałem pozwalał pracować na pięciu poziomach zaawansowania - z każdym kolejnym dostawało się do dyspozycji więcej opcji. Poziom podstawowy to bardzo prosty interfejs, w którym można wyklikać prosty program. Dostępne opcje to m.in. zaczekanie na przycisk (dokładniej: wejście cyfrowe), sterowanie pracą silnika (dokładniej: wyjścia sterującego :)). Za pomocą niektórych bloczków program mógł się rozgałęzić lub zapętlić. Kolejnym poziomem zaawansowania był poziom 'podprogramów' - w tym trybie pojawiały się dodatkowe, bardziej złożone bloczki oraz można było wyklikiwać własne funkcje (w postaci podobnych schematów blokowych), które następnie stawały się bloczkami i można było z nich korzystać w programie. Kolejne trzy poziomy to dodatkowe bloczki (m.in. operacje na zmiennych, dość zaawansowane konstrukcje logiczne) i lekkie skomplikowanie interfejsu. Niezastąpione okazało się okienko podglądu aktualnego stanu robota, dzięki któremu można było mieć zarówno podgląd wszystkich wejść analogowych i cyfrowych w czasie rzeczywistym (tak długo, jak robot był podpięty do komputera), jak i można było sterować każdym z wyjść sterujących bez konieczności wgrywania nowego programu. W całym tym procesie jedna tylko rzecz mi bardzo przeszkadzała - komputery pracowały na systemie w niemieckiej wersji językowej; nie był to wielki problem, ale za to denerwujący.

<strong>Robot</strong>
Ostatecznie wyposażyłem swojego robota w dwa przyciski, które służyły za czujniki zderzenia z przeszkodą. Następnie stworzyłem program, dzięki któremu robot 'patrolował' teren poruszając się z niewielką szybkością do przodu, a w przypadku naciśnięcia któregokolwiek z przycisków błyskawicznie odskakiwał i omijał punkt zderzenia (dokładniej cofał się, skręcał w odpowiednią stronę, reorientował i podjeżdżał - zakreślając coś na kształt dużego U). Ten prosty kod okazał się być wystarczająco dobry, by robot mógł zostać pozostawiony na arenie, gdzie toczyły się walki - potrafił poruszać się bardzo długo bez pomocy człowieka i nie blokował się (głównie dlatego, że jedno z kółek było krzywe i robot nie jechał zwykle idealnie po prostej).

Kilka słów o elementach elektronicznych w zestawach Fischertechnik, przynajmniej tych dostępnych na festiwalu. Jedynym wejściem dla robota okazał się być wspomniany przycisk. Służy on za wejście cyfrowe - ma dwa stany. Ponadto za wejście możnaby uznać pewne bliżej niezidentyfikowane urządzenie przypominające fototranzystor; nie udało mi się go jednak uruchomić. Z elementów wyjściowych dołączone były silniki oraz żarówkowe światełka. Oba te rodzaje urządzeń korzystają z tych samych wyjść. Sama płytka sterująca posiada wejścia analogowe mierzące napięcie (jedno mierzy rezystancję) i pozwala podłączyć jedynie cztery urządzenia wyjściowe (to i tak o jedno więcej niż Lego Mindstorms).

Wybiła godzina 19:00 i trzeba było się zbierać. Od obsługi dostałem informację, że mają też trzeci rodzaj robotów, programowalny w C++ i że mogą go udostępnić następnym razem, jeśli będę chciał. Ponadto z rozpędu zgubiłem na wystawie rolkę <a href="http://en.wikipedia.org/wiki/Duct_tape">Duct Tape</a> (na szczęście na wykończeniu).

<em>Ciąg dalszy nastąpi...</em>
]]></description>
    </item>
  </channel>
</rss>