Skip to content

Commit 031ddc6

Browse files
Merge branch 'master' into master
2 parents e20e63c + ac35696 commit 031ddc6

File tree

83 files changed

+1217
-361
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1217
-361
lines changed

ackermann_steering_controller/CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
Changelog for package ackermann_steering_controller
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.22.0 (2025-03-17)
6+
-------------------
7+
58
4.21.0 (2025-03-01)
69
-------------------
710
* Fix the exported interface naming in the chainable controllers (`#1528 <https://github.com/ros-controls/ros2_controllers/issues/1528>`_)

ackermann_steering_controller/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>ackermann_steering_controller</name>
5-
<version>4.21.0</version>
5+
<version>4.22.0</version>
66
<description>Steering controller for Ackermann kinematics. Rear fixed wheels are powering the vehicle and front wheels are steering it.</description>
77

88
<maintainer email="[email protected]">Bence Magyar</maintainer>

admittance_controller/CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
Changelog for package admittance_controller
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.22.0 (2025-03-17)
6+
-------------------
7+
58
4.21.0 (2025-03-01)
69
-------------------
710
* Cleanup dependencies (add `angles`, rm `filters`) (`#1555 <https://github.com/ros-controls/ros2_controllers/issues/1555>`_)

admittance_controller/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>admittance_controller</name>
5-
<version>4.21.0</version>
5+
<version>4.22.0</version>
66
<description>Implementation of admittance controllers for different input and output interface.</description>
77

88
<maintainer email="[email protected]">Bence Magyar</maintainer>

bicycle_steering_controller/CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
Changelog for package bicycle_steering_controller
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.22.0 (2025-03-17)
6+
-------------------
7+
58
4.21.0 (2025-03-01)
69
-------------------
710
* Fix the exported interface naming in the chainable controllers (`#1528 <https://github.com/ros-controls/ros2_controllers/issues/1528>`_)

bicycle_steering_controller/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>bicycle_steering_controller</name>
5-
<version>4.21.0</version>
5+
<version>4.22.0</version>
66
<description>Steering controller with bicycle kinematics. Rear fixed wheel is powering the vehicle and front wheel is steering.</description>
77

88
<maintainer email="[email protected]">Bence Magyar</maintainer>

diff_drive_controller/CHANGELOG.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
Changelog for package diff_drive_controller
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.22.0 (2025-03-17)
6+
-------------------
7+
* Use the custom validators directly from control_toolbox (`#1504 <https://github.com/ros-controls/ros2_controllers/issues/1504>`_)
8+
* Use new handles API in diff_drive_controller (`#1565 <https://github.com/ros-controls/ros2_controllers/issues/1565>`_)
9+
* Contributors: Christoph Fröhlich, Sai Kishor Kothakota
10+
511
4.21.0 (2025-03-01)
612
-------------------
713
* Fix the exported interface naming in the chainable controllers (`#1528 <https://github.com/ros-controls/ros2_controllers/issues/1528>`_)

diff_drive_controller/CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ endforeach()
3535
add_compile_definitions(RCPPUTILS_VERSION_MAJOR=${rcpputils_VERSION_MAJOR})
3636
add_compile_definitions(RCPPUTILS_VERSION_MINOR=${rcpputils_VERSION_MINOR})
3737

38+
# get include dirs from control_toolbox for the custom validators
39+
get_target_property(TB_INCLUDE_DIRS control_toolbox::rate_limiter_parameters INTERFACE_INCLUDE_DIRECTORIES)
3840
generate_parameter_library(diff_drive_controller_parameters
3941
src/diff_drive_controller_parameter.yaml
40-
include/diff_drive_controller/custom_validators.hpp
42+
${TB_INCLUDE_DIRS}/control_toolbox/custom_validators.hpp
4143
)
4244

4345
add_library(diff_drive_controller SHARED
@@ -51,7 +53,8 @@ target_include_directories(diff_drive_controller PUBLIC
5153
)
5254
target_link_libraries(diff_drive_controller
5355
PUBLIC
54-
diff_drive_controller_parameters)
56+
diff_drive_controller_parameters
57+
control_toolbox::rate_limiter_parameters)
5558
ament_target_dependencies(diff_drive_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS})
5659
pluginlib_export_plugin_description_file(controller_interface diff_drive_plugin.xml)
5760

diff_drive_controller/include/diff_drive_controller/custom_validators.hpp

Lines changed: 0 additions & 64 deletions
This file was deleted.

diff_drive_controller/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="3">
33
<name>diff_drive_controller</name>
4-
<version>4.21.0</version>
4+
<version>4.22.0</version>
55
<description>Controller for a differential-drive mobile base.</description>
66

77
<maintainer email="[email protected]">Bence Magyar</maintainer>

