Bardzo często pracując przy frezarce zachodzi potrzeba ręcznego ustawienia osi, do tego z różnych strom maszyny. Chodzenie dookoła z ogromną klawiaturą jest niewygodne, a sterowanie w powietrzu odpada. Można zrobić od zera własny kontroler oparty np. o sterownik klawiatury. Takie były nasze pierwsze koncepcje dopóki nie trafiliśmy na sterownik QjoyPad dla padów do gier komputerowych. Pod ręką mieliśmy joystick od PS3, który okazał się kompatybilny ze sterownikiem, więc zabraliśmy się do działania. Najnowszy LinuxCNC oparty jest na Debianie i na nim opisany będzie przykład instalacji i użytkowania urządzenia. Urządzenie powinno działać bez problemu na innych dystrybucjach linuxa. Instalacja jest bardzo prosta, wystarczy tylko wklepać do terminala kolejne komendy i klikać enter. Informacje dotyczące instalacji znajdziemy tutaj. http://ubuntnt.blogspot.com/2011/07/how-to-setup-sixaxis-controller-with.html Na stronie http://qjoypad.sourceforge.net/ jest do pobrania paczka z najnowszym oprogramowaniem, opisane są wszystkie wymagania oraz informacje o obsługiwanych padach.

Instalacja QjoyPad

Na początku musimy zainstalować driver do naszego przyszłego kontrolera. Możemy pobrać paczkę ze strony http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/ tam znajdziemy też informacje o obsługiwanych padach. Zamiast tego żeby było szybciej możemy wpisać w terminal komendę:

sudo apt-get install joystick

QjoyPad używa QT dlatego musimy zainstalować paczki z ich oprogramowaniem. Kopiujemy całą poniższą linijkę, wklejamy w terminal i zatwierdzamy enterem:

sudo apt-get install libqt4-core  libqt4-dev qt4-dev-tools qt4-designer  qt4-doc

W wymaganiach do poprawnego działania QjoyPad jest zawarta instalacja X Window np. z www.x.org . Aby było łatwiej możemy wklepać w terminal poniższą komendę:

sudo apt-get install libxtst6 libxtst-dev

Teraz pobieramy i instalujemy program QjoyPad. Komendą „cd” stawiamy ścieżkę dostępu do pliku pobranego ze strony głównej QjoyPad. W przykładzie folder downloads:

cd ~/downloads

Poniżej komenda rozpakuje plik qjoypad-4.1.0. W przypadku innej wersji musimy podać jej nazwę:

tar xzf qjoypad-4.1.0.tar.gz

I po ustawieniu odpowiedniej ścieżki kompilujemy nasz program:

cd qjoypad-4.1.0/src
./config
make
sudo make install

Gotowe!!! Po tej katordze czas na zabawę. My używamy pada od Playstation 3 sixaxis, czyli pełen wypas z akcelerometrami chyba w sześciu osiach :P Przed rozpoczęciem pracy warto dodać zainstalowany program do autostartu. Wchodzimy w Programy/Ustawienia/Sesja i uruchamianie. Klikamy przycisk dodaj, w nazwie wpisujemy co chcemy np. QjoyPad, a w poleceniu dodajemy ścieżkę Usr/local/bin/qjoypad. Jeżeli chcemy go uruchamiać ręcznie wystarczy że wciśniemy alt+F2 i wpiszemy w okno „qjoypad”.

 

 


Ilustracja 1: Dodanie programu qjoypad do autostartu

 

Instalacja zakończona! Czas więc przejść do skonfigurowania programu. Nie polecam używania przycisku "quick set" do konfigurowania klawiszy w sixaxis. Do przycisków dość łatwo przypisują się czułe osie z akcelerometrami.

 

Ilustracja 2: Okno główne programu QjoyPad

 

W trakcje konfigurowania osi (axis) możemy ustawić suwakami jej czułość maksymalną i minimalną. Osie mogą sterować przyciskami lub myszą. W przypadku przycisków nie mamy żadnych dodatkowych ustawień, natomiast dla myszy można ustawić szybkość, czułość oraz funkcję działania: liniowa, kwadratowa, potęgowa, itp.

 

Ilustracja 3: Konfiguracja osi w programie QjoyPad

 

Ustawienie przycisków (buttons) jest prostsze. Wybieramy tylko przycisk na klawiaturze któremu ma odpowiadać klawisz pada. Opcjonalnie możemy zaznaczyć dwa pola, które zmieniają odpowiedź na kliknięcie:

  • STICKY – klawisz po wciśnięciu „przykleja się”, czyli trzyma, a po ponownym wciśnięciu puszcza,

  • RAPID FIRE – pulsowanie przycisku, szybkie przełączanie do, gier typu strzelanki.

 

Ilustracja 3: Konfiguracja przycisku w programie QjoyPad.

 

Dla ułatwienia poniżej znajduje się tabelka z rozpiską wszystkich klawiszy pada sixaxis i przykładowe przypisanie przycisku.

 

Konfiguracja osi i przycisków dla pada Playstation 3

Klawisz lub oś w QjoyPad

Klawisz lub oś w sixaxis

Przykładowa funkcja w programie

Opis działania

AXIS1

Lewy analog poziomo

Mouse (Hor.)

Ruch myszy poziomy

AXIS2

Lewy analog pionowo

Mouse (Vert.)

Ruch myszy pionowy

AXIS3

Prawy analog poziomo

No key, No key

-, -

AXIS4

Prawy analog pionowo

KP_Page up(9), KP_Page down(3)

Ruch osi Z góra, dół

Axis 24

Ruch padem prawo/lewo

KP_5, KP_7

Klawisze 5, 7

Axis 25

Ruch padem przód/tył

ENTER, ESC

ENTER, ESC

Axis 26

