CHANGELOG.md 19.1 KB
Newer Older
1
## Changes for next release
2

3
 * To be defined
4

Olivier Lantsoght's avatar
Olivier Lantsoght committed
5
6
7
## Robotran v1.16.1
 * [Py][Fix] The results are now saved to disk when an error is detected during direct dynamic integration.
 * [Py][partitioning] The option _visualise_ is set to False by default as it is currently not working.
8
9
10

## Robotran v1.16.0

Sebastien Timmermans's avatar
Sebastien Timmermans committed
11
 * [C][Python] error handling is enhanced, with new error names and proper closing of the functions for all modules, except Real-time in dirdyn
Olivier Lantsoght's avatar
Olivier Lantsoght committed
12
 * [C] All user models are printed with the `mbs_print_data` function
Olivier Lantsoght's avatar
Olivier Lantsoght committed
13
14
 * [C] New function `print_d_vec_0_format` allowing to set the format of the vector values.
 * [C] New function to compute matrix product between matrices of specified shape: `doublematrix_product_0`.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
15
 * [C] LPK functions new error catched with code `-#16`; Documentation fixed.
16
17
18
 * [C] Some functions that my be called by users have return status (<0 in case of error):
    * Look Up Table: `mbs_lut_2D_alloc()`, `mbs_lut_res_alloc()`, `mbs_lut_res_load_file()`; 
    * Useful functions: `read_dmat_0()`
Olivier Lantsoght's avatar
Olivier Lantsoght committed
19
20
21
 * [Py] User vector outputs are now available in the MbsDirdyn results field.
 * [Py] Using C symbolic library and Python user is possible even with external forces.
 * [Py] Adding missing fields in MbsData.
Sebastien Timmermans's avatar
Sebastien Timmermans committed
22
23
24
 * [dirdyn][new option] A new option option called 'oneshot' is added. 
		-> It allows to compute the derivative function only once (no time derivation) at time = dt0.
		-> See the 'flag_oneshot' in dirdyn options. 
Olivier Lantsoght's avatar
Olivier Lantsoght committed
25
 * [dirdyn][Fix] the function user_dirdyn_loop is now called only at the real time steps, even for multisteps integration methods.
Sebastien Timmermans's avatar
Sebastien Timmermans committed
26
 * [dirdyn][Fix] the mbs_data->flag_stop is taken into account in all the integrators now, the simulation stops.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
27
 * [integrators][dirdyn] Add a new integrator called 'AlphaM' for alpha method. It is explicit, fixed step-size but with two stages and a bit smarter than Euler explicit :-) 
28

29
30
31
## Robotran v1.14.3 
 * [Python] Fix in MbsSensor class:
   * bad call to `comp_s_sensor` in `comp_f_sensor` raising exception.
32

Olivier Lantsoght's avatar
Olivier Lantsoght committed
33
34
35
36
37
38
## Robotran v1.14.2 
 * [Python] Fixes in MbsSensor class:
   * bad field called in `comp_f_sensor` raising exception.
   * bad field called in `assign_to_C` raising exception when assigning an existing Python sensor to an existing C structure.
   * with C symbolic libraries computing `force` or `gen` sensor was wrong as the class calls for the Python function.
   * `gen_sensor` function is renamed to `comp_gen_sensor` (coherence with other sensors).
39

Nicolas Docquier's avatar
Nicolas Docquier committed
40
41
42
43
44
45
46
## Robotran v1.14.1 
 * [Python] Correct Python project templates in main.py (plot error) and user_ExtForces (index error)
   * **Requires to upate template of existing projects in Python created with v 1.14.0**
     * In user_extForces: replace `Swr[0:] = np.r_[Fx, Fy, Fz, Mx, My, Mz, dxF]` by `Swr[1:] = np.r_[Fx, Fy, Fz, Mx, My, Mz, dxF]`
     * In main.py: remove `axis.set_xlim(left=mbs_dirdyn.t0, right=mbs_dirdyn.tf)` at the end of the file, in plotting section
 * [C] Correct version number of examples
## Robotran v1.14.0 
47
48
49
50
51
52
53
* **For user:**
    * **Requires to generate again user files (and user file generation application)**
    * **The ordering of `MbsData->lambda` has change. If you used them, update your files.**
 * [Partitioning] Option `visualize` is used to generate failed loop closing procedure (default is no generation)
 * [Fix] Failing loop closing procedure was always trying to generate animation whatever was the option.
 * [Fix] Missing functions in the template of user_model/IO
 * [Fix] Lagrange multipliers (`MbsData->lambda`) are in the same order as the constraint definition.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
