Skip to content

Commit 7628561

Browse files
fix(lane_change): add metrics to valid paths visualization
Signed-off-by: Zulfaqar Azmi <zulfaqar.azmi@tier4.jp>
1 parent 57f38b7 commit 7628561

File tree

2 files changed

+52
-11
lines changed
  • planning/behavior_path_planner/autoware_behavior_path_lane_change_module

2 files changed

+52
-11
lines changed

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/markers.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ using autoware::behavior_path_planner::lane_change::Debug;
3535
using autoware::behavior_path_planner::utils::path_safety_checker::ExtendedPredictedObjects;
3636
using visualization_msgs::msg::MarkerArray;
3737
MarkerArray showAllValidLaneChangePath(
38-
const std::vector<LaneChangePath> & lanes, std::string && ns);
38+
const std::vector<LaneChangePath> & lane_change_paths, std::string && ns);
3939
MarkerArray createLaneChangingVirtualWallMarker(
4040
const geometry_msgs::msg::Pose & lane_changing_pose, const std::string & module_name,
4141
const rclcpp::Time & now, const std::string & ns);

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/markers.cpp

+51-10
Original file line numberDiff line numberDiff line change
@@ -38,34 +38,75 @@ using autoware::universe_utils::createDefaultMarker;
3838
using autoware::universe_utils::createMarkerScale;
3939
using geometry_msgs::msg::Point;
4040

41-
MarkerArray showAllValidLaneChangePath(const std::vector<LaneChangePath> & lanes, std::string && ns)
41+
MarkerArray showAllValidLaneChangePath(
42+
const std::vector<LaneChangePath> & lane_change_paths, std::string && ns)
4243
{
43-
if (lanes.empty()) {
44+
if (lane_change_paths.empty()) {
4445
return MarkerArray{};
4546
}
4647

4748
MarkerArray marker_array;
48-
int32_t id{0};
4949
const auto current_time{rclcpp::Clock{RCL_ROS_TIME}.now()};
5050

5151
const auto colors = colors::colors_list();
52-
const auto loop_size = std::min(lanes.size(), colors.size());
52+
const auto loop_size = std::min(lane_change_paths.size(), colors.size());
5353
marker_array.markers.reserve(loop_size);
5454

55+
const auto info_prep_to_string =
56+
[](const autoware::behavior_path_planner::lane_change::Info & info) -> std::string {
57+
std::ostringstream ss_text;
58+
ss_text << std::setprecision(3) << "vel: " << info.velocity.prepare
59+
<< "[m/s] | lon_acc: " << info.longitudinal_acceleration.prepare
60+
<< "[m/s2] | t: " << info.duration.prepare << "[s] | L: " << info.length.prepare
61+
<< "[m]";
62+
return ss_text.str();
63+
};
64+
65+
const auto info_lc_to_string =
66+
[](const autoware::behavior_path_planner::lane_change::Info & info) -> std::string {
67+
std::ostringstream ss_text;
68+
ss_text << std::setprecision(3) << "vel: " << info.velocity.lane_changing
69+
<< "[m/s] | lon_acc: " << info.longitudinal_acceleration.lane_changing
70+
<< "[m/s2] | lat_acc: " << info.lateral_acceleration
71+
<< "[m/s2] | t: " << info.duration.lane_changing
72+
<< "[s] | L: " << info.length.lane_changing << "[m]";
73+
return ss_text.str();
74+
};
75+
5576
for (std::size_t idx = 0; idx < loop_size; ++idx) {
56-
if (lanes.at(idx).path.points.empty()) {
77+
int32_t id{0};
78+
const auto & lc_path = lane_change_paths.at(idx);
79+
if (lc_path.path.points.empty()) {
5780
continue;
5881
}
59-
82+
std::ostringstream ss;
83+
ss << ns.c_str() << "[" << idx << "]";
6084
const auto & color = colors.at(idx);
61-
Marker marker = createDefaultMarker(
62-
"map", current_time, ns, ++id, Marker::LINE_STRIP, createMarkerScale(0.1, 0.1, 0.0), color);
63-
marker.points.reserve(lanes.at(idx).path.points.size());
85+
const auto & points = lc_path.path.points;
86+
auto marker = createDefaultMarker(
87+
"map", current_time, ss.str(), ++id, Marker::LINE_STRIP, createMarkerScale(0.1, 0.1, 0.0),
88+
color);
89+
marker.points.reserve(points.size());
6490

65-
for (const auto & point : lanes.at(idx).path.points) {
91+
for (const auto & point : points) {
6692
marker.points.push_back(point.point.pose.position);
6793
}
6894

95+
auto text_marker = createDefaultMarker(
96+
"map", current_time, ss.str(), ++id, visualization_msgs::msg::Marker::TEXT_VIEW_FACING,
97+
createMarkerScale(0.1, 0.1, 0.8), colors::yellow());
98+
const auto prep_idx = points.size() / 4;
99+
text_marker.pose = points.at(prep_idx).point.pose;
100+
text_marker.pose.position.z += 2.0;
101+
text_marker.text = info_prep_to_string(lc_path.info);
102+
marker_array.markers.push_back(text_marker);
103+
104+
const auto lc_idx = points.size() / 2;
105+
text_marker.id = ++id;
106+
text_marker.pose = points.at(lc_idx).point.pose;
107+
text_marker.text = info_lc_to_string(lc_path.info);
108+
marker_array.markers.push_back(text_marker);
109+
69110
marker_array.markers.push_back(marker);
70111
}
71112
return marker_array;

0 commit comments

Comments
 (0)