Skip to content

Commit 6b2f6a9

Browse files
authored
Merge pull request #2695 from tier4/feat/add_modifier_planning_factor
feat(trajectory_modifier): add PlanningFactor interface
2 parents 2ee0b66 + 4d3aa1f commit 6b2f6a9

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

planning/autoware_trajectory_modifier/include/autoware/trajectory_modifier/trajectory_modifier_plugins/trajectory_modifier_plugin_base.hpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#define AUTOWARE__TRAJECTORY_MODIFIER__TRAJECTORY_MODIFIER_PLUGINS__TRAJECTORY_MODIFIER_PLUGIN_BASE_HPP_
1919
#include "autoware/trajectory_modifier/trajectory_modifier_structs.hpp"
2020

21+
#include <autoware/planning_factor_interface/planning_factor_interface.hpp>
2122
#include <autoware_utils_debug/time_keeper.hpp>
2223
#include <rclcpp/rclcpp.hpp>
2324

@@ -32,6 +33,7 @@
3233

3334
namespace autoware::trajectory_modifier::plugin
3435
{
36+
using autoware_internal_planning_msgs::msg::PlanningFactor;
3537
using autoware_planning_msgs::msg::TrajectoryPoint;
3638
using TrajectoryPoints = std::vector<TrajectoryPoint>;
3739

@@ -61,6 +63,24 @@ class TrajectoryModifierPluginBase
6163
rclcpp::Node * get_node_ptr() const { return node_ptr_; }
6264
std::shared_ptr<autoware_utils_debug::TimeKeeper> get_time_keeper() const { return time_keeper_; }
6365

66+
virtual void publish_planning_factor()
67+
{
68+
if (planning_factor_interface_) {
69+
planning_factor_interface_->publish();
70+
}
71+
}
72+
std::vector<PlanningFactor> get_planning_factors() const
73+
{
74+
if (planning_factor_interface_ != nullptr) {
75+
return planning_factor_interface_->get_factors();
76+
}
77+
return {};
78+
}
79+
80+
protected:
81+
std::unique_ptr<autoware::planning_factor_interface::PlanningFactorInterface>
82+
planning_factor_interface_;
83+
6484
private:
6585
std::string name_;
6686
rclcpp::Node * node_ptr_;

planning/autoware_trajectory_modifier/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
<depend>autoware_internal_planning_msgs</depend>
1919
<depend>autoware_motion_utils</depend>
20+
<depend>autoware_planning_factor_interface</depend>
2021
<depend>autoware_planning_msgs</depend>
2122
<depend>autoware_utils</depend>
2223
<depend>autoware_utils_debug</depend>

planning/autoware_trajectory_modifier/src/trajectory_modifier.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ void TrajectoryModifier::on_traj(const CandidateTrajectories::ConstSharedPtr msg
6969
for (auto & trajectory : output_trajectories.candidate_trajectories) {
7070
for (auto & modifier : modifier_plugins_) {
7171
modifier->modify_trajectory(trajectory.points, params_, data_);
72+
modifier->publish_planning_factor();
7273
}
7374
}
7475

planning/autoware_trajectory_modifier/src/trajectory_modifier_plugins/stop_point_fixer.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ StopPointFixer::StopPointFixer(
3333
const TrajectoryModifierParams & params)
3434
: TrajectoryModifierPluginBase(name, node_ptr, time_keeper, params)
3535
{
36+
planning_factor_interface_ =
37+
std::make_unique<autoware::planning_factor_interface::PlanningFactorInterface>(
38+
node_ptr, "stop_point_fixer");
3639
set_up_params();
3740
}
3841

@@ -61,6 +64,13 @@ void StopPointFixer::modify_trajectory(
6164
{
6265
if (is_trajectory_modification_required(traj_points, params, data)) {
6366
utils::replace_trajectory_with_stop_point(traj_points, data.current_odometry.pose.pose);
67+
68+
// Add PlanningFactor for the stop decision
69+
const auto & ego_pose = data.current_odometry.pose.pose;
70+
planning_factor_interface_->add(
71+
traj_points, ego_pose, ego_pose, PlanningFactor::STOP,
72+
autoware_internal_planning_msgs::msg::SafetyFactorArray{});
73+
6474
auto clock_ptr = get_node_ptr()->get_clock();
6575
RCLCPP_DEBUG_THROTTLE(
6676
get_node_ptr()->get_logger(), *clock_ptr, 5000,

0 commit comments

Comments
 (0)