UNPKG

dynamixel

Version:

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

203 lines (202 loc) 6.79 kB
/** * Individual DYNAMIXEL Device * Represents a single DYNAMIXEL motor with its specific capabilities */ export class DynamixelDevice extends EventEmitter<[never]> { constructor(id: any, connection: any, deviceInfo?: {}); id: any; connection: any; modelNumber: any; firmwareVersion: any; modelName: any; lastError: any; /** * Ping this device to check if it's responsive * @param {number} timeout - Timeout in milliseconds * @returns {Promise<Object>} - Device information */ ping(timeout?: number): Promise<Object>; /** * Read data from the device's control table * @param {number} address - Control table address * @param {number} length - Number of bytes to read * @param {number} timeout - Timeout in milliseconds * @returns {Promise<Buffer>} - Read data */ read(address: number, length: number, timeout?: number): Promise<Buffer>; /** * Write data to the device's control table * @param {number} address - Control table address * @param {Buffer|Array} data - Data to write * @param {number} timeout - Timeout in milliseconds * @returns {Promise<boolean>} - Success status */ write(address: number, data: Buffer | any[], timeout?: number): Promise<boolean>; /** * Read a 1-byte value from control table * @param {number} address - Control table address * @returns {Promise<number>} - 8-bit value */ readByte(address: number): Promise<number>; /** * Read a 2-byte value from control table (little-endian) * @param {number} address - Control table address * @returns {Promise<number>} - 16-bit value */ readWord(address: number): Promise<number>; /** * Read a 4-byte value from control table (little-endian) * @param {number} address - Control table address * @returns {Promise<number>} - 32-bit value */ readDWord(address: number): Promise<number>; /** * Write a 1-byte value to control table * @param {number} address - Control table address * @param {number} value - 8-bit value * @returns {Promise<boolean>} - Success status */ writeByte(address: number, value: number): Promise<boolean>; /** * Write a 2-byte value to control table (little-endian) * @param {number} address - Control table address * @param {number} value - 16-bit value * @returns {Promise<boolean>} - Success status */ writeWord(address: number, value: number): Promise<boolean>; /** * Write a 4-byte value to control table (little-endian) * @param {number} address - Control table address * @param {number} value - 32-bit value * @returns {Promise<boolean>} - Success status */ writeDWord(address: number, value: number): Promise<boolean>; /** * Enable/disable torque * @param {boolean} enable - True to enable, false to disable * @returns {Promise<boolean>} - Success status */ setTorqueEnable(enable: boolean): Promise<boolean>; /** * Get torque enable status * @returns {Promise<boolean>} - Torque enable status */ getTorqueEnable(): Promise<boolean>; /** * Set goal position * @param {number} position - Goal position (0-4095 for most models) * @returns {Promise<boolean>} - Success status */ setGoalPosition(position: number): Promise<boolean>; /** * Get goal position * @returns {Promise<number>} - Goal position */ getGoalPosition(): Promise<number>; /** * Get present position * @returns {Promise<number>} - Present position */ getPresentPosition(): Promise<number>; /** * Set goal velocity * @param {number} velocity - Goal velocity * @returns {Promise<boolean>} - Success status */ setGoalVelocity(velocity: number): Promise<boolean>; /** * Get goal velocity * @returns {Promise<number>} - Goal velocity */ getGoalVelocity(): Promise<number>; /** * Get present velocity * @returns {Promise<number>} - Present velocity */ getPresentVelocity(): Promise<number>; /** * Set goal PWM * @param {number} pwm - Goal PWM value * @returns {Promise<boolean>} - Success status */ setGoalPWM(pwm: number): Promise<boolean>; /** * Get present PWM * @returns {Promise<number>} - Present PWM */ getPresentPWM(): Promise<number>; /** * Get present temperature * @returns {Promise<number>} - Temperature in Celsius */ getPresentTemperature(): Promise<number>; /** * Get present voltage * @returns {Promise<number>} - Voltage in 0.1V units */ getPresentVoltage(): Promise<number>; /** * Set LED state * @param {boolean} on - True to turn on, false to turn off * @returns {Promise<boolean>} - Success status */ setLED(on: boolean): Promise<boolean>; /** * Get LED state * @returns {Promise<boolean>} - LED state */ getLED(): Promise<boolean>; /** * Check if device is moving * @returns {Promise<boolean>} - Moving status */ isMoving(): Promise<boolean>; /** * Reboot the device * @param {number} timeout - Timeout in milliseconds * @returns {Promise<boolean>} - Success status */ reboot(timeout?: number): Promise<boolean>; /** * Get device information summary * @returns {Object} - Device information */ getDeviceInfo(): Object; /** * Get model name from model number * @param {number} modelNumber - Model number * @returns {string} - Model name */ getModelName(modelNumber: number): string; /** * Convert position to degrees (assuming 0-4095 range) * @param {number} position - Position value * @returns {number} - Degrees (0-360) */ positionToDegrees(position: number): number; /** * Convert degrees to position (assuming 0-4095 range) * @param {number} degrees - Degrees (0-360) * @returns {number} - Position value */ degreesToPosition(degrees: number): number; /** * Convert velocity to RPM (model-specific) * @param {number} velocity - Velocity value * @returns {number} - RPM */ velocityToRPM(velocity: number): number; /** * Convert RPM to velocity (model-specific) * @param {number} rpm - RPM * @returns {number} - Velocity value */ rpmToVelocity(rpm: number): number; /** * Convert voltage reading to actual voltage * @param {number} voltageReading - Raw voltage reading * @returns {number} - Voltage in volts */ voltageToVolts(voltageReading: number): number; } import { EventEmitter } from 'events';