UNPKG

dynamixel

Version:

Node.js library for controlling DYNAMIXEL servo motors via U2D2 interface with Protocol 2.0 support

118 lines (110 loc) 2.94 kB
// DYNAMIXEL Protocol 2.0 Constants // Packet Structure export const HEADER = [0xFF, 0xFF, 0xFD, 0x00]; export const BROADCAST_ID = 0xFE; // Instructions export const INSTRUCTIONS = { PING: 0x01, READ: 0x02, WRITE: 0x03, REG_WRITE: 0x04, ACTION: 0x05, FACTORY_RESET: 0x06, REBOOT: 0x08, CLEAR: 0x10, CONTROL_TABLE_BACKUP: 0x20, CONTROL_TABLE_RESTORE: 0x21, STATUS: 0x55, SYNC_READ: 0x82, SYNC_WRITE: 0x83, FAST_SYNC_READ: 0x8A, BULK_READ: 0x92, BULK_WRITE: 0x93, FAST_BULK_READ: 0x9A }; // Error Flags export const ERROR_FLAGS = { RESULT_FAIL: 0x01, INSTRUCTION_ERROR: 0x02, CRC_ERROR: 0x03, DATA_RANGE_ERROR: 0x04, DATA_LENGTH_ERROR: 0x05, DATA_LIMIT_ERROR: 0x06, ACCESS_ERROR: 0x07 }; // Common Control Table Addresses (varies by model) export const CONTROL_TABLE = { MODEL_NUMBER: 0, MODEL_INFORMATION: 2, FIRMWARE_VERSION: 6, ID: 7, BAUD_RATE: 8, RETURN_DELAY_TIME: 9, DRIVE_MODE: 10, OPERATING_MODE: 11, SECONDARY_ID: 12, PROTOCOL_TYPE: 13, HOMING_OFFSET: 20, MOVING_THRESHOLD: 24, TEMPERATURE_LIMIT: 31, MAX_VOLTAGE_LIMIT: 32, MIN_VOLTAGE_LIMIT: 34, PWM_LIMIT: 36, VELOCITY_LIMIT: 44, MAX_POSITION_LIMIT: 48, MIN_POSITION_LIMIT: 52, EXTERNAL_PORT_MODE_1: 56, EXTERNAL_PORT_MODE_2: 57, EXTERNAL_PORT_MODE_3: 58, SHUTDOWN: 63, TORQUE_ENABLE: 64, LED: 65, STATUS_RETURN_LEVEL: 68, REGISTERED_INSTRUCTION: 69, HARDWARE_ERROR_STATUS: 70, VELOCITY_I_GAIN: 76, VELOCITY_P_GAIN: 78, POSITION_D_GAIN: 80, POSITION_I_GAIN: 82, POSITION_P_GAIN: 84, FEEDFORWARD_2ND_GAIN: 88, FEEDFORWARD_1ST_GAIN: 90, BUS_WATCHDOG: 98, GOAL_PWM: 100, GOAL_CURRENT: 102, GOAL_VELOCITY: 104, PROFILE_ACCELERATION: 108, PROFILE_VELOCITY: 112, GOAL_POSITION: 116, REALTIME_TICK: 120, MOVING: 122, MOVING_STATUS: 123, PRESENT_PWM: 124, PRESENT_LOAD: 126, PRESENT_VELOCITY: 128, PRESENT_POSITION: 132, VELOCITY_TRAJECTORY: 136, POSITION_TRAJECTORY: 140, PRESENT_INPUT_VOLTAGE: 144, PRESENT_TEMPERATURE: 146 }; // U2D2 USB Device Information export const U2D2_DEVICE = { VENDOR_ID: 0x0403, // FTDI PRODUCT_ID: 0x6014, // FT232H INTERFACE: 0 }; // Indirect Address Constants export const INDIRECT_ADDRESS = { BASE_ADDRESS: 168, // Starting address for indirect addresses DATA_BASE_ADDRESS: 208, // Starting address for indirect data MAX_ENTRIES: 20, // Maximum number of indirect mappings ADDRESS_SIZE: 2, // Each indirect address entry is 2 bytes DATA_SIZE: 1, // Each indirect data entry is 1 byte VALID_RANGE_MIN: 64, // Minimum valid address for indirect mapping VALID_RANGE_MAX: 227 // Maximum valid address for indirect mapping }; // Default timeouts and settings export const DEFAULT_TIMEOUT = 1000; // milliseconds export const DEFAULT_BAUD_RATE = 57600; export const MIN_PACKET_LENGTH = 10; // Header + ID + Length + Instruction + CRC