Skip to content

Commit 4d6862b

Browse files
committed
Fixing outcomes of ROS states
1 parent f03f1ec commit 4d6862b

File tree

5 files changed

+21
-19
lines changed

5 files changed

+21
-19
lines changed

yasmin_ros/include/yasmin_ros/action_state.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ template <typename ActionT> class ActionState : public yasmin::State {
311311
* - `basic_outcomes::CANCEL`: The action was canceled.
312312
* - `basic_outcomes::TIMEOUT`: The action server was not available in time.
313313
*/
314-
std::string execute(yasmin::Blackboard::SharedPtr blackboard) {
314+
std::string execute(yasmin::Blackboard::SharedPtr blackboard) override {
315315

316316
std::unique_lock<std::mutex> lock(this->action_done_mutex);
317317
int retry_count = 0;

yasmin_ros/include/yasmin_ros/monitor_state.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,15 @@ template <typename MsgT> class MonitorState : public yasmin::State {
117117
MonitorHandler monitor_handler, rclcpp::QoS qos = 10,
118118
rclcpp::CallbackGroup::SharedPtr callback_group = nullptr,
119119
int msg_queue = 10, int timeout = -1, int maximum_retry = 3)
120-
: State({basic_outcomes::CANCEL}), topic_name(topic_name),
120+
: State(outcomes), topic_name(topic_name),
121121
monitor_handler(monitor_handler), qos(qos), msg_queue(msg_queue),
122122
timeout(timeout), maximum_retry(maximum_retry) {
123123

124-
// set outcomes
124+
// Set outcomes
125125
if (timeout > 0) {
126126
this->outcomes.insert(basic_outcomes::TIMEOUT);
127127
}
128+
this->outcomes.insert(basic_outcomes::CANCEL);
128129

129130
if (outcomes.size() > 0) {
130131
for (const std::string &outcome : outcomes) {

yasmin_ros/yasmin_ros/action_state.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def __init__(
4444
action_type: Type,
4545
action_name: str,
4646
create_goal_handler: Callable,
47-
outcomes: Set[str] = None,
47+
outcomes: Set[str] = set(),
4848
result_handler: Callable = None,
4949
feedback_handler: Callable = None,
5050
callback_group: CallbackGroup = None,
@@ -102,13 +102,12 @@ def __init__(
102102
## Maximum number of retries.
103103
self._maximum_retry: int = maximum_retry
104104

105-
_outcomes = [SUCCEED, ABORT, CANCEL]
105+
# Set outcomes
106+
outcomes = set(outcomes)
107+
outcomes.update({SUCCEED, ABORT, CANCEL})
106108

107109
if self._wait_timeout or self._response_timeout:
108-
_outcomes.append(TIMEOUT)
109-
110-
if outcomes:
111-
_outcomes = _outcomes + outcomes
110+
outcomes.add(TIMEOUT)
112111

113112
## Shared pointer to the ROS 2 node.
114113
self._node: Node = node
@@ -133,7 +132,7 @@ def __init__(
133132
if not self._create_goal_handler:
134133
raise ValueError("create_goal_handler is needed")
135134

136-
super().__init__(_outcomes)
135+
super().__init__(outcomes)
137136

138137
def cancel_state(self) -> None:
139138
"""

yasmin_ros/yasmin_ros/monitor_state.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,12 @@ def __init__(
7777
## Timeout in seconds for message reception.
7878
self._timeout: int = timeout
7979

80+
# Set outcomes
81+
outcomes = set(outcomes)
82+
outcomes.update({CANCEL})
83+
8084
if timeout is not None:
81-
outcomes = [TIMEOUT] + outcomes
82-
outcomes = [CANCEL] + outcomes
85+
outcomes.add(TIMEOUT)
8386

8487
## Shared pointer to the ROS 2 node.
8588
self._node: Node = node

yasmin_ros/yasmin_ros/service_state.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def __init__(
4242
srv_type: Type,
4343
srv_name: str,
4444
create_request_handler: Callable,
45-
outcomes: Set[str] = None,
45+
outcomes: Set[str] = set(),
4646
response_handler: Callable = None,
4747
callback_group: CallbackGroup = None,
4848
node: Node = None,
@@ -79,13 +79,12 @@ def __init__(
7979
## Timeout for the service response.
8080
self._response_timeout: float = response_timeout
8181

82-
_outcomes = [SUCCEED, ABORT]
82+
# Set outcomes
83+
outcomes = set(outcomes)
84+
outcomes.update({SUCCEED, ABORT})
8385

8486
if self._wait_timeout or self._response_timeout:
85-
_outcomes.append(TIMEOUT)
86-
87-
if outcomes:
88-
_outcomes = _outcomes + outcomes
87+
outcomes.add(TIMEOUT)
8988

9089
## The ROS 2 node used to communicate with the service.
9190
self._node = node
@@ -116,7 +115,7 @@ def __init__(
116115
## Event to signal when the service response is received.
117116
self._response_received_event: Event = Event()
118117

119-
super().__init__(_outcomes)
118+
super().__init__(outcomes)
120119

121120
def execute(self, blackboard: Blackboard) -> str:
122121
"""

0 commit comments

Comments
 (0)