Skip to content

Commit 228f7c6

Browse files
kobayu858Koichi98
andauthored
feat(external_cmd_selector): apply agnocast_wrapper::Node to external_cmd_selector (autowarefoundation#13013)
* feat(external_cmd_selector): apply agnocast_wrapper::Node to external_cmd_selector Co-authored-by: Koichi Imai <koichi.imai.2@tier4.jp> Signed-off-by: kobayu858 <yutaro.kobayashi.2@tier4.jp> * refactor: revert comment Signed-off-by: kobayu858 <yutaro.kobayashi.2@tier4.jp> * refactor: revert comment Signed-off-by: kobayu858 <yutaro.kobayashi.2@tier4.jp> --------- Signed-off-by: kobayu858 <yutaro.kobayashi.2@tier4.jp> Co-authored-by: Koichi Imai <koichi.imai.2@tier4.jp>
1 parent fb09314 commit 228f7c6

5 files changed

Lines changed: 114 additions & 96 deletions

File tree

‎control/autoware_external_cmd_selector/CMakeLists.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ ament_auto_add_library(${PROJECT_NAME}_node SHARED
88
src/autoware_external_cmd_selector/external_cmd_selector_node.cpp
99
)
1010

11-
rclcpp_components_register_node(${PROJECT_NAME}_node
11+
autoware_agnocast_wrapper_register_node(${PROJECT_NAME}_node
1212
PLUGIN "autoware::external_cmd_selector::ExternalCmdSelector"
1313
EXECUTABLE autoware_external_cmd_selector
14+
AGNOCAST_EXECUTOR AgnocastOnlyCallbackIsolatedExecutor
15+
ROS2_EXECUTOR SingleThreadedExecutor
1416
)
1517

1618
ament_auto_package(INSTALL_TO_SHARE

‎control/autoware_external_cmd_selector/include/autoware/external_cmd_selector/external_cmd_selector_node.hpp‎

Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#ifndef AUTOWARE__EXTERNAL_CMD_SELECTOR__EXTERNAL_CMD_SELECTOR_NODE_HPP_
1616
#define AUTOWARE__EXTERNAL_CMD_SELECTOR__EXTERNAL_CMD_SELECTOR_NODE_HPP_
1717

18+
#include <autoware/agnocast_wrapper/diagnostic_updater.hpp>
19+
#include <autoware/agnocast_wrapper/node.hpp>
1820
#include <diagnostic_updater/diagnostic_updater.hpp>
1921
#include <diagnostic_updater/update_functions.hpp>
2022
#include <rclcpp/rclcpp.hpp>
@@ -33,7 +35,7 @@
3335

3436
namespace autoware::external_cmd_selector
3537
{
36-
class ExternalCmdSelector : public rclcpp::Node
38+
class ExternalCmdSelector : public autoware::agnocast_wrapper::Node
3739
{
3840
public:
3941
explicit ExternalCmdSelector(const rclcpp::NodeOptions & node_options);
@@ -55,54 +57,58 @@ class ExternalCmdSelector : public rclcpp::Node
5557
rclcpp::CallbackGroup::SharedPtr callback_group_services_;
5658

5759
// Publisher
58-
rclcpp::Publisher<CommandSourceMode>::SharedPtr pub_current_selector_mode_;
59-
rclcpp::Publisher<PedalsCommand>::SharedPtr pub_pedals_cmd_;
60-
rclcpp::Publisher<SteeringCommand>::SharedPtr pub_steering_cmd_;
61-
rclcpp::Publisher<OperatorHeartbeat>::SharedPtr pub_heartbeat_;
62-
rclcpp::Publisher<GearCommand>::SharedPtr pub_gear_cmd_;
63-
rclcpp::Publisher<TurnIndicatorsCommand>::SharedPtr pub_turn_indicators_cmd_;
64-
rclcpp::Publisher<HazardLightsCommand>::SharedPtr pub_hazard_lights_cmd_;
60+
AUTOWARE_PUBLISHER_PTR(CommandSourceMode) pub_current_selector_mode_;
61+
AUTOWARE_PUBLISHER_PTR(PedalsCommand) pub_pedals_cmd_;
62+
AUTOWARE_PUBLISHER_PTR(SteeringCommand) pub_steering_cmd_;
63+
AUTOWARE_PUBLISHER_PTR(OperatorHeartbeat) pub_heartbeat_;
64+
AUTOWARE_PUBLISHER_PTR(GearCommand) pub_gear_cmd_;
65+
AUTOWARE_PUBLISHER_PTR(TurnIndicatorsCommand) pub_turn_indicators_cmd_;
66+
AUTOWARE_PUBLISHER_PTR(HazardLightsCommand) pub_hazard_lights_cmd_;
6567

6668
// Subscriber
67-
rclcpp::Subscription<PedalsCommand>::SharedPtr sub_local_pedals_cmd_;
68-
rclcpp::Subscription<SteeringCommand>::SharedPtr sub_local_steering_cmd_;
69-
rclcpp::Subscription<OperatorHeartbeat>::SharedPtr sub_local_heartbeat_;
70-
rclcpp::Subscription<GearCommand>::SharedPtr sub_local_gear_cmd_;
71-
rclcpp::Subscription<TurnIndicatorsCommand>::SharedPtr sub_local_turn_indicators_cmd_;
72-
rclcpp::Subscription<HazardLightsCommand>::SharedPtr sub_local_hazard_lights_cmd_;
73-
74-
rclcpp::Subscription<PedalsCommand>::SharedPtr sub_remote_pedals_cmd_;
75-
rclcpp::Subscription<SteeringCommand>::SharedPtr sub_remote_steering_cmd_;
76-
rclcpp::Subscription<OperatorHeartbeat>::SharedPtr sub_remote_heartbeat_;
77-
rclcpp::Subscription<GearCommand>::SharedPtr sub_remote_gear_cmd_;
78-
rclcpp::Subscription<TurnIndicatorsCommand>::SharedPtr sub_remote_turn_indicators_cmd_;
79-
rclcpp::Subscription<HazardLightsCommand>::SharedPtr sub_remote_hazard_lights_cmd_;
69+
AUTOWARE_SUBSCRIPTION_PTR(PedalsCommand) sub_local_pedals_cmd_;
70+
AUTOWARE_SUBSCRIPTION_PTR(SteeringCommand) sub_local_steering_cmd_;
71+
AUTOWARE_SUBSCRIPTION_PTR(OperatorHeartbeat) sub_local_heartbeat_;
72+
AUTOWARE_SUBSCRIPTION_PTR(GearCommand) sub_local_gear_cmd_;
73+
AUTOWARE_SUBSCRIPTION_PTR(TurnIndicatorsCommand) sub_local_turn_indicators_cmd_;
74+
AUTOWARE_SUBSCRIPTION_PTR(HazardLightsCommand) sub_local_hazard_lights_cmd_;
75+
76+
AUTOWARE_SUBSCRIPTION_PTR(PedalsCommand) sub_remote_pedals_cmd_;
77+
AUTOWARE_SUBSCRIPTION_PTR(SteeringCommand) sub_remote_steering_cmd_;
78+
AUTOWARE_SUBSCRIPTION_PTR(OperatorHeartbeat) sub_remote_heartbeat_;
79+
AUTOWARE_SUBSCRIPTION_PTR(GearCommand) sub_remote_gear_cmd_;
80+
AUTOWARE_SUBSCRIPTION_PTR(TurnIndicatorsCommand) sub_remote_turn_indicators_cmd_;
81+
AUTOWARE_SUBSCRIPTION_PTR(HazardLightsCommand) sub_remote_hazard_lights_cmd_;
8082

8183
template <class T, class F>
82-
std::function<void(const T &)> bind_on_cmd(F && func, uint8_t mode)
84+
std::function<void(const AUTOWARE_MESSAGE_CONST_SHARED_PTR(T) &)> bind_on_cmd(
85+
F && func, uint8_t mode)
8386
{
8487
return std::bind(func, this, std::placeholders::_1, mode);
8588
}
86-
void on_pedals_cmd(const PedalsCommand & msg, uint8_t mode);
87-
void on_steering_cmd(const SteeringCommand & msg, uint8_t mode);
88-
void on_heartbeat(const OperatorHeartbeat & msg, uint8_t mode);
89-
void on_gear_cmd(const GearCommand & msg, uint8_t mode);
90-
void on_turn_indicators_cmd(const TurnIndicatorsCommand & msg, uint8_t mode);
91-
void on_hazard_lights_cmd(const HazardLightsCommand & msg, uint8_t mode);
89+
void on_pedals_cmd(const AUTOWARE_MESSAGE_CONST_SHARED_PTR(PedalsCommand) & msg, uint8_t mode);
90+
void on_steering_cmd(
91+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(SteeringCommand) & msg, uint8_t mode);
92+
void on_heartbeat(const AUTOWARE_MESSAGE_CONST_SHARED_PTR(OperatorHeartbeat) & msg, uint8_t mode);
93+
void on_gear_cmd(const AUTOWARE_MESSAGE_CONST_SHARED_PTR(GearCommand) & msg, uint8_t mode);
94+
void on_turn_indicators_cmd(
95+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(TurnIndicatorsCommand) & msg, uint8_t mode);
96+
void on_hazard_lights_cmd(
97+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(HazardLightsCommand) & msg, uint8_t mode);
9298

9399
// Service
94-
rclcpp::Service<CommandSourceSelect>::SharedPtr srv_select_external_command_;
100+
AUTOWARE_SERVICE_PTR(CommandSourceSelect) srv_select_external_command_;
95101
std::atomic<uint8_t> current_selector_mode_;
96102
bool on_select_external_command(
97-
const CommandSourceSelect::Request::SharedPtr req,
98-
const CommandSourceSelect::Response::SharedPtr res);
103+
const AUTOWARE_SERVER_REQUEST_PTR(CommandSourceSelect) & req,
104+
const AUTOWARE_SERVER_RESPONSE_PTR(CommandSourceSelect) & res);
99105

100106
// Timer
101-
rclcpp::TimerBase::SharedPtr timer_;
107+
AUTOWARE_TIMER_PTR timer_;
102108
void on_timer();
103109

104110
// Diagnostics Updater
105-
diagnostic_updater::Updater updater_{this};
111+
autoware::agnocast_wrapper::diagnostic_updater::Updater updater_{this};
106112
};
107113
} // namespace autoware::external_cmd_selector
108114
#endif // AUTOWARE__EXTERNAL_CMD_SELECTOR__EXTERNAL_CMD_SELECTOR_NODE_HPP_

‎control/autoware_external_cmd_selector/launch/external_cmd_selector.launch.py‎

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
from launch import LaunchDescription
1616
from launch.actions import DeclareLaunchArgument
1717
from launch.actions import GroupAction
18+
from launch.actions import IncludeLaunchDescription
1819
from launch.actions import OpaqueFunction
20+
from launch.launch_description_sources import PythonLaunchDescriptionSource
1921
from launch.substitutions import LaunchConfiguration
20-
from launch_ros.actions import LoadComposableNodes
22+
from launch.substitutions import PathJoinSubstitution
23+
from launch_ros.actions import Node
2124
from launch_ros.actions import PushRosNamespace
22-
from launch_ros.descriptions import ComposableNode
25+
from launch_ros.substitutions import FindPackageShare
2326
import yaml
2427

2528

@@ -31,51 +34,45 @@ def launch_setup(context, *args, **kwargs):
3134
with open(LaunchConfiguration("external_cmd_selector_param_path").perform(context), "r") as f:
3235
external_cmd_selector_param = yaml.safe_load(f)["/**"]["ros__parameters"]
3336

34-
component = ComposableNode(
37+
remappings = [
38+
_create_mapping_tuple("service/select_external_command"),
39+
_create_mapping_tuple("output/current_selector_mode"),
40+
_create_mapping_tuple("input/local/pedals_cmd"),
41+
_create_mapping_tuple("input/local/steering_cmd"),
42+
_create_mapping_tuple("input/local/heartbeat"),
43+
_create_mapping_tuple("input/local/gear_cmd"),
44+
_create_mapping_tuple("input/local/turn_indicators_cmd"),
45+
_create_mapping_tuple("input/local/hazard_lights_cmd"),
46+
_create_mapping_tuple("input/remote/pedals_cmd"),
47+
_create_mapping_tuple("input/remote/steering_cmd"),
48+
_create_mapping_tuple("input/remote/heartbeat"),
49+
_create_mapping_tuple("input/remote/gear_cmd"),
50+
_create_mapping_tuple("input/remote/turn_indicators_cmd"),
51+
_create_mapping_tuple("input/remote/hazard_lights_cmd"),
52+
_create_mapping_tuple("output/pedals_cmd"),
53+
_create_mapping_tuple("output/steering_cmd"),
54+
_create_mapping_tuple("output/heartbeat"),
55+
_create_mapping_tuple("output/gear_cmd"),
56+
_create_mapping_tuple("output/turn_indicators_cmd"),
57+
_create_mapping_tuple("output/hazard_lights_cmd"),
58+
]
59+
60+
node = Node(
3561
package="autoware_external_cmd_selector",
36-
plugin="autoware::external_cmd_selector::ExternalCmdSelector",
62+
executable="autoware_external_cmd_selector",
3763
name="external_cmd_selector",
38-
remappings=[
39-
_create_mapping_tuple("service/select_external_command"),
40-
_create_mapping_tuple("output/current_selector_mode"),
41-
_create_mapping_tuple("input/local/pedals_cmd"),
42-
_create_mapping_tuple("input/local/steering_cmd"),
43-
_create_mapping_tuple("input/local/heartbeat"),
44-
_create_mapping_tuple("input/local/gear_cmd"),
45-
_create_mapping_tuple("input/local/turn_indicators_cmd"),
46-
_create_mapping_tuple("input/local/hazard_lights_cmd"),
47-
_create_mapping_tuple("input/remote/pedals_cmd"),
48-
_create_mapping_tuple("input/remote/steering_cmd"),
49-
_create_mapping_tuple("input/remote/heartbeat"),
50-
_create_mapping_tuple("input/remote/gear_cmd"),
51-
_create_mapping_tuple("input/remote/turn_indicators_cmd"),
52-
_create_mapping_tuple("input/remote/hazard_lights_cmd"),
53-
_create_mapping_tuple("output/pedals_cmd"),
54-
_create_mapping_tuple("output/steering_cmd"),
55-
_create_mapping_tuple("output/heartbeat"),
56-
_create_mapping_tuple("output/gear_cmd"),
57-
_create_mapping_tuple("output/turn_indicators_cmd"),
58-
_create_mapping_tuple("output/hazard_lights_cmd"),
59-
],
64+
remappings=remappings,
6065
parameters=[
6166
external_cmd_selector_param,
6267
],
63-
extra_arguments=[
64-
{
65-
"use_intra_process_comms": LaunchConfiguration("use_intra_process"),
66-
}
67-
],
68-
)
69-
70-
loader = LoadComposableNodes(
71-
composable_node_descriptions=[component],
72-
target_container=LaunchConfiguration("target_container"),
68+
additional_env={"LD_PRELOAD": LaunchConfiguration("ld_preload_value")},
69+
output="screen",
7370
)
7471

7572
group = GroupAction(
7673
[
7774
PushRosNamespace(""),
78-
loader,
75+
node,
7976
]
8077
)
8178

@@ -85,9 +82,6 @@ def launch_setup(context, *args, **kwargs):
8582
def generate_launch_description():
8683
# fmt: off
8784
arguments = [
88-
# component
89-
DeclareLaunchArgument("use_intra_process"),
90-
DeclareLaunchArgument("target_container"),
9185
# mode select
9286
DeclareLaunchArgument("service/select_external_command", default_value="~/select_external_command"),
9387
DeclareLaunchArgument("output/current_selector_mode", default_value="~/current_selector_mode"),
@@ -115,4 +109,16 @@ def generate_launch_description():
115109
]
116110
# fmt: on
117111

118-
return LaunchDescription(arguments + [OpaqueFunction(function=launch_setup)])
112+
agnocast_env = IncludeLaunchDescription(
113+
PythonLaunchDescriptionSource(
114+
PathJoinSubstitution(
115+
[
116+
FindPackageShare("autoware_agnocast_wrapper"),
117+
"launch",
118+
"agnocast_env.launch.py",
119+
]
120+
)
121+
)
122+
)
123+
124+
return LaunchDescription(arguments + [agnocast_env, OpaqueFunction(function=launch_setup)])

‎control/autoware_external_cmd_selector/package.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<buildtool_depend>autoware_cmake</buildtool_depend>
1818

1919
<depend>autoware_adapi_v1_msgs</depend>
20-
<depend>autoware_qos_utils</depend>
20+
<depend>autoware_agnocast_wrapper</depend>
2121
<depend>autoware_vehicle_msgs</depend>
2222
<depend>diagnostic_updater</depend>
2323
<depend>geometry_msgs</depend>

‎control/autoware_external_cmd_selector/src/autoware_external_cmd_selector/external_cmd_selector_node.cpp‎

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414

1515
#include "autoware/external_cmd_selector/external_cmd_selector_node.hpp"
1616

17-
#include <autoware/qos_utils/qos_compatibility.hpp>
18-
1917
#include <chrono>
2018
#include <cstdint>
2119
#include <memory>
@@ -26,7 +24,7 @@ namespace autoware::external_cmd_selector
2624
{
2725

2826
ExternalCmdSelector::ExternalCmdSelector(const rclcpp::NodeOptions & node_options)
29-
: Node("external_cmd_selector", node_options)
27+
: autoware::agnocast_wrapper::Node("external_cmd_selector", node_options)
3028
{
3129
using std::placeholders::_1;
3230
using std::placeholders::_2;
@@ -52,7 +50,7 @@ ExternalCmdSelector::ExternalCmdSelector(const rclcpp::NodeOptions & node_option
5250
callback_group_services_ =
5351
this->create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive);
5452

55-
auto subscriber_option = rclcpp::SubscriptionOptions();
53+
AUTOWARE_SUBSCRIPTION_OPTIONS subscriber_option;
5654
subscriber_option.callback_group = callback_group_subscribers_;
5755

5856
// Subscriber
@@ -114,7 +112,7 @@ ExternalCmdSelector::ExternalCmdSelector(const rclcpp::NodeOptions & node_option
114112
srv_select_external_command_ = create_service<CommandSourceSelect>(
115113
"~/service/select_external_command",
116114
std::bind(&ExternalCmdSelector::on_select_external_command, this, _1, _2),
117-
AUTOWARE_DEFAULT_SERVICES_QOS_PROFILE(), callback_group_services_);
115+
rclcpp::ServicesQoS(), callback_group_services_);
118116

119117
// Initialize mode
120118
auto convert_selector_mode = [](const std::string & mode_text) {
@@ -136,50 +134,56 @@ ExternalCmdSelector::ExternalCmdSelector(const rclcpp::NodeOptions & node_option
136134

137135
// Timer
138136
const auto period_ns = rclcpp::Rate(update_rate).period();
139-
timer_ = rclcpp::create_timer(
137+
timer_ = autoware::agnocast_wrapper::create_timer(
140138
this, get_clock(), period_ns, std::bind(&ExternalCmdSelector::on_timer, this),
141139
callback_group_subscribers_);
142140
}
143141

144-
void ExternalCmdSelector::on_pedals_cmd(const PedalsCommand & msg, uint8_t mode)
142+
void ExternalCmdSelector::on_pedals_cmd(
143+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(PedalsCommand) & msg, uint8_t mode)
145144
{
146145
if (current_selector_mode_.load() != mode) return;
147-
pub_pedals_cmd_->publish(msg);
146+
pub_pedals_cmd_->publish(*msg);
148147
}
149148

150-
void ExternalCmdSelector::on_steering_cmd(const SteeringCommand & msg, uint8_t mode)
149+
void ExternalCmdSelector::on_steering_cmd(
150+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(SteeringCommand) & msg, uint8_t mode)
151151
{
152152
if (current_selector_mode_.load() != mode) return;
153-
pub_steering_cmd_->publish(msg);
153+
pub_steering_cmd_->publish(*msg);
154154
}
155155

156-
void ExternalCmdSelector::on_heartbeat(const OperatorHeartbeat & msg, uint8_t mode)
156+
void ExternalCmdSelector::on_heartbeat(
157+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(OperatorHeartbeat) & msg, uint8_t mode)
157158
{
158159
if (current_selector_mode_.load() != mode) return;
159-
pub_heartbeat_->publish(msg);
160+
pub_heartbeat_->publish(*msg);
160161
}
161162

162-
void ExternalCmdSelector::on_gear_cmd(const GearCommand & msg, uint8_t mode)
163+
void ExternalCmdSelector::on_gear_cmd(
164+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(GearCommand) & msg, uint8_t mode)
163165
{
164166
if (current_selector_mode_.load() != mode) return;
165-
pub_gear_cmd_->publish(msg);
167+
pub_gear_cmd_->publish(*msg);
166168
}
167169

168-
void ExternalCmdSelector::on_turn_indicators_cmd(const TurnIndicatorsCommand & msg, uint8_t mode)
170+
void ExternalCmdSelector::on_turn_indicators_cmd(
171+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(TurnIndicatorsCommand) & msg, uint8_t mode)
169172
{
170173
if (current_selector_mode_.load() != mode) return;
171-
pub_turn_indicators_cmd_->publish(msg);
174+
pub_turn_indicators_cmd_->publish(*msg);
172175
}
173176

174-
void ExternalCmdSelector::on_hazard_lights_cmd(const HazardLightsCommand & msg, uint8_t mode)
177+
void ExternalCmdSelector::on_hazard_lights_cmd(
178+
const AUTOWARE_MESSAGE_CONST_SHARED_PTR(HazardLightsCommand) & msg, uint8_t mode)
175179
{
176180
if (current_selector_mode_.load() != mode) return;
177-
pub_hazard_lights_cmd_->publish(msg);
181+
pub_hazard_lights_cmd_->publish(*msg);
178182
}
179183

180184
bool ExternalCmdSelector::on_select_external_command(
181-
const CommandSourceSelect::Request::SharedPtr req,
182-
const CommandSourceSelect::Response::SharedPtr res)
185+
const AUTOWARE_SERVER_REQUEST_PTR(CommandSourceSelect) & req,
186+
const AUTOWARE_SERVER_RESPONSE_PTR(CommandSourceSelect) & res)
183187
{
184188
current_selector_mode_.store(req->mode.data);
185189
res->success = true;

0 commit comments

Comments
 (0)