Skip to content

Commit 5145bb5

Browse files
authored
feat(avoidance): make it selectable output debug marker from yaml (#7097)
Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com>
1 parent 987a847 commit 5145bb5

File tree

8 files changed

+132
-37
lines changed

8 files changed

+132
-37
lines changed

planning/behavior_path_avoidance_module/config/avoidance.param.yaml

+8-1
Original file line numberDiff line numberDiff line change
@@ -293,4 +293,11 @@
293293

294294
# for debug
295295
debug:
296-
marker: false
296+
enable_other_objects_marker: false
297+
enable_other_objects_info: false
298+
enable_detection_area_marker: false
299+
enable_drivable_bound_marker: false
300+
enable_safety_check_marker: false
301+
enable_shift_line_marker: false
302+
enable_lane_marker: false
303+
enable_misc_marker: false

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/data_structs.hpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,14 @@ struct AvoidanceParameters
337337
bool enable_bound_clipping{false};
338338

339339
// debug
340-
bool publish_debug_marker = false;
340+
bool enable_other_objects_marker{false};
341+
bool enable_other_objects_info{false};
342+
bool enable_detection_area_marker{false};
343+
bool enable_drivable_bound_marker{false};
344+
bool enable_safety_check_marker{false};
345+
bool enable_shift_line_marker{false};
346+
bool enable_lane_marker{false};
347+
bool enable_misc_marker{false};
341348
};
342349

343350
struct ObjectData // avoidance target

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/debug.hpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@
1818
#include "behavior_path_avoidance_module/data_structs.hpp"
1919
#include "behavior_path_avoidance_module/type_alias.hpp"
2020

21+
#include <memory>
2122
#include <string>
2223

2324
namespace behavior_path_planner::utils::avoidance
2425
{
2526

27+
using behavior_path_planner::AvoidanceParameters;
2628
using behavior_path_planner::AvoidancePlanningData;
2729
using behavior_path_planner::AvoidLineArray;
2830
using behavior_path_planner::DebugData;
@@ -42,10 +44,12 @@ MarkerArray createPredictedVehiclePositions(const PathWithLaneId & path, std::st
4244

4345
MarkerArray createTargetObjectsMarkerArray(const ObjectDataArray & objects, const std::string & ns);
4446

45-
MarkerArray createOtherObjectsMarkerArray(const ObjectDataArray & objects, const ObjectInfo & info);
47+
MarkerArray createOtherObjectsMarkerArray(
48+
const ObjectDataArray & objects, const ObjectInfo & info, const bool verbose);
4649

4750
MarkerArray createDebugMarkerArray(
48-
const AvoidancePlanningData & data, const PathShifter & shifter, const DebugData & debug);
51+
const AvoidancePlanningData & data, const PathShifter & shifter, const DebugData & debug,
52+
const std::shared_ptr<AvoidanceParameters> & parameters);
4953
} // namespace behavior_path_planner::utils::avoidance
5054

5155
std::string toStrInfo(const behavior_path_planner::ShiftLineArray & sl_arr);

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/parameter_helper.hpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,20 @@ AvoidanceParameters getParameter(rclcpp::Node * node)
383383
// debug
384384
{
385385
const std::string ns = "avoidance.debug.";
386-
p.publish_debug_marker = getOrDeclareParameter<bool>(*node, ns + "marker");
386+
p.enable_other_objects_marker =
387+
getOrDeclareParameter<bool>(*node, ns + "enable_other_objects_marker");
388+
p.enable_other_objects_info =
389+
getOrDeclareParameter<bool>(*node, ns + "enable_other_objects_info");
390+
p.enable_detection_area_marker =
391+
getOrDeclareParameter<bool>(*node, ns + "enable_detection_area_marker");
392+
p.enable_drivable_bound_marker =
393+
getOrDeclareParameter<bool>(*node, ns + "enable_drivable_bound_marker");
394+
p.enable_safety_check_marker =
395+
getOrDeclareParameter<bool>(*node, ns + "enable_safety_check_marker");
396+
p.enable_shift_line_marker =
397+
getOrDeclareParameter<bool>(*node, ns + "enable_shift_line_marker");
398+
p.enable_lane_marker = getOrDeclareParameter<bool>(*node, ns + "enable_lane_marker");
399+
p.enable_misc_marker = getOrDeclareParameter<bool>(*node, ns + "enable_misc_marker");
387400
}
388401