Ruch padem góra/dół

No key, No key

-, -

Axis 27

Obrót padem wokół osi

No key, No key

- ,-

B1

SELECT

r

Start programu

B2

Przycisk lewy analog

LEFT MOUSE BUTTON

Lewy klik myszą

B3

Przycisk prawy analog

l

Ignoruj zakresy

B4

START

F9

Start/stop wrzeciona

B5

UP

KP_UP(8)

Ruch osią y w górę

B6

RIGHT

KP_RIGHT(6)

Ruch osią x w prawo

B7

DOWN

KP_DOWN(2)

Ruch osią y w dół

B8

LEFT

KP_LEFT(4)

Ruch osią x w lewo

B9

L2

c

Ruch ciągły osią

B10

R2

k

Zmniejszenie podziału kroku

B11

L1

F2

Strat/stop LinuxCNC

B12

R1

i

Zwiększenie podziału kroku

B13

Trójkąt

2

Zwiększenie prędkości osi

B14

Kółko

KP_0

Czyszczenie ekranu

B15

X

1

Zmniejszenie prędkości osi

B16

Kwadrat

END

Ustawienie zakresu wybranej osi

B17

Guzik PlayStation

HOME

Bazowanie wybranej osi

 

Przy konfiguracji jak w tabeli mamy dostęp do wszystkich ważnych funkcji maszyny, a dodatkowo przez wykorzystanie klawiszy numerycznych do ruchu osi, do wszystkich cyfr od 0 do 9. Musimy tylko zapamiętać gdzie je przypisaliśmy. Ruchem do przodu zatwierdzamy wybór, natomiast w tył anulujemy. Joystickiem analogowym prawym można sterować tylko osią Z w górę i dół. Ustawienie innych klawiszy pod lewo prawo powodowało dużą niestabilność w odczycie. Do przycisku w tym analogu jest przypisany klawisz „l” czyli ignorowanie limitów, używany najczęściej gdy oś jest zablokowana. Na wszelki wypadek mamy możliwość sterowania myszką i dostępny lewy przycisk.

Aby sterowanie frezarką w ten sposób było możliwe, będziemy musieli zmodyfikować nieco nasz plik axis z LinuxCNC. W debianie wciskamy alt + F2 i wpisujemy gksu Thunar, po wpisaniu hasła otworzy nam się przeglądarka plików z uprawnieniami root'a (administratora). Szukamy w katalogu systemu usr/bin pliku axis. Otwieramy plik w edytorze gedit, ponieważ jest najwygodniejszy w obsłudze. W Debianie nie jest zainstalowany standardowo więc wpisujemy w terminal:

sudo apt-get install gedit

Po otworzeniu pliku w edytorze gedit zmieniamy definicje klawiszy, aby wygodnie obsługiwać się naszym padem. W pliku axis szukamy linijek:

1. root_window.bind("<Escape>", commands.task_stop)
2. root_window.bind("i", lambda event: jogspeed_incremental())
3. root_window.bind("I", lambda event: jogspeed_incremental(-1))
4. root_window.bind("<Home>", commands.home_axis)
5. root_window.bind("<KP_Home>", kp_wrap(commands.home_axis, "KeyPress"))
6. root_window.bind("<Control-Home>", commands.home_all_axes)
7. root_window.bind("Control-k", commands.clear_live_plot) 

Konieczna jest zmiana wszystkich użytecznych klawiszy aby dało się je wcisnąć bez SHIFT lub CTRL. Czyli klawisz „duże I” zmienimy na „k”, „ctrl+k” na zero numeryczne, dodatkowo bazowanie wszystkich osi można ustawić na po prostu „Home” a pojedynczej na „ctrl+Home”. Klawisz Escape wyłączamy z działania, aby nie przerywał pracy przy ruchu padem w tył. Wprowadzamy zmiany do linijek:

1. root_window.bind("<Escape>", "#nothing")
2. root_window.bind("i", lambda event: jogspeed_incremental())
3. root_window.bind("k", lambda event: jogspeed_incremental(-1))
4. root_window.bind("<Home>", commands.home_all_axes )
5. root_window.bind("<KP_Home>", kp_wrap(commands.home_all_axes, "KeyPress"))
6. root_window.bind("<Control-Home>", commands.home_axis)7. root_window.bind("KP_0", commands.clear_live_plot)

 

Wygodna też będzie ustawienie zmiany prędkości przejazdu za pomocą dwóch klawiszy np. „1” zmniejsza prędkość oraz „2” zwiększa prędkość. Zmieniamy zawartość funkcji activate_axis_or_set_feedrate(n):

def activate_axis_or_set_feedrate(n):
ustawiona_predkosc = widgets.feedoverride.get()
if n == 0:
set_feedrate(0)
if n == 1:
ustawiona_predkosc -= 5
if ustawiona_predkosc < 0:
ustawiona_predkosc = 0
set_feedrate(ustawiona_predkosc)
if n == 2:
ustawiona_predkosc += 5
if ustawiona_predkosc > 100:
ustawiona_predkosc = 100
set_feedrate(ustawiona_predkosc)
if n>2:
set_feedrate(n*10)

 

W ten sposób mamy w pełni funkcjonalny kontroler do naszej maszyny. Pełne sterowanie w 3 osiach, regulacja prędkości, skoku, bazowanie, ustawienie offset'ów, włączenie wrzeciona. Do tego dostęp do pełnej klawiatury numerycznej, zatwierdzanie wyboru, anulowanie. Jedyną wadą jest spora cena nowych padów do PS3, ale zawsze można kupić coś używanego. Po skonfigurowaniu bluetooth pad można używać jako bezprzewodowy, my tego jeszcze nie zrobiliśmy. Czego chcieć więcej od takiego małego, poręcznego kontrolera?

{jcomments on}