54
 * [Python]
55
    * **For user: update your MBsysPy project as previous indexing was starting at 0.**
Olivier Lantsoght's avatar
Olivier Lantsoght committed
56
57
58
59
    * **function `MbsData.mbs_load_from_file` renamed to `MbsData.load_state`
    * **function `MbsSensor.gensensor` renamed to `MbsSensor.gen_sensor`
    * [Fix] some attributes of `MbsPart` were mislinked to C-memory.
    * [Fix] `qv` attributes of `MbsData` was missing.
60
61
62
    * [Fix] User model 'array-like' starts with index 1 (Similar to MBsysC)
    * [Fix] Unsupported User Model (LUT, structures) does not prevent model loading.
    * [Fix] User model vector and state correctly binded in pure Python and mixed-C.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
63
64
65
66
67
    * [New] attributes of `MbsSensor` are set to 0 before any computation
    * [New] the c-memory allocated by `MbsSensor` are freed
    * [New] function `MbsSensor.force_sensor` to compute force sensor
    * [New] functions to set outputs (value, vector...) are available from `MbsData` class
    * [New] functions to set outputs accept numpy derivated types (`numpy.float64`, `numpy.int32`)
68
69
70
71
72
73
    * [New] Setting user models accept derivated types and do conversion:
        * Scalar/Vector: accept `int, float, numpy.float64, numpy.int64`, warn then try to cast to `float` otherwise.
        * State: accept list/numpy.array of `int, numpy.int64`, warn then try to cast to `int` otherwise.
        * Integer:
            * With Python user functions: integers user model are float (accept `int, float`...) as they are loaded as float in loadxml MBsysC function.
    * [New] Changing user state ids is now forbidden.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
74
75
    * [Template] user_ExtForces documentation improved.
    * [DEV] files updated to respect pep8 (except for E116, E126, E127, E402, E501, E722, E743, W503, W504)
76

77
78
 * [DOC] files updated to respect numpydoc style (with spyder 4 lining)  
    
79
 * [Simulink] Inverse dynamics module added, basic use.
80
 * 
81
82
83
84
 * [ROS] compatibility with ROS in UNIX OS is done. Path to open GL process is put to catkin_ws.
    Functions used in main are put as extern cpp to be compiled by ROS environment.
    See the ROS tutorial on www.robotran.be for more informations
    
85
86
87
 * [useful functions] two added :  
    * `pick_and_place_dvec_1` : dest[index[i]] = src[i]; (also exists for vec_0)  
    * `slct_dvec_1 : dest[i] = src[index[i]];` (previously only existed for vec_0)  
88
    
89
90
91
 * [Trajectories functions] :  
    A new set of trajectories functions is implemented, see `"mbs_trajectories.h"`
    
92
93
 * [mbs_close_geo] a new field in mbs_aux has been added: n_iter_close_loop
   This allows the user to know the number of iterations taken by the NR process during the loop closure procedure. 
94
   User can access it in user_dirdyn_loop for example, mbs_dirdyn->mbs_aux->n_iter_close_loop
95

96
97
 * [integrators][dirdyn] add a flag to know when the jacobian is beeing computed with implicit integrators.
   It can be used by the user in his functions to avoid unnecessary calculations during these steps. For example: 
98
99
   ```c
   if (!mbs_dd->options->flag_ongoing_jac_computation)
100
101
    {
        // do some stuff here that will only not be computed during the jacobian computation
102
103
    }
    ```
104
105
    The main purpose is to gain computation time. 
    
106
107
108
109
 * [integrators][dirdyn] add a flag to  process a "Baumgarte" stabilization on the acceleration level:  
   `qdd = qdd - 2*alpha*qd - beta*beta*q`  
   alpha and beta are constant that should be adapted to each project.  
   Per default = NO Baumgarte stabilization
110
   
111
112
113
 * [integrators][dirdyn] add a flag to compute the dfdx term in jacobian computation.   
    This allows to gain computation time if this term is not used in the integration process.  
    Per default, compute all the terms. For developpers only !
114
    
Sebastien Timmermans's avatar
Sebastien Timmermans committed
115
 
116
117
118
## Robotran v1.13.0
 * [Python] A Python interface is available (MBsysPy)
 * [Fix] The norm of the constraints errors were not correctly computed in some specific case (with user constraints and non-independent constraints)