389402
return p;

planning/behavior_path_avoidance_module/schema/avoidance.schema.json

+47-3
Original file line numberDiff line numberDiff line change
@@ -1388,13 +1388,57 @@
13881388
"debug": {
13891389
"type": "object",
13901390
"properties": {
1391-
"marker": {
1391+
"enable_other_objects_marker": {
13921392
"type": "boolean",
1393-
"description": "Publish debug marker.",
1393+
"description": "Publish other objects marker.",
1394+
"default": "false"
1395+
},
1396+
"enable_other_objects_info": {
1397+
"type": "boolean",
1398+
"description": "Publish other objects detail information.",
1399+
"default": "false"
1400+
},
1401+
"enable_detection_area_marker": {
1402+
"type": "boolean",
1403+
"description": "Publish detection area.",
1404+
"default": "false"
1405+
},
1406+
"enable_drivable_bound_marker": {
1407+
"type": "boolean",
1408+
"description": "Publish drivable area boundary.",
1409+
"default": "false"
1410+
},
1411+
"enable_safety_check_marker": {
1412+
"type": "boolean",
1413+
"description": "Publish safety check information.",
1414+
"default": "false"
1415+
},
1416+
"enable_shift_line_marker": {
1417+
"type": "boolean",
1418+
"description": "Publish shift line information.",
1419+
"default": "false"
1420+
},
1421+
"enable_lane_marker": {
1422+
"type": "boolean",
1423+
"description": "Publish lane information.",
1424+
"default": "false"
1425+
},
1426+
"enable_misc_marker": {
1427+
"type": "boolean",
1428+
"description": "Publish misc markers.",
13941429
"default": "false"
13951430
}
13961431
},
1397-
"required": ["marker"],
1432+
"required": [
1433+
"enable_other_objects_marker",
1434+
"enable_other_objects_info",
1435+
"enable_detection_area_marker",
1436+
"enable_drivable_bound_marker",
1437+
"enable_safety_check_marker",
1438+
"enable_shift_line_marker",
1439+
"enable_lane_marker",
1440+
"enable_misc_marker"
1441+
],
13981442
"additionalProperties": false
13991443
}
14001444
},

planning/behavior_path_avoidance_module/src/debug.cpp

+37-22
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ MarkerArray createToDrivableBoundDistance(const ObjectDataArray & objects, std::
130130
return msg;
131131
}
132132

