No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro lyrical showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.1.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-06-10
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demonstrates SrEventCountdown in a superstate: counts failures (timer timeouts and 'f' keypresses) across inner state transitions, with a 3-attempt retry limit.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_retry_logic_1

Demonstrates a state reactor (SrEventCountdown) defined in a superstate. The reactor counts failures across inner state transitions, implementing a 3-attempt retry limit before giving up. This pattern answers the question: can a parent state accumulate event history that persists while its inner states cycle? The answer is yes — and this machine shows how.

What it demonstrates

  • SrEventCountdown(3) lives in SsAttemptTask (a superstate), not in any leaf state.
  • The reactor counts timer timeouts and explicit ‘f’ keypresses as failures.
  • The failure count persists across StIdle ↔ StAttempting inner transitions — it is not reset when the inner states change.
  • After 3 total failures (any combination), the superstate transitions to StExhausted.
  • Pressing s at any point during an attempt — or while waiting in StIdle — transitions immediately to StSuccess.

State hierarchy

SmRetryLogic1
├── OrTimer    (ClRos2Timer)
└── OrKeyboard (ClKeyboard)

SmRetryLogic1
├── SsAttemptTask  ←  superstate; owns SrEventCountdown(3)
│   │              Reactor input events: EvTimer, EvKeyPressF
│   │              Reactor output event: EvCountdownEnd → StExhausted
│   │              Also reacts: EvKeyPressS → StSuccess
│   │
│   ├── StIdle       (initial)  — waiting for 'n' to start an attempt
│   └── StAttempting            — attempt in progress; 10s timeout
│
├── StSuccess    — reached by pressing 's' at any time
└── StExhausted  — reached after 3 total failures

Build

cd /home/brettpac/workspaces/isaac_ros-dev
colcon build --packages-select sm_retry_logic_1
source install/setup.bash

Launch

ros2 launch sm_retry_logic_1 sm_retry_logic_1.launch.py

This opens two konsole terminals: the state machine node and the keyboard server.

Keyboard controls

Key Effect Active in
n Start an attempt (StIdle → StAttempting) StIdle
f Manually fail the current attempt (StAttempting → StIdle, counts as 1 failure) StAttempting
s Succeed immediately (→ StSuccess) StIdle or StAttempting
(timer) 10-second timeout = auto-fail (StAttempting → StIdle, counts as 1 failure) StAttempting

Send keystrokes via ROS 2 topic (if not using the konsole keyboard server):

ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 110" --once  # n
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 102" --once  # f
ros2 topic pub /keyboard_unicode std_msgs/msg/UInt16 "data: 115" --once  # s

Example walkthroughs

Reach StExhausted via 3 manual failures

Start → StIdle
  → press n → StAttempting
  → press f → StIdle          (failure count: 2 remaining)
  → press n → StAttempting
  → press f → StIdle          (failure count: 1 remaining)
  → press n → StAttempting
  → press f → StExhausted     (failure count: 0, EvCountdownEnd fires)

Reach StExhausted via 3 timer timeouts

Start → StIdle
  → press n → StAttempting → wait 10s → StIdle   (failure count: 2 remaining)
  → press n → StAttempting → wait 10s → StIdle   (failure count: 1 remaining)
  → press n → StAttempting → wait 10s → StExhausted

Reach StSuccess after 2 failures

``` Start → StIdle → press n → StAttempting → press f → StIdle (failure count: 2 remaining) → press n → StAttempting → press f → StIdle (failure count: 1 remaining) → press n → StAttempting

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_retry_logic_1 at Robotics Stack Exchange