Skip to content

Releases: andyshinn/node-dynamixel

0.1.0 - Indirect Addressing, Goal Current Control, and Performance Enhancements

Choose a tag to compare

@andyshinn andyshinn released this 17 Jul 17:54

Major Features Added

🎯 Indirect Addressing Support

Complete DYNAMIXEL indirect addressing functionality for high-performance applications:

  • setupIndirectAddress(), writeIndirectData(), readIndirectData() for basic operations
  • bulkReadIndirect() and bulkWriteIndirect() with automatic contiguous address optimization
  • setupCommonIndirectMappings() and readCommonStatus() 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() and getGoalCurrent() 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:

  • highWaterMark option 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 tick
  • serial-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 highWaterMark based on your requirements

Compatibility

All changes are backward compatible - no breaking changes.

🤖 Generated with Claude Code

0.0.5

Choose a tag to compare

@andyshinn andyshinn released this 19 Jun 02:29

[0.0.5] - 2025-01-20

Added

  • Separated Discovery Pattern for Electron applications
    • discoverCommunicationDevices() - Discover USB/Serial devices without connecting
    • discoverU2D2Devices() - Find U2D2-compatible devices specifically
    • connectToDevice(device) - Connect to user-selected device
    • deferConnection option in DynamixelController constructor
    • Example: separated-discovery.js demonstrating the complete workflow
  • TypeScript Support
    • Complete TypeScript declaration files generation
    • Proper type annotations for all public APIs
    • deferConnection correctly typed as boolean (was any)
    • JSDoc type definitions for better IDE support
  • Build System Enhancements
    • Rollup configuration for ESM and CommonJS builds
    • Automatic TypeScript declaration generation
    • Support for both import and require usage patterns
    • Proper package.json exports configuration
  • Enhanced Examples
    • electron-main-process.js - Electron main process integration
    • electron-renderer.js - Electron renderer process integration
    • electron-dynamixel-service.js - Complete Electron service example
    • typescript-example.ts - TypeScript usage demonstration
    • prioritize-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 === -1 to packetLength === 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
  • Motor Properties Null Issue: Fixed motor properties showing as null values
    • 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"
  • 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() and write() 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

Choose a tag to compare

@andyshinn andyshinn released this 15 Jun 04:36

[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

Choose a tag to compare

@andyshinn andyshinn released this 14 Jun 17:41

Full Changelog: 0.0.2...0.0.3

0.0.2

Choose a tag to compare

@andyshinn andyshinn released this 14 Jun 17:11

Initial release to npm.

Full Changelog: https://github.com/andyshinn/node-dynamixel/commits/0.0.2