Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release: version 5.0.0 #156

Merged
merged 3 commits into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 86 additions & 25 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

Release Versions:

- [5.0.0](#500)
- [4.2.2](#422)
- [4.2.1](#421)
- [4.2.0](#420)
Expand All @@ -15,40 +16,100 @@ Release Versions:
- [2.1.1](#211)
- [2.1.0](#210)

## Upcoming changes
## 5.0.0

### Oktober 9th, 2024
eeberhard marked this conversation as resolved.
Show resolved Hide resolved

Version 5.0.0 is a major update to modulo developed for ROS 2 Jazzy Jalisco and ROS 2 control 4.17.0. If features even
more flexibility and performance in the component and controller base classes in `modulo_components` and
`modulo_controllers` and improved divison of responsability across `modulo_core`, `modulo_interfaces` (formerly
`modulo_component_interfaces`) and `modulo_utils`.

### Breaking changes

Due to the size and importance of this version update, the list of breaking changes is quite long.

#### modulo_component_interfaces

The package `modulo_component_interfaces` has been removed in favor of the recently added `modulo_interfaces`. All
common service and message definitions are now to be found in `modulo_interfaces`.

- refactor!: remove modulo_component_interfaces (#88)

#### modulo_utils

In order to minimize code duplication between `modulo_components` and `modulo_controllers`, which define classes with
very similar interfaces, shared dependencies have been moved to `modulo_utils`:

- Custom defined exceptions used across all modulo packages (#90, #117)
- Parsing utilities and the `PredicateVariant` (#89, #101)

#### modulo_core

Apart from a minor renaming in #77, `modulo_core` comes with an important features that breaks the ABI. Using heavy
templating and [`concepts`](https://en.cppreference.com/w/cpp/language/constraints)) introduced in C++20, it was
possible to extend the communication classes (`MessagePair`, `PublisherHandler` and `SubscriptionHandler`) to any ROS
message type.

- refactor(core)!: rename function in modulo translators (#77)
- feat!: add support for custom inputs and outputs (#133)

#### modulo_controllers

There is a new intermediate base class `BaseControllerInterface` that adds typical modulo interfaces (`add_parameter`,
`add_input`, `add_service`, etc.) to the `controller_interface::ControllerInterface` class from ROS 2 control. This
should allow simpler migration of pure ROS 2 control controller implementations to the modulo controller interface.
Additionally, the constructor of the `RobotControllerInterface` has an additional argument that allows to specify if
collision features should be enabled in the robot model.

- refactor(controllers)!: split up base class (#135)
- feat(controllers)!: add flag for collision features to robot controller interface (#114)

#### modulo_components

In the component classes, the `period` parameter has been removed for good and replaced by the `rate` parameter which
is not an integer type anymore but a floating type number. Manually published lifecycle predicates have been removed
because they can already be inferred from automatically published topics on the ROS network.

- feat(components)!: add mutex around step callback (#67)
- refactor(components)!: remove period parameter and make rate double (#108)
- refactor!: remove lifecycle predicates and add lifecycle state getter (#130)

### Features and Fixes

#### Core

- feat(interfaces): add message definition for encoded state (#132)
- feat(utils): add binary reader and recorder for encoded states (#152)

#### Components and Controllers

- refactor: rename function in modulo translators (#77)
- feat(components): add mutex around step callback (#67)
- refactor: move utilities to modulo_utils package (#89)
- refactor: move exceptions to modulo_utils (#90)
- refactor: remove modulo_component_interfaces (#88)
- feat(controllers): add add_interfaces function for derived controllers (#102)
- refactor(components): remove period parameter and make rate double (#108)
- feat(controllers): use exceptions from modulo utils and update to CL v8.1.0 (#106)
- feat: define topic validation warning in utilities (#101)
- refactor(controllers): change predicate topic of controllers (#121)
- fix(components): keep parameter values in sync with ros (#111)
- feat: update to jazzy and CL v9.0.0 (#116)
- refactor: move all exceptions into one place (#117)
- feat(controllers): add flag for collision features to robot controller interface (#114)
- feat: try catch lifecycle transitions in components and controllers (#120)
- refactor: change predicate topic of controllers (#121)
- fix(controllers): keep parameter values in sync with ros (#125)
- feat(components): only publish predicates on value change (#123)
- feat(controllers): only publish predicates on value change (#124)
- fix(controllers): keep parameter values in sync with ros (#125)
- feat: use v2.0.0-rc1-jazzy image (#126)
- feat: add message definition for encoded state (#132)
- refactor: remove lifecycle predicates and add lifecycle state getter (#130)
- fix(controllers): remove duplicate function (#140)
- feat: try catch lifecycle transitions in components and controllers (#120)
- feat(components): use component description schema 1-1-1 to mark lifecycle property (#136)
- refactor(controllers): split up base class (#135)
- docs(components): update schema path in component descriptions (#154)
- refactor(components): improve component error handling (#138)
- fix(components): correctly go through shutdown sequence (#157)

#### Build

- feat: update to jazzy and CL v9.0.0 (#116)
- feat: use v2.0.0-rc1-jazzy image (#126)
- release: use updated base image (#139)
- fix(controllers): remove duplicate function (#140)
- chore: format repository (#142)
- docs: update schema path in component descriptions (#154)
- feat(utils): add binary reader and recorder for encoded states (#152)
- feat!: add support for custom inputs and outputs (#133)
- release: version v5.0.0-rc0009 (#155)
- refactor(components): improve component error handling (#138)
- fix(components): correctly go through shutdown sequence (#157)

### Dependencies

- package-builder: v1.1.1
- ros2-ws: v2.0.0-jazzy
- control-libraries: v9.0.0

## 4.2.2

Expand Down
2 changes: 1 addition & 1 deletion aica-package.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#syntax=ghcr.io/aica-technology/package-builder:v1.1.1

[metadata]
version = "5.0.0-rc0011"
version = "5.0.0"
description = "Modular ROS 2 extension library for dynamic composition of components and controllers with the AICA robotics framework"

[metadata.collection]
Expand Down
2 changes: 1 addition & 1 deletion doxygen/doxygen.conf
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = "Modulo"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 4.2.2
PROJECT_NUMBER = 5.0.0

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
2 changes: 1 addition & 1 deletion source/modulo_components/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>modulo_components</name>
<version>4.2.2</version>
<version>5.0.0</version>
<description>Modulo base classes that wrap ROS2 Nodes as modular components for the AICA application framework</description>
<maintainer email="[email protected]">Baptiste Busch</maintainer>
<maintainer email="[email protected]">Enrico Eberhard</maintainer>
Expand Down
2 changes: 1 addition & 1 deletion source/modulo_controllers/package.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<package format="3">
<name>modulo_controllers</name>
<version>4.2.2</version>
<version>5.0.0</version>
<description>Interface class for modulo controllers</description>
<maintainer email="[email protected]">Enrico Eberhard</maintainer>
<maintainer email="[email protected]">Dominic Reber</maintainer>
Expand Down
2 changes: 1 addition & 1 deletion source/modulo_core/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>modulo_core</name>
<version>4.2.2</version>
<version>5.0.0</version>
<description>Modulo Core communication and translation utilities for interoperability with AICA Control Libraries</description>
<maintainer email="[email protected]">Baptiste Busch</maintainer>
<maintainer email="[email protected]">Enrico Eberhard</maintainer>
Expand Down
2 changes: 1 addition & 1 deletion source/modulo_utils/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>modulo_utils</name>
<version>4.2.2</version>
<version>5.0.0</version>
<description>Modulo utils package for shared test fixtures</description>
<maintainer email="[email protected]">Dominic Reber</maintainer>
<license>GPLv3</license>
Expand Down
Loading