podcast automatyzacja w produkcji programowanie robotów przemysłowych
Automatyzacja w Produkcji
Jak Dać Życie ROBOTOM? Programista Przemysłu | Automatyzacja w Produkcji
Loading
/

Przez ostatnie 4 odcinki, bazując na własnym doświadczeniu i stosowanych przez nas w Nixal procedurach omawiałem dla Was wszystkie kluczowe elementy jakie powinny się znaleźć w kompleksowej ofercie od integratora. Wymieniłem tam m.in. takie elementy jak Mapa procesu, Modele 2D i 3D, animacje, symulacje, cyklogram, kosztorys, harmonogram i szereg innych kwestii.

Dziś będzie o czymś całkowicie innym. Na tym kanale nie mówię tylko o robotach i robotyzacji ale o automatyzacji w ogóle, jako takiej.

Ostatecznie jednak większości z Was automatyzacji kończy się z robotami właśnie. Częściowo jest to słuszne skojarzenie. Roboty upraszczają wiele aplikacji zapewniając niezbędne ruchliwość, przez co nie trzeba projektować skomplikowanych mechanizmów. Do aplikacji z użyciem robota trzeba zatem mniej konstruktora a więcej programisty. To na programiście ciąży wtedy rozwiązanie problemu gdy coś nie działa tak jak powinno.

No właśnie… Programista robotów. Brzmi dumnie, co nie?

Dzisiejszy odcinek będzie po części o tym czym właśnie zajmuje się taki programista.

Dziś odpowiemy sobie na pytanie, które brzmi…

Jak programuje się roboty przemysłowe w 2024 roku?

Odpowiem od razu – dużo prościej niż mnie uczono tego za czasów studenckim.

Ja na studiach, choć nie jestem wcale taki stary, pierwsze spotkanie z robotem miałem ze starym poczciwym IRP-6 polskiej produkcji, który był z 10 lat starszy ode mnie. Programowało się go z użyciem panelu z przyciskami i kilkumiejscowym, ciekłokrystalicznym wyświetlaczem. Była nawet opcja napisać program na komputerze. Ale trzeba to było zrobić w DOSie i program przynieść na dyskietce.

Mówiąc to czuje się jak własna babcie ale serio mam wrażenie, że część z osób tego słuchających nie ogarnia rzeczywistości, którą tu przywołuje. I dobrze… bo dziś programowanie robotów jest proste. Dużo prostsze niż było kiedyś. A za chwilę będzie jeszcze łatwiejsze.

Zatem. Jeszcze raz. Jak programujemy roboty przemysłowe w 2024 roku?

W praktyce wyróżniamy 3 podstawowe metody programowania stosowane na co dzień w przemyśle, jedną mocno innowacyjną, która zapewne będzie zyskiwać na znaczeniu oraz szereg wariacji nt. Każdej z metod. Zatem, 3 podstawowe metody programowania robotów to:

Programowanie ręczne (Teach Pendant Programming)

To najstarsza, mocno tradycyjna metoda, w której operator fizycznie manipuluje robotem za pomocą panelu sterowania (tzw. teach pendant) do nauczenia go określonych zadań poprzez zapamiętywanie sekwencji ruchów. Choć jest czasochłonne i wymaga ekspertyzy, nadal jest popularne dla prostych zastosowań. W ten sposób czasem najłatwiej zmodyfikować na obiekcie wcześniej napisany program,

Programowanie offline (Offline Programming, OLP)

Umożliwia programowanie robotów bez zakłócania produkcji, używając oprogramowania do symulacji środowiska roboczego i zadań robota. OLP umożliwia dokładne planowanie trajektorii, optymalizację cykli roboczych i testowanie programów przed ich wdrożeniem. Można tam też załadować całe modele stanowisk i otoczenia by wcześniej wykryć ew. Problemy i kolizje.

Programowanie przez demonstrację (Programming by Demonstration, PbD)

Metoda, w której roboty uczą się poprzez naśladowanie działań wykonywanych przez ludzi. Zaawansowane czujniki i technologie wizyjne pozwalają robotom na interpretację ludzkich ruchów i przekładanie ich na własne zadania. W praktyce mamy dwie najpopularniejsze odmiany tego typu programowania. Dla robotów konwencjonalnych do robota montuje się specjalny tensometryczny „pseudo joystick” z użyciem którego operator może wodzić robotem pomiędzy poszczególnymi pozycjami. Robot oczywiście musi być wyposażony w funkcję obsługi takiego specjalnego joysticka mocowanego do kiści – czyli na końcu robota.

W cobotach sprawa jest prostsza gdyż funkcja ta jest najczęściej wbudowana. Napędy są tak skonstruowane i oprogramowane, że bez problemu, wchodząc w odpowiedni tryb pracy robota, można go tak dowolnie powyginać by ustawić pozycje w jakiej robot ma się znaleźć. Czasem można też ustawić w ten sposób całą trajektorię.

Jak mówiłem, mamy też metodę programowania, która będzie zyskiwać na znaczeniu w kolejnych latach a jest nią:

Programowanie wspomagane przez sztuczną inteligencję

( czyli AI-Assisted Programming): 

Metoda ta wykorzystuje algorytmy uczenia maszynowego i sztucznej inteligencji do automatycznego generowania lub optymalizacji kodu programu robota. Metoda ta umożliwia robotom adaptowanie się do zmieniających się warunków pracy i poprawę wydajności przez ciągłe uczenie się. Czyli tak po polsku… możliwa jest sytuacja w której robot tak długo uczy się jakiegoś zadania aż w końcu zacznie je wykonywać prawidłowo. Można na ten temat znaleźć sporo badań i kilka fajnych filmików na YT, gdzie fajnie widać jak roboty z każdą kolejną iteracją wykonują dany proces coraz lepiej.

Inna wersję programowania wspieranego AI jest automatyczne generowanie trajektorii. Tu również dostępne są rozwiązania, np. W zakresie spawania zrobotyzowanego, które na bazie porównania wzorca tudzież modelu 3D z rzeczywistym obiektem (oczywiście na bazie obrazu z kamery) są w stanie samodzielnie generować ścieżkę tj. Trajektorię ruchu robota. 

Nie żyjemy jeszcze w czasach skynetu więc nie oszukujmy się, żadne z tych rozwiązań nie jest jeszcze gotowe do pracy od razu, bez korekty ze strony człowieka. Ale z czasem, i to się pewnie zdarzy.

A teraz trochę o wariacjach nt. Programowania robotów czyli:

  1. Programowanie z użyciem języków wysokiego poziomu – Roboty przemysłowe coraz częściej programowane są za pomocą języków wysokiego poziomu, takich jak Python, co umożliwia szybsze tworzenie bardziej złożonych aplikacji, integrację z innymi systemami oraz wykorzystanie bogatych bibliotek oprogramowania. Warto bowiem zaznaczyć, że programowanie robotów w popularnych językach tj. Jak właśnie pyton nie jest niczym oczywistym. Każdy z topowych producentów tj. Fanuc, Kuka czy ABB ma swój specyficzny język i składnie programowania. Mimo, że jest tu dużo części wspólnych to jednak przeniesienie programu z jednej marki na drugą jest niemożliwe. Programowanie w językach wysokiego poziomu rozwinęło się głównie za sprawą powszechnego wykorzystania ROS przez prawie wszystkie osoby, które robią jakiekolwiek R&D w obszarze robotyki. Choć nie tylko.

No ale.. tu się zatrzymajmy na chwilę i powiedzmy sobie czym jest ten ROS.

ROS, czyli Robot Operating System, to elastyczny framework do pisania oprogramowania dla robotów. Mimo swojej nazwy, nie jest to tradycyjny system operacyjny, lecz raczej zestaw narzędzi, bibliotek i konwencji mających na celu ułatwienie zadania tworzenia złożonych i skalowalnych aplikacji robotycznych. ROS zapewnia funkcjonalności niezbędne do rozwijania aplikacji robotycznych, takie jak abstrakcja sprzętu, sterowniki urządzeń, implementacja często używanych funkcjonalności, wymiana wiadomości między procesami oraz zarządzanie pakietami. Jego modularna natura pozwala deweloperom na ponowne wykorzystywanie kodu w różnych projektach robotycznych. ROS , tak jak wspomniałem, jest szczególnie popularny wśród badaczy i deweloperów robotyki akademickiej i przemysłowej ze względu na swoje otwarte i wspierające współpracę podejście.

