15 #include <autoware_auto_perception_msgs/msg/bounding_box_array.hpp>
16 #include <visualization_msgs/msg/marker_array.hpp>
17 #include <visualization_msgs/msg/marker.hpp>
25 #ifndef OBJECT_COLLISION_ESTIMATOR_NODES__VISUALIZE_HPP_
26 #define OBJECT_COLLISION_ESTIMATOR_NODES__VISUALIZE_HPP_
32 namespace object_collision_estimator_nodes
48 delete_marker.header = bboxes.header;
49 delete_marker.ns =
"bounding_box";
50 delete_marker.action = Marker::DELETEALL;
51 marker_array.markers.push_back(delete_marker);
55 marker.header = bboxes.header;
56 marker.ns =
"bounding_box";
57 marker.type = visualization_msgs::msg::Marker::LINE_STRIP;
58 marker.action = Marker::ADD;
61 for (std::size_t i = 0; i < bboxes.boxes.size(); ++i) {
62 marker.id =
static_cast<int32_t
>(i);
63 marker.pose.orientation.w = 1.0;
64 if (i < collision_idx) {
66 marker.color.a = 0.3F;
67 marker.color.r = 0.0F;
68 marker.color.g = 1.0F;
69 marker.color.b = 0.0F;
70 }
else if (i == collision_idx) {
72 marker.color.a = 1.0F;
73 marker.color.r = 1.0F;
74 marker.color.g = 0.0F;
75 marker.color.b = 0.0F;
78 marker.color.a = 0.3F;
79 marker.color.r = 0.7F;
80 marker.color.g = 0.7F;
81 marker.color.b = 0.7F;
83 marker.points.clear();
84 const auto box = bboxes.boxes.at(i);
85 for (std::size_t j = 0; j < 4; ++j) {
87 point.x =
static_cast<float64_t>(box.corners.at(j).x);
88 point.y =
static_cast<float64_t>(box.corners.at(j).y);
89 point.z =
static_cast<float64_t>(box.corners.at(j).z);
90 marker.points.push_back(point);
93 point.x =
static_cast<float64_t>(box.corners.at(0).x);
94 point.y =
static_cast<float64_t>(box.corners.at(0).y);
95 point.z =
static_cast<float64_t>(box.corners.at(0).z);
96 marker.points.push_back(point);
98 marker_array.markers.push_back(marker);
107 #endif // OBJECT_COLLISION_ESTIMATOR_NODES__VISUALIZE_HPP_