LABORATORY L1.5

/DENALI/ROBAI

Robai Cyton

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.

Kontrolowanie manipulatora z poziomu języka Python

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);

		

Zakresy pozycji serwomotorów

Sprawdzone doświadczalnie, uprasza się o nieprzekraczanie.

W przypadku przekroczenia, proszę odłączyć zasilanie od manipulatora.

Nr serwomotora Minimum Maximum
0nie działa
17503350
23303750
37553350
47503350
57503350
63303750
730500