Skip to content

Commit c2666ac

Browse files
kyoichi-sugaharaKhalilSelyan
authored and
KhalilSelyan
committed
feat(autoware_lane_departure_checker): use polling subscriber (#7358)
* use polling subscriber Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp> --------- Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>
1 parent 2637768 commit c2666ac

File tree

2 files changed

+27
-51
lines changed

2 files changed

+27
-51
lines changed

control/lane_departure_checker/include/autoware_lane_departure_checker/lane_departure_checker_node.hpp

+11-5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#define AUTOWARE_LANE_DEPARTURE_CHECKER__LANE_DEPARTURE_CHECKER_NODE_HPP_
1717

1818
#include "autoware_lane_departure_checker/lane_departure_checker.hpp"
19+
#include "tier4_autoware_utils/ros/polling_subscriber.hpp"
1920

2021
#include <diagnostic_updater/diagnostic_updater.hpp>
2122
#include <rclcpp/rclcpp.hpp>
@@ -66,11 +67,16 @@ class LaneDepartureCheckerNode : public rclcpp::Node
6667

6768
private:
6869
// Subscriber
69-
rclcpp::Subscription<nav_msgs::msg::Odometry>::SharedPtr sub_odom_;
70-
rclcpp::Subscription<LaneletMapBin>::SharedPtr sub_lanelet_map_bin_;
71-
rclcpp::Subscription<LaneletRoute>::SharedPtr sub_route_;
72-
rclcpp::Subscription<Trajectory>::SharedPtr sub_reference_trajectory_;
73-
rclcpp::Subscription<Trajectory>::SharedPtr sub_predicted_trajectory_;
70+
tier4_autoware_utils::InterProcessPollingSubscriber<nav_msgs::msg::Odometry> sub_odom_{
71+
this, "~/input/odometry"};
72+
tier4_autoware_utils::InterProcessPollingSubscriber<LaneletMapBin> sub_lanelet_map_bin_{
73+
this, "~/input/lanelet_map_bin", rclcpp::QoS{1}.transient_local()};
74+
tier4_autoware_utils::InterProcessPollingSubscriber<LaneletRoute> sub_route_{
75+
this, "~/input/route"};
76+
tier4_autoware_utils::InterProcessPollingSubscriber<Trajectory> sub_reference_trajectory_{
77+
this, "~/input/reference_trajectory"};
78+
tier4_autoware_utils::InterProcessPollingSubscriber<Trajectory> sub_predicted_trajectory_{
79+
this, "~/input/predicted_trajectory"};
7480

7581
// Data Buffer
7682
nav_msgs::msg::Odometry::ConstSharedPtr current_odom_;

control/lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp

+16-46
Original file line numberDiff line numberDiff line change
@@ -169,22 +169,6 @@ LaneDepartureCheckerNode::LaneDepartureCheckerNode(const rclcpp::NodeOptions & o
169169
lane_departure_checker_ = std::make_unique<LaneDepartureChecker>();
170170
lane_departure_checker_->setParam(param_, vehicle_info);
171171

172-
// Subscriber
173-
sub_odom_ = this->create_subscription<nav_msgs::msg::Odometry>(
174-
"~/input/odometry", 1, std::bind(&LaneDepartureCheckerNode::onOdometry, this, _1));
175-
sub_lanelet_map_bin_ = this->create_subscription<LaneletMapBin>(
176-
"~/input/lanelet_map_bin", rclcpp::QoS{1}.transient_local(),
177-
std::bind(&LaneDepartureCheckerNode::onLaneletMapBin, this, _1));
178-
sub_route_ = this->create_subscription<LaneletRoute>(
179-
"~/input/route", rclcpp::QoS{1}.transient_local(),
180-
std::bind(&LaneDepartureCheckerNode::onRoute, this, _1));
181-
sub_reference_trajectory_ = this->create_subscription<Trajectory>(
182-
"~/input/reference_trajectory", 1,
183-
std::bind(&LaneDepartureCheckerNode::onReferenceTrajectory, this, _1));
184-
sub_predicted_trajectory_ = this->create_subscription<Trajectory>(
185-
"~/input/predicted_trajectory", 1,
186-
std::bind(&LaneDepartureCheckerNode::onPredictedTrajectory, this, _1));
187-
188172
// Publisher
189173
// Nothing
190174

@@ -201,36 +185,6 @@ LaneDepartureCheckerNode::LaneDepartureCheckerNode(const rclcpp::NodeOptions & o
201185
this, get_clock(), period_ns, std::bind(&LaneDepartureCheckerNode::onTimer, this));
202186
}
203187

204-
void LaneDepartureCheckerNode::onOdometry(const nav_msgs::msg::Odometry::ConstSharedPtr msg)
205-
{
206-
current_odom_ = msg;
207-
}
208-
209-
void LaneDepartureCheckerNode::onLaneletMapBin(const LaneletMapBin::ConstSharedPtr msg)
210-
{
211-
lanelet_map_ = std::make_shared<lanelet::LaneletMap>();
212-
lanelet::utils::conversion::fromBinMsg(*msg, lanelet_map_, &traffic_rules_, &routing_graph_);
213-
214-
// get all shoulder lanes
215-
lanelet::ConstLanelets all_lanelets = lanelet::utils::query::laneletLayer(lanelet_map_);
216-
shoulder_lanelets_ = lanelet::utils::query::shoulderLanelets(all_lanelets);
217-
}
218-
219-
void LaneDepartureCheckerNode::onRoute(const LaneletRoute::ConstSharedPtr msg)
220-
{
221-
route_ = msg;
222-
}
223-
224-
void LaneDepartureCheckerNode::onReferenceTrajectory(const Trajectory::ConstSharedPtr msg)
225-
{
226-
reference_trajectory_ = msg;
227-
}
228-
229-
void LaneDepartureCheckerNode::onPredictedTrajectory(const Trajectory::ConstSharedPtr msg)
230-
{
231-
predicted_trajectory_ = msg;
232-
}
233-
234188
bool LaneDepartureCheckerNode::isDataReady()
235189
{
236190
if (!current_odom_) {
@@ -300,6 +254,22 @@ void LaneDepartureCheckerNode::onTimer()
300254
tier4_autoware_utils::StopWatch<std::chrono::milliseconds> stop_watch;
301255
stop_watch.tic("Total");
302256

257+
current_odom_ = sub_odom_.takeData();
258+
route_ = sub_route_.takeData();
259+
reference_trajectory_ = sub_reference_trajectory_.takeData();
260+
predicted_trajectory_ = sub_predicted_trajectory_.takeData();
261+
262+
const auto lanelet_map_bin_msg = sub_lanelet_map_bin_.takeData();
263+
if (lanelet_map_bin_msg) {
264+
lanelet_map_ = std::make_shared<lanelet::LaneletMap>();
265+
lanelet::utils::conversion::fromBinMsg(
266+
*lanelet_map_bin_msg, lanelet_map_, &traffic_rules_, &routing_graph_);
267+
268+
// get all shoulder lanes
269+
lanelet::ConstLanelets all_lanelets = lanelet::utils::query::laneletLayer(lanelet_map_);
270+
shoulder_lanelets_ = lanelet::utils::query::shoulderLanelets(all_lanelets);
271+
}
272+
303273
if (!isDataReady()) {
304274
return;
305275
}

0 commit comments

Comments
 (0)