You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+76-17Lines changed: 76 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,9 @@
1
1
# FIGAROH
2
2
(Free dynamics Identification and Geometrical cAlibration of RObot and Human)
3
-
FIGAROH is a python toolbox aiming at providing efficient and highly flexible frameworks for dynamics identification and geometric calibration of rigid multi-body systems based on the popular modeling convention URDF. The considered systems can be serial (industrial manipulator) or tree-structures (human, humanoid robots).
3
+
4
+
FIGAROH is a Python toolbox providing efficient and highly flexible frameworks for dynamics identification and geometric calibration of rigid multi-body systems based on the popular modeling convention URDF. The considered systems can be serial (industrial manipulator) or tree-structures (human, humanoid robots).
5
+
6
+
**📦 Available on PyPI:**`pip install figaroh`
4
7
5
8
Note: This repo is a fork from [gitlab repo](https://gitlab.laas.fr/gepetto/figaroh) of which the author is no longer a contributor.
6
9
@@ -11,10 +14,10 @@ Note: This repo is a fork from [gitlab repo](https://gitlab.laas.fr/gepetto/figa
FIGAROH has the following core dependencies (automatically installed with pip):
47
51
* numpy
48
52
* scipy
49
53
* matplotlib
50
-
* pinocchio (conda install)
51
-
* cyipopt (conda install)
52
54
* numdifftools
55
+
* ndcurves
53
56
* meshcat
54
57
* rospkg
55
58
* pandas
56
59
* quadprog
57
60
61
+
**Note:** Some dependencies should be installed via conda for better compatibility:
62
+
```bash
63
+
conda install -c conda-forge pinocchio cyipopt
64
+
```
65
+
58
66
## Features
59
67

60
68
As described in the following figure it provides:
@@ -68,9 +76,12 @@ As described in the following figure it provides:
68
76
- Calibration model with full-set kinematic parameters.
69
77
- Generation of optimal calibration postures based on combinatorial optimization.
70
78
- Calibration pipeline with customized kinematic chains and different selection of external sensoring methods (eye-hand camera, motion capture) or non-external methods (planar constraints).
71
-
-Calculatation of kinematic parameters that can be updated in URDF model.
79
+
-Calculation of kinematic parameters that can be updated in URDF model.
72
80
## How to use
73
-
Overall, a calibration/identification project folder would like this:
81
+
82
+
**Note:** For complete working examples, see the [figaroh-examples](https://github.com/thanhndv212/figaroh-examples) repository.
83
+
84
+
Overall, a calibration/identification project folder would look like this:
74
85
```
75
86
\considered-system
76
87
\config
@@ -83,7 +94,30 @@ Overall, a calibration/identification project folder would like this:
+ Step 1: Define a config file with sample template.\
88
122
A .yaml file containing information of the considered system and characteristics of the calibration/identification problem has a structure as follow:
89
123
```
@@ -135,14 +169,14 @@ A step-by-step procedure is presented as follow.
135
169
sync_joint_motion : False
136
170
```
137
171
+ Step 2: Generate sampled exciting postures and trajectories for experimentation.
138
-
- For geomeotric calibration: Firstly, considering the infinite possibilities of combination of postures can be generated, a finite pool of feasible sampled postures in working space for the considered system needs to be provided thanks to simulator. Then, the pool can be input for a script ```optimal_config.py``` with a combinatorial optimization algorithm which will calculate and propose an optimal set of calibration postures chosen from the pool with much less number of postures while maximizing the excitation.
139
-
- For dynamic identification: A nonlinear optimization problem needs to formulated and solved thanks to Ipopt solver in a script namde ```optimal_trajectory.py```. Cost function can be chosen amongst different criteria such as condition number. Joint constraints, self-collision constraints should be obligatory, and other dedicated constraints can be included in constraint functions. Then, the Ipopt solver will iterate and find the best cubic spline that sastifies all constraints and optimize the defined cost function which aims to maximize the excitation for dynamics of the considered system.
140
-
+ Step 3: Collect and prepare data in the correct format.\
141
-
To standardize the handling of data, we propose a sample format for collected data in csv format. These datasets should be stored in a ```data``` folder for such considered system.
142
-
+ Step 4: Create a script implementing identification/calibration algorithms with templates.
143
-
Dedicated template scripts ```calibration.py``` and ```identification.py``` are provided. Users needs to fill in essential parts to adapt to their systems. At the end, calibration/identification results will be displayed with visualization and statistical analysis. Then, it is up to users to justify the quality of calibration/identification based on their needs.
144
-
+ Step 5: Update model with identified parameters.\
145
-
Once the results are accepted, users can update calibrated/identified parameters to their urdf model by scripts ```update_model.py``` or simply save to a ```xacro``` file for later usage.
172
+
- For geometric calibration: Firstly, considering the infinite possibilities of combination of postures can be generated, a finite pool of feasible sampled postures in working space for the considered system needs to be provided thanks to simulator. Then, the pool can be input for a script `optimal_config.py` with a combinatorial optimization algorithm which will calculate and propose an optimal set of calibration postures chosen from the pool with much less number of postures while maximizing the excitation.
173
+
- For dynamic identification: A nonlinear optimization problem needs to formulated and solved thanks to Ipopt solver in a script named `optimal_trajectory.py`. Cost function can be chosen amongst different criteria such as condition number. Joint constraints, self-collision constraints should be obligatory, and other dedicated constraints can be included in constraint functions. Then, the Ipopt solver will iterate and find the best cubic spline that satisfies all constraints and optimize the defined cost function which aims to maximize the excitation for dynamics of the considered system.
174
+
+ Step 3: Collect and prepare data in the correct format.
175
+
To standardize the handling of data, we propose a sample format for collected data in CSV format. These datasets should be stored in a `data` folder for such considered system.
176
+
+ Step 4: Create a script implementing identification/calibration algorithms with templates.
177
+
Dedicated template scripts `calibration.py` and `identification.py` are provided. Users need to fill in essential parts to adapt to their systems. At the end, calibration/identification results will be displayed with visualization and statistical analysis. Then, it is up to users to justify the quality of calibration/identification based on their needs.
178
+
+ Step 5: Update model with identified parameters.
179
+
Once the results are accepted, users can update calibrated/identified parameters to their URDF model by scripts `update_model.py` or simply save to a `xacro` file for later usage.
146
180
## Examples
147
181
148
182
Complete examples and tutorials are available in a separate repository: [figaroh-examples](https://github.com/thanhndv212/figaroh-examples)
@@ -160,6 +194,31 @@ Each example includes:
160
194
- Sample data
161
195
- Complete workflows
162
196
- URDF models (when needed)
197
+
198
+
## Package Structure
199
+
200
+
The FIGAROH package is organized into the following modules:
201
+
202
+
- `figaroh.calibration`: Geometric calibration algorithms and tools
0 commit comments