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
TypeScript
/**
* 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';