Skip to content

Commit d8861ce

Browse files
authored
Merge pull request #4 from thanhndv212/release/v0.3.0
Release v0.3.0 - Advanced Linear Solver & Module Reorganization
2 parents 83ed0f6 + e5eb04f commit d8861ce

File tree

13 files changed

+3044
-1486
lines changed

13 files changed

+3044
-1486
lines changed

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,59 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and 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

Comments
 (0)