Istnieją różne wersje ROS, w tym ROS 1 i ROS 2. ROS 2 jest przeznaczony do zapewnienia większej wydajności, bezpieczeństwa i łatwości użycia w zastosowaniach robotycznych, w tym tych wymagających niezawodnej komunikacji w czasie rzeczywistym. Dzięki swojej elastyczności i otwartości, ROS wspiera rozwój w dziedzinie robotyki, umożliwiając szybsze tworzenie bardziej złożonych systemów robotycznych.

Żebyśmy łatwiej mogli się w tym wszystkim odnaleźć to przykład. Chyba żaden robopies jakiego oglądaliście na youtubie czy wózek typu AMR nie powstał w ciagu ostatnich lat bez użycia rozwiązania jakim jest ROS. No chyba, że ktoś była bardzo wytrwały i lubi wymyślać koło od nowa.

Wracając do naszych wariacji.

  1. Interaktywne środowiska programowania: Rozwój środowisk programistycznych z interfejsem graficznym (GUI), które ułatwiają tworzenie, testowanie i debugowanie kodu robota. Te środowiska często integrują symulację, wizualizację i narzędzia diagnostyczne, co przyspiesza rozwój aplikacji i wprowadzanie zmian.

I tu znowu zatrzymajmy się na chwilę. Mówiąc o programowaniu off-line miałem na myśli programowanie właśnie w tego typu aplikacjach. Ale możemy wymienić dwa ich typy.

Są aplikacje do programowania robotów dostarczone bezpośrednio przez producenta robota, która zapewniają wszystkie wcześniej wymienione funkcjonalności. ABB ma RobotStudio. Fanuc ma RoboGuida. Kuka ma KukaSim.

Są też bardziej zaawansowane choć często mocno toporne narzędzia, które wychodzą daleko poza samego robota ale jednocześnie, w ten czy inny sposób umożliwiają wykonanie części z tych zadań. Mam tu na myśli m.in takie programy jak Matlab czy rozbudowane narzędzia do symulacji linii produkcyjnych dostarczane przez Siemensa.

W praktyce jednak, tego typu aplikacje, szczególnie od Siemensa, stosuje się tylko przy bardzo dużych liniach i inwestycjach na dziesiątki robotów. Wygenerowanie wsadu z danymi dla takiego programu jest zbyt czasochłonne by robić to dla pojedynczego stanowiska. Trudniej by też było zauważyć z tego korzyść.

  1. Wariacja nt. Wariacji jest Programowanie oparte na chmurze: Coraz więcej platform oferuje możliwość programowania, monitorowania i zarządzania robotami przemysłowymi zdalnie za pomocą chmury. To umożliwia elastyczne zarządzanie zasobami, łatwą skalowalność i dostęp do zaawansowanych narzędzi analitycznych. Jednocześnie jednak, rozwój tej technologii jest bardzo mocno ograniczony, i słusznie, kwestiami bezpieczeństwa. Nie może bowiem dojść do sytuacji w której programista z innego kontynentu przemieszcza robota nie wiedząc czy wokół niego nie znajdują się ludzie.
  2. Wariacja ostatnia to tzw. Programowanie modułowe i komponentowe: Rozwój modułowych i komponentowych frameworków programistycznych, które umożliwiają szybkie tworzenie aplikacji poprzez ponowne wykorzystanie gotowych modułów i bibliotek, ułatwiając integrację robotów z różnorodnymi systemami i urządzeniami. W praktyce, jest to ta rzecz, która najbardziej ułatwia pracę integratorom takim jak my. Choć nie tylko. Coraz częściej można pozyskać gotowe moduły programistyczne, najczęściej bezpośrednio od producenta robota lub osprzętu towarzyszącego, które ułatwiają tworzenie całych aplikacji. Przykładem takiego rozwiązania są gotowe frameworki do paletyzacji, które sprawdzają się przy większości aplikacji i zdejmują z programisty konieczność tworzenia od nowa bardzo powtarzalnego programu.

