@@ -5,6 +5,59 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8+ ## [ 0.3.0] - Unreleased
9+
10+ ### Added
11+ - ** Advanced Linear Solver (` figaroh.tools.solver ` )** : Comprehensive multivariate linear solver for robot parameter identification
12+ - Multiple solving methods: lstsq, QR, SVD, Ridge, Lasso, Elastic Net, Tikhonov, constrained, robust, weighted
13+ - Regularization support: L1 (Lasso), L2 (Ridge), Elastic Net, custom Tikhonov
14+ - Constraint handling: Box constraints (bounds), linear equality/inequality constraints
15+ - Robust regression with iterative reweighting for outlier resistance
16+ - Comprehensive solution quality metrics (RMSE, R², condition number, residuals)
17+ - Optimized for dense, large, thin matrices typical in robot dynamics
18+ - Full unit test coverage (18 tests) with robot identification scenarios
19+
20+ - ** Module Reorganization** : Better code organization and separation of concerns
21+ - ** Calibration module restructuring** :
22+ - ` calibration/config.py ` : Configuration parsing and YAML handling (624 lines)
23+ - ` calibration/parameter.py ` : Parameter management utilities (240 lines)
24+ - ` calibration/data_loader.py ` : Data loading and I/O operations (160 lines)
25+ - ** Identification module restructuring** :
26+ - ` identification/config.py ` : Configuration parsing for identification (334 lines)
27+ - ` identification/parameter.py ` : Parameter management for identification (388 lines)
28+ - Maintains 100% backward compatibility through re-exports
29+
30+ - ** BaseIdentification Enhancement** :
31+ - ` solve_with_custom_solver() ` : New method using advanced linear solver with regularization and constraints
32+ - Flexible solving with multiple methods and custom constraints
33+ - Support for physical parameter bounds (e.g., positive masses/inertias)
34+
35+ ### Improved
36+ - ** Parameter Ordering** : Changed to Pinocchio dynamic parameter ordering for consistency
37+ - New order: [ Ixx, Ixy, Ixz, Iyy, Iyz, Izz, mx, my, mz, m]
38+ - Previous order: [ m, mx, my, mz, Ixx, Ixy, Iyy, Ixz, Iyz, Izz]
39+
40+ - ** Regressor Module** : Cleaned up build_basic_regressor methods
41+ - Removed unused ` tau ` parameter for better API clarity
42+ - Improved method signatures and documentation
43+
44+ - ** Code Quality** : Significant reduction in code duplication
45+ - ` calibration_tools.py ` : Reduced from ~ 1500 to ~ 630 lines (-58%)
46+ - ` identification_tools.py ` : Reduced from ~ 900 to ~ 295 lines (-67%)
47+ - Modular design with clear single responsibilities
48+
49+ ### Fixed
50+ - Parameter naming: Changed from numbered indices to parent joint names for clarity
51+ - Regressor handling: Better support for additional columns in regressor matrices
52+ - Results manager imports and formatting issues
53+
54+ ### Technical Details
55+ - ** Files Changed** : 21 files
56+ - ** Lines Added** : +3,372
57+ - ** Lines Removed** : -1,604
58+ - ** Net Change** : +1,768 lines
59+ - ** Test Coverage** : All 18 new solver tests passing
60+
861## [ 0.2.4] - 2025-09-08
962
1063### Changed
0 commit comments