Skip to content

Commit f3603d6

Browse files
dkoldaevkarishma1911
authored andcommitted
feat(map_based_prediction): incorporate crosswalk user history (autowarefoundation#6905)
Signed-off-by: Dmitrii Koldaev <dmitrii.koldaev@tier4.jp>
1 parent 2496e35 commit f3603d6

File tree

3 files changed

+209
-64
lines changed

3 files changed

+209
-64
lines changed

perception/map_based_prediction/config/map_based_prediction.param.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
timeout_set_for_no_intention_to_walk: [1.0, 0.0] # [s] values of map
2828
# parameter for shoulder lane prediction
2929
prediction_time_horizon_rate_for_validate_shoulder_lane_length: 0.8
30+
use_crosswalk_user_history:
31+
match_lost_and_appeared_users: false
32+
remember_lost_users: false
3033

3134
# parameters for lc prediction
3235
lane_change_detection:

perception/map_based_prediction/include/map_based_prediction/map_based_prediction_node.hpp

+20-5
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include <optional>
4949
#include <string>
5050
#include <unordered_map>
51+
#include <unordered_set>
5152
#include <utility>
5253
#include <vector>
5354

@@ -85,6 +86,12 @@ struct ObjectData
8586
Maneuver::UNINITIALIZED}; // output maneuver considering previous one shot maneuvers
8687
};
8788

89+
struct CrosswalkUserData
90+
{
91+
std_msgs::msg::Header header;
92+
autoware_auto_perception_msgs::msg::TrackedObject tracked_object;
93+
};
94+
8895
struct LaneletData
8996
{
9097
lanelet::Lanelet lanelet;
@@ -135,8 +142,10 @@ class MapBasedPredictionNode : public rclcpp::Node
135142
std::unique_ptr<tier4_autoware_utils::DebugPublisher> processing_time_publisher_;
136143

137144
// Object History
138-
std::unordered_map<std::string, std::deque<ObjectData>> objects_history_;
145+
std::unordered_map<std::string, std::deque<ObjectData>> road_users_history;
139146
std::map<std::pair<std::string, lanelet::Id>, rclcpp::Time> stopped_times_against_green_;
147+
std::unordered_map<std::string, std::deque<CrosswalkUserData>> crosswalk_users_history_;
148+
std::unordered_map<std::string, std::string> known_matches_;
140149

141150
// Lanelet Map Pointers
142151
std::shared_ptr<lanelet::LaneletMap> lanelet_map_ptr_;
@@ -200,6 +209,9 @@ class MapBasedPredictionNode : public rclcpp::Node
200209
std::vector<double> distance_set_for_no_intention_to_walk_;
201210
std::vector<double> timeout_set_for_no_intention_to_walk_;
202211

212+
bool match_lost_and_appeared_crosswalk_users_;
213+
bool remember_lost_crosswalk_users_;
214+
203215
std::unique_ptr<tier4_autoware_utils::PublishedTimePublisher> published_time_publisher_;
204216

205217
// Member Functions
@@ -222,8 +234,7 @@ class MapBasedPredictionNode : public rclcpp::Node
222234

223235
PredictedObject getPredictedObjectAsCrosswalkUser(const TrackedObject & object);
224236

225-
void removeOldObjectsHistory(
226-
const double current_time, const TrackedObjects::ConstSharedPtr in_objects);
237+
void removeStaleTrafficLightInfo(const TrackedObjects::ConstSharedPtr in_objects);
227238

228239
LaneletsData getCurrentLanelets(const TrackedObject & object);
229240
bool checkCloseLaneletCondition(
@@ -232,10 +243,14 @@ class MapBasedPredictionNode : public rclcpp::Node
232243
const lanelet::Lanelet & current_lanelet, const TrackedObject & object) const;
233244
void updateObjectData(TrackedObject & object);
234245

235-
void updateObjectsHistory(
246+
void updateRoadUsersHistory(
236247
const std_msgs::msg::Header & header, const TrackedObject & object,
237248
const LaneletsData & current_lanelets_data);
238-
249+
void updateCrosswalkUserHistory(
250+
const std_msgs::msg::Header & header, const TrackedObject & object,
251+
const std::string & object_id);
252+
std::string tryMatchNewObjectToDisappeared(
253+
const std::string & object_id, std::unordered_map<std::string, TrackedObject> & current_users);
239254
std::vector<PredictedRefPath> getPredictedReferencePath(
240255
const TrackedObject & object, const LaneletsData & current_lanelets_data,
241256
const double object_detected_time);

0 commit comments

Comments
 (0)