@raydotac/yaskawa-js
v1.0.1
Published
High-performance Node.js driver for Yaskawa Motoman robot controllers (DX100, DX200, YRC1000, FS100) via High Speed E-Server (HSES) UDP protocol
Maintainers
Readme
@raydotac/yaskawa-js
High-performance Node.js driver for Yaskawa Motoman robot controllers (DX100, DX200, YRC1000, FS100) via High Speed E-Server (HSES) UDP protocol. Zero native dependencies!
⚡ Features
- Pure Node.js: Built on native
dgramandBuffer. No Python, no C++ build tools, no native DLL dependencies. - Fast & Lightweight: Single UDP request/response latency < 5ms.
- Dual Module Support: Native ESM (
import) and CommonJS (require). - Motion Control: Direct 6-axis joint motion (
0x8B- Move Joints), Cartesian motion, and Inform Job upload (HOME_GOTO.JBI). - Telemetry & Status: Read 6-axis pulse positions (
0x75), Cartesian ($X, Y, Z, R_x, R_y, R_z$), mode (Remote/Play), Servo status, Alarms. - Automated Return-Home: 1-call
returnHome()with real-time feedback and trajectory progress monitoring. - TypeScript Support: Full type declarations bundled (
index.d.ts).
📦 Installation
npm install @raydotac/yaskawa-js🚀 Quick Start
ES Modules (ESM)
import { YaskawaClient, DEFAULT_HOME_COORDS } from '@raydotac/yaskawa-js';
const robot = new YaskawaClient({
ip: '192.168.1.83', // Robot Controller IP
dataPort: 10040, // HSES Data Port (default: 10040)
filePort: 10041, // HSES File Port (default: 10041)
defaultSpeed: 15.0 // Default speed % (15% joint speed)
});
// 1. Read Robot Status
const status = await robot.getStatus();
console.log('Servo ON:', status.servoOn, 'Remote:', status.remoteMode);
// 2. Read 6-Axis Pulses
const pos = await robot.getJointPositions();
console.log('Current Pulses [S, L, U, R, B, T]:', pos.axes);
// 3. Return to Work Origin (C00000)
const res = await robot.returnHome({
speedPercent: 15.0,
onProgress: (p) => {
console.log(`[${p.elapsedSec}s] ${p.percent}% completed (Delta: ${p.deltaTotal} pulses)`);
}
});
if (res.ok) {
console.log('Robot safely returned to Home in', res.durationMs, 'ms');
}CommonJS (CJS)
const { YaskawaClient, COMMANDS } = require('@raydotac/yaskawa-js');
const robot = new YaskawaClient({ ip: '192.168.1.83' });
robot.getStatus().then(status => console.log('Status:', status));🛠️ Build & Scripts
- Build module:
npm run build - Run tests:
npm test - Inspect package bundle:
npm run pack:test - Dry run publish:
npm run pub:dry - Publish to npm:
npm run pub
🛡️ License
MIT © raydotac / mrtruongleo