diff_drive_controller/src/diff_drive_controller.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,19 @@ controller_interface::return_type DiffDriveController::update_and_write_commands
167167
double right_feedback_mean = 0.0;
168168
for (size_t index = 0; index < static_cast<size_t>(wheels_per_side_); ++index)
169169
{
170-
const double left_feedback = registered_left_wheel_handles_[index].feedback.get().get_value();
171-
const double right_feedback =
172-
registered_right_wheel_handles_[index].feedback.get().get_value();
170+
const auto left_feedback_op =
171+
registered_left_wheel_handles_[index].feedback.get().get_optional();
172+
const auto right_feedback_op =
173+
registered_right_wheel_handles_[index].feedback.get().get_optional();
174+
175+
if (!left_feedback_op.has_value() || !right_feedback_op.has_value())
176+
{
177+
RCLCPP_DEBUG(logger, "Unable to retrieve the data from the left or right wheels feedback!");
178+
return controller_interface::return_type::OK;
179+
}
180+
181+
const double left_feedback = left_feedback_op.value();
182+
const double right_feedback = right_feedback_op.value();
173183

174184
if (std::isnan(left_feedback) || std::isnan(right_feedback))
175185
{
@@ -278,12 +288,18 @@ controller_interface::return_type DiffDriveController::update_and_write_commands
278288
(linear_command + angular_command * wheel_separation / 2.0) / right_wheel_radius;
279289

280290
// Set wheels velocities:
291+
bool set_command_result = true;
281292
for (size_t index = 0; index < static_cast<size_t>(wheels_per_side_); ++index)
282293
{
283-
registered_left_wheel_handles_[index].velocity.get().set_value(velocity_left);
284-
registered_right_wheel_handles_[index].velocity.get().set_value(velocity_right);
294+
set_command_result &=
295+
registered_left_wheel_handles_[index].velocity.get().set_value(velocity_left);
296+
set_command_result &=
297+
registered_right_wheel_handles_[index].velocity.get().set_value(velocity_right);
285298
}
286299

300+
RCLCPP_DEBUG_EXPRESSION(
301+
logger, !set_command_result, "Unable to set the command to one of the command handles!");
302+
287303
return controller_interface::return_type::OK;
288304
}
289305

diff_drive_controller/src/diff_drive_controller_parameter.yaml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -132,30 +132,30 @@ diff_drive_controller:
132132
type: double,
133133
default_value: .NAN,
134134
validation: {
135-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
135+
"control_filters::gt_eq_or_nan<>": [0.0]
136136
}
137137
}
138138
min_velocity: {
139139
type: double,
140140
default_value: .NAN,
141141
validation: {
142-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
142+
"control_filters::lt_eq_or_nan<>": [0.0]
143143
}
144144
}
145145
max_acceleration: {
146146
type: double,
147147
default_value: .NAN,
148148
description: "Maximum acceleration in forward direction.",
149149
validation: {
150-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
150+
"control_filters::gt_eq_or_nan<>": [0.0]
151151
}
152152
}
153153
max_deceleration: {
154154
type: double,
155155
default_value: .NAN,
156156
description: "Maximum deceleration in forward direction.",
157157
validation: {
158-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
158+
"control_filters::lt_eq_or_nan<>": [0.0]
159159
}
160160
}
161161
min_acceleration: {
@@ -168,29 +168,29 @@ diff_drive_controller:
168168
default_value: .NAN,
169169
description: "Maximum acceleration in reverse direction. If not set, -max_acceleration will be used.",
170170
validation: {
171-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
171+
"control_filters::lt_eq_or_nan<>": [0.0]
172172
}
173173
}
174174
max_deceleration_reverse: {
175175
type: double,
176176
default_value: .NAN,
177177
description: "Maximum deceleration in reverse direction. If not set, -max_deceleration will be used.",
178178
validation: {
179-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
179+
"control_filters::gt_eq_or_nan<>": [0.0]
180180
}
181181
}
182182
max_jerk: {
183183
type: double,
184184
default_value: .NAN,
185185
validation: {
186-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
186+
"control_filters::gt_eq_or_nan<>": [0.0]
187187
}
188188
}
189189
min_jerk: {
190190
type: double,
191191
default_value: .NAN,
192192
validation: {
193-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
193+
"control_filters::lt_eq_or_nan<>": [0.0]
194194
}
195195
}
196196
angular:
@@ -214,30 +214,30 @@ diff_drive_controller:
214214
type: double,
215215
default_value: .NAN,
216216
validation: {
217-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
217+
"control_filters::gt_eq_or_nan<>": [0.0]
218218
}
219219
}
220220
min_velocity: {
221221
type: double,
222222
default_value: .NAN,
223223
validation: {
224-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
224+
"control_filters::lt_eq_or_nan<>": [0.0]
225225
}
226226
}
227227
max_acceleration: {
228228
type: double,
229229
default_value: .NAN,
230230
description: "Maximum acceleration in positive direction.",
231231
validation: {
232-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
232+
"control_filters::gt_eq_or_nan<>": [0.0]
233233
}
234234
}
235235
max_deceleration: {
236236
type: double,
237237
default_value: .NAN,
238238
description: "Maximum deceleration in positive direction.",
239239
validation: {
240-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
240+
"control_filters::lt_eq_or_nan<>": [0.0]
241241
}
242242
}
243243
min_acceleration: {
@@ -250,28 +250,28 @@ diff_drive_controller:
250250
default_value: .NAN,
251251
description: "Maximum acceleration in negative direction. If not set, -max_acceleration will be used.",
252252
validation: {
253-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
253+
"control_filters::lt_eq_or_nan<>": [0.0]
254254
}
255255
}
256256
max_deceleration_reverse: {
257257
type: double,
258258
default_value: .NAN,
259259
description: "Maximum deceleration in negative direction. If not set, -max_deceleration will be used.",
260260
validation: {
261-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
261+
"control_filters::gt_eq_or_nan<>": [0.0]
262262
}
263263
}
264264
max_jerk: {
265265
type: double,
266266
default_value: .NAN,
267267
validation: {
268-
"diff_drive_controller::gt_eq_or_nan<>": [0.0]
268+
"control_filters::gt_eq_or_nan<>": [0.0]
269269
}
270270
}
271271
min_jerk: {
272272
type: double,
273273
default_value: .NAN,
274274
validation: {
275-
"diff_drive_controller::lt_eq_or_nan<>": [0.0]
275+
"control_filters::lt_eq_or_nan<>": [0.0]
276276
}
277277
}

0 commit comments

Comments
 (0)