bam.dynamixel.dynamixel#

Attributes#

Classes#

DynamixelActuatorV1

DynamixelXL320

Controller for the XL-320 servo motor.

Module Contents#

bam.dynamixel.dynamixel.ADDR_TORQUE_ENABLE = 24#
bam.dynamixel.dynamixel.ADDR_P_GAIN = 28#
bam.dynamixel.dynamixel.ADDR_GOAL_POSITION = 30#
bam.dynamixel.dynamixel.ADDR_PRESENT_POSITION = 36#
bam.dynamixel.dynamixel.ADDR_PRESENT_SPEED = 38#
bam.dynamixel.dynamixel.ADDR_PRESENT_LOAD = 40#
bam.dynamixel.dynamixel.ADDR_PRESENT_VOLTAGE = 42#
bam.dynamixel.dynamixel.ADDR_PRESENT_TEMPERATURE = 43#
bam.dynamixel.dynamixel.XL320_ADDR_CW_ANGLE_LIMIT = 6#
bam.dynamixel.dynamixel.XL320_ADDR_CCW_ANGLE_LIMIT = 8#
bam.dynamixel.dynamixel.XL320_ADDR_CONTROL_MODE = 11#
bam.dynamixel.dynamixel.XL320_ADDR_MAX_TORQUE = 15#
bam.dynamixel.dynamixel.XL320_ADDR_TORQUE_ENABLE = 24#
bam.dynamixel.dynamixel.XL320_ADDR_LED = 25#
bam.dynamixel.dynamixel.XL320_ADDR_D_GAIN = 27#
bam.dynamixel.dynamixel.XL320_ADDR_I_GAIN = 28#
bam.dynamixel.dynamixel.XL320_ADDR_P_GAIN = 29#
bam.dynamixel.dynamixel.XL320_ADDR_GOAL_POSITION = 30#
bam.dynamixel.dynamixel.XL320_ADDR_MOVING_SPEED = 32#
bam.dynamixel.dynamixel.XL320_ADDR_TORQUE_LIMIT = 35#
bam.dynamixel.dynamixel.XL320_ADDR_PRESENT_POSITION = 37#
bam.dynamixel.dynamixel.XL320_ADDR_PRESENT_SPEED = 39#
bam.dynamixel.dynamixel.XL320_ADDR_PRESENT_LOAD = 41#
bam.dynamixel.dynamixel.XL320_ADDR_PRESENT_VOLTAGE = 45#
bam.dynamixel.dynamixel.XL320_ADDR_PRESENT_TEMPERATURE = 46#
bam.dynamixel.dynamixel.XL320_ADDR_MOVING = 49#
bam.dynamixel.dynamixel.XL320_ADDR_HW_ERROR_STATUS = 50#
bam.dynamixel.dynamixel.XL320_RESOLUTION = 1023#
bam.dynamixel.dynamixel.XL320_RANGE_DEG = 300.0#
bam.dynamixel.dynamixel.XL320_CENTER = 512#
class bam.dynamixel.dynamixel.DynamixelActuatorV1(port: str, id: int = 1)#
id = 1#
portHandler#
packetHandler#
set_p_gain(gain: int)#
set_torque(enable: bool)#
set_goal_position(position: float)#
read_data()#
class bam.dynamixel.dynamixel.DynamixelXL320(port: str, id: int = 1)#

Controller for the XL-320 servo motor.

The XL-320 uses Protocol 2.0 only and has a 10-bit position encoder covering a 300° range (0 to 1023 raw, centre = 512 ≡ 0 rad).

Parameters:
  • port – Serial port, e.g. "/dev/ttyUSB0".

  • id – DYNAMIXEL ID (default 1).

id = 1#
portHandler#
packetHandler#
set_torque(enable: bool)#

Enable or disable motor torque.

set_p_gain(gain: int)#

Set the proportional (P) gain (0–254).

set_i_gain(gain: int)#

Set the integral (I) gain (0–254).

set_d_gain(gain: int)#

Set the derivative (D) gain (0–254).

set_pid_gains(p: int, i: int, d: int)#

Set P, I and D gains in one call (values 0–254 each).

set_goal_position(position: float)#

Set goal position.

Parameters:

position – Target angle in radians. Acceptable range: [-150°, +150°][-2.618, +2.618] rad.

set_moving_speed(speed_rpm: float)#

Set moving speed in Joint Mode.

Parameters:

speed_rpm – Speed in RPM (0 = maximum, 114 = approx. max). The sign is ignored; always positive in joint mode.

set_led(color: int)#

Set the LED colour using a RGB bitmask.

Parameters:

color – Bitmask – Red=1, Green=2, Blue=4 (combinations allowed, 0=off).

read_data() dict#

Read present position, speed, load, input voltage and temperature.

Returns a dict with keys: position (rad), speed (rad/s), load (signed, 0.1 % units), input_volts (V), temp (°C).

Note: addresses 37–42 are contiguous; 43–44 are unused; 45–46 are voltage and temperature. Two separate reads are performed.