[misc] Minor code quality improvements.
This release brings minor performance improvement. It is mainly intended to improvement overall code quality and consistency with standard naming conventions (essentially Mujoco terminology). A convenience tool to interpolate trajectories in Lie group space has also been added.
New features
- [core|python/viewer] Provide generic interpolation method for configuration evolution over time. Use it in Python viewer.
Improvements
- [core] Compute subtree coms by default.
- [core] Do not compute 'oMf' for 'JOINT' and 'BODY' frames but rather copy data from 'oMi' and 'oMf'.
- [core] Improvement breakpoint management to avoid skipping controller/sensor updates.
- [core] Return static variables for Robot 'getControlLimit' and 'getArmatures' to avoid memory allocations.
- [core] Set 'command' and 'u_custom' to zero automatically before calling callbacks.
- [core] Improve vector 'clamp' utility to avoid memory allocation.
- [core/python] Make sure registered variables vector is 1D.
- [core|python] Add option to monitor motor efforts and plot them by default instead of command.
- [python/robot] Enable setting options only partially.
- [python/dynamics] Add optional flag to update collisions. Fix com jacobian not computed even if requested.
- [python/simulator] Do not forbid to render system at if no simulation is running.
- [gym/common] Ensure float64 action buffer for compatibility with register_variable telemetry.
- [gym/common/envs] Increment 'num_steps' only at the end of successful step, not right before integration.
- [gym/common/envs] Set robot in neutral configuration at init.
Bug fixes
- [core] Fix edge case in controller breakpoints management.
- [gym/common/envs] Fix edge case for robot without sensors.
- [gym/common/envs] Do not enforce position/velocity/effort bounds at _setup to avoid inconsistent observation/action spaces bounds.
Miscellaneous
- [misc] Move to C++17 for dependencies.
- [core] Rename 'rotorInertia' in 'armature' to be consistent with mujoco and clearer that it is joint side.
- [core] Rename 'EffortLimit' in 'ControlLimit' to avoid redundancy with pinocchio::Data and explicit it is motor-side.
- [core] Rename 'ControlLimit' in 'CommandLimit' for consistency.
- [core] Rename 'u_command' in 'command' to clarify it does not have to be an effort.
- [core] Add dedicated 'u_custom' field for controller's internal dynamics.
- [core] Replace 'u' with more specific variable name when possible.
- [core] Split evaluation of custom internal dynamics from position/velocity bounds and flexibility dynamics.