Używając RoboDK można zasymulować każdy zautomatyzowany proces. Kiedy dana symulacja w trybie offline działa tak jak sobie tego życzymy, możemy bardzo łatwo wygenerować program właściwy dla kontrolera naszego robota.
Ten artykuł pomoże przybliżyć proces powstania symulacji z dwoma robotami oraz przenośnikiem taśmowym.
Jak widzimy powyżej zainstalowane są dwa UR10A z uchwytami. Jeden robot ustawia detale na przekaźniku, drugi je zdejmuje i układa na stole. Drugi robot jest kontrolowany przez skrypt napisany w języku Python. Skrypty w RoboDK służą do np.: sprawdzania obecności, odległości obiektów zbliżających się do uchwytu robota. Narzędzie do symulacji, symuluje cały czas zamykanie się i otwieranie uchwytu poprzez nieustanne sprawdzanie czy detal zbliżył się do celu. Inny skrypt symuluje ruch podajnika, korzystając z API oprogramowania. Dzięki temu skrypty są uniwersalne – zmieniamy aby podajnik (bryła, wymiar). Zacznijmy od otwarcia biblioteki online.
Znajduję się tutaj ogromny zbiór robotów, narzędzi itp. potrzebnych nam do zaprojektowania ruchów robota. Wszystko jest posortowane poprzez typ, markę oraz np.: ilość osi ramion.
Musimy wczytać dwa roboty, stół, podajnik, uchwyty, dodatkowe układy współrzędnych (dla stołu, oraz części, które będziemy przenosić). Za pomocą funkcji „złap i upuść” oraz zmianą wartości układów współrzędnych ustawiamy obiekty
Następnie nadajemy cel (target) dla ruchów robotów poprzez ustawienie ramiona robota na danej pozycji oraz wstawieniu celu ruchu. Wybieramy robota, tworzymy targety w odpowiednim układzie. Targety możemy przestawiać pomiędzy układami dowolnie i kiedy chcemy. Jeśli wybierzemy target z listy robot najedzie na daną pozycję. Klikając podwójnie na robota otworzy nam się boczny panel, którym możemy sterować ruchami robota w każdej osi.
Jeśli aktualna konfiguracja ustawienia robota w punkcie nam się nie podoba można ją łatwo zmienić z dostępnych w danym położeniu.
Musimy powtórzyć kroki ustawienia targetów dla podajnika (tak samo jak w przypadku stołu). Kolejne targety przypisujemy do konkretnych robotów, zmieniamy ich nazwy oraz układy w których są.
Po pokonaniu krok wyżej wymienionych kroków przechodzimy do tworzenia programów. Tworzymy program główny, w którym wszystko zostanie przechowywane, podprogram do resetowania położenia obiektów. Program główny również posłuży nam do rozpoczęcia symulacji takich jak: makra w Pythonie, rozpoczęcia programów w obu robotach – jeden nakładania obiektów na podajnik a drugi ich zdejmowania, ruchu samego podajnika.
Po tych zabiegach możemy skupić się na sekwencji ruchów pierwszego robota to znaczy zabrania obiektu ze stołu i ustawieniu go na podajniku. Zaczynamy od ustawienia wejść/wyjść w celu chwytu. Za każdym razem klikając na obiekt możemy zadać robotowi ruch do niego, oraz wstawić nowy target, który posłuży nam do chwytu. Potem tworzymy kolejny target oraz ruch do niego w celu przemieszczenia się robota. Podczas takich operacji często będą pojawiały się błędy położenia (kątów). Rozwiązaniem jest delikatna zmiana położenia targetu albo zmiana konfiguracji robota w danym położeniu/ruchu.
Gdy już sobie z tym poradzimy dodajemy ruchy zamknięcia oraz otwarcia uchwytu. W każdym momencie możemy przetestować ruch i działanie funkcji.
Teraz musimy dodać ruch przeniesienia obiektu na podajnik oraz przetestować otwarcie uchwytu. Gdy już to zrobimy możemy przetestować tę część symulacji. Jeśli wszystko zrobiliśmy poprawnie robot zabierze obiekt ze stołu i postawi na podajniku, następnie obiekt zostanie przewieziony przez podajnik do drugiego robota.
nam jeszcze zasymulować pracę drugiego robota, który detal będzie zabierał z podajnika i stawiał na stole. Procedura jest analogiczna jak w przypadku tworzenia ruchów pierwszego robota. Jedyną różnicą będzie jedynie to, że drugi robot zaczeka na detal przed podajnikiem. Do zasymulowania takiej akcji potrzebujemy programu, który „zaczeka robotem”. Zablokuje on nam ruch robota, dopóki obiekt nie będzie blisko uchwytu. Zakładamy, że w tym miejscu jest czujnik dający sygnał o pojawieniu się obiektu w określonym położeniu.
Trzeba powiedzieć, że targety mogą być wspólne dla obydwu robotów, więc do tworzenia ruchu drugiego robota wykorzystamy to co stworzyliśmy wcześniej. Różnica polega na tym, że tym końcowym ruchem będzie otwarcie uchwytu w celu puszczenia obiektu. Po stworzeniu ruchów drugiego robota pozostaje nam zasymulowanie ruchów obydwu robotów oraz wygenerowanie programu.