Na komputerach w sali L1.5 zainstalowana jest biblioteka pydxl, pozwalająca obsługiwać serwomotory Dynamixel znajdujące się w manipulatorze Robai Cyton.
W manipulatorze znajduje się 8 serw, numerowanych od 0 do 7, zaczynając od podstawy, jednakże, pierwsze z nich (nr. 0) nie działa.
Pierwszym krokiem jest określenie pliku reprezentującego połączenie szeregowe z manipulatorem. Można to zrobić komendą:
ls /dev/ttyUSB* /dev/ttyACM*
Jeden z wyświetlonych plików (w idealnych warunkach - jedyny) jest poprawną ścieżką do urządzenia. Ścieżkę tę wykorzystujemy w poniższym kodzie:
from pydxl import SerialLink, Mx28 link = SerialLink(device='/dev/ttyUSB0')
Aby skomunikować się z poszczególnym serwomotorem:
servo = Mx28(identifier=1, serial_link=link)
Liczbę 1 zastępujemy liczbą między 1 a 7 odpowiadającą serwomotorowi który chcemy kontrolować. Obiekt servo pozwala na następujące akcje:
# servo.torque_enable ustawione na wartość True sprawia, że serwomotor # utrzymuje swoją pozycję. Wartość False ma działanie przeciwne. servo.torque_enable = True # servo.present_position zawiera obecną pozycję serwomotoru. # Zakres przedstawiony jest w tabelce poniżej kodu. print(servo.present_position) # servo.goal_position - do tej zmiennej można zapisać docelową wartość położenia serwomotora. # Zostanie ona natychmiastowo wprowadzona w życie. # Uważaj by nie przekroczyć zakresu! # Gdyby tak się stało, odłącz zasilanie manipulatora servo.goal_position = 2000 # Więcej informacji można uzyskać wpisując w interpereter języka Python komendę import pydxl; help(pydxl.Mx28);
Nr serwomotora | Minimum | Maximum |
0 | nie działa | |
1 | 750 | 3350 |
2 | 330 | 3750 |
3 | 755 | 3350 |
4 | 750 | 3350 |
5 | 750 | 3350 |
6 | 330 | 3750 |
7 | 30 | 500 |