From d00290f781e774d32050c2abfdd81763e2f1383f Mon Sep 17 00:00:00 2001 From: Enrico Eberhard <32450951+eeberhard@users.noreply.github.com> Date: Wed, 8 Sep 2021 11:20:19 +0200 Subject: [PATCH 01/22] Release/v4.0.0 (#202) * Set version 4.0.0 * Rename control-libraries * Update all references to control_libraries to the new repo name control-libraries * Update CHANGELOG --- CHANGELOG.md | 103 +++++++++++++++++++------- CONTRIBUTING.md | 13 ++-- README.md | 18 ++--- demos/control_loop_examples/README.md | 2 +- demos/ros_examples/README.md | 4 +- doxygen/README.md | 2 +- doxygen/docs/README.md | 4 +- doxygen/docs/index.html | 2 +- doxygen/doxygen.conf | 2 +- protocol/README.md | 4 +- protocol/clproto_cpp/CMakeLists.txt | 2 +- python/Dockerfile.python | 10 +-- python/README.md | 12 +-- python/run.sh | 2 +- python/setup.py | 4 +- source/CMakeLists.txt | 2 +- source/README.md | 4 +- 17 files changed, 121 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d066c7df..7d4881b30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,46 +1,97 @@ # CHANGELOG Release Versions: +- [4.0.0](#400) - [3.1.0](#310) - [3.0.0](#300) - [2.0.0](#200) - [1.0.0](#100) -## Upcoming changes (in development) +## 4.0.0 -- Protobuf message protocol and C++ binding library `clproto` for -serializing and deserializing control library objects -(#168, #175, #177, #179, #180, #190) -- Methods for packing and unpacking multiple encoded state messages -into serialized message packets (#182) -- Add set_data function (#163) -- Move set_data declaration to State and add it for Ellipsoid (#166) +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](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) -- Build and push development dependencies image in CI and related - restructuring of Docker resources (#169) -- Correct an error in the `makefile` of the protobuf bindings and remove - the generated bindings from the repository, while providing installation - scripts (#174) +- 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) -- Refactor JointState tests and split them into separate test suites (#183, #187) - Add missing integration constructor from JointAccelerations for JointVelocities (#185) -- Remove previously deprecated from_std_vector function (#186) -- Refactor CartesianState tests and split them into separate test suites (#188) -- Add scalar division operator for CartesianState and its derived classes (#192) -- Remove invalid multiplication operators for CartesianState and its derived classes (#195) - Fix path to Dockerfile in demos (#197) -### Pending TODOs for the next release +### Behind the scenes -- Revise `*=` and `*` operators in Cartesian types before the next release with - breaking changes (some are marked *deprecated*, and some are left as is, but - they should be deleted) (#156) -- Add the wrench computation in the `*` operator and `inverse` function (#134) -- Refactor and improve unittests for state_representation (especially JointState - and CartesianState) -- Rename repository +- Refactor JointState tests and split them into separate test suites (#183, #187) +- Refactor CartesianState tests and split them into separate test suites (#188) ## 3.1.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76ed4efb0..41728d8b9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,8 +4,8 @@ This repository is still under development, and we welcome user engagement to find bugs, resolve issues and add useful features. Before contributing to this repository, please first discuss the change you wish to make -by using the repository [Discussions](https://github.com/epfl-lasa/control_libraries/discussions), -opening an [issue](https://github.com/epfl-lasa/control_libraries/issues), +by using the repository [Discussions](https://github.com/epfl-lasa/control-libraries/discussions), +opening an [issue](https://github.com/epfl-lasa/control-libraries/issues), or by contacting the maintainers of this repository directly. @@ -96,9 +96,10 @@ they can be marked as `EXPERIMENTAL` to exclude them from compilation. At the time of release, a release branch should be made from development. In the release branch, the project version number should be updated in the following locations: -- The [top-level CMakeLists](source/CMakeLists.txt) -- The [python bindings setup.py](python/setup.py) -- The PROJECT_NUMBER in the [doxygen config](doxygen/doxygen.conf) +- The [top-level CMakeLists](./source/CMakeLists.txt) +- The [python bindings setup.py](./python/setup.py) +- The [clproto bindings CMakeLists](./protocol/clproto_cpp/CMakeLists.txt) +- The PROJECT_NUMBER in the [doxygen config](./doxygen/doxygen.conf) In addition, the release branch should be used to finalize the [changelog](CHANGELOG.md), which includes moving all content from the "Upcoming changes (in development)" header under a new header with the corresponding @@ -108,4 +109,4 @@ Once the changes specific to the release have been approved, a linear GitFlow st merge this release branch into `main`, and then additionally squash and rebase the release branch back into `develop`. View and join the full discussion surrounding release workflow and strategy here: \ -https://github.com/epfl-lasa/control_libraries/discussions/77 \ No newline at end of file +https://github.com/epfl-lasa/control-libraries/discussions/77 \ No newline at end of file diff --git a/README.md b/README.md index d0f8261ab..0e2dec760 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,16 @@ Status - Main + Main - +
- + - Development - + Development + @@ -21,18 +21,18 @@ A set of libraries to facilitate the creation of full control loop algorithms, including trajectory planning, kinematics, dynamics and control. -Documentation is available at epfl-lasa.github.io/control_libraries +Documentation is available at epfl-lasa.github.io/control-libraries ## Core libraries For the implementation, installation and documentation of the core libraries, see the -source folder. +source folder. ## Python bindings -There exist Python bindings for core control library modules. See the python +There exist Python bindings for core control library modules. See the python folder for installation instructions and currently supported libraries. ## Demos -For examples and demos in plain C++, ROS, and ROS2, refer to the demos folder. +For examples and demos in plain C++, ROS, and ROS2, refer to the demos folder. diff --git a/demos/control_loop_examples/README.md b/demos/control_loop_examples/README.md index c5c1108d1..cef1e1a5e 100644 --- a/demos/control_loop_examples/README.md +++ b/demos/control_loop_examples/README.md @@ -7,7 +7,7 @@ ## Running demonstration scripts This package contains a set of demonstration scripts that showcase the functionalities introduced in the different -libraries of `control_libraries`. +libraries of `control-libraries`. The easiest way to run them is to use the `run-demo-script.sh` file. Without arguments, this script create a demo container and opens in interactive mode, allowing you to browse the different demo scripts and run the one of your choice: diff --git a/demos/ros_examples/README.md b/demos/ros_examples/README.md index cf113314f..3daf4b3c1 100644 --- a/demos/ros_examples/README.md +++ b/demos/ros_examples/README.md @@ -46,14 +46,14 @@ To run this script and visualize the robot, follow the steps below to launch a * - in a first terminal, run: ```bash - cd control_libraries/demos/ros_examples + cd control-libraries/demos/ros_examples bash run-demo.sh # this will build a docker image and spin up a container # inside the container roslaunch ros_examples joint_space_velocity_control.launch robot_name:=franka ``` - in a second terminal, run: ```bash - # in a directory of your choice (preferably not in the control_libraries directory) + # in a directory of your choice (preferably not in the control-libraries directory) git clone https://github.com/domire8/pybullet_ros.git --branch control-libraries-demo --single-branch cd pybullet_ros/docker bash build-run.sh # this will build a docker image and spin up a container diff --git a/doxygen/README.md b/doxygen/README.md index add6cc7fa..0111d2db7 100644 --- a/doxygen/README.md +++ b/doxygen/README.md @@ -17,4 +17,4 @@ A GitHub workflow automatically generates the html documentation and commits it to the `docs` branch of this repo. GitHub Pages is configured to read the static page content from this branch and serves it from the following URL: -https://epfl-lasa.github.io/control_libraries +https://epfl-lasa.github.io/control-libraries diff --git a/doxygen/docs/README.md b/doxygen/docs/README.md index ee8f54662..895f72e34 100644 --- a/doxygen/docs/README.md +++ b/doxygen/docs/README.md @@ -1,4 +1,4 @@ -# https://epfl-lasa.github.io/control_libraries +# https://epfl-lasa.github.io/control-libraries This branch hosts html documentation auto-generated from the control libraries source code using doxygen and hosted using GitHub Pages. @@ -6,4 +6,4 @@ using doxygen and hosted using GitHub Pages. The content of this branch is not intended to be viewed or edited directly. Instead, please refer to the following page to view the documentation: -https://epfl-lasa.github.io/control_libraries +https://epfl-lasa.github.io/control-libraries diff --git a/doxygen/docs/index.html b/doxygen/docs/index.html index 8a56fb905..db1c849ae 100644 --- a/doxygen/docs/index.html +++ b/doxygen/docs/index.html @@ -8,7 +8,7 @@

Documented branches and tags