Repository navigation
Releases: andyshinn/node-dynamixel
Releases · andyshinn/node-dynamixel
Release list
0.1.0 - Indirect Addressing, Goal Current Control, and Performance Enhancements
Major Features Added
🎯 Indirect Addressing Support
Complete DYNAMIXEL indirect addressing functionality for high-performance applications:
setupIndirectAddress(),writeIndirectData(),readIndirectData()for basic operationsbulkReadIndirect()andbulkWriteIndirect()with automatic contiguous address optimizationsetupCommonIndirectMappings()andreadCommonStatus()for streamlined monitoring- Full validation with descriptive error messages
- Supports up to 20 indirect mappings with efficient bulk operations
⚡ Goal Current Control
Current-based motor control for precise torque applications:
setGoalCurrent()andgetGoalCurrent()methods- Enhanced control capabilities for force/torque-sensitive applications
- Seamless integration with existing position and velocity control
⏱️ Realtime Tick Support
Hardware timestamp access for precise timing:
getRealtimeTick()method for 16-bit hardware timestamp counter- Enables precise timing measurements and multi-motor synchronization
- Essential for real-time applications and performance monitoring
🚀 Serial Buffer Configuration
Configurable buffer sizes for performance optimization:
highWaterMarkoption in SerialConnection and DynamixelController- Default 64KB, configurable from 0 to 1MB+ for different use cases
- Optimizes memory usage and performance for high-speed applications
🛠️ Enhanced Development Tools
New example applications:
realtime-timestamp-test.js- Demonstrates indirect addressing and realtime tickserial-buffer-options.js- Shows buffer configuration options- Enhanced motor profiles and debugging utilities
Technical Improvements
- Advanced Protocol Support - Full indirect addressing implementation
- Performance Optimization - Configurable buffers and contiguous bulk operations
- Real-time Capabilities - Hardware timestamp access
- Enhanced Documentation - Better TypeScript/JSDoc integration
Migration Guide
- High-performance apps: Use indirect addressing for efficient bulk operations
- Precise control apps: Utilize current-based torque control methods
- Real-time apps: Use hardware timestamp for synchronization
- Buffer optimization: Configure
highWaterMarkbased on your requirements
Compatibility
All changes are backward compatible - no breaking changes.
🤖 Generated with Claude Code
0.0.5
[0.0.5] - 2025-01-20
Added
- Separated Discovery Pattern for Electron applications
discoverCommunicationDevices()- Discover USB/Serial devices without connectingdiscoverU2D2Devices()- Find U2D2-compatible devices specificallyconnectToDevice(device)- Connect to user-selected devicedeferConnectionoption in DynamixelController constructor- Example:
separated-discovery.jsdemonstrating the complete workflow
- TypeScript Support
- Complete TypeScript declaration files generation
- Proper type annotations for all public APIs
deferConnectioncorrectly typed asboolean(wasany)- JSDoc type definitions for better IDE support
- Build System Enhancements
- Rollup configuration for ESM and CommonJS builds
- Automatic TypeScript declaration generation
- Support for both
importandrequireusage patterns - Proper package.json exports configuration
- Enhanced Examples
electron-main-process.js- Electron main process integrationelectron-renderer.js- Electron renderer process integrationelectron-dynamixel-service.js- Complete Electron service exampletypescript-example.ts- TypeScript usage demonstrationprioritize-serial.js- Serial device prioritization example
Changed
- Device Discovery Priority: Serial devices now properly prioritized over USB devices
- Improved Error Handling: Better error messages and timeout handling
- Enhanced Motor Property Reading: Motor model numbers and firmware versions now display correctly
- Test Reliability: All 284 tests now pass consistently without hanging
- Protocol Buffer Processing: Fixed infinite loop issues in packet processing
- Connection Stability: Improved timeout handling and connection cleanup
Fixed
- Critical Motor Discovery Bug: Fixed infinite loop in
processReceiveBuffer()methods- Changed condition from
packetLength === -1topacketLength === 0 - Added buffer size limits (1KB max) to prevent memory issues
- Added maximum packets per processing call (10) to prevent infinite loops
- Applied to all transport classes: SerialConnection, U2D2Connection
- Changed condition from
- Motor Properties Null Issue: Fixed motor properties showing as
nullvalues- Root cause:
ping()methods incorrectly parsing response buffers - Fixed: Proper parsing of raw buffers before extracting ping information
- Now correctly displays: "Motor ID 1: XC430-W150 (Model: 1200), FW: 52"
- Root cause:
- Test Hanging Issue: Resolved Jest hanging on test completion
- Fixed USB device handle leaks by using mocked connections
- Fixed timeout handle leaks by clearing setTimeout properly
- All tests now exit cleanly with
--detectOpenHandles
- DynamixelDevice Buffer Parsing: Fixed raw response buffer handling
read()andwrite()methods now properly parse status packets- Added
Protocol2.parseStatusPacket()calls before error checking - Updated test mocks to return proper status packet buffers
- Missing CommonJS Methods: Added missing discovery methods to CommonJS exports
discoverCommunicationDevices(),discoverU2D2Devices(),connectToDevice()- Fixed inconsistency between ESM and CommonJS module exports
Technical Improvements
- Robust Packet Processing: Enhanced buffer processing with safety limits
- Memory Management: Better cleanup of USB handles and timeouts
- Test Infrastructure: Proper mock data generation for DYNAMIXEL Protocol 2.0
- Error Propagation: Consistent error handling across transport layers
- Documentation: Comprehensive examples for Electron integration patterns
Breaking Changes
- None - All changes are backward compatible
Migration Guide
- For Electron apps: Consider using the new separated discovery pattern for better UX
- For TypeScript users: Update imports to get better type safety
- For CommonJS users: No changes required, all new methods available
Full Changelog: 0.0.4...0.0.5
0.0.4
[0.0.4] - 2025-06-15
Added
- Enhanced Alarm Management System (inspired by DynaNode architecture)
- Intelligent alarm thresholds for temperature, voltage, and load monitoring
- Hardware error flag processing with severity classification
- Alarm history tracking and statistics
- Emergency stop events for fatal conditions
- Motor Profiles System for optimal motor configurations
- Predefined profiles for AX, MX, and X series motors
- Application-specific profiles (robot arms, mobile robots, grippers)
- Recommended settings for different use cases (precision, balanced, dynamic)
- Multi-motor synchronization optimization settings
- Enhanced Logging System with structured output
- Performance metrics tracking and measurement tools
- Protocol-level logging for debugging
- Device-specific and category-specific loggers
- Log filtering, export (JSON/CSV/text), and statistics
- Configurable log levels with environment variable support
- Comprehensive Test Suite for enhanced features
- 108 unit tests covering AlarmManager, MotorProfiles, and Logger
- 17 integration tests demonstrating real-world usage scenarios
- Enhanced features documentation and examples
Changed
- Reorganized src directory structure for better separation of concerns
- Moved connection classes to
src/transport/directory - Moved DYNAMIXEL-specific classes to
src/dynamixel/directory - Updated main entry point exports to include enhanced features
- Enhanced documentation with comprehensive enhanced features section
Features Inspired by DynaNode
- Advanced alarm categorization and threshold management
- Comprehensive motor model specifications and configurations
- Application profile templates for common robotics use cases
- Performance monitoring and optimization tools
Full Changelog: 0.0.3...0.0.4
0.0.3
0.0.2
Initial release to npm.
Full Changelog: https://github.com/andyshinn/node-dynamixel/commits/0.0.2