Skip to content

Commit 5018df3

Browse files
authored
Merge branch 'main' into feat/modification_derived_from_new_diag_messages_of_ekf_localizer
2 parents 2dc6ebb + ca88dd0 commit 5018df3

10 files changed

Lines changed: 567 additions & 212 deletions

File tree

.github/CODEOWNERS

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ bag2lanelet/** shinnosuke.hirakawa@tier4.jp taiki.tanaka@tier4.jp
44
common/autoware_debug_tools/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp shintaro.sakoda@tier4.jp yhisaki31@gmail.com
55
common/autoware_sample_vehicle_description/** kosuke.takeuchi@tier4.jp takayuki.murooka@tier4.jp temkei.kem@tier4.jp
66
common/mission_planner_rviz_plugin/** isamu.takagi@tier4.jp
7-
common/rtc_manager_rviz_plugin/** taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp satoshi.ota@tier4.jp mamoru.sobue@tier4.jp
7+
common/rtc_manager_rviz_plugin/** mamoru.sobue@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp
88
common/tier4_automatic_goal_rviz_plugin/** dawid.moszynski@robotec.ai kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp
99
common/tier4_calibration_msgs/** taiki.tamaka@tier4.jp tomoya.kimura@tier4.jp
1010
common/tier4_calibration_rviz_plugin/** tomoya.kimura@tier4.jp
@@ -21,17 +21,17 @@ control/vehicle_cmd_analyzer/** taichi.hirano@tier4.jp
2121
control_data_collecting_tool/** asei.inoue@proxima-ai-tech.com kosuke.takeuchi@tier4.jp masayuki.aino@proxima-ai-tech.com takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp toru.hishinuma@proxima-ai-tech.com
2222
driving_environment_analyzer/** satoshi.ota@tier4.jp
2323
evaluation/tier4_metrics_rviz_plugin/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp
24-
localization/autoware_localization_evaluation_scripts/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp temkei.kem@tier4.jp yamato.ando@tier4.jp
25-
localization/deviation_estimation_tools/deviation_estimator/** kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
26-
localization/deviation_estimation_tools/deviation_evaluator/** kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
27-
map/autoware_lanelet2_map_utils/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
24+
localization/autoware_localization_evaluation_scripts/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp taiki.yamada@tier4.jp temkei.kem@tier4.jp yamato.ando@tier4.jp
25+
localization/deviation_estimation_tools/deviation_estimator/** masahiro.sakamoto@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
26+
localization/deviation_estimation_tools/deviation_evaluator/** masahiro.sakamoto@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
27+
map/autoware_lanelet2_map_utils/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
2828
map/autoware_pointcloud_divider/** anh.nguyen.2@tier4.jp
2929
map/autoware_pointcloud_merger/** anh.nguyen.2@tier4.jp
30-
map/autoware_pointcloud_projection_converter/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
31-
map/autoware_tp_manager/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
30+
map/autoware_pointcloud_projection_converter/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
31+
map/autoware_tp_manager/** anh.nguyen.2@tier4.jp masahiro.sakamoto@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp
3232
planning/autoware_planning_data_analyzer/** go.sakayori@tier4.jp satoshi.ota@tier4.jp
3333
planning/autoware_route_client/** fumiya.watanabe@tier4.jp
34-
planning/autoware_rtc_replayer/** fumiya.watanabe@tier4.jp taiki.tanaka@tier4.jp satoshi.ota@tier4.jp mamoru.sobue@tier4.jp
34+
planning/autoware_rtc_replayer/** fumiya.watanabe@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp
3535
planning/autoware_static_centerline_generator/** kosuke.takeuchi@tier4.jp takayuki.murooka@tier4.jp
3636
planning/planning_debug_tools/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp temkei.kem@tier4.jp
3737
simulator/simulator_compatibility_test/** shpark@morai.ai shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp

.pre-commit-config.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ci:
1111

1212
repos:
1313
- repo: https://github.com/pre-commit/pre-commit-hooks
14-
rev: v5.0.0
14+
rev: v6.0.0
1515
hooks:
1616
- id: check-json
1717
- id: check-merge-conflict
@@ -42,7 +42,7 @@ repos:
4242
- id: yamllint
4343

4444
- repo: https://github.com/autowarefoundation/autoware-guideline-check
45-
rev: 0.1.0
45+
rev: 0.2.0
4646
hooks:
4747
- id: check-package-depends
4848

@@ -57,7 +57,7 @@ repos:
5757
- id: sort-package-xml
5858

5959
- repo: https://github.com/shellcheck-py/shellcheck-py
60-
rev: v0.10.0.1
60+
rev: v0.11.0.1
6161
hooks:
6262
- id: shellcheck
6363

@@ -68,18 +68,18 @@ repos:
6868
args: [-w, -s, -i=4]
6969

7070
- repo: https://github.com/pycqa/isort
71-
rev: 6.0.1
71+
rev: 6.1.0
7272
hooks:
7373
- id: isort
7474

75-
- repo: https://github.com/psf/black
76-
rev: 25.1.0
75+
- repo: https://github.com/psf/black-pre-commit-mirror
76+
rev: 25.9.0
7777
hooks:
7878
- id: black
7979
args: [--line-length=100]
8080

8181
- repo: https://github.com/pre-commit/mirrors-clang-format
82-
rev: v20.1.8
82+
rev: v21.1.2
8383
hooks:
8484
- id: clang-format
8585
types_or: [c++, c, cuda]
@@ -92,7 +92,7 @@ repos:
9292
exclude: .cu
9393

9494
- repo: https://github.com/python-jsonschema/check-jsonschema
95-
rev: 0.33.2
95+
rev: 0.34.0
9696
hooks:
9797
- id: check-metaschema
9898
files: ^.+/schema/.*schema\.json$
@@ -108,7 +108,7 @@ repos:
108108
additional_dependencies: [prettier@2.7.1, "@prettier/plugin-xml@2.2.0"]
109109

110110
- repo: https://github.com/AleksaC/hadolint-py
111-
rev: v2.12.1b3
111+
rev: v2.14.0
112112
hooks:
113113
- id: hadolint
114114
exclude: .svg$

localization/autoware_localization_evaluation_scripts/README.md

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,23 +132,54 @@ $ ros2 run autoware_localization_evaluation_scripts diagnostics_flag_check.py \
132132
$HOME/driving_log_replayer_v2/out/latest/result_archive/diagnostics_result
133133
```
134134

135-
This command checks whether a diagnostics have risen/fallen at a specific timing.
135+
This command checks whether a diagnostics have been positive/negative at a specific timing.
136136
The diagnostics flag to observe should be defined in the input scenario file in the format like below.
137137

138138
```yaml
139139
Evaluation:
140140
Conditions:
141141
DiagnosticsFlagCheck:
142142
pose_is_passed_delay_gate:
143-
flag: rise
144-
at_sec: 113
145-
at_nanosec: 750000000
146-
```
147-
148-
This example means that the diagnostics `pose_is_passed_delay_gate` should rise at 113.75 sec in the rosbag time. To be more specific, the flag should rise within a time window of ±0.2 seconds around the target time.
149-
150-
Currently this script is still in development and the number of observable diagnostics will increase.
151-
Read the actual `diagnostics_flag_check.py` file to know what can be observed and the definition of rise and fall for each diagnostics.
143+
flag1:
144+
type: positive
145+
timing: at
146+
sec: 113
147+
nanosec: 750000000
148+
window: 500000000
149+
entirely: false
150+
flag2:
151+
type: negative
152+
timing: before
153+
sec: 110
154+
nanosec: 0
155+
entirely: true
156+
```
157+
158+
A diagnostics can have multiple flags and each flag should have the following fields. (Some have exceptions)
159+
160+
| Key | Expected value | Description |
161+
| -------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
162+
| type | "positive" or "negative" | Whether the diagnostics is expected to be "positive" or "negative". "positive" means that the diagnostics is ERROR or WARN, and "negative" is not. |
163+
| timing | "before", "after", or "at" | This defines the time window to check whether the diagnostics is "positive" or "negative". If the type is "positive" and there was a positive diagnostics in the time window the flag check passes, and the flag check fails if not. If the timing is set to "before", the time window starts from the beginning of the rosbag and ends to the time defined by `sec` and `nanosec`. If the timing is set to "after", the time window starts from the time defined by `sec` and `nanosec` and ends to the finish of the rosbag. If the timing is set to "at", the time window will be `-window` nanoseconds to `+window` nanoseconds with the time defined by `sec` and `nanosec` on the center. |
164+
| sec | int | The base time to define the time window with `nanosec`. The `sec` part in ROS time must be filled. |
165+
| nanosec | int | The base time to define the time window with `sec`. The `nanosec` part in ROS time must be filled. |
166+
| window | int | The nanoseconds of the half wing of the time window. Only used when the `timing` is "at", and it is removable if you are using "before" or "after". |
167+
| entirely | bool | Whether the target diagnostics should be positive/negative in the entire time window. It is removable and it will be set as "false" by default. |
168+
169+
This example means that the diagnostics `pose_is_passed_delay_gate` should rise at 113.75 sec in ROS time. To be more specific, the flag should be positive somewhere within a time window of +/- 0.5 seconds around the target time. Besides, the diagnostics should be negative until it reach 110.0 sec in ROS time.
170+
171+
Currently this script supports the following diagnostics. See the actual script to know the concrete definition of positive/negative.
172+
173+
| Key | diagnostics |
174+
| --------------------------------------- | ------------------------------------------------ |
175+
| pose_no_update_count | localization: ekf_localizer |
176+
| pose_is_passed_delay_gate | localization: ekf_localizer |
177+
| is_initial_pose_reliable | pose_initializer: pose_initializer_status |
178+
| imu_time_stamp_dt | gyro_odometer: gyro_odometer_status |
179+
| vehicle_twist_time_stamp_dt | gyro_odometer: gyro_odometer_status |
180+
| nearest_voxel_transformation_likelihood | ndt_scan_matcher: scan_matcher_status |
181+
| localization_error_ellipse | localization_error_monitor: ellipse_error_status |
182+
| pose_instability | localization: pose_instability_detector |
152183

153184
## analyze_rosbags_parallel.py
154185

localization/autoware_localization_evaluation_scripts/scripts/analyze_rosbags_parallel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ def load_overall_criteria_mask(yaml_path: Path) -> OverallCriteriaMask:
4747
with open(yaml_path, "r") as f:
4848
data = yaml.safe_load(f)
4949
conditions = data["Evaluation"]["Conditions"]
50-
except Exception:
50+
except Exception as e:
51+
print(type(e).__name__, e)
5152
return OverallCriteriaMask()
5253

5354
# If mask exists -> merge with defaults, else return defaults
@@ -59,7 +60,6 @@ def load_overall_criteria_mask(yaml_path: Path) -> OverallCriteriaMask:
5960
print(f"[WARN] Ignoring invalid OverallCriteriaMask fields: {invalid_fields}")
6061

6162
filtered_mask = {k: v for k, v in mask.items() if k in valid_fields}
62-
6363
return OverallCriteriaMask(**{**OverallCriteriaMask().__dict__, **filtered_mask})
6464

6565

0 commit comments

Comments
 (0)