119
 * [New] The value of the Lagrange multipliers is saved to file.
120
121
122
123
 * Sensors:
    * function `mbs_new_sensor` allocate the memory for the sensor, allocate the jacobian and rotation matrices and initialize the fields to 0.
    * function `mbs_delete_sensor` deallocate all the memory of the sensor including itself (instead of `free_sensor`)
    * **For user: do not call anymore `allocate_sensor` and `init_sensor` and call `mbs_delete_sensor` instead of `free_sensor`**
Nicolas Docquier's avatar
Nicolas Docquier committed
124
## Robotran v1.12.0
125
126
 * [New] Inverse Dynamic module (Invdyn)
     * See examples `PendulumSpringC` and `miscellaneous/Invdyna_Delta`
127
128
129
 * XML loading: 
     * New structure names and new functions (adding a mission flag in binding functions)
     * **Requires to generate again user files (and user file generation application)** 
130
     * Check `user IO` and `user model` size coherence between loaded `.mbs` file and compiled project (Error -900). Do not check type coherence.
131
 * [User derivative] [Dirdyn] The option "compute_all_uxd" is added during direct dynamic module. 
132
    The user can choose between the time-integration of all user_derivative or none. Per default, the flag is ON (= 1 = all are computed).
133
 * [Integrators] Euler Implicit and W-Methods are now functional but have not been extensively tested. 
134
 
135
136
## Robotran v1.11.2
 * [New] error management in all module
137
     * See the wiki in gitlab for the corresponding .pptx
138
139
140
141
     * The results files are written when an error is raised during dirdyn and solvekin process.
 * [New][CI] 
     * automatic tests added for equil module + file tree of example project remodeled.
     * Ubuntu 18.04 is used for testing
Olivier Lantsoght's avatar
Olivier Lantsoght committed
142
 * [New] usefull function`scalar_product_0` and `matrix_product_0` created (previously exists for fixed size vector)
143
144
145
146
147
 * [New] module called [Solvekin] to study kinematics. Refer to MBsysC documentation for instruction or example in `/ExampleProjects/TutorialProjects/analysisModules/`
 * [Python] interface:
     * [New] mbs_gensensor is callable from Python interface
     * [Update] interface for W10 working, see instructions in the "readme_aux/interface_python.md"
 * [Fix] The user model include the "lut.h" header file when needed.
148
 * [DEV] The arguments of some core function of Modal and Equilibrium module has changed. No impact for user.
149

150
151
## Robotran v1.11.1
 * Fixing the server call for symbolic generation 
152

Nicolas Docquier's avatar
Nicolas Docquier committed
153
## Robotran v1.11.0
154
 * Windows 32 bit is no longer supported. An error message is shown when the user try to execute cmake with 32 bit and the process stops.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
155
156
 * __Change to existing function(s):__
   * `set_output_value` : `val_index` now start at 1 to be coherent with all user indexing.
Nicolas Docquier's avatar
Nicolas Docquier committed
157
158
159
160
 * Add new time integrators for the DIRDYN module. Available integrators are now: RK4, Dopri5, Rosenbrock, EulerEx, Eulaire, EulerIm, Bader, WMethods + possibility to implement custom integrator still available.
 * Improvement of integrators:
   * possibility to freeze JAcobian matrix for implicit integrators
   * option to specify whether the model must be re-computed between 2 consecutive time-steps
Nicolas Docquier's avatar
Nicolas Docquier committed
161
 * Remove dependency on lapacke by calling directly lapack function
Nicolas Docquier's avatar
Nicolas Docquier committed
162
163
 * Redefinition of `set_output_value` to save custom quantities in a vector: indices in the saved vector start at 1 and not at 0 (see doc for details)
 * Other small corrections and changes
Nicolas Docquier's avatar
Nicolas Docquier committed
164
165

## Robotran v1.10.0
Sebastien Timmermans's avatar
Sebastien Timmermans committed
166
167
168
169
170
171
 * Change the call structure for integrators in dirdyn module. The integrators are now chosen thanks to a key-word and their calls are formated :
        -> 3 functions specifics for each integrator (init, loop and finish integrator) are implemented
        -> these functions are automatically called thanks to 3 pointors of functions
        -> Euler Explicit is availlable by not yet tested (RK4 still by default)
        -> all the integrators have the same options (but warnings are printed when unused options are changed by user)
        -> a custom integrator could be designed by the developper (files to do so are already there)
Nicolas Docquier's avatar
Nicolas Docquier committed
172
173
 * Update initialization of result and animation buffers ==> this simplify the settings of respath and animpath options
 * Enrich the OpenDL 3D lib to add "camera sensors". This enable screen capturing that can be outputed to files (image, video) or other flux (openCV...)
174
175
176
 * Remove dependancy over GSL by using the LAPACKE:
     * Windows: No change for user, compiled libraries are provided
     * Ubuntu: `sudo apt-get install liblapacke-dev`
Olivier Lantsoght's avatar
Olivier Lantsoght committed
177
 * User can now set vector as output variable:
178
    * Initialization: with function `define_output_vector(char* label, int size)` define the label and the size of each vector in _user_dirdyn.c_ file inside the `user_dirdyn_init` function.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
179
180
181
    * Setting vector value: in the same place where you can call `set_output` function you can also call:
       * `set_output_vector(double *v_ptr, char* label)` to save the content of the specified vector (`v_ptr`) in the output identified by the label.
       * `set_output_value(double value, int index, char* label)` to set element _index_ of the vector identified by the label at the specified value.
182
 * Python interface: possibility to retrieve point id with function `mbs_get_point_id(self, bodyName, pointName)` 
183
184
185

## Robotran v1.9.7
 * BugFix in equilibrium module (result vector was freed before being printed leading in some case to incoherent value)
186
 * Add an integrator (Rosenbrock) dedicated to stiff problems: simply set the flag to use rosenbrock in dirdyn option to ON: `mbs_dirdyn->options->rosenbrock->flag_use = 1;` (same as for Dopri5)
187
188
 * Add an application to generate VTK/ParaView output files. This required some adaptation of OpenGL 3D visu of NVdN (see merge request !135 for details). Requirements:
   * Ubuntu: `sudo apt-get install libvtk6-dev libproj-dev`
189
 * Remove deprecated headers, MBSdataStructR7.h and MBSfunR7.h. **If some old symbolic routines still use these headers, they can be re-generated from MBsysPad to get the proper headers.**
Nicolas Docquier's avatar
Nicolas Docquier committed
190
 * Remove nwheel and rnom fieds from the MbsData structure. If necessary, those values should be defined via a user model.
Nicolas Docquier's avatar
Nicolas Docquier committed
191
 * Add the possibility to load vrml files in the OpenGL 3D view
192

193
194
195
196
## Robotran v1.9.6
 * Add the possibility to access and modify user_model parameters via the python interface. **This requires to generate again the UserModel.c/.h files (via MBsysPad: menu Tools=>Generate C-specific user files=>User model files)**
 * Add the possibility to use user model parameters of type *integer* (those parameters can be defined from MBsysPad)

197
## Robotran v1.9.5
Timothee Habra's avatar
typos    
Timothee Habra committed
198
 * All modules (MBsysC, interfaces, add-ons) are compiled from the same CMakeLists. The optional modules are activated with corresponding FLAG (`FLAG_INTERFACE_SIMULINK`, `FLAG_INTERFACE_PYTHON`, `FLAG_IPY_WITH_MBS_LMGC` and `FLAG_ADDON_MBSLMGC`).
Nicolas Docquier's avatar
Nicolas Docquier committed
199
200
201
 * Simulink interface: a (simple) interface between MBsysC is created, involving the following changes
 * Definition of new optinal user files:
   * user\_equil.c: is required for equilibrium module.
Timothee Habra's avatar
typos    
Timothee Habra committed
202
   * user\_load.c: enables to execute specific code after loading the project (useful for Simulink since there is no main function to do it in Simulink)
Nicolas Docquier's avatar
Nicolas Docquier committed
203
   * template files are available in mbs\_workspace\_template and are added automatically if the files are not in the project. **Project update required: Either update userfctR\CMakeLists for backward compatibility (add call to `increment_void_user( ${PROJECT_SOURCE_DIR} )` just after increment_src) or copy/paste the new files from the template.**
Olivier Lantsoght's avatar
Olivier Lantsoght committed
204
205
206
 * User specific output: the name of the file now have the resfilename as prefix.
 * User model generation: the generation of the user_model files for mbs without defined user model is now compatible with Visual studio (structure is no more empty)
 * M_PI is accessible on windows for all files that include math.h in the template.
207
208
209
210
211
212
213
214
215
216
217
 * user\_all\_id.h: the id of cuts are generated.  
 * Add openGL
   * Adapt CMakeLists.txt of workR folder. Replace  
```
file(RELATIVE_PATH BUILD_PATH ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR})
```
   by  
```
set(BUILD_PATH ${PROJECT_BINARY_DIR})
file(RELATIVE_PATH BUILD_PATH_REL ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR})
```
Olivier Lantsoght's avatar
Olivier Lantsoght committed
218

Nicolas Docquier's avatar
Nicolas Docquier committed
219
220
221
222
223
224
225
226
## Robotran v1.9.4

* Add a python interface for driving the simulation via a python script (see MBsysC/readme_aux/interface_python.md and MBsysC/mbs_interface/mbs_python)
* Add the possibility to embed a MBsysC project in a simulink S-function (see example in MBsysC/mbs_interface/mbs_simulink)
* Enable a "separate build" mode for compiling. This enables to compile MBsysC modules only once. Then, only the project specific files (user functions, symbolic functions and main function) must be compiled for each project. The old fashion compiling (i.e. monolithic build) which compiles both MbsysC and project specific files together is still available and set as the default option in the CMakeLists.txt of a nex project. **This requires to adapt existing projects. In particular, CMakeLists.txt are added to userfctR and symbolicR folder. The CmakeLists.txt file in the workR folder is modified. Include in the userfct/realtime files are also modified.**
* Correct a bug that prevent loading *.mbs file after starting 3D visu because the decimal separator may be changed from dot to coma
* Use a uniform syntax for helpful functions that manage arrays and matrices. **This may require to adapt the name of those function if you use it in you user functions**. (see MBsysC/mbs_common/mbs_utilities/useful_functions.h )
* Add new modules for equilibrium and modal analysis
Nicolas Docquier's avatar
Nicolas Docquier committed
227
* Add the possiblity to animate auxiliary \*.mbs file in addition to the simulated one. The motion of the auxiliary \*.mbs must be computed by the user. **This modification requires to update the template files user_realtime_options.c and user_realtime_visu.c**
Nicolas Docquier's avatar
Nicolas Docquier committed
228
229
230
* update the findJNI and findJava CMake file for compatibility with java 8
* Use pre-processor flag LINUX rather than WIN32 for os specific part of code

231
232
233
234
235
## Robotran v1.9.3

* possibility to use an adaptative time step integrator (dopri5)
* possibility to define more than one path for MBSysC
* possibility to use hard-coded parameters rather than loading data from the *.mbs file
Nicolas Docquier's avatar
Nicolas Docquier committed
236
* adapt code to new conventions for symbolic file name: `mbs_` added before the name (the `link` function was confusing for C++ project) **You just need to generate again your symbolic files to this change to take effect**
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
* .anim file generated
* user_dirdyn.c: give access to MbsDirdyn structure rather than to MbsAux (MbsAux can be accessed through MbsDirdyn) and add '#include "mbs_dirdyn.h"' instead of '#include "mbs_aux.h"' **Update of template and existing project required**
* user_dirdyn.c: rename the functions by adding the *dirdyn* keyword in the names (so as to avoid confusion with other modules) **Update of template and existing project required**
* accelred: add the possibilty to run a direct dynamic simulation using the accelred symbolic files (symbolic reduction of equation of motion)
* user_dirdyn update: pass MbsDirdyn as argument instead of MbsAux *WARNING: template update*
* fix a viewpoint bug when going backward in the 3D view of a real-time simulation
* user_realtime_plot.c: _#include "user_realtime.h"_ instead of _#include "plot_sdl.h"_, _#include "set_plot.h"_. The manual provided as a function comment was also modified. **Update of template and existing project required**
* user_realtime_visu.c: _#include "user_realtime.h"_ instead of _#include "java_functions.h"_ **Update of template and existing project required**
* user_realtime_events.c: _#include "user_realtime.h"_ instead of _#include "plot_sdl.h"_ **Update of template and existing project required**
* user_realtime_options.c: remove _options->nb_viewpoints_ **Update of template and existing project required**
* workR/CMakeLists.txt: new organization, especially for the separate build **Update of template and existing project required**
* computation of Lagrange mulitpliers (lambda) for systems with constraints
* MacOS: realtime 3D animation enabled
* nbody: depict the number of physiscal bodies
* user_all_id.h: joint id start at 1 instead of 0



Nicolas Docquier's avatar
Nicolas Docquier committed
255
## Robotran v1.9.2