Skip to content

Examples for a robust PlanSys2: clients on the controller's node, no waits of their own - #66

Merged
fmrico merged 2 commits into
rollingfrom
fix_robustness
Oct 21, 2026
Merged

fmrico merged 2 commits into
rollingfrom
fix_robustness

Conversation

@fmrico

@fmrico fmrico commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Part of a step-by-step bug-fixing plan towards PlanSys2 4.0.0, a robustness and reliability release. Sorry for all the notifications!

Hi PlanSys2 users,

The examples follow PlanSys2/ros2_planning_system#507 (part of PlanSys2/ros2_planning_system#505). The controllers create their clients on their own node. They need no executor for them, as the clients bring their own answers, so the controllers without callbacks of their own only call them from main. The patrolling controller shows the navigation feedback of EasyNav every 2 s: its own subscription, served by spin_some in its loop. Their own waits for PlanSys2 are gone: every call waits until its component is active. The greenhouse controller waits for all of PlanSys2 before loading its problem, as its world starts evolving at that moment.

The navigation performers wait up to 30 s for EasyNav (5 s before), and the BT Move node renews its EasyNav client while it waits. Started all at once, the examples failed when EasyNav came late. Depends on the PlanSys2 PR.

…waits of their own

The controllers create their clients on their own node and spin it in a thread from
the start. Their waits for PlanSys2 are gone: every call waits until its component is
active; the greenhouse controller waits for all of PlanSys2 before loading its
problem, as its world evolves from then on. The navigation performers wait up to 30 s
for EasyNav and the BT Move node renews its EasyNav client while it waits.

Signed-off-by: Francisco Martín Rico <fmrico@gmail.com>
…yNav's feedback

The PlanSys2 clients bring their own answers: the controllers no longer spin their node in a
thread for them, and those without callbacks of their own only call the clients from main.
The patrolling controller subscribes to easynav_control and shows the navigation feedback
every 2 s, served by spin_some in the loop of main, as an example of a controller with
callbacks of its own. It is built only with EasyNav, as move_action_node.

Signed-off-by: Francisco Martín Rico <fmrico@gmail.com>
@fmrico
fmrico marked this pull request as ready for review October 21, 2026 16:42
@fmrico
fmrico merged commit 48988a4 into rolling Oct 21, 2026
1 of 2 checks passed
@fmrico
fmrico deleted the fix_robustness branch October 21, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant