21
21
#include " autoware/behavior_path_planner_common/utils/utils.hpp"
22
22
23
23
#include < autoware/behavior_path_planner_common/turn_signal_decider.hpp>
24
+ #include < autoware/motion_utils/factor/planning_factor_interface.hpp>
24
25
#include < autoware/motion_utils/factor/steering_factor_interface.hpp>
25
26
#include < autoware/motion_utils/factor/velocity_factor_interface.hpp>
26
27
#include < autoware/motion_utils/marker/marker_helper.hpp>
54
55
55
56
namespace autoware ::behavior_path_planner
56
57
{
58
+ using autoware::motion_utils::PlanningFactorInterface;
57
59
using autoware::motion_utils::SteeringFactorInterface;
58
60
using autoware::motion_utils::VelocityFactorInterface;
59
61
using autoware::objects_of_interest_marker_interface::ColorName;
@@ -66,6 +68,8 @@ using autoware_adapi_v1_msgs::msg::SteeringFactor;
66
68
using autoware_adapi_v1_msgs::msg::VelocityFactor;
67
69
using tier4_planning_msgs::msg::AvoidanceDebugMsgArray;
68
70
using tier4_planning_msgs::msg::PathWithLaneId;
71
+ using tier4_planning_msgs::msg::PlanningFactor;
72
+ using tier4_planning_msgs::msg::SafetyFactorArray;
69
73
using tier4_rtc_msgs::msg::State;
70
74
using unique_identifier_msgs::msg::UUID;
71
75
using visualization_msgs::msg::MarkerArray;
@@ -82,6 +86,27 @@ enum class ModuleStatus {
82
86
class SceneModuleInterface
83
87
{
84
88
public:
89
+ SceneModuleInterface (
90
+ const std::string & name, rclcpp::Node & node,
91
+ std::unordered_map<std::string, std::shared_ptr<RTCInterface>> rtc_interface_ptr_map,
92
+ std::unordered_map<std::string, std::shared_ptr<ObjectsOfInterestMarkerInterface>>
93
+ objects_of_interest_marker_interface_ptr_map,
94
+ const std::shared_ptr<PlanningFactorInterface> planning_factor_interface)
95
+ : name_{name},
96
+ logger_{node.get_logger ().get_child (name)},
97
+ clock_{node.get_clock ()},
98
+ rtc_interface_ptr_map_ (std::move(rtc_interface_ptr_map)),
99
+ objects_of_interest_marker_interface_ptr_map_ (
100
+ std::move (objects_of_interest_marker_interface_ptr_map)),
101
+ planning_factor_interface_{planning_factor_interface},
102
+ time_keeper_ (std::make_shared<universe_utils::TimeKeeper>())
103
+ {
104
+ for (const auto & [module_name, ptr] : rtc_interface_ptr_map_) {
105
+ uuid_map_.emplace (module_name, generateUUID ());
106
+ }
107
+ }
108
+
109
+ // TODO(satoshi-ota): remove this constructor after all planning factors have been migrated.
85
110
SceneModuleInterface (
86
111
const std::string & name, rclcpp::Node & node,
87
112
std::unordered_map<std::string, std::shared_ptr<RTCInterface>> rtc_interface_ptr_map,
@@ -93,6 +118,7 @@ class SceneModuleInterface
93
118
rtc_interface_ptr_map_ (std::move(rtc_interface_ptr_map)),
94
119
objects_of_interest_marker_interface_ptr_map_(
95
120
std::move (objects_of_interest_marker_interface_ptr_map)),
121
+ planning_factor_interface_{std::make_shared<PlanningFactorInterface>(&node, " tmp" )},
96
122
time_keeper_ (std::make_shared<universe_utils::TimeKeeper>())
97
123
{
98
124
for (const auto & [module_name, ptr] : rtc_interface_ptr_map_) {
@@ -574,6 +600,24 @@ class SceneModuleInterface
574
600
path.points , getEgoPose (), slow_pose_.value ().pose , VelocityFactor::APPROACHING, " slow down" );
575
601
}
576
602
603
+ void set_longitudinal_planning_factor (const PathWithLaneId & path)
604
+ {
605
+ if (stop_pose_.has_value ()) {
606
+ planning_factor_interface_->add (
607
+ path.points , getEgoPose (), stop_pose_.value ().pose , PlanningFactor::STOP,
608
+ SafetyFactorArray{});
609
+ return ;
610
+ }
611
+
612
+ if (!slow_pose_.has_value ()) {
613
+ return ;
614
+ }
615
+
616
+ planning_factor_interface_->add (
617
+ path.points , getEgoPose (), slow_pose_.value ().pose , PlanningFactor::SLOW_DOWN,
618
+ SafetyFactorArray{});
619
+ }
620
+
577
621
void setDrivableLanes (const std::vector<DrivableLanes> & drivable_lanes);
578
622
579
623
BehaviorModuleOutput getPreviousModuleOutput () const { return previous_module_output_; }
@@ -627,6 +671,8 @@ class SceneModuleInterface
627
671
std::unordered_map<std::string, std::shared_ptr<ObjectsOfInterestMarkerInterface>>
628
672
objects_of_interest_marker_interface_ptr_map_;
629
673
674
+ mutable std::shared_ptr<PlanningFactorInterface> planning_factor_interface_;
675
+
630
676
mutable SteeringFactorInterface steering_factor_interface_;
631
677
632
678
mutable VelocityFactorInterface velocity_factor_interface_;
0 commit comments