Releases: epfl-lasa/control-libraries
Version 6.3.1
Version 6.3.0
Version 6.3.0 contains behind-the-scenes structural improvements to Dockerfiles and GitHub workflows and clarifies the license requirements of the library and its dependencies.
Fixes and improvements
Version 6.2.0
Version 6.2.0 contains minor changes to the Python bindings and robot model installation dependencies.
Features and improvements
An inconsistency in nomenclature was resolved; see issue #308 and PR #309 for more details.
Behind the scenes, the docker images for development dependencies and proto dependencies are now built for multiple architectures: linux/amd64
and linux/arm64
.
At the time of release, no pre-built arm64 binaries existed for Pinocchio, a dependency of the robot_model library. For this reason, the installation script is revised to install Pinocchio from source, which has the side effect of simplifying the CMake configuration; the path inclusion of /opt/openrobots
is no longer required.
Version 6.1.0
Version 6.1.0 contains a few small new features as well as several fixes, mainly in
the implementation of state_representation Parameters.
Features
state_representation
- Add non-templated helper function to create shared ParameterInterface (#301)
- Add remove_parameter to ParameterMap (#302)
- Support truthiness in State objects with bool operator (#303)
Fixes and improvements
general
Version 6.0.0
Control Libraries version 6.0.0
Version 6.0.0 refactors the StateType enum in state representation to be more descriptive and widely useful as well as
the dynamical systems factory for easier creation of these classes. This major change breaks implementations using
StateType enums explicitly (e.g. for parameters) and dynamical systems from the prior version.
See the updated documentation for usage guidelines for the DynamicalSystemsFactory.
This release also includes a few new features, fixes and improvements as well as updated documentation in
all parts of the control libraries.
Breaking changes
This release contains the following breaking changes:
- Refactor
StateType
enum andParameterType
enum (#277, #278, #280, #284) - Relocate the
DYNAMICAL_SYSTEM_TYPE
enum to the generaldynamical_systems
namespace (#288)
state_representation
To make the StateType
enum more descriptive and useful, individual spatial state types have been added
and the ParameterType
moved to a separate enum. This change helps with the translation of parameters and
encoded states in downstream projects by allowing for greater introspection of data types from this enum.
Any implementations that use StateType
from a prior version to create parameters or compare state types should be
updated.
dynamical_systems
The previous DYNAMICAL_SYSTEM
enum has been removed from the dynamical system factory class and put directly in the
general dynamical_systems
namespace and renamed to DYNAMICAL_SYSTEM_TYPE
to shorten the creation and to have the
same structure as the controllers factory.
Any implementations that use the previous enum have to be updated. See the documentation for more information.
Features
state_representation
- Add CartesianState attribute setters from std vector and coefficients (#291)
python
- Use pyquaternion in bindings (#283)
protocol
Fixes and improvements
state_representation
- Mark Parameter getters as const (#289)
- Throw exception upon parameter validation in controllers (#290)
python
- Fix if else conditions in setup.py to correctly install modules (#285)
general
Version 5.2.0
Version 5.2.0 contains a few fixes and a new feature for the Impedance controller.
Features
controllers
- Add force limit parameter to Impedance controller (#276)
Fixes
general
Version 5.1.0
Version 5.1.0 contains a few new features and improvements to the behaviour and usage of the libraries.
Features
python
Fixes and improvements
protocol
- Add Docker resources for testing and serving for protocol (#267)
python
state_representation
- ParameterInterface accessors to underlying parameters (#256)
general
Version 5.0.0
Control Libraries version 5.0.0
Version 5.0.0 refactors the dynamical systems and controllers libraries with a
factory pattern and parameter interface for easier creation, manipulation and
substitution of these classes. This major change breaks any implementations using
dynamical systems or controllers from the prior version.
See the updated documentation for usage guidelines for the new DynamicalSystemsFactory
and ControllerFactory.
This release also includes substantial improvements to the python bindings, including
class bindings for the dynamical systems library. Additional fixes and improvements
have been made throughout the framework.
Breaking changes
This release contains the following breaking changes:
- Relocate
Jacobian
andJointState
family headers - Refactor dynamical system classes to use
IDynamicalSystem
base interface - Refactor controller classes to use
IController
base interface
state_representation
To make joint-space files more structurally consistent with Cartesian-space files,
the following headers have been relocated.
state_representation/robot/Joint*.hpp
headers are now instate_representation/space/joint/Joint*.hpp
state_representation/robot/Jacobian.hpp
header is now instate_representation/space/Jacobian.hpp
Any C++ implementations that include the files from a prior version should update the file paths
in the #include
directives. The namespaces themselves in C++ and Python are unaffected.
dynamical_systems
The previous DS classes inheriting from the concrete DynamicalSystem
base class have been
refactored and partially renamed to inherit from the new abstract IDynamicalSystem
base class.
dynamical_systems::Blending
has been removeddynamical_systems::Circular
has been refactoreddynamical_systems::DynamicalSystem
has been refactored and renamed todynamical_systems::IDynamicalSystem
dynamical_systems::Linear
has been refactored and renamed todynamical_systems::PointAttractor
dynamical_systems::Ring
has been refactoreddynamical_systems::DefaultDynamicalSystem
has been introduced
It is no longer recommended to directly instantiate and use these classes. The new factory method
dynamical_systems::DynamicalSystemFactory<S>::create_dynamical_system(type)
should be used instead.
See the documentation for more information.
controllers
The previous controller classes inheriting from the concrete Controller
base class have been
refactored and partially renamed to inherit from the new abstract IController
base class.
controllers::Controller
has been refactored and renamed tocontrollers::Controller
controllers::CartesianTwistController
has been refactored and renamed tocontrollers::CompliantTwist
controllers::Dissipative
has been refactoredcontrollers::Impedance
has been refactoredcontrollers::VelocityImpedance
has been refactored
It is no longer recommended to directly instantiate and use these classes. The new factory method
controllers::ControllerFactory<S>::create_controller(type)
should be used instead.
See the documentation for more information.
Features
state_representation
- Add CartesianAcceleration class in state representation (#248)
dynamical_systems
- Create DS interface and DS factory classes (#227)
- Refactor Linear DS to PointAttractor DS with factory (#229)
- Refactor Circular DS with factory (#230)
- Refactor Ring DS with factory and remove old DS base class (#231)
- Refactor dynamical systems using factory pattern (#233)
- Propagate DS refactor to demos (#234)
- Avoid exception with the default DS in evaluate (#237)
- Add the
set_parameter_value
function in the DS base class (#236) - Remove the
set_base_frame
logic forJointState
based DS
and overrideis_compatible
for PointAttractor DS (#236, #239) - Return a state that has same name as input in PointAttractor (#241)
- Update README of dynamical systems (#242)
controllers
python
- Add python bindings for dynamical_systems module (#238)
clproto
- Update pybindings and clproto with CartesianAcceleration (#250)
Fixes and improvements
state_representation
- Add static method to create Parameter pointer (#226)
- Templated get_value method for Parameter (#228)
- Mark the JointState as filled when one index was set (#245)
- Add ParameterMap base class (#247)
- Relocate Jacobian and JointState family files to the 'space/' directory (#249, #251)
python
- Add support for copy module in Python bindings (#232)
- Add empty constructors and python bindings for the
Shape and Ellipsoid classes (#235)
general
- Install Eigen version 3.4 manually (#240)
Behind the scenes
Version 4.1.0
Control Libraries version 4.1.0
Version 4.1.0 contains a few improvements to the behaviour and usage of the libraries,
namely to the Python bindings and the clproto
serialization library.
Fixes and improvements
clproto
- JSON conversion support for clproto (#205)
- Support empty state objects in clproto (#207)
- Add int and int array parameters (#208)
- Add build testing option to clproto install (#216)
- Fix the field size type for clproto pack_fields (#222)
python
- Python bindings for clproto (#204)
- Add Python bindings for Parameter class (#209)
- Add possibility to have a ssh server for Python testing (#211)
- Add Python bindings for clproto encode / decode of Parameter class (#214)
state_representation
- Add method to get a joint state by name or index of the joint,
and to get the index of the joint by its name (#210) - Improve CartesianState tests in C++ and Python (#213)
- Add method to set a joint state by name or index of the joint (#217)
- Add the
set_timestamp
method to theState
base class (#218)
general
- Add proto Dockerfile to copy protobuf files from (#221)
Version 4.0.0
Control Libraries version 4.0.0
Version 4.0.0 introduces some powerful new features for using state_representation
objects
in real applications, including the brand new clproto
C++ serialization library on the basis of Protobuf.
Many additional fixes and improvements have been made across the modules, and some deprecated methods
have now been removed with this major version release.
This release also marks the repository being renamed to control-libraries
(formerly control_libraries
).
See the following notes for more details.
Breaking changes
This release contains the following breaking changes:
- Rename repository to control-libraries
- Remove previously deprecated from_std_vector function (#186)
- Remove invalid multiplication operators for CartesianState and its derived classes (#195)
Repository namespace
The repository and all associated references have been renamed from epfl-lasa/control_libraries
to
epfl-lasa/control-libraries
. This is to better match the GitHub repository standard style and to match
the pattern in the container names. This breaking change will necessitate downstream users to update their
installation paths when cloning from GitHub.
state_representation
The following functions have been removed:
CartesianState::from_std_vector
CartesianPose::from_std_vector
Ellipsoid::from_std_vector
JointState::from_std_vector
JointPositions::from_std_vector
The following multiplication operations are no longer permitted:
CartesianState *= CartesianPose | CartesianTwist | CartesianWrench
CartesianPose *= CartesianTwist | CartesianWrench | CartesianState
CartesianTwist *= CartesianPose | CartesianTwist | CartesianWrench | CartesianState
CartesianTwist * CartesianPose | CartesianTwist | CartesianWrench | CartesianState
CartesianWrench *= CartesianPose | CartesianTwist | CartesianWrench | CartesianState
CartesianWrench * CartesianPose | CartesianTwist | CartesianWrench | CartesianState
The permitted multiplication operations are:
CartesianState *= CartesianState
CartesianState * CartesianPose | CartesianTwist | CartesianWrench | CartesianState
CartesianPose *= CartesianPose
CartesianPose * CartesianPose | CartesianTwist | CartesianWrench | CartesianState
Features
The biggest feature to come with 4.0.0 is the Protobuf schema for state_representation
types and the
associated clproto
C++ serialization library. See the documentation for more information.
Speaking of documentation, documentation is now generated and hosted for each release and for the main and develop
branches at:
https://epfl-lasa.github.io/control-libraries
Similarly, docker images for development and downstream use are now also built and hosted automatically.
The state_representation
API has seen a number of smaller features to introduce new classes, methods and operators.
- Protobuf message protocol and C++ binding library
clproto
for serializing and deserializing control library objects
(#168, #175, #177, #179, #180, #190) - Build and push development dependencies image in CI and related restructuring of Docker resources (#169)
- Add automatic documentation generation and deployment to GitHub Pages (#170, #199)
- Add set_data function declaration to all State objects (#163, #166)
- Add class JointAccelerations (#173)
- Methods for packing and unpacking multiple encoded state messages
into serialized message packets (#182) - Add scalar division operator for CartesianState and its derived classes (#192)
Fixes and improvements
- Correct an error in the
makefile
of the protobuf bindings and remove
the generated bindings from the repository, while providing installation scripts (#174) - Fix clamp_state_variable function for CartesianState and JointState (#176, #191)
- Install tagged versions of osqp and osqpEigen (#184)
- Add missing integration constructor from JointAccelerations for JointVelocities (#185)
- Fix path to Dockerfile in demos (#197)