Skip to content

Commit 05e5c80

Browse files
author
Dmitrii Koldaev
committedApr 30, 2024
create crosswalk user history
Signed-off-by: Dmitrii Koldaev <dmitrii.koldaev@tier4.jp>
1 parent 39914e9 commit 05e5c80

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed
 

‎perception/map_based_prediction/include/map_based_prediction/map_based_prediction_node.hpp

+10
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ struct ObjectData
8585
Maneuver::UNINITIALIZED}; // output maneuver considering previous one shot maneuvers
8686
};
8787

88+
struct CrosswalkUserData
89+
{
90+
std_msgs::msg::Header header;
91+
autoware_auto_perception_msgs::msg::TrackedObject tracked_object;
92+
};
93+
8894
struct LaneletData
8995
{
9096
lanelet::Lanelet lanelet;
@@ -137,6 +143,7 @@ class MapBasedPredictionNode : public rclcpp::Node
137143
// Object History
138144
std::unordered_map<std::string, std::deque<ObjectData>> objects_history_;
139145
std::map<std::pair<std::string, lanelet::Id>, rclcpp::Time> stopped_times_against_green_;
146+
std::unordered_map<std::string, std::deque<CrosswalkUserData>> crosswalk_users_history_;
140147

141148
// Lanelet Map Pointers
142149
std::shared_ptr<lanelet::LaneletMap> lanelet_map_ptr_;
@@ -234,6 +241,9 @@ class MapBasedPredictionNode : public rclcpp::Node
234241
void updateObjectsHistory(
235242
const std_msgs::msg::Header & header, const TrackedObject & object,
236243
const LaneletsData & current_lanelets_data);
244+
void updateCrosswalkUserHistory(
245+
const std_msgs::msg::Header & header, const TrackedObject & object,
246+
const std::string & object_id);
237247

238248
std::vector<PredictedRefPath> getPredictedReferencePath(
239249
const TrackedObject & object, const LaneletsData & current_lanelets_data,

‎perception/map_based_prediction/src/map_based_prediction_node.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,9 @@ void MapBasedPredictionNode::objectsCallback(const TrackedObjects::ConstSharedPt
967967
removeOldObjectsHistory(objects_detected_time, object_buffer_time_length_, objects_history_);
968968
cleanupOldStoppedOnGreenTimes(in_objects);
969969

970+
auto invalidated_crosswalk_users = removeOldObjectsHistory(
971+
objects_detected_time, object_buffer_time_length_, crosswalk_users_history_);
972+
970973
// result output
971974
PredictedObjects output;
972975
output.header = in_objects->header;
@@ -1172,6 +1175,19 @@ void MapBasedPredictionNode::objectsCallback(const TrackedObjects::ConstSharedPt
11721175
"debug/processing_time_ms", processing_time_ms);
11731176
}
11741177

1178+
void MapBasedPredictionNode::updateCrosswalkUserHistory(
1179+
const std_msgs::msg::Header & header, const TrackedObject & object, const std::string & object_id)
1180+
{
1181+
CrosswalkUserData crosswalk_user_data;
1182+
crosswalk_user_data.header = header;
1183+
crosswalk_user_data.tracked_object = object;
1184+
if (crosswalk_users_history_.count(object_id) == 0) {
1185+
crosswalk_users_history_.emplace(object_id, std::deque<CrosswalkUserData>{crosswalk_user_data});
1186+
} else {
1187+
crosswalk_users_history_.at(object_id).push_back(crosswalk_user_data);
1188+
}
1189+
}
1190+
11751191
bool MapBasedPredictionNode::doesPathCrossAnyFence(const PredictedPath & predicted_path)
11761192
{
11771193
const lanelet::ConstLineStrings3d & all_fences =

0 commit comments

Comments
 (0)