Commit 79e67cc7 authored by Anders Blomdell's avatar Anders Blomdell
Browse files

Initial structure and HTML scraper

parent aedf639c
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class 2XC430_W250(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=1160),
Row(name='model_information', address=2, size=4, default=None),
Row(name='firmware_version', address=6, size=1, default=None),
Row(name='id', address=7, size=1, default=None),
Row(name='baud_rate', address=8, size=1, default=1),
Row(name='return_delay_time', address=9, size=1, default=250),
Row(name='drive_mode', address=10, size=1, default=0),
Row(name='operating_mode', address=11, size=1, default=3),
Row(name='secondary_id', address=12, size=1, default=255),
Row(name='protocol_type', address=13, size=1, default=2),
Row(name='homing_offset', address=20, size=4, default=0),
Row(name='moving_threshold', address=24, size=4, default=10),
Row(name='temperature_limit', address=31, size=1, default=80),
Row(name='max_voltage_limit', address=32, size=2, default=160),
Row(name='min_voltage_limit', address=34, size=2, default=60),
Row(name='pwm_limit', address=36, size=2, default=885),
Row(name='velocity_limit', address=44, size=4, default=275),
Row(name='max_position_limit', address=48, size=4, default=4095),
Row(name='min_position_limit', address=52, size=4, default=0),
Row(name='shutdown', address=63, size=1, default=52)
]
RAM = [
Row(name='torque_enable', address=64, size=1, default=0),
Row(name='led', address=65, size=1, default=0),
Row(name='status_return_level', address=68, size=1, default=2),
Row(name='registered_instruction', address=69, size=1, default=0),
Row(name='hardware_error_status', address=70, size=1, default=0),
Row(name='velocity_i_gain', address=76, size=2, default=1920),
Row(name='velocity_p_gain', address=78, size=2, default=100),
Row(name='position_d_gain', address=80, size=2, default=0),
Row(name='position_i_gain', address=82, size=2, default=0),
Row(name='position_p_gain', address=84, size=2, default=700),
Row(name='feedforward_2nd_gain', address=88, size=2, default=0),
Row(name='feedforward_1st_gain', address=90, size=2, default=0),
Row(name='bus_watchdog', address=98, size=1, default=0),
Row(name='goal_pwm', address=100, size=2, default=None),
Row(name='goal_velocity', address=104, size=4, default=None),
Row(name='profile_acceleration', address=108, size=4, default=0),
Row(name='profile_velocity', address=112, size=4, default=0),
Row(name='goal_position', address=116, size=4, default=None),
Row(name='realtime_tick', address=120, size=2, default=None),
Row(name='moving', address=122, size=1, default=0),
Row(name='moving_status', address=123, size=1, default=0),
Row(name='present_pwm', address=124, size=2, default=None),
Row(name='present_load', address=126, size=2, default=None),
Row(name='present_velocity', address=128, size=4, default=None),
Row(name='present_position', address=132, size=4, default=None),
Row(name='velocity_trajectory', address=136, size=4, default=None),
Row(name='position_trajectory', address=140, size=4, default=None),
Row(name='present_input_voltage', address=144, size=2, default=None),
Row(name='present_temperature', address=146, size=1, default=None),
IndirectRow(name='indirect_address', addresses=[range(168, 224, 2), range(578, 634, 2)], size=2),
IndirectRow(name='indirect_data', addresses=[range(224, 252), range(634, 662)], size=1)
]
PROTOCOL = dynamixel.protocol.Protocol2
def __init__(self, id):
super(2XC430_W250, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class 2XL430_W250_T(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=1090),
Row(name='model_information', address=2, size=4, default=None),
Row(name='firmware_version', address=6, size=1, default=None),
Row(name='id', address=7, size=1, default=None),
Row(name='baud_rate', address=8, size=1, default=1),
Row(name='return_delay_time', address=9, size=1, default=250),
Row(name='drive_mode', address=10, size=1, default=0),
Row(name='operating_mode', address=11, size=1, default=3),
Row(name='secondary_id', address=12, size=1, default=255),
Row(name='protocol_type', address=13, size=1, default=2),
Row(name='homing_offset', address=20, size=4, default=0),
Row(name='moving_threshold', address=24, size=4, default=10),
Row(name='temperature_limit', address=31, size=1, default=72),
Row(name='max_voltage_limit', address=32, size=2, default=140),
Row(name='min_voltage_limit', address=34, size=2, default=60),
Row(name='pwm_limit', address=36, size=2, default=885),
Row(name='velocity_limit', address=44, size=4, default=250),
Row(name='max_position_limit', address=48, size=4, default=4095),
Row(name='min_position_limit', address=52, size=4, default=0),
Row(name='shutdown', address=63, size=1, default=52)
]
RAM = [
Row(name='torque_enable', address=64, size=1, default=0),
Row(name='led', address=65, size=1, default=0),
Row(name='status_return_level', address=68, size=1, default=2),
Row(name='registered_instruction', address=69, size=1, default=0),
Row(name='hardware_error_status', address=70, size=1, default=0),
Row(name='velocity_i_gain', address=76, size=2, default=1800),
Row(name='velocity_p_gain', address=78, size=2, default=100),
Row(name='position_d_gain', address=80, size=2, default=2000),
Row(name='position_i_gain', address=82, size=2, default=0),
Row(name='position_p_gain', address=84, size=2, default=640),
Row(name='feedforward_2nd_gain', address=88, size=2, default=0),
Row(name='feedforward_1st_gain', address=90, size=2, default=0),
Row(name='bus_watchdog', address=98, size=1, default=0),
Row(name='goal_pwm', address=100, size=2, default=None),
Row(name='goal_velocity', address=104, size=4, default=None),
Row(name='profile_acceleration', address=108, size=4, default=0),
Row(name='profile_velocity', address=112, size=4, default=0),
Row(name='goal_position', address=116, size=4, default=None),
Row(name='realtime_tick', address=120, size=2, default=None),
Row(name='moving', address=122, size=1, default=0),
Row(name='moving_status', address=123, size=1, default=0),
Row(name='present_pwm', address=124, size=2, default=None),
Row(name='present_load', address=126, size=2, default=None),
Row(name='present_velocity', address=128, size=4, default=None),
Row(name='present_position', address=132, size=4, default=None),
Row(name='velocity_trajectory', address=136, size=4, default=None),
Row(name='position_trajectory', address=140, size=4, default=None),
Row(name='present_input_voltage', address=144, size=2, default=None),
Row(name='present_temperature', address=146, size=1, default=None),
IndirectRow(name='indirect_address', addresses=[range(168, 224, 2), range(578, 634, 2)], size=2),
IndirectRow(name='indirect_data', addresses=[range(224, 252), range(634, 662)], size=1)
]
PROTOCOL = dynamixel.protocol.Protocol2
def __init__(self, id):
super(2XL430_W250_T, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class AX_12A(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=12),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=1),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=1023),
Row(name='temperature_limit', address=11, size=1, default=70),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=140),
Row(name='max_torque', address=14, size=2, default=1023),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=1),
Row(name='ccw_compliance_margin', address=27, size=1, default=1),
Row(name='cw_compliance_slope', address=28, size=1, default=32),
Row(name='ccw_compliance_slope', address=29, size=1, default=32),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=32)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(AX_12A, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class AX_12W(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=300),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=1),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=1023),
Row(name='temperature_limit', address=11, size=1, default=70),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=140),
Row(name='max_torque', address=14, size=2, default=1023),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=4),
Row(name='ccw_compliance_margin', address=27, size=1, default=4),
Row(name='cw_compliance_slope', address=28, size=1, default=64),
Row(name='ccw_compliance_slope', address=29, size=1, default=64),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=32)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(AX_12W, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class AX_18A(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=18),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=1),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=1023),
Row(name='temperature_limit', address=11, size=1, default=75),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=140),
Row(name='max_torque', address=14, size=2, default=983),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=1),
Row(name='ccw_compliance_margin', address=27, size=1, default=1),
Row(name='cw_compliance_slope', address=28, size=1, default=32),
Row(name='ccw_compliance_slope', address=29, size=1, default=32),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=32)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(AX_18A, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class DX_113(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=113),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=34),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=1023),
Row(name='temperature_limit', address=11, size=1, default=85),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=190),
Row(name='max_torque', address=14, size=2, default=1023),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=0),
Row(name='ccw_compliance_margin', address=27, size=1, default=0),
Row(name='cw_compliance_slope', address=28, size=1, default=32),
Row(name='ccw_compliance_slope', address=29, size=1, default=32),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=32)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(DX_113, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class DX_116(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=116),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=34),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=1023),
Row(name='temperature_limit', address=11, size=1, default=85),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=190),
Row(name='max_torque', address=14, size=2, default=1023),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=0),
Row(name='ccw_compliance_margin', address=27, size=1, default=0),
Row(name='cw_compliance_slope', address=28, size=1, default=32),
Row(name='ccw_compliance_slope', address=29, size=1, default=32),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=32)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(DX_116, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class DX_117(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=117),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=34),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=1023),
Row(name='temperature_limit', address=11, size=1, default=80),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=190),
Row(name='max_torque', address=14, size=2, default=1023),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=1),
Row(name='ccw_compliance_margin', address=27, size=1, default=1),
Row(name='cw_compliance_slope', address=28, size=1, default=32),
Row(name='ccw_compliance_slope', address=29, size=1, default=32),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=32)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(DX_117, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class EX_106+(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=107),
Row(name='firmware_version', address=2, size=1, default=None),
Row(name='id', address=3, size=1, default=1),
Row(name='baud_rate', address=4, size=1, default=34),
Row(name='return_delay_time', address=5, size=1, default=250),
Row(name='cw_angle_limit', address=6, size=2, default=0),
Row(name='ccw_angle_limit', address=8, size=2, default=4095),
Row(name='drive_mode', address=10, size=1, default=0),
Row(name='temperature_limit', address=11, size=1, default=80),
Row(name='min_voltage_limit', address=12, size=1, default=60),
Row(name='max_voltage_limit', address=13, size=1, default=240),
Row(name='max_torque', address=14, size=2, default=1023),
Row(name='status_return_level', address=16, size=1, default=2),
Row(name='alarm_led', address=17, size=1, default=36),
Row(name='shutdown', address=18, size=1, default=36)
]
RAM = [
Row(name='torque_enable', address=24, size=1, default=0),
Row(name='led', address=25, size=1, default=0),
Row(name='cw_compliance_margin', address=26, size=1, default=1),
Row(name='ccw_compliance_margin', address=27, size=1, default=1),
Row(name='cw_compliance_slope', address=28, size=1, default=32),
Row(name='ccw_compliance_slope', address=29, size=1, default=32),
Row(name='goal_position', address=30, size=2, default=None),
Row(name='moving_speed', address=32, size=2, default=None),
Row(name='torque_limit', address=34, size=2, default=None),
Row(name='present_position', address=36, size=2, default=None),
Row(name='present_speed', address=38, size=2, default=None),
Row(name='present_load', address=40, size=2, default=None),
Row(name='present_voltage', address=42, size=1, default=None),
Row(name='present_temperature', address=43, size=1, default=None),
Row(name='registered', address=44, size=1, default=0),
Row(name='moving', address=46, size=1, default=0),
Row(name='lock', address=47, size=1, default=0),
Row(name='punch', address=48, size=2, default=0),
Row(name='sensed_current', address=56, size=2, default=None)
]
PROTOCOL = dynamixel.protocol.Protocol1
def __init__(self, id):
super(EX_106+, self).__init__(
id=id, eeprom=self.EEPROM, ram=self.RAM, protocol=self.PROTOCOL)
from dynamixel.servo import Servo, Row, IndirectRow
import dynamixel.protocol
class H42_20_S300_R(Servo):
EEPROM = [
Row(name='model_number', address=0, size=2, default=51200),
Row(name='model_information', address=2, size=4, default=None),
Row(name='firmware_version', address=6, size=1, default=None),
Row(name='id', address=7, size=1, default=1),
Row(name='baud_rate', address=8, size=1, default=1),
Row(name='return_delay_time', address=9, size=1, default=250),
Row(name='operating_mode', address=11, size=1, default=3),
Row(name='homing_offset', address=13, size=4, default=0),
Row(name='moving_threshold', address=17, size=4, default=50),
Row(name='temperature_limit', address=21, size=1, default=80),
Row(name='max_voltage_limit', address=22, size=2, default=400),
Row(name='min_voltage_limit', address=24, size=2, default=150),
Row(name='acceleration_limit', address=26, size=4, default=255),
Row(name='torque_limit', address=30, size=2, default=465),
Row(name='velocity_limit', address=32, size=4, default=10300),
Row(name='max_position_limit', address=36, size=4, default=151875),
Row(name='min_position_limit', address=40, size=4, default=None),
IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
Row(name='shutdown', address=48, size=1, default=58),
IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
]
RAM = [
Row(name='torque_enable', address=562, size=1, default=0),
Row(name='led_red', address=563, size=1, default=0),
Row(name='led_green', address=564, size=1, default=0),
Row(name='led_blue', address=565, size=1, default=0),
Row(name='velocity_i_gain', address=586, size=2, default=40),
Row(name='velocity_p_gain', address=588, size=2, default=440),
Row(name='position_p_gain', address=594, size=2, default=32),
Row(name='goal_position', address=596, size=4, default=None),
Row(name='goal_velocity', address=600, size=4, default=0),
Row(name='goal_torque', address=604, size=2, default=0),
Row(name='goal_acceleration', address=606, size=4, default=0),
Row(name='moving', address=610, size=1, default=None),
Row(name='present_position', address=611, size=4, default=None),
Row(name='present_velocity', address=615, size=4, default=None),
Row(name='present_current', address=621, size=2, default=None),
Row(name='present_input_voltage', address=623, size=2, default=None),
Row(name='present_temperature', address=625, size=1, default=None),
IndirectRow(name='external_port_data', addresses=[range(626, 634, 2)], size=2),
IndirectRow(name='indirect_data', addresses=[range(634, 890)], size=1),
Row(name='registered_instruction', address=890, size=1, default=0),
Row(name='status_return_level', address=891, size=1, default=2),
Row(name='hardware_error_status', address=892, size=1, default=0)
]
PROTOCOL = dynamixel.protocol.Protocol2
def __init__(self, id):