Skip to content

Commit 2ed128a

Browse files
authored
Merge branch 'main' into refactor/map_projection_loader_params
2 parents 82e051f + dbdc238 commit 2ed128a

File tree

76 files changed

+4909
-684
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+4909
-684
lines changed

.github/workflows/build-and-test-differential.yaml

+6-11
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,9 @@ name: build-and-test-differential
22

33
on:
44
pull_request:
5-
types:
6-
- opened
7-
- synchronize
8-
- labeled
95

106
jobs:
11-
prevent-no-label-execution:
12-
uses: autowarefoundation/autoware-github-actions/.github/workflows/prevent-no-label-execution.yaml@v1
13-
with:
14-
label: tag:run-build-and-test-differential
15-
167
build-and-test-differential:
17-
needs: prevent-no-label-execution
18-
if: ${{ needs.prevent-no-label-execution.outputs.run == 'true' }}
198
runs-on: ubuntu-latest
209
container: ${{ matrix.container }}${{ matrix.container-suffix }}
2110
strategy:
@@ -36,6 +25,9 @@ jobs:
3625
with:
3726
fetch-depth: 0
3827

28+
- name: Check disk space before build
29+
run: df -h
30+
3931
- name: Remove exec_depend
4032
uses: autowarefoundation/autoware-github-actions/remove-exec-depend@v1
4133

@@ -69,6 +61,9 @@ jobs:
6961
verbose: true
7062
flags: differential
7163

64+
- name: Check disk space after build
65+
run: df -h
66+
7267
clang-tidy-differential:
7368
runs-on: ubuntu-latest
7469
container: ghcr.io/autowarefoundation/autoware-universe:humble-latest-cuda

launch/tier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727

2828
<group>
2929
<include file="$(find-pkg-share twist2accel)/launch/twist2accel.launch.xml">
30-
<arg name="use_odom" value="true"/>
3130
<arg name="in_odom" value="/localization/kinematic_state"/>
3231
<arg name="in_twist" value="/localization/twist_estimator/twist_with_covariance"/>
3332
<arg name="out_accel" value="/localization/acceleration"/>
33+
<arg name="param_file" value="$(var twist2accel_param_path)"/>
3434
</include>
3535
</group>
3636

launch/tier4_map_launch/package.xml

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
<maintainer email="ryu.yamamoto@tier4.jp">Ryu Yamamoto</maintainer>
99
<maintainer email="koji.minoda@tier4.jp">Koji Minoda</maintainer>
1010
<maintainer email="kento.yabuuchi.2@tier4.jp">Kento Yabuuchi</maintainer>
11+
<maintainer email="yamato.ando@tier4.jp">Yamato Ando</maintainer>
12+
<maintainer email="anh.nguyen.2@tier4.jp">NGUYEN Viet Anh</maintainer>
13+
<maintainer email="taiki.yamada@tier4.jp">Taiki Yamada</maintainer>
14+
<maintainer email="shintaro.sakoda@tier4.jp">Shintaro Sakoda</maintainer>
15+
<maintainer email="masahiro.sakamoto@tier4.jp">Masahiro Sakamoto</maintainer>
1116
<license>Apache License 2.0</license>
1217

1318
<buildtool_depend>ament_cmake_auto</buildtool_depend>

launch/tier4_perception_launch/launch/object_recognition/detection/detector/camera_lidar_detector.launch.xml

+3
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@
8585
<arg name="model_path" value="$(var pointpainting_model_path)"/>
8686
<arg name="model_param_path" value="$(var lidar_model_param_path)/$(var lidar_detection_model).param.yaml"/>
8787
<arg name="class_remapper_param_path" value="$(var lidar_model_param_path)/detection_class_remapper.param.yaml"/>
88+
89+
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
90+
<arg name="pointcloud_container_name" value="$(var pointcloud_container_name)"/>
8891
</include>
8992
</group>
9093

launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_dnn_detector.launch.xml

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
<arg name="model_path" value="$(var centerpoint_model_path)"/>
2323
<arg name="model_param_path" value="$(var lidar_model_param_path)/$(var centerpoint_model_name).param.yaml"/>
2424
<arg name="class_remapper_param_path" value="$(var lidar_model_param_path)/detection_class_remapper.param.yaml"/>
25+
26+
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
27+
<arg name="pointcloud_container_name" value="$(var pointcloud_container_name)"/>
2528
</include>
2629
</group>
2730
</group>

launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_rule_detector.launch.xml

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
<arg name="input_pointcloud" value="/perception/object_recognition/detection/pointcloud_map_filtered/pointcloud"/>
2727
<arg name="output_clusters" value="clusters"/>
2828
<arg name="use_low_height_cropbox" value="$(var use_low_height_cropbox)"/>
29+
30+
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
31+
<arg name="pointcloud_container_name" value="$(var pointcloud_container_name)"/>
2932
</include>
3033
</group>
3134

localization/twist2accel/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ ament_target_dependencies(twist2accel)
1313
ament_auto_package(
1414
INSTALL_TO_SHARE
1515
launch
16+
config
1617
)

localization/twist2accel/README.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ This package is responsible for estimating acceleration using the output of `ekf
2121

2222
## Parameters
2323

24-
| Name | Type | Description |
25-
| -------------------- | ------ | ------------------------------------------------------------------------- |
26-
| `use_odom` | bool | use odometry if true, else use twist input (default: true) |
27-
| `accel_lowpass_gain` | double | lowpass gain for lowpass filter in estimating acceleration (default: 0.9) |
24+
{{ json_to_markdown("localization/twist2accel/schema/twist2accel.schema.json") }}
2825

2926
## Future work
3027

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/**:
2+
ros__parameters:
3+
use_odom: true
4+
accel_lowpass_gain: 0.9
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
<launch>
2-
<arg name="use_odom" default="true"/>
3-
<arg name="accel_lowpass_gain" default="0.9"/>
2+
<arg name="param_file" default="$(find-pkg-share twist2accel)/config/twist2accel.param.yaml"/>
3+
44
<arg name="in_odom" default="in_odom"/>
55
<arg name="in_twist" default="in_twist"/>
66
<arg name="out_accel" default="out_accel"/>
77
<node pkg="twist2accel" exec="twist2accel" name="twist2accel" output="screen">
88
<remap from="input/odom" to="$(var in_odom)"/>
99
<remap from="input/twist" to="$(var in_twist)"/>
1010
<remap from="output/accel" to="$(var out_accel)"/>
11-
<param name="accel_lowpass_gain" value="$(var accel_lowpass_gain)"/>
12-
<param name="use_odom" value="$(var use_odom)"/>
11+
<param from="$(var param_file)"/>
1312
</node>
1413
</launch>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"title": "Parameters for twist2accel Nodes",
4+
"type": "object",
5+
"definitions": {
6+
"twist2accel": {
7+
"type": "object",
8+
"properties": {
9+
"use_odom": {
10+
"type": "boolean",
11+
"default": true,
12+
"description": "use odometry if true, else use twist input."
13+
},
14+
"accel_lowpass_gain": {
15+
"type": "number",
16+
"default": 0.9,
17+
"minimum": 0.0,
18+
"description": "lowpass gain for lowpass filter in estimating acceleration."
19+
}
20+
},
21+
"required": ["use_odom", "accel_lowpass_gain"]
22+
}
23+
},
24+
"properties": {
25+
"/**": {
26+
"type": "object",
27+
"properties": {
28+
"ros__parameters": {
29+
"$ref": "#/definitions/twist2accel"
30+
}
31+
},
32+
"required": ["ros__parameters"]
33+
}
34+
},
35+
"required": ["/**"]
36+
}

localization/twist2accel/src/twist2accel.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ Twist2Accel::Twist2Accel(const std::string & node_name, const rclcpp::NodeOption
3535
pub_accel_ = create_publisher<geometry_msgs::msg::AccelWithCovarianceStamped>("output/accel", 1);
3636

3737
prev_twist_ptr_ = nullptr;
38-
accel_lowpass_gain_ = declare_parameter("accel_lowpass_gain", 0.5);
39-
use_odom_ = declare_parameter("use_odom", true);
38+
accel_lowpass_gain_ = declare_parameter<double>("accel_lowpass_gain");
39+
use_odom_ = declare_parameter<bool>("use_odom");
4040

4141
lpf_alx_ptr_ = std::make_shared<LowpassFilter1d>(accel_lowpass_gain_);
4242
lpf_aly_ptr_ = std::make_shared<LowpassFilter1d>(accel_lowpass_gain_);

perception/euclidean_cluster/launch/euclidean_cluster.launch.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,27 @@ def load_composable_node_param(param_path):
7676
executable="component_container",
7777
composable_node_descriptions=[],
7878
output="screen",
79+
condition=UnlessCondition(LaunchConfiguration("use_pointcloud_container")),
80+
)
81+
82+
target_container = (
83+
LaunchConfiguration("pointcloud_container_name")
84+
if IfCondition(LaunchConfiguration("use_pointcloud_container")).evaluate(context)
85+
else container
7986
)
8087

8188
use_low_height_pointcloud_loader = LoadComposableNodes(
8289
composable_node_descriptions=[
8390
low_height_cropbox_filter_component,
8491
use_low_height_euclidean_component,
8592
],
86-
target_container=container,
93+
target_container=target_container,
8794
condition=IfCondition(LaunchConfiguration("use_low_height_cropbox")),
8895
)
8996

9097
disuse_low_height_pointcloud_loader = LoadComposableNodes(
9198
composable_node_descriptions=[disuse_low_height_euclidean_component],
92-
target_container=container,
99+
target_container=target_container,
93100
condition=UnlessCondition(LaunchConfiguration("use_low_height_cropbox")),
94101
)
95102

@@ -106,6 +113,8 @@ def add_launch_arg(name: str, default_value=None):
106113
add_launch_arg("input_map", "/map/pointcloud_map"),
107114
add_launch_arg("output_clusters", "clusters"),
108115
add_launch_arg("use_low_height_cropbox", "false"),
116+
add_launch_arg("use_pointcloud_container", "false"),
117+
add_launch_arg("pointcloud_container_name", "pointcloud_container"),
109118
add_launch_arg(
110119
"euclidean_param_path",
111120
[

perception/euclidean_cluster/launch/euclidean_cluster.launch.xml

+5
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,17 @@
55
<arg name="output_clusters" default="clusters"/>
66
<arg name="use_low_height_cropbox" default="false"/>
77
<arg name="euclidean_param_path" default="$(find-pkg-share euclidean_cluster)/config/euclidean_cluster.param.yaml"/>
8+
<arg name="use_pointcloud_container" default="false"/>
9+
<arg name="pointcloud_container_name" default="pointcloud_container"/>
810

911
<include file="$(find-pkg-share euclidean_cluster)/launch/euclidean_cluster.launch.py">
1012
<arg name="input_points_raw_list" value="$(var input_pointcloud)"/>
1113
<arg name="input_map" value="$(var input_map)"/>
1214
<arg name="output_clusters" value="$(var output_clusters)"/>
1315
<arg name="use_low_height_cropbox" value="$(var use_low_height_cropbox)"/>
1416
<arg name="euclidean_param_path" value="$(var euclidean_param_path)"/>
17+
18+
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
19+
<arg name="pointcloud_container_name" value="$(var pointcloud_container_name)"/>
1520
</include>
1621
</launch>

perception/euclidean_cluster/launch/voxel_grid_based_euclidean_cluster.launch.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,27 @@ def load_composable_node_param(param_path):
7777
executable="component_container",
7878
composable_node_descriptions=[],
7979
output="screen",
80+
condition=UnlessCondition(LaunchConfiguration("use_pointcloud_container")),
81+
)
82+
83+
target_container = (
84+
LaunchConfiguration("pointcloud_container_name")
85+
if IfCondition(LaunchConfiguration("use_pointcloud_container")).evaluate(context)
86+
else container
8087
)
8188

8289
use_low_height_pointcloud_loader = LoadComposableNodes(
8390
composable_node_descriptions=[
8491
low_height_cropbox_filter_component,
8592
use_low_height_euclidean_component,
8693
],
87-
target_container=container,
94+
target_container=target_container,
8895
condition=IfCondition(LaunchConfiguration("use_low_height_cropbox")),
8996
)
9097

9198
disuse_low_height_pointcloud_loader = LoadComposableNodes(
9299
composable_node_descriptions=[disuse_low_height_euclidean_component],
93-
target_container=container,
100+
target_container=target_container,
94101
condition=UnlessCondition(LaunchConfiguration("use_low_height_cropbox")),
95102
)
96103
return [
@@ -110,6 +117,8 @@ def add_launch_arg(name: str, default_value=None):
110117
add_launch_arg("input_map", "/map/pointcloud_map"),
111118
add_launch_arg("output_clusters", "clusters"),
112119
add_launch_arg("use_low_height_cropbox", "false"),
120+
add_launch_arg("use_pointcloud_container", "false"),
121+
add_launch_arg("pointcloud_container_name", "pointcloud_container"),
113122
add_launch_arg(
114123
"voxel_grid_based_euclidean_param_path",
115124
[

perception/euclidean_cluster/launch/voxel_grid_based_euclidean_cluster.launch.xml

+5
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,17 @@
55
<arg name="output_clusters" default="clusters"/>
66
<arg name="use_low_height_cropbox" default="false"/>
77
<arg name="voxel_grid_based_euclidean_param_path" default="$(find-pkg-share euclidean_cluster)/config/voxel_grid_based_euclidean_cluster.param.yaml"/>
8+
<arg name="use_pointcloud_container" default="false"/>
9+
<arg name="pointcloud_container_name" default="pointcloud_container"/>
810

911
<include file="$(find-pkg-share euclidean_cluster)/launch/voxel_grid_based_euclidean_cluster.launch.py">
1012
<arg name="input_pointcloud" value="$(var input_pointcloud)"/>
1113
<arg name="input_map" value="$(var input_map)"/>
1214
<arg name="output_clusters" value="$(var output_clusters)"/>
1315
<arg name="use_low_height_cropbox" value="$(var use_low_height_cropbox)"/>
1416
<arg name="voxel_grid_based_euclidean_param_path" value="$(var voxel_grid_based_euclidean_param_path)"/>
17+
18+
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
19+
<arg name="pointcloud_container_name" value="$(var pointcloud_container_name)"/>
1520
</include>
1621
</launch>

perception/image_projection_based_fusion/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ The timeout threshold should be set according to the postprocessing time.
5353
E.g, if the postprocessing time is around 50ms, the timeout threshold should be set smaller than 50ms, so that the whole processing time could be less than 100ms.
5454
current default value at autoware.universe for XX1: - timeout_ms: 50.0
5555

56+
#### The `build_only` option
57+
58+
The `pointpainting_fusion` node has `build_only` option to build the TensorRT engine file from the ONNX file.
59+
Although it is preferred to move all the ROS parameters in `.param.yaml` file in Autoware Universe, the `build_only` option is not moved to the `.param.yaml` file for now, because it may be used as a flag to execute the build as a pre-task. You can execute with the following command:
60+
61+
```bash
62+
ros2 launch image_projection_based_fusion pointpainting_fusion.launch.xml model_name:=pointpainting model_path:=/home/autoware/autoware_data/image_projection_based_fusion model_param_path:=$(ros2 pkg prefix image_projection_based_fusion --share)/config/pointpainting.param.yaml build_only:=true
63+
```
64+
5665
#### Known Limits
5766

5867
The rclcpp::TimerBase timer could not break a for loop, therefore even if time is out when fusing a roi msg at the middle, the program will run until all msgs are fused.

perception/image_projection_based_fusion/config/pointpainting.param.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
/**:
22
ros__parameters:
3+
trt_precision: fp16
4+
encoder_onnx_path: "$(var model_path)/pts_voxel_encoder_$(var model_name).onnx"
5+
encoder_engine_path: "$(var model_path)/pts_voxel_encoder_$(var model_name).engine"
6+
head_onnx_path: "$(var model_path)/pts_backbone_neck_head_$(var model_name).onnx"
7+
head_engine_path: "$(var model_path)/pts_backbone_neck_head_$(var model_name).engine"
8+
39
model_params:
410
class_names: ["CAR", "TRUCK", "BUS", "BICYCLE", "PEDESTRIAN"]
511
paint_class_names: ["CAR", "BICYCLE", "PEDESTRIAN"]

perception/image_projection_based_fusion/config/segmentation_pointcloud_fusion.param.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,13 @@
2828
# this is selected based on semantic segmentation model accuracy,
2929
# calibration accuracy and unknown reaction distance
3030
filter_distance_threshold: 60.0
31+
32+
# debug
33+
debug_mode: false
34+
filter_scope_minx: -100
35+
filter_scope_maxx: 100
36+
filter_scope_miny: -100
37+
filter_scope_maxy: 100
38+
filter_scope_minz: -100
39+
filter_scope_maxz: 100
40+
image_buffer_size: 15

0 commit comments

Comments
 (0)