CHANGELOG.md 14.3 KB
Newer Older
1
## Changes for next release
2
 * To be defined
Olivier Lantsoght's avatar
Olivier Lantsoght committed
3 4
 
 * **For user: Requires to generate again user files (and user file generation application)**
Olivier Lantsoght's avatar
Olivier Lantsoght committed
5 6
 * [Partitionning] 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.
Olivier Lantsoght's avatar
Olivier Lantsoght committed
7
 * [Python]
Olivier Lantsoght's avatar
Olivier Lantsoght committed
8
    * **For user: update your MBsysPy project as previous indexing was starting at 0.**
Olivier Lantsoght's avatar
Olivier Lantsoght committed
9 10 11 12
    * **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.
13 14 15
    * [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
16 17 18 19 20
    * [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`)
21
    * [New] Setting user models accept derivated types and do conversion:
22 23
        * 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.
24 25 26
        * 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
27 28
    * [Template] user_ExtForces documentation improved.
    * [DEV] files updated to respect pep8 (except for E116, E126, E127, E402, E501, E722, E743, W503, W504)
29
    * [DOC] files updated to respect numpydoc style (with spyder 4 lining)
Olivier Lantsoght's avatar
Olivier Lantsoght committed
30

31
 * [useful functions] two added :
Olivier Lantsoght's avatar
Olivier Lantsoght committed
32 33
    * `pick_and_place_dvec_1 : dest[index[i]] = src[i];` (also exist for vec_0)
    * `slct_dvec_1 : dest[i] = src[index[i]];` (previously only exist for vec_0)
34

35 36 37
## 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)
38
 * [New] The value of the Lagrange multipliers is saved to file.
39 40 41 42
 * 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
43
## Robotran v1.12.0
44 45
 * [New] Inverse Dynamic module (Invdyn)
     * See examples `PendulumSpringC` and `miscellaneous/Invdyna_Delta`
46 47 48
 * 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)** 
49
     * Check `user IO` and `user model` size coherence between loaded `.mbs` file and compiled project (Error -900). Do not check type coherence.
50
 * [User derivative] [Dirdyn] The option "compute_all_uxd" is added during direct dynamic module. 
51
    The user can choose between the time-integration of all user_derivative or none. Per default, the flag is ON (= 1 = all are computed).
52
 * [Integrators] Euler Implicit and W-Methods are now functional but have not been extensively tested. 
53
 
54 55
## Robotran v1.11.2
 * [New] error management in all module
56
     * See the wiki in gitlab for the corresponding .pptx
57 58 59 60
     * 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
61
 * [New] usefull function`scalar_product_0` and `matrix_product_0` created (previously exists for fixed size vector)
62 63 64 65 66
 * [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.
67
 * [DEV] The arguments of some core function of Modal and Equilibrium module has changed. No impact for user.
68

69 70
## Robotran v1.11.1
 * Fixing the server call for symbolic generation 
71

Nicolas Docquier's avatar
Nicolas Docquier committed
72
## Robotran v1.11.0
73
 * 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
74 75
 * __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
76 77 78 79
 * 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
80
 * Remove dependency on lapacke by calling directly lapack function
Nicolas Docquier's avatar
Nicolas Docquier committed
81 82
 * 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
83 84

## Robotran v1.10.0
Sebastien Timmermans's avatar
Sebastien Timmermans committed
85 86 87 88 89 90
 * 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
91 92
 * 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...)
93 94 95
 * 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
96
 * User can now set vector as output variable:
97
    * 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
98 99 100
    * 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.
101
 * Python interface: possibility to retrieve point id with function `mbs_get_point_id(self, bodyName, pointName)` 
102 103 104

## Robotran v1.9.7
 * BugFix in equilibrium module (result vector was freed before being printed leading in some case to incoherent value)
105
 * 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)
106 107
 * 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`
108
 * 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
109
 * 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
110
 * Add the possibility to load vrml files in the OpenGL 3D view
111

112 113 114 115
## 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)

116
## Robotran v1.9.5
Timothee Habra's avatar
typos  
Timothee Habra committed
117
 * 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
118 119 120
 * 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
121
   * 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
122
   * 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
123 124 125
 * 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.
126 127 128 129 130 131 132 133 134 135 136
 * 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
137

Nicolas Docquier's avatar
Nicolas Docquier committed
138 139 140 141 142 143 144 145
## 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
146
* 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
147 148 149
* 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

150 151 152 153 154
## 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
155
* 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**
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
* .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
174
## Robotran v1.9.2