133-
MarkerArray createObjectInfoMarkerArray(const ObjectDataArray & objects, std::string && ns)
133+
MarkerArray createObjectInfoMarkerArray(
134+
const ObjectDataArray & objects, std::string && ns, const bool verbose)
134135
{
135136
MarkerArray msg;
136137

@@ -139,7 +140,7 @@ MarkerArray createObjectInfoMarkerArray(const ObjectDataArray & objects, std::st
139140
createMarkerScale(0.5, 0.5, 0.5), createMarkerColor(1.0, 1.0, 0.0, 1.0));
140141

141142
for (const auto & object : objects) {
142-
{
143+
if (verbose) {
143144
marker.id = uuidToInt32(object.object.object_id);
144145
marker.pose = object.object.kinematics.initial_pose_with_covariance.pose;
145146
std::ostringstream string_stream;
@@ -160,6 +161,7 @@ MarkerArray createObjectInfoMarkerArray(const ObjectDataArray & objects, std::st
160161

161162
{
162163
marker.id = uuidToInt32(object.object.object_id);
164+
marker.pose = object.object.kinematics.initial_pose_with_covariance.pose;
163165
marker.pose.position.z += 2.0;
164166
std::ostringstream string_stream;
165167
string_stream << magic_enum::enum_name(object.info) << (object.is_parked ? "(PARKED)" : "");
@@ -201,7 +203,7 @@ MarkerArray avoidableObjectsMarkerArray(const ObjectDataArray & objects, std::st
201203
createMarkerColor(1.0, 1.0, 0.0, 0.8)),
202204
&msg);
203205

204-
appendMarkerArray(createObjectInfoMarkerArray(objects, ns + "_info"), &msg);
206+
appendMarkerArray(createObjectInfoMarkerArray(objects, ns + "_info", true), &msg);
205207
appendMarkerArray(createObjectPolygonMarkerArray(objects, ns + "_envelope_polygon"), &msg);
206208
appendMarkerArray(createToDrivableBoundDistance(objects, ns + "_to_drivable_bound"), &msg);
207209
appendMarkerArray(createOverhangLaneletMarkerArray(objects, ns + "_overhang_lanelet"), &msg);
@@ -220,7 +222,7 @@ MarkerArray unAvoidableObjectsMarkerArray(const ObjectDataArray & objects, std::
220222
createMarkerColor(1.0, 0.0, 0.0, 0.8)),
221223
&msg);
222224

223-
appendMarkerArray(createObjectInfoMarkerArray(objects, ns + "_info"), &msg);
225+
appendMarkerArray(createObjectInfoMarkerArray(objects, ns + "_info", true), &msg);
224226
appendMarkerArray(createObjectPolygonMarkerArray(objects, ns + "_envelope_polygon"), &msg);
225227
appendMarkerArray(createToDrivableBoundDistance(objects, ns + "_to_drivable_bound"), &msg);
226228
appendMarkerArray(createOverhangLaneletMarkerArray(objects, ns + "_overhang_lanelet"), &msg);
@@ -428,7 +430,8 @@ MarkerArray createTargetObjectsMarkerArray(const ObjectDataArray & objects, cons
428430
return msg;
429431
}
430432

431-
MarkerArray createOtherObjectsMarkerArray(const ObjectDataArray & objects, const ObjectInfo & info)
433+
MarkerArray createOtherObjectsMarkerArray(
434+
const ObjectDataArray & objects, const ObjectInfo & info, const bool verbose)
432435
{
433436
const auto filtered_objects = [&objects, &info]() {
434437
ObjectDataArray ret{};
@@ -456,7 +459,8 @@ MarkerArray createOtherObjectsMarkerArray(const ObjectDataArray & objects, const
456459
filtered_objects, "others_" + ns + "_cube", createMarkerScale(3.0, 1.5, 1.5),
457460
createMarkerColor(0.0, 1.0, 0.0, 0.8)),
458461
&msg);
459-
appendMarkerArray(createObjectInfoMarkerArray(filtered_objects, "others_" + ns + "_info"), &msg);
462+
appendMarkerArray(
463+
createObjectInfoMarkerArray(filtered_objects, "others_" + ns + "_info", verbose), &msg);
460464
appendMarkerArray(
461465
createOverhangLaneletMarkerArray(filtered_objects, "others_" + ns + "_overhang_lanelet"), &msg);
462466

@@ -500,7 +504,8 @@ MarkerArray createDrivableBounds(
500504
}
501505

502506
MarkerArray createDebugMarkerArray(
503-
const AvoidancePlanningData & data, const PathShifter & shifter, const DebugData & debug)
507+
const AvoidancePlanningData & data, const PathShifter & shifter, const DebugData & debug,
508+
const std::shared_ptr<AvoidanceParameters> & parameters)
504509
{
505510
using behavior_path_planner::utils::transformToLanelets;
506511
using lanelet::visualization::laneletsAsTriangleMarkerArray;
@@ -534,7 +539,7 @@ MarkerArray createDebugMarkerArray(
534539
};
535540

536541
const auto addObjects = [&](const ObjectDataArray & objects, const auto & ns) {
537-
add(createOtherObjectsMarkerArray(objects, ns));
542+
add(createOtherObjectsMarkerArray(objects, ns, parameters->enable_other_objects_info));
538543
};
539544

540545
const auto addShiftLength =
@@ -549,7 +554,7 @@ MarkerArray createDebugMarkerArray(
549554
};
550555

551556
// ignore objects
552-
{
557+
if (parameters->enable_other_objects_marker) {
553558
addObjects(data.other_objects, ObjectInfo::FURTHER_THAN_THRESHOLD);
554559
addObjects(data.other_objects, ObjectInfo::IS_NOT_TARGET_OBJECT);
555560
addObjects(data.other_objects, ObjectInfo::FURTHER_THAN_GOAL);
@@ -569,7 +574,7 @@ MarkerArray createDebugMarkerArray(
569574
}
570575

571576
// shift line pre-process
572-
{
577+
if (parameters->enable_shift_line_marker) {
573578
addAvoidLine(debug.step1_registered_shift_line, "step1_registered_shift_line", 0.2, 0.2, 1.0);
574579
addAvoidLine(debug.step1_current_shift_line, "step1_current_shift_line", 0.2, 0.4, 0.8, 0.3);
575580
addAvoidLine(debug.step1_merged_shift_line, "step1_merged_shift_line", 0.2, 0.6, 0.6, 0.3);
@@ -578,55 +583,60 @@ MarkerArray createDebugMarkerArray(
578583
}
579584

580585
// merge process
581-
{
586+
if (parameters->enable_shift_line_marker) {
582587
addAvoidLine(debug.step2_merged_shift_line, "step2_merged_shift_line", 0.2, 1.0, 0.0, 0.3);
583588
}
584589

585590
// trimming process
586-
{
591+
if (parameters->enable_shift_line_marker) {
587592
addAvoidLine(debug.step3_grad_filtered_1st, "step3_grad_filtered_1st", 0.2, 0.8, 0.0, 0.3);
588593
addAvoidLine(debug.step3_grad_filtered_2nd, "step3_grad_filtered_2nd", 0.4, 0.6, 0.0, 0.3);
589594
addAvoidLine(debug.step3_grad_filtered_3rd, "step3_grad_filtered_3rd", 0.6, 0.4, 0.0, 0.3);
590595
}
591596

592597
// registering process
593-
{
598+
if (parameters->enable_shift_line_marker) {
594599
addShiftLine(shifter.getShiftLines(), "step4_old_shift_line", 1.0, 1.0, 0.0, 0.3);
595600
addAvoidLine(data.new_shift_line, "step4_new_shift_line", 1.0, 0.0, 0.0, 0.3);
596601
}
597602

598603
// safety check
599-
{
604+
if (parameters->enable_safety_check_marker) {
600605
add(showSafetyCheckInfo(debug.collision_check, "object_debug_info"));
601606
add(showPredictedPath(debug.collision_check, "ego_predicted_path"));
602607
add(showPolygon(debug.collision_check, "ego_and_target_polygon_relation"));
603608
}
604609

605610
// shift length
606-
{
611+
if (parameters->enable_shift_line_marker) {
607612
addShiftLength(debug.pos_shift, "merged_length_pos", 0.0, 0.7, 0.5);
608613
addShiftLength(debug.neg_shift, "merged_length_neg", 0.0, 0.5, 0.7);
609614
addShiftLength(debug.total_shift, "merged_length_total", 0.99, 0.4, 0.2);
610615
}
611616

612617
// shift grad
613-
{
618+
if (parameters->enable_shift_line_marker) {
614619
addShiftGrad(debug.pos_shift_grad, debug.pos_shift, "merged_grad_pos", 0.0, 0.7, 0.5);
615620
addShiftGrad(debug.neg_shift_grad, debug.neg_shift, "merged_grad_neg", 0.0, 0.5, 0.7);
616621
addShiftGrad(debug.total_forward_grad, debug.total_shift, "grad_forward", 0.99, 0.4, 0.2);
617622
addShiftGrad(debug.total_backward_grad, debug.total_shift, "grad_backward", 0.4, 0.2, 0.9);
618623
}
619624

620625
// detection area
621-
size_t i = 0;
622-
for (const auto & detection_area : debug.detection_areas) {
623-
add(createPolygonMarkerArray(detection_area, "detection_area", i++, 0.16, 1.0, 0.69, 0.1));
626+
if (parameters->enable_detection_area_marker) {
627+
size_t i = 0;
628+
for (const auto & detection_area : debug.detection_areas) {
629+
add(createPolygonMarkerArray(detection_area, "detection_area", i++, 0.16, 1.0, 0.69, 0.1));
630+
}
624631
}
625632

626-
// misc
627-
{
628-
add(createPathMarkerArray(path, "centerline_resampled", 0, 0.0, 0.9, 0.5));
633+
// drivable bound
634+
if (parameters->enable_drivable_bound_marker) {
629635
add(createDrivableBounds(data, "drivable_bound", 1.0, 0.0, 0.42));
636+
}
637+
638+
// lane
639+
if (parameters->enable_lane_marker) {
630640
add(laneletsAsTriangleMarkerArray(
631641
"drivable_lanes", transformToLanelets(data.drivable_lanes),
632642
createMarkerColor(0.16, 1.0, 0.69, 0.2)));
@@ -636,6 +646,11 @@ MarkerArray createDebugMarkerArray(
636646
"safety_check_lanes", debug.safety_check_lanes, createMarkerColor(1.0, 0.0, 0.42, 0.2)));
637647
}
638648

649+
// misc
650+
if (parameters->enable_misc_marker) {
651+
add(createPathMarkerArray(path, "centerline_resampled", 0, 0.0, 0.9, 0.5));
652+
}
653+
639654
return msg;
640655
}
641656
} // namespace behavior_path_planner::utils::avoidance

planning/behavior_path_avoidance_module/src/manager.cpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,17 @@ void AvoidanceModuleManager::updateModuleParams(const std::vector<rclcpp::Parame
261261

262262
{
263263
const std::string ns = "avoidance.debug.";
264-
updateParam<bool>(parameters, ns + "marker", p->publish_debug_marker);
264+
updateParam<bool>(
265+
parameters, ns + "enable_other_objects_marker", p->enable_other_objects_marker);
266+
updateParam<bool>(parameters, ns + "enable_other_objects_info", p->enable_other_objects_info);
267+
updateParam<bool>(
268+
parameters, ns + "enable_detection_area_marker", p->enable_detection_area_marker);
269+
updateParam<bool>(
270+
parameters, ns + "enable_drivable_bound_marker", p->enable_drivable_bound_marker);
271+
updateParam<bool>(parameters, ns + "enable_safety_check_marker", p->enable_safety_check_marker);
272+
updateParam<bool>(parameters, ns + "enable_shift_line_marker", p->enable_shift_line_marker);
273+
updateParam<bool>(parameters, ns + "enable_lane_marker", p->enable_lane_marker);
274+
updateParam<bool>(parameters, ns + "enable_misc_marker", p->enable_misc_marker);
265275
}
266276

267277
std::for_each(observers_.begin(), observers_.end(), [&p](const auto & observer) {

planning/behavior_path_avoidance_module/src/scene.cpp

+1-6
Original file line numberDiff line numberDiff line change
@@ -1360,12 +1360,7 @@ void AvoidanceModule::updateDebugMarker(
13601360
const AvoidancePlanningData & data, const PathShifter & shifter, const DebugData & debug) const
13611361
{
13621362
debug_marker_.markers.clear();
1363-
1364-
if (!parameters_->publish_debug_marker) {
1365-
return;
1366-
}
1367-
1368-
debug_marker_ = utils::avoidance::createDebugMarkerArray(data, shifter, debug);
1363+
debug_marker_ = utils::avoidance::createDebugMarkerArray(data, shifter, debug, parameters_);
13691364
}
13701365

13711366
void AvoidanceModule::updateAvoidanceDebugData(

0 commit comments

Comments
 (0)