Program tłumaczący kod z języka AS na języku C - Interpreter. Dla robota edukacyjnego firmy Astor.
Wprowadzenie

ASTOR jest partnerem technologicznym w transformacji fabryk, który odpowiedzialnie prowadzi do przemysłu przyszłości. Są liderem propagowania idei "Przemysłu 4.0" w Polsce dysponując takimi produktami jak: oprogramowanie przemysłowe, sterowniki, roboty przemysłowe i mobilne, napędy i urządzenia do zarządzania komunikacją przemysłową. Reprezentują w Polsce globalne marki, m.in. Emerson, Kawasaki Robotics, AVEVA, Epson, MiR, CyberX, Satel, Horner. Astor oferuje pomoc w doborze sprawdzonych rozwiązań dla poszczególnych branż, pomagają również sprawnie przejść przez proces zmian i osiągnąć cele biznesowe. Od wielu lat współpracują także z czołowymi polskimi uczelniami technicznymi i szkołami średnimi.

Projekt z którym zwrócili się do nas, realizowany był właśnie z myślą o edukacji przyszłych inżynierów i lepszym transferze wiedzy. Firma Astor chciała, aby uczniowie i studenci mogli od samego początku mieć dostęp do profesjonalnego sprzętu bez ogromnych nakładów finansowych, niestety nie mogli znaleźć odpowiedniego rozwiązania na rynku. Pan Marek Niewiadomski zaprojektował więc konstrukcję specjalnego robota.

ASTORINO to innowacyjny robot edukacyjny o sześciu osiach, wykonany przy użyciu technologii druku 3D. Użytkownik otrzymuje projekty 3D wszystkich podzespołów, co umożliwia samodzielne drukowanie części w przypadku uszkodzeń. Programowanie robota odbywa się w języku AS-language, analogicznie do przemysłowych robotów Kawasaki Robotics. Posiada zewnętrzny osprzęt, który można dołączyć za pomocą mechanizmu pick & place, co jest identyczne jak w przemysłowych maszynach. Wszystko to sprawia, że robot doskonale odzwierciedla środowisko przemysłowe, co czyni go idealnym narzędziem do nauki technik robotyki oraz przygotowywania się do egzaminów zawodowych. Prezentację robota oraz kurs jego obsługi można znaleźć na kanale YouTube firmy ASTOR.

Wyzwanie

Firma Astor zleciła nam stworzenia interpretera języka AS, czyli oryginalnego języka sterowania robotami Kawasaki Robotics, przekształcającego go na kod w języku C.

Program napisany w języku AS jest wgrywany do mikrokontrolera robota, na przykład za pomocą karty SD. Mikrokontroler musi przetłumaczyć ten program na język C, a następnie skompilować go z odpowiednimi bibliotekami, aby stworzyć gotowy do wykonania program. Powstały program jest uruchamiany i steruje ruchami robota. To podejście wymagało stworzenia interpretera, który minimalizuje użycie pamięci RAM i w jak największym stopniu korzysta z pamięci FLASH.

Rozwiązanie

Najważniejszym elementem tego procesu było stworzenie współpracującej ze sobą pary generatorów - leksera i parsera, które uruchamiają szkielety funkcji z języka AS. Lekser - Flex analizuje wprowadzony kod w języku AS, sprawdzając każdy znak i tworzy z nich tokeny, czyli symbole leksykalne, które następnie trafiają do parsera. Parser Bison na ich podstawie łączy je w odpowiednie reguły (można je porównać do reguł gramatycznych, pewnych zdań) i uruchamia dedykowane akcje przypisane do tych reguł. W ten sposób niezrozumiały dla robota język AS przekształcany jest na już konkretne polecenia, które trafiają do mikrokontrolera i sterują robotem. Bez tych wszystkich mechanizmów nie byłoby to możliwe.

Mikrokontroler znacząco wpłynął na złożoność projektu. Jego niewielka ilość pamięć RAM zmusiła nas do korzystania z pamięci stałej i FLASH. Ze względu na wydajność takie działania jak definiowanie zmiennych musiały odbywać się w pamięci RAM, dlatego wymagało to od nas operowania na wskaźnikach zmiennych, gdziekolwiek było to możliwe, aby zminimalizować tworzenie kopii zmiennych. Pomimo tego rozwiązania w wielu przypadkach musieliśmy decydować się również na manualne korzystanie z pamięci statycznej np. poprzez zapisywanie funkcji programu w pamięci FLASH.

Wprowadziliśmy własny system zarządzania pamięcią, tak zwany garbage collector, który potrafi zwalniać pamięć również w przypadkach nagłego zakończenia pracy programu.

Nasz kierownik o projekcie

Aby korzystanie z Astorino było jeszcze łatwiejsze i bardziej przyjazne dla osób dopiero uczących się, załączyliśmy do interpretera również system raportowania błędów we wprowadzonym kodzie AS. Linie kodu zawierające błędy składniowe i gramatyczne są identyfikowane i wypisywane.

autor Zachariasz Karpowicz, ImpiCode
icon icon

Rezultat

Rozwiązanie zostało przekazane klientowi. Firma Astor wprowadziła już do sprzedaży roboty Astorino korzystające z naszego oprogramowania. Projekt jednak jest w ciągłym rozwoju, cały czas staramy się razem z Astor usprawniać działanie interpretera i ułatwiać jego obsługę. Osoby korzystające ze wcześniejszych wersji oprogramowania Astorino otrzymują możliwość jego aktualizacji. Pierwsze uczelnie i szkoły korzystają już z robota edukacyjnego i bardzo chwalą sobie proces zarządzania nim oraz ogólne działanie.

Klient o naszej współpracy

Zespół ImpiCode w ramach współpracy w znacznym stopniu przyczynił się do rozwoju innowacyjnego rozwiązania jakim jest robot edukacyjny Astorino. Programiści ImpiCode pomogli nam w opracowaniu oprogramowania umożliwiającego programowanie naszego robota edukacyjnego w języku AS. W wyniku wykonanych prac przyszli inżynierowie mogą w prosty sposób uczyć się obsługi profesjonalnych robotów przemysłowych.

autor Marek Niewiadomski, ASTOR
icon icon
Technologie

Przy użyciu Leksera Flexgeneratora paserów  GNU Bison stworzyliśmy tłumacz języka AS na język C.

Język programowani C
GNU Bison
Kawasaki Robotics