Każda z wymienionych przeze mnie metod ma swoje mocne i słabe strony oraz najlepsze zastosowania w zależności od specyfiki zadania, wymagań dotyczących precyzji, elastyczności, oraz dostępnych zasobów czasowych i ludzkich. Rozwój technologii i algorytmów sztucznej inteligencji nieustannie wpływa na ewolucję metod programowania, otwierając nowe możliwości m.in dla dalszego rozwoju idei przemysłu 4.0.

Programowanie ręczne zapewnia wysoką precyzja, bezpośrednią kontrolę nad robotem (gdyż trzeba stać tuż koło niego z ticzpendantem w dłoni) i jest bardzo skuteczne dla prostych zadań. Jednocześnie też jest, szczególnie dla trudniejszych aplikacji, czasochłonne, wymaga obecności operatora (no właśnie), ograniczona elastyczność i jest trudne w skalowaniu dla złożonych zadań.

Programowanie offline z kolei nie zakłóca bieżącej produkcji, umożliwia dokładne planowanie i testowanie oraz zwiększa wydajność przez optymalizację trajektorii. Wymaga jednak zaawansowanego oprogramowania. Jest spora szansa, że jeśli nie widzieliśmy jeszcze stanowiska to może wystąpić rozbieżność między symulacją a rzeczywistością. Jednocześnie wymaga czasu na wdrożenie i testy – ale to jak wszystko.

Programowanie przez demonstrację (PbD) jest Intuicyjne dla operatorów, minimalizuje potrzebę znajomości języków programowania, dobrze adaptuje się do zadań wymagających subtelności ludzkiego dotyku tj. Np. spawanie. Może być też mniej precyzyjne niż metody programowania kodem, ograniczone do zadań, które można fizycznie zademonstrować. Jeśli nie mówimy o pracy z robotem to wymaga też zaawansowanych systemów sensorowych.

Programowanie wspomagane przez sztuczną inteligencję odznacza się dużym potencjałem do automatycznego generowania i optymalizacji kodu zapewniając adaptacyjność do zmieniających się warunków oraz możliwość ciągłego uczenia się i doskonalenia. Wymaga to jednak zaawansowanych danych i algorytmów AI. Występuje spore ryzyko nieprzewidzianych zachowań i może to wymagać znacznych zasobów obliczeniowych. Pamiętajmy jednak, że ta metoda to w dalszym ciągu jeszcze trochę pieśń przyszłości w powszechnym zastosowaniu przemysłowym.

Języki programowania wysokiego poziomu ułatwiają pisanie złożonego kodu, dostęp do bogatych bibliotek oraz ułatwiają integrację z innymi systemami. Przede wszystkim, nie da się ich użyć wszędzie. Najczęściej właśnie nie da się w przemyśle. Może to wymagać głębszej wiedzy programistycznej oraz potencjalnie jest mniej intuicyjne niż metody graficzne lub PbD dla nieprogramistów.

Podsumowując krótko.

Nie ma złej lub dobrej metody programowania robotów. Każda ma swoje ograniczenia, plusy i minusy. Najlepsze w tym wszystkim jest jednak to, że je wszystkie można ze sobą łączyć. Część programu można zrobić na komputerze, część z panelem lub joystickiem przy robocie a do tego jeszcze dokleić część z ROS i na końcu to wszystko zintegrować z częścią programu wygenerowaną automatycznie.

Prawie wszystko tu jest możliwe. Pamietajmy tylko o jednym… BHP. Bezpieczeństwo hamuje prace i może ograniczać zabawę ale koniec końców, robot występuje w wadze cięższej niż jakikolwiek człowiek i może wyrządzić krzywdę. Dlatego bawmy się robotyka i programujmy jak komu wygodnie. Ale z głową.

I to tyle na dziś.

Jeśli się Wam podobało to wiecie co zrobić. Zostawcie łapkę w górę i zasubskrybujcie mój kanał na YT, Spotify czy apple podcasts – gdzie Wam wygodnie i gdzie aktualnie tego słuchacie. A tymczasem, życzę Wam spokojnego dnia i do usłyszenia za tydzień.

Cześć.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *