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

3
 * To be defined
4
5
6
7


## Robotran v1.16.0

Sebastien Timmermans's avatar
Sebastien Timmermans committed
8
 * [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
9
 * [C] All user models are printed with the `mbs_print_data` function
Olivier Lantsoght's avatar
Olivier Lantsoght committed
10
11
 * [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
12
 * [C] LPK functions new error catched with code `-#16`; Documentation fixed.
13
14
15
 * [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
16
17
18
 * [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
19
20
21
 * [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
22
 * [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
23
 * [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
24
 * [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 :-) 
25

26
27
28
## Robotran v1.14.3 
 * [Python] Fix in MbsSensor class:
   * bad call to `comp_s_sensor` in `comp_f_sensor` raising exception.
29

Olivier Lantsoght's avatar
Olivier Lantsoght committed
30
31
32
33
34
35
## 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).
36

Nicolas Docquier's avatar
Nicolas Docquier committed
37
38
39
40
41
42
43
## 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 
44
45
46
47
48
49
50
* **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
51
 * [Python]
52
    * **For user: update your MBsysPy project as previous indexing was starting at 0.**
Olivier Lantsoght's avatar
Olivier Lantsoght committed
53
54
55
56
    * **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.
57
58
59
    * [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
60
61
62
63
64
    * [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`)
65
66
67
68
69
70
    * [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
71
72
    * [Template] user_ExtForces documentation improved.
    * [DEV] files updated to respect pep8 (except for E116, E126, E127, E402, E501, E722, E743, W503, W504)
73

74
75
 * [DOC] files updated to respect numpydoc style (with spyder 4 lining)  
    
76
 * [Simulink] Inverse dynamics module added, basic use.
77
 * 
78
79
80
81
 * [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
    
82
83
84
 * [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)  
85
    
86
87
88
 * [Trajectories functions] :  
    A new set of trajectories functions is implemented, see `"mbs_trajectories.h"`
    
89
90
 * [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. 
91
   User can access it in user_dirdyn_loop for example, mbs_dirdyn->mbs_aux->n_iter_close_loop
92

93
94
 * [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: 
95
96
   ```c
   if (!mbs_dd->options->flag_ongoing_jac_computation)
97
98
    {
        // do some stuff here that will only not be computed during the jacobian computation
99
100
    }
    ```
101
102
    The main purpose is to gain computation time. 
    
103
104
105
106
 * [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
107
   
108
109
110
 * [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 !
111
    
Sebastien Timmermans's avatar
Sebastien Timmermans committed
112
 
113
114
115
## 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)
116
 * [New] The value of the Lagrange multipliers is saved to file.
117
118
119
120
 * 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
121
## Robotran v1.12.0
122
123
 * [New] Inverse Dynamic module (Invdyn)
     * See examples `PendulumSpringC` and `miscellaneous/Invdyna_Delta`
124
125
126
 * 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)** 
127
     * Check `user IO` and `user model` size coherence between loaded `.mbs` file and compiled project (Error -900). Do not check type coherence.
128
 * [User derivative] [Dirdyn] The option "compute_all_uxd" is added during direct dynamic module. 
129
    The user can choose between the time-integration of all user_derivative or none. Per default, the flag is ON (= 1 = all are computed).
130
 * [Integrators] Euler Implicit and W-Methods are now functional but have not been extensively tested. 
131
 
132
133
## Robotran v1.11.2
 * [New] error management in all module
134
     * See the wiki in gitlab for the corresponding .pptx
135
136
137
138
     * 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
139
 * [New] usefull function`scalar_product_0` and `matrix_product_0` created (previously exists for fixed size vector)
140
141
142
143
144
 * [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.
145
 * [DEV] The arguments of some core function of Modal and Equilibrium module has changed. No impact for user.
146

147
148
## Robotran v1.11.1
 * Fixing the server call for symbolic generation 
149

Nicolas Docquier's avatar
Nicolas Docquier committed
150
## Robotran v1.11.0
151
 * 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
152
153
 * __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
154
155
156
157
 * 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
158
 * Remove dependency on lapacke by calling directly lapack function
Nicolas Docquier's avatar
Nicolas Docquier committed
159
160
 * 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
161
162

## Robotran v1.10.0
Sebastien Timmermans's avatar
Sebastien Timmermans committed
163
164
165
166
167
168
 * 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
169
170
 * 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...)
171
172
173
 * 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
174
 * User can now set vector as output variable:
175
    * 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
176
177
178
    * 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.
179
 * Python interface: possibility to retrieve point id with function `mbs_get_point_id(self, bodyName, pointName)` 
180
181
182

## Robotran v1.9.7
 * BugFix in equilibrium module (result vector was freed before being printed leading in some case to incoherent value)
183
 * 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)
184
185
 * 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`
186
 * 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
187
 * 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
188
 * Add the possibility to load vrml files in the OpenGL 3D view
189

190
191
192
193
## 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)

194
## Robotran v1.9.5
Timothee Habra's avatar
typos    
Timothee Habra committed
195
 * 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
196
197
198
 * 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
199
   * 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
200
   * 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
201
202
203
 * 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.
204
205
206
207
208
209
210
211
212
213
214
 * 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
215

Nicolas Docquier's avatar
Nicolas Docquier committed
216
217
218
219
220
221
222
223
## 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
224
* 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
225
226
227
* 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

228
229
230
231
232
## 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
233
* 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**
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
* .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
252
## Robotran v1.9.2