Skip to content

Commit 73127b7

Browse files
fix(autoware_lane_departure_checker): not to show error message "trajectory deviation is too large" during manual driving (#8404)
* update: update not to show error message "trajectory deviation is too large" during manual driving Signed-off-by: T-Kimura-MM <tkc1110bs@gmail.com> * style(pre-commit): autofix --------- Signed-off-by: T-Kimura-MM <tkc1110bs@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent c28606b commit 73127b7

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker_node.hpp

+12
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
#include <diagnostic_updater/diagnostic_updater.hpp>
2424
#include <rclcpp/rclcpp.hpp>
2525

26+
#include <autoware_adapi_v1_msgs/msg/operation_mode_state.hpp>
2627
#include <autoware_map_msgs/msg/lanelet_map_bin.hpp>
2728
#include <autoware_planning_msgs/msg/lanelet_route.hpp>
2829
#include <autoware_planning_msgs/msg/trajectory.hpp>
30+
#include <autoware_vehicle_msgs/msg/control_mode_report.hpp>
2931
#include <geometry_msgs/msg/pose_stamped.hpp>
3032
#include <geometry_msgs/msg/pose_with_covariance_stamped.hpp>
3133
#include <nav_msgs/msg/odometry.hpp>
@@ -78,6 +80,12 @@ class LaneDepartureCheckerNode : public rclcpp::Node
7880
this, "~/input/reference_trajectory"};
7981
autoware::universe_utils::InterProcessPollingSubscriber<Trajectory> sub_predicted_trajectory_{
8082
this, "~/input/predicted_trajectory"};
83+
autoware::universe_utils::InterProcessPollingSubscriber<
84+
autoware_adapi_v1_msgs::msg::OperationModeState>
85+
sub_operation_mode_{this, "/api/operation_mode/state"};
86+
autoware::universe_utils::InterProcessPollingSubscriber<
87+
autoware_vehicle_msgs::msg::ControlModeReport>
88+
sub_control_mode_{this, "/vehicle/status/control_mode"};
8189

8290
// Data Buffer
8391
nav_msgs::msg::Odometry::ConstSharedPtr current_odom_;
@@ -91,13 +99,17 @@ class LaneDepartureCheckerNode : public rclcpp::Node
9199
lanelet::ConstLanelets route_lanelets_;
92100
Trajectory::ConstSharedPtr reference_trajectory_;
93101
Trajectory::ConstSharedPtr predicted_trajectory_;
102+
autoware_adapi_v1_msgs::msg::OperationModeState::ConstSharedPtr operation_mode_;
103+
autoware_vehicle_msgs::msg::ControlModeReport::ConstSharedPtr control_mode_;
94104

95105
// Callback
96106
void onOdometry(const nav_msgs::msg::Odometry::ConstSharedPtr msg);
97107
void onLaneletMapBin(const LaneletMapBin::ConstSharedPtr msg);
98108
void onRoute(const LaneletRoute::ConstSharedPtr msg);
99109
void onReferenceTrajectory(const Trajectory::ConstSharedPtr msg);
100110
void onPredictedTrajectory(const Trajectory::ConstSharedPtr msg);
111+
void onOperationMode(const autoware_adapi_v1_msgs::msg::OperationModeState::ConstSharedPtr msg);
112+
void onControlMode(const autoware_vehicle_msgs::msg::ControlModeReport::ConstSharedPtr msg);
101113

102114
// Publisher
103115
autoware::universe_utils::DebugPublisher debug_publisher_{this, "~/debug"};

control/autoware_lane_departure_checker/package.xml

+2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
<buildtool_depend>ament_cmake_auto</buildtool_depend>
1414
<buildtool_depend>autoware_cmake</buildtool_depend>
1515

16+
<depend>autoware_adapi_v1_msgs</depend>
1617
<depend>autoware_lanelet2_extension</depend>
1718
<depend>autoware_map_msgs</depend>
1819
<depend>autoware_motion_utils</depend>
1920
<depend>autoware_planning_msgs</depend>
2021
<depend>autoware_universe_utils</depend>
2122
<depend>autoware_vehicle_info_utils</depend>
23+
<depend>autoware_vehicle_msgs</depend>
2224
<depend>boost</depend>
2325
<depend>diagnostic_updater</depend>
2426
<depend>eigen</depend>

control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp

+20-1
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,16 @@ bool LaneDepartureCheckerNode::isDataReady()
216216
return false;
217217
}
218218

219+
if (!operation_mode_) {
220+
RCLCPP_INFO_THROTTLE(get_logger(), *get_clock(), 5000, "waiting for operation_mode msg...");
221+
return false;
222+
}
223+
224+
if (!control_mode_) {
225+
RCLCPP_INFO_THROTTLE(get_logger(), *get_clock(), 5000, "waiting for control_mode msg...");
226+
return false;
227+
}
228+
219229
return true;
220230
}
221231

@@ -260,6 +270,8 @@ void LaneDepartureCheckerNode::onTimer()
260270
route_ = sub_route_.takeData();
261271
reference_trajectory_ = sub_reference_trajectory_.takeData();
262272
predicted_trajectory_ = sub_predicted_trajectory_.takeData();
273+
operation_mode_ = sub_operation_mode_.takeData();
274+
control_mode_ = sub_control_mode_.takeData();
263275

264276
const auto lanelet_map_bin_msg = sub_lanelet_map_bin_.takeData();
265277
if (lanelet_map_bin_msg) {
@@ -426,6 +438,9 @@ void LaneDepartureCheckerNode::checkTrajectoryDeviation(
426438
diagnostic_updater::DiagnosticStatusWrapper & stat)
427439
{
428440
using DiagStatus = diagnostic_msgs::msg::DiagnosticStatus;
441+
using ControlModeStatus = autoware_vehicle_msgs::msg::ControlModeReport;
442+
using OperationModeStatus = autoware_adapi_v1_msgs::msg::OperationModeState;
443+
429444
int8_t level = DiagStatus::OK;
430445

431446
if (std::abs(output_.trajectory_deviation.lateral) >= param_.max_lateral_deviation) {
@@ -441,8 +456,12 @@ void LaneDepartureCheckerNode::checkTrajectoryDeviation(
441456
}
442457

443458
std::string msg = "OK";
444-
if (level == DiagStatus::ERROR) {
459+
if (
460+
level == DiagStatus::ERROR && operation_mode_->mode == OperationModeStatus::AUTONOMOUS &&
461+
control_mode_->mode == ControlModeStatus::AUTONOMOUS) {
445462
msg = "trajectory deviation is too large";
463+
} else {
464+
level = DiagStatus::OK;
446465
}
447466

448467
stat.addf("max lateral deviation", "%.3f", param_.max_lateral_deviation);

0 commit comments

Comments
 (0)