Skip to content

Commit b15f646

Browse files
committed
chore: use config
Signed-off-by: tzhong518 <sworgun@gmail.com>
1 parent e4cae6f commit b15f646

File tree

9 files changed

+117
-166
lines changed

9 files changed

+117
-166
lines changed

launch/tier4_perception_launch/launch/traffic_light_recognition/traffic_light.launch.xml

+9-18
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,9 @@
2424
<let name="all_camera_namespaces" value="[$(var namespace1)]" if="$(eval &quot; '$(var image_number)' == '1' &quot;)"/>
2525
<let name="all_camera_namespaces" value="[$(var namespace1), $(var namespace2)]" if="$(eval &quot; '$(var image_number)' >= '2' &quot;)"/>
2626

27-
<arg name="fine_detector_label_path" default="$(var traffic_light_fine_detector_model_path)/$(var traffic_light_fine_detector_label_name)"/>
28-
<arg name="fine_detector_model_path" default="$(var traffic_light_fine_detector_model_path)/$(var traffic_light_fine_detector_model_name).onnx"/>
29-
<arg name="car_classifier_label_path" default="$(var traffic_light_classifier_model_path)/$(var car_traffic_light_classifier_label_name)"/>
30-
<arg name="pedestrian_classifier_label_path" default="$(var traffic_light_classifier_model_path)/$(var pedestrian_traffic_light_classifier_label_name)"/>
31-
<arg name="car_classifier_model_path" default="$(var traffic_light_classifier_model_path)/$(var car_traffic_light_classifier_model_name).onnx"/>
32-
<arg name="pedestrian_classifier_model_path" default="$(var traffic_light_classifier_model_path)/$(var pedestrian_traffic_light_classifier_model_name).onnx"/>
27+
<arg name="fine_detector_param_path" default="$(find-pkg-share traffic_light_fine_detector)/config/traffic_light_fine_detector.param.yaml"/>
28+
<arg name="car_classifier_param_path" default="$(find-pkg-share traffic_light_classifier)/config/car_traffic_light_classifier.param.yaml"/>
29+
<arg name="pedestrian_classifier_param_path" default="$(find-pkg-share traffic_light_classifier)/config/pedestrian_traffic_light_classifier.param.yaml"/>
3330

3431
<!-- namespace1 camera TLR pipeline -->
3532
<group>
@@ -62,12 +59,9 @@
6259
<arg name="enable_fine_detection" value="$(var enable_fine_detection)"/>
6360
<arg name="use_intra_process" value="true"/>
6461
<arg name="use_multithread" value="true"/>
65-
<arg name="fine_detector_label_path" value="$(var fine_detector_label_path)"/>
66-
<arg name="fine_detector_model_path" value="$(var fine_detector_model_path)"/>
67-
<arg name="car_classifier_label_path" value="$(var car_classifier_label_path)"/>
68-
<arg name="pedestrian_classifier_label_path" value="$(var pedestrian_classifier_label_path)"/>
69-
<arg name="car_classifier_model_path" value="$(var car_classifier_model_path)"/>
70-
<arg name="pedestrian_classifier_model_path" value="$(var pedestrian_classifier_model_path)"/>
62+
<arg name="fine_detector_param_path" value="$(var fine_detector_param_path)"/>
63+
<arg name="car_classifier_param_path" value="$(var car_classifier_param_path)"/>
64+
<arg name="pedestrian_classifier_param_path" value="$(var pedestrian_classifier_param_path)"/>
7165
<arg name="output/rois" value="$(var output/rois1)"/>
7266
<arg name="output/traffic_signals" value="$(var output/traffic_signals1)"/>
7367
<arg name="output/car/traffic_signals" value="$(var output/car/traffic_signals1)"/>
@@ -119,12 +113,9 @@
119113
<arg name="enable_fine_detection" value="$(var enable_fine_detection)"/>
120114
<arg name="use_intra_process" value="true"/>
121115
<arg name="use_multithread" value="true"/>
122-
<arg name="fine_detector_label_path" value="$(var fine_detector_label_path)"/>
123-
<arg name="fine_detector_model_path" value="$(var fine_detector_model_path)"/>
124-
<arg name="car_classifier_label_path" value="$(var car_classifier_label_path)"/>
125-
<arg name="pedestrian_classifier_label_path" value="$(var pedestrian_classifier_label_path)"/>
126-
<arg name="car_classifier_model_path" value="$(var car_classifier_model_path)"/>
127-
<arg name="pedestrian_classifier_model_path" value="$(var pedestrian_classifier_model_path)"/>
116+
<arg name="fine_detector_param_path" value="$(var fine_detector_param_path)"/>
117+
<arg name="car_classifier_param_path" value="$(var car_classifier_param_path)"/>
118+
<arg name="pedestrian_classifier_param_path" value="$(var pedestrian_classifier_param_path)"/>
128119
<arg name="output/rois" value="$(var output/rois2)"/>
129120
<arg name="output/traffic_signals" value="$(var output/traffic_signals2)"/>
130121
<arg name="output/car/traffic_signals" value="$(var output/car/traffic_signals2)"/>

launch/tier4_perception_launch/launch/traffic_light_recognition/traffic_light_node_container.launch.py

+67-112
Original file line numberDiff line numberDiff line change
@@ -18,89 +18,32 @@
1818
from launch import LaunchDescription
1919
from launch.actions import DeclareLaunchArgument
2020
from launch.actions import SetLaunchConfiguration
21+
from launch.actions import OpaqueFunction
2122
from launch.conditions import IfCondition
2223
from launch.conditions import UnlessCondition
2324
from launch.substitutions import LaunchConfiguration
2425
from launch_ros.actions import ComposableNodeContainer
2526
from launch_ros.actions import LoadComposableNodes
2627
from launch_ros.descriptions import ComposableNode
28+
from launch_ros.parameter_descriptions import ParameterFile
2729

28-
29-
def generate_launch_description():
30-
launch_arguments = []
31-
32-
def add_launch_arg(name: str, default_value=None, description=None):
33-
# a default_value of None is equivalent to not passing that kwarg at all
34-
launch_arguments.append(
35-
DeclareLaunchArgument(name, default_value=default_value, description=description)
36-
)
37-
38-
fine_detector_share_dir = get_package_share_directory("traffic_light_fine_detector")
39-
classifier_share_dir = get_package_share_directory("traffic_light_classifier")
40-
add_launch_arg("enable_image_decompressor", "True")
41-
add_launch_arg("enable_fine_detection", "True")
42-
add_launch_arg("input/image", "/sensing/camera/traffic_light/image_raw")
43-
add_launch_arg("output/rois", "/perception/traffic_light_recognition/rois")
44-
add_launch_arg(
45-
"output/traffic_signals",
46-
"/perception/traffic_light_recognition/traffic_signals",
47-
)
48-
add_launch_arg(
49-
"output/car/traffic_signals", "/perception/traffic_light_recognition/car/traffic_signals"
50-
)
51-
add_launch_arg(
52-
"output/pedestrian/traffic_signals",
53-
"/perception/traffic_light_recognition/pedestrian/traffic_signals",
54-
)
55-
56-
# traffic_light_fine_detector
57-
add_launch_arg(
58-
"fine_detector_model_path",
59-
os.path.join(fine_detector_share_dir, "data", "tlr_yolox_s.onnx"),
60-
)
61-
add_launch_arg(
62-
"fine_detector_label_path",
63-
os.path.join(fine_detector_share_dir, "data", "tlr_labels.txt"),
64-
)
65-
add_launch_arg("fine_detector_precision", "fp16")
66-
add_launch_arg("fine_detector_score_thresh", "0.3")
67-
add_launch_arg("fine_detector_nms_thresh", "0.65")
68-
69-
add_launch_arg("approximate_sync", "False")
70-
71-
# traffic_light_classifier
72-
add_launch_arg("classifier_type", "1")
73-
add_launch_arg(
74-
"car_classifier_model_path",
75-
os.path.join(classifier_share_dir, "data", "traffic_light_classifier_efficientNet_b1.onnx"),
76-
)
77-
add_launch_arg(
78-
"pedestrian_classifier_model_path",
79-
os.path.join(
80-
classifier_share_dir, "data", "pedestrian_traffic_light_classifier_efficientNet_b1.onnx"
81-
),
82-
)
83-
add_launch_arg(
84-
"car_classifier_label_path", os.path.join(classifier_share_dir, "data", "lamp_labels.txt")
85-
)
86-
add_launch_arg(
87-
"pedestrian_classifier_label_path",
88-
os.path.join(classifier_share_dir, "data", "lamp_labels_ped.txt"),
89-
)
90-
add_launch_arg("classifier_precision", "fp16")
91-
add_launch_arg("classifier_mean", "[123.675, 116.28, 103.53]")
92-
add_launch_arg("classifier_std", "[58.395, 57.12, 57.375]")
93-
add_launch_arg("backlight_threshold", "0.85")
94-
95-
add_launch_arg("use_intra_process", "False")
96-
add_launch_arg("use_multithread", "False")
97-
30+
def launch_setup(context, *args, **kwargs):
9831
def create_parameter_dict(*args):
9932
result = {}
10033
for x in args:
10134
result[x] = LaunchConfiguration(x)
10235
return result
10336

37+
fine_detector_model_param = ParameterFile(
38+
param_file=LaunchConfiguration("fine_detector_param_path").perform(context), allow_substs=True
39+
)
40+
car_traffic_light_classifier_model_param = ParameterFile(
41+
param_file=LaunchConfiguration("car_classifier_param_path").perform(context), allow_substs=True
42+
)
43+
pedestrian_traffic_light_classifier_model_param = ParameterFile(
44+
param_file=LaunchConfiguration("pedestrian_classifier_param_path").perform(context), allow_substs=True
45+
)
46+
10447
container = ComposableNodeContainer(
10548
name="traffic_light_node_container",
10649
namespace="",
@@ -112,19 +55,7 @@ def create_parameter_dict(*args):
11255
plugin="traffic_light::TrafficLightClassifierNodelet",
11356
name="car_traffic_light_classifier",
11457
namespace="classification",
115-
parameters=[
116-
{
117-
"approximate_sync": LaunchConfiguration("approximate_sync"),
118-
"classifier_type": LaunchConfiguration("classifier_type"),
119-
"classify_traffic_light_type": 0,
120-
"classifier_model_path": LaunchConfiguration("car_classifier_model_path"),
121-
"classifier_label_path": LaunchConfiguration("car_classifier_label_path"),
122-
"classifier_precision": LaunchConfiguration("classifier_precision"),
123-
"classifier_mean": LaunchConfiguration("classifier_mean"),
124-
"classifier_std": LaunchConfiguration("classifier_std"),
125-
"backlight_threshold": LaunchConfiguration("backlight_threshold"),
126-
}
127-
],
58+
parameters=[car_traffic_light_classifier_model_param],
12859
remappings=[
12960
("~/input/image", LaunchConfiguration("input/image")),
13061
("~/input/rois", LaunchConfiguration("output/rois")),
@@ -139,23 +70,7 @@ def create_parameter_dict(*args):
13970
plugin="traffic_light::TrafficLightClassifierNodelet",
14071
name="pedestrian_traffic_light_classifier",
14172
namespace="classification",
142-
parameters=[
143-
{
144-
"approximate_sync": LaunchConfiguration("approximate_sync"),
145-
"classifier_type": LaunchConfiguration("classifier_type"),
146-
"classify_traffic_light_type": 1,
147-
"classifier_model_path": LaunchConfiguration(
148-
"pedestrian_classifier_model_path"
149-
),
150-
"classifier_label_path": LaunchConfiguration(
151-
"pedestrian_classifier_label_path"
152-
),
153-
"classifier_precision": LaunchConfiguration("classifier_precision"),
154-
"classifier_mean": LaunchConfiguration("classifier_mean"),
155-
"classifier_std": LaunchConfiguration("classifier_std"),
156-
"backlight_threshold": LaunchConfiguration("backlight_threshold"),
157-
}
158-
],
73+
parameters=[pedestrian_traffic_light_classifier_model_param],
15974
remappings=[
16075
("~/input/image", LaunchConfiguration("input/image")),
16176
("~/input/rois", LaunchConfiguration("output/rois")),
@@ -214,22 +129,14 @@ def create_parameter_dict(*args):
214129
condition=IfCondition(LaunchConfiguration("enable_image_decompressor")),
215130
)
216131

217-
fine_detector_param = create_parameter_dict(
218-
"fine_detector_model_path",
219-
"fine_detector_label_path",
220-
"fine_detector_precision",
221-
"fine_detector_score_thresh",
222-
"fine_detector_nms_thresh",
223-
)
224-
225132
fine_detector_loader = LoadComposableNodes(
226133
composable_node_descriptions=[
227134
ComposableNode(
228135
package="traffic_light_fine_detector",
229136
plugin="traffic_light::TrafficLightFineDetectorNodelet",
230137
name="traffic_light_fine_detector",
231138
namespace="detection",
232-
parameters=[fine_detector_param],
139+
parameters=[fine_detector_model_param],
233140
remappings=[
234141
("~/input/image", LaunchConfiguration("input/image")),
235142
("~/input/rois", "rough/rois"),
@@ -245,6 +152,56 @@ def create_parameter_dict(*args):
245152
condition=IfCondition(LaunchConfiguration("enable_fine_detection")),
246153
)
247154

155+
return [container, decompressor_loader, fine_detector_loader]
156+
157+
def generate_launch_description():
158+
launch_arguments = []
159+
160+
def add_launch_arg(name: str, default_value=None, description=None):
161+
# a default_value of None is equivalent to not passing that kwarg at all
162+
launch_arguments.append(
163+
DeclareLaunchArgument(name, default_value=default_value, description=description)
164+
)
165+
166+
fine_detector_share_dir = get_package_share_directory("traffic_light_fine_detector")
167+
classifier_share_dir = get_package_share_directory("traffic_light_classifier")
168+
add_launch_arg("enable_image_decompressor", "True")
169+
add_launch_arg("enable_fine_detection", "True")
170+
add_launch_arg("input/image", "/sensing/camera/traffic_light/image_raw")
171+
add_launch_arg("output/rois", "/perception/traffic_light_recognition/rois")
172+
add_launch_arg(
173+
"output/traffic_signals",
174+
"/perception/traffic_light_recognition/traffic_signals",
175+
)
176+
add_launch_arg(
177+
"output/car/traffic_signals", "/perception/traffic_light_recognition/car/traffic_signals"
178+
)
179+
add_launch_arg(
180+
"output/pedestrian/traffic_signals",
181+
"/perception/traffic_light_recognition/pedestrian/traffic_signals",
182+
)
183+
184+
# traffic_light_fine_detector
185+
add_launch_arg(
186+
"fine_detector_param_path",
187+
os.path.join(fine_detector_share_dir, "config", "traffic_light_fine_detector.param.yaml"),
188+
)
189+
190+
# traffic_light_classifier
191+
add_launch_arg(
192+
"car_classifier_param_path",
193+
os.path.join(classifier_share_dir, "config", "car_traffic_light_classifier_efficientNet.param.yaml"),
194+
)
195+
add_launch_arg(
196+
"pedestrian_classifier_param_path",
197+
os.path.join(
198+
classifier_share_dir, "config", "pedestrian_traffic_light_classifier_efficientNet.param.yaml"
199+
),
200+
)
201+
202+
add_launch_arg("use_intra_process", "False")
203+
add_launch_arg("use_multithread", "False")
204+
248205
set_container_executable = SetLaunchConfiguration(
249206
"container_executable",
250207
"component_container",
@@ -262,8 +219,6 @@ def create_parameter_dict(*args):
262219
*launch_arguments,
263220
set_container_executable,
264221
set_container_mt_executable,
265-
container,
266-
decompressor_loader,
267-
fine_detector_loader,
222+
OpaqueFunction(function=launch_setup)
268223
]
269224
)

perception/traffic_light_classifier/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ if(TRT_AVAIL AND CUDA_AVAIL AND CUDNN_AVAIL)
123123

124124
ament_auto_package(INSTALL_TO_SHARE
125125
launch
126+
config
126127
)
127128

128129
else()
@@ -147,6 +148,7 @@ else()
147148

148149
ament_auto_package(INSTALL_TO_SHARE
149150
launch
151+
config
150152
)
151153

152154
endif()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**:
2+
ros__parameters:
3+
approximate_sync: false
4+
classifier_label_path: "$(var traffic_light_classifier_model_path)/$(var car_traffic_light_classifier_label_name)"
5+
classifier_model_path: "$(var traffic_light_classifier_model_path)/$(var car_traffic_light_classifier_model_name).onnx"
6+
classifier_precision: fp16
7+
classifier_mean: [123.675, 116.28, 103.53]
8+
classifier_std: [58.395, 57.12, 57.375]
9+
backlight_threshold: 0.85
10+
build_only: false
11+
classifier_type: 1 #classifier_type {hsv_filter: 0, cnn: 1}
12+
classify_traffic_light_type: 0 #classify_traffic_light_type {car: 0, pedestrian:1}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**:
2+
ros__parameters:
3+
approximate_sync: false
4+
classifier_label_path: "$(var traffic_light_classifier_model_path)/$(var pedestrian_traffic_light_classifier_label_name)"
5+
classifier_model_path: "$(var traffic_light_classifier_model_path)/$(var pedestrian_traffic_light_classifier_model_name).onnx"
6+
classifier_precision: fp16
7+
classifier_mean: [123.675, 116.28, 103.53]
8+
classifier_std: [58.395, 57.12, 57.375]
9+
backlight_threshold: 0.85
10+
build_only: false
11+
classifier_type: 1 #classifier_type {hsv_filter: 0, cnn: 1}
12+
classify_traffic_light_type: 1 #classify_traffic_light_type {car: 0, pedestrian:1}

perception/traffic_light_classifier/launch/traffic_light_classifier.launch.xml

+2-22
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,12 @@
22
<arg name="input/image" default="~/image_raw"/>
33
<arg name="input/rois" default="~/rois"/>
44
<arg name="output/traffic_signals" default="classified/traffic_signals"/>
5-
<arg name="data_path" default="$(env HOME)/autoware_data" description="packages data and artifacts directory path"/>
6-
<arg name="classifier_label_path" default="$(var data_path)/traffic_light_classifier/lamp_labels.txt" description="classifier label path"/>
7-
<arg name="classifier_model_path" default="$(var data_path)/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx" description="classifier onnx model path"/>
8-
<arg name="classifier_precision" default="fp16"/>
9-
10-
<arg name="use_gpu" default="true"/>
11-
<!-- classifier_type {hsv_filter: 0, cnn: 1} -->
12-
<arg name="classifier_type" default="1" if="$(var use_gpu)"/>
13-
<arg name="classifier_type" default="0" unless="$(var use_gpu)"/>
14-
<!-- classify_traffic_light_type {car: 0, pedestrian:1} -->
15-
<arg name="classify_traffic_light_type" default="0"/>
16-
17-
<arg name="build_only" default="false" description="shutdown node after TensorRT engine file is built"/>
18-
<arg name="backlight_threshold" default="0.85" description="overwrite signals if the RoI image intensity is greater than this value"/>
5+
<arg name="traffic_light_classifier_param_path" default="$(find-pkg-share traffic_light_classifier)/config/traffic_light_classifier.param.yaml" description="classifier param path"/>
196

207
<node pkg="traffic_light_classifier" exec="traffic_light_classifier_node" name="traffic_light_classifier">
218
<remap from="~/input/image" to="$(var input/image)"/>
229
<remap from="~/input/rois" to="$(var input/rois)"/>
2310
<remap from="~/output/traffic_signals" to="$(var output/traffic_signals)"/>
24-
<param name="approximate_sync" value="false"/>
25-
<param name="classifier_type" value="$(var classifier_type)"/>
26-
<param name="classify_traffic_light_type" value="$(var classify_traffic_light_type)"/>
27-
<param name="classifier_label_path" value="$(var classifier_label_path)"/>
28-
<param name="classifier_model_path" value="$(var classifier_model_path)"/>
29-
<param name="classifier_precision" value="$(var classifier_precision)"/>
30-
<param name="build_only" value="$(var build_only)"/>
31-
<param name="backlight_threshold" value="$(var backlight_threshold)"/>
11+
<param from="$(var traffic_light_classifier_param_path)" allow_substs="true"/>
3212
</node>
3313
</launch>

perception/traffic_light_fine_detector/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,14 @@ if(TRT_AVAIL AND CUDA_AVAIL AND CUDNN_AVAIL)
101101

102102
ament_auto_package(INSTALL_TO_SHARE
103103
launch
104+
config
104105
)
105106

106107
else()
107108
message(STATUS "TrafficLightFineDetector won't be built, CUDA and/or TensorRT were not found.")
108109
# to avoid launch file missing without a gpu
109110
ament_auto_package(INSTALL_TO_SHARE
110111
launch
112+
config
111113
)
112114
endif()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**:
2+
ros__parameters:
3+
fine_detector_label_path: "$(var traffic_light_fine_detector_model_path)/$(var traffic_light_fine_detector_label_name)"
4+
fine_detector_model_path: "$(var traffic_light_fine_detector_model_path)/$(var traffic_light_fine_detector_model_name).onnx"
5+
fine_detector_precision: fp16
6+
build_only: false
7+
fine_detector_score_thresh: 0.3
8+
fine_detector_nms_thresh: 0.65
9+

0 commit comments

Comments
 (0)