diff --git a/README.md b/README.md
index 36640a1d..fee72b5d 100644
--- a/README.md
+++ b/README.md
@@ -76,16 +76,16 @@ in below three files (`sudo` required)
### Autoware Build
```
# If you have CUDA
-AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
+AUTOWARE_COMPILE_WITH_CUDA=1 catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release
# Build only some package
-AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select $(pakcage name)
+AUTOWARE_COMPILE_WITH_CUDA=1 catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release --pkg $(package name)
# Build without some package
-AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-skip $(pakcage name)
+AUTOWARE_COMPILE_WITH_CUDA=1 catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release -DCATKIN_BLACKLIST_PACKAGES=$(package name)
# If you don't have CUDA
-colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
+catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release
```
## How to build package in rubis_ws
diff --git a/autoware.ai/.catkin_workspace b/autoware.ai/.catkin_workspace
new file mode 100644
index 00000000..52fd97e7
--- /dev/null
+++ b/autoware.ai/.catkin_workspace
@@ -0,0 +1 @@
+# This file currently only serves to mark the location of a catkin workspace for tool integration
diff --git a/autoware.ai/.gitignore b/autoware.ai/.gitignore
index 8fd0d088..05bb0806 100644
--- a/autoware.ai/.gitignore
+++ b/autoware.ai/.gitignore
@@ -1,6 +1,8 @@
build
install
+devel
log
build/*
+devel/*
install/*
log/*
diff --git a/autoware.ai/autoware_files/carla_launch/1_sensing.launch b/autoware.ai/autoware_files/carla_launch/1_sensing.launch
index 7877aaac..b7e35f73 100644
--- a/autoware.ai/autoware_files/carla_launch/1_sensing.launch
+++ b/autoware.ai/autoware_files/carla_launch/1_sensing.launch
@@ -21,9 +21,9 @@
-
+
-
@@ -34,7 +34,7 @@
diff --git a/autoware.ai/autoware_files/carla_launch/2_localization_gicp.launch b/autoware.ai/autoware_files/carla_launch/2_localization_gicp.launch
index dcd33289..5738da2e 100644
--- a/autoware.ai/autoware_files/carla_launch/2_localization_gicp.launch
+++ b/autoware.ai/autoware_files/carla_launch/2_localization_gicp.launch
@@ -25,7 +25,7 @@
-
+
diff --git a/autoware.ai/autoware_files/carla_launch/2_localization_param.launch b/autoware.ai/autoware_files/carla_launch/2_localization_param.launch
index 89ca7b9c..a712d4cf 100644
--- a/autoware.ai/autoware_files/carla_launch/2_localization_param.launch
+++ b/autoware.ai/autoware_files/carla_launch/2_localization_param.launch
@@ -14,14 +14,12 @@
-
-
@@ -35,7 +33,7 @@
-
+
diff --git a/autoware.ai/autoware_files/carla_launch/4_planning.launch b/autoware.ai/autoware_files/carla_launch/4_planning.launch
index f96e87fe..bdbe0f5b 100644
--- a/autoware.ai/autoware_files/carla_launch/4_planning.launch
+++ b/autoware.ai/autoware_files/carla_launch/4_planning.launch
@@ -20,7 +20,7 @@
-
+
diff --git a/autoware.ai/autoware_files/data/tf/tf.launch b/autoware.ai/autoware_files/data/tf/tf.launch
index 4c4bfc50..d1b67f61 100755
--- a/autoware.ai/autoware_files/data/tf/tf.launch
+++ b/autoware.ai/autoware_files/data/tf/tf.launch
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/autoware.ai/autoware_files/data/yaml/default_lgsvl_params.yaml b/autoware.ai/autoware_files/data/yaml/default_lgsvl_params.yaml
index 5ab0bef1..aa3fa2f0 100644
--- a/autoware.ai/autoware_files/data/yaml/default_lgsvl_params.yaml
+++ b/autoware.ai/autoware_files/data/yaml/default_lgsvl_params.yaml
@@ -12,7 +12,7 @@
# Sensing
ray_ground_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/ray_ground_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -22,7 +22,7 @@ ray_ground_filter:
# Localization
voxel_grid_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/voxel_grid_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -33,17 +33,12 @@ ndt_matching:
localizer: "velodyne"
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/ndt_matching.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 70000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/ndt_matching_gpu_deadline.csv"
# Detection
calibration_publisher:
@@ -51,37 +46,27 @@ calibration_publisher:
lidar_euclidean_cluster_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_euclidean_cluster_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_clustering_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_clustering_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/clustring_gpu_deadline.csv"
vision_darknet_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vision_darknet_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_yolo_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_yolo_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/yolo_gpu_deadline.csv"
network_definition_file: "~/autoware.ai/autoware_files/vision/yolov3-320.cfg"
pretrained_model_file: "~/autoware.ai/autoware_files/vision/yolov3-320.weights"
imm_ukf_pda_track:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/imm_ukf_pda_track.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -91,7 +76,7 @@ imm_ukf_pda_track:
# Planning
op_global_planner:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_global_planner.csv"
rate: 25 #25
task_minimum_inter_release_time: 100000000
@@ -108,7 +93,7 @@ op_common_params:
op_trajectory_generator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_generator.csv"
rate: 100 #100
task_minimum_inter_release_time: 10000000
@@ -117,7 +102,7 @@ op_trajectory_generator:
op_trajectory_evaluator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_evaluator.csv"
rate: 100 #100
task_minimum_inter_release_time: 100000000
@@ -133,7 +118,7 @@ op_trajectory_evaluator:
op_behavior_selector:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_behavior_selector.csv"
rate: 100 #100
task_minimum_inter_release_time: 10000000
@@ -146,7 +131,7 @@ op_behavior_selector:
op_motion_predictor:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_motion_predictor.csv"
rate: 25 #25
task_minimum_inter_release_time: 40000000
@@ -156,7 +141,7 @@ op_motion_predictor:
# Control
pure_pursuit:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pure_pursuit.csv"
rate: 30 #30
task_minimum_inter_release_time: 33333333
@@ -167,7 +152,7 @@ pure_pursuit:
twist_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -176,7 +161,7 @@ twist_filter:
twist_gate:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_gate.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -187,7 +172,7 @@ twist_gate:
# Others
lidar_republisher:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_republisher.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -196,7 +181,7 @@ lidar_republisher:
vel_relay:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vel_relay.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -205,7 +190,7 @@ vel_relay:
vel_relay:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pose_relay.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -214,7 +199,7 @@ vel_relay:
republish:
task_scheduling_flag: 0
- task_profiling_flag: 1
+
task_response_time_filename: "~/Documents/profiling/response_time/republish.csv"
rate: 10
task_minimum_inter_release_time: 100000000
diff --git a/autoware.ai/autoware_files/data/yaml/desktop_lgsvl_params.yaml b/autoware.ai/autoware_files/data/yaml/desktop_lgsvl_params.yaml
index 4705e95b..a4354780 100644
--- a/autoware.ai/autoware_files/data/yaml/desktop_lgsvl_params.yaml
+++ b/autoware.ai/autoware_files/data/yaml/desktop_lgsvl_params.yaml
@@ -12,7 +12,7 @@
# Localization
voxel_grid_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/voxel_grid_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -23,17 +23,12 @@ ndt_matching:
localizer: "velodyne"
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/ndt_matching.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 70000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/ndt_matching_gpu_deadline.csv"
# Detection
compare_map_filter:
@@ -42,7 +37,7 @@ compare_map_filter:
max_clipping_height: 0.5
task_scheduling_flag: 0
- task_profiling_flag: 1
+
task_response_time_filename: "~/Documents/profiling/response_time/compare_map_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -51,37 +46,27 @@ compare_map_filter:
lidar_euclidean_cluster_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_euclidean_cluster_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_clustering_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_clustering_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/clustring_gpu_deadline.csv"
vision_darknet_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vision_darknet_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_yolo_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_yolo_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/yolo_gpu_deadline.csv"
network_definition_file: "~/autoware.ai/autoware_files/vision/yolov3-320.cfg"
pretrained_model_file: "~/autoware.ai/autoware_files/vision/yolov3-320.weights"
imm_ukf_pda_track:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/imm_ukf_pda_track.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -91,7 +76,7 @@ imm_ukf_pda_track:
# Planning
op_global_planner:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_global_planner.csv"
rate: 25 #25
task_minimum_inter_release_time: 100000000
@@ -108,7 +93,7 @@ op_common_params:
op_trajectory_generator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_generator.csv"
rate: 100 #100
task_minimum_inter_release_time: 10000000
@@ -117,7 +102,7 @@ op_trajectory_generator:
op_trajectory_evaluator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_evaluator.csv"
rate: 100 #100
task_minimum_inter_release_time: 100000000
@@ -133,7 +118,7 @@ op_trajectory_evaluator:
op_behavior_selector:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_behavior_selector.csv"
rate: 100 #100
task_minimum_inter_release_time: 10000000
@@ -146,7 +131,7 @@ op_behavior_selector:
op_motion_predictor:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_motion_predictor.csv"
rate: 25 #25
task_minimum_inter_release_time: 40000000
@@ -156,7 +141,7 @@ op_motion_predictor:
# Control
pure_pursuit:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pure_pursuit.csv"
rate: 30 #30
task_minimum_inter_release_time: 33333333
@@ -167,7 +152,7 @@ pure_pursuit:
twist_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -176,7 +161,7 @@ twist_filter:
twist_gate:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_gate.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -187,7 +172,7 @@ twist_gate:
# Others
lidar_republisher:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_republisher.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -196,7 +181,7 @@ lidar_republisher:
vel_relay:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vel_relay.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -205,7 +190,7 @@ vel_relay:
vel_relay:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pose_relay.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -214,7 +199,7 @@ vel_relay:
republish:
task_scheduling_flag: 0
- task_profiling_flag: 1
+
task_response_time_filename: "~/Documents/profiling/response_time/republish.csv"
rate: 10
task_minimum_inter_release_time: 100000000
diff --git a/autoware.ai/autoware_files/data/yaml/minicar_params.yaml b/autoware.ai/autoware_files/data/yaml/minicar_params.yaml
index 1a01c619..d6883c36 100644
--- a/autoware.ai/autoware_files/data/yaml/minicar_params.yaml
+++ b/autoware.ai/autoware_files/data/yaml/minicar_params.yaml
@@ -12,7 +12,7 @@
# Sensing
ray_ground_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/ray_ground_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -22,7 +22,7 @@ ray_ground_filter:
# Localization
voxel_grid_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/voxel_grid_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -33,17 +33,12 @@ ndt_matching:
localizer: "velodyne"
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/ndt_matching.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 70000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/ndt_matching_gpu_deadline.csv"
# Detection
calibration_publisher:
@@ -51,37 +46,27 @@ calibration_publisher:
lidar_euclidean_cluster_detect:
task_scheduling_flag: 1
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_euclidean_cluster_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_clustering_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_clustering_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/clustring_gpu_deadline.csv"
vision_darknet_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vision_darknet_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_yolo_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_yolo_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/yolo_gpu_deadline.csv"
network_definition_file: "~/autoware.ai/autoware_files/vision/yolov3-tiny.cfg"
pretrained_model_file: "~/autoware.ai/autoware_files/vision/yolov3-tiny.weights"
imm_ukf_pda_track:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/imm_ukf_pda_track.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -90,7 +75,7 @@ imm_ukf_pda_track:
range_vision_fusion:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/range_vision_fusion.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -100,7 +85,7 @@ range_vision_fusion:
# Planning
op_global_planner:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_global_planner.csv"
rate: 25 #25
task_minimum_inter_release_time: 100000000
@@ -116,7 +101,7 @@ op_common_params:
op_trajectory_generator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_generator.csv"
rate: 100 #100
task_minimum_inter_release_time: 10000000
@@ -125,7 +110,7 @@ op_trajectory_generator:
op_trajectory_evaluator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_evaluator.csv"
rate: 10 #100
task_minimum_inter_release_time: 100000000
@@ -141,7 +126,7 @@ op_trajectory_evaluator:
op_behavior_selector:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_behavior_selector.csv"
rate: 10 #100
task_minimum_inter_release_time: 10000000
@@ -154,7 +139,7 @@ op_behavior_selector:
op_motion_predictor:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_motion_predictor.csv"
rate: 10 #25
task_minimum_inter_release_time: 40000000
@@ -164,7 +149,7 @@ op_motion_predictor:
# Control
pure_pursuit:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pure_pursuit.csv"
rate: 1 #30
task_minimum_inter_release_time: 33333333
@@ -175,7 +160,7 @@ pure_pursuit:
twist_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_filter.csv"
rate: 1
task_minimum_inter_release_time: 100000000
@@ -184,7 +169,7 @@ twist_filter:
twist_gate:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_gate.csv"
rate: 1
task_minimum_inter_release_time: 100000000
diff --git a/autoware.ai/autoware_files/data/yaml/nvidia_lgsvl_params.yaml b/autoware.ai/autoware_files/data/yaml/nvidia_lgsvl_params.yaml
index dc83e4b8..582d2a7a 100644
--- a/autoware.ai/autoware_files/data/yaml/nvidia_lgsvl_params.yaml
+++ b/autoware.ai/autoware_files/data/yaml/nvidia_lgsvl_params.yaml
@@ -12,7 +12,7 @@
# Localization
voxel_grid_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/voxel_grid_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -23,17 +23,12 @@ ndt_matching:
localizer: "velodyne"
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/ndt_matching.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 70000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_ndt_matching_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/ndt_matching_gpu_deadline.csv"
# Detection
compare_map_filter:
@@ -42,7 +37,7 @@ compare_map_filter:
max_clipping_height: 0.5
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/compare_map_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -51,37 +46,27 @@ compare_map_filter:
lidar_euclidean_cluster_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_euclidean_cluster_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_clustering_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_clustering_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/clustring_gpu_deadline.csv"
vision_darknet_detect:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vision_darknet_detect.csv"
rate: 10
task_minimum_inter_release_time: 100000000
task_execution_time: 100000000
task_relative_deadline: 100000000
- gpu_scheduling_flag: 0
- gpu_profiling_flag: 0
- gpu_execution_time_filename: "~/Documents/gpu_profiling/test_yolo_execution_time.csv"
- gpu_response_time_filename: "~/Documents/gpu_profiling/test_yolo_response_time.csv"
- gpu_deadline_filename: "~/Documents/gpu_deadline/yolo_gpu_deadline.csv"
network_definition_file: "~/autoware.ai/autoware_files/vision/yolov3-tiny.cfg"
pretrained_model_file: "~/autoware.ai/autoware_files/vision/yolov3-tiny.weights"
imm_ukf_pda_track:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/imm_ukf_pda_track.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -91,7 +76,7 @@ imm_ukf_pda_track:
# Planning
op_global_planner:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_global_planner.csv"
rate: 25 #25
task_minimum_inter_release_time: 100000000
@@ -108,7 +93,7 @@ op_common_params:
op_trajectory_generator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_generator.csv"
rate: 100 #100
task_minimum_inter_release_time: 10000000
@@ -117,7 +102,7 @@ op_trajectory_generator:
op_trajectory_evaluator:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_trajectory_evaluator.csv"
rate: 10 #100
task_minimum_inter_release_time: 100000000
@@ -133,7 +118,7 @@ op_trajectory_evaluator:
op_behavior_selector:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_behavior_selector.csv"
rate: 10 #100
task_minimum_inter_release_time: 10000000
@@ -146,7 +131,7 @@ op_behavior_selector:
op_motion_predictor:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/op_motion_predictor.csv"
rate: 10 #25
task_minimum_inter_release_time: 40000000
@@ -156,7 +141,7 @@ op_motion_predictor:
# Control
pure_pursuit:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pure_pursuit.csv"
rate: 10 #30
task_minimum_inter_release_time: 33333333
@@ -167,7 +152,7 @@ pure_pursuit:
twist_filter:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_filter.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -176,7 +161,7 @@ twist_filter:
twist_gate:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/twist_gate.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -187,7 +172,7 @@ twist_gate:
# Others
lidar_republisher:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/lidar_republisher.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -196,7 +181,7 @@ lidar_republisher:
vel_relay:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/vel_relay.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -205,7 +190,7 @@ vel_relay:
vel_relay:
task_scheduling_flag: 0
- task_profiling_flag: 0
+
task_response_time_filename: "~/Documents/profiling/response_time/pose_relay.csv"
rate: 10
task_minimum_inter_release_time: 100000000
@@ -214,7 +199,7 @@ vel_relay:
republish:
task_scheduling_flag: 0
- task_profiling_flag: 1
+
task_response_time_filename: "~/Documents/profiling/response_time/republish.csv"
rate: 10
task_minimum_inter_release_time: 100000000
diff --git a/autoware.ai/autoware_files/gnss_mapping.launch b/autoware.ai/autoware_files/gnss_mapping.launch
index 6eec89a1..3c46f99c 100644
--- a/autoware.ai/autoware_files/gnss_mapping.launch
+++ b/autoware.ai/autoware_files/gnss_mapping.launch
@@ -33,8 +33,8 @@
-
-
+
+
diff --git a/autoware.ai/autoware_files/lgsvl_file/launch/base/single_sensing.launch b/autoware.ai/autoware_files/lgsvl_file/launch/base/single_sensing.launch
index aa5985b4..9c5b57e7 100644
--- a/autoware.ai/autoware_files/lgsvl_file/launch/base/single_sensing.launch
+++ b/autoware.ai/autoware_files/lgsvl_file/launch/base/single_sensing.launch
@@ -6,9 +6,9 @@
-
+
-
+
@@ -26,7 +26,7 @@
diff --git a/autoware.ai/autoware_files/lgsvl_file/launch/desktop/single_sensing.launch b/autoware.ai/autoware_files/lgsvl_file/launch/desktop/single_sensing.launch
index a431a452..d941a1f5 100644
--- a/autoware.ai/autoware_files/lgsvl_file/launch/desktop/single_sensing.launch
+++ b/autoware.ai/autoware_files/lgsvl_file/launch/desktop/single_sensing.launch
@@ -1,20 +1,20 @@
-
+
-
+
-
+
-
+
@@ -31,7 +31,7 @@
diff --git a/autoware.ai/autoware_files/lgsvl_file/launch/lgsvl_bridge.launch b/autoware.ai/autoware_files/lgsvl_file/launch/lgsvl_bridge.launch
index b4bd4276..eb15e97b 100644
--- a/autoware.ai/autoware_files/lgsvl_file/launch/lgsvl_bridge.launch
+++ b/autoware.ai/autoware_files/lgsvl_file/launch/lgsvl_bridge.launch
@@ -1,11 +1,11 @@
-
+
-
+
-
+
diff --git a/autoware.ai/autoware_files/lgsvl_file/launch/map_loader.launch b/autoware.ai/autoware_files/lgsvl_file/launch/map_loader.launch
index 2fe5748b..1fb35397 100644
--- a/autoware.ai/autoware_files/lgsvl_file/launch/map_loader.launch
+++ b/autoware.ai/autoware_files/lgsvl_file/launch/map_loader.launch
@@ -1,6 +1,6 @@
-
+
-
diff --git a/autoware.ai/autoware_files/lgsvl_file/launch/minicar/single_sensing.launch b/autoware.ai/autoware_files/lgsvl_file/launch/minicar/single_sensing.launch
index 3fd2a96f..f6c44d32 100644
--- a/autoware.ai/autoware_files/lgsvl_file/launch/minicar/single_sensing.launch
+++ b/autoware.ai/autoware_files/lgsvl_file/launch/minicar/single_sensing.launch
@@ -1,19 +1,19 @@
-
+
-
+
-
+
-
+
@@ -30,7 +30,7 @@
diff --git a/autoware.ai/autoware_files/lgsvl_file/launch/nvidia/single_sensing.launch b/autoware.ai/autoware_files/lgsvl_file/launch/nvidia/single_sensing.launch
index 797d0f89..3c680ac1 100644
--- a/autoware.ai/autoware_files/lgsvl_file/launch/nvidia/single_sensing.launch
+++ b/autoware.ai/autoware_files/lgsvl_file/launch/nvidia/single_sensing.launch
@@ -1,20 +1,20 @@
-
+
-
+
-
+
-
+
@@ -31,7 +31,7 @@
diff --git a/autoware.ai/autoware_files/rviz/carla.rviz b/autoware.ai/autoware_files/rviz/carla.rviz
index 8257e334..3dc0c6ea 100644
--- a/autoware.ai/autoware_files/rviz/carla.rviz
+++ b/autoware.ai/autoware_files/rviz/carla.rviz
@@ -11,7 +11,7 @@ Panels:
- /Perception1
- /Perception1/Tracked Objects1
Splitter Ratio: 0.4564755856990814
- Tree Height: 547
+ Tree Height: 408
- Class: rviz/Selection
Name: Selection
- Class: rviz/Tool Properties
@@ -30,11 +30,11 @@ Panels:
Experimental: false
Name: Time
SyncMode: 0
- SyncSource: Points Map
+ SyncSource: Filtered Point
- Class: autoware_rviz_debug/DecisionMakerPanel
Name: DecisionMakerPanel
- Class: integrated_viewer/ImageViewerPlugin
- Image topic: /image_raw
+ Image topic: -----
Lane topic: -----
Name: ImageViewerPlugin
Point size: 3
@@ -78,10 +78,14 @@ Visualization Manager:
Value: true
ego_vehicle:
Value: true
+ ego_vehicle/collision:
+ Value: true
ego_vehicle/gnss:
Value: true
ego_vehicle/imu:
Value: true
+ ego_vehicle/lane_invasion:
+ Value: true
ego_vehicle/lidar:
Value: true
ego_vehicle/rgb_front:
@@ -96,10 +100,14 @@ Visualization Manager:
Value: true
obstacle:
Value: true
+ obstacle/collision:
+ Value: true
velodyne:
Value: true
walker:
Value: true
+ walker/collision:
+ Value: true
world:
Value: true
Marker Scale: 5
@@ -128,9 +136,11 @@ Visualization Manager:
mobility:
{}
obstacle:
- {}
+ obstacle/collision:
+ {}
walker:
- {}
+ walker/collision:
+ {}
Update Interval: 0
Value: true
- Alpha: 1
@@ -352,9 +362,7 @@ Visualization Manager:
Enabled: true
Invert Rainbow: false
Max Color: 255; 255; 255
- Max Intensity: 4096
Min Color: 0; 0; 0
- Min Intensity: 0
Name: Points Map
Position Transformer: XYZ
Queue Size: 10
@@ -394,9 +402,7 @@ Visualization Manager:
Enabled: false
Invert Rainbow: false
Max Color: 255; 255; 255
- Max Intensity: 0.9980455636978149
Min Color: 0; 0; 0
- Min Intensity: 0.5593598484992981
Name: Points Raw
Position Transformer: XYZ
Queue Size: 10
@@ -424,9 +430,7 @@ Visualization Manager:
Enabled: false
Invert Rainbow: false
Max Color: 255; 255; 255
- Max Intensity: 4096
Min Color: 0; 0; 0
- Min Intensity: 0
Name: Points No Ground
Position Transformer: XYZ
Queue Size: 10
@@ -454,9 +458,7 @@ Visualization Manager:
Enabled: true
Invert Rainbow: false
Max Color: 255; 255; 255
- Max Intensity: 0.9974985122680664
Min Color: 0; 0; 0
- Min Intensity: 0.5666885375976562
Name: Filtered Point
Position Transformer: XYZ
Queue Size: 10
@@ -484,9 +486,7 @@ Visualization Manager:
Enabled: false
Invert Rainbow: false
Max Color: 255; 255; 255
- Max Intensity: 4096
Min Color: 0; 0; 0
- Min Intensity: 0
Name: Aligned Point
Position Transformer: XYZ
Queue Size: 10
@@ -567,9 +567,7 @@ Visualization Manager:
Enabled: true
Invert Rainbow: false
Max Color: 255; 255; 255
- Max Intensity: 4096
Min Color: 0; 0; 0
- Min Intensity: 0
Name: Clustered Points
Position Transformer: XYZ
Queue Size: 10
@@ -747,7 +745,7 @@ Visualization Manager:
Value: true
Views:
Current:
- Angle: -0.0349983349442482
+ Angle: 0.025001663714647293
Class: rviz/TopDownOrtho
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
@@ -757,23 +755,23 @@ Visualization Manager:
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
- Scale: 10.921646118164062
+ Scale: 4.204458236694336
Target Frame:
Value: TopDownOrtho (rviz)
- X: 262.76385498046875
- Y: 204.9719696044922
+ X: 205.8017120361328
+ Y: 244.97866821289062
Saved: ~
Window Geometry:
DecisionMakerPanel:
collapsed: false
Displays:
- collapsed: false
- Height: 1410
- Hide Left Dock: false
+ collapsed: true
+ Height: 846
+ Hide Left Dock: true
Hide Right Dock: true
ImageViewerPlugin:
- collapsed: false
- QMainWindow State: 000000ff00000000fd0000000400000000000002bc000004c6fc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afc0000003d00000260000000c900fffffffa000000020100000003fb0000000a0049006d0061006700650000000000ffffffff0000000000000000fb0000000c00430061006d0065007200610000000000ffffffff0000000000000000fb000000100044006900730070006c0061007900730100000000000001360000015600fffffffb0000000a0049006d006100670065010000028e000000d20000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000120049006d006100670065005f0072006100770000000000ffffffff0000000000000000fb0000000c00430061006d006500720061000000024e000001710000000000000000fb000000120049006d00610067006500200052006100770100000421000000160000000000000000fb0000000a0049006d00610067006501000002f4000000cb0000000000000000fb0000000a0049006d006100670065010000056c0000026c0000000000000000fb00000024004400650063006900730069006f006e004d0061006b0065007200500061006e0065006c00000002110000018f0000006e00fffffffb000000220049006d0061006700650056006900650077006500720050006c007500670069006e01000002a3000002600000008400ffffff0000000100000125000004c8fc0200000003fb0000000a00560069006500770073000000003d000004c8000000a400fffffffb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073f000000a8fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000a000000005cfc0100000002fb0000000800540069006d0065010000000000000a00000002eb00fffffffb0000000800540069006d006501000000000000045000000000000000000000073e000004c600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ collapsed: true
+ QMainWindow State: 000000ff00000000fd00000004000000000000063c00000734fc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afc0000006e000003950000000000fffffffa000000000100000003fb0000000a0049006d0061006700650000000000ffffffff0000000000000000fb0000000c00430061006d0065007200610000000000ffffffff0000000000000000fb000000100044006900730070006c006100790073000000000000000136000001f700fffffffb0000000a0049006d006100670065010000028e000000d20000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000120049006d006100670065005f0072006100770000000000ffffffff0000000000000000fb0000000c00430061006d006500720061000000024e000001710000000000000000fb000000120049006d00610067006500200052006100770100000421000000160000000000000000fb0000000a0049006d00610067006501000002f4000000cb0000000000000000fb0000000a0049006d006100670065010000056c0000026c0000000000000000fb00000024004400650063006900730069006f006e004d0061006b0065007200500061006e0065006c00000002110000018f000000d400fffffffb000000220049006d0061006700650056006900650077006500720050006c007500670069006e000000040f00000393000000f400ffffff0000000100000125000004c8fc0200000003fb0000000a00560069006500770073000000003d000004c80000013200fffffffb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073f000000a8fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007490000005cfc0100000002fb0000000800540069006d00650100000000000007490000057100fffffffb0000000800540069006d00650100000000000004500000000000000000000007490000024a00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Selection:
collapsed: false
Time:
@@ -782,6 +780,6 @@ Window Geometry:
collapsed: false
Views:
collapsed: true
- Width: 2560
- X: 2560
- Y: 0
+ Width: 1865
+ X: 44
+ Y: 1254
diff --git a/autoware.ai/autoware_files/rviz/cubetown.rviz b/autoware.ai/autoware_files/rviz/cubetown.rviz
new file mode 100644
index 00000000..63d05258
--- /dev/null
+++ b/autoware.ai/autoware_files/rviz/cubetown.rviz
@@ -0,0 +1,638 @@
+Panels:
+ - Class: rviz/Displays
+ Help Height: 0
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Global Options1
+ - /Grid1
+ - /System1/TF1
+ - /System1/TF1/Frames1
+ - /Map1/Vector Map1
+ - /Sensing1
+ - /Perception1
+ - /Perception1/Lidar Objects1
+ - /Planning1
+ - /Planning1/OP Planner1
+ - /Planning1/OP Planner1/GlobalPathAnimation1
+ - /Planning1/Next Traget1
+ - /Planning1/Behavior State1
+ Splitter Ratio: 0.22158685326576233
+ Tree Height: 1675
+ - Class: rviz/Selection
+ Name: Selection
+ - Class: rviz/Tool Properties
+ Expanded:
+ - /2D Pose Estimate1
+ - /2D Nav Goal1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: Points Map
+ - Class: autoware_rviz_debug/DecisionMakerPanel
+ Name: DecisionMakerPanel
+ - Class: integrated_viewer/ImageViewerPlugin
+ Image topic: -----
+ Lane topic: -----
+ Name: ImageViewerPlugin
+ Point size: 3
+ Point topic: -----
+ Rect topic: /detection/image_detector/objects
+Preferences:
+ PromptSaveOnExit: true
+Toolbars:
+ toolButtonStyle: 2
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 10
+ Class: rviz/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 20
+ Reference Frame: map
+ Value: true
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/TF
+ Enabled: true
+ Frame Timeout: 15
+ Frames:
+ All Enabled: false
+ base_link:
+ Value: true
+ camera:
+ Value: false
+ map:
+ Value: true
+ mobility:
+ Value: false
+ velodyne:
+ Value: true
+ world:
+ Value: false
+ Marker Scale: 30
+ Name: TF
+ Show Arrows: true
+ Show Axes: true
+ Show Names: true
+ Tree:
+ world:
+ map:
+ base_link:
+ velodyne:
+ camera:
+ {}
+ mobility:
+ {}
+ Update Interval: 0
+ Value: true
+ - Alpha: 1
+ Class: rviz/RobotModel
+ Collision Enabled: false
+ Enabled: true
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ Name: Vehicle Model
+ Robot Description: robot_description
+ TF Prefix: ""
+ Update Interval: 0
+ Value: true
+ Visual Enabled: true
+ - Class: rviz/Group
+ Displays:
+ - Buffer length: 100
+ Class: jsk_rviz_plugin/Plotter2D
+ Enabled: true
+ Name: Velocity (km/h)
+ Show Value: true
+ Topic: /linear_velocity_viz
+ Value: true
+ auto color change: false
+ auto scale: true
+ background color: 0; 0; 0
+ backround alpha: 0
+ border: true
+ foreground alpha: 1
+ foreground color: 0; 255; 255
+ height: 80
+ left: 40
+ linewidth: 1
+ max color: 255; 0; 0
+ max value: 1
+ min value: -1
+ show caption: true
+ text size: 8
+ top: 30
+ update interval: 0.03999999910593033
+ width: 80
+ - Buffer length: 100
+ Class: jsk_rviz_plugin/Plotter2D
+ Enabled: true
+ Name: NDT Time [ms]
+ Show Value: true
+ Topic: /time_ndt_matching
+ Value: true
+ auto color change: false
+ auto scale: true
+ background color: 0; 0; 0
+ backround alpha: 0
+ border: true
+ foreground alpha: 1
+ foreground color: 0; 255; 255
+ height: 80
+ left: 140
+ linewidth: 1
+ max color: 255; 0; 0
+ max value: 1
+ min value: -1
+ show caption: true
+ text size: 8
+ top: 30
+ update interval: 0.03999999910593033
+ width: 80
+ - Align Bottom: false
+ Background Alpha: 0.8999999761581421
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 0; 255; 255
+ Invert Shadow: false
+ Name: NDT Monitor
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /ndt_monitor/ndt_info_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 50
+ left: 40
+ line width: 2
+ text size: 8
+ top: 150
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.8999999761581421
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 0; 255; 255
+ Invert Shadow: false
+ Name: Decision Maker Panel
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /decision_maker/state_overlay
+ Value: true
+ font: DejaVu Sans Mono
+ height: 200
+ left: 40
+ line width: 2
+ text size: 8
+ top: 220
+ width: 200
+ Enabled: true
+ Name: Monitor
+ - Class: rviz/Group
+ Displays:
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 25; 255; 240
+ Invert Shadow: false
+ Name: OK
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/ok_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 430
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 255; 0
+ Invert Shadow: false
+ Name: WARN
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/warn_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 520
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 85; 0
+ Invert Shadow: false
+ Name: ERROR
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/error_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 620
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 0; 0
+ Invert Shadow: false
+ Name: FATAL
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/fatal_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 720
+ width: 200
+ Enabled: true
+ Name: Health Checker
+ Enabled: true
+ Name: System
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.05000000074505806
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 10
+ Min Value: -10
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: FlatColor
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points Map
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 2
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_map
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /vector_map_center_lines_rviz
+ Name: Vector Map
+ Namespaces:
+ road_network_vector_map: true
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Map
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.30000001192092896
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: Intensity
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points Raw
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 5
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /filtered_points
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 10
+ Min Value: -10
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: Intensity
+ Decay Time: 0
+ Enabled: false
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points No Ground
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 5
+ Size (m): 5
+ Style: Points
+ Topic: /debug_points_no_ground
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: false
+ Enabled: false
+ Name: Sensing
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: RGB8
+ Decay Time: 0
+ Enabled: false
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Clustered Points
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 10
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_cluster_center
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: false
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /detection/lidar_detector/objects_markers_center
+ Name: Lidar Objects
+ Namespaces:
+ /detection/lidar_detector/centroid_markers2: true
+ /detection/lidar_detector/hull_markers2: true
+ /detection/lidar_detector/label_markers2: true
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Perception
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /local_trajectories_eval_rviz
+ Name: Local Rollouts
+ Namespaces:
+ local_lane_array_marker_colored: true
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /safety_border
+ Name: Safety Box
+ Namespaces:
+ global_lane_array_marker: true
+ Queue Size: 100
+ Value: true
+ - Class: jsk_rviz_plugin/BoundingBoxArray
+ Enabled: false
+ Name: Simulated Obstacle
+ Topic: /dp_planner_tracked_boxes
+ Unreliable: false
+ Value: false
+ alpha: 0.800000011920929
+ color: 25; 255; 0
+ coloring: Value
+ line width: 0.009999999776482582
+ only edge: false
+ show coords: false
+ - Class: rviz/MarkerArray
+ Enabled: false
+ Marker Topic: /global_waypoints_rviz
+ Name: GlobalPathAnimation
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ - Class: rviz/Marker
+ Enabled: false
+ Marker Topic: /behavior_state
+ Name: Behavior State
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ - Class: rviz/MarkerArray
+ Enabled: false
+ Marker Topic: /detected_polygons
+ Name: Tracked Contours
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ - Class: rviz/MarkerArray
+ Enabled: false
+ Marker Topic: /global_waypoints_rviz
+ Name: Global Path
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ Enabled: true
+ Name: OP Planner
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /next_target_mark
+ Name: Next Traget
+ Namespaces:
+ next_target_marker: true
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /behavior_state
+ Name: Behavior State
+ Namespaces:
+ beh_state: true
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Planning
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /trajectory_circle_mark
+ Name: Pure Pursuit Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /next_target_mark
+ Name: Pure Pursuit Target
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /mpc_follower/debug/predicted_traj
+ Name: MPC Predicted Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /mpc_follower/debug/filtered_traj
+ Name: MPC Reference Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: false
+ Name: Control
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Default Light: true
+ Fixed Frame: world
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz/Interact
+ Hide Inactive Objects: true
+ - Class: rviz/MoveCamera
+ - Class: rviz/Select
+ - Class: rviz/FocusCamera
+ - Class: rviz/Measure
+ - Class: rviz/SetInitialPose
+ Theta std deviation: 0.2617993950843811
+ Topic: /initialpose
+ X std deviation: 0.5
+ Y std deviation: 0.5
+ - Class: rviz/SetGoal
+ Topic: /move_base_simple/goal
+ - Class: rviz/PublishPoint
+ Single click: true
+ Topic: /clicked_point
+ Value: true
+ Views:
+ Current:
+ Angle: 1.300126314163208e-6
+ Class: rviz/TopDownOrtho
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Scale: 8.730535507202148
+ Target Frame: map
+ Value: TopDownOrtho (rviz)
+ X: -18.137195587158203
+ Y: 45.29766082763672
+ Saved: ~
+Window Geometry:
+ DecisionMakerPanel:
+ collapsed: false
+ Displays:
+ collapsed: false
+ Height: 2049
+ Hide Left Dock: false
+ Hide Right Dock: false
+ ImageViewerPlugin:
+ collapsed: false
+ QMainWindow State: 000000ff00000000fd000000040000000000000579000006f9fc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afc0000006e000006f90000018200fffffffa000000020100000003fb0000000a0049006d0061006700650000000000ffffffff0000000000000000fb0000000c00430061006d0065007200610000000000ffffffff0000000000000000fb000000100044006900730070006c006100790073010000000000000136000001f700fffffffb0000000a0049006d006100670065010000028e000000d20000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000120049006d006100670065005f0072006100770000000000ffffffff0000000000000000fb0000000c00430061006d006500720061000000024e000001710000000000000000fb000000120049006d00610067006500200052006100770100000421000000160000000000000000fb0000000a0049006d00610067006501000002f4000000cb0000000000000000fb0000000a0049006d006100670065010000056c0000026c0000000000000000fb00000024004400650063006900730069006f006e004d0061006b0065007200500061006e0065006c00000002110000018f000000d400fffffffb000000220049006d0061006700650056006900650077006500720050006c007500670069006e0000000213000002db000000f400ffffff000000010000015f000006f9fc0200000003fb0000000a00560069006500770073010000006e000006f90000013200fffffffb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073f000000a8fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000e7a00000060fc0100000002fb0000000800540069006d0065010000000000000e7a0000057100fffffffb0000000800540069006d006501000000000000045000000000000000000000078a000006f900000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 3706
+ X: 134
+ Y: 55
diff --git a/autoware.ai/autoware_files/rviz/cubetown_origin.rviz b/autoware.ai/autoware_files/rviz/cubetown_origin.rviz
new file mode 100644
index 00000000..d6d204f0
--- /dev/null
+++ b/autoware.ai/autoware_files/rviz/cubetown_origin.rviz
@@ -0,0 +1,712 @@
+Panels:
+ - Class: rviz/Displays
+ Help Height: 0
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Grid1
+ - /System1
+ - /System1/TF1
+ - /System1/TF1/Frames1
+ - /Map1
+ - /Map1/Vector Map1
+ - /Perception1
+ - /Perception1/Tracked Objects1
+ - /Planning1
+ - /Planning1/Saved Waypoints1
+ Splitter Ratio: 0.642276406288147
+ Tree Height: 1042
+ - Class: rviz/Selection
+ Name: Selection
+ - Class: rviz/Tool Properties
+ Expanded:
+ - /2D Pose Estimate1
+ - /2D Nav Goal1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: Points Map
+ - Class: autoware_rviz_debug/DecisionMakerPanel
+ Name: DecisionMakerPanel
+ - Class: integrated_viewer/ImageViewerPlugin
+ Image topic: -----
+ Lane topic: -----
+ Name: ImageViewerPlugin
+ Point size: 3
+ Point topic: -----
+ Rect topic: /detection/image_detector/objects
+Preferences:
+ PromptSaveOnExit: true
+Toolbars:
+ toolButtonStyle: 2
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 10
+ Class: rviz/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 10
+ Reference Frame: base_link
+ Value: true
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/TF
+ Enabled: true
+ Frame Timeout: 15
+ Frames:
+ All Enabled: false
+ base_link:
+ Value: true
+ camera:
+ Value: false
+ gnss:
+ Value: true
+ map:
+ Value: true
+ mobility:
+ Value: false
+ velodyne:
+ Value: true
+ world:
+ Value: false
+ Marker Scale: 5
+ Name: TF
+ Show Arrows: true
+ Show Axes: true
+ Show Names: true
+ Tree:
+ world:
+ {}
+ Update Interval: 0
+ Value: true
+ - Alpha: 1
+ Class: rviz/RobotModel
+ Collision Enabled: false
+ Enabled: true
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ Name: Vehicle Model
+ Robot Description: robot_description
+ TF Prefix: ""
+ Update Interval: 0
+ Value: true
+ Visual Enabled: true
+ - Class: rviz/Group
+ Displays:
+ - Buffer length: 100
+ Class: jsk_rviz_plugin/Plotter2D
+ Enabled: true
+ Name: Velocity (km/h)
+ Show Value: true
+ Topic: /linear_velocity_viz
+ Value: true
+ auto color change: false
+ auto scale: true
+ background color: 0; 0; 0
+ backround alpha: 0
+ border: true
+ foreground alpha: 1
+ foreground color: 0; 255; 255
+ height: 80
+ left: 40
+ linewidth: 1
+ max color: 255; 0; 0
+ max value: 1
+ min value: -1
+ show caption: true
+ text size: 8
+ top: 30
+ update interval: 0.03999999910593033
+ width: 80
+ - Buffer length: 100
+ Class: jsk_rviz_plugin/Plotter2D
+ Enabled: true
+ Name: NDT Time [ms]
+ Show Value: true
+ Topic: /time_ndt_matching
+ Value: true
+ auto color change: false
+ auto scale: true
+ background color: 0; 0; 0
+ backround alpha: 0
+ border: true
+ foreground alpha: 1
+ foreground color: 0; 255; 255
+ height: 80
+ left: 140
+ linewidth: 1
+ max color: 255; 0; 0
+ max value: 1
+ min value: -1
+ show caption: true
+ text size: 8
+ top: 30
+ update interval: 0.03999999910593033
+ width: 80
+ - Align Bottom: false
+ Background Alpha: 0.8999999761581421
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 0; 255; 255
+ Invert Shadow: false
+ Name: NDT Monitor
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /ndt_monitor/ndt_info_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 50
+ left: 40
+ line width: 2
+ text size: 8
+ top: 150
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.8999999761581421
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 0; 255; 255
+ Invert Shadow: false
+ Name: Decision Maker Panel
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /decision_maker/state_overlay
+ Value: true
+ font: DejaVu Sans Mono
+ height: 200
+ left: 40
+ line width: 2
+ text size: 8
+ top: 220
+ width: 200
+ Enabled: true
+ Name: Monitor
+ - Class: rviz/Group
+ Displays:
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 25; 255; 240
+ Invert Shadow: false
+ Name: OK
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/ok_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 430
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 255; 0
+ Invert Shadow: false
+ Name: WARN
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/warn_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 520
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 85; 0
+ Invert Shadow: false
+ Name: ERROR
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/error_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 620
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 0; 0
+ Invert Shadow: false
+ Name: FATAL
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/fatal_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 720
+ width: 200
+ Enabled: true
+ Name: Health Checker
+ Enabled: true
+ Name: System
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.05000000074505806
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 10
+ Min Value: -10
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: FlatColor
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points Map
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 2
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_map
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /vector_map_center_lines_rviz
+ Name: Vector Map
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Map
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.30000001192092896
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: Intensity
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points Raw
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 2
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_raw
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Alpha: 0.5
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 0; 0
+ Color Transformer: FlatColor
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points No Ground
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 2
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_no_ground
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ Enabled: true
+ Name: Sensing
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 1
+ Axes Length: 1
+ Axes Radius: 0.10000000149011612
+ Class: rviz/Pose
+ Color: 255; 170; 255
+ Enabled: false
+ Head Length: 2
+ Head Radius: 2
+ Name: Current Pose
+ Shaft Length: 2
+ Shaft Radius: 1
+ Shape: Arrow
+ Topic: /current_pose
+ Unreliable: false
+ Value: false
+ - Alpha: 1
+ Axes Length: 1
+ Axes Radius: 0.10000000149011612
+ Class: rviz/Pose
+ Color: 255; 255; 0
+ Enabled: false
+ Head Length: 2
+ Head Radius: 1
+ Name: EKF Pose
+ Shaft Length: 2
+ Shaft Radius: 0.5
+ Shape: Arrow
+ Topic: /ekf_pose
+ Unreliable: false
+ Value: false
+ - Alpha: 1
+ Axes Length: 1
+ Axes Radius: 0.10000000149011612
+ Class: rviz/Pose
+ Color: 0; 255; 255
+ Enabled: false
+ Head Length: 2
+ Head Radius: 1
+ Name: NDT Pose
+ Shaft Length: 2
+ Shaft Radius: 0.5
+ Shape: Arrow
+ Topic: /ndt_pose
+ Unreliable: false
+ Value: false
+ Enabled: true
+ Name: Localization
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.699999988079071
+ Class: rviz/Map
+ Color Scheme: map
+ Draw Behind: true
+ Enabled: true
+ Name: Occupancy Grid Map
+ Topic: /semantics/costmap_generator/occupancy_grid
+ Unreliable: false
+ Use Timestamp: false
+ Value: true
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: RGB8
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Clustered Points
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 5
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_cluster
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /detection/lidar_detector/objects_markers_center
+ Name: Tracked Objects
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /prediction/motion_predictor/path_markers
+ Name: Predicted Path
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Perception
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /local_trajectories_eval_rviz
+ Name: Saved Waypoints
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /global_waypoints_mark
+ Name: Global Waypoints
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /local_waypoints_mark
+ Name: Local Waypoints
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /detection_range
+ Name: Detection Range
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /safety_border
+ Name: Safety Box
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: jsk_rviz_plugin/BoundingBoxArray
+ Enabled: true
+ Name: Simulated Obstacle
+ Topic: /dp_planner_tracked_boxes
+ Unreliable: false
+ Value: true
+ alpha: 0.800000011920929
+ color: 25; 255; 0
+ coloring: Value
+ line width: 0.009999999776482582
+ only edge: false
+ show coords: false
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /AnimateGlobalPlan
+ Name: GlobalPathAnimation
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /behavior_state
+ Name: Behavior State
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /detected_polygons
+ Name: Tracked Contours
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /local_trajectories
+ Name: Local Rollouts
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /global_waypoints_rviz
+ Name: Global Path
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: OP Planner
+ Enabled: true
+ Name: Planning
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /trajectory_circle_mark
+ Name: Pure Pursuit Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /next_target_mark
+ Name: Pure Pursuit Target
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /mpc_follower/debug/predicted_traj
+ Name: MPC Predicted Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /mpc_follower/debug/filtered_traj
+ Name: MPC Reference Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Control
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Default Light: true
+ Fixed Frame: world
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz/Interact
+ Hide Inactive Objects: true
+ - Class: rviz/MoveCamera
+ - Class: rviz/Select
+ - Class: rviz/FocusCamera
+ - Class: rviz/Measure
+ - Class: rviz/SetInitialPose
+ Theta std deviation: 0.2617993950843811
+ Topic: /initialpose
+ X std deviation: 0.5
+ Y std deviation: 0.5
+ - Class: rviz/SetGoal
+ Topic: /move_base_simple/goal
+ - Class: rviz/PublishPoint
+ Single click: true
+ Topic: /clicked_point
+ Value: true
+ Views:
+ Current:
+ Angle: 0
+ Class: rviz/TopDownOrtho
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Scale: 4.608127117156982
+ Target Frame: map
+ Value: TopDownOrtho (rviz)
+ X: 59.5871696472168
+ Y: 8.258959770202637
+ Saved: ~
+Window Geometry:
+ DecisionMakerPanel:
+ collapsed: false
+ Displays:
+ collapsed: false
+ Height: 1412
+ Hide Left Dock: false
+ Hide Right Dock: false
+ ImageViewerPlugin:
+ collapsed: false
+ QMainWindow State: 000000ff00000000fd00000004000000000000035700000480fc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afc0000006e000004800000018200fffffffa000000020100000003fb0000000a0049006d0061006700650000000000ffffffff0000000000000000fb0000000c00430061006d0065007200610000000000ffffffff0000000000000000fb000000100044006900730070006c006100790073010000000000000136000001f700fffffffb0000000a0049006d006100670065010000028e000000d20000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000120049006d006100670065005f0072006100770000000000ffffffff0000000000000000fb0000000c00430061006d006500720061000000024e000001710000000000000000fb000000120049006d00610067006500200052006100770100000421000000160000000000000000fb0000000a0049006d00610067006501000002f4000000cb0000000000000000fb0000000a0049006d006100670065010000056c0000026c0000000000000000fb00000024004400650063006900730069006f006e004d0061006b0065007200500061006e0065006c00000002110000018f000000d400fffffffb000000220049006d0061006700650056006900650077006500720050006c007500670069006e0000000213000002db000000f400ffffff000000010000015f00000480fc0200000003fb0000000a00560069006500770073010000006e000004800000013200fffffffb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073f000000a8fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000a970000005cfc0100000002fb0000000800540069006d0065010000000000000a970000057100fffffffb0000000800540069006d00650100000000000004500000000000000000000005c90000048000000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 2711
+ X: 249
+ Y: 273
diff --git a/autoware.ai/autoware_files/rviz/cubetown_straight.rviz b/autoware.ai/autoware_files/rviz/cubetown_straight.rviz
new file mode 100644
index 00000000..34e7c4ed
--- /dev/null
+++ b/autoware.ai/autoware_files/rviz/cubetown_straight.rviz
@@ -0,0 +1,637 @@
+Panels:
+ - Class: rviz/Displays
+ Help Height: 0
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Global Options1
+ - /Grid1
+ - /System1/TF1
+ - /System1/TF1/Frames1
+ - /Map1/Vector Map1
+ - /Sensing1
+ - /Perception1
+ - /Perception1/Lidar Objects1
+ - /Planning1
+ - /Planning1/OP Planner1
+ - /Planning1/OP Planner1/GlobalPathAnimation1
+ - /Planning1/Next Traget1
+ - /Planning1/Behavior State1
+ Splitter Ratio: 0.22158685326576233
+ Tree Height: 1730
+ - Class: rviz/Selection
+ Name: Selection
+ - Class: rviz/Tool Properties
+ Expanded:
+ - /2D Pose Estimate1
+ - /2D Nav Goal1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: Points Map
+ - Class: autoware_rviz_debug/DecisionMakerPanel
+ Name: DecisionMakerPanel
+ - Class: integrated_viewer/ImageViewerPlugin
+ Image topic: -----
+ Lane topic: -----
+ Name: ImageViewerPlugin
+ Point size: 3
+ Point topic: -----
+ Rect topic: /detection/image_detector/objects
+Preferences:
+ PromptSaveOnExit: true
+Toolbars:
+ toolButtonStyle: 2
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 10
+ Class: rviz/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 20
+ Reference Frame: map
+ Value: true
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/TF
+ Enabled: true
+ Frame Timeout: 15
+ Frames:
+ All Enabled: false
+ base_link:
+ Value: true
+ camera:
+ Value: false
+ map:
+ Value: true
+ mobility:
+ Value: false
+ velodyne:
+ Value: true
+ world:
+ Value: false
+ Marker Scale: 30
+ Name: TF
+ Show Arrows: true
+ Show Axes: true
+ Show Names: true
+ Tree:
+ world:
+ map:
+ base_link:
+ velodyne:
+ camera:
+ {}
+ mobility:
+ {}
+ Update Interval: 0
+ Value: true
+ - Alpha: 1
+ Class: rviz/RobotModel
+ Collision Enabled: false
+ Enabled: true
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ Name: Vehicle Model
+ Robot Description: robot_description
+ TF Prefix: ""
+ Update Interval: 0
+ Value: true
+ Visual Enabled: true
+ - Class: rviz/Group
+ Displays:
+ - Buffer length: 100
+ Class: jsk_rviz_plugin/Plotter2D
+ Enabled: true
+ Name: Velocity (km/h)
+ Show Value: true
+ Topic: /linear_velocity_viz
+ Value: true
+ auto color change: false
+ auto scale: true
+ background color: 0; 0; 0
+ backround alpha: 0
+ border: true
+ foreground alpha: 1
+ foreground color: 0; 255; 255
+ height: 80
+ left: 40
+ linewidth: 1
+ max color: 255; 0; 0
+ max value: 1
+ min value: -1
+ show caption: true
+ text size: 8
+ top: 30
+ update interval: 0.03999999910593033
+ width: 80
+ - Buffer length: 100
+ Class: jsk_rviz_plugin/Plotter2D
+ Enabled: true
+ Name: NDT Time [ms]
+ Show Value: true
+ Topic: /time_ndt_matching
+ Value: true
+ auto color change: false
+ auto scale: true
+ background color: 0; 0; 0
+ backround alpha: 0
+ border: true
+ foreground alpha: 1
+ foreground color: 0; 255; 255
+ height: 80
+ left: 140
+ linewidth: 1
+ max color: 255; 0; 0
+ max value: 1
+ min value: -1
+ show caption: true
+ text size: 8
+ top: 30
+ update interval: 0.03999999910593033
+ width: 80
+ - Align Bottom: false
+ Background Alpha: 0.8999999761581421
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 0; 255; 255
+ Invert Shadow: false
+ Name: NDT Monitor
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /ndt_monitor/ndt_info_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 50
+ left: 40
+ line width: 2
+ text size: 8
+ top: 150
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.8999999761581421
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 0; 255; 255
+ Invert Shadow: false
+ Name: Decision Maker Panel
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /decision_maker/state_overlay
+ Value: true
+ font: DejaVu Sans Mono
+ height: 200
+ left: 40
+ line width: 2
+ text size: 8
+ top: 220
+ width: 200
+ Enabled: true
+ Name: Monitor
+ - Class: rviz/Group
+ Displays:
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 25; 255; 240
+ Invert Shadow: false
+ Name: OK
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/ok_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 430
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 255; 0
+ Invert Shadow: false
+ Name: WARN
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/warn_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 520
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 85; 0
+ Invert Shadow: false
+ Name: ERROR
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/error_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 620
+ width: 200
+ - Align Bottom: false
+ Background Alpha: 0.800000011920929
+ Background Color: 0; 0; 0
+ Class: jsk_rviz_plugin/OverlayText
+ Enabled: true
+ Foreground Alpha: 0.800000011920929
+ Foreground Color: 255; 0; 0
+ Invert Shadow: false
+ Name: FATAL
+ Overtake BG Color Properties: false
+ Overtake FG Color Properties: false
+ Overtake Position Properties: true
+ Topic: /health_aggregator/fatal_text
+ Value: true
+ font: DejaVu Sans Mono
+ height: 80
+ left: 40
+ line width: 2
+ text size: 6
+ top: 720
+ width: 200
+ Enabled: true
+ Name: Health Checker
+ Enabled: true
+ Name: System
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.05000000074505806
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 10
+ Min Value: -10
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: FlatColor
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points Map
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 2
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_map
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /vector_map_center_lines_rviz
+ Name: Vector Map
+ Namespaces:
+ road_network_vector_map: true
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Map
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 0.30000001192092896
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: Intensity
+ Decay Time: 0
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points Raw
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 5
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /filtered_points
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 10
+ Min Value: -10
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: Intensity
+ Decay Time: 0
+ Enabled: false
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Points No Ground
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 5
+ Size (m): 5
+ Style: Points
+ Topic: /debug_points_no_ground
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: false
+ Enabled: false
+ Name: Sensing
+ - Class: rviz/Group
+ Displays:
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 23.83440399169922
+ Min Value: -22.532455444335938
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: RGB8
+ Decay Time: 0
+ Enabled: false
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: Clustered Points
+ Position Transformer: XYZ
+ Queue Size: 10
+ Selectable: true
+ Size (Pixels): 10
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /points_cluster_center
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: false
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /detection/lidar_detector/objects_markers_center
+ Name: Lidar Objects
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Perception
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /local_trajectories_eval_rviz
+ Name: Local Rollouts
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /safety_border
+ Name: Safety Box
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: jsk_rviz_plugin/BoundingBoxArray
+ Enabled: false
+ Name: Simulated Obstacle
+ Topic: /dp_planner_tracked_boxes
+ Unreliable: false
+ Value: false
+ alpha: 0.800000011920929
+ color: 25; 255; 0
+ coloring: Value
+ line width: 0.009999999776482582
+ only edge: false
+ show coords: false
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /global_waypoints_rviz
+ Name: GlobalPathAnimation
+ Namespaces:
+ global_lane_array_marker: true
+ global_lane_waypoint_orientation_marker: true
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: false
+ Marker Topic: /behavior_state
+ Name: Behavior State
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ - Class: rviz/MarkerArray
+ Enabled: false
+ Marker Topic: /detected_polygons
+ Name: Tracked Contours
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ - Class: rviz/MarkerArray
+ Enabled: false
+ Marker Topic: /global_waypoints_rviz
+ Name: Global Path
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: false
+ Enabled: true
+ Name: OP Planner
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /next_target_mark
+ Name: Next Traget
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/MarkerArray
+ Enabled: true
+ Marker Topic: /behavior_state
+ Name: Behavior State
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: true
+ Name: Planning
+ - Class: rviz/Group
+ Displays:
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /trajectory_circle_mark
+ Name: Pure Pursuit Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /next_target_mark
+ Name: Pure Pursuit Target
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /mpc_follower/debug/predicted_traj
+ Name: MPC Predicted Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ - Class: rviz/Marker
+ Enabled: true
+ Marker Topic: /mpc_follower/debug/filtered_traj
+ Name: MPC Reference Trajectory
+ Namespaces:
+ {}
+ Queue Size: 100
+ Value: true
+ Enabled: false
+ Name: Control
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Default Light: true
+ Fixed Frame: world
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz/Interact
+ Hide Inactive Objects: true
+ - Class: rviz/MoveCamera
+ - Class: rviz/Select
+ - Class: rviz/FocusCamera
+ - Class: rviz/Measure
+ - Class: rviz/SetInitialPose
+ Theta std deviation: 0.2617993950843811
+ Topic: /initialpose
+ X std deviation: 0.5
+ Y std deviation: 0.5
+ - Class: rviz/SetGoal
+ Topic: /move_base_simple/goal
+ - Class: rviz/PublishPoint
+ Single click: true
+ Topic: /clicked_point
+ Value: true
+ Views:
+ Current:
+ Angle: 1.580001711845398
+ Class: rviz/TopDownOrtho
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Scale: 11.122644424438477
+ Target Frame: map
+ Value: TopDownOrtho (rviz)
+ X: -3.7662081718444824
+ Y: 3.050819158554077
+ Saved: ~
+Window Geometry:
+ DecisionMakerPanel:
+ collapsed: false
+ Displays:
+ collapsed: false
+ Height: 2104
+ Hide Left Dock: false
+ Hide Right Dock: false
+ ImageViewerPlugin:
+ collapsed: false
+ QMainWindow State: 000000ff00000000fd00000004000000000000057900000730fc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afc0000006e000007300000018200fffffffa000000020100000003fb0000000a0049006d0061006700650000000000ffffffff0000000000000000fb0000000c00430061006d0065007200610000000000ffffffff0000000000000000fb000000100044006900730070006c006100790073010000000000000136000001f700fffffffb0000000a0049006d006100670065010000028e000000d20000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000120049006d006100670065005f0072006100770000000000ffffffff0000000000000000fb0000000c00430061006d006500720061000000024e000001710000000000000000fb000000120049006d00610067006500200052006100770100000421000000160000000000000000fb0000000a0049006d00610067006501000002f4000000cb0000000000000000fb0000000a0049006d006100670065010000056c0000026c0000000000000000fb00000024004400650063006900730069006f006e004d0061006b0065007200500061006e0065006c00000002110000018f000000d400fffffffb000000220049006d0061006700650056006900650077006500720050006c007500670069006e0000000213000002db000000f400ffffff000000010000015f00000730fc0200000003fb0000000a00560069006500770073010000006e000007300000013200fffffffb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073f000000a8fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000f0000000060fc0100000002fb0000000800540069006d0065010000000000000f000000057100fffffffb0000000800540069006d00650100000000000004500000000000000000000008100000073000000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 3840
+ X: 3840
+ Y: 41
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/dtlane.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/dtlane.csv
new file mode 100644
index 00000000..3570fabd
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/dtlane.csv
@@ -0,0 +1,539 @@
+DID,Dist,PID,Dir,Apara,r,slope,cant,LW,RW
+1001,0,1001,1.5706159461937805,0,90000000000,0,0,2,2
+1002,1,1002,1.5706159461937805,0,90000000000,0,0,2,2
+1003,2,1003,1.5710363578994468,0,2378.6207342040943,0,0,2,2
+1004,3,1004,1.5710077368022535,0,-34939.261525991235,0,0,2,2
+1005,4,1005,1.5711231434926902,0,8665.008902131893,0,0,2,2
+1006,5,1006,1.5690903372401281,0,-491.93079701502967,0,0,2,2
+1007,6,1007,1.5689557145684498,0,-7428.169323438051,0,0,2,2
+1008,7,1008,1.5686363058159303,0,-3130.7845890626863,0,0,2,2
+1009,8,1009,1.5682534958301988,0,-2612.2620549962444,0,0,2,2
+1010,9,1010,1.567912565854563,0,-2933.153642870459,0,0,2,2
+1011,10,1011,1.569028273497871,0,896.2921478559839,0,0,2,2
+1012,11,1012,1.5683676551986594,0,-1513.7334239654833,0,0,2,2
+1013,12,1013,1.5684754110339634,0,9280.239879158233,0,0,2,2
+1014,13,1014,1.5684588800570125,0,-60492.49254730128,0,0,2,2
+1015,14,1015,1.5693912035006823,0,1072.5891393053826,0,0,2,2
+1016,15,1016,1.5515668174636283,0,-56.102914171695225,0,0,2,2
+1017,16,1017,1.5593862076728497,0,127.88721028664114,0,0,2,2
+1018,17,1018,1.559631749229936,0,4072.6303598717514,0,0,2,2
+1019,18,1019,1.5603462402901191,0,1399.5976377140162,0,0,2,2
+1020,19,1020,1.5602731051708514,0,-13673.32151792592,0,0,2,2
+1021,20,1021,1.5605402761532297,0,3742.9214471508494,0,0,2,2
+1022,21,1022,1.5596838425998092,0,-1167.6329074288967,0,0,2,2
+1023,22,1023,1.5604369592339504,0,1327.8155795088473,0,0,2,2
+1024,23,1024,1.560366573502377,0,-14207.424965920718,0,0,2,2
+1025,24,1025,1.56027352852355,0,-10747.490220393849,0,0,2,2
+1026,25,1026,1.5603167873838384,0,23116.65155611479,0,0,2,2
+1027,26,1027,1.5602126432082224,0,-9602.073222867975,0,0,2,2
+1028,27,1028,1.5603395866674272,0,7877.522845713829,0,0,2,2
+1029,28,1029,1.5604457063862052,0,9423.319355873213,0,0,2,2
+1030,29,1030,1.560246370088169,0,-5016.647794967425,0,0,2,2
+1031,30,1031,1.559660768578082,0,-1707.6458697164428,0,0,2,2
+1032,31,1032,1.5592028183805353,0,-2183.6435607133826,0,0,2,2
+1033,32,1033,1.5581253798288566,0,-928.1271757372258,0,0,2,2
+1034,33,1034,1.5566612631984011,0,-683.0056972230019,0,0,2,2
+1035,34,1035,1.5555975918432194,0,-940.1400114128027,0,0,2,2
+1036,35,1036,1.5541259437505452,0,-679.5102748938151,0,0,2,2
+1037,36,1037,1.552885481318075,0,-806.1509754943779,0,0,2,2
+1038,37,1038,1.5531588912852945,0,3657.5111367365535,0,0,2,2
+1039,38,1039,1.5533266894392792,0,5959.541128748756,0,0,2,2
+1040,39,1040,1.5541906323996943,0,1157.4838222184007,0,0,2,2
+1041,40,1041,1.5539019306491981,0,-3463.782253766011,0,0,2,2
+1042,41,1042,1.5537746751005848,0,-7858.203519582626,0,0,2,2
+1043,42,1043,1.553458073462205,0,-3158.543351568176,0,0,2,2
+1044,43,1044,1.5542071389727117,0,1334.996720545278,0,0,2,2
+1045,44,1045,1.5542686707312687,0,16251.770198844073,0,0,2,2
+1046,45,1046,1.5547869612148626,0,1929.4199520429686,0,0,2,2
+1047,46,1047,1.5555746441573521,0,1269.5463441666138,0,0,2,2
+1048,47,1048,1.5564501087977414,0,1142.250587705515,0,0,2,2
+1049,48,1049,1.5576003889319332,0,869.3534472822894,0,0,2,2
+1050,49,1050,1.5580756995278244,0,2103.887455159607,0,0,2,2
+1051,50,1051,1.5585502233487594,0,2107.375764676554,0,0,2,2
+1052,51,1052,1.5584516260756238,0,-10142.26832242346,0,0,2,2
+1053,52,1053,1.5584112331616264,0,-24756.817496873653,0,0,2,2
+1054,53,1054,1.5584451473870529,0,29486.151826450732,0,0,2,2
+1055,54,1055,1.5584130588770102,0,-31163.802827570937,0,0,2,2
+1056,55,1056,1.558453395681946,0,24791.254577367206,0,0,2,2
+1057,56,1057,1.5584612741910804,0,126927.56750530448,0,0,2,2
+1058,57,1058,1.558466983527938,0,175151.69010325428,0,0,2,2
+1059,58,1059,1.5584496873239995,0,-57816.15454740148,0,0,2,2
+1060,59,1060,1.5584670021217941,0,57754.0674664271,0,0,2,2
+1061,60,1061,1.5584616988846198,0,-188564.07268518096,0,0,2,2
+1062,61,1062,1.5583642287230526,0,-10259.550039937772,0,0,2,2
+1063,62,1063,1.5584039512178554,0,25174.652422137453,0,0,2,2
+1064,63,1064,1.5584568342185832,0,18909.668253263793,0,0,2,2
+1065,64,1065,1.5584406089211233,0,-61632.15204384786,0,0,2,2
+1066,65,1066,1.5584747613894863,0,29280.46047429793,0,0,2,2
+1067,66,1067,1.5585924861497782,0,8494.389774251948,0,0,2,2
+1068,67,1068,1.5585615744747112,0,-32350.236531457223,0,0,2,2
+1069,68,1069,1.5584424421160337,0,-8394.025024776187,0,0,2,2
+1070,69,1070,1.5584736998776192,0,31992.054109950375,0,0,2,2
+1071,70,1071,1.5584616247474912,0,-82814.84252327424,0,0,2,2
+1072,71,1072,1.55846993294119,0,120363.10614007954,0,0,2,2
+1073,72,1073,1.558246954101369,0,-4484.730482960295,0,0,2,2
+1074,73,1074,1.558474293779886,0,4398.704205631745,0,0,2,2
+1075,74,1075,1.5589662998091534,0,2032.495417768197,0,0,2,2
+1076,75,1076,1.5592385963707622,0,3672.466497892804,0,0,2,2
+1077,76,1077,1.559661432256271,0,2364.9837543870162,0,0,2,2
+1078,77,1078,1.5592922234671693,0,-2708.4945687052523,0,0,2,2
+1079,78,1079,1.5593257540364545,0,29823.531819475797,0,0,2,2
+1080,79,1080,1.5593587691302953,0,30289.17636346063,0,0,2,2
+1081,80,1081,1.5593124961590616,0,-21610.888026868568,0,0,2,2
+1082,81,1082,1.5594323344706573,0,8344.576844289204,0,0,2,2
+1083,82,1083,1.55933102745173,0,-9870.984366025314,0,0,2,2
+1084,83,1084,1.559328555630133,0,-404559.94123097276,0,0,2,2
+1085,84,1085,1.5592803470653718,0,-20743.202062780034,0,0,2,2
+1086,85,1086,1.5593560395197574,0,13211.356509923131,0,0,2,2
+1087,86,1087,1.559392786498505,0,27213.12157025686,0,0,2,2
+1088,87,1088,1.5594015836176165,0,113673.57737659848,0,0,2,2
+1089,88,1089,1.5593621175983554,0,-25338.253482943648,0,0,2,2
+1090,89,1090,1.5593503574191032,0,-85032.7174913827,0,0,2,2
+1091,90,1091,1.559344540912574,0,-171924.50398892158,0,0,2,2
+1092,91,1092,1.5593063957840103,0,-26215.6673120881,0,0,2,2
+1093,92,1093,1.5593010517229873,0,-187123.61174189628,0,0,2,2
+1094,93,1094,1.5593102443018543,0,108783.40174917986,0,0,2,2
+1095,94,1095,1.5592708891791727,0,-25409.65271764711,0,0,2,2
+1096,95,1096,1.55934742287295,0,13066.140553846302,0,0,2,2
+1097,96,1097,1.5593046241271993,0,-23365.170695042812,0,0,2,2
+1098,97,1098,1.5593959499423824,0,10949.806448427382,0,0,2,2
+1099,98,1099,1.5659936909281864,0,151.56702910157335,0,0,2,2
+1100,99,1100,1.5631484014833397,0,-351.4580921850161,0,0,2,2
+1101,100,1101,1.5628303735240179,0,-3144.3776268368265,0,0,2,2
+1102,101,1102,1.5623443678921973,0,-2057.58932515669,0,0,2,2
+1103,102,1103,1.5621970301683075,0,-6787.128059257383,0,0,2,2
+1104,103,1104,1.561518196533237,0,-1473.1149847873494,0,0,2,2
+1105,104,1105,1.56150959557461,0,-116266.1097887333,0,0,2,2
+1106,105,1106,1.5614280308212418,0,-12260.197679807654,0,0,2,2
+1107,106,1107,1.5615331544577284,0,9512.608519086212,0,0,2,2
+1108,107,1108,1.561521769820582,0,-87837.66993589127,0,0,2,2
+1109,108,1109,1.5615063516353334,0,-64858.476134930985,0,0,2,2
+1110,109,1110,1.5613401362473043,0,-6016.290139304405,0,0,2,2
+1111,110,1111,1.5613462370583207,0,163912.63347054776,0,0,2,2
+1112,111,1112,1.5616346082905865,0,3467.752286323709,0,0,2,2
+1113,112,1113,1.5614798702693682,0,-6462.535788724596,0,0,2,2
+1114,113,1114,1.5611376896383071,0,-2922.4330930103124,0,0,2,2
+1115,114,1115,1.5617762833238056,0,1565.9409460327606,0,0,2,2
+1116,115,1116,1.561901748643473,0,7970.329989601685,0,0,2,2
+1117,116,1117,1.5619377171717277,0,27802.082779656434,0,0,2,2
+1118,117,1118,1.5617090872820676,0,-4373.881304350305,0,0,2,2
+1119,118,1119,1.5617712745468253,0,16080.462839074564,0,0,2,2
+1120,119,1120,1.5620671743245305,0,3379.522647010559,0,0,2,2
+1121,120,1121,1.562234529532306,0,5975.314501965154,0,0,2,2
+1122,121,1122,1.5612933601741283,0,-1062.5080293055378,0,0,2,2
+1123,122,1123,1.561698322658157,0,2469.364544715466,0,0,2,2
+1124,123,1124,1.562024360239134,0,3067.1310865553396,0,0,2,2
+1125,124,1125,1.5617193763911459,0,-3278.8621646585816,0,0,2,2
+1126,125,1126,1.5617870168027121,0,14784.061433753894,0,0,2,2
+1127,126,1127,1.5625182243896565,0,1367.6006894005648,0,0,2,2
+1128,127,1128,1.5622360356231595,0,-3543.727173883281,0,0,2,2
+1129,128,1129,1.5625603701776563,0,3083.2360787200023,0,0,2,2
+1130,129,1130,1.562392918909711,0,-5971.886700355639,0,0,2,2
+1131,130,1131,1.562318653263805,0,-13465.176095886947,0,0,2,2
+1132,131,1132,1.562526849807251,0,4803.153709699076,0,0,2,2
+1133,132,1133,1.576137435117669,0,73.47222600592939,0,0,2,2
+1134,133,1134,1.5918120181402755,0,63.79755037551902,0,0,2,2
+1135,134,1135,1.6220769767862286,0,33.04151218900524,0,0,2,2
+1136,135,1136,1.7186597237164492,0,10.353816098464087,0,0,2,2
+1137,136,1137,1.675493482422447,0,-23.166251450736056,0,0,2,2
+1138,137,1138,1.677164571573219,0,598.4121191487482,0,0,2,2
+1139,138,1139,1.6768159724168918,0,-2868.624269019426,0,0,2,2
+1140,139,1140,1.6768476714325655,0,31546.72089172431,0,0,2,2
+1141,140,1141,1.6905273580959745,0,73.10108956478079,0,0,2,2
+1142,141,1142,1.7442418197685423,0,18.616960290801998,0,0,2,2
+1143,142,1143,1.7225513490834752,0,-46.10319501680768,0,0,2,2
+1144,143,1144,1.7485007254879514,0,38.536571531156355,0,0,2,2
+1145,144,1145,1.8148661989890704,0,15.068076022740032,0,0,2,2
+1146,145,1146,1.8169266574025538,0,485.32889256882964,0,0,2,2
+1147,146,1147,1.8036604558276768,0,-75.37952701500924,0,0,2,2
+1148,147,1148,1.8036313187476025,0,-34320.528942918514,0,0,2,2
+1149,148,1149,1.8030076566400433,0,-1603.4323520368343,0,0,2,2
+1150,149,1150,1.8316436098928863,0,34.921135370295964,0,0,2,2
+1151,150,1151,1.876228798227453,0,22.428973328451868,0,0,2,2
+1152,151,1152,1.9324085263911028,0,17.80001492864172,0,0,2,2
+1153,152,1153,1.9158996090297133,0,-60.57332398663326,0,0,2,2
+1154,153,1154,1.9039984847392084,0,-84.02567485139441,0,0,2,2
+1155,154,1155,1.9849339713438288,0,12.355519710224527,0,0,2,2
+1156,155,1156,1.954096844071843,0,-32.42844222096056,0,0,2,2
+1157,156,1157,1.953953083593038,0,-6956.014673251483,0,0,2,2
+1158,157,1158,2.0180868363442888,0,15.592413621554357,0,0,2,2
+1159,158,1159,2.0020751553324976,0,-62.45440433540919,0,0,2,2
+1160,159,1160,2.019090426427932,0,58.770735675691235,0,0,2,2
+1161,160,1161,2.008152822027425,0,-91.42769873389011,0,0,2,2
+1162,161,1162,2.045952035598901,0,26.455576862970116,0,0,2,2
+1163,162,1163,2.083699401528057,0,26.491914743846912,0,0,2,2
+1164,163,1164,2.120776070766995,0,26.971139008080037,0,0,2,2
+1165,164,1165,2.1655019951470065,0,22.35839759293862,0,0,2,2
+1166,165,1166,2.160816734657125,0,-213.43530464520524,0,0,2,2
+1167,166,1167,2.2342858263354426,0,13.611165963211747,0,0,2,2
+1168,167,1168,2.302663449689519,0,14.624667412345591,0,0,2,2
+1169,168,1169,2.2492885285815243,0,-18.735390689883726,0,0,2,2
+1170,169,1170,2.281647456184398,0,30.903372703587333,0,0,2,2
+1171,170,1171,2.3457521763460143,0,15.599475319116399,0,0,2,2
+1172,171,1172,2.474948546053671,0,7.740155565228202,0,0,2,2
+1173,172,1173,2.5173224404688357,0,23.599435780019412,0,0,2,2
+1174,173,1174,2.5368325471829207,0,51.255485920949084,0,0,2,2
+1175,174,1175,2.5456673035159536,0,113.18931301602866,0,0,2,2
+1176,175,1176,2.5547417551394753,0,110.19949650818774,0,0,2,2
+1177,176,1177,2.603195128490749,0,20.638397924335887,0,0,2,2
+1178,177,1178,2.596074157385382,0,-140.43028474673574,0,0,2,2
+1179,178,1179,2.6531475137908123,0,17.521310520031932,0,0,2,2
+1180,179,1180,2.809796039587864,0,6.383717911878494,0,0,2,2
+1181,180,1181,2.7654462594739497,0,-22.54802611042167,0,0,2,2
+1182,181,1182,2.771217664518214,0,173.26803305788565,0,0,2,2
+1183,182,1183,2.8449752803934008,0,13.557921960116037,0,0,2,2
+1184,183,1184,2.8084961628169074,0,-27.4129438000547,0,0,2,2
+1185,184,1185,2.869009574824431,0,16.52526219932323,0,0,2,2
+1186,185,1186,2.884302571393505,0,65.38940851018249,0,0,2,2
+1187,186,1187,2.9905069048410624,0,9.415811648531163,0,0,2,2
+1188,187,1188,2.969341452422632,0,-47.24680485115514,0,0,2,2
+1189,188,1189,3.0383640323914287,0,14.488012480148827,0,0,2,2
+1190,189,1190,3.055186812134341,0,59.44320827366907,0,0,2,2
+1191,190,1191,3.066040854811578,0,92.13157067248235,0,0,2,2
+1192,191,1192,3.0813008039480883,0,65.53101789883758,0,0,2,2
+1193,192,1193,3.0910158947236637,0,102.9326460349796,0,0,2,2
+1194,193,1194,3.10475182392835,0,72.80177300701585,0,0,2,2
+1195,194,1195,3.0928347571304533,0,-83.91326632292699,0,0,2,2
+1196,195,1196,3.093569046175925,0,1361.8615260122626,0,0,2,2
+1197,196,1197,3.093684135325397,0,8688.916414664875,0,0,2,2
+1198,197,1198,3.1063991293121975,0,78.64730420148996,0,0,2,2
+1199,198,1199,3.1272933523549296,0,47.86011894076368,0,0,2,2
+1200,199,1200,3.142608033171954,0,65.29682282952635,0,0,2,2
+1201,200,1201,3.1296736144563315,0,-77.31309941220373,0,0,2,2
+1202,201,1202,3.1295315835431703,0,-7040.7207680544525,0,0,2,2
+1203,202,1203,3.129958005160909,0,2345.0968675165896,0,0,2,2
+1204,203,1204,3.13035122004071,0,2543.1387553419513,0,0,2,2
+1205,204,1205,3.130323608536339,0,-36216.78799352977,0,0,2,2
+1206,205,1206,3.1305842969634368,0,3835.996906852997,0,0,2,2
+1207,206,1207,3.130267219147295,0,-3153.799947810142,0,0,2,2
+1208,207,1208,3.1302595648893865,0,-130646.23794614259,0,0,2,2
+1209,208,1209,3.1301063347354496,0,-6526.130623167103,0,0,2,2
+1210,209,1210,3.130327684273659,0,4517.741523609919,0,0,2,2
+1211,210,1211,3.1304550560171522,0,7851.034872993834,0,0,2,2
+1212,211,1212,3.130259118536645,0,-5103.668769301195,0,0,2,2
+1213,212,1213,3.130053746211815,0,-4869.205238964958,0,0,2,2
+1214,213,1214,3.1300164498391663,0,-26812.258913566046,0,0,2,2
+1215,214,1215,3.129816693563907,0,-5006.100552799646,0,0,2,2
+1216,215,1216,3.129775533359499,0,-24295.31180383525,0,0,2,2
+1217,216,1217,3.1297243109074175,0,-19522.68896470701,0,0,2,2
+1218,217,1218,3.1297590645461977,0,28773.965406220937,0,0,2,2
+1219,218,1219,3.1296879225255916,0,-14056.390182348943,0,0,2,2
+1220,219,1220,3.1297771537246764,0,11206.842564672676,0,0,2,2
+1221,220,1221,3.1295961985796756,0,-5526.231376267536,0,0,2,2
+1222,221,1222,3.129895503753974,0,3341.0715412600025,0,0,2,2
+1223,222,1223,3.1304526609293504,0,1794.8256689405623,0,0,2,2
+1224,223,1224,3.1308640539574997,0,2430.765549184491,0,0,2,2
+1225,224,1225,3.1314005324764267,0,1864.0075319325813,0,0,2,2
+1226,225,1226,3.131838500950461,0,2283.2693659181946,0,0,2,2
+1227,226,1227,3.132310552198498,0,2118.414058130501,0,0,2,2
+1228,227,1228,3.13283405273258,0,1910.2177264318536,0,0,2,2
+1229,228,1229,3.132860414377954,0,37933.89926183089,0,0,2,2
+1230,229,1230,3.1327026639426103,0,-6339.126721396533,0,0,2,2
+1231,230,1231,3.1322941179223944,0,-2447.7046661023764,0,0,2,2
+1232,231,1232,3.132958998066535,0,1504.0304764890313,0,0,2,2
+1233,232,1233,3.1329847186775854,0,38879.32514679646,0,0,2,2
+1234,233,1234,3.132205186132164,0,-1282.820077074694,0,0,2,2
+1235,234,1235,3.1322812556392696,0,13145.871953777567,0,0,2,2
+1236,235,1236,3.1326404704421495,0,2783.8496408909646,0,0,2,2
+1237,236,1237,3.1324687366627106,0,-5822.966240347186,0,0,2,2
+1238,237,1238,3.1327176882712133,0,4016.844904174198,0,0,2,2
+1239,238,1239,3.1325963662922494,0,-8242.529577406198,0,0,2,2
+1240,239,1240,3.1326772233996776,0,12367.496585104844,0,0,2,2
+1241,240,1241,3.1324966080699,0,-5536.628597534322,0,0,2,2
+1242,241,1242,3.1327668588296307,0,3700.2671185690515,0,0,2,2
+1243,242,1243,3.132810249389559,0,23046.487569068846,0,0,2,2
+1244,243,1244,3.1324986288528094,0,-3209.031119806755,0,0,2,2
+1245,244,1245,3.132822786442226,0,3084.9192881761173,0,0,2,2
+1246,245,1246,3.1325701209629964,0,-3957.8022413229055,0,0,2,2
+1247,246,1247,3.132860171494029,0,3447.6751221216164,0,0,2,2
+1248,247,1248,3.1330470784909092,0,5350.254493905768,0,0,2,2
+1249,248,1249,3.13374161105399,0,1439.8173003782692,0,0,2,2
+1250,249,1250,3.134233784801914,0,2031.8028017911413,0,0,2,2
+1251,250,1251,3.133616456325006,0,-1619.8831536311138,0,0,2,2
+1252,251,1252,3.134066252385871,0,2223.2297856879172,0,0,2,2
+1253,252,1253,3.134784454988094,0,1392.3647685274047,0,0,2,2
+1254,253,1254,3.1345994496722183,0,-5405.250088441288,0,0,2,2
+1255,254,1255,3.1362019499703973,0,624.024844885431,0,0,2,2
+1256,255,1256,3.136262484925358,0,16519.38125086305,0,0,2,2
+1257,256,1257,3.1371188806098034,0,1167.6845390079225,0,0,2,2
+1258,257,1258,3.1369988499566253,0,-8331.205184029783,0,0,2,2
+1259,258,1259,3.137867554501641,0,1151.1393669315573,0,0,2,2
+1260,259,1260,3.1708550527699093,0,30.314514664542813,0,0,2,2
+1261,260,1261,3.2356533213820318,0,15.432511105905075,0,0,2,2
+1262,261,1262,3.2018151731438587,0,-29.55244456527002,0,0,2,2
+1263,262,1263,3.2823370968133814,0,12.418978017765573,0,0,2,2
+1264,263,1264,3.36429786440126,0,12.20095942766515,0,0,2,2
+1265,264,1265,3.4485758303486875,0,11.86549756817575,0,0,2,2
+1266,265,1266,3.4777834180506386,0,34.23767858559573,0,0,2,2
+1267,266,1267,3.5907094795636847,0,8.855351781523634,0,0,2,2
+1268,267,1268,3.7473026705560817,0,6.385973704620098,0,0,2,2
+1269,268,1269,3.757926075093773,0,94.13178199625767,0,0,2,2
+1270,269,1270,3.8646434248411556,0,9.370547547958806,0,0,2,2
+1271,270,1271,4.046477554099296,0,5.499517632250184,0,0,2,2
+1272,271,1272,4.26175711340075,0,4.645122849771844,0,0,2,2
+1273,272,1273,4.378686232163503,0,8.552189656273617,0,0,2,2
+1274,273,1274,4.4388107350157435,0,16.63215415614419,0,0,2,2
+1275,274,1275,4.567287183832628,0,7.783527714291725,0,0,2,2
+1276,275,1276,4.619480219254632,0,19.15964442218305,0,0,2,2
+1277,276,1277,4.709966137584271,0,11.051443345659726,0,0,2,2
+1278,277,1278,4.703095070861943,0,-145.53780954425937,0,0,2,2
+1279,278,1279,4.659772006824833,0,-23.082393229237343,0,0,2,2
+1280,279,1280,4.665973477910038,0,161.25206201247974,0,0,2,2
+1281,280,1281,4.636774477273602,0,-34.247747464074145,0,0,2,2
+1282,281,1282,4.652195224894353,0,64.84769899575784,0,0,2,2
+1283,282,1283,4.651902783891486,0,-3419.4931291989383,0,0,2,2
+1284,283,1284,4.687824121303961,0,27.838607135287646,0,0,2,2
+1285,284,1285,4.6736324526187385,0,-70.46387723533208,0,0,2,2
+1286,285,1286,4.684287629155659,0,93.85109636944345,0,0,2,2
+1287,286,1287,4.678651899887421,0,-177.43932548991228,0,0,2,2
+1288,287,1288,4.679214309388232,0,1778.0638459293787,0,0,2,2
+1289,288,1289,4.680302077949644,0,919.3132027110769,0,0,2,2
+1290,289,1290,4.6973518372767735,0,58.65185430558062,0,0,2,2
+1291,290,1291,4.690461092985631,0,-145.12220418415166,0,0,2,2
+1292,291,1292,4.690476707440746,0,64043.22101537215,0,0,2,2
+1293,292,1293,4.690302884709805,0,-5752.987509656575,0,0,2,2
+1294,293,1294,4.689835859312202,0,-2141.2111742384086,0,0,2,2
+1295,294,1295,4.689787908948702,0,-20854.899254200915,0,0,2,2
+1296,295,1296,4.689607694324616,0,-5548.939244371828,0,0,2,2
+1297,296,1297,4.689493209900328,0,-8734.812671833417,0,0,2,2
+1298,297,1298,4.689519331655459,0,38282.26682969883,0,0,2,2
+1299,298,1299,4.689388854307946,0,-7664.165612349602,0,0,2,2
+1300,299,1300,4.68987371253164,0,2062.4585726961486,0,0,2,2
+1301,300,1301,4.689776043791079,0,-10238.690437254516,0,0,2,2
+1302,301,1302,4.689782693126787,0,150390.96293843692,0,0,2,2
+1303,302,1303,4.689816670283746,0,29431.538406950272,0,0,2,2
+1304,303,1304,4.689796642458525,0,-49930.533592485204,0,0,2,2
+1305,304,1305,4.689747163960407,0,-20210.79939837668,0,0,2,2
+1306,305,1306,4.689876308889746,0,7743.238585658182,0,0,2,2
+1307,306,1307,4.689927338270111,0,19596.55384472955,0,0,2,2
+1308,307,1308,4.689980639334232,0,18761.351513307854,0,0,2,2
+1309,308,1309,4.6900762065868395,0,10463.835390423541,0,0,2,2
+1310,309,1310,4.6899051812441055,0,-5847.086659870083,0,0,2,2
+1311,310,1311,4.689963031378174,0,17286.044640952976,0,0,2,2
+1312,311,1312,4.690015400141843,0,19095.35245718582,0,0,2,2
+1313,312,1313,4.6899442234759725,0,-14049.548230019285,0,0,2,2
+1314,313,1314,4.689947326133968,0,322304.2956969203,0,0,2,2
+1315,314,1315,4.689964483759958,0,58283.12148612662,0,0,2,2
+1316,315,1316,4.689997295188629,0,30477.18555715479,0,0,2,2
+1317,316,1317,4.6899609756369145,0,-27533.379482733104,0,0,2,2
+1318,317,1318,4.6898658552838945,0,-10512.997147837103,0,0,2,2
+1319,318,1319,4.6899787594934255,0,8857.06568563471,0,0,2,2
+1320,319,1320,4.689935576462696,0,-23157.24448047331,0,0,2,2
+1321,320,1321,4.6899566101192764,0,47542.850963445235,0,0,2,2
+1322,321,1322,4.689960611514752,0,249912.81320388868,0,0,2,2
+1323,322,1323,4.690077962834115,0,8521.421023858762,0,0,2,2
+1324,323,1324,4.690117658235953,0,25191.834663670186,0,0,2,2
+1325,324,1325,4.690256418250002,0,7206.687076595954,0,0,2,2
+1326,325,1326,4.690478577472271,0,4501.276110846042,0,0,2,2
+1327,326,1327,4.690415949147022,0,-15967.216048522549,0,0,2,2
+1328,327,1328,4.690444340102213,0,35222.48523389742,0,0,2,2
+1329,328,1329,4.684591006921866,0,-170.84282906660815,0,0,2,2
+1330,329,1330,4.687177878574332,0,386.567303811469,0,0,2,2
+1331,330,1331,4.686995455840435,0,-5481.772905385729,0,0,2,2
+1332,331,1332,4.68699624737735,0,1263364.956066549,0,0,2,2
+1333,332,1333,4.68706285354148,0,15013.625436374265,0,0,2,2
+1334,333,1334,4.686911557450675,0,-6609.556100751335,0,0,2,2
+1335,334,1335,4.686865680707907,0,-21797.53704511855,0,0,2,2
+1336,335,1336,4.686820773354471,0,-22268.067999775332,0,0,2,2
+1337,336,1337,4.686725954049043,0,-10546.37550326547,0,0,2,2
+1338,337,1338,4.68673837550253,0,80505.8764747865,0,0,2,2
+1339,338,1339,4.686702762127034,0,-28079.337779137055,0,0,2,2
+1340,339,1340,4.686710912254904,0,122697.46142708715,0,0,2,2
+1341,340,1341,4.689136663573433,0,412.2434119118499,0,0,2,2
+1342,341,1342,4.714259546731511,0,39.80434863736831,0,0,2,2
+1343,342,1343,4.699984756063116,0,-70.05356668480162,0,0,2,2
+1344,343,1344,4.6832033701032545,0,-59.58983378320814,0,0,2,2
+1345,344,1345,4.68680269049533,0,277.83022656209147,0,0,2,2
+1346,345,1346,4.687649092174702,0,1181.4721359512878,0,0,2,2
+1347,346,1347,4.6876939836328555,0,22275.952734298215,0,0,2,2
+1348,347,1348,4.687761437827265,0,14824.87499482366,0,0,2,2
+1349,348,1349,4.687696404440299,0,-15376.717200942252,0,0,2,2
+1350,349,1350,4.687715356450129,0,52764.85232825735,0,0,2,2
+1351,350,1351,4.687582616571676,0,-7533.531080922668,0,0,2,2
+1352,351,1352,4.687707352096387,0,8016.96230738979,0,0,2,2
+1353,352,1353,4.6876684299335345,0,-25692.30296332078,0,0,2,2
+1354,353,1354,4.687624266364536,0,-22643.09752771501,0,0,2,2
+1355,354,1355,4.687720608966777,0,10379.624140726419,0,0,2,2
+1356,355,1356,4.687689292770485,0,-31932.358281027387,0,0,2,2
+1357,356,1357,4.687689884193492,0,1690837.1628970453,0,0,2,2
+1358,357,1358,4.687685465756854,0,-226324.39519933815,0,0,2,2
+1359,358,1359,4.687704008898185,0,53928.295217550374,0,0,2,2
+1360,359,1360,4.6877304231527805,0,37858.34638632972,0,0,2,2
+1361,360,1361,4.687677524239683,0,-18903.98009027763,0,0,2,2
+1362,361,1362,4.687695679221867,0,55081.298888102705,0,0,2,2
+1363,362,1363,4.687701035673197,0,186690.76563969703,0,0,2,2
+1364,363,1364,4.687689154113219,0,-84164.0324843629,0,0,2,2
+1365,364,1365,4.68770174166216,0,79443.5838693156,0,0,2,2
+1366,365,1366,4.6876837324304255,0,-55527.0771541704,0,0,2,2
+1367,366,1367,4.687671490794284,0,-81688.42697691922,0,0,2,2
+1368,367,1368,4.687716206797148,0,22363.35843882257,0,0,2,2
+1369,368,1369,4.6876577767597425,0,-17114.485021718556,0,0,2,2
+1370,369,1370,4.687655188490774,0,-386358.6095590637,0,0,2,2
+1371,370,1371,4.687665058282576,0,101319.25981922718,0,0,2,2
+1372,371,1372,4.687655931651204,0,-109569.45221008976,0,0,2,2
+1373,372,1373,4.687645642127423,0,-97186.2275966764,0,0,2,2
+1374,373,1374,4.687697758904408,0,19187.679243744642,0,0,2,2
+1375,374,1375,4.687658475344309,0,-25455.94130159902,0,0,2,2
+1376,375,1376,4.687625811077754,0,-30614.494231055636,0,0,2,2
+1377,376,1377,4.687660540456129,0,28794.065623782833,0,0,2,2
+1378,377,1378,4.687679585735443,0,52506.44968163131,0,0,2,2
+1379,378,1379,4.687632079348528,0,-21049.801193884927,0,0,2,2
+1380,379,1380,4.687728014737616,0,10423.682120927764,0,0,2,2
+1381,380,1381,4.687692515367519,0,-28169.513916645406,0,0,2,2
+1382,381,1382,4.687670701408633,0,-45842.20614199843,0,0,2,2
+1383,382,1383,4.6876685132754075,0,-457010.5641853212,0,0,2,2
+1384,383,1384,4.687649360193957,0,-52210.919823960416,0,0,2,2
+1385,384,1385,4.687743133627109,0,10664.001160973716,0,0,2,2
+1386,385,1386,4.6876840688895305,0,-16930.5755176804,0,0,2,2
+1387,386,1387,4.687666218497961,0,-56021.18004620228,0,0,2,2
+1388,387,1388,4.687661596380574,0,-216351.06081571136,0,0,2,2
+1389,388,1389,4.687720567316303,0,16957.506060121174,0,0,2,2
+1390,389,1390,4.687640571279501,0,-12500.61928038758,0,0,2,2
+1391,390,1391,4.687642280815317,0,584954.1089631345,0,0,2,2
+1392,391,1392,4.6876491204650765,0,146206.3168685606,0,0,2,2
+1393,392,1393,4.687699726107593,0,19760.64229743995,0,0,2,2
+1394,393,1394,4.687957029171137,0,3886.467522868451,0,0,2,2
+1395,394,1395,4.688037445066655,0,12435.352408410188,0,0,2,2
+1396,395,1396,4.688290751141772,0,3947.793196581492,0,0,2,2
+1397,396,1397,4.6895811702077905,0,774.9420528058007,0,0,2,2
+1398,397,1398,4.688626779234222,0,-1047.7886188101368,0,0,2,2
+1399,398,1399,4.689114982797937,0,2048.325891745624,0,0,2,2
+1400,399,1400,4.689167404357547,0,19076.120730615625,0,0,2,2
+1401,400,1401,4.68819941339195,0,-1033.067492921702,0,0,2,2
+1402,401,1402,4.68774385311159,0,-2195.0991846980946,0,0,2,2
+1403,402,1403,4.68775815043782,0,69943.1476822489,0,0,2,2
+1404,403,1404,4.687759731188219,0,632610.9426376662,0,0,2,2
+1405,404,1405,4.699177624229751,0,87.58183286203027,0,0,2,2
+1406,405,1406,4.695531633832969,0,-274.2738984947965,0,0,2,2
+1407,406,1407,4.695247715644894,0,-3522.1413843853197,0,0,2,2
+1408,407,1408,4.754735647601379,0,16.810132191710583,0,0,2,2
+1409,408,1409,4.724397302964348,0,-32.961587455216275,0,0,2,2
+1410,409,1410,4.759533786047175,0,28.460446586036806,0,0,2,2
+1411,410,1411,4.743882767713707,0,-63.89360607044966,0,0,2,2
+1412,411,1412,4.744282268105393,0,2503.126456971458,0,0,2,2
+1413,412,1413,4.745442432748384,0,861.9466263181986,0,0,2,2
+1414,413,1414,4.813486442426927,0,14.696370844755526,0,0,2,2
+1415,414,1415,4.776165988226798,0,-26.79495792407948,0,0,2,2
+1416,415,1416,4.819133963999859,0,23.273146616949663,0,0,2,2
+1417,416,1417,4.815819733304253,0,-301.72914677476547,0,0,2,2
+1418,417,1418,4.82338051411354,0,132.26147209183162,0,0,2,2
+1419,418,1419,4.883073471345198,0,16.752395029101688,0,0,2,2
+1420,419,1420,4.884712249460814,0,610.2107359567673,0,0,2,2
+1421,420,1421,4.961541038870127,0,13.015954145423295,0,0,2,2
+1422,421,1422,4.999906861541805,0,26.064865298410677,0,0,2,2
+1423,422,1423,4.993773766242908,0,-163.04980621772725,0,0,2,2
+1424,423,1424,5.027284605822452,0,29.841090600739474,0,0,2,2
+1425,424,1425,5.049561561017202,0,44.8894380429352,0,0,2,2
+1426,425,1426,5.068208436003781,0,53.62828896100618,0,0,2,2
+1427,426,1427,5.050902273466685,0,-57.78288501893302,0,0,2,2
+1428,427,1428,5.071232352781532,0,49.18819963824127,0,0,2,2
+1429,428,1429,5.099616439035059,0,35.23100906148571,0,0,2,2
+1430,429,1430,5.0834811075303215,0,-61.975795149072646,0,0,2,2
+1431,430,1431,5.198289675352311,0,8.710151332525102,0,0,2,2
+1432,431,1432,5.157266264870209,0,-24.37632532859001,0,0,2,2
+1433,432,1433,5.2054644475826946,0,20.747670217469807,0,0,2,2
+1434,433,1434,5.211499235975039,0,165.7058930630452,0,0,2,2
+1435,434,1435,5.201878966277255,0,-103.9471897789248,0,0,2,2
+1436,435,1436,5.278536273467066,0,13.045070804847205,0,0,2,2
+1437,436,1437,5.299850103443958,0,46.91789326855794,0,0,2,2
+1438,437,1438,5.292430313476906,0,-134.7747044647677,0,0,2,2
+1439,438,1439,5.335799600526837,0,23.057792000332128,0,0,2,2
+1440,439,1440,5.38607544957814,0,19.890265781082434,0,0,2,2
+1441,440,1441,5.354411048658623,0,-31.581207000939052,0,0,2,2
+1442,441,1442,5.354553509767046,0,7019.459634075851,0,0,2,2
+1443,442,1443,5.418189239753329,0,15.71444218861867,0,0,2,2
+1444,443,1444,5.478070005053282,0,16.69985336678365,0,0,2,2
+1445,444,1445,5.457578047651754,0,-48.79963296846651,0,0,2,2
+1446,445,1446,5.44743639717364,0,-98.60327982689128,0,0,2,2
+1447,446,1447,5.447582422152287,0,6848.143442770463,0,0,2,2
+1448,447,1448,5.552216302498086,0,9.557133852774605,0,0,2,2
+1449,448,1449,5.502154534883066,0,-19.975323438239375,0,0,2,2
+1450,449,1450,5.594327596757653,0,10.849156789004411,0,0,2,2
+1451,450,1451,5.703767870137007,0,9.13740407549686,0,0,2,2
+1452,451,1452,5.790683385369762,0,11.505425669077031,0,0,2,2
+1453,452,1453,5.851272330781886,0,16.50466092779857,0,0,2,2
+1454,453,1454,5.784744718309785,0,-15.031352589413242,0,0,2,2
+1455,454,1455,5.866744337751296,0,12.195178548520975,0,0,2,2
+1456,455,1456,5.83407175340783,0,-30.606700390995794,0,0,2,2
+1457,456,1457,5.83298837237763,0,-923.0362837492128,0,0,2,2
+1458,457,1458,5.909277584800559,0,13.108013154680902,0,0,2,2
+1459,458,1459,5.885308774937403,0,-41.720886673524866,0,0,2,2
+1460,459,1460,5.919908712922938,0,28.901785905456688,0,0,2,2
+1461,460,1461,5.965351169098282,0,22.00585276775979,0,0,2,2
+1462,461,1462,6.016863401140053,0,19.412864874290744,0,0,2,2
+1463,462,1463,6.060070083297614,0,23.144568156224413,0,0,2,2
+1464,463,1464,6.124157266259176,0,15.603744052843995,0,0,2,2
+1465,464,1465,6.119357144906505,0,-208.3280664235001,0,0,2,2
+1466,465,1466,6.130669368179921,0,88.39995249652004,0,0,2,2
+1467,466,1467,6.180864201080793,0,19.922369339786027,0,0,2,2
+1468,467,1468,6.230570579446633,0,20.11814243717314,0,0,2,2
+1469,468,1469,6.263350807100293,0,30.506194483013054,0,0,2,2
+1470,469,1470,6.193143317898733,0,-14.243494695118356,0,0,2,2
+1471,470,1471,6.195834121923333,0,371.6361321217441,0,0,2,2
+1472,471,1472,6.208803875641413,0,77.1024663796037,0,0,2,2
+1473,472,1473,6.221901699465272,0,76.34856090966778,0,0,2,2
+1474,473,1474,6.256501196726211,0,28.9021540532308,0,0,2,2
+1475,474,1475,6.23629215057456,0,-49.48279065205987,0,0,2,2
+1476,475,1476,6.235907617862001,0,-2600.5589832538453,0,0,2,2
+1477,476,1477,6.237021459432858,0,897.7937492762666,0,0,2,2
+1478,477,1478,6.237655749087532,0,1576.5667824346535,0,0,2,2
+1479,478,1479,6.244179133136743,0,153.29466921710022,0,0,2,2
+1480,479,1480,6.270392764015719,0,38.1480919074826,0,0,2,2
+1481,480,1481,6.256087261027579,0,-69.903169488625,0,0,2,2
+1482,481,1482,6.257661319758907,0,635.3003100185017,0,0,2,2
+1483,482,1483,6.267836945548009,0,98.27405416883752,0,0,2,2
+1484,483,1484,6.269723566488711,0,530.0481821365647,0,0,2,2
+1485,484,1485,6.267054253560375,0,-374.6282383697463,0,0,2,2
+1486,485,1486,0.013744254559647902,0,-0.15991530887798605,0,0,2,2
+1487,486,1487,0.0010119061751368357,0,-78.54010664807936,0,0,2,2
+1488,487,1488,0.0012243999420399345,0,4706.0203909699585,0,0,2,2
+1489,488,1489,0.0018815871511780942,0,1521.6364318949657,0,0,2,2
+1490,489,1490,0.002008029429596202,0,7908.747078198724,0,0,2,2
+1491,490,1491,0.0018352499454211354,0,-5787.724189445794,0,0,2,2
+1492,491,1492,0.0011422250006752636,0,-1442.9495035949885,0,0,2,2
+1493,492,1493,0.001342209822478479,0,5000.379483719008,0,0,2,2
+1494,493,1494,6.27518733217875,0,0.1593918849600848,0,0,2,2
+1495,494,1495,6.277509724011835,0,430.5905600226852,0,0,2,2
+1496,495,1496,6.278068934614515,0,1788.2350499208055,0,0,2,2
+1497,496,1497,6.27766295708146,0,-2463.1904935097405,0,0,2,2
+1498,497,1498,6.277751071486938,0,11348.882110444736,0,0,2,2
+1499,498,1499,6.277640581367299,0,-9050.58301386519,0,0,2,2
+1500,499,1500,6.2774103081305626,0,-4342.667060107362,0,0,2,2
+1501,500,1501,6.267469573203085,0,-100.59618401410951,0,0,2,2
+1502,501,1502,6.268776934010963,0,764.899784339935,0,0,2,2
+1503,502,1503,6.269099769240327,0,3097.5553751321304,0,0,2,2
+1504,503,1504,6.269088227498937,0,-86642.03833671357,0,0,2,2
+1505,504,1505,6.269037911255563,0,-19874.297700944935,0,0,2,2
+1506,505,1506,6.26957021841891,0,1878.6145835655457,0,0,2,2
+1507,506,1507,6.268937417154099,0,-1580.2749703702154,0,0,2,2
+1508,507,1508,6.25233126629231,0,-60.21865080733453,0,0,2,2
+1509,508,1509,6.258024899264237,0,175.634784491826,0,0,2,2
+1510,509,1510,6.230735642842278,0,-36.644457604030876,0,0,2,2
+1511,510,1511,6.240254079440697,0,105.05926993999557,0,0,2,2
+1512,511,1512,6.239790331359758,0,-2156.343155047787,0,0,2,2
+1513,512,1513,6.239202869296887,0,-1702.2375795858684,0,0,2,2
+1514,513,1514,6.238970234292401,0,-4298.579236645538,0,0,2,2
+1515,514,1515,6.238925065169713,0,-22139.017552296125,0,0,2,2
+1516,515,1516,6.238863666976653,0,-16287.124264657097,0,0,2,2
+1517,516,1517,6.238732914238007,0,-7648.023363449819,0,0,2,2
+1518,517,1518,6.264384233905774,0,38.98434906865983,0,0,2,2
+1519,518,1519,6.254531263325934,0,-101.49223443801617,0,0,2,2
+1520,519,1520,0.010624767483427618,0,-0.1601561459425839,0,0,2,2
+1521,520,1521,6.272689144792406,0,0.1596917469618436,0,0,2,2
+1522,521,1522,6.272761513075674,0,13818.208127091919,0,0,2,2
+1523,522,1523,6.272970784747892,0,4778.477609518447,0,0,2,2
+1524,523,1524,6.27296208880721,0,-114996.18460447,0,0,2,2
+1525,524,1525,6.273040252520847,0,12793.660299308754,0,0,2,2
+1526,525,1526,6.273027181376255,0,-76504.3943162592,0,0,2,2
+1527,526,1527,6.272997881943862,0,-34130.35401441668,0,0,2,2
+1528,527,1528,6.264496571896351,0,-117.62892947220149,0,0,2,2
+1529,528,1529,6.256412251422299,0,-123.69623436004015,0,0,2,2
+1530,529,1530,6.262334255024012,0,168.86176828916354,0,0,2,2
+1531,530,1531,6.262342165248228,0,126418.66686483091,0,0,2,2
+1532,531,1532,6.262333893420006,0,-120892.25902943166,0,0,2,2
+1533,532,1533,6.262315140960322,0,-53326.33781473414,0,0,2,2
+1534,533,1534,6.2621862311902685,0,-7757.363926623419,0,0,2,2
+1535,534,1535,6.262360065436234,0,5752.60642368762,0,0,2,2
+1536,535,1536,6.26219896741017,0,-6207.400701499976,0,0,2,2
+1537,536,1537,6.262701530291994,0,1989.8007516411894,0,0,2,2
+1538,537,1538,6.263282807370463,0,1720.3499622483916,0,0,2,2
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/lane.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/lane.csv
new file mode 100644
index 00000000..045416d0
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/lane.csv
@@ -0,0 +1,538 @@
+LnID,DID,BLID,FLID,BNID,FNID,JCT,BLID2,BLID3,BLID4,FLID2,FLID3,FLID4,CrossID,Span,LCnt,Lno,LaneType,LimitVel,RefVel,RoadSecID,LaneChgFG
+1001,1001,0,1002,1001,1002,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1002,1002,1001,1003,1002,1003,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1003,1003,1002,1004,1003,1004,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1004,1004,1003,1005,1004,1005,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1005,1005,1004,1006,1005,1006,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1006,1006,1005,1007,1006,1007,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1007,1007,1006,1008,1007,1008,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1008,1008,1007,1009,1008,1009,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1009,1009,1008,1010,1009,1010,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1010,1010,1009,1011,1010,1011,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1011,1011,1010,1012,1011,1012,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1012,1012,1011,1013,1012,1013,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1013,1013,1012,1014,1013,1014,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1014,1014,1013,1015,1014,1015,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1015,1015,1014,1016,1015,1016,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1016,1016,1015,1017,1016,1017,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1017,1017,1016,1018,1017,1018,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1018,1018,1017,1019,1018,1019,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1019,1019,1018,1020,1019,1020,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1020,1020,1019,1021,1020,1021,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1021,1021,1020,1022,1021,1022,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1022,1022,1021,1023,1022,1023,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1023,1023,1022,1024,1023,1024,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1024,1024,1023,1025,1024,1025,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1025,1025,1024,1026,1025,1026,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1026,1026,1025,1027,1026,1027,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1027,1027,1026,1028,1027,1028,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1028,1028,1027,1029,1028,1029,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1029,1029,1028,1030,1029,1030,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1030,1030,1029,1031,1030,1031,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1031,1031,1030,1032,1031,1032,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1032,1032,1031,1033,1032,1033,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1033,1033,1032,1034,1033,1034,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1034,1034,1033,1035,1034,1035,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1035,1035,1034,1036,1035,1036,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1036,1036,1035,1037,1036,1037,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1037,1037,1036,1038,1037,1038,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1038,1038,1037,1039,1038,1039,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1039,1039,1038,1040,1039,1040,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1040,1040,1039,1041,1040,1041,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1041,1041,1040,1042,1041,1042,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1042,1042,1041,1043,1042,1043,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1043,1043,1042,1044,1043,1044,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1044,1044,1043,1045,1044,1045,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1045,1045,1044,1046,1045,1046,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1046,1046,1045,1047,1046,1047,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1047,1047,1046,1048,1047,1048,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1048,1048,1047,1049,1048,1049,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1049,1049,1048,1050,1049,1050,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1050,1050,1049,1051,1050,1051,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1051,1051,1050,1052,1051,1052,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1052,1052,1051,1053,1052,1053,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1053,1053,1052,1054,1053,1054,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1054,1054,1053,1055,1054,1055,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1055,1055,1054,1056,1055,1056,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1056,1056,1055,1057,1056,1057,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1057,1057,1056,1058,1057,1058,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1058,1058,1057,1059,1058,1059,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1059,1059,1058,1060,1059,1060,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1060,1060,1059,1061,1060,1061,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1061,1061,1060,1062,1061,1062,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1062,1062,1061,1063,1062,1063,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1063,1063,1062,1064,1063,1064,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1064,1064,1063,1065,1064,1065,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1065,1065,1064,1066,1065,1066,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1066,1066,1065,1067,1066,1067,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1067,1067,1066,1068,1067,1068,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1068,1068,1067,1069,1068,1069,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1069,1069,1068,1070,1069,1070,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1070,1070,1069,1071,1070,1071,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1071,1071,1070,1072,1071,1072,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1072,1072,1071,1073,1072,1073,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1073,1073,1072,1074,1073,1074,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1074,1074,1073,1075,1074,1075,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1075,1075,1074,1076,1075,1076,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1076,1076,1075,1077,1076,1077,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1077,1077,1076,1078,1077,1078,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1078,1078,1077,1079,1078,1079,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1079,1079,1078,1080,1079,1080,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1080,1080,1079,1081,1080,1081,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1081,1081,1080,1082,1081,1082,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1082,1082,1081,1083,1082,1083,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1083,1083,1082,1084,1083,1084,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1084,1084,1083,1085,1084,1085,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1085,1085,1084,1086,1085,1086,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1086,1086,1085,1087,1086,1087,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1087,1087,1086,1088,1087,1088,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1088,1088,1087,1089,1088,1089,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1089,1089,1088,1090,1089,1090,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1090,1090,1089,1091,1090,1091,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1091,1091,1090,1092,1091,1092,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1092,1092,1091,1093,1092,1093,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1093,1093,1092,1094,1093,1094,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1094,1094,1093,1095,1094,1095,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1095,1095,1094,1096,1095,1096,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1096,1096,1095,1097,1096,1097,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1097,1097,1096,1098,1097,1098,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1098,1098,1097,1099,1098,1099,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1099,1099,1098,1100,1099,1100,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1100,1100,1099,1101,1100,1101,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1101,1101,1100,1102,1101,1102,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1102,1102,1101,1103,1102,1103,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1103,1103,1102,1104,1103,1104,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1104,1104,1103,1105,1104,1105,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1105,1105,1104,1106,1105,1106,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1106,1106,1105,1107,1106,1107,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1107,1107,1106,1108,1107,1108,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1108,1108,1107,1109,1108,1109,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1109,1109,1108,1110,1109,1110,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1110,1110,1109,1111,1110,1111,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1111,1111,1110,1112,1111,1112,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1112,1112,1111,1113,1112,1113,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1113,1113,1112,1114,1113,1114,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1114,1114,1113,1115,1114,1115,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1115,1115,1114,1116,1115,1116,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1116,1116,1115,1117,1116,1117,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1117,1117,1116,1118,1117,1118,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1118,1118,1117,1119,1118,1119,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1119,1119,1118,1120,1119,1120,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1120,1120,1119,1121,1120,1121,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1121,1121,1120,1122,1121,1122,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1122,1122,1121,1123,1122,1123,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1123,1123,1122,1124,1123,1124,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1124,1124,1123,1125,1124,1125,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1125,1125,1124,1126,1125,1126,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1126,1126,1125,1127,1126,1127,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1127,1127,1126,1128,1127,1128,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1128,1128,1127,1129,1128,1129,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1129,1129,1128,1130,1129,1130,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1130,1130,1129,1131,1130,1131,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1131,1131,1130,1132,1131,1132,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1132,1132,1131,1133,1132,1133,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1133,1133,1132,1134,1133,1134,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1134,1134,1133,1135,1134,1135,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1135,1135,1134,1136,1135,1136,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1136,1136,1135,1137,1136,1137,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1137,1137,1136,1138,1137,1138,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1138,1138,1137,1139,1138,1139,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1139,1139,1138,1140,1139,1140,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1140,1140,1139,1141,1140,1141,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1141,1141,1140,1142,1141,1142,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1142,1142,1141,1143,1142,1143,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1143,1143,1142,1144,1143,1144,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1144,1144,1143,1145,1144,1145,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1145,1145,1144,1146,1145,1146,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1146,1146,1145,1147,1146,1147,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1147,1147,1146,1148,1147,1148,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1148,1148,1147,1149,1148,1149,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1149,1149,1148,1150,1149,1150,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1150,1150,1149,1151,1150,1151,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1151,1151,1150,1152,1151,1152,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1152,1152,1151,1153,1152,1153,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1153,1153,1152,1154,1153,1154,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1154,1154,1153,1155,1154,1155,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1155,1155,1154,1156,1155,1156,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1156,1156,1155,1157,1156,1157,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1157,1157,1156,1158,1157,1158,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1158,1158,1157,1159,1158,1159,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1159,1159,1158,1160,1159,1160,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1160,1160,1159,1161,1160,1161,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1161,1161,1160,1162,1161,1162,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1162,1162,1161,1163,1162,1163,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1163,1163,1162,1164,1163,1164,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1164,1164,1163,1165,1164,1165,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1165,1165,1164,1166,1165,1166,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1166,1166,1165,1167,1166,1167,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1167,1167,1166,1168,1167,1168,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1168,1168,1167,1169,1168,1169,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1169,1169,1168,1170,1169,1170,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1170,1170,1169,1171,1170,1171,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1171,1171,1170,1172,1171,1172,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1172,1172,1171,1173,1172,1173,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1173,1173,1172,1174,1173,1174,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1174,1174,1173,1175,1174,1175,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1175,1175,1174,1176,1175,1176,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1176,1176,1175,1177,1176,1177,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1177,1177,1176,1178,1177,1178,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1178,1178,1177,1179,1178,1179,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1179,1179,1178,1180,1179,1180,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1180,1180,1179,1181,1180,1181,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1181,1181,1180,1182,1181,1182,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1182,1182,1181,1183,1182,1183,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1183,1183,1182,1184,1183,1184,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1184,1184,1183,1185,1184,1185,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1185,1185,1184,1186,1185,1186,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1186,1186,1185,1187,1186,1187,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1187,1187,1186,1188,1187,1188,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1188,1188,1187,1189,1188,1189,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1189,1189,1188,1190,1189,1190,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1190,1190,1189,1191,1190,1191,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1191,1191,1190,1192,1191,1192,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1192,1192,1191,1193,1192,1193,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1193,1193,1192,1194,1193,1194,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1194,1194,1193,1195,1194,1195,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1195,1195,1194,1196,1195,1196,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1196,1196,1195,1197,1196,1197,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1197,1197,1196,1198,1197,1198,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1198,1198,1197,1199,1198,1199,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1199,1199,1198,1200,1199,1200,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1200,1200,1199,1201,1200,1201,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1201,1201,1200,1202,1201,1202,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1202,1202,1201,1203,1202,1203,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1203,1203,1202,1204,1203,1204,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1204,1204,1203,1205,1204,1205,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1205,1205,1204,1206,1205,1206,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1206,1206,1205,1207,1206,1207,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1207,1207,1206,1208,1207,1208,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1208,1208,1207,1209,1208,1209,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1209,1209,1208,1210,1209,1210,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1210,1210,1209,1211,1210,1211,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1211,1211,1210,1212,1211,1212,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1212,1212,1211,1213,1212,1213,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1213,1213,1212,1214,1213,1214,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1214,1214,1213,1215,1214,1215,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1215,1215,1214,1216,1215,1216,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1216,1216,1215,1217,1216,1217,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1217,1217,1216,1218,1217,1218,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1218,1218,1217,1219,1218,1219,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1219,1219,1218,1220,1219,1220,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1220,1220,1219,1221,1220,1221,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1221,1221,1220,1222,1221,1222,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1222,1222,1221,1223,1222,1223,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1223,1223,1222,1224,1223,1224,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1224,1224,1223,1225,1224,1225,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1225,1225,1224,1226,1225,1226,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1226,1226,1225,1227,1226,1227,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1227,1227,1226,1228,1227,1228,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1228,1228,1227,1229,1228,1229,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1229,1229,1228,1230,1229,1230,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1230,1230,1229,1231,1230,1231,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1231,1231,1230,1232,1231,1232,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1232,1232,1231,1233,1232,1233,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1233,1233,1232,1234,1233,1234,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1234,1234,1233,1235,1234,1235,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1235,1235,1234,1236,1235,1236,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1236,1236,1235,1237,1236,1237,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1237,1237,1236,1238,1237,1238,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1238,1238,1237,1239,1238,1239,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1239,1239,1238,1240,1239,1240,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1240,1240,1239,1241,1240,1241,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1241,1241,1240,1242,1241,1242,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1242,1242,1241,1243,1242,1243,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1243,1243,1242,1244,1243,1244,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1244,1244,1243,1245,1244,1245,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1245,1245,1244,1246,1245,1246,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1246,1246,1245,1247,1246,1247,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1247,1247,1246,1248,1247,1248,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1248,1248,1247,1249,1248,1249,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1249,1249,1248,1250,1249,1250,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1250,1250,1249,1251,1250,1251,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1251,1251,1250,1252,1251,1252,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1252,1252,1251,1253,1252,1253,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1253,1253,1252,1254,1253,1254,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1254,1254,1253,1255,1254,1255,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1255,1255,1254,1256,1255,1256,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1256,1256,1255,1257,1256,1257,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1257,1257,1256,1258,1257,1258,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1258,1258,1257,1259,1258,1259,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1259,1259,1258,1260,1259,1260,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1260,1260,1259,1261,1260,1261,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1261,1261,1260,1262,1261,1262,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1262,1262,1261,1263,1262,1263,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1263,1263,1262,1264,1263,1264,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1264,1264,1263,1265,1264,1265,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1265,1265,1264,1266,1265,1266,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1266,1266,1265,1267,1266,1267,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1267,1267,1266,1268,1267,1268,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1268,1268,1267,1269,1268,1269,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1269,1269,1268,1270,1269,1270,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1270,1270,1269,1271,1270,1271,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1271,1271,1270,1272,1271,1272,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1272,1272,1271,1273,1272,1273,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1273,1273,1272,1274,1273,1274,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1274,1274,1273,1275,1274,1275,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1275,1275,1274,1276,1275,1276,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1276,1276,1275,1277,1276,1277,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1277,1277,1276,1278,1277,1278,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1278,1278,1277,1279,1278,1279,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1279,1279,1278,1280,1279,1280,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1280,1280,1279,1281,1280,1281,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1281,1281,1280,1282,1281,1282,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1282,1282,1281,1283,1282,1283,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1283,1283,1282,1284,1283,1284,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1284,1284,1283,1285,1284,1285,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1285,1285,1284,1286,1285,1286,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1286,1286,1285,1287,1286,1287,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1287,1287,1286,1288,1287,1288,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1288,1288,1287,1289,1288,1289,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1289,1289,1288,1290,1289,1290,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1290,1290,1289,1291,1290,1291,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1291,1291,1290,1292,1291,1292,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1292,1292,1291,1293,1292,1293,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1293,1293,1292,1294,1293,1294,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1294,1294,1293,1295,1294,1295,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1295,1295,1294,1296,1295,1296,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1296,1296,1295,1297,1296,1297,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1297,1297,1296,1298,1297,1298,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1298,1298,1297,1299,1298,1299,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1299,1299,1298,1300,1299,1300,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1300,1300,1299,1301,1300,1301,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1301,1301,1300,1302,1301,1302,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1302,1302,1301,1303,1302,1303,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1303,1303,1302,1304,1303,1304,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1304,1304,1303,1305,1304,1305,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1305,1305,1304,1306,1305,1306,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1306,1306,1305,1307,1306,1307,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1307,1307,1306,1308,1307,1308,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1308,1308,1307,1309,1308,1309,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1309,1309,1308,1310,1309,1310,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1310,1310,1309,1311,1310,1311,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1311,1311,1310,1312,1311,1312,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1312,1312,1311,1313,1312,1313,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1313,1313,1312,1314,1313,1314,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1314,1314,1313,1315,1314,1315,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1315,1315,1314,1316,1315,1316,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1316,1316,1315,1317,1316,1317,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1317,1317,1316,1318,1317,1318,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1318,1318,1317,1319,1318,1319,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1319,1319,1318,1320,1319,1320,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1320,1320,1319,1321,1320,1321,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1321,1321,1320,1322,1321,1322,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1322,1322,1321,1323,1322,1323,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1323,1323,1322,1324,1323,1324,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1324,1324,1323,1325,1324,1325,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1325,1325,1324,1326,1325,1326,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1326,1326,1325,1327,1326,1327,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1327,1327,1326,1328,1327,1328,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1328,1328,1327,1329,1328,1329,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1329,1329,1328,1330,1329,1330,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1330,1330,1329,1331,1330,1331,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1331,1331,1330,1332,1331,1332,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1332,1332,1331,1333,1332,1333,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1333,1333,1332,1334,1333,1334,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1334,1334,1333,1335,1334,1335,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1335,1335,1334,1336,1335,1336,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1336,1336,1335,1337,1336,1337,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1337,1337,1336,1338,1337,1338,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1338,1338,1337,1339,1338,1339,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1339,1339,1338,1340,1339,1340,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1340,1340,1339,1341,1340,1341,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1341,1341,1340,1342,1341,1342,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1342,1342,1341,1343,1342,1343,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1343,1343,1342,1344,1343,1344,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1344,1344,1343,1345,1344,1345,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1345,1345,1344,1346,1345,1346,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1346,1346,1345,1347,1346,1347,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1347,1347,1346,1348,1347,1348,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1348,1348,1347,1349,1348,1349,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1349,1349,1348,1350,1349,1350,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1350,1350,1349,1351,1350,1351,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1351,1351,1350,1352,1351,1352,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1352,1352,1351,1353,1352,1353,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1353,1353,1352,1354,1353,1354,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1354,1354,1353,1355,1354,1355,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1355,1355,1354,1356,1355,1356,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1356,1356,1355,1357,1356,1357,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1357,1357,1356,1358,1357,1358,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1358,1358,1357,1359,1358,1359,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1359,1359,1358,1360,1359,1360,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1360,1360,1359,1361,1360,1361,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1361,1361,1360,1362,1361,1362,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1362,1362,1361,1363,1362,1363,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1363,1363,1362,1364,1363,1364,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1364,1364,1363,1365,1364,1365,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1365,1365,1364,1366,1365,1366,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1366,1366,1365,1367,1366,1367,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1367,1367,1366,1368,1367,1368,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1368,1368,1367,1369,1368,1369,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1369,1369,1368,1370,1369,1370,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1370,1370,1369,1371,1370,1371,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1371,1371,1370,1372,1371,1372,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1372,1372,1371,1373,1372,1373,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1373,1373,1372,1374,1373,1374,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1374,1374,1373,1375,1374,1375,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1375,1375,1374,1376,1375,1376,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1376,1376,1375,1377,1376,1377,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1377,1377,1376,1378,1377,1378,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1378,1378,1377,1379,1378,1379,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1379,1379,1378,1380,1379,1380,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1380,1380,1379,1381,1380,1381,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1381,1381,1380,1382,1381,1382,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1382,1382,1381,1383,1382,1383,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1383,1383,1382,1384,1383,1384,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1384,1384,1383,1385,1384,1385,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1385,1385,1384,1386,1385,1386,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1386,1386,1385,1387,1386,1387,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1387,1387,1386,1388,1387,1388,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1388,1388,1387,1389,1388,1389,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1389,1389,1388,1390,1389,1390,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1390,1390,1389,1391,1390,1391,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1391,1391,1390,1392,1391,1392,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1392,1392,1391,1393,1392,1393,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1393,1393,1392,1394,1393,1394,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1394,1394,1393,1395,1394,1395,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1395,1395,1394,1396,1395,1396,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1396,1396,1395,1397,1396,1397,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1397,1397,1396,1398,1397,1398,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1398,1398,1397,1399,1398,1399,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1399,1399,1398,1400,1399,1400,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1400,1400,1399,1401,1400,1401,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1401,1401,1400,1402,1401,1402,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1402,1402,1401,1403,1402,1403,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1403,1403,1402,1404,1403,1404,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1404,1404,1403,1405,1404,1405,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1405,1405,1404,1406,1405,1406,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1406,1406,1405,1407,1406,1407,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1407,1407,1406,1408,1407,1408,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1408,1408,1407,1409,1408,1409,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1409,1409,1408,1410,1409,1410,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1410,1410,1409,1411,1410,1411,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1411,1411,1410,1412,1411,1412,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1412,1412,1411,1413,1412,1413,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1413,1413,1412,1414,1413,1414,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1414,1414,1413,1415,1414,1415,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1415,1415,1414,1416,1415,1416,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1416,1416,1415,1417,1416,1417,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1417,1417,1416,1418,1417,1418,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1418,1418,1417,1419,1418,1419,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1419,1419,1418,1420,1419,1420,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1420,1420,1419,1421,1420,1421,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1421,1421,1420,1422,1421,1422,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1422,1422,1421,1423,1422,1423,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1423,1423,1422,1424,1423,1424,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1424,1424,1423,1425,1424,1425,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1425,1425,1424,1426,1425,1426,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1426,1426,1425,1427,1426,1427,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1427,1427,1426,1428,1427,1428,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1428,1428,1427,1429,1428,1429,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1429,1429,1428,1430,1429,1430,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1430,1430,1429,1431,1430,1431,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1431,1431,1430,1432,1431,1432,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1432,1432,1431,1433,1432,1433,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1433,1433,1432,1434,1433,1434,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1434,1434,1433,1435,1434,1435,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1435,1435,1434,1436,1435,1436,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1436,1436,1435,1437,1436,1437,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1437,1437,1436,1438,1437,1438,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1438,1438,1437,1439,1438,1439,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1439,1439,1438,1440,1439,1440,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1440,1440,1439,1441,1440,1441,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1441,1441,1440,1442,1441,1442,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1442,1442,1441,1443,1442,1443,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1443,1443,1442,1444,1443,1444,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1444,1444,1443,1445,1444,1445,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1445,1445,1444,1446,1445,1446,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1446,1446,1445,1447,1446,1447,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1447,1447,1446,1448,1447,1448,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1448,1448,1447,1449,1448,1449,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1449,1449,1448,1450,1449,1450,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1450,1450,1449,1451,1450,1451,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1451,1451,1450,1452,1451,1452,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1452,1452,1451,1453,1452,1453,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1453,1453,1452,1454,1453,1454,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1454,1454,1453,1455,1454,1455,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1455,1455,1454,1456,1455,1456,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1456,1456,1455,1457,1456,1457,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1457,1457,1456,1458,1457,1458,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1458,1458,1457,1459,1458,1459,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1459,1459,1458,1460,1459,1460,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1460,1460,1459,1461,1460,1461,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1461,1461,1460,1462,1461,1462,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1462,1462,1461,1463,1462,1463,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1463,1463,1462,1464,1463,1464,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1464,1464,1463,1465,1464,1465,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1465,1465,1464,1466,1465,1466,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1466,1466,1465,1467,1466,1467,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1467,1467,1466,1468,1467,1468,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1468,1468,1467,1469,1468,1469,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1469,1469,1468,1470,1469,1470,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1470,1470,1469,1471,1470,1471,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1471,1471,1470,1472,1471,1472,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1472,1472,1471,1473,1472,1473,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1473,1473,1472,1474,1473,1474,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1474,1474,1473,1475,1474,1475,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1475,1475,1474,1476,1475,1476,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1476,1476,1475,1477,1476,1477,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1477,1477,1476,1478,1477,1478,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1478,1478,1477,1479,1478,1479,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1479,1479,1478,1480,1479,1480,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1480,1480,1479,1481,1480,1481,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1481,1481,1480,1482,1481,1482,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1482,1482,1481,1483,1482,1483,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1483,1483,1482,1484,1483,1484,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1484,1484,1483,1485,1484,1485,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1485,1485,1484,1486,1485,1486,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1486,1486,1485,1487,1486,1487,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1487,1487,1486,1488,1487,1488,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1488,1488,1487,1489,1488,1489,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1489,1489,1488,1490,1489,1490,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1490,1490,1489,1491,1490,1491,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1491,1491,1490,1492,1491,1492,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1492,1492,1491,1493,1492,1493,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1493,1493,1492,1494,1493,1494,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1494,1494,1493,1495,1494,1495,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1495,1495,1494,1496,1495,1496,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1496,1496,1495,1497,1496,1497,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1497,1497,1496,1498,1497,1498,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1498,1498,1497,1499,1498,1499,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1499,1499,1498,1500,1499,1500,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1500,1500,1499,1501,1500,1501,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1501,1501,1500,1502,1501,1502,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1502,1502,1501,1503,1502,1503,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1503,1503,1502,1504,1503,1504,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1504,1504,1503,1505,1504,1505,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1505,1505,1504,1506,1505,1506,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1506,1506,1505,1507,1506,1507,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1507,1507,1506,1508,1507,1508,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1508,1508,1507,1509,1508,1509,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1509,1509,1508,1510,1509,1510,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1510,1510,1509,1511,1510,1511,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1511,1511,1510,1512,1511,1512,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1512,1512,1511,1513,1512,1513,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1513,1513,1512,1514,1513,1514,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1514,1514,1513,1515,1514,1515,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1515,1515,1514,1516,1515,1516,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1516,1516,1515,1517,1516,1517,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1517,1517,1516,1518,1517,1518,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1518,1518,1517,1519,1518,1519,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1519,1519,1518,1520,1519,1520,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1520,1520,1519,1521,1520,1521,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1521,1521,1520,1522,1521,1522,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1522,1522,1521,1523,1522,1523,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1523,1523,1522,1524,1523,1524,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1524,1524,1523,1525,1524,1525,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1525,1525,1524,1526,1525,1526,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1526,1526,1525,1527,1526,1527,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1527,1527,1526,1528,1527,1528,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1528,1528,1527,1529,1528,1529,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1529,1529,1528,1530,1529,1530,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1530,1530,1529,1531,1530,1531,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1531,1531,1530,1532,1531,1532,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1532,1532,1531,1533,1532,1533,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1533,1533,1532,1534,1533,1534,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1534,1534,1533,1535,1534,1535,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1535,1535,1534,1536,1535,1536,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1536,1536,1535,1537,1536,1537,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1537,1537,1536,0,1537,1538,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/node.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/node.csv
new file mode 100644
index 00000000..6aac5521
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/node.csv
@@ -0,0 +1,539 @@
+NID,PID
+1001,1001
+1002,1002
+1003,1003
+1004,1004
+1005,1005
+1006,1006
+1007,1007
+1008,1008
+1009,1009
+1010,1010
+1011,1011
+1012,1012
+1013,1013
+1014,1014
+1015,1015
+1016,1016
+1017,1017
+1018,1018
+1019,1019
+1020,1020
+1021,1021
+1022,1022
+1023,1023
+1024,1024
+1025,1025
+1026,1026
+1027,1027
+1028,1028
+1029,1029
+1030,1030
+1031,1031
+1032,1032
+1033,1033
+1034,1034
+1035,1035
+1036,1036
+1037,1037
+1038,1038
+1039,1039
+1040,1040
+1041,1041
+1042,1042
+1043,1043
+1044,1044
+1045,1045
+1046,1046
+1047,1047
+1048,1048
+1049,1049
+1050,1050
+1051,1051
+1052,1052
+1053,1053
+1054,1054
+1055,1055
+1056,1056
+1057,1057
+1058,1058
+1059,1059
+1060,1060
+1061,1061
+1062,1062
+1063,1063
+1064,1064
+1065,1065
+1066,1066
+1067,1067
+1068,1068
+1069,1069
+1070,1070
+1071,1071
+1072,1072
+1073,1073
+1074,1074
+1075,1075
+1076,1076
+1077,1077
+1078,1078
+1079,1079
+1080,1080
+1081,1081
+1082,1082
+1083,1083
+1084,1084
+1085,1085
+1086,1086
+1087,1087
+1088,1088
+1089,1089
+1090,1090
+1091,1091
+1092,1092
+1093,1093
+1094,1094
+1095,1095
+1096,1096
+1097,1097
+1098,1098
+1099,1099
+1100,1100
+1101,1101
+1102,1102
+1103,1103
+1104,1104
+1105,1105
+1106,1106
+1107,1107
+1108,1108
+1109,1109
+1110,1110
+1111,1111
+1112,1112
+1113,1113
+1114,1114
+1115,1115
+1116,1116
+1117,1117
+1118,1118
+1119,1119
+1120,1120
+1121,1121
+1122,1122
+1123,1123
+1124,1124
+1125,1125
+1126,1126
+1127,1127
+1128,1128
+1129,1129
+1130,1130
+1131,1131
+1132,1132
+1133,1133
+1134,1134
+1135,1135
+1136,1136
+1137,1137
+1138,1138
+1139,1139
+1140,1140
+1141,1141
+1142,1142
+1143,1143
+1144,1144
+1145,1145
+1146,1146
+1147,1147
+1148,1148
+1149,1149
+1150,1150
+1151,1151
+1152,1152
+1153,1153
+1154,1154
+1155,1155
+1156,1156
+1157,1157
+1158,1158
+1159,1159
+1160,1160
+1161,1161
+1162,1162
+1163,1163
+1164,1164
+1165,1165
+1166,1166
+1167,1167
+1168,1168
+1169,1169
+1170,1170
+1171,1171
+1172,1172
+1173,1173
+1174,1174
+1175,1175
+1176,1176
+1177,1177
+1178,1178
+1179,1179
+1180,1180
+1181,1181
+1182,1182
+1183,1183
+1184,1184
+1185,1185
+1186,1186
+1187,1187
+1188,1188
+1189,1189
+1190,1190
+1191,1191
+1192,1192
+1193,1193
+1194,1194
+1195,1195
+1196,1196
+1197,1197
+1198,1198
+1199,1199
+1200,1200
+1201,1201
+1202,1202
+1203,1203
+1204,1204
+1205,1205
+1206,1206
+1207,1207
+1208,1208
+1209,1209
+1210,1210
+1211,1211
+1212,1212
+1213,1213
+1214,1214
+1215,1215
+1216,1216
+1217,1217
+1218,1218
+1219,1219
+1220,1220
+1221,1221
+1222,1222
+1223,1223
+1224,1224
+1225,1225
+1226,1226
+1227,1227
+1228,1228
+1229,1229
+1230,1230
+1231,1231
+1232,1232
+1233,1233
+1234,1234
+1235,1235
+1236,1236
+1237,1237
+1238,1238
+1239,1239
+1240,1240
+1241,1241
+1242,1242
+1243,1243
+1244,1244
+1245,1245
+1246,1246
+1247,1247
+1248,1248
+1249,1249
+1250,1250
+1251,1251
+1252,1252
+1253,1253
+1254,1254
+1255,1255
+1256,1256
+1257,1257
+1258,1258
+1259,1259
+1260,1260
+1261,1261
+1262,1262
+1263,1263
+1264,1264
+1265,1265
+1266,1266
+1267,1267
+1268,1268
+1269,1269
+1270,1270
+1271,1271
+1272,1272
+1273,1273
+1274,1274
+1275,1275
+1276,1276
+1277,1277
+1278,1278
+1279,1279
+1280,1280
+1281,1281
+1282,1282
+1283,1283
+1284,1284
+1285,1285
+1286,1286
+1287,1287
+1288,1288
+1289,1289
+1290,1290
+1291,1291
+1292,1292
+1293,1293
+1294,1294
+1295,1295
+1296,1296
+1297,1297
+1298,1298
+1299,1299
+1300,1300
+1301,1301
+1302,1302
+1303,1303
+1304,1304
+1305,1305
+1306,1306
+1307,1307
+1308,1308
+1309,1309
+1310,1310
+1311,1311
+1312,1312
+1313,1313
+1314,1314
+1315,1315
+1316,1316
+1317,1317
+1318,1318
+1319,1319
+1320,1320
+1321,1321
+1322,1322
+1323,1323
+1324,1324
+1325,1325
+1326,1326
+1327,1327
+1328,1328
+1329,1329
+1330,1330
+1331,1331
+1332,1332
+1333,1333
+1334,1334
+1335,1335
+1336,1336
+1337,1337
+1338,1338
+1339,1339
+1340,1340
+1341,1341
+1342,1342
+1343,1343
+1344,1344
+1345,1345
+1346,1346
+1347,1347
+1348,1348
+1349,1349
+1350,1350
+1351,1351
+1352,1352
+1353,1353
+1354,1354
+1355,1355
+1356,1356
+1357,1357
+1358,1358
+1359,1359
+1360,1360
+1361,1361
+1362,1362
+1363,1363
+1364,1364
+1365,1365
+1366,1366
+1367,1367
+1368,1368
+1369,1369
+1370,1370
+1371,1371
+1372,1372
+1373,1373
+1374,1374
+1375,1375
+1376,1376
+1377,1377
+1378,1378
+1379,1379
+1380,1380
+1381,1381
+1382,1382
+1383,1383
+1384,1384
+1385,1385
+1386,1386
+1387,1387
+1388,1388
+1389,1389
+1390,1390
+1391,1391
+1392,1392
+1393,1393
+1394,1394
+1395,1395
+1396,1396
+1397,1397
+1398,1398
+1399,1399
+1400,1400
+1401,1401
+1402,1402
+1403,1403
+1404,1404
+1405,1405
+1406,1406
+1407,1407
+1408,1408
+1409,1409
+1410,1410
+1411,1411
+1412,1412
+1413,1413
+1414,1414
+1415,1415
+1416,1416
+1417,1417
+1418,1418
+1419,1419
+1420,1420
+1421,1421
+1422,1422
+1423,1423
+1424,1424
+1425,1425
+1426,1426
+1427,1427
+1428,1428
+1429,1429
+1430,1430
+1431,1431
+1432,1432
+1433,1433
+1434,1434
+1435,1435
+1436,1436
+1437,1437
+1438,1438
+1439,1439
+1440,1440
+1441,1441
+1442,1442
+1443,1443
+1444,1444
+1445,1445
+1446,1446
+1447,1447
+1448,1448
+1449,1449
+1450,1450
+1451,1451
+1452,1452
+1453,1453
+1454,1454
+1455,1455
+1456,1456
+1457,1457
+1458,1458
+1459,1459
+1460,1460
+1461,1461
+1462,1462
+1463,1463
+1464,1464
+1465,1465
+1466,1466
+1467,1467
+1468,1468
+1469,1469
+1470,1470
+1471,1471
+1472,1472
+1473,1473
+1474,1474
+1475,1475
+1476,1476
+1477,1477
+1478,1478
+1479,1479
+1480,1480
+1481,1481
+1482,1482
+1483,1483
+1484,1484
+1485,1485
+1486,1486
+1487,1487
+1488,1488
+1489,1489
+1490,1490
+1491,1491
+1492,1492
+1493,1493
+1494,1494
+1495,1495
+1496,1496
+1497,1497
+1498,1498
+1499,1499
+1500,1500
+1501,1501
+1502,1502
+1503,1503
+1504,1504
+1505,1505
+1506,1506
+1507,1507
+1508,1508
+1509,1509
+1510,1510
+1511,1511
+1512,1512
+1513,1513
+1514,1514
+1515,1515
+1516,1516
+1517,1517
+1518,1518
+1519,1519
+1520,1520
+1521,1521
+1522,1522
+1523,1523
+1524,1524
+1525,1525
+1526,1526
+1527,1527
+1528,1528
+1529,1529
+1530,1530
+1531,1531
+1532,1532
+1533,1533
+1534,1534
+1535,1535
+1536,1536
+1537,1537
+1538,1538
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/point.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/point.csv
new file mode 100644
index 00000000..49c7cdc7
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_circle_not_connected/point.csv
@@ -0,0 +1,539 @@
+PID,B(Lat),L(Long),H,Bx,Ly,ReF,MCODE1,MCODE2,MCODE3
+1001,0,0,0.041,129.675,314.065,0,0,0,0
+1002,0,0,0.04,130.691,314.065,0,0,0,0
+1003,0,0,0.04,131.708,314.064,0,0,0,0
+1004,0,0,0.04,132.718,314.064,0,0,0,0
+1005,0,0,0.04,133.745,314.064,0,0,0,0
+1006,0,0,0.04,134.801,314.066,0,0,0,0
+1007,0,0,0.04,135.862,314.068,0,0,0,0
+1008,0,0,0.04,136.865,314.07,0,0,0,0
+1009,0,0,0.04,137.897,314.072,0,0,0,0
+1010,0,0,0.04,138.902,314.075,0,0,0,0
+1011,0,0,0.04,139.921,314.077,0,0,0,0
+1012,0,0,0.04,140.939,314.08,0,0,0,0
+1013,0,0,0.04,141.951,314.082,0,0,0,0
+1014,0,0,0.04,142.983,314.084,0,0,0,0
+1015,0,0,0.04,144.003,314.086,0,0,0,0
+1016,0,0,0.04,145.06,314.106,0,0,0,0
+1017,0,0,0.04,146.06,314.118,0,0,0,0
+1018,0,0,0.04,147.107,314.129,0,0,0,0
+1019,0,0,0.04,148.109,314.14,0,0,0,0
+1020,0,0,0.04,149.118,314.15,0,0,0,0
+1021,0,0,0.04,150.136,314.161,0,0,0,0
+1022,0,0,0.04,151.154,314.172,0,0,0,0
+1023,0,0,0.04,152.171,314.183,0,0,0,0
+1024,0,0,0.04,153.198,314.193,0,0,0,0
+1025,0,0,0.04,154.224,314.204,0,0,0,0
+1026,0,0,0.04,155.287,314.215,0,0,0,0
+1027,0,0,0.04,156.302,314.226,0,0,0,0
+1028,0,0,0.04,157.312,314.237,0,0,0,0
+1029,0,0,0.04,158.379,314.248,0,0,0,0
+1030,0,0,0.04,159.455,314.259,0,0,0,0
+1031,0,0,0.04,160.51,314.271,0,0,0,0
+1032,0,0,0.044,161.521,314.282,0,0,0,0
+1033,0,0,0.057,162.574,314.296,0,0,0,0
+1034,0,0,0.073,163.634,314.311,0,0,0,0
+1035,0,0,0.081,164.666,314.326,0,0,0,0
+1036,0,0,0.097,165.729,314.344,0,0,0,0
+1037,0,0,0.107,166.753,314.363,0,0,0,0
+1038,0,0,0.106,167.858,314.382,0,0,0,0
+1039,0,0,0.106,168.978,314.402,0,0,0,0
+1040,0,0,0.106,170.06,314.42,0,0,0,0
+1041,0,0,0.106,171.126,314.438,0,0,0,0
+1042,0,0,0.105,172.155,314.455,0,0,0,0
+1043,0,0,0.105,173.164,314.473,0,0,0,0
+1044,0,0,0.105,174.225,314.49,0,0,0,0
+1045,0,0,0.099,175.296,314.508,0,0,0,0
+1046,0,0,0.083,176.319,314.524,0,0,0,0
+1047,0,0,0.076,177.46,314.542,0,0,0,0
+1048,0,0,0.059,178.598,314.558,0,0,0,0
+1049,0,0,0.047,179.602,314.571,0,0,0,0
+1050,0,0,0.043,180.621,314.584,0,0,0,0
+1051,0,0,0.04,181.718,314.598,0,0,0,0
+1052,0,0,0.04,182.79,314.611,0,0,0,0
+1053,0,0,0.04,183.825,314.624,0,0,0,0
+1054,0,0,0.04,184.87,314.637,0,0,0,0
+1055,0,0,0.04,185.896,314.649,0,0,0,0
+1056,0,0,0.04,187.05,314.664,0,0,0,0
+1057,0,0,0.04,188.124,314.677,0,0,0,0
+1058,0,0,0.04,189.203,314.69,0,0,0,0
+1059,0,0,0.04,190.271,314.703,0,0,0,0
+1060,0,0,0.04,191.384,314.717,0,0,0,0
+1061,0,0,0.04,192.396,314.729,0,0,0,0
+1062,0,0,0.04,193.474,314.743,0,0,0,0
+1063,0,0,0.04,194.501,314.756,0,0,0,0
+1064,0,0,0.04,195.517,314.768,0,0,0,0
+1065,0,0,0.04,196.577,314.781,0,0,0,0
+1066,0,0,0.04,197.587,314.794,0,0,0,0
+1067,0,0,0.04,198.625,314.806,0,0,0,0
+1068,0,0,0.04,199.67,314.819,0,0,0,0
+1069,0,0,0.04,200.715,314.832,0,0,0,0
+1070,0,0,0.04,201.723,314.844,0,0,0,0
+1071,0,0,0.04,202.797,314.858,0,0,0,0
+1072,0,0,0.04,203.836,314.871,0,0,0,0
+1073,0,0,0.04,204.877,314.884,0,0,0,0
+1074,0,0,0.04,205.9,314.896,0,0,0,0
+1075,0,0,0.04,206.914,314.908,0,0,0,0
+1076,0,0,0.04,207.922,314.92,0,0,0,0
+1077,0,0,0.04,208.936,314.931,0,0,0,0
+1078,0,0,0.04,209.952,314.943,0,0,0,0
+1079,0,0,0.04,210.974,314.955,0,0,0,0
+1080,0,0,0.04,211.985,314.966,0,0,0,0
+1081,0,0,0.04,213.011,314.978,0,0,0,0
+1082,0,0,0.04,214.037,314.99,0,0,0,0
+1083,0,0,0.04,215.109,315.002,0,0,0,0
+1084,0,0,0.04,216.203,315.014,0,0,0,0
+1085,0,0,0.04,217.212,315.026,0,0,0,0
+1086,0,0,0.04,218.226,315.038,0,0,0,0
+1087,0,0,0.04,219.321,315.05,0,0,0,0
+1088,0,0,0.04,220.33,315.062,0,0,0,0
+1089,0,0,0.04,221.382,315.074,0,0,0,0
+1090,0,0,0.04,222.454,315.086,0,0,0,0
+1091,0,0,0.04,223.615,315.099,0,0,0,0
+1092,0,0,0.04,224.672,315.111,0,0,0,0
+1093,0,0,0.04,225.705,315.123,0,0,0,0
+1094,0,0,0.04,226.826,315.136,0,0,0,0
+1095,0,0,0.04,227.872,315.148,0,0,0,0
+1096,0,0,0.04,228.885,315.16,0,0,0,0
+1097,0,0,0.04,230.0,315.173,0,0,0,0
+1098,0,0,0.04,231.02,315.184,0,0,0,0
+1099,0,0,0.04,232.043,315.189,0,0,0,0
+1100,0,0,0.04,233.113,315.197,0,0,0,0
+1101,0,0,0.04,234.143,315.205,0,0,0,0
+1102,0,0,0.04,235.147,315.214,0,0,0,0
+1103,0,0,0.04,236.19,315.223,0,0,0,0
+1104,0,0,0.04,237.216,315.232,0,0,0,0
+1105,0,0,0.04,238.337,315.243,0,0,0,0
+1106,0,0,0.04,239.383,315.253,0,0,0,0
+1107,0,0,0.04,240.532,315.263,0,0,0,0
+1108,0,0,0.04,241.549,315.273,0,0,0,0
+1109,0,0,0.04,242.63,315.283,0,0,0,0
+1110,0,0,0.04,243.672,315.293,0,0,0,0
+1111,0,0,0.04,244.725,315.303,0,0,0,0
+1112,0,0,0.04,245.757,315.312,0,0,0,0
+1113,0,0,0.04,246.832,315.322,0,0,0,0
+1114,0,0,0.04,247.849,315.332,0,0,0,0
+1115,0,0,0.04,248.861,315.341,0,0,0,0
+1116,0,0,0.04,249.983,315.351,0,0,0,0
+1117,0,0,0.04,251.03,315.36,0,0,0,0
+1118,0,0,0.04,252.044,315.369,0,0,0,0
+1119,0,0,0.04,253.082,315.379,0,0,0,0
+1120,0,0,0.04,254.086,315.388,0,0,0,0
+1121,0,0,0.04,255.094,315.396,0,0,0,0
+1122,0,0,0.04,256.112,315.406,0,0,0,0
+1123,0,0,0.04,257.132,315.415,0,0,0,0
+1124,0,0,0.04,258.155,315.424,0,0,0,0
+1125,0,0,0.04,259.207,315.434,0,0,0,0
+1126,0,0,0.04,260.216,315.443,0,0,0,0
+1127,0,0,0.04,261.256,315.451,0,0,0,0
+1128,0,0,0.04,262.261,315.46,0,0,0,0
+1129,0,0,0.04,263.277,315.468,0,0,0,0
+1130,0,0,0.04,264.326,315.477,0,0,0,0
+1131,0,0,0.04,265.345,315.486,0,0,0,0
+1132,0,0,0.04,266.411,315.495,0,0,0,0
+1133,0,0,0.04,267.451,315.489,0,0,0,0
+1134,0,0,0.04,268.476,315.468,0,0,0,0
+1135,0,0,0.04,269.535,315.413,0,0,0,0
+1136,0,0,0.04,270.531,315.265,0,0,0,0
+1137,0,0,0.04,271.547,315.158,0,0,0,0
+1138,0,0,0.04,272.559,315.05,0,0,0,0
+1139,0,0,0.04,273.578,314.942,0,0,0,0
+1140,0,0,0.04,274.575,314.835,0,0,0,0
+1141,0,0,0.04,275.579,314.715,0,0,0,0
+1142,0,0,0.04,276.575,314.54,0,0,0,0
+1143,0,0,0.04,277.614,314.381,0,0,0,0
+1144,0,0,0.04,278.601,314.204,0,0,0,0
+1145,0,0,0.04,279.581,313.96,0,0,0,0
+1146,0,0,0.04,280.56,313.714,0,0,0,0
+1147,0,0,0.04,281.543,313.481,0,0,0,0
+1148,0,0,0.04,282.527,313.248,0,0,0,0
+1149,0,0,0.04,283.519,313.013,0,0,0,0
+1150,0,0,0.04,284.52,312.746,0,0,0,0
+1151,0,0,0.04,285.475,312.445,0,0,0,0
+1152,0,0,0.04,286.412,312.09,0,0,0,0
+1153,0,0,0.04,287.373,311.745,0,0,0,0
+1154,0,0,0.04,288.343,311.409,0,0,0,0
+1155,0,0,0.04,289.274,311.0,0,0,0,0
+1156,0,0,0.04,290.205,310.624,0,0,0,0
+1157,0,0,0.04,291.159,310.24,0,0,0,0
+1158,0,0,0.04,292.084,309.796,0,0,0,0
+1159,0,0,0.04,293.016,309.367,0,0,0,0
+1160,0,0,0.04,293.971,308.908,0,0,0,0
+1161,0,0,0.04,294.88,308.483,0,0,0,0
+1162,0,0,0.04,295.784,308.018,0,0,0,0
+1163,0,0,0.04,296.743,307.478,0,0,0,0
+1164,0,0,0.04,297.636,306.93,0,0,0,0
+1165,0,0,0.04,298.498,306.347,0,0,0,0
+1166,0,0,0.04,299.335,305.787,0,0,0,0
+1167,0,0,0.04,300.13,305.165,0,0,0,0
+1168,0,0,0.04,300.874,304.497,0,0,0,0
+1169,0,0,0.04,301.67,303.856,0,0,0,0
+1170,0,0,0.04,302.439,303.194,0,0,0,0
+1171,0,0,0.04,303.161,302.486,0,0,0,0
+1172,0,0,0.04,303.779,301.7,0,0,0,0
+1173,0,0,0.04,304.384,300.861,0,0,0,0
+1174,0,0,0.04,304.956,300.033,0,0,0,0
+1175,0,0,0.04,305.533,299.183,0,0,0,0
+1176,0,0,0.04,306.09,298.344,0,0,0,0
+1177,0,0,0.04,306.609,297.475,0,0,0,0
+1178,0,0,0.04,307.14,296.601,0,0,0,0
+1179,0,0,0.04,307.616,295.704,0,0,0,0
+1180,0,0,0.04,307.944,294.752,0,0,0,0
+1181,0,0,0.04,308.317,293.808,0,0,0,0
+1182,0,0,0.04,308.686,292.858,0,0,0,0
+1183,0,0,0.04,308.984,291.883,0,0,0,0
+1184,0,0,0.04,309.315,290.926,0,0,0,0
+1185,0,0,0.04,309.589,289.947,0,0,0,0
+1186,0,0,0.04,309.848,288.964,0,0,0,0
+1187,0,0,0.04,309.999,287.97,0,0,0,0
+1188,0,0,0.04,310.177,286.946,0,0,0,0
+1189,0,0,0.04,310.283,285.926,0,0,0,0
+1190,0,0,0.04,310.371,284.912,0,0,0,0
+1191,0,0,0.04,310.447,283.908,0,0,0,0
+1192,0,0,0.04,310.508,282.891,0,0,0,0
+1193,0,0,0.04,310.559,281.88,0,0,0,0
+1194,0,0,0.04,310.597,280.847,0,0,0,0
+1195,0,0,0.04,310.647,279.829,0,0,0,0
+1196,0,0,0.04,310.697,278.789,0,0,0,0
+1197,0,0,0.04,310.745,277.778,0,0,0,0
+1198,0,0,0.04,310.781,276.772,0,0,0,0
+1199,0,0,0.04,310.795,275.754,0,0,0,0
+1200,0,0,0.04,310.794,274.732,0,0,0,0
+1201,0,0,0.04,310.806,273.729,0,0,0,0
+1202,0,0,0.04,310.819,272.663,0,0,0,0
+1203,0,0,0.04,310.831,271.638,0,0,0,0
+1204,0,0,0.04,310.843,270.601,0,0,0,0
+1205,0,0,0.04,310.854,269.569,0,0,0,0
+1206,0,0,0.04,310.866,268.519,0,0,0,0
+1207,0,0,0.04,310.878,267.47,0,0,0,0
+1208,0,0,0.04,310.889,266.455,0,0,0,0
+1209,0,0,0.04,310.901,265.416,0,0,0,0
+1210,0,0,0.04,310.913,264.382,0,0,0,0
+1211,0,0,0.04,310.924,263.362,0,0,0,0
+1212,0,0,0.041,310.936,262.355,0,0,0,0
+1213,0,0,0.041,310.948,261.253,0,0,0,0
+1214,0,0,0.041,310.961,260.185,0,0,0,0
+1215,0,0,0.042,310.973,259.12,0,0,0,0
+1216,0,0,0.042,310.985,258.089,0,0,0,0
+1217,0,0,0.042,310.997,257.076,0,0,0,0
+1218,0,0,0.042,311.009,256.063,0,0,0,0
+1219,0,0,0.042,311.022,255.038,0,0,0,0
+1220,0,0,0.042,311.034,254.01,0,0,0,0
+1221,0,0,0.041,311.046,252.982,0,0,0,0
+1222,0,0,0.041,311.058,251.978,0,0,0,0
+1223,0,0,0.04,311.07,250.92,0,0,0,0
+1224,0,0,0.04,311.081,249.888,0,0,0,0
+1225,0,0,0.04,311.091,248.882,0,0,0,0
+1226,0,0,0.04,311.101,247.881,0,0,0,0
+1227,0,0,0.04,311.11,246.835,0,0,0,0
+1228,0,0,0.04,311.12,245.793,0,0,0,0
+1229,0,0,0.04,311.129,244.762,0,0,0,0
+1230,0,0,0.04,311.138,243.746,0,0,0,0
+1231,0,0,0.04,311.147,242.739,0,0,0,0
+1232,0,0,0.04,311.156,241.721,0,0,0,0
+1233,0,0,0.04,311.164,240.714,0,0,0,0
+1234,0,0,0.04,311.174,239.674,0,0,0,0
+1235,0,0,0.04,311.184,238.671,0,0,0,0
+1236,0,0,0.04,311.193,237.614,0,0,0,0
+1237,0,0,0.04,311.202,236.601,0,0,0,0
+1238,0,0,0.04,311.211,235.6,0,0,0,0
+1239,0,0,0.04,311.221,234.531,0,0,0,0
+1240,0,0,0.04,311.23,233.529,0,0,0,0
+1241,0,0,0.04,311.239,232.499,0,0,0,0
+1242,0,0,0.04,311.248,231.437,0,0,0,0
+1243,0,0,0.04,311.257,230.436,0,0,0,0
+1244,0,0,0.04,311.267,229.406,0,0,0,0
+1245,0,0,0.04,311.276,228.387,0,0,0,0
+1246,0,0,0.04,311.285,227.348,0,0,0,0
+1247,0,0,0.04,311.294,226.335,0,0,0,0
+1248,0,0,0.04,311.303,225.271,0,0,0,0
+1249,0,0,0.04,311.311,224.217,0,0,0,0
+1250,0,0,0.04,311.319,223.18,0,0,0,0
+1251,0,0,0.04,311.327,222.147,0,0,0,0
+1252,0,0,0.04,311.335,221.081,0,0,0,0
+1253,0,0,0.04,311.342,220.077,0,0,0,0
+1254,0,0,0.04,311.349,219.047,0,0,0,0
+1255,0,0,0.04,311.355,218.017,0,0,0,0
+1256,0,0,0.04,311.36,216.998,0,0,0,0
+1257,0,0,0.04,311.365,215.981,0,0,0,0
+1258,0,0,0.04,311.369,214.965,0,0,0,0
+1259,0,0,0.04,311.373,213.941,0,0,0,0
+1260,0,0,0.04,311.343,212.913,0,0,0,0
+1261,0,0,0.042,311.248,211.906,0,0,0,0
+1262,0,0,0.043,311.187,210.897,0,0,0,0
+1263,0,0,0.044,311.046,209.899,0,0,0,0
+1264,0,0,0.048,310.824,208.922,0,0,0,0
+1265,0,0,0.05,310.516,207.949,0,0,0,0
+1266,0,0,0.052,310.185,207.001,0,0,0,0
+1267,0,0,0.055,309.748,206.095,0,0,0,0
+1268,0,0,0.057,309.177,205.27,0,0,0,0
+1269,0,0,0.059,308.593,204.446,0,0,0,0
+1270,0,0,0.06,307.926,203.69,0,0,0,0
+1271,0,0,0.06,307.133,203.067,0,0,0,0
+1272,0,0,0.058,306.226,202.628,0,0,0,0
+1273,0,0,0.057,305.273,202.298,0,0,0,0
+1274,0,0,0.056,304.284,202.02,0,0,0,0
+1275,0,0,0.056,303.281,201.874,0,0,0,0
+1276,0,0,0.055,302.284,201.781,0,0,0,0
+1277,0,0,0.055,301.277,201.779,0,0,0,0
+1278,0,0,0.055,300.249,201.769,0,0,0,0
+1279,0,0,0.055,299.234,201.716,0,0,0,0
+1280,0,0,0.055,298.159,201.666,0,0,0,0
+1281,0,0,0.055,297.145,201.589,0,0,0,0
+1282,0,0,0.055,296.147,201.529,0,0,0,0
+1283,0,0,0.055,295.121,201.467,0,0,0,0
+1284,0,0,0.055,294.114,201.442,0,0,0,0
+1285,0,0,0.055,293.11,201.403,0,0,0,0
+1286,0,0,0.055,292.083,201.374,0,0,0,0
+1287,0,0,0.055,291.079,201.34,0,0,0,0
+1288,0,0,0.055,290.072,201.307,0,0,0,0
+1289,0,0,0.055,289.048,201.274,0,0,0,0
+1290,0,0,0.055,288.04,201.259,0,0,0,0
+1291,0,0,0.055,287.022,201.236,0,0,0,0
+1292,0,0,0.055,286.012,201.214,0,0,0,0
+1293,0,0,0.055,285.001,201.192,0,0,0,0
+1294,0,0,0.055,283.967,201.169,0,0,0,0
+1295,0,0,0.055,282.912,201.145,0,0,0,0
+1296,0,0,0.055,281.895,201.122,0,0,0,0
+1297,0,0,0.055,280.838,201.097,0,0,0,0
+1298,0,0,0.055,279.786,201.073,0,0,0,0
+1299,0,0,0.055,278.779,201.05,0,0,0,0
+1300,0,0,0.055,277.703,201.026,0,0,0,0
+1301,0,0,0.055,276.592,201.001,0,0,0,0
+1302,0,0,0.055,275.544,200.977,0,0,0,0
+1303,0,0,0.055,274.516,200.954,0,0,0,0
+1304,0,0,0.055,273.489,200.931,0,0,0,0
+1305,0,0,0.055,272.469,200.908,0,0,0,0
+1306,0,0,0.055,271.469,200.885,0,0,0,0
+1307,0,0,0.055,270.465,200.862,0,0,0,0
+1308,0,0,0.055,269.413,200.839,0,0,0,0
+1309,0,0,0.055,268.395,200.816,0,0,0,0
+1310,0,0,0.055,267.356,200.793,0,0,0,0
+1311,0,0,0.055,266.344,200.77,0,0,0,0
+1312,0,0,0.055,265.306,200.747,0,0,0,0
+1313,0,0,0.055,264.206,200.722,0,0,0,0
+1314,0,0,0.055,263.138,200.698,0,0,0,0
+1315,0,0,0.055,262.101,200.675,0,0,0,0
+1316,0,0,0.055,261.081,200.652,0,0,0,0
+1317,0,0,0.055,259.992,200.628,0,0,0,0
+1318,0,0,0.055,258.808,200.601,0,0,0,0
+1319,0,0,0.055,257.639,200.575,0,0,0,0
+1320,0,0,0.055,256.545,200.55,0,0,0,0
+1321,0,0,0.055,255.51,200.527,0,0,0,0
+1322,0,0,0.057,254.446,200.503,0,0,0,0
+1323,0,0,0.057,253.43,200.48,0,0,0,0
+1324,0,0,0.057,252.377,200.457,0,0,0,0
+1325,0,0,0.058,251.305,200.433,0,0,0,0
+1326,0,0,0.059,250.233,200.41,0,0,0,0
+1327,0,0,0.06,249.195,200.387,0,0,0,0
+1328,0,0,0.06,248.111,200.363,0,0,0,0
+1329,0,0,0.06,247.042,200.333,0,0,0,0
+1330,0,0,0.061,245.893,200.304,0,0,0,0
+1331,0,0,0.06,244.748,200.275,0,0,0,0
+1332,0,0,0.06,243.614,200.247,0,0,0,0
+1333,0,0,0.059,242.603,200.221,0,0,0,0
+1334,0,0,0.058,241.58,200.195,0,0,0,0
+1335,0,0,0.057,240.545,200.168,0,0,0,0
+1336,0,0,0.056,239.492,200.142,0,0,0,0
+1337,0,0,0.055,238.416,200.114,0,0,0,0
+1338,0,0,0.055,237.335,200.086,0,0,0,0
+1339,0,0,0.055,236.265,200.059,0,0,0,0
+1340,0,0,0.055,235.193,200.031,0,0,0,0
+1341,0,0,0.055,234.171,200.007,0,0,0,0
+1342,0,0,0.055,233.159,200.009,0,0,0,0
+1343,0,0,0.055,232.016,199.995,0,0,0,0
+1344,0,0,0.055,231.001,199.965,0,0,0,0
+1345,0,0,0.055,229.934,199.938,0,0,0,0
+1346,0,0,0.055,228.932,199.913,0,0,0,0
+1347,0,0,0.055,227.91,199.888,0,0,0,0
+1348,0,0,0.055,226.885,199.863,0,0,0,0
+1349,0,0,0.055,225.858,199.838,0,0,0,0
+1350,0,0,0.055,224.852,199.813,0,0,0,0
+1351,0,0,0.055,223.798,199.787,0,0,0,0
+1352,0,0,0.055,222.759,199.761,0,0,0,0
+1353,0,0,0.055,221.686,199.734,0,0,0,0
+1354,0,0,0.055,220.682,199.709,0,0,0,0
+1355,0,0,0.055,219.634,199.684,0,0,0,0
+1356,0,0,0.055,218.576,199.658,0,0,0,0
+1357,0,0,0.055,217.558,199.632,0,0,0,0
+1358,0,0,0.055,216.538,199.607,0,0,0,0
+1359,0,0,0.055,215.439,199.58,0,0,0,0
+1360,0,0,0.055,214.308,199.552,0,0,0,0
+1361,0,0,0.055,213.153,199.524,0,0,0,0
+1362,0,0,0.055,212.125,199.498,0,0,0,0
+1363,0,0,0.055,211.068,199.472,0,0,0,0
+1364,0,0,0.055,210.007,199.446,0,0,0,0
+1365,0,0,0.055,208.957,199.42,0,0,0,0
+1366,0,0,0.055,207.931,199.395,0,0,0,0
+1367,0,0,0.055,206.88,199.369,0,0,0,0
+1368,0,0,0.055,205.839,199.343,0,0,0,0
+1369,0,0,0.055,204.773,199.317,0,0,0,0
+1370,0,0,0.055,203.682,199.29,0,0,0,0
+1371,0,0,0.055,202.545,199.261,0,0,0,0
+1372,0,0,0.055,201.505,199.236,0,0,0,0
+1373,0,0,0.055,200.451,199.21,0,0,0,0
+1374,0,0,0.055,199.332,199.182,0,0,0,0
+1375,0,0,0.055,198.283,199.156,0,0,0,0
+1376,0,0,0.055,197.186,199.129,0,0,0,0
+1377,0,0,0.055,196.108,199.102,0,0,0,0
+1378,0,0,0.055,195.103,199.077,0,0,0,0
+1379,0,0,0.055,194.052,199.051,0,0,0,0
+1380,0,0,0.055,193.036,199.026,0,0,0,0
+1381,0,0,0.055,191.994,199.001,0,0,0,0
+1382,0,0,0.055,190.904,198.974,0,0,0,0
+1383,0,0,0.055,189.806,198.946,0,0,0,0
+1384,0,0,0.055,188.77,198.921,0,0,0,0
+1385,0,0,0.055,187.678,198.894,0,0,0,0
+1386,0,0,0.055,186.563,198.866,0,0,0,0
+1387,0,0,0.055,185.384,198.837,0,0,0,0
+1388,0,0,0.055,184.288,198.81,0,0,0,0
+1389,0,0,0.055,183.269,198.785,0,0,0,0
+1390,0,0,0.055,182.198,198.758,0,0,0,0
+1391,0,0,0.055,181.154,198.733,0,0,0,0
+1392,0,0,0.055,180.045,198.705,0,0,0,0
+1393,0,0,0.061,179.011,198.68,0,0,0,0
+1394,0,0,0.084,177.98,198.654,0,0,0,0
+1395,0,0,0.081,176.959,198.63,0,0,0,0
+1396,0,0,0.09,175.942,198.605,0,0,0,0
+1397,0,0,0.11,174.916,198.582,0,0,0,0
+1398,0,0,0.105,173.805,198.555,0,0,0,0
+1399,0,0,0.103,172.759,198.531,0,0,0,0
+1400,0,0,0.1,171.697,198.506,0,0,0,0
+1401,0,0,0.098,170.696,198.482,0,0,0,0
+1402,0,0,0.09,169.636,198.456,0,0,0,0
+1403,0,0,0.082,168.595,198.43,0,0,0,0
+1404,0,0,0.075,167.576,198.405,0,0,0,0
+1405,0,0,0.066,166.532,198.391,0,0,0,0
+1406,0,0,0.063,165.489,198.374,0,0,0,0
+1407,0,0,0.059,164.481,198.356,0,0,0,0
+1408,0,0,0.055,163.456,198.4,0,0,0,0
+1409,0,0,0.055,162.455,198.412,0,0,0,0
+1410,0,0,0.055,161.443,198.46,0,0,0,0
+1411,0,0,0.055,160.439,198.491,0,0,0,0
+1412,0,0,0.055,159.431,198.523,0,0,0,0
+1413,0,0,0.055,158.375,198.558,0,0,0,0
+1414,0,0,0.055,157.338,198.664,0,0,0,0
+1415,0,0,0.055,156.273,198.732,0,0,0,0
+1416,0,0,0.055,155.231,198.843,0,0,0,0
+1417,0,0,0.055,154.229,198.947,0,0,0,0
+1418,0,0,0.055,153.232,199.058,0,0,0,0
+1419,0,0,0.055,152.225,199.232,0,0,0,0
+1420,0,0,0.055,151.238,199.404,0,0,0,0
+1421,0,0,0.055,150.264,199.651,0,0,0,0
+1422,0,0,0.055,149.296,199.938,0,0,0,0
+1423,0,0,0.055,148.332,200.217,0,0,0,0
+1424,0,0,0.055,147.376,200.528,0,0,0,0
+1425,0,0,0.055,146.404,200.869,0,0,0,0
+1426,0,0,0.055,145.442,201.226,0,0,0,0
+1427,0,0,0.055,144.477,201.566,0,0,0,0
+1428,0,0,0.055,143.488,201.937,0,0,0,0
+1429,0,0,0.055,142.551,202.319,0,0,0,0
+1430,0,0,0.055,141.609,202.686,0,0,0,0
+1431,0,0,0.055,140.712,203.159,0,0,0,0
+1432,0,0,0.055,139.799,203.594,0,0,0,0
+1433,0,0,0.055,138.893,204.081,0,0,0,0
+1434,0,0,0.055,137.998,204.569,0,0,0,0
+1435,0,0,0.055,137.096,205.05,0,0,0,0
+1436,0,0,0.055,136.24,205.594,0,0,0,0
+1437,0,0,0.055,135.408,206.148,0,0,0,0
+1438,0,0,0.055,134.558,206.705,0,0,0,0
+1439,0,0,0.055,133.735,207.296,0,0,0,0
+1440,0,0,0.055,132.948,207.925,0,0,0,0
+1441,0,0,0.055,132.133,208.534,0,0,0,0
+1442,0,0,0.055,131.312,209.148,0,0,0,0
+1443,0,0,0.055,130.509,209.833,0,0,0,0
+1444,0,0,0.055,129.781,210.533,0,0,0,0
+1445,0,0,0.055,129.016,211.238,0,0,0,0
+1446,0,0,0.055,128.248,211.933,0,0,0,0
+1447,0,0,0.055,127.482,212.625,0,0,0,0
+1448,0,0,0.055,126.806,213.379,0,0,0,0
+1449,0,0,0.055,126.041,214.151,0,0,0,0
+1450,0,0,0.055,125.374,214.961,0,0,0,0
+1451,0,0,0.055,124.817,215.813,0,0,0,0
+1452,0,0,0.055,124.342,216.698,0,0,0,0
+1453,0,0,0.055,123.913,217.627,0,0,0,0
+1454,0,0,0.055,123.429,218.518,0,0,0,0
+1455,0,0,0.055,123.013,219.457,0,0,0,0
+1456,0,0,0.055,122.572,220.373,0,0,0,0
+1457,0,0,0.055,122.12,221.308,0,0,0,0
+1458,0,0,0.055,121.754,222.24,0,0,0,0
+1459,0,0,0.055,121.354,223.191,0,0,0,0
+1460,0,0,0.055,120.995,224.137,0,0,0,0
+1461,0,0,0.055,120.681,225.09,0,0,0,0
+1462,0,0,0.055,120.406,226.097,0,0,0,0
+1463,0,0,0.055,120.176,227.112,0,0,0,0
+1464,0,0,0.055,120.014,228.123,0,0,0,0
+1465,0,0,0.055,119.842,229.165,0,0,0,0
+1466,0,0,0.055,119.679,230.222,0,0,0,0
+1467,0,0,0.055,119.573,231.253,0,0,0,0
+1468,0,0,0.055,119.518,232.302,0,0,0,0
+1469,0,0,0.055,119.498,233.305,0,0,0,0
+1470,0,0,0.055,119.405,234.333,0,0,0,0
+1471,0,0,0.055,119.316,235.356,0,0,0,0
+1472,0,0,0.055,119.239,236.385,0,0,0,0
+1473,0,0,0.055,119.177,237.395,0,0,0,0
+1474,0,0,0.055,119.15,238.4,0,0,0,0
+1475,0,0,0.055,119.103,239.416,0,0,0,0
+1476,0,0,0.055,119.054,240.444,0,0,0,0
+1477,0,0,0.055,119.007,241.464,0,0,0,0
+1478,0,0,0.055,118.96,242.486,0,0,0,0
+1479,0,0,0.055,118.92,243.524,0,0,0,0
+1480,0,0,0.055,118.907,244.542,0,0,0,0
+1481,0,0,0.055,118.879,245.583,0,0,0,0
+1482,0,0,0.055,118.852,246.618,0,0,0,0
+1483,0,0,0.055,118.837,247.64,0,0,0,0
+1484,0,0,0.055,118.823,248.651,0,0,0,0
+1485,0,0,0.055,118.807,249.659,0,0,0,0
+1486,0,0,0.055,118.821,250.691,0,0,0,0
+1487,0,0,0.055,118.822,251.724,0,0,0,0
+1488,0,0,0.055,118.823,252.77,0,0,0,0
+1489,0,0,0.055,118.825,253.772,0,0,0,0
+1490,0,0,0.055,118.827,254.798,0,0,0,0
+1491,0,0,0.055,118.829,255.804,0,0,0,0
+1492,0,0,0.055,118.83,256.839,0,0,0,0
+1493,0,0,0.055,118.832,257.845,0,0,0,0
+1494,0,0,0.055,118.823,258.898,0,0,0,0
+1495,0,0,0.055,118.817,259.937,0,0,0,0
+1496,0,0,0.055,118.812,260.966,0,0,0,0
+1497,0,0,0.055,118.806,261.979,0,0,0,0
+1498,0,0,0.055,118.801,262.987,0,0,0,0
+1499,0,0,0.055,118.795,263.994,0,0,0,0
+1500,0,0,0.055,118.789,265.071,0,0,0,0
+1501,0,0,0.055,118.771,266.232,0,0,0,0
+1502,0,0,0.055,118.756,267.27,0,0,0,0
+1503,0,0,0.055,118.741,268.31,0,0,0,0
+1504,0,0,0.055,118.726,269.376,0,0,0,0
+1505,0,0,0.055,118.711,270.427,0,0,0,0
+1506,0,0,0.055,118.697,271.486,0,0,0,0
+1507,0,0,0.055,118.682,272.544,0,0,0,0
+1508,0,0,0.055,118.65,273.584,0,0,0,0
+1509,0,0,0.055,118.624,274.625,0,0,0,0
+1510,0,0,0.055,118.57,275.636,0,0,0,0
+1511,0,0,0.055,118.526,276.675,0,0,0,0
+1512,0,0,0.055,118.482,277.694,0,0,0,0
+1513,0,0,0.055,118.437,278.698,0,0,0,0
+1514,0,0,0.055,118.393,279.707,0,0,0,0
+1515,0,0,0.055,118.347,280.73,0,0,0,0
+1516,0,0,0.055,118.303,281.738,0,0,0,0
+1517,0,0,0.055,118.257,282.757,0,0,0,0
+1518,0,0,0.055,118.239,283.759,0,0,0,0
+1519,0,0,0.055,118.21,284.764,0,0,0,0
+1520,0,0,0.055,118.221,285.79,0,0,0,0
+1521,0,0,0.055,118.21,286.829,0,0,0,0
+1522,0,0,0.055,118.199,287.845,0,0,0,0
+1523,0,0,0.055,118.189,288.869,0,0,0,0
+1524,0,0,0.055,118.178,289.948,0,0,0,0
+1525,0,0,0.055,118.167,290.972,0,0,0,0
+1526,0,0,0.055,118.156,292.054,0,0,0,0
+1527,0,0,0.055,118.145,293.133,0,0,0,0
+1528,0,0,0.055,118.126,294.186,0,0,0,0
+1529,0,0,0.055,118.099,295.187,0,0,0,0
+1530,0,0,0.055,118.078,296.198,0,0,0,0
+1531,0,0,0.055,118.056,297.239,0,0,0,0
+1532,0,0,0.055,118.035,298.264,0,0,0,0
+1533,0,0,0.055,118.014,299.268,0,0,0,0
+1534,0,0,0.055,117.991,300.327,0,0,0,0
+1535,0,0,0.055,117.971,301.328,0,0,0,0
+1536,0,0,0.055,117.948,302.415,0,0,0,0
+1537,0,0,0.055,117.927,303.433,0,0,0,0
+1538,0,0,0.055,117.907,304.449,0,0,0,0
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/dtlane.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/dtlane.csv
new file mode 100644
index 00000000..bdbe3cb0
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/dtlane.csv
@@ -0,0 +1,160 @@
+DID,Dist,PID,Dir,Apara,r,slope,cant,LW,RW
+1001,0,1001,1.5769552072461928,0,90000000000,0,0,2,2
+1002,1,1002,1.5769552072461928,0,90000000000,0,0,2,2
+1003,2,1003,1.5737316285471363,0,-310.21423497205427,0,0,2,2
+1004,3,1004,1.5725114416586194,0,-819.5465870113417,0,0,2,2
+1005,4,1005,1.57844374331971,0,168.5686361094724,0,0,2,2
+1006,5,1006,1.5663694826442065,0,-82.8208059172365,0,0,2,2
+1007,6,1007,1.5733395387307152,0,143.47086846770284,0,0,2,2
+1008,7,1008,1.5792896863938737,0,168.06305601316365,0,0,2,2
+1009,8,1009,1.5777890561648253,0,-666.3866825035068,0,0,2,2
+1010,9,1010,1.5750140106955042,0,-360.3544558297345,0,0,2,2
+1011,10,1011,1.5746689519147377,0,-2898.0569564947527,0,0,2,2
+1012,11,1012,1.5687257363219358,0,-168.259082038207,0,0,2,2
+1013,12,1013,1.5777541674329927,0,110.76121506596262,0,0,2,2
+1014,13,1014,1.5729688000176911,0,-208.97037013342555,0,0,2,2
+1015,14,1015,1.5804808525982976,0,133.11940901234524,0,0,2,2
+1016,15,1016,1.5711309651106926,0,-106.95315866909446,0,0,2,2
+1017,16,1017,1.5737926208556858,0,375.7059874783122,0,0,2,2
+1018,17,1018,1.5761274035452846,0,428.30538553113007,0,0,2,2
+1019,18,1019,1.5702416354892954,0,-169.90136044902954,0,0,2,2
+1020,19,1020,1.578198355029532,0,125.67993567488075,0,0,2,2
+1021,20,1021,1.5720181705458571,0,-161.80746750222914,0,0,2,2
+1022,21,1022,1.5706055651130575,0,-707.9117613317552,0,0,2,2
+1023,22,1023,1.568668187450491,0,-516.1616236843148,0,0,2,2
+1024,23,1024,1.5738116929901291,0,194.4199325330892,0,0,2,2
+1025,24,1025,1.5681610697806125,0,-176.97163001699232,0,0,2,2
+1026,25,1026,1.576233551996162,0,123.87763432587761,0,0,2,2
+1027,26,1027,1.5771205911255413,0,1127.3459838236336,0,0,2,2
+1028,27,1028,1.572915733582594,0,-237.82018529433887,0,0,2,2
+1029,28,1029,1.5762353397531932,0,301.2405534297222,0,0,2,2
+1030,29,1030,1.5753996131209225,0,-1196.5635189618679,0,0,2,2
+1031,30,1031,1.583323885143584,0,126.19455732214087,0,0,2,2
+1032,31,1032,1.5763200772449486,0,-142.77947289143017,0,0,2,2
+1033,32,1033,1.581582891357367,0,190.01241135238598,0,0,2,2
+1034,33,1034,1.587602910539133,0,166.11242751998466,0,0,2,2
+1035,34,1035,1.567492964011488,0,-49.7266364495457,0,0,2,2
+1036,35,1036,1.580190068162111,0,78.75811587722826,0,0,2,2
+1037,36,1037,1.5753588285894533,0,-206.98621646905497,0,0,2,2
+1038,37,1038,1.5770779342184096,0,581.6978219116953,0,0,2,2
+1039,38,1039,1.5778070212815072,0,1371.578307467697,0,0,2,2
+1040,39,1040,1.57688054066635,0,-1079.3533978369474,0,0,2,2
+1041,40,1041,1.5693145277312603,0,-132.17000930069833,0,0,2,2
+1042,41,1042,1.5765282755232228,0,138.62419769016512,0,0,2,2
+1043,42,1043,1.5620408548588791,0,-69.02539956344258,0,0,2,2
+1044,43,1044,1.574392985650641,0,80.95769198517125,0,0,2,2
+1045,44,1045,1.5781552304956135,0,265.7987561166538,0,0,2,2
+1046,45,1046,1.5636488564992264,0,-68.9352142891846,0,0,2,2
+1047,46,1047,1.576282511813594,0,79.15365546365315,0,0,2,2
+1048,47,1048,1.5706338534883697,0,-177.0331895513095,0,0,2,2
+1049,48,1049,1.5697332764760084,0,-1110.3992065908515,0,0,2,2
+1050,49,1050,1.572074578284328,0,427.1128123877896,0,0,2,2
+1051,50,1051,1.5709788389795292,0,-912.6258368395728,0,0,2,2
+1052,51,1052,1.5707963267,0,-5479.083394168603,0,0,2,2
+1053,52,1053,1.5750698586722753,0,233.99848333592325,0,0,2,2
+1054,53,1054,1.5720016133095074,0,-325.9191758699087,0,0,2,2
+1055,54,1055,1.5710102507774575,0,-1008.7127238228784,0,0,2,2
+1056,55,1056,1.5741634461732454,0,317.1386084528101,0,0,2,2
+1057,56,1057,1.5697313502942065,0,-225.6268878860186,0,0,2,2
+1058,57,1058,1.5783787159974525,0,115.64215442219911,0,0,2,2
+1059,58,1059,1.5701001710798361,0,-120.7941745743319,0,0,2,2
+1060,59,1060,1.5760334581575526,0,168.54063976706658,0,0,2,2
+1061,60,1061,1.5701780200451096,0,-170.78141392613784,0,0,2,2
+1062,61,1062,1.5739481064805068,0,265.2459080542718,0,0,2,2
+1063,62,1063,1.5760566970430587,0,474.25043901824483,0,0,2,2
+1064,63,1064,1.5740497522036763,0,-498.2697981413879,0,0,2,2
+1065,64,1065,1.5734512687362876,0,-1670.8899317858372,0,0,2,2
+1066,65,1066,1.5766194230917199,0,315.641186574559,0,0,2,2
+1067,66,1067,1.5694254082809356,0,-139.00443998265538,0,0,2,2
+1068,67,1068,1.5794433316084266,0,99.82108739600862,0,0,2,2
+1069,68,1069,1.5725889467252774,0,-145.8920117629209,0,0,2,2
+1070,69,1070,1.5807873561845662,0,121.97487878176102,0,0,2,2
+1071,70,1071,1.5739130500618594,0,-145.46922731544663,0,0,2,2
+1072,71,1072,1.5718091127823781,0,-475.29933983893517,0,0,2,2
+1073,72,1073,1.5707963267,0,-987.3753375954086,0,0,2,2
+1074,73,1074,1.5787771988715407,0,125.29958862966704,0,0,2,2
+1075,74,1075,1.5676375831346219,0,-89.76970333777409,0,0,2,2
+1076,75,1076,1.5799596823472497,0,81.15500311628622,0,0,2,2
+1077,76,1077,1.5718318856079825,0,-123.03457284663308,0,0,2,2
+1078,77,1078,1.573141750227899,0,763.4376750046916,0,0,2,2
+1079,78,1079,1.5728167843087149,0,-3077.245769373193,0,0,2,2
+1080,79,1080,1.5785502637358915,0,174.41416031947614,0,0,2,2
+1081,80,1081,1.569674339102679,0,-112.66431851597149,0,0,2,2
+1082,81,1082,1.5762914026465802,0,151.12443659721072,0,0,2,2
+1083,82,1083,1.5779954635538054,0,586.8334845075173,0,0,2,2
+1084,83,1084,1.5718615508136478,0,-163.02807724230902,0,0,2,2
+1085,84,1085,1.5801819377192137,0,120.18671864057802,0,0,2,2
+1086,85,1086,1.5735396017275092,0,-150.54944544342285,0,0,2,2
+1087,86,1087,1.5747067556354672,0,856.7850333890341,0,0,2,2
+1088,87,1088,1.5794144265235939,0,212.4192671416631,0,0,2,2
+1089,88,1089,1.5679123444827223,0,-86.94078136867701,0,0,2,2
+1090,89,1090,1.5776885650677432,0,102.28901765291539,0,0,2,2
+1091,90,1091,1.5772802126750645,0,-2448.8652887277844,0,0,2,2
+1092,91,1092,1.5627397146614799,0,-68.77343534353095,0,0,2,2
+1093,92,1093,1.585936009663618,0,43.110332917727945,0,0,2,2
+1094,93,1094,1.5619935809487495,0,-41.7668571517556,0,0,2,2
+1095,94,1095,1.5876906095116257,0,38.91500519420658,0,0,2,2
+1096,95,1096,1.5454624617424062,0,-23.680887105564942,0,0,2,2
+1097,96,1097,1.5873645175601516,0,23.86517750703063,0,0,2,2
+1098,97,1098,1.570944021915078,0,-60.89950155067454,0,0,2,2
+1099,98,1099,1.5807948187074246,0,101.51463085472905,0,0,2,2
+1100,99,1100,1.571359730727884,0,-105.9873529709988,0,0,2,2
+1101,100,1101,1.5698360710217596,0,-656.3145274371365,0,0,2,2
+1102,101,1102,1.5778075823117197,0,125.4467269286155,0,0,2,2
+1103,102,1103,1.5842673129254203,0,154.8052170904881,0,0,2,2
+1104,103,1104,1.577986173407375,0,-159.20678041413706,0,0,2,2
+1105,104,1105,1.5728062349336525,0,-193.0524860619341,0,0,2,2
+1106,105,1106,1.5681396089673467,0,-214.28758319613829,0,0,2,2
+1107,106,1107,1.5668894971276457,0,-799.9284289949252,0,0,2,2
+1108,107,1108,1.576207785892031,0,107.31584149034198,0,0,2,2
+1109,108,1109,1.5583652788716873,0,-56.04593563336265,0,0,2,2
+1110,109,1110,1.577050748676428,0,53.51751978675366,0,0,2,2
+1111,110,1111,1.5845470828584913,0,133.39853529912384,0,0,2,2
+1112,111,1112,1.574603990145371,0,-100.57232984265129,0,0,2,2
+1113,112,1113,1.5714870138239672,0,-320.8237397034875,0,0,2,2
+1114,113,1114,1.5780119468725389,0,153.25827752652526,0,0,2,2
+1115,114,1115,1.5843865999601219,0,156.87128166203587,0,0,2,2
+1116,115,1116,1.5557032253732601,0,-34.863401339744854,0,0,2,2
+1117,116,1117,1.576884531537484,0,47.211441647968,0,0,2,2
+1118,117,1118,1.5766306482410994,0,-3938.817615182425,0,0,2,2
+1119,118,1119,1.5734950747595073,0,-318.9209265452281,0,0,2,2
+1120,119,1120,1.5775238109552248,0,248.21679837538343,0,0,2,2
+1121,120,1121,1.5735982325932878,0,-254.73953333759928,0,0,2,2
+1122,121,1122,1.5701436241046975,0,-289.46840236824585,0,0,2,2
+1123,122,1123,1.5758215401952662,0,176.1209542460578,0,0,2,2
+1124,123,1124,1.558982377070755,0,-59.385374000230954,0,0,2,2
+1125,124,1125,1.5763367431657738,0,57.62238704224561,0,0,2,2
+1126,125,1126,1.564720140088975,0,-86.0836849971439,0,0,2,2
+1127,126,1127,1.576122881314287,0,87.69821047768663,0,0,2,2
+1128,127,1128,1.579527990768055,0,293.6763160119224,0,0,2,2
+1129,128,1129,1.566197129455978,0,-75.01390769807594,0,0,2,2
+1130,129,1130,1.5793387649752906,0,76.09402943267055,0,0,2,2
+1131,130,1131,1.5738126512839616,0,-180.95899864838228,0,0,2,2
+1132,131,1132,1.5740190032649894,0,4846.088683128463,0,0,2,2
+1133,132,1133,1.5713930387454167,0,-380.8124567359731,0,0,2,2
+1134,133,1134,1.578585527369067,0,139.0339355854949,0,0,2,2
+1135,134,1135,1.5764902367863745,0,-477.2607714940234,0,0,2,2
+1136,135,1136,1.573288419766056,0,-312.32265730804284,0,0,2,2
+1137,136,1137,1.579542170941775,0,159.90402750314496,0,0,2,2
+1138,137,1138,1.573978822436062,0,-179.74786209656133,0,0,2,2
+1139,138,1139,1.5810142195432424,0,142.13838746634403,0,0,2,2
+1140,139,1140,1.5716636063774267,0,-106.94485829612124,0,0,2,2
+1141,140,1141,1.5687473345739384,0,-342.9035657114844,0,0,2,2
+1142,141,1142,1.5755972265830727,0,145.98770296911493,0,0,2,2
+1143,142,1143,1.576111637781805,0,1943.9701205268652,0,0,2,2
+1144,143,1144,1.5846480915453838,0,117.14466307620009,0,0,2,2
+1145,144,1145,1.5696541500161478,0,-66.69360408336591,0,0,2,2
+1146,145,1146,1.5665878699312612,0,-326.12806798990545,0,0,2,2
+1147,146,1147,1.5736245608080908,0,142.11225382840146,0,0,2,2
+1148,147,1148,1.5818404302554914,0,121.71566337588133,0,0,2,2
+1149,148,1149,1.5635649606831077,0,-54.71815627167872,0,0,2,2
+1150,149,1150,1.564744372765147,0,847.8800711205324,0,0,2,2
+1151,150,1151,1.573462502288806,0,114.70350346209469,0,0,2,2
+1152,151,1152,1.578323109330659,0,205.73561931449584,0,0,2,2
+1153,152,1153,1.5844978766933193,0,161.94942113076553,0,0,2,2
+1154,153,1154,1.5712725171401973,0,-75.61231102892319,0,0,2,2
+1155,154,1155,1.5788883820139301,0,131.3048506741517,0,0,2,2
+1156,155,1156,1.572986141831219,0,-169.42719527565234,0,0,2,2
+1157,156,1157,1.5740141579748792,0,972.7473699387008,0,0,2,2
+1158,157,1158,1.568363598139526,0,-176.97361485200645,0,0,2,2
+1159,158,1159,1.5809705392166384,0,79.32138287022534,0,0,2,2
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/lane.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/lane.csv
new file mode 100644
index 00000000..88652956
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/lane.csv
@@ -0,0 +1,159 @@
+LnID,DID,BLID,FLID,BNID,FNID,JCT,BLID2,BLID3,BLID4,FLID2,FLID3,FLID4,CrossID,Span,LCnt,Lno,LaneType,LimitVel,RefVel,RoadSecID,LaneChgFG
+1001,1001,0,1002,1001,1002,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1002,1002,1001,1003,1002,1003,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1003,1003,1002,1004,1003,1004,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1004,1004,1003,1005,1004,1005,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1005,1005,1004,1006,1005,1006,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1006,1006,1005,1007,1006,1007,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1007,1007,1006,1008,1007,1008,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1008,1008,1007,1009,1008,1009,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1009,1009,1008,1010,1009,1010,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1010,1010,1009,1011,1010,1011,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1011,1011,1010,1012,1011,1012,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1012,1012,1011,1013,1012,1013,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1013,1013,1012,1014,1013,1014,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1014,1014,1013,1015,1014,1015,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1015,1015,1014,1016,1015,1016,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1016,1016,1015,1017,1016,1017,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1017,1017,1016,1018,1017,1018,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1018,1018,1017,1019,1018,1019,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1019,1019,1018,1020,1019,1020,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1020,1020,1019,1021,1020,1021,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1021,1021,1020,1022,1021,1022,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1022,1022,1021,1023,1022,1023,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1023,1023,1022,1024,1023,1024,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1024,1024,1023,1025,1024,1025,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1025,1025,1024,1026,1025,1026,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1026,1026,1025,1027,1026,1027,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1027,1027,1026,1028,1027,1028,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1028,1028,1027,1029,1028,1029,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1029,1029,1028,1030,1029,1030,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1030,1030,1029,1031,1030,1031,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1031,1031,1030,1032,1031,1032,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1032,1032,1031,1033,1032,1033,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1033,1033,1032,1034,1033,1034,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1034,1034,1033,1035,1034,1035,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1035,1035,1034,1036,1035,1036,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1036,1036,1035,1037,1036,1037,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1037,1037,1036,1038,1037,1038,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1038,1038,1037,1039,1038,1039,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1039,1039,1038,1040,1039,1040,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1040,1040,1039,1041,1040,1041,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1041,1041,1040,1042,1041,1042,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1042,1042,1041,1043,1042,1043,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1043,1043,1042,1044,1043,1044,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1044,1044,1043,1045,1044,1045,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1045,1045,1044,1046,1045,1046,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1046,1046,1045,1047,1046,1047,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1047,1047,1046,1048,1047,1048,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1048,1048,1047,1049,1048,1049,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1049,1049,1048,1050,1049,1050,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1050,1050,1049,1051,1050,1051,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1051,1051,1050,1052,1051,1052,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1052,1052,1051,1053,1052,1053,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1053,1053,1052,1054,1053,1054,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1054,1054,1053,1055,1054,1055,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1055,1055,1054,1056,1055,1056,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1056,1056,1055,1057,1056,1057,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1057,1057,1056,1058,1057,1058,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1058,1058,1057,1059,1058,1059,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1059,1059,1058,1060,1059,1060,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1060,1060,1059,1061,1060,1061,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1061,1061,1060,1062,1061,1062,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1062,1062,1061,1063,1062,1063,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1063,1063,1062,1064,1063,1064,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1064,1064,1063,1065,1064,1065,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1065,1065,1064,1066,1065,1066,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1066,1066,1065,1067,1066,1067,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1067,1067,1066,1068,1067,1068,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1068,1068,1067,1069,1068,1069,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1069,1069,1068,1070,1069,1070,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1070,1070,1069,1071,1070,1071,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1071,1071,1070,1072,1071,1072,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1072,1072,1071,1073,1072,1073,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1073,1073,1072,1074,1073,1074,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1074,1074,1073,1075,1074,1075,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1075,1075,1074,1076,1075,1076,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1076,1076,1075,1077,1076,1077,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1077,1077,1076,1078,1077,1078,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1078,1078,1077,1079,1078,1079,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1079,1079,1078,1080,1079,1080,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1080,1080,1079,1081,1080,1081,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1081,1081,1080,1082,1081,1082,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1082,1082,1081,1083,1082,1083,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1083,1083,1082,1084,1083,1084,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1084,1084,1083,1085,1084,1085,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1085,1085,1084,1086,1085,1086,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1086,1086,1085,1087,1086,1087,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1087,1087,1086,1088,1087,1088,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1088,1088,1087,1089,1088,1089,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1089,1089,1088,1090,1089,1090,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1090,1090,1089,1091,1090,1091,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1091,1091,1090,1092,1091,1092,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1092,1092,1091,1093,1092,1093,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1093,1093,1092,1094,1093,1094,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1094,1094,1093,1095,1094,1095,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1095,1095,1094,1096,1095,1096,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1096,1096,1095,1097,1096,1097,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1097,1097,1096,1098,1097,1098,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1098,1098,1097,1099,1098,1099,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1099,1099,1098,1100,1099,1100,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1100,1100,1099,1101,1100,1101,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1101,1101,1100,1102,1101,1102,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1102,1102,1101,1103,1102,1103,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1103,1103,1102,1104,1103,1104,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1104,1104,1103,1105,1104,1105,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1105,1105,1104,1106,1105,1106,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1106,1106,1105,1107,1106,1107,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1107,1107,1106,1108,1107,1108,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1108,1108,1107,1109,1108,1109,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1109,1109,1108,1110,1109,1110,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1110,1110,1109,1111,1110,1111,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1111,1111,1110,1112,1111,1112,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1112,1112,1111,1113,1112,1113,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1113,1113,1112,1114,1113,1114,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1114,1114,1113,1115,1114,1115,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1115,1115,1114,1116,1115,1116,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1116,1116,1115,1117,1116,1117,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1117,1117,1116,1118,1117,1118,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1118,1118,1117,1119,1118,1119,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1119,1119,1118,1120,1119,1120,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1120,1120,1119,1121,1120,1121,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1121,1121,1120,1122,1121,1122,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1122,1122,1121,1123,1122,1123,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1123,1123,1122,1124,1123,1124,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1124,1124,1123,1125,1124,1125,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1125,1125,1124,1126,1125,1126,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1126,1126,1125,1127,1126,1127,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1127,1127,1126,1128,1127,1128,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1128,1128,1127,1129,1128,1129,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1129,1129,1128,1130,1129,1130,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1130,1130,1129,1131,1130,1131,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1131,1131,1130,1132,1131,1132,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1132,1132,1131,1133,1132,1133,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1133,1133,1132,1134,1133,1134,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1134,1134,1133,1135,1134,1135,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1135,1135,1134,1136,1135,1136,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1136,1136,1135,1137,1136,1137,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1137,1137,1136,1138,1137,1138,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1138,1138,1137,1139,1138,1139,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1139,1139,1138,1140,1139,1140,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1140,1140,1139,1141,1140,1141,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1141,1141,1140,1142,1141,1142,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1142,1142,1141,1143,1142,1143,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1143,1143,1142,1144,1143,1144,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1144,1144,1143,1145,1144,1145,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1145,1145,1144,1146,1145,1146,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1146,1146,1145,1147,1146,1147,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1147,1147,1146,1148,1147,1148,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1148,1148,1147,1149,1148,1149,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1149,1149,1148,1150,1149,1150,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1150,1150,1149,1151,1150,1151,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1151,1151,1150,1152,1151,1152,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1152,1152,1151,1153,1152,1153,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1153,1153,1152,1154,1153,1154,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1154,1154,1153,1155,1154,1155,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1155,1155,1154,1156,1155,1156,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1156,1156,1155,1157,1156,1157,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1157,1157,1156,1158,1157,1158,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1158,1158,1157,0,1158,1159,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/node.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/node.csv
new file mode 100644
index 00000000..de7375dd
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/node.csv
@@ -0,0 +1,160 @@
+NID,PID
+1001,1001
+1002,1002
+1003,1003
+1004,1004
+1005,1005
+1006,1006
+1007,1007
+1008,1008
+1009,1009
+1010,1010
+1011,1011
+1012,1012
+1013,1013
+1014,1014
+1015,1015
+1016,1016
+1017,1017
+1018,1018
+1019,1019
+1020,1020
+1021,1021
+1022,1022
+1023,1023
+1024,1024
+1025,1025
+1026,1026
+1027,1027
+1028,1028
+1029,1029
+1030,1030
+1031,1031
+1032,1032
+1033,1033
+1034,1034
+1035,1035
+1036,1036
+1037,1037
+1038,1038
+1039,1039
+1040,1040
+1041,1041
+1042,1042
+1043,1043
+1044,1044
+1045,1045
+1046,1046
+1047,1047
+1048,1048
+1049,1049
+1050,1050
+1051,1051
+1052,1052
+1053,1053
+1054,1054
+1055,1055
+1056,1056
+1057,1057
+1058,1058
+1059,1059
+1060,1060
+1061,1061
+1062,1062
+1063,1063
+1064,1064
+1065,1065
+1066,1066
+1067,1067
+1068,1068
+1069,1069
+1070,1070
+1071,1071
+1072,1072
+1073,1073
+1074,1074
+1075,1075
+1076,1076
+1077,1077
+1078,1078
+1079,1079
+1080,1080
+1081,1081
+1082,1082
+1083,1083
+1084,1084
+1085,1085
+1086,1086
+1087,1087
+1088,1088
+1089,1089
+1090,1090
+1091,1091
+1092,1092
+1093,1093
+1094,1094
+1095,1095
+1096,1096
+1097,1097
+1098,1098
+1099,1099
+1100,1100
+1101,1101
+1102,1102
+1103,1103
+1104,1104
+1105,1105
+1106,1106
+1107,1107
+1108,1108
+1109,1109
+1110,1110
+1111,1111
+1112,1112
+1113,1113
+1114,1114
+1115,1115
+1116,1116
+1117,1117
+1118,1118
+1119,1119
+1120,1120
+1121,1121
+1122,1122
+1123,1123
+1124,1124
+1125,1125
+1126,1126
+1127,1127
+1128,1128
+1129,1129
+1130,1130
+1131,1131
+1132,1132
+1133,1133
+1134,1134
+1135,1135
+1136,1136
+1137,1137
+1138,1138
+1139,1139
+1140,1140
+1141,1141
+1142,1142
+1143,1143
+1144,1144
+1145,1145
+1146,1146
+1147,1147
+1148,1148
+1149,1149
+1150,1150
+1151,1151
+1152,1152
+1153,1153
+1154,1154
+1155,1155
+1156,1156
+1157,1157
+1158,1158
+1159,1159
diff --git a/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/point.csv b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/point.csv
new file mode 100644
index 00000000..0f778cae
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/230209_carla_town04_straight/point.csv
@@ -0,0 +1,160 @@
+PID,B(Lat),L(Long),H,Bx,Ly,ReF,MCODE1,MCODE2,MCODE3
+1001,0,0,2.458,127.057,258.58,0,0,0,0
+1002,0,0,2.459,128.123,258.573,0,0,0,0
+1003,0,0,2.459,129.339,258.569,0,0,0,0
+1004,0,0,2.459,130.567,258.567,0,0,0,0
+1005,0,0,2.46,131.7,258.559,0,0,0,0
+1006,0,0,2.462,132.796,258.564,0,0,0,0
+1007,0,0,2.462,134.128,258.56,0,0,0,0
+1008,0,0,2.461,135.17,258.551,0,0,0,0
+1009,0,0,2.463,136.475,258.542,0,0,0,0
+1010,0,0,2.463,137.611,258.537,0,0,0,0
+1011,0,0,2.463,138.785,258.533,0,0,0,0
+1012,0,0,2.464,139.891,258.535,0,0,0,0
+1013,0,0,2.462,141.114,258.527,0,0,0,0
+1014,0,0,2.461,142.477,258.524,0,0,0,0
+1015,0,0,2.461,143.766,258.511,0,0,0,0
+1016,0,0,2.461,145.134,258.511,0,0,0,0
+1017,0,0,2.461,146.549,258.506,0,0,0,0
+1018,0,0,2.461,147.877,258.499,0,0,0,0
+1019,0,0,2.46,149.143,258.5,0,0,0,0
+1020,0,0,2.459,150.371,258.491,0,0,0,0
+1021,0,0,2.457,151.52,258.49,0,0,0,0
+1022,0,0,2.454,152.64,258.49,0,0,0,0
+1023,0,0,2.457,153.716,258.492,0,0,0,0
+1024,0,0,2.46,154.738,258.489,0,0,0,0
+1025,0,0,2.457,156.035,258.492,0,0,0,0
+1026,0,0,2.455,157.264,258.486,0,0,0,0
+1027,0,0,2.455,158.48,258.478,0,0,0,0
+1028,0,0,2.454,159.704,258.475,0,0,0,0
+1029,0,0,2.455,160.865,258.469,0,0,0,0
+1030,0,0,2.456,161.939,258.464,0,0,0,0
+1031,0,0,2.48,163.143,258.449,0,0,0,0
+1032,0,0,2.51,164.181,258.443,0,0,0,0
+1033,0,0,2.518,165.358,258.431,0,0,0,0
+1034,0,0,2.548,166.424,258.413,0,0,0,0
+1035,0,0,2.557,167.449,258.416,0,0,0,0
+1036,0,0,2.556,168.57,258.406,0,0,0,0
+1037,0,0,2.557,169.594,258.401,0,0,0,0
+1038,0,0,2.556,170.677,258.394,0,0,0,0
+1039,0,0,2.56,171.822,258.386,0,0,0,0
+1040,0,0,2.557,173.021,258.379,0,0,0,0
+1041,0,0,2.559,174.297,258.381,0,0,0,0
+1042,0,0,2.543,175.655,258.373,0,0,0,0
+1043,0,0,2.508,176.851,258.383,0,0,0,0
+1044,0,0,2.501,177.954,258.379,0,0,0,0
+1045,0,0,2.47,179.003,258.372,0,0,0,0
+1046,0,0,2.452,180.062,258.379,0,0,0,0
+1047,0,0,2.454,181.096,258.374,0,0,0,0
+1048,0,0,2.455,182.411,258.374,0,0,0,0
+1049,0,0,2.455,183.703,258.375,0,0,0,0
+1050,0,0,2.454,184.753,258.374,0,0,0,0
+1051,0,0,2.451,185.757,258.374,0,0,0,0
+1052,0,0,2.455,187.03,258.374,0,0,0,0
+1053,0,0,2.454,188.244,258.368,0,0,0,0
+1054,0,0,2.456,189.383,258.367,0,0,0,0
+1055,0,0,2.457,190.667,258.367,0,0,0,0
+1056,0,0,2.458,191.863,258.363,0,0,0,0
+1057,0,0,2.459,193.009,258.364,0,0,0,0
+1058,0,0,2.46,194.084,258.356,0,0,0,0
+1059,0,0,2.458,195.18,258.357,0,0,0,0
+1060,0,0,2.458,196.497,258.35,0,0,0,0
+1061,0,0,2.459,197.731,258.351,0,0,0,0
+1062,0,0,2.459,198.941,258.347,0,0,0,0
+1063,0,0,2.462,200.026,258.341,0,0,0,0
+1064,0,0,2.458,201.086,258.338,0,0,0,0
+1065,0,0,2.459,202.086,258.335,0,0,0,0
+1066,0,0,2.458,203.396,258.327,0,0,0,0
+1067,0,0,2.455,204.465,258.329,0,0,0,0
+1068,0,0,2.456,205.481,258.32,0,0,0,0
+1069,0,0,2.458,206.775,258.318,0,0,0,0
+1070,0,0,2.458,207.835,258.307,0,0,0,0
+1071,0,0,2.457,209.0,258.303,0,0,0,0
+1072,0,0,2.457,210.085,258.302,0,0,0,0
+1073,0,0,2.46,211.148,258.302,0,0,0,0
+1074,0,0,2.457,212.268,258.293,0,0,0,0
+1075,0,0,2.456,213.408,258.297,0,0,0,0
+1076,0,0,2.457,214.507,258.287,0,0,0,0
+1077,0,0,2.455,215.509,258.286,0,0,0,0
+1078,0,0,2.458,216.589,258.283,0,0,0,0
+1079,0,0,2.458,217.782,258.281,0,0,0,0
+1080,0,0,2.457,218.88,258.272,0,0,0,0
+1081,0,0,2.456,219.968,258.274,0,0,0,0
+1082,0,0,2.457,221.04,258.268,0,0,0,0
+1083,0,0,2.457,222.66,258.256,0,0,0,0
+1084,0,0,2.457,223.777,258.255,0,0,0,0
+1085,0,0,2.456,224.837,258.245,0,0,0,0
+1086,0,0,2.458,225.871,258.242,0,0,0,0
+1087,0,0,2.456,227.518,258.236,0,0,0,0
+1088,0,0,2.455,228.57,258.227,0,0,0,0
+1089,0,0,2.457,229.861,258.23,0,0,0,0
+1090,0,0,2.455,231.087,258.222,0,0,0,0
+1091,0,0,2.455,232.231,258.214,0,0,0,0
+1092,0,0,2.455,233.329,258.223,0,0,0,0
+1093,0,0,2.454,234.347,258.208,0,0,0,0
+1094,0,0,2.453,235.55,258.218,0,0,0,0
+1095,0,0,2.453,236.672,258.2,0,0,0,0
+1096,0,0,2.454,237.704,258.226,0,0,0,0
+1097,0,0,2.452,238.879,258.206,0,0,0,0
+1098,0,0,2.451,239.912,258.206,0,0,0,0
+1099,0,0,2.448,241.081,258.194,0,0,0,0
+1100,0,0,2.446,242.165,258.194,0,0,0,0
+1101,0,0,2.438,243.309,258.195,0,0,0,0
+1102,0,0,2.443,244.471,258.187,0,0,0,0
+1103,0,0,2.443,245.583,258.172,0,0,0,0
+1104,0,0,2.442,246.585,258.165,0,0,0,0
+1105,0,0,2.442,247.906,258.162,0,0,0,0
+1106,0,0,2.442,248.917,258.165,0,0,0,0
+1107,0,0,2.442,250.01,258.169,0,0,0,0
+1108,0,0,2.44,251.104,258.163,0,0,0,0
+1109,0,0,2.44,252.201,258.177,0,0,0,0
+1110,0,0,2.442,253.26,258.17,0,0,0,0
+1111,0,0,2.443,254.412,258.154,0,0,0,0
+1112,0,0,2.446,255.422,258.15,0,0,0,0
+1113,0,0,2.448,256.615,258.149,0,0,0,0
+1114,0,0,2.45,257.748,258.141,0,0,0,0
+1115,0,0,2.45,259.226,258.121,0,0,0,0
+1116,0,0,2.451,260.477,258.14,0,0,0,0
+1117,0,0,2.449,261.941,258.131,0,0,0,0
+1118,0,0,2.451,263.243,258.124,0,0,0,0
+1119,0,0,2.45,264.476,258.12,0,0,0,0
+1120,0,0,2.449,265.628,258.112,0,0,0,0
+1121,0,0,2.453,266.706,258.109,0,0,0,0
+1122,0,0,2.451,267.735,258.11,0,0,0,0
+1123,0,0,2.449,268.913,258.104,0,0,0,0
+1124,0,0,2.45,270.088,258.118,0,0,0,0
+1125,0,0,2.45,271.19,258.112,0,0,0,0
+1126,0,0,2.451,272.23,258.118,0,0,0,0
+1127,0,0,2.451,273.427,258.112,0,0,0,0
+1128,0,0,2.452,274.577,258.102,0,0,0,0
+1129,0,0,2.449,275.678,258.107,0,0,0,0
+1130,0,0,2.45,276.814,258.097,0,0,0,0
+1131,0,0,2.449,277.887,258.094,0,0,0,0
+1132,0,0,2.445,279.118,258.09,0,0,0,0
+1133,0,0,2.448,280.141,258.089,0,0,0,0
+1134,0,0,2.449,281.253,258.081,0,0,0,0
+1135,0,0,2.449,282.266,258.075,0,0,0,0
+1136,0,0,2.447,283.271,258.072,0,0,0,0
+1137,0,0,2.448,284.813,258.059,0,0,0,0
+1138,0,0,2.45,286.002,258.055,0,0,0,0
+1139,0,0,2.451,287.101,258.044,0,0,0,0
+1140,0,0,2.45,288.262,258.043,0,0,0,0
+1141,0,0,2.452,289.275,258.045,0,0,0,0
+1142,0,0,2.451,290.578,258.039,0,0,0,0
+1143,0,0,2.452,291.778,258.032,0,0,0,0
+1144,0,0,2.451,292.913,258.017,0,0,0,0
+1145,0,0,2.451,294.195,258.018,0,0,0,0
+1146,0,0,2.453,295.515,258.024,0,0,0,0
+1147,0,0,2.449,296.713,258.02,0,0,0,0
+1148,0,0,2.453,297.854,258.008,0,0,0,0
+1149,0,0,2.454,298.938,258.016,0,0,0,0
+1150,0,0,2.453,300.189,258.023,0,0,0,0
+1151,0,0,2.452,301.196,258.02,0,0,0,0
+1152,0,0,2.451,302.721,258.009,0,0,0,0
+1153,0,0,2.45,304.159,257.989,0,0,0,0
+1154,0,0,2.444,305.249,257.989,0,0,0,0
+1155,0,0,2.444,306.501,257.979,0,0,0,0
+1156,0,0,2.446,307.685,257.976,0,0,0,0
+1157,0,0,2.444,308.786,257.972,0,0,0,0
+1158,0,0,2.44,309.827,257.975,0,0,0,0
+1159,0,0,2.442,311.051,257.963,0,0,0,0
diff --git a/autoware.ai/autoware_files/vector_map/cubetown_straight/dtlane.csv b/autoware.ai/autoware_files/vector_map/cubetown_straight/dtlane.csv
new file mode 100644
index 00000000..357cc87f
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/cubetown_straight/dtlane.csv
@@ -0,0 +1,95 @@
+DID,Dist,PID,Dir,Apara,r,slope,cant,LW,RW
+1001,0,1001,3.141840755356629,0,90000000000,0,0,2,2
+1002,1,1002,3.141840755356629,0,90000000000,0,0,2,2
+1003,2,1003,3.1415039391096657,0,-2968.9779190168465,0,0,2,2
+1004,3,1004,3.141290603752599,0,-4687.455533626855,0,0,2,2
+1005,4,1005,3.1412035506037146,0,-11487.235244366804,0,0,2,2
+1006,5,1006,3.1411593667508333,0,-22632.70255508454,0,0,2,2
+1007,6,1007,3.1409284471703254,0,-4330.511937534554,0,0,2,2
+1008,7,1008,3.1406249057059217,0,-3294.442826664472,0,0,2,2
+1009,8,1009,3.140379015416139,0,-4066.854371854934,0,0,2,2
+1010,9,1010,3.140388570087818,0,104660.84378169649,0,0,2,2
+1011,10,1011,3.1403950790189157,0,153635.0569695795,0,0,2,2
+1012,11,1012,3.1404826513196578,0,11419.135862893965,0,0,2,2
+1013,12,1013,3.1404416027677957,0,-24361.39533888552,0,0,2,2
+1014,13,1014,3.140125084123769,0,-3159.371553215576,0,0,2,2
+1015,14,1015,3.1402281204636235,0,9705.313692362022,0,0,2,2
+1016,15,1016,3.1401389842209273,0,-11218.781157377234,0,0,2,2
+1017,16,1017,3.139716141716801,0,-2364.946736057318,0,0,2,2
+1018,17,1018,3.1398037978705347,0,11408.212172274369,0,0,2,2
+1019,18,1019,3.1396230935279563,0,-5533.901320420821,0,0,2,2
+1020,19,1020,3.1397755776317453,0,6558.060644694116,0,0,2,2
+1021,20,1021,3.139774841552806,0,-1358549.9419073837,0,0,2,2
+1022,21,1022,3.139496443886718,0,-3591.9841356819943,0,0,2,2
+1023,22,1023,3.139477418909205,0,-52562.479998724964,0,0,2,2
+1024,23,1024,3.1394923637210748,0,66912.85301624147,0,0,2,2
+1025,24,1025,3.1395033644942663,0,90902.70134586656,0,0,2,2
+1026,25,1026,3.1395176493492736,0,70004.21071741311,0,0,2,2
+1027,26,1027,3.139530024556282,0,80806.72907654608,0,0,2,2
+1028,27,1028,3.1397245377792924,0,5141.038663201027,0,0,2,2
+1029,28,1029,3.1392954272772746,0,-2330.402064964111,0,0,2,2
+1030,29,1030,3.139196418825459,0,-10100.14783243779,0,0,2,2
+1031,30,1031,3.1392070069672044,0,94445.27888155554,0,0,2,2
+1032,31,1032,3.139223153056225,0,61934.503069647064,0,0,2,2
+1033,32,1033,3.1393395568464104,0,8590.785561245712,0,0,2,2
+1034,33,1034,3.139200075877934,0,-7169.436883918307,0,0,2,2
+1035,34,1035,3.1390769452122096,0,-8121.45369406833,0,0,2,2
+1036,35,1036,3.139057603754864,0,-51702.412188325434,0,0,2,2
+1037,36,1037,3.139069089854514,0,87061.75555370716,0,0,2,2
+1038,37,1038,3.139145955250907,0,13009.755324627917,0,0,2,2
+1039,38,1039,3.139311426970444,0,6043.328750054524,0,0,2,2
+1040,39,1040,3.138902401570358,0,-2444.835943660098,0,0,2,2
+1041,40,1041,3.138773122528401,0,-7735.205837383889,0,0,2,2
+1042,41,1042,3.1387475934494664,0,-39171.017590187184,0,0,2,2
+1043,42,1043,3.1387480626973945,0,2131069.6119920393,0,0,2,2
+1044,43,1044,3.1388895484743546,0,7067.848242311916,0,0,2,2
+1045,44,1045,3.1389562332098473,0,14995.935615733462,0,0,2,2
+1046,45,1046,3.1385653400160685,0,-2558.2435711730704,0,0,2,2
+1047,46,1047,3.1384299905746076,0,-7388.283166939177,0,0,2,2
+1048,47,1048,3.138399842034186,0,-33169.10158898101,0,0,2,2
+1049,48,1049,3.138398209228352,0,-612442.6916652169,0,0,2,2
+1050,49,1050,3.1384078787704386,0,103417.51357461484,0,0,2,2
+1051,50,1051,3.1386576422646226,0,4003.787676285226,0,0,2,2
+1052,51,1052,3.138409620878691,0,-4031.9103783869114,0,0,2,2
+1053,52,1053,3.1381816807382634,0,-4387.116714610132,0,0,2,2
+1054,53,1054,3.1381186342535505,0,-15861.312562530806,0,0,2,2
+1055,54,1055,3.138107281667687,0,-88085.65837197383,0,0,2,2
+1056,55,1056,3.1381139495508767,0,149972.63322800846,0,0,2,2
+1057,56,1057,3.138123768288998,0,101846.08120245696,0,0,2,2
+1058,57,1058,3.1381326263475833,0,112891.55409957237,0,0,2,2
+1059,58,1059,3.1381439258570403,0,88499.41705927694,0,0,2,2
+1060,59,1060,3.138154738664567,0,92482.91875465706,0,0,2,2
+1061,60,1061,3.138164351277002,0,104029.9925508711,0,0,2,2
+1062,61,1062,3.138174032352458,0,103294.30904130894,0,0,2,2
+1063,62,1063,3.1381852940876627,0,88796.26290373625,0,0,2,2
+1064,63,1064,3.1384424816471945,0,3888.2129517471153,0,0,2,2
+1065,64,1065,3.1382124925718102,0,-4348.032611240637,0,0,2,2
+1066,65,1066,3.1379154882371667,0,-3366.954227116705,0,0,2,2
+1067,66,1067,3.137822154845505,0,-10714.279018453317,0,0,2,2
+1068,67,1068,3.137802285633065,0,-50329.121146989644,0,0,2,2
+1069,68,1069,3.137808284895846,0,166687.14748258528,0,0,2,2
+1070,69,1070,3.1378163512995583,0,123970.98331451902,0,0,2,2
+1071,70,1071,3.137828450162874,0,82652.3925355782,0,0,2,2
+1072,71,1072,3.137836664694623,0,121735.48420661429,0,0,2,2
+1073,72,1073,3.1378522173967727,0,64297.50858561852,0,0,2,2
+1074,73,1074,3.1378603608899267,0,122797.42625002169,0,0,2,2
+1075,74,1075,3.137872972936972,0,79289.2697276673,0,0,2,2
+1076,75,1076,3.1378812529317686,0,120773.0227592231,0,0,2,2
+1077,76,1077,3.1378909513716606,0,103109.36718983989,0,0,2,2
+1078,77,1078,3.1379025772157574,0,86015.25976762181,0,0,2,2
+1079,78,1079,3.1379123614143296,0,102205.61169297676,0,0,2,2
+1080,79,1080,3.1379211334192068,0,113999.02462497579,0,0,2,2
+1081,80,1081,3.1379340927458688,0,77164.50291599584,0,0,2,2
+1082,81,1082,3.1379461179072976,0,83158.96679786622,0,0,2,2
+1083,82,1083,3.1379528362470825,0,148846.2971524249,0,0,2,2
+1084,83,1084,3.137965297720555,0,80247.33208261685,0,0,2,2
+1085,84,1085,3.1379718860215577,0,151784.2004510639,0,0,2,2
+1086,85,1086,3.1379847559380174,0,77700.58206163858,0,0,2,2
+1087,86,1087,3.1379945893453316,0,101694.15016057012,0,0,2,2
+1088,87,1088,3.1380013890106024,0,147066.0628381838,0,0,2,2
+1089,88,1089,3.1380142274392324,0,77891.15232255404,0,0,2,2
+1090,89,1090,3.1380245517508505,0,96858.75794853928,0,0,2,2
+1091,90,1091,3.1380115077573896,0,-76663.63855489486,0,0,2,2
+1092,91,1092,3.137590633002616,0,-2376.003760401227,0,0,2,2
+1093,92,1093,3.1378851847800737,0,3394.988849264264,0,0,2,2
+1094,93,1094,3.146261608250373,0,119.38269400367994,0,0,2,2
diff --git a/autoware.ai/autoware_files/vector_map/cubetown_straight/idx.csv b/autoware.ai/autoware_files/vector_map/cubetown_straight/idx.csv
new file mode 100644
index 00000000..45175d3d
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/cubetown_straight/idx.csv
@@ -0,0 +1,15 @@
+ID,KIND,fname
+1,K001,poledata.csv
+2,K002,utilitypole.csv
+3,K003,roadsign.csv
+4,K004,signaldata.csv
+5,K005,streetlight.csv
+6,P001,whiteline.csv
+7,P002,stopline.csv
+8,P003,zebrazone.csv
+9,P004,crosswalk.csv
+10,P005,road_surface_mark.csv
+11,R001,roadedge.csv
+12,R002,gutter.csv
+13,R003,curb.csv
+14,S001,guardrail.csv
diff --git a/autoware.ai/autoware_files/vector_map/cubetown_straight/lane.csv b/autoware.ai/autoware_files/vector_map/cubetown_straight/lane.csv
new file mode 100644
index 00000000..1bdc152d
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/cubetown_straight/lane.csv
@@ -0,0 +1,94 @@
+LnID,DID,BLID,FLID,BNID,FNID,JCT,BLID2,BLID3,BLID4,FLID2,FLID3,FLID4,CrossID,Span,LCnt,Lno,LaneType,LimitVel,RefVel,RoadSecID,LaneChgFG
+1001,1001,0,1002,1001,1002,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1002,1002,1001,1003,1002,1003,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1003,1003,1002,1004,1003,1004,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1004,1004,1003,1005,1004,1005,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1005,1005,1004,1006,1005,1006,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1006,1006,1005,1007,1006,1007,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1007,1007,1006,1008,1007,1008,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1008,1008,1007,1009,1008,1009,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1009,1009,1008,1010,1009,1010,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1010,1010,1009,1011,1010,1011,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1011,1011,1010,1012,1011,1012,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1012,1012,1011,1013,1012,1013,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1013,1013,1012,1014,1013,1014,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1014,1014,1013,1015,1014,1015,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1015,1015,1014,1016,1015,1016,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1016,1016,1015,1017,1016,1017,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1017,1017,1016,1018,1017,1018,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1018,1018,1017,1019,1018,1019,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1019,1019,1018,1020,1019,1020,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1020,1020,1019,1021,1020,1021,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1021,1021,1020,1022,1021,1022,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1022,1022,1021,1023,1022,1023,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1023,1023,1022,1024,1023,1024,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1024,1024,1023,1025,1024,1025,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1025,1025,1024,1026,1025,1026,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1026,1026,1025,1027,1026,1027,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1027,1027,1026,1028,1027,1028,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1028,1028,1027,1029,1028,1029,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1029,1029,1028,1030,1029,1030,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1030,1030,1029,1031,1030,1031,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1031,1031,1030,1032,1031,1032,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1032,1032,1031,1033,1032,1033,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1033,1033,1032,1034,1033,1034,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1034,1034,1033,1035,1034,1035,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1035,1035,1034,1036,1035,1036,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1036,1036,1035,1037,1036,1037,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1037,1037,1036,1038,1037,1038,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1038,1038,1037,1039,1038,1039,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1039,1039,1038,1040,1039,1040,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1040,1040,1039,1041,1040,1041,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1041,1041,1040,1042,1041,1042,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1042,1042,1041,1043,1042,1043,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1043,1043,1042,1044,1043,1044,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1044,1044,1043,1045,1044,1045,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1045,1045,1044,1046,1045,1046,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1046,1046,1045,1047,1046,1047,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1047,1047,1046,1048,1047,1048,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1048,1048,1047,1049,1048,1049,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1049,1049,1048,1050,1049,1050,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1050,1050,1049,1051,1050,1051,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1051,1051,1050,1052,1051,1052,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1052,1052,1051,1053,1052,1053,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1053,1053,1052,1054,1053,1054,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1054,1054,1053,1055,1054,1055,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1055,1055,1054,1056,1055,1056,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1056,1056,1055,1057,1056,1057,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1057,1057,1056,1058,1057,1058,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1058,1058,1057,1059,1058,1059,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1059,1059,1058,1060,1059,1060,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1060,1060,1059,1061,1060,1061,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1061,1061,1060,1062,1061,1062,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1062,1062,1061,1063,1062,1063,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1063,1063,1062,1064,1063,1064,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1064,1064,1063,1065,1064,1065,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1065,1065,1064,1066,1065,1066,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1066,1066,1065,1067,1066,1067,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1067,1067,1066,1068,1067,1068,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1068,1068,1067,1069,1068,1069,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1069,1069,1068,1070,1069,1070,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1070,1070,1069,1071,1070,1071,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1071,1071,1070,1072,1071,1072,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1072,1072,1071,1073,1072,1073,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1073,1073,1072,1074,1073,1074,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1074,1074,1073,1075,1074,1075,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1075,1075,1074,1076,1075,1076,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1076,1076,1075,1077,1076,1077,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1077,1077,1076,1078,1077,1078,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1078,1078,1077,1079,1078,1079,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1079,1079,1078,1080,1079,1080,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1080,1080,1079,1081,1080,1081,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1081,1081,1080,1082,1081,1082,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1082,1082,1081,1083,1082,1083,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1083,1083,1082,1084,1083,1084,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1084,1084,1083,1085,1084,1085,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1085,1085,1084,1086,1085,1086,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1086,1086,1085,1087,1086,1087,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1087,1087,1086,1088,1087,1088,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1088,1088,1087,1089,1088,1089,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1089,1089,1088,1090,1089,1090,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1090,1090,1089,1091,1090,1091,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1091,1091,1090,1092,1091,1092,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1092,1092,1091,1093,1092,1093,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
+1093,1093,1092,0,1093,1094,0,0,0,0,0,0,0,0,1.0,1,1,0,20,20,0,0,0
diff --git a/autoware.ai/autoware_files/vector_map/cubetown_straight/node.csv b/autoware.ai/autoware_files/vector_map/cubetown_straight/node.csv
new file mode 100644
index 00000000..f1dc62b1
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/cubetown_straight/node.csv
@@ -0,0 +1,95 @@
+NID,PID
+1001,1001
+1002,1002
+1003,1003
+1004,1004
+1005,1005
+1006,1006
+1007,1007
+1008,1008
+1009,1009
+1010,1010
+1011,1011
+1012,1012
+1013,1013
+1014,1014
+1015,1015
+1016,1016
+1017,1017
+1018,1018
+1019,1019
+1020,1020
+1021,1021
+1022,1022
+1023,1023
+1024,1024
+1025,1025
+1026,1026
+1027,1027
+1028,1028
+1029,1029
+1030,1030
+1031,1031
+1032,1032
+1033,1033
+1034,1034
+1035,1035
+1036,1036
+1037,1037
+1038,1038
+1039,1039
+1040,1040
+1041,1041
+1042,1042
+1043,1043
+1044,1044
+1045,1045
+1046,1046
+1047,1047
+1048,1048
+1049,1049
+1050,1050
+1051,1051
+1052,1052
+1053,1053
+1054,1054
+1055,1055
+1056,1056
+1057,1057
+1058,1058
+1059,1059
+1060,1060
+1061,1061
+1062,1062
+1063,1063
+1064,1064
+1065,1065
+1066,1066
+1067,1067
+1068,1068
+1069,1069
+1070,1070
+1071,1071
+1072,1072
+1073,1073
+1074,1074
+1075,1075
+1076,1076
+1077,1077
+1078,1078
+1079,1079
+1080,1080
+1081,1081
+1082,1082
+1083,1083
+1084,1084
+1085,1085
+1086,1086
+1087,1087
+1088,1088
+1089,1089
+1090,1090
+1091,1091
+1092,1092
+1093,1093
+1094,1094
diff --git a/autoware.ai/autoware_files/vector_map/cubetown_straight/point.csv b/autoware.ai/autoware_files/vector_map/cubetown_straight/point.csv
new file mode 100644
index 00000000..3c3ebb2f
--- /dev/null
+++ b/autoware.ai/autoware_files/vector_map/cubetown_straight/point.csv
@@ -0,0 +1,95 @@
+PID,B(Lat),L(Long),H,Bx,Ly,ReF,MCODE1,MCODE2,MCODE3
+1001,0,0,0.37,1.53,59.701,0,0,0,0
+1002,0,0,0.368,1.53,58.502,0,0,0,0
+1003,0,0,0.368,1.53,57.169,0,0,0,0
+1004,0,0,0.368,1.53,55.894,0,0,0,0
+1005,0,0,0.368,1.531,54.511,0,0,0,0
+1006,0,0,0.366,1.531,53.332,0,0,0,0
+1007,0,0,0.366,1.532,52.051,0,0,0,0
+1008,0,0,0.367,1.534,50.651,0,0,0,0
+1009,0,0,0.369,1.535,49.256,0,0,0,0
+1010,0,0,0.37,1.537,47.868,0,0,0,0
+1011,0,0,0.37,1.539,46.486,0,0,0,0
+1012,0,0,0.368,1.54,45.094,0,0,0,0
+1013,0,0,0.367,1.542,43.56,0,0,0,0
+1014,0,0,0.369,1.544,42.026,0,0,0,0
+1015,0,0,0.367,1.546,40.469,0,0,0,0
+1016,0,0,0.367,1.549,38.732,0,0,0,0
+1017,0,0,0.369,1.552,36.991,0,0,0,0
+1018,0,0,0.369,1.555,35.26,0,0,0,0
+1019,0,0,0.37,1.559,33.536,0,0,0,0
+1020,0,0,0.37,1.562,31.821,0,0,0,0
+1021,0,0,0.366,1.565,30.011,0,0,0,0
+1022,0,0,0.368,1.569,28.149,0,0,0,0
+1023,0,0,0.369,1.573,26.296,0,0,0,0
+1024,0,0,0.369,1.577,24.452,0,0,0,0
+1025,0,0,0.37,1.581,22.616,0,0,0,0
+1026,0,0,0.37,1.584,20.789,0,0,0,0
+1027,0,0,0.37,1.588,18.97,0,0,0,0
+1028,0,0,0.366,1.592,17.066,0,0,0,0
+1029,0,0,0.368,1.596,15.087,0,0,0,0
+1030,0,0,0.369,1.601,13.119,0,0,0,0
+1031,0,0,0.369,1.606,11.159,0,0,0,0
+1032,0,0,0.369,1.61,9.209,0,0,0,0
+1033,0,0,0.367,1.614,7.309,0,0,0,0
+1034,0,0,0.368,1.617,6.253,0,0,0,0
+1035,0,0,0.369,1.62,5.2,0,0,0,0
+1036,0,0,0.369,1.625,3.182,0,0,0,0
+1037,0,0,0.369,1.63,1.173,0,0,0,0
+1038,0,0,0.368,1.635,-0.846,0,0,0,0
+1039,0,0,0.366,1.637,-1.879,0,0,0,0
+1040,0,0,0.367,1.64,-2.998,0,0,0,0
+1041,0,0,0.368,1.643,-4.029,0,0,0,0
+1042,0,0,0.369,1.646,-5.143,0,0,0,0
+1043,0,0,0.369,1.649,-6.169,0,0,0,0
+1044,0,0,0.367,1.652,-7.304,0,0,0,0
+1045,0,0,0.366,1.655,-8.403,0,0,0,0
+1046,0,0,0.367,1.658,-9.502,0,0,0,0
+1047,0,0,0.368,1.662,-10.689,0,0,0,0
+1048,0,0,0.369,1.666,-11.874,0,0,0,0
+1049,0,0,0.369,1.669,-12.964,0,0,0,0
+1050,0,0,0.369,1.673,-14.143,0,0,0,0
+1051,0,0,0.366,1.677,-15.276,0,0,0,0
+1052,0,0,0.367,1.681,-16.522,0,0,0,0
+1053,0,0,0.368,1.684,-17.669,0,0,0,0
+1054,0,0,0.368,1.689,-18.909,0,0,0,0
+1055,0,0,0.369,1.693,-20.051,0,0,0,0
+1056,0,0,0.369,1.697,-21.284,0,0,0,0
+1057,0,0,0.369,1.701,-22.42,0,0,0,0
+1058,0,0,0.369,1.705,-23.648,0,0,0,0
+1059,0,0,0.369,1.709,-24.778,0,0,0,0
+1060,0,0,0.369,1.713,-26.0,0,0,0,0
+1061,0,0,0.369,1.717,-27.125,0,0,0,0
+1062,0,0,0.369,1.721,-28.341,0,0,0,0
+1063,0,0,0.369,1.725,-29.461,0,0,0,0
+1064,0,0,0.366,1.729,-30.728,0,0,0,0
+1065,0,0,0.366,1.733,-31.923,0,0,0,0
+1066,0,0,0.367,1.738,-33.215,0,0,0,0
+1067,0,0,0.368,1.742,-34.404,0,0,0,0
+1068,0,0,0.369,1.747,-35.689,0,0,0,0
+1069,0,0,0.369,1.752,-36.872,0,0,0,0
+1070,0,0,0.369,1.757,-38.151,0,0,0,0
+1071,0,0,0.369,1.761,-39.329,0,0,0,0
+1072,0,0,0.369,1.766,-40.602,0,0,0,0
+1073,0,0,0.369,1.77,-41.773,0,0,0,0
+1074,0,0,0.369,1.775,-43.04,0,0,0,0
+1075,0,0,0.369,1.779,-44.206,0,0,0,0
+1076,0,0,0.369,1.784,-45.466,0,0,0,0
+1077,0,0,0.369,1.788,-46.626,0,0,0,0
+1078,0,0,0.369,1.793,-47.88,0,0,0,0
+1079,0,0,0.369,1.797,-49.035,0,0,0,0
+1080,0,0,0.369,1.802,-50.283,0,0,0,0
+1081,0,0,0.369,1.806,-51.432,0,0,0,0
+1082,0,0,0.369,1.81,-52.673,0,0,0,0
+1083,0,0,0.369,1.815,-53.817,0,0,0,0
+1084,0,0,0.369,1.819,-55.053,0,0,0,0
+1085,0,0,0.369,1.823,-56.19,0,0,0,0
+1086,0,0,0.369,1.828,-57.42,0,0,0,0
+1087,0,0,0.369,1.832,-58.552,0,0,0,0
+1088,0,0,0.369,1.836,-59.776,0,0,0,0
+1089,0,0,0.369,1.84,-60.903,0,0,0,0
+1090,0,0,0.369,1.844,-62.12,0,0,0,0
+1091,0,0,0.369,1.848,-63.239,0,0,0,0
+1092,0,0,0.374,1.853,-64.36,0,0,0,0
+1093,0,0,0.344,1.859,-65.989,0,0,0,0
+1094,0,0,0.34,1.856,-66.6,0,0,0,0
diff --git a/autoware.ai/src/CMakeLists.txt b/autoware.ai/src/CMakeLists.txt
new file mode 120000
index 00000000..66dd650a
--- /dev/null
+++ b/autoware.ai/src/CMakeLists.txt
@@ -0,0 +1 @@
+/opt/ros/melodic/share/catkin/cmake/toplevel.cmake
\ No newline at end of file
diff --git a/autoware.ai/src/autoware/common/amathutils_lib/CMakeLists.txt b/autoware.ai/src/autoware/common/amathutils_lib/CMakeLists.txt
index 80160794..68333385 100644
--- a/autoware.ai/src/autoware/common/amathutils_lib/CMakeLists.txt
+++ b/autoware.ai/src/autoware/common/amathutils_lib/CMakeLists.txt
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 2.8.11)
project(amathutils_lib) # autoware math utility
-find_package(autoware_build_flags REQUIRED)
+
find_package(Eigen3 REQUIRED)
@@ -72,25 +72,4 @@ file(GLOB_RECURSE ROSLINT_FILES
)
list(APPEND ROSLINT_CPP_OPTS "--extensions=cc,h,hpp,cpp,cu,cuh" "--filter=-build/c++11,-runtime/references")
-roslint_cpp(${ROSLINT_FILES})
-
-if(CATKIN_ENABLE_TESTING)
- find_package(rostest REQUIRED)
- add_rostest_gtest(amathutils-test test/test_amathutils_lib.test test/src/test_amathutils_lib.cpp)
- target_link_libraries(amathutils-test ${catkin_LIBRARIES} amathutils_lib)
- add_rostest_gtest(test-kalman_filter
- test/test_kalman_filter.test
- test/src/test_kalman_filter.cpp
- src/kalman_filter.cpp
- src/time_delay_kalman_filter.cpp
- )
- target_link_libraries(test-kalman_filter ${catkin_LIBRARIES})
-
- add_rostest_gtest(test-butterworth_filter
- test/test_butterworth_filter.test
- test/src/test_butterworth_filter.cpp
- src/butterworth_filter.cpp
- )
- target_link_libraries(test-butterworth_filter ${catkin_LIBRARIES})
- roslint_add_test()
-endif()
+roslint_cpp(${ROSLINT_FILES})
\ No newline at end of file
diff --git a/autoware.ai/src/autoware/common/amathutils_lib/package.xml b/autoware.ai/src/autoware/common/amathutils_lib/package.xml
index 1266baba..ee6561fe 100644
--- a/autoware.ai/src/autoware/common/amathutils_lib/package.xml
+++ b/autoware.ai/src/autoware/common/amathutils_lib/package.xml
@@ -7,7 +7,6 @@
Yusuke FUJII
Apache 2
- autoware_build_flags
catkin
rostest
@@ -17,4 +16,5 @@
tf2
tf
eigen
+ tf2_geometry_msgs
diff --git a/autoware.ai/src/autoware/common/gnss/CMakeLists.txt b/autoware.ai/src/autoware/common/gnss/CMakeLists.txt
index 211eb56b..dd3c2e79 100644
--- a/autoware.ai/src/autoware/common/gnss/CMakeLists.txt
+++ b/autoware.ai/src/autoware/common/gnss/CMakeLists.txt
@@ -46,18 +46,4 @@ install(TARGETS gnss
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
-)
-
-if(CATKIN_ENABLE_TESTING)
- roslint_add_test()
-
- find_package(rostest REQUIRED)
- find_package(rosunit REQUIRED)
-
- add_rostest_gtest(test_gnss
- test/test_gnss.test test/test_gnss.cpp
- src/geo_pos_conv.cpp
- )
- target_link_libraries(test_gnss ${catkin_LIBRARIES})
- add_dependencies(test_gnss ${catkin_EXPORTED_TARGETS})
-endif()
+)
\ No newline at end of file
diff --git a/autoware.ai/src/autoware/common/libvectormap/CMakeLists.txt b/autoware.ai/src/autoware/common/libvectormap/CMakeLists.txt
index f2bfe773..aaf3d808 100644
--- a/autoware.ai/src/autoware/common/libvectormap/CMakeLists.txt
+++ b/autoware.ai/src/autoware/common/libvectormap/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.12)
project(libvectormap)
-find_package(autoware_build_flags REQUIRED)
+
find_package(catkin REQUIRED COMPONENTS
roslint
@@ -68,8 +68,4 @@ install(DIRECTORY include/${PROJECT_NAME}/
)
set(ROSLINT_CPP_OPTS "--filter=-build/c++14,-runtime/references")
-roslint_cpp()
-
-if(CATKIN_ENABLE_TESTING)
- roslint_add_test()
-endif()
+roslint_cpp()
\ No newline at end of file
diff --git a/autoware.ai/src/autoware/common/libvectormap/package.xml b/autoware.ai/src/autoware/common/libvectormap/package.xml
index b4a1d9fc..4f5546f8 100644
--- a/autoware.ai/src/autoware/common/libvectormap/package.xml
+++ b/autoware.ai/src/autoware/common/libvectormap/package.xml
@@ -6,7 +6,6 @@
sujiwo
Apache 2
- autoware_build_flags
catkin
cmake_modules
diff --git a/autoware.ai/src/autoware/common/libwaypoint_follower/CMakeLists.txt b/autoware.ai/src/autoware/common/libwaypoint_follower/CMakeLists.txt
index 89a6c1c0..64a886c5 100644
--- a/autoware.ai/src/autoware/common/libwaypoint_follower/CMakeLists.txt
+++ b/autoware.ai/src/autoware/common/libwaypoint_follower/CMakeLists.txt
@@ -1,8 +1,6 @@
cmake_minimum_required(VERSION 2.8.3)
project(libwaypoint_follower)
-find_package(autoware_build_flags)
-
find_package(catkin REQUIRED COMPONENTS
amathutils_lib
autoware_msgs
@@ -68,27 +66,3 @@ file(GLOB_RECURSE ROSLINT_FILES
list(APPEND ROSLINT_CPP_OPTS "--extensions=cc,h,hpp,cpp,cu,cuh" "--filter=-build/c++11,-runtime/references")
roslint_cpp(${ROSLINT_FILES})
-
-if (CATKIN_ENABLE_TESTING)
- find_package(rostest REQUIRED)
- add_rostest_gtest(test-libwaypoint_follower
- test/test_libwaypoint_follower.test
- test/src/test_libwaypoint_follower.cpp
- src/libwaypoint_follower.cpp
- )
- add_dependencies(test-libwaypoint_follower ${catkin_EXPORTED_TARGETS})
- target_link_libraries(test-libwaypoint_follower
- ${catkin_LIBRARIES}
- )
- add_rostest_gtest(test-pure_pursuit
- test/test_pure_pursuit.test
- test/src/test_pure_pursuit.cpp
- src/libwaypoint_follower.cpp
- src/pure_pursuit.cpp
- )
- add_dependencies(test-pure_pursuit ${catkin_EXPORTED_TARGETS})
- target_link_libraries(test-pure_pursuit
- ${catkin_LIBRARIES}
- )
- roslint_add_test()
-endif ()
diff --git a/autoware.ai/src/autoware/common/libwaypoint_follower/package.xml b/autoware.ai/src/autoware/common/libwaypoint_follower/package.xml
index e826881f..eb866555 100644
--- a/autoware.ai/src/autoware/common/libwaypoint_follower/package.xml
+++ b/autoware.ai/src/autoware/common/libwaypoint_follower/package.xml
@@ -6,7 +6,6 @@
h_ohta
Apache 2
- autoware_build_flags
catkin
rostest
@@ -18,4 +17,5 @@
rosunit
std_msgs
eigen
+ tf2_eigen
diff --git a/autoware.ai/src/autoware/common/map_file/CMakeLists.txt b/autoware.ai/src/autoware/common/map_file/CMakeLists.txt
index 24e92529..4c1fdd8f 100644
--- a/autoware.ai/src/autoware/common/map_file/CMakeLists.txt
+++ b/autoware.ai/src/autoware/common/map_file/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
project(map_file)
-find_package(autoware_build_flags REQUIRED)
+
find_package(catkin REQUIRED COMPONENTS
autoware_msgs
diff --git a/autoware.ai/src/autoware/common/map_file/package.xml b/autoware.ai/src/autoware/common/map_file/package.xml
index 4907b03b..b7834b79 100644
--- a/autoware.ai/src/autoware/common/map_file/package.xml
+++ b/autoware.ai/src/autoware/common/map_file/package.xml
@@ -6,7 +6,6 @@
Masao KONDOH
Apache 2
- autoware_build_flags
catkin
autoware_msgs
@@ -21,6 +20,4 @@
tf
vector_map
visualization_msgs
- libboost-filesystem-dev
-
diff --git a/autoware.ai/src/autoware/common/object_map/launch/grid_map_filter.launch b/autoware.ai/src/autoware/common/object_map/launch/grid_map_filter.launch
index 9eb23ab3..a6d86fdf 100755
--- a/autoware.ai/src/autoware/common/object_map/launch/grid_map_filter.launch
+++ b/autoware.ai/src/autoware/common/object_map/launch/grid_map_filter.launch
@@ -10,7 +10,7 @@
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/autoware.ai/src/autoware/common/object_map/launch/laserscan2costmap.launch b/autoware.ai/src/autoware/common/object_map/launch/laserscan2costmap.launch
index ee0a8583..77d3b330 100644
--- a/autoware.ai/src/autoware/common/object_map/launch/laserscan2costmap.launch
+++ b/autoware.ai/src/autoware/common/object_map/launch/laserscan2costmap.launch
@@ -8,7 +8,7 @@
-
+
diff --git a/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid.launch b/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid.launch
index f8f6f8cf..8bd5c0c2 100755
--- a/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid.launch
+++ b/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid.launch
@@ -10,7 +10,7 @@
-
+
diff --git a/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_lanelet2.launch b/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_lanelet2.launch
index 6a99445d..f8cec208 100755
--- a/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_lanelet2.launch
+++ b/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_lanelet2.launch
@@ -10,7 +10,7 @@
-
+
diff --git a/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_option.launch b/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_option.launch
index eefa5062..6e9afb05 100644
--- a/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_option.launch
+++ b/autoware.ai/src/autoware/common/object_map/launch/wayarea2grid_option.launch
@@ -13,7 +13,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
diff --git a/autoware.ai/src/autoware/common/op_planner/CMakeLists.txt b/autoware.ai/src/autoware/common/op_planner/CMakeLists.txt
index 3f50b0ad..41f51317 100644
--- a/autoware.ai/src/autoware/common/op_planner/CMakeLists.txt
+++ b/autoware.ai/src/autoware/common/op_planner/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
project(op_planner)
-find_package(autoware_build_flags REQUIRED)
+
find_package(catkin REQUIRED COMPONENTS
cmake_modules
diff --git a/autoware.ai/src/autoware/common/op_planner/include/op_planner/DecisionMaker.h b/autoware.ai/src/autoware/common/op_planner/include/op_planner/DecisionMaker.h
index 9a7036d5..49562aec 100755
--- a/autoware.ai/src/autoware/common/op_planner/include/op_planner/DecisionMaker.h
+++ b/autoware.ai/src/autoware/common/op_planner/include/op_planner/DecisionMaker.h
@@ -53,6 +53,8 @@ class DecisionMaker
bool m_sprintSwitch;
double m_obstacleWaitingTimeinIntersection;
int m_remainObstacleWaitingTime;
+ int m_prevSafeTrajectory;
+ bool m_isTargetVelocityReady = false;
int m_prevTrafficLightID;
PlannerHNS::TrafficLightState m_prevTrafficLightSignal;
diff --git a/autoware.ai/src/autoware/common/op_planner/include/op_planner/RoadNetwork.h b/autoware.ai/src/autoware/common/op_planner/include/op_planner/RoadNetwork.h
index 323aeea3..efcf4967 100755
--- a/autoware.ai/src/autoware/common/op_planner/include/op_planner/RoadNetwork.h
+++ b/autoware.ai/src/autoware/common/op_planner/include/op_planner/RoadNetwork.h
@@ -4,241 +4,257 @@
/// \author Hatem Darweesh
/// \date May 19, 2016
-
#ifndef ROADNETWORK_H_
#define ROADNETWORK_H_
-#include
-#include
-#include
#include "op_utility/UtilityH.h"
+#include
#include
+#include
+#include
#define OPENPLANNER_ENABLE_LOGS
-namespace PlannerHNS
-{
-
-
-enum DIRECTION_TYPE { FORWARD_DIR, FORWARD_LEFT_DIR, FORWARD_RIGHT_DIR,
- BACKWARD_DIR, BACKWARD_LEFT_DIR, BACKWARD_RIGHT_DIR, STANDSTILL_DIR};
-
-enum OBSTACLE_TYPE {SIDEWALK, TREE, CAR, TRUCK, HOUSE, PEDESTRIAN, CYCLIST, GENERAL_OBSTACLE};
-
-enum DRIVABLE_TYPE {DIRT, TARMAC, PARKINGAREA, INDOOR, GENERAL_AREA};
-
-enum GLOBAL_STATE_TYPE {G_WAITING_STATE, G_PLANING_STATE, G_FORWARD_STATE, G_BRANCHING_STATE, G_FINISH_STATE};
-
-enum STATE_TYPE {INITIAL_STATE, WAITING_STATE, FORWARD_STATE, STOPPING_STATE, EMERGENCY_STATE,
- TRAFFIC_LIGHT_STOP_STATE,TRAFFIC_LIGHT_WAIT_STATE, STOP_SIGN_STOP_STATE, STOP_SIGN_WAIT_STATE,
- FOLLOW_STATE, LANE_CHANGE_STATE, OBSTACLE_AVOIDANCE_STATE, GOAL_STATE, FINISH_STATE, YIELDING_STATE,
- BRANCH_LEFT_STATE, BRANCH_RIGHT_STATE, PEDESTRIAN_STATE, INTERSECTION_STATE};
+namespace PlannerHNS {
+
+enum DIRECTION_TYPE { FORWARD_DIR, FORWARD_LEFT_DIR, FORWARD_RIGHT_DIR, BACKWARD_DIR, BACKWARD_LEFT_DIR, BACKWARD_RIGHT_DIR, STANDSTILL_DIR };
+
+enum OBSTACLE_TYPE { SIDEWALK, TREE, CAR, TRUCK, HOUSE, PEDESTRIAN, CYCLIST, GENERAL_OBSTACLE };
+
+enum DRIVABLE_TYPE { DIRT, TARMAC, PARKINGAREA, INDOOR, GENERAL_AREA };
+
+enum GLOBAL_STATE_TYPE { G_WAITING_STATE, G_PLANING_STATE, G_FORWARD_STATE, G_BRANCHING_STATE, G_FINISH_STATE };
+
+enum STATE_TYPE {
+ INITIAL_STATE,
+ WAITING_STATE,
+ FORWARD_STATE,
+ STOPPING_STATE,
+ EMERGENCY_STATE,
+ TRAFFIC_LIGHT_STOP_STATE,
+ TRAFFIC_LIGHT_WAIT_STATE,
+ STOP_SIGN_STOP_STATE,
+ STOP_SIGN_WAIT_STATE,
+ FOLLOW_STATE,
+ LANE_CHANGE_STATE,
+ OBSTACLE_AVOIDANCE_STATE,
+ GOAL_STATE,
+ FINISH_STATE,
+ YIELDING_STATE,
+ BRANCH_LEFT_STATE,
+ BRANCH_RIGHT_STATE,
+ PEDESTRIAN_STATE,
+ INTERSECTION_STATE
+};
-enum LIGHT_INDICATOR {INDICATOR_LEFT, INDICATOR_RIGHT, INDICATOR_BOTH , INDICATOR_NONE};
+enum LIGHT_INDICATOR { INDICATOR_LEFT, INDICATOR_RIGHT, INDICATOR_BOTH, INDICATOR_NONE };
-enum SHIFT_POS {SHIFT_POS_PP = 0x60, SHIFT_POS_RR = 0x40, SHIFT_POS_NN = 0x20,
- SHIFT_POS_DD = 0x10, SHIFT_POS_BB = 0xA0, SHIFT_POS_SS = 0x0f, SHIFT_POS_UU = 0xff };
+enum SHIFT_POS {
+ SHIFT_POS_PP = 0x60,
+ SHIFT_POS_RR = 0x40,
+ SHIFT_POS_NN = 0x20,
+ SHIFT_POS_DD = 0x10,
+ SHIFT_POS_BB = 0xA0,
+ SHIFT_POS_SS = 0x0f,
+ SHIFT_POS_UU = 0xff
+};
-enum ACTION_TYPE {FORWARD_ACTION, BACKWARD_ACTION, STOP_ACTION, LEFT_TURN_ACTION,
- RIGHT_TURN_ACTION, U_TURN_ACTION, SWERVE_ACTION, OVERTACK_ACTION, START_ACTION, SLOWDOWN_ACTION, CHANGE_DESTINATION, WAITING_ACTION, DESTINATION_REACHED, UNKOWN_ACTION};
+enum ACTION_TYPE {
+ FORWARD_ACTION,
+ BACKWARD_ACTION,
+ STOP_ACTION,
+ LEFT_TURN_ACTION,
+ RIGHT_TURN_ACTION,
+ U_TURN_ACTION,
+ SWERVE_ACTION,
+ OVERTACK_ACTION,
+ START_ACTION,
+ SLOWDOWN_ACTION,
+ CHANGE_DESTINATION,
+ WAITING_ACTION,
+ DESTINATION_REACHED,
+ UNKOWN_ACTION
+};
-enum BEH_STATE_TYPE {BEH_FORWARD_STATE=0,BEH_STOPPING_STATE=1, BEH_BRANCH_LEFT_STATE=2, BEH_BRANCH_RIGHT_STATE=3, BEH_YIELDING_STATE=4, BEH_ACCELERATING_STATE=5, BEH_SLOWDOWN_STATE=6};
+enum BEH_STATE_TYPE {
+ BEH_FORWARD_STATE = 0,
+ BEH_STOPPING_STATE = 1,
+ BEH_BRANCH_LEFT_STATE = 2,
+ BEH_BRANCH_RIGHT_STATE = 3,
+ BEH_YIELDING_STATE = 4,
+ BEH_ACCELERATING_STATE = 5,
+ BEH_SLOWDOWN_STATE = 6
+};
-enum SEGMENT_TYPE {NORMAL_ROAD_SEG, INTERSECTION_ROAD_SEG, UTURN_ROAD_SEG, EXIT_ROAD_SEG, MERGE_ROAD_SEG, HIGHWAY_ROAD_SEG};
-enum RoadSegmentType {NORMAL_ROAD, INTERSECTION_ROAD, UTURN_ROAD, EXIT_ROAD, MERGE_ROAD, HIGHWAY_ROAD};
+enum SEGMENT_TYPE { NORMAL_ROAD_SEG, INTERSECTION_ROAD_SEG, UTURN_ROAD_SEG, EXIT_ROAD_SEG, MERGE_ROAD_SEG, HIGHWAY_ROAD_SEG };
+enum RoadSegmentType { NORMAL_ROAD, INTERSECTION_ROAD, UTURN_ROAD, EXIT_ROAD, MERGE_ROAD, HIGHWAY_ROAD };
-enum MARKING_TYPE {UNKNOWN_MARK, TEXT_MARK, AF_MARK, AL_MARK, AR_MARK, AFL_MARK, AFR_MARK, ALR_MARK, UTURN_MARK, NOUTURN_MARK};
+enum MARKING_TYPE { UNKNOWN_MARK, TEXT_MARK, AF_MARK, AL_MARK, AR_MARK, AFL_MARK, AFR_MARK, ALR_MARK, UTURN_MARK, NOUTURN_MARK };
-enum TrafficSignTypes {UNKNOWN_SIGN, STOP_SIGN, MAX_SPEED_SIGN, MIN_SPEED_SIGN};
+enum TrafficSignTypes { UNKNOWN_SIGN, STOP_SIGN, MAX_SPEED_SIGN, MIN_SPEED_SIGN };
class Lane;
class TrafficLight;
class RoadSegment;
-class ObjTimeStamp
-{
-public:
- timespec tStamp;
-
- ObjTimeStamp()
- {
- tStamp.tv_nsec = 0;
- tStamp.tv_sec = 0;
- }
+class ObjTimeStamp {
+ public:
+ timespec tStamp;
+
+ ObjTimeStamp() {
+ tStamp.tv_nsec = 0;
+ tStamp.tv_sec = 0;
+ }
};
-//class POINT2D
+// class POINT2D
//{
-//public:
-// double x;
-// double y;
-// double z;
-// POINT2D()
-// {
-// x=0;y=0;z=0;
-// }
-// POINT2D(double px, double py, double pz = 0)
-// {
-// x = px;
-// y = py;
-// z = pz;
-// }
-//};
-
-class GPSPoint
-{
-public:
- double lat, x;
- double lon, y;
- double alt, z;
- double dir, a;
-
- GPSPoint()
- {
- lat = x = 0;
- lon = y = 0;
- alt = z = 0;
- dir = a = 0;
- }
-
- GPSPoint(const double& x, const double& y, const double& z, const double& a)
- {
- this->x = x;
- this->y = y;
- this->z = z;
- this->a = a;
-
- lat = 0;
- lon = 0;
- alt = 0;
- dir = 0;
- }
-
- std::string ToString()
- {
- std::stringstream str;
- str.precision(12);
- str << "X:" << x << ", Y:" << y << ", Z:" << z << ", A:" << a << std::endl;
- str << "Lon:" << lon << ", Lat:" << lat << ", Alt:" << alt << ", Dir:" << dir << std::endl;
- return str.str();
- }
+// public:
+// double x;
+// double y;
+// double z;
+// POINT2D()
+// {
+// x=0;y=0;z=0;
+// }
+// POINT2D(double px, double py, double pz = 0)
+// {
+// x = px;
+// y = py;
+// z = pz;
+// }
+// };
+
+class GPSPoint {
+ public:
+ double lat, x;
+ double lon, y;
+ double alt, z;
+ double dir, a;
+
+ GPSPoint() {
+ lat = x = 0;
+ lon = y = 0;
+ alt = z = 0;
+ dir = a = 0;
+ }
+
+ GPSPoint(const double &x, const double &y, const double &z, const double &a) {
+ this->x = x;
+ this->y = y;
+ this->z = z;
+ this->a = a;
+
+ lat = 0;
+ lon = 0;
+ alt = 0;
+ dir = 0;
+ }
+
+ std::string ToString() {
+ std::stringstream str;
+ str.precision(12);
+ str << "X:" << x << ", Y:" << y << ", Z:" << z << ", A:" << a << std::endl;
+ str << "Lon:" << lon << ", Lat:" << lat << ", Alt:" << alt << ", Dir:" << dir << std::endl;
+ return str.str();
+ }
};
class RECTANGLE
{
-public:
- GPSPoint bottom_left;
- GPSPoint top_right;
- double width;
- double length;
- bool bObstacle;
-
-
- inline bool PointInRect(GPSPoint p)
- {
- return p.x >= bottom_left.x && p.x <= top_right.x && p.y >= bottom_left.y && p.y <= top_right.y;
- }
-
- inline bool PointInsideRect(GPSPoint p)
- {
- return p.x > bottom_left.x && p.x < top_right.x && p.y > bottom_left.y && p.y < top_right.y;
- }
-
- inline bool HitTest(GPSPoint p)
- {
- return PointInRect(p) && bObstacle;
- }
-
- RECTANGLE()
- {
- width=0;
- length = 0;
- bObstacle = true;
- }
-
- virtual ~RECTANGLE(){}
+ public:
+ GPSPoint bottom_left;
+ GPSPoint top_right;
+ double width;
+ double length;
+ bool bObstacle;
+
+ inline bool PointInRect(GPSPoint p) { return p.x >= bottom_left.x && p.x <= top_right.x && p.y >= bottom_left.y && p.y <= top_right.y; }
+
+ inline bool PointInsideRect(GPSPoint p) { return p.x > bottom_left.x && p.x < top_right.x && p.y > bottom_left.y && p.y < top_right.y; }
+
+ inline bool HitTest(GPSPoint p) { return PointInRect(p) && bObstacle; }
+
+ RECTANGLE() {
+ width = 0;
+ length = 0;
+ bObstacle = true;
+ }
+
+ virtual ~RECTANGLE() {}
};
-class PolygonShape
-{
-public:
- std::vector points;
-
- inline int PointInsidePolygon(const PolygonShape& polygon,const GPSPoint& p)
- {
- int counter = 0;
- int i;
- double xinters;
- GPSPoint p1,p2;
- int N = polygon.points.size();
- if(N <=0 ) return -1;
-
- p1 = polygon.points.at(0);
- for (i=1;i<=N;i++)
- {
- p2 = polygon.points.at(i % N);
-
- if (p.y > MIN(p1.y,p2.y))
- {
- if (p.y <= MAX(p1.y,p2.y))
- {
- if (p.x <= MAX(p1.x,p2.x))
- {
- if (p1.y != p2.y)
- {
- xinters = (p.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;
- if (p1.x == p2.x || p.x <= xinters)
- counter++;
- }
+class PolygonShape {
+ public:
+ std::vector points;
+
+ inline int PointInsidePolygon(const PolygonShape &polygon, const GPSPoint &p) {
+ int counter = 0;
+ int i;
+ double xinters;
+ GPSPoint p1, p2;
+ int N = polygon.points.size();
+ if (N <= 0)
+ return -1;
+
+ p1 = polygon.points.at(0);
+ for (i = 1; i <= N; i++) {
+ p2 = polygon.points.at(i % N);
+
+ if (p.y > MIN(p1.y, p2.y)) {
+ if (p.y <= MAX(p1.y, p2.y)) {
+ if (p.x <= MAX(p1.x, p2.x)) {
+ if (p1.y != p2.y) {
+ xinters = (p.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
+ if (p1.x == p2.x || p.x <= xinters)
+ counter++;
+ }
+ }
+ }
}
- }
+ p1 = p2;
}
- p1 = p2;
- }
-
- if (counter % 2 == 0)
- return 0;
- else
- return 1;
- }
+
+ if (counter % 2 == 0)
+ return 0;
+ else
+ return 1;
+ }
};
-class MapItem
-{
-public:
- int id;
- GPSPoint sp; //start point
- GPSPoint ep; // end point
- GPSPoint center;
- double c; //curvature
- double w; //width
- double l; //length
- std::string fileName; //
- std::vector polygon;
-
-
- MapItem(int ID, GPSPoint start, GPSPoint end, double curvature, double width, double length, std::string objName)
- {
- id = ID;
- sp = start;
- ep = end;
- c = curvature;
- w = width;
- l = length;
- fileName = objName;
-
- }
-
- MapItem()
- {
- id = 0; c = 0; w = 0; l = 0;
- }
-
- virtual ~MapItem(){}
-
- MapItem(const MapItem & cmi)
- {
+class MapItem {
+ public:
+ int id;
+ GPSPoint sp; // start point
+ GPSPoint ep; // end point
+ GPSPoint center;
+ double c; // curvature
+ double w; // width
+ double l; // length
+ std::string fileName; //
+ std::vector polygon;
+
+ MapItem(int ID, GPSPoint start, GPSPoint end, double curvature, double width, double length, std::string objName) {
+ id = ID;
+ sp = start;
+ ep = end;
+ c = curvature;
+ w = width;
+ l = length;
+ fileName = objName;
+ }
+
+ MapItem() {
+ id = 0;
+ c = 0;
+ w = 0;
+ l = 0;
+ }
+
+ virtual ~MapItem() {}
+
+ MapItem(const MapItem &cmi) {
id = cmi.id;
sp = cmi.sp;
ep = cmi.ep;
@@ -246,1160 +262,1053 @@ class MapItem
w = cmi.w;
l = cmi.l;
fileName = cmi.fileName;
- }
- MapItem &operator=(const MapItem &cmi)
- {
- this->id = cmi.id;
- this->sp = cmi.sp;
- this->ep = cmi.ep;
- this->c = cmi.c;
- this->w = cmi.w;
- this->l = cmi.l;
- this->fileName = cmi.fileName;
- return *this;
- }
-
- virtual int operator==(const MapItem &mi) const
- {
- return this->id == mi.id;
}
+ MapItem &operator=(const MapItem &cmi) {
+ this->id = cmi.id;
+ this->sp = cmi.sp;
+ this->ep = cmi.ep;
+ this->c = cmi.c;
+ this->w = cmi.w;
+ this->l = cmi.l;
+ this->fileName = cmi.fileName;
+ return *this;
+ }
+
+ virtual int operator==(const MapItem &mi) const { return this->id == mi.id; }
};
-class Obstacle : public MapItem
-{
+class Obstacle : public MapItem {
public:
OBSTACLE_TYPE t;
- Obstacle(int ID, GPSPoint start, GPSPoint end, double curvature, double width, double length,OBSTACLE_TYPE type, std::string fileName ) : MapItem(ID, start, end, curvature, width, length, fileName)
- {
- t = type;
- }
- virtual ~Obstacle()
- {
+ Obstacle(int ID, GPSPoint start, GPSPoint end, double curvature, double width, double length, OBSTACLE_TYPE type, std::string fileName)
+ : MapItem(ID, start, end, curvature, width, length, fileName) {
+ t = type;
+ }
+ virtual ~Obstacle() {}
+
+ Obstacle() : MapItem() { t = SIDEWALK; }
+
+ Obstacle(const Obstacle &ob) : MapItem(ob) { t = ob.t; }
+
+ Obstacle &operator=(const Obstacle &ob) {
+ this->id = ob.id;
+ this->sp = ob.sp;
+ this->ep = ob.ep;
+ this->c = ob.c;
+ this->w = ob.w;
+ this->l = ob.l;
+ this->t = ob.t;
+ this->fileName = ob.fileName;
+ return *this;
}
- Obstacle() : MapItem()
- {
- t = SIDEWALK;
- }
-
- Obstacle(const Obstacle& ob) : MapItem(ob)
- {
- t = ob.t;
- }
-
- Obstacle& operator=(const Obstacle& ob)
- {
- this->id = ob.id;
- this->sp = ob.sp;
- this->ep = ob.ep;
- this->c = ob.c;
- this->w = ob.w;
- this->l = ob.l;
- this->t = ob.t;
- this->fileName = ob.fileName;
- return *this;
- }
-
- virtual int operator==(const Obstacle &ob) const
- {
- return this->id == ob.id && this->t == ob.t;
- }
+ virtual int operator==(const Obstacle &ob) const { return this->id == ob.id && this->t == ob.t; }
};
-class DrivableArea : public MapItem
-{
-public:
- DRIVABLE_TYPE t; // drivable area type
-
- DrivableArea(int ID, GPSPoint start, GPSPoint end, double curvature, double width, double length,DRIVABLE_TYPE type, std::string fileName ) : MapItem( ID, start, end, curvature, width, length, fileName)
- {
- t = type;
- }
+class DrivableArea : public MapItem {
+ public:
+ DRIVABLE_TYPE t; // drivable area type
- virtual ~DrivableArea()
- {
+ DrivableArea(int ID, GPSPoint start, GPSPoint end, double curvature, double width, double length, DRIVABLE_TYPE type, std::string fileName)
+ : MapItem(ID, start, end, curvature, width, length, fileName) {
+ t = type;
+ }
- }
+ virtual ~DrivableArea() {}
- DrivableArea() : MapItem()
- {
- t = PARKINGAREA;
- }
+ DrivableArea() : MapItem() { t = PARKINGAREA; }
- DrivableArea(const DrivableArea& da) : MapItem(da)
- {
- t = da.t;
- }
-
- DrivableArea& operator=(const DrivableArea& da)
- {
- this->id = da.id;
- this->sp = da.sp;
- this->ep = da.ep;
- this->c = da.c;
- this->w = da.w;
- this->l = da.l;
- this->t = da.t;
- this->fileName = da.fileName;
- return *this;
- }
-
- virtual int operator==(const DrivableArea &da) const
- {
- return this->id == da.id && this->t == da.t;
- }
+ DrivableArea(const DrivableArea &da) : MapItem(da) { t = da.t; }
-};
+ DrivableArea &operator=(const DrivableArea &da) {
+ this->id = da.id;
+ this->sp = da.sp;
+ this->ep = da.ep;
+ this->c = da.c;
+ this->w = da.w;
+ this->l = da.l;
+ this->t = da.t;
+ this->fileName = da.fileName;
+ return *this;
+ }
-class Rotation
-{
-public:
- double x;
- double y;
- double z;
- double w;
-
- Rotation()
- {
- x = 0;
- y = 0;
- z = 0;
- w = 0;
- }
+ virtual int operator==(const DrivableArea &da) const { return this->id == da.id && this->t == da.t; }
};
-class WayPoint
-{
-public:
- GPSPoint pos;
- Rotation rot;
- double v;
- double cost;
- double timeCost;
- double totalReward;
- double collisionCost;
- double laneChangeCost;
- int laneId;
- int id;
- int LeftPointId;
- int RightPointId;
- int LeftLnId;
- int RightLnId;
- int stopLineID;
- DIRECTION_TYPE bDir;
- STATE_TYPE state;
- BEH_STATE_TYPE beh_state;
- int iOriginalIndex;
-
- Lane* pLane;
- WayPoint* pLeft;
- WayPoint* pRight;
- std::vector toIds;
- std::vector fromIds;
- std::vector pFronts;
- std::vector pBacks;
- std::vector > actionCost;
-
- int originalMapID;
- int gid;
-
- WayPoint()
- {
- id = 0;
- v = 0;
- cost = 0;
- laneId = -1;
- pLane = 0;
- pLeft = 0;
- pRight = 0;
- bDir = FORWARD_DIR;
- LeftPointId = 0;
- RightPointId = 0;
- LeftLnId = 0;
- RightLnId = 0;
- timeCost = 0;
- totalReward = 0;
- collisionCost = 0;
- laneChangeCost = 0;
- stopLineID = -1;
- state = INITIAL_STATE;
- beh_state = BEH_STOPPING_STATE;
- iOriginalIndex = 0;
-
- gid = 0;
- originalMapID = -1;
- }
-
- WayPoint(const double& x, const double& y, const double& z, const double& a)
- {
- pos.x = x;
- pos.y = y;
- pos.z = z;
- pos.a = a;
-
- id = 0;
- v = 0;
- cost = 0;
- laneId = -1;
- pLane = 0;
- pLeft = 0;
- pRight = 0;
- bDir = FORWARD_DIR;
- LeftPointId = 0;
- RightPointId = 0;
- LeftLnId = 0;
- RightLnId = 0;
- timeCost = 0;
- totalReward = 0;
- collisionCost = 0;
- laneChangeCost = 0;
- stopLineID = -1;
- iOriginalIndex = 0;
- state = INITIAL_STATE;
- beh_state = BEH_STOPPING_STATE;
-
- gid = 0;
- originalMapID = -1;
- }
+class Rotation {
+ public:
+ double x;
+ double y;
+ double z;
+ double w;
+
+ Rotation() {
+ x = 0;
+ y = 0;
+ z = 0;
+ w = 0;
+ }
};
-class RelativeInfo
-{
-public:
- double perp_distance;
- double to_front_distance; //negative
- double from_back_distance;
- int iFront;
- int iBack;
- int iGlobalPath;
- WayPoint perp_point;
- double angle_diff; // degrees
- bool bBefore;
- bool bAfter;
- double after_angle;
-
- RelativeInfo()
- {
- after_angle = 0;
- bBefore = false;
- bAfter = false;
- perp_distance = 0;
- to_front_distance = 0;
- from_back_distance = 0;
- iFront = 0;
- iBack = 0;
- iGlobalPath = 0;
- angle_diff = 0;
- }
-};
+class WayPoint {
+ public:
+ GPSPoint pos;
+ Rotation rot;
+ double v;
+ double cost;
+ double timeCost;
+ double totalReward;
+ double collisionCost;
+ double laneChangeCost;
+ int laneId;
+ int id;
+ int LeftPointId;
+ int RightPointId;
+ int LeftLnId;
+ int RightLnId;
+ int stopLineID;
+ DIRECTION_TYPE bDir;
+ STATE_TYPE state;
+ BEH_STATE_TYPE beh_state;
+ int iOriginalIndex;
+
+ Lane *pLane;
+ WayPoint *pLeft;
+ WayPoint *pRight;
+ std::vector toIds;
+ std::vector fromIds;
+ std::vector pFronts;
+ std::vector pBacks;
+ std::vector> actionCost;
+
+ int originalMapID;
+ int gid;
+
+ WayPoint() {
+ id = 0;
+ v = 0;
+ cost = 0;
+ laneId = -1;
+ pLane = 0;
+ pLeft = 0;
+ pRight = 0;
+ bDir = FORWARD_DIR;
+ LeftPointId = 0;
+ RightPointId = 0;
+ LeftLnId = 0;
+ RightLnId = 0;
+ timeCost = 0;
+ totalReward = 0;
+ collisionCost = 0;
+ laneChangeCost = 0;
+ stopLineID = -1;
+ state = INITIAL_STATE;
+ beh_state = BEH_STOPPING_STATE;
+ iOriginalIndex = 0;
+
+ gid = 0;
+ originalMapID = -1;
+ }
-class Boundary //represent wayarea in vector map
-{
-public:
- int id;
- int roadId;
- std::vector points;
- RoadSegment* pSegment;
-
- Boundary()
- {
- id = 0;
- roadId =0;
- pSegment = nullptr;
- }
+ WayPoint(const double &x, const double &y, const double &z, const double &a) {
+ pos.x = x;
+ pos.y = y;
+ pos.z = z;
+ pos.a = a;
+
+ id = 0;
+ v = 0;
+ cost = 0;
+ laneId = -1;
+ pLane = 0;
+ pLeft = 0;
+ pRight = 0;
+ bDir = FORWARD_DIR;
+ LeftPointId = 0;
+ RightPointId = 0;
+ LeftLnId = 0;
+ RightLnId = 0;
+ timeCost = 0;
+ totalReward = 0;
+ collisionCost = 0;
+ laneChangeCost = 0;
+ stopLineID = -1;
+ iOriginalIndex = 0;
+ state = INITIAL_STATE;
+ beh_state = BEH_STOPPING_STATE;
+
+ gid = 0;
+ originalMapID = -1;
+ }
};
-class Curb
-{
-public:
- int id;
- int laneId;
- int roadId;
- std::vector points;
- Lane* pLane;
-
- Curb()
- {
- id = 0;
- laneId =0;
- roadId =0;
- pLane = 0;
- }
+class RelativeInfo {
+ public:
+ double perp_distance;
+ double to_front_distance; // negative
+ double from_back_distance;
+ int iFront;
+ int iBack;
+ int iGlobalPath;
+ WayPoint perp_point;
+ double angle_diff; // degrees
+ bool bBefore;
+ bool bAfter;
+ double after_angle;
+
+ RelativeInfo() {
+ after_angle = 0;
+ bBefore = false;
+ bAfter = false;
+ perp_distance = 0;
+ to_front_distance = 0;
+ from_back_distance = 0;
+ iFront = 0;
+ iBack = 0;
+ iGlobalPath = 0;
+ angle_diff = 0;
+ }
};
-class Crossing
+class Boundary // represent wayarea in vector map
{
-public:
- int id;
- int roadId;
- GPSPoint pos;
- PolygonShape intersection_area;
- std::vector risky_area;
- std::vector points;
- RoadSegment* pSegment;
-
- Crossing()
- {
- id = 0;
- roadId = 0;
- pSegment = nullptr;
- }
+ public:
+ int id;
+ int roadId;
+ std::vector points;
+ RoadSegment *pSegment;
+
+ Boundary() {
+ id = 0;
+ roadId = 0;
+ pSegment = nullptr;
+ }
};
-class StopLine
-{
-public:
- int id;
- int laneId;
- int roadId;
- int trafficLightID;
- int stopSignID;
- int length;
- std::vector points;
- Lane* pLane;
- int linkID;
-
- StopLine()
- {
- id = 0;
- laneId =0;
- roadId =0;
- pLane = 0;
- trafficLightID = -1;
- stopSignID = -1;
- linkID = 0;
- length = 0;
- }
+class Curb {
+ public:
+ int id;
+ int laneId;
+ int roadId;
+ std::vector points;
+ Lane *pLane;
+
+ Curb() {
+ id = 0;
+ laneId = 0;
+ roadId = 0;
+ pLane = 0;
+ }
};
-class WaitingLine
-{
-public:
- int id;
- int laneId;
- int roadId;
- std::vector points;
- Lane* pLane;
-
- WaitingLine()
- {
- id = 0;
- laneId =0;
- roadId =0;
- pLane = 0;
- }
+class Crossing {
+ public:
+ int id;
+ int roadId;
+ GPSPoint pos;
+ PolygonShape intersection_area;
+ std::vector risky_area;
+ std::vector points;
+ RoadSegment *pSegment;
+
+ Crossing() {
+ id = 0;
+ roadId = 0;
+ pSegment = nullptr;
+ }
};
-class TrafficSign
-{
-public:
- int id;
- int laneId;
- int roadId;
-
- GPSPoint pos;
- TrafficSignTypes signType;
- double value;
- double fromValue;
- double toValue;
- std::string strValue;
- timespec timeValue;
- timespec fromTimeValue;
- timespec toTimeValue;
-
- Lane* pLane;
-
- TrafficSign()
- {
- id = 0;
- laneId = 0;
- roadId = 0;
- signType = UNKNOWN_SIGN;
- value = 0;
- fromValue = 0;
- toValue = 0;
-// timeValue = 0;
-// fromTimeValue = 0;
-// toTimeValue = 0;
- pLane = 0;
- }
+class StopLine {
+ public:
+ int id;
+ int laneId;
+ int roadId;
+ int trafficLightID;
+ int stopSignID;
+ int length;
+ std::vector points;
+ Lane *pLane;
+ int linkID;
+
+ StopLine() {
+ id = 0;
+ laneId = 0;
+ roadId = 0;
+ pLane = 0;
+ trafficLightID = -1;
+ stopSignID = -1;
+ linkID = 0;
+ length = 0;
+ }
};
-enum TrafficLightState {UNKNOWN_LIGHT, RED_LIGHT, GREEN_LIGHT, YELLOW_LIGHT, LEFT_GREEN, FORWARD_GREEN, RIGHT_GREEN, FLASH_YELLOW, FLASH_RED};
-
-class TrafficLight
-{
-public:
- int id;
- GPSPoint pos;
- TrafficLightState lightState;
- double stoppingDistance;
- std::vector laneIds;
- std::vector pLanes;
- int linkID;
- double remainTime;
- std::vector routine;
-
- TrafficLight()
- {
- stoppingDistance = 2;
- id = 0;
- lightState = GREEN_LIGHT;
- linkID = 0;
- remainTime = 0;
- }
-
- bool CheckLane(const int& laneId)
- {
- for(unsigned int i=0; i < laneIds.size(); i++)
- {
- if(laneId == laneIds.at(i))
- return true;
+class WaitingLine {
+ public:
+ int id;
+ int laneId;
+ int roadId;
+ std::vector points;
+ Lane *pLane;
+
+ WaitingLine() {
+ id = 0;
+ laneId = 0;
+ roadId = 0;
+ pLane = 0;
}
- return false;
- }
};
-class Marking
-{
-public:
- int id;
- int laneId;
- int roadId;
- MARKING_TYPE mark_type;
- GPSPoint center;
- std::vector points;
- Lane* pLane;
-
- Marking()
- {
- id = 0;
- laneId = 0;
- roadId = 0;
- mark_type = UNKNOWN_MARK;
- pLane = nullptr;
- }
+class TrafficSign {
+ public:
+ int id;
+ int laneId;
+ int roadId;
+
+ GPSPoint pos;
+ TrafficSignTypes signType;
+ double value;
+ double fromValue;
+ double toValue;
+ std::string strValue;
+ timespec timeValue;
+ timespec fromTimeValue;
+ timespec toTimeValue;
+
+ Lane *pLane;
+
+ TrafficSign() {
+ id = 0;
+ laneId = 0;
+ roadId = 0;
+ signType = UNKNOWN_SIGN;
+ value = 0;
+ fromValue = 0;
+ toValue = 0;
+ // timeValue = 0;
+ // fromTimeValue = 0;
+ // toTimeValue = 0;
+ pLane = 0;
+ }
};
-class RoadSegment
-{
-public:
- int id;
-
- SEGMENT_TYPE roadType;
- Boundary boundary;
- Crossing start_crossing;
- Crossing finish_crossing;
- double avgWidth;
- std::vector fromIds;
- std::vector toIds;
- std::vector Lanes;
-
-
- std::vector fromLanes;
- std::vector toLanes;
-
- RoadSegment()
- {
- id = 0;
- avgWidth = 0;
- roadType = NORMAL_ROAD_SEG;
- }
+enum TrafficLightState { UNKNOWN_LIGHT, RED_LIGHT, GREEN_LIGHT, YELLOW_LIGHT, LEFT_GREEN, FORWARD_GREEN, RIGHT_GREEN, FLASH_YELLOW, FLASH_RED };
+class TrafficLight {
+ public:
+ int id;
+ GPSPoint pos;
+ TrafficLightState lightState;
+ double stoppingDistance;
+ std::vector laneIds;
+ std::vector pLanes;
+ int linkID;
+ double remainTime;
+ std::vector routine;
+
+ TrafficLight() {
+ stoppingDistance = 2;
+ id = 0;
+ lightState = GREEN_LIGHT;
+ linkID = 0;
+ remainTime = 0;
+ }
+ bool CheckLane(const int &laneId) {
+ for (unsigned int i = 0; i < laneIds.size(); i++) {
+ if (laneId == laneIds.at(i))
+ return true;
+ }
+ return false;
+ }
};
-enum LaneType{NORMAL_LANE, MERGE_LANE, EXIT_LANE, BUS_LANE, BUS_STOP_LANE, EMERGENCY_LANE};
-
-class Lane
-{
-public:
- int id;
- int roadId;
- int areaId;
- int fromAreaId;
- int toAreaId;
- std::vector fromIds;
- std::vector toIds;
- int num; //lane number in the road segment from left to right
- double speed;
- double length;
- double dir;
- LaneType type;
- double width;
- std::vector points;
- std::vector trafficlights;
- std::vector stopLines;
- WaitingLine waitingLine;
-
- std::vector fromLanes;
- std::vector toLanes;
- Lane* pLeftLane;
- Lane* pRightLane;
-
- RoadSegment * pRoad;
-
- Lane()
- {
- id = 0;
- num = 0;
- speed = 0;
- length = 0;
- dir = 0;
- type = NORMAL_LANE;
- width = 0;
- pLeftLane = 0;
- pRightLane = 0;
- pRoad = 0;
- roadId = 0;
- areaId = 0;
- fromAreaId = 0;
- toAreaId = 0;
- }
-
+class Marking {
+ public:
+ int id;
+ int laneId;
+ int roadId;
+ MARKING_TYPE mark_type;
+ GPSPoint center;
+ std::vector points;
+ Lane *pLane;
+
+ Marking() {
+ id = 0;
+ laneId = 0;
+ roadId = 0;
+ mark_type = UNKNOWN_MARK;
+ pLane = nullptr;
+ }
};
-class RoadNetwork
-{
-public:
- std::vector roadSegments;
- std::vector trafficLights;
- std::vector stopLines;
- std::vector curbs;
- std::vector boundaries;
- std::vector crossings;
- std::vector markings;
- std::vector signs;
+class RoadSegment {
+ public:
+ int id;
+
+ SEGMENT_TYPE roadType;
+ Boundary boundary;
+ Crossing start_crossing;
+ Crossing finish_crossing;
+ double avgWidth;
+ std::vector fromIds;
+ std::vector toIds;
+ std::vector Lanes;
+
+ std::vector fromLanes;
+ std::vector toLanes;
+
+ RoadSegment() {
+ id = 0;
+ avgWidth = 0;
+ roadType = NORMAL_ROAD_SEG;
+ }
};
-class VehicleState : public ObjTimeStamp
-{
-public:
- double speed;
- double steer;
- SHIFT_POS shift;
-
- VehicleState()
- {
- speed = 0;
- steer = 0;
- shift = SHIFT_POS_NN;
- }
+enum LaneType { NORMAL_LANE, MERGE_LANE, EXIT_LANE, BUS_LANE, BUS_STOP_LANE, EMERGENCY_LANE };
+class Lane {
+ public:
+ int id;
+ int roadId;
+ int areaId;
+ int fromAreaId;
+ int toAreaId;
+ std::vector fromIds;
+ std::vector toIds;
+ int num; // lane number in the road segment from left to right
+ double speed;
+ double length;
+ double dir;
+ LaneType type;
+ double width;
+ std::vector points;
+ std::vector trafficlights;
+ std::vector stopLines;
+ WaitingLine waitingLine;
+
+ std::vector fromLanes;
+ std::vector toLanes;
+ Lane *pLeftLane;
+ Lane *pRightLane;
+
+ RoadSegment *pRoad;
+
+ Lane() {
+ id = 0;
+ num = 0;
+ speed = 0;
+ length = 0;
+ dir = 0;
+ type = NORMAL_LANE;
+ width = 0;
+ pLeftLane = 0;
+ pRightLane = 0;
+ pRoad = 0;
+ roadId = 0;
+ areaId = 0;
+ fromAreaId = 0;
+ toAreaId = 0;
+ }
};
-class BehaviorState
-{
-public:
- STATE_TYPE state;
- double maxVelocity;
- double minVelocity;
- double stopDistance;
- double followVelocity;
- double followDistance;
- LIGHT_INDICATOR indicator;
- bool bNewPlan;
- int iTrajectory;
- int currTrajectory;
-
-
- BehaviorState()
- {
- state = INITIAL_STATE;
- maxVelocity = 0;
- minVelocity = 0;
- stopDistance = 0;
- followVelocity = 0;
- followDistance = 0;
- indicator = INDICATOR_NONE;
- bNewPlan = false;
- iTrajectory = -1;
- currTrajectory = -1;
- }
-
+class RoadNetwork {
+ public:
+ std::vector roadSegments;
+ std::vector trafficLights;
+ std::vector stopLines;
+ std::vector curbs;
+ std::vector boundaries;
+ std::vector crossings;
+ std::vector markings;
+ std::vector signs;
};
-class DetectedObject
-{
-public:
- std_msgs::Header header;
- int id;
- std::string label;
- OBSTACLE_TYPE t;
- WayPoint center;
- WayPoint predicted_center;
- WayPoint noisy_center;
- STATE_TYPE predicted_behavior;
- std::vector centers_list;
- std::vector contour;
- std::vector > predTrajectories;
- std::vector pClosestWaypoints;
- double w;
- double l;
- double h;
- double distance_to_center;
- double image_width;
- double image_height;
- double image_x;
- double image_y;
-
- double actual_speed;
- double actual_yaw;
-
- bool bDirection;
- bool bVelocity;
- int acceleration;
-
- int acceleration_desc;
- double acceleration_raw;
-
- LIGHT_INDICATOR indicator_state;
-
- int originalID;
- BEH_STATE_TYPE behavior_state;
-
- DetectedObject()
- {
- bDirection = false;
- bVelocity = false;
- acceleration = 0;
- acceleration_desc = 0;
- acceleration_raw = 0.0;
- id = 0;
- w = 0;
- l = 0;
- h = 0;
- t = GENERAL_OBSTACLE;
- distance_to_center = 0;
- predicted_behavior = INITIAL_STATE;
- actual_speed = 0;
- actual_yaw = 0;
-
- acceleration_desc = 0;
- acceleration_raw = 0.0;
- indicator_state = INDICATOR_NONE;
-
- originalID = -1;
- behavior_state = BEH_STOPPING_STATE;
- }
-
+class VehicleState : public ObjTimeStamp {
+ public:
+ double speed;
+ double steer;
+ SHIFT_POS shift;
+
+ VehicleState() {
+ speed = 0;
+ steer = 0;
+ shift = SHIFT_POS_NN;
+ }
};
-class PlanningParams
-{
-public:
- double maxSpeed;
- double minSpeed;
- double planningDistance;
- double microPlanDistance;
- double carTipMargin;
- double rollInMargin;
- double rollInSpeedFactor;
- double pathDensity;
- double rollOutDensity;
- int rollOutNumber;
- double horizonDistance;
- double minFollowingDistance; //should be bigger than Distance to follow
- double minDistanceToAvoid; // should be smaller than minFollowingDistance and larger than maxDistanceToAvoid
- double maxDistanceToAvoid; // should be smaller than minDistanceToAvoid
- double speedProfileFactor;
- double smoothingDataWeight;
- double smoothingSmoothWeight;
- double smoothingToleranceError;
-
- // Added by HJW for make traj eval parameter
- double weightPriority;
- double weightTransition;
- double weightLong;
- double weightLat;
- double LateralSkipDistance;
-
- // Added by HJW for traffic signal parameter
- double stopLineMargin;
- double stopLineDetectionDistance;
-
- // Added by HJW for handle intersection
- bool isInsideIntersection;
- int closestIntersectionID;
- double closestIntersectionDistance;
- int riskyAreaIdx;
- bool obstacleinRiskyArea;
-
- bool enableSlowDownOnCurve;
- double curveVelocityRatio;
-
- // Added by PHY
- bool pedestrianAppearence;
- bool turnLeft;
- bool turnRight;
-
- double stopSignStopTime;
-
- double additionalBrakingDistance;
- double verticalSafetyDistance;
- double horizontalSafetyDistancel;
-
- double giveUpDistance;
-
- int nReliableCount;
-
- bool enableLaneChange;
- bool enableSwerving;
- bool enableFollowing;
- bool enableHeadingSmoothing;
- bool enableTrafficLightBehavior;
- bool enableStopSignBehavior;
-
- bool enabTrajectoryVelocities;
- double minIndicationDistance;
-
- PlanningParams()
- {
- maxSpeed = 3;
- minSpeed = 0;
- planningDistance = 10000;
- microPlanDistance = 30;
- carTipMargin = 4.0;
- rollInMargin = 12.0;
- rollInSpeedFactor = 0.25;
- pathDensity = 0.25;
- rollOutDensity = 0.5;
- rollOutNumber = 4;
- horizonDistance = 120;
- minFollowingDistance = 35;
- minDistanceToAvoid = 15;
- maxDistanceToAvoid = 5;
- speedProfileFactor = 1.0;
- smoothingDataWeight = 0.47;
- smoothingSmoothWeight = 0.2;
- smoothingToleranceError = 0.05;
-
- double weightPriority = 1;
- double weightTransition = 1;
- double weightLong = 1.2;
- double weightLat = 1;
- double LateralSkipDistance = 5;
-
- stopSignStopTime = 2.0;
-
- additionalBrakingDistance = 10.0;
- verticalSafetyDistance = 0.0;
- horizontalSafetyDistancel = 0.0;
-
- giveUpDistance = -4;
- nReliableCount = 2;
-
- enableSlowDownOnCurve = false;
- curveVelocityRatio = 0.5;
-
- enableHeadingSmoothing = false;
- enableSwerving = false;
- enableFollowing = false;
- enableTrafficLightBehavior = false;
- enableLaneChange = false;
- enableStopSignBehavior = false;
- enabTrajectoryVelocities = false;
- minIndicationDistance = 15;
- pedestrianAppearence = false;
-
- turnRight = false;
- turnLeft = false;
-
- isInsideIntersection = false;
- closestIntersectionID = -1;
- riskyAreaIdx = -1;
- obstacleinRiskyArea = false;
- }
+class BehaviorState {
+ public:
+ STATE_TYPE state;
+ double maxVelocity;
+ double minVelocity;
+ double stopDistance;
+ double followVelocity;
+ double followDistance;
+ LIGHT_INDICATOR indicator;
+ bool bNewPlan;
+ int iTrajectory;
+ int currTrajectory;
+
+ BehaviorState() {
+ state = INITIAL_STATE;
+ maxVelocity = 0;
+ minVelocity = 0;
+ stopDistance = 0;
+ followVelocity = 0;
+ followDistance = 0;
+ indicator = INDICATOR_NONE;
+ bNewPlan = false;
+ iTrajectory = -1;
+ currTrajectory = -1;
+ }
};
-class HMIPreCalculatedConditions
-{
-public:
+class DetectedObject {
+ public:
+ std_msgs::Header header;
+ int id;
+ std::string label;
+ OBSTACLE_TYPE t;
+ WayPoint center;
+ WayPoint predicted_center;
+ WayPoint noisy_center;
+ STATE_TYPE predicted_behavior;
+ std::vector centers_list;
+ std::vector contour;
+ std::vector> predTrajectories;
+ std::vector pClosestWaypoints;
+ double w;
+ double l;
+ double h;
+ double distance_to_center;
+ double image_width;
+ double image_height;
+ double image_x;
+ double image_y;
+
+ double actual_speed;
+ double actual_yaw;
+
+ bool bDirection;
+ bool bVelocity;
+ int acceleration;
+
+ int acceleration_desc;
+ double acceleration_raw;
+
+ LIGHT_INDICATOR indicator_state;
+
+ int originalID;
+ BEH_STATE_TYPE behavior_state;
+
+ DetectedObject() {
+ bDirection = false;
+ bVelocity = false;
+ acceleration = 0;
+ acceleration_desc = 0;
+ acceleration_raw = 0.0;
+ id = 0;
+ w = 0;
+ l = 0;
+ h = 0;
+ t = GENERAL_OBSTACLE;
+ distance_to_center = 0;
+ predicted_behavior = INITIAL_STATE;
+ actual_speed = 0;
+ actual_yaw = 0;
+
+ acceleration_desc = 0;
+ acceleration_raw = 0.0;
+ indicator_state = INDICATOR_NONE;
+
+ originalID = -1;
+ behavior_state = BEH_STOPPING_STATE;
+ }
+};
- HMIPreCalculatedConditions()
- {
+class PlanningParams {
+ public:
+ double maxSpeed;
+ double minSpeed;
+ double planningDistance;
+ double microPlanDistance;
+ double carTipMargin;
+ double rollInMargin;
+ double rollInSpeedFactor;
+ double pathDensity;
+ double rollOutDensity;
+ int rollOutNumber;
+ int blockIdx;
+ double horizonDistance;
+ double minFollowingDistance; // should be bigger than Distance to follow
+ double minDistanceToAvoid; // should be smaller than minFollowingDistance and larger than maxDistanceToAvoid
+ double maxDistanceToAvoid; // should be smaller than minDistanceToAvoid
+ double speedProfileFactor;
+ double smoothingDataWeight;
+ double smoothingSmoothWeight;
+ double smoothingToleranceError;
+
+ // Added by HYP
+ int enableDebug;
+
+ // Added by HYP for blocking the trajectories
+ double lateralBlockingThreshold;
+ double frontLongitudinalBlockingThreshold;
+ double rearLongitudinalBlockingThreshold;
+
+ // Added by HJW and HYP for make traj eval parameter
+ double weightPriority;
+ double weightTransition;
+ double weightLong;
+ double weightLat;
+ double blockThreshold;
+ double LateralSkipDistance;
+
+ // Added by HJW for traffic signal parameter
+ double stopLineMargin;
+ double stopLineDetectionDistance;
+
+ // Added by HJW for handle intersection
+ bool isInsideIntersection;
+ int closestIntersectionID;
+ double closestIntersectionDistance;
+ int riskyAreaIdx;
+ bool obstacleinRiskyArea;
+
+ bool enableSlowDownOnCurve;
+ double curveVelocityRatio;
+
+ // Added by PHY
+ bool pedestrianAppearence;
+ bool turnLeft;
+ bool turnRight;
+
+ double stopSignStopTime;
+
+ double additionalBrakingDistance;
+ double verticalSafetyDistance;
+ double horizontalSafetyDistancel;
+
+ double giveUpDistance;
+
+ int nReliableCount;
+
+ bool enableLaneChange;
+ bool enableSwerving;
+ bool enableFollowing;
+ bool enableHeadingSmoothing;
+ bool enableTrafficLightBehavior;
+ bool enableStopSignBehavior;
+ bool enableStop;
+
+ bool enabTrajectoryVelocities;
+ double minIndicationDistance;
+
+ PlanningParams() {
+ maxSpeed = 3;
+ minSpeed = 0;
+ planningDistance = 10000;
+ microPlanDistance = 30;
+ carTipMargin = 4.0;
+ rollInMargin = 12.0;
+ rollInSpeedFactor = 0.25;
+ pathDensity = 0.25;
+ rollOutDensity = 0.5;
+ rollOutNumber = 4;
+ horizonDistance = 120;
+ minFollowingDistance = 35;
+ minDistanceToAvoid = 15;
+ maxDistanceToAvoid = 5;
+ speedProfileFactor = 1.0;
+ smoothingDataWeight = 0.47;
+ smoothingSmoothWeight = 0.2;
+ smoothingToleranceError = 0.05;
+
+ enableDebug = 0;
+
+ lateralBlockingThreshold = 1.5;
+ frontLongitudinalBlockingThreshold = 30.0;
+ rearLongitudinalBlockingThreshold = -5.0;
+
+ weightPriority = 1;
+ weightTransition = 1;
+ weightLong = 1.2;
+ weightLat = 1;
+ LateralSkipDistance = 5;
+
+ stopSignStopTime = 2.0;
+
+ additionalBrakingDistance = 10.0;
+ verticalSafetyDistance = 0.0;
+ horizontalSafetyDistancel = 0.0;
+
+ giveUpDistance = -4;
+ nReliableCount = 2;
+
+ enableSlowDownOnCurve = false;
+ curveVelocityRatio = 0.5;
+
+ enableHeadingSmoothing = false;
+ enableSwerving = false;
+ enableFollowing = false;
+ enableTrafficLightBehavior = false;
+ enableLaneChange = false;
+ enableStopSignBehavior = false;
+ enabTrajectoryVelocities = false;
+ minIndicationDistance = 15;
+ pedestrianAppearence = false;
+ enableStop = false;
+
+ turnRight = false;
+ turnLeft = false;
+
+ isInsideIntersection = false;
+ closestIntersectionID = -1;
+ riskyAreaIdx = -1;
+ obstacleinRiskyArea = false;
+ }
+};
- }
+class HMIPreCalculatedConditions {
+ public:
+ HMIPreCalculatedConditions() {}
};
-class PreCalculatedConditions
-{
-public:
- //-------------------------------------------//
- //Global Goals
- int currentGoalID;
- int prevGoalID;
- //-------------------------------------------//
- //Following
- double distanceToNext;
- double velocityOfNext;
- //-------------------------------------------//
- //For Lane Change
- int iPrevSafeLane;
- int iCurrSafeLane;
- double distanceToGoBack;
- double timeToGoBack;
- double distanceToChangeLane;
- double timeToChangeLane;
- int currentLaneID;
- int originalLaneID;
- int targetLaneID;
- bool bUpcomingLeft;
- bool bUpcomingRight;
- bool bCanChangeLane;
- bool bTargetLaneSafe;
- //-------------------------------------------//
- //Traffic Lights & Stop Sign
- int currentStopSignID;
- int prevStopSignID;
- int currentTrafficLightID;
- int prevTrafficLightID;
- bool bTrafficIsRed; //On , off status
- //-------------------------------------------//
- //Swerving
- int iPrevSafeTrajectory;
- int iCurrSafeTrajectory;
- int iCentralTrajectory;
- bool bFullyBlock;
- LIGHT_INDICATOR indicator;
-
- //-------------------------------------------//
- //General
- bool bNewGlobalPath;
- bool bRePlan;
- double currentVelocity;
- double minStoppingDistance; //comfortably
- int bOutsideControl; // 0 waiting, 1 start, 2 Green Traffic Light, 3 Red Traffic Light, 5 Emergency Stop
- bool bGreenOutsideControl;
- std::vector stoppingDistances;
-
-
- double distanceToStop()
- {
- if(stoppingDistances.size()==0) return 0;
- double minS = stoppingDistances.at(0);
- for(unsigned int i=0; i< stoppingDistances.size(); i++)
- {
- if(stoppingDistances.at(i) < minS)
- minS = stoppingDistances.at(i);
+class PreCalculatedConditions {
+ public:
+ //-------------------------------------------//
+ // Global Goals
+ int currentGoalID;
+ int prevGoalID;
+ //-------------------------------------------//
+ // Following
+ double distanceToNext;
+ double velocityOfNext;
+ //-------------------------------------------//
+ // For Lane Change
+ int iPrevSafeLane;
+ int iCurrSafeLane;
+ double distanceToGoBack;
+ double timeToGoBack;
+ double distanceToChangeLane;
+ double timeToChangeLane;
+ int currentLaneID;
+ int originalLaneID;
+ int targetLaneID;
+ bool bUpcomingLeft;
+ bool bUpcomingRight;
+ bool bCanChangeLane;
+ bool bTargetLaneSafe;
+ //-------------------------------------------//
+ // Traffic Lights & Stop Sign
+ int currentStopSignID;
+ int prevStopSignID;
+ int currentTrafficLightID;
+ int prevTrafficLightID;
+ bool bTrafficIsRed; // On , off status
+ //-------------------------------------------//
+ // Swerving
+ int iPrevSafeTrajectory;
+ int iCurrSafeTrajectory;
+ int iCentralTrajectory;
+ bool bFullyBlock;
+ LIGHT_INDICATOR indicator;
+
+ //-------------------------------------------//
+ // General
+ bool bNewGlobalPath;
+ bool bRePlan;
+ double currentVelocity;
+ double minStoppingDistance; // comfortably
+ int bOutsideControl; // 0 waiting, 1 start, 2 Green Traffic Light, 3 Red Traffic Light, 5 Emergency Stop
+ bool bGreenOutsideControl;
+ std::vector stoppingDistances;
+
+ double distanceToStop() {
+ if (stoppingDistances.size() == 0)
+ return 0;
+ double minS = stoppingDistances.at(0);
+ for (unsigned int i = 0; i < stoppingDistances.size(); i++) {
+ if (stoppingDistances.at(i) < minS)
+ minS = stoppingDistances.at(i);
+ }
+ return minS;
}
- return minS;
- }
-
- PreCalculatedConditions()
- {
- currentGoalID = 0;
- prevGoalID = -1;
- currentVelocity = 0;
- minStoppingDistance = 1;
- bOutsideControl = 0;
- bGreenOutsideControl = false;
- //distance to stop
- distanceToNext = -1;
- velocityOfNext = 0;
- currentStopSignID = -1;
- prevStopSignID = -1;
- currentTrafficLightID = -1;
- prevTrafficLightID = -1;
- bTrafficIsRed = false;
- iCurrSafeTrajectory = -1;
- bFullyBlock = false;
-
- iPrevSafeTrajectory = -1;
- iCentralTrajectory = -1;
- bRePlan = false;
- bNewGlobalPath = false;
-
- bCanChangeLane = false;
- distanceToGoBack = 0;
- timeToGoBack = 0;
- distanceToChangeLane = 0;
- timeToChangeLane = 0;
- bTargetLaneSafe = true;
- bUpcomingLeft = false;
- bUpcomingRight = false;
- targetLaneID = -1;
- currentLaneID = -1;
- originalLaneID = -1;
- iCurrSafeLane = -1;
- iPrevSafeLane = -1;
-
- indicator = INDICATOR_NONE;
- }
-
- virtual ~PreCalculatedConditions(){}
-
- std::string ToStringHeader()
- {
- return "Time:General>>:currentVelocity:distanceToStop:minStoppingDistance:bStartBehaviorGenerator:bGoalReached:"
- "Following>>:velocityOfNext:distanceToNext:"
- "TrafficLight>>:currentTrafficLightID:bTrafficIsRed:"
- "Swerving>>:iSafeTrajectory:bFullyBlock:";
- }
-
- std::string ToString(STATE_TYPE beh)
- {
- std::string str = "Unknown";
- switch(beh)
- {
- case PlannerHNS::INITIAL_STATE:
- str = "Init";
- break;
- case PlannerHNS::WAITING_STATE:
- str = "Waiting";
- break;
- case PlannerHNS::FORWARD_STATE:
- str = "Forward";
- break;
- case PlannerHNS::STOPPING_STATE:
- str = "Stop";
- break;
- case PlannerHNS::FINISH_STATE:
- str = "End";
- break;
- case PlannerHNS::FOLLOW_STATE:
- str = "Follow";
- break;
- case PlannerHNS::OBSTACLE_AVOIDANCE_STATE:
- str = "Swerving";
- break;
- case PlannerHNS::TRAFFIC_LIGHT_STOP_STATE:
- str = "Light Stop";
- break;
- case PlannerHNS::TRAFFIC_LIGHT_WAIT_STATE:
- str = "Light Wait";
- break;
- case PlannerHNS::STOP_SIGN_STOP_STATE:
- str = "Sign Stop";
- break;
- case PlannerHNS::STOP_SIGN_WAIT_STATE:
- str = "Sign Wait";
- break;
- default:
- str = "Unknown";
- break;
+
+ PreCalculatedConditions() {
+ currentGoalID = 0;
+ prevGoalID = -1;
+ currentVelocity = 0;
+ minStoppingDistance = 1;
+ bOutsideControl = 0;
+ bGreenOutsideControl = false;
+ // distance to stop
+ distanceToNext = -1;
+ velocityOfNext = 0;
+ currentStopSignID = -1;
+ prevStopSignID = -1;
+ currentTrafficLightID = -1;
+ prevTrafficLightID = -1;
+ bTrafficIsRed = false;
+ iCurrSafeTrajectory = -1;
+ bFullyBlock = false;
+
+ iPrevSafeTrajectory = -1;
+ iCentralTrajectory = -1;
+ bRePlan = false;
+ bNewGlobalPath = false;
+
+ bCanChangeLane = false;
+ distanceToGoBack = 0;
+ timeToGoBack = 0;
+ distanceToChangeLane = 0;
+ timeToChangeLane = 0;
+ bTargetLaneSafe = true;
+ bUpcomingLeft = false;
+ bUpcomingRight = false;
+ targetLaneID = -1;
+ currentLaneID = -1;
+ originalLaneID = -1;
+ iCurrSafeLane = -1;
+ iPrevSafeLane = -1;
+
+ indicator = INDICATOR_NONE;
}
- return str;
- }
-};
+ virtual ~PreCalculatedConditions() {}
-class TrajectoryCost
-{
-public:
- int index;
- int relative_index;
- double closest_obj_velocity;
- double distance_from_center;
- double priority_cost; //0 to 1
- double transition_cost; // 0 to 1
- double closest_obj_cost; // 0 to 1
- double cost;
- double closest_obj_distance;
-
- int lane_index;
- double lane_change_cost;
- double lateral_cost;
- double longitudinal_cost;
- bool bBlocked;
- std::vector > lateral_costs;
-
-
- TrajectoryCost()
- {
- lane_index = -1;
- index = -1;
- relative_index = -100;
- closest_obj_velocity = 0;
- priority_cost = 0;
- transition_cost = 0;
- closest_obj_cost = 0;
- distance_from_center = 0;
- cost = 0;
- closest_obj_distance = -1;
- lane_change_cost = 0;
- lateral_cost = 0;
- longitudinal_cost = 0;
- bBlocked = false;
- }
-
- std::string ToString()
- {
- std::ostringstream str;
- str.precision(4);
- str << "LI : " << lane_index;
- str << ", In : " << relative_index;
- str << ", Co : " << cost;
- str << ", Pr : " << priority_cost;
- str << ", Tr : " << transition_cost;
- str << ", La : " << lateral_cost;
- str << ", Lo : " << longitudinal_cost;
- str << ", Ln : " << lane_change_cost;
- str << ", Bl : " << bBlocked;
- str << "\n";
- for (unsigned int i=0; i>:currentVelocity:distanceToStop:minStoppingDistance:bStartBehaviorGenerator:bGoalReached:"
+ "Following>>:velocityOfNext:distanceToNext:"
+ "TrafficLight>>:currentTrafficLightID:bTrafficIsRed:"
+ "Swerving>>:iSafeTrajectory:bFullyBlock:";
}
- return str.str();
+ std::string ToString(STATE_TYPE beh) {
+ std::string str = "Unknown";
+ switch (beh) {
+ case PlannerHNS::INITIAL_STATE:
+ str = "Init";
+ break;
+ case PlannerHNS::WAITING_STATE:
+ str = "Waiting";
+ break;
+ case PlannerHNS::FORWARD_STATE:
+ str = "Forward";
+ break;
+ case PlannerHNS::STOPPING_STATE:
+ str = "Stop";
+ break;
+ case PlannerHNS::FINISH_STATE:
+ str = "End";
+ break;
+ case PlannerHNS::FOLLOW_STATE:
+ str = "Follow";
+ break;
+ case PlannerHNS::OBSTACLE_AVOIDANCE_STATE:
+ str = "Swerving";
+ break;
+ case PlannerHNS::TRAFFIC_LIGHT_STOP_STATE:
+ str = "Light Stop";
+ break;
+ case PlannerHNS::TRAFFIC_LIGHT_WAIT_STATE:
+ str = "Light Wait";
+ break;
+ case PlannerHNS::STOP_SIGN_STOP_STATE:
+ str = "Sign Stop";
+ break;
+ case PlannerHNS::STOP_SIGN_WAIT_STATE:
+ str = "Sign Wait";
+ break;
+ default:
+ str = "Unknown";
+ break;
+ }
- }
+ return str;
+ }
};
-class OccupancyToGridMap
-{
-public:
- int width;
- int length;
- double res;
- WayPoint center;
-
- OccupancyToGridMap(const int& _width, const int& _length, const double& _res, const WayPoint& _center)
- {
- width = _width;
- length = _length;
- res = _res;
- center = _center;
- }
-
- OccupancyToGridMap()
- {
- width = 0;
- length = 0;
- res = 0.0;
- }
-
- bool GetCellIndexFromPoint(const GPSPoint& p, const std::vector& data, int& _cell)
- {
- int col = floor(p.x / res);
- int row = floor(p.y / res);
-
- int index = -1;
- if(row >= 0 && row < length && col >=0 && col < width)
- {
- index = get2dIndex(row,col);
-
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- //printf("Cell Info: P(%f,%f) , D(%f,%f), G(%d,%d), index = %d \n", p.x, p.y, p.x-center.pos.x, p.y-center.pos.y, col, row , index);
- return true;
- }
+class TrajectoryCost {
+ public:
+ int index;
+ int relative_index;
+ double closest_obj_velocity;
+ double distance_from_center;
+ double priority_cost; // 0 to 1
+ double transition_cost; // 0 to 1
+ double closest_obj_cost; // 0 to 1
+ double cost;
+ double closest_obj_distance;
+
+ int lane_index;
+ double lane_change_cost;
+ double lateral_cost;
+ double longitudinal_cost;
+ bool bBlocked;
+ std::vector> lateral_costs;
+
+ TrajectoryCost() {
+ lane_index = -1;
+ index = -1;
+ relative_index = -100;
+ closest_obj_velocity = 0;
+ priority_cost = 0;
+ transition_cost = 0;
+ closest_obj_cost = 0;
+ distance_from_center = 0;
+ cost = 0;
+ closest_obj_distance = -1;
+ lane_change_cost = 0;
+ lateral_cost = 0;
+ longitudinal_cost = 0;
+ bBlocked = false;
}
- if(row+1 >= 0 && row+1 < length && col >=0 && col < width)
- {
- index = get2dIndex(row+1,col);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
- }
+ std::string ToString() {
+ std::ostringstream str;
+ str.precision(4);
+ str << "LI : " << lane_index;
+ str << ", In : " << relative_index;
+ str << ", Co : " << cost;
+ str << ", Pr : " << priority_cost;
+ str << ", Tr : " << transition_cost;
+ str << ", La : " << lateral_cost;
+ str << ", Lo : " << longitudinal_cost;
+ str << ", Ln : " << lane_change_cost;
+ str << ", Bl : " << bBlocked;
+ str << "\n";
+ for (unsigned int i = 0; i < lateral_costs.size(); i++) {
+ str << " - (" << lateral_costs.at(i).first << ", " << lateral_costs.at(i).second << ")";
+ }
- if(row >= 0 && row < length && col+1 >=0 && col+1 < width)
- {
- index = get2dIndex(row,col+1);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
+ return str.str();
}
+};
- if(row-1 >= 0 && row-1 < length && col >=0 && col < width)
- {
- index = get2dIndex(row-1,col);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
+class OccupancyToGridMap {
+ public:
+ int width;
+ int length;
+ double res;
+ WayPoint center;
+
+ OccupancyToGridMap(const int &_width, const int &_length, const double &_res, const WayPoint &_center) {
+ width = _width;
+ length = _length;
+ res = _res;
+ center = _center;
}
- if(row >= 0 && row < length && col-1 >=0 && col-1 < width)
- {
- index = get2dIndex(row,col-1);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
+ OccupancyToGridMap() {
+ width = 0;
+ length = 0;
+ res = 0.0;
}
- if(row+1 >= 0 && row+1 < length && col+1 >=0 && col+1 < width)
- {
- index = get2dIndex(row+1,col+1);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
- }
+ bool GetCellIndexFromPoint(const GPSPoint &p, const std::vector &data, int &_cell) {
+ int col = floor(p.x / res);
+ int row = floor(p.y / res);
- if(row-1 >= 0 && row-1 < length && col-1 >=0 && col-1 < width)
- {
- index = get2dIndex(row-1,col-1);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
- }
+ int index = -1;
+ if (row >= 0 && row < length && col >= 0 && col < width) {
+ index = get2dIndex(row, col);
- if(row-1 >= 0 && row-1 < length && col+1 >=0 && col+1 < width)
- {
- index = get2dIndex(row-1,col+1);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
- }
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ // printf("Cell Info: P(%f,%f) , D(%f,%f), G(%d,%d), index = %d \n", p.x, p.y, p.x-center.pos.x, p.y-center.pos.y, col, row , index);
+ return true;
+ }
+ }
- if(row+1 >= 0 && row+1 < length && col-1 >=0 && col-1 < width)
- {
- index = get2dIndex(row+1,col-1);
- if(index >= 0 && index < (int)data.size())
- {
- _cell = data.at((unsigned int)index);
- return true;
- }
- }
+ if (row + 1 >= 0 && row + 1 < length && col >= 0 && col < width) {
+ index = get2dIndex(row + 1, col);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
+
+ if (row >= 0 && row < length && col + 1 >= 0 && col + 1 < width) {
+ index = get2dIndex(row, col + 1);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
+
+ if (row - 1 >= 0 && row - 1 < length && col >= 0 && col < width) {
+ index = get2dIndex(row - 1, col);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
- //printf("Error Getting Cell with Info: P(%f,%f) , C(%d,%d), index = %d \n", p.x, p.y, row, col, index);
- return false;
- }
-private:
+ if (row >= 0 && row < length && col - 1 >= 0 && col - 1 < width) {
+ index = get2dIndex(row, col - 1);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
- int get2dIndex(const int& r,const int& c)
- {
- return ((r*width) + c);
- }
+ if (row + 1 >= 0 && row + 1 < length && col + 1 >= 0 && col + 1 < width) {
+ index = get2dIndex(row + 1, col + 1);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
-};
+ if (row - 1 >= 0 && row - 1 < length && col - 1 >= 0 && col - 1 < width) {
+ index = get2dIndex(row - 1, col - 1);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
-class ParticleInfo
-{
-public:
- double vel;
- int acl; //slow down -1 braking , 0 cruising , 1 accelerating
- PlannerHNS::LIGHT_INDICATOR indicator;
- PlannerHNS::STATE_TYPE state;
-
- ParticleInfo()
- {
- vel = 0;
- acl = 0;
- indicator = PlannerHNS::INDICATOR_NONE;
- state = PlannerHNS::FORWARD_STATE;
- }
+ if (row - 1 >= 0 && row - 1 < length && col + 1 >= 0 && col + 1 < width) {
+ index = get2dIndex(row - 1, col + 1);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
+
+ if (row + 1 >= 0 && row + 1 < length && col - 1 >= 0 && col - 1 < width) {
+ index = get2dIndex(row + 1, col - 1);
+ if (index >= 0 && index < (int)data.size()) {
+ _cell = data.at((unsigned int)index);
+ return true;
+ }
+ }
+
+ // printf("Error Getting Cell with Info: P(%f,%f) , C(%d,%d), index = %d \n", p.x, p.y, row, col, index);
+ return false;
+ }
+
+ private:
+ int get2dIndex(const int &r, const int &c) { return ((r * width) + c); }
};
-}
+class ParticleInfo {
+ public:
+ double vel;
+ int acl; // slow down -1 braking , 0 cruising , 1 accelerating
+ PlannerHNS::LIGHT_INDICATOR indicator;
+ PlannerHNS::STATE_TYPE state;
+
+ ParticleInfo() {
+ vel = 0;
+ acl = 0;
+ indicator = PlannerHNS::INDICATOR_NONE;
+ state = PlannerHNS::FORWARD_STATE;
+ }
+};
+} // namespace PlannerHNS
#endif /* ROADNETWORK_H_ */
-
diff --git a/autoware.ai/src/autoware/common/op_planner/include/op_planner/TrajectoryDynamicCosts.h b/autoware.ai/src/autoware/common/op_planner/include/op_planner/TrajectoryDynamicCosts.h
index 05d60262..608d6f91 100755
--- a/autoware.ai/src/autoware/common/op_planner/include/op_planner/TrajectoryDynamicCosts.h
+++ b/autoware.ai/src/autoware/common/op_planner/include/op_planner/TrajectoryDynamicCosts.h
@@ -4,77 +4,86 @@
/// \author Hatem Darweesh
/// \date Jan 14, 2018
-
#ifndef TRAJECTORYDYNAMICCOSTS_H_
#define TRAJECTORYDYNAMICCOSTS_H_
-#include "RoadNetwork.h"
#include "PlannerCommonDef.h"
#include "PlanningHelpers.h"
+#include "RoadNetwork.h"
using namespace std;
-namespace PlannerHNS
-{
-
-class TrajectoryDynamicCosts
-{
-public:
- TrajectoryDynamicCosts();
- virtual ~TrajectoryDynamicCosts();
-
- TrajectoryCost DoOneStep(const vector > >& rollOuts, const vector >& totalPaths,
- const WayPoint& currState, const int& currTrajectoryIndex, const int& currLaneIndex, const PlanningParams& params,
- const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState, const std::vector& obj_list);
-
- TrajectoryCost DoOneStepStatic(const vector >& rollOuts, const vector& totalPaths,
- const WayPoint& currState, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
- const std::vector& obj_list, const PlannerHNS::STATE_TYPE& state, const int& iCurrentIndex = -1);
-
- TrajectoryCost DoOneStepDynamic(const vector >& rollOuts, const vector& totalPaths,
- const WayPoint& currState, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
- const std::vector& obj_list, const int& iCurrentIndex = -1);
-
-public:
- int m_PrevCostIndex;
- int m_PrevIndex;
- int m_PrevSelectedIndex;
- vector m_TrajectoryCosts;
- PlanningParams m_Params;
- PolygonShape m_SafetyBorder;
- vector m_AllContourPoints;
- vector m_CollisionPoints;
- double m_WeightPriority;
- double m_WeightTransition;
- double m_WeightLong;
- double m_WeightLat;
- double m_WeightLaneChange;
- double m_LateralSkipDistance;
- double m_CollisionTimeDiff;
-
- int m_startTrajIdx;
- int m_endTrajIdx;
-
-private:
- bool ValidateRollOutsInput(const vector > >& rollOuts);
- vector CalculatePriorityAndLaneChangeCosts(const vector >& laneRollOuts, const int& lane_index, const PlanningParams& params);
- void NormalizeCosts(vector& trajectoryCosts);
- void CalculateLateralAndLongitudinalCosts(vector& trajectoryCosts, const vector > >& rollOuts, const vector >& totalPaths, const WayPoint& currState, const vector& contourPoints, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState);
- void CalculateLateralAndLongitudinalCostsStatic(vector& trajectoryCosts, const vector >& rollOuts, const vector& totalPaths, const WayPoint& currState, const vector& contourPoints, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState);
- void CalculateTransitionCosts(vector& trajectoryCosts, const int& currTrajectoryIndex, const PlanningParams& params);
-
- void CalculateIntersectionVelocities(const std::vector& path, const DetectedObject& obj, const WayPoint& currPose, const CAR_BASIC_INFO& carInfo, const double& c_lateral_d, WayPoint& collisionPoint, TrajectoryCost& trajectoryCosts);
- int GetCurrentRollOutIndex(const std::vector& path, const WayPoint& currState, const PlanningParams& params);
- void InitializeCosts(const vector >& rollOuts, const PlanningParams& params);
- void InitializeSafetyPolygon(const WayPoint& currState, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState, const double& c_lateral_d, const double& c_long_front_d, const double& c_long_back_d);
- void CalculateLateralAndLongitudinalCostsDynamic(const std::vector& obj_list, const vector >& rollOuts, const vector& totalPaths,
- const WayPoint& currState, const PlanningParams& params, const CAR_BASIC_INFO& carInfo,
- const VehicleState& vehicleState, const double& c_lateral_d, const double& c_long_front_d, const double& c_long_back_d );
-
- double CalculateTurnAngle(const std::vector& path, const WayPoint& currState, int distance);
-
+namespace PlannerHNS {
+
+class TrajectoryDynamicCosts {
+ public:
+ TrajectoryDynamicCosts();
+ virtual ~TrajectoryDynamicCosts();
+
+ TrajectoryCost DoOneStep(const vector>> &rollOuts, const vector> &totalPaths, const WayPoint &currState,
+ const int &currTrajectoryIndex, const int &currLaneIndex, PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState, const std::vector &obj_list);
+
+ TrajectoryCost DoOneStepStatic(const vector> &rollOuts, const vector &totalPaths, const WayPoint &currState,
+ PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo, const VehicleState &vehicleState,
+ const std::vector &obj_list, const PlannerHNS::STATE_TYPE &state,
+ const int &iCurrentIndex = -1);
+
+ TrajectoryCost DoOneStepDynamic(const vector> &rollOuts, const vector &totalPaths, const WayPoint &currState,
+ PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo, const VehicleState &vehicleState,
+ const std::vector &obj_list, const int &iCurrentIndex = -1);
+
+ public:
+ int m_PrevCostIndex;
+ int m_PrevIndex;
+ int m_PrevSelectedIndex;
+ vector m_TrajectoryCosts;
+ PlanningParams m_Params;
+ PolygonShape m_SafetyBorder;
+ vector m_AllContourPoints;
+ vector m_CollisionPoints;
+ double m_WeightPriority;
+ double m_WeightTransition;
+ double m_WeightLong;
+ double m_WeightLat;
+ double m_WeightLaneChange;
+ double m_LateralSkipDistance;
+ double m_CollisionTimeDiff;
+
+ int m_startTrajIdx;
+ int m_endTrajIdx;
+
+ private:
+ bool ValidateRollOutsInput(const vector>> &rollOuts);
+ vector CalculatePriorityAndLaneChangeCosts(const vector> &laneRollOuts, const int &lane_index,
+ PlanningParams ¶ms);
+ void NormalizeCosts(vector &trajectoryCosts, int enableDebug);
+ void CalculateLateralAndLongitudinalCosts(vector &trajectoryCosts, const vector>> &rollOuts,
+ const vector> &totalPaths, const WayPoint &currState,
+ const vector &contourPoints, PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState);
+ void CalculateLateralAndLongitudinalCostsStatic(vector &trajectoryCosts, const vector> &rollOuts,
+ const vector &totalPaths, const WayPoint &currState,
+ const vector &contourPoints, PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState);
+ void CalculateTransitionCosts(vector &trajectoryCosts, const int &currTrajectoryIndex, PlanningParams ¶ms);
+
+ void CalculateIntersectionVelocities(const std::vector &path, const DetectedObject &obj, const WayPoint &currPose,
+ const CAR_BASIC_INFO &carInfo, const double &c_lateral_d, WayPoint &collisionPoint,
+ TrajectoryCost &trajectoryCosts);
+ int GetCurrentRollOutIndex(const std::vector &path, const WayPoint &currState, PlanningParams ¶ms);
+ void InitializeCosts(const vector> &rollOuts, PlanningParams ¶ms);
+ void InitializeSafetyPolygon(const WayPoint &currState, const CAR_BASIC_INFO &carInfo, const VehicleState &vehicleState,
+ const double &c_lateral_d, const double &c_long_front_d, const double &c_long_back_d);
+ void CalculateLateralAndLongitudinalCostsDynamic(const std::vector &obj_list,
+ const vector> &rollOuts, const vector &totalPaths,
+ const WayPoint &currState, PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState, const double &c_lateral_d, const double &c_long_front_d,
+ const double &c_long_back_d);
+
+ double CalculateTurnAngle(const std::vector &path, const WayPoint &currState, int distance);
};
-}
+} // namespace PlannerHNS
#endif /* TRAJECTORYDYNAMICCOSTS_H_ */
diff --git a/autoware.ai/src/autoware/common/op_planner/package.xml b/autoware.ai/src/autoware/common/op_planner/package.xml
index 29bb890f..9bc3f29c 100644
--- a/autoware.ai/src/autoware/common/op_planner/package.xml
+++ b/autoware.ai/src/autoware/common/op_planner/package.xml
@@ -7,7 +7,6 @@
Hatem Darweesh
Apache 2
- autoware_build_flags
catkin
cmake_modules
diff --git a/autoware.ai/src/autoware/common/op_planner/src/BehaviorStateMachine.cpp b/autoware.ai/src/autoware/common/op_planner/src/BehaviorStateMachine.cpp
index 3b3b5d02..da033a72 100755
--- a/autoware.ai/src/autoware/common/op_planner/src/BehaviorStateMachine.cpp
+++ b/autoware.ai/src/autoware/common/op_planner/src/BehaviorStateMachine.cpp
@@ -10,551 +10,463 @@
using namespace UtilityHNS;
+namespace PlannerHNS {
-namespace PlannerHNS
-{
+BehaviorStateMachine::BehaviorStateMachine(PlanningParams *pParams, PreCalculatedConditions *pPreCalcVal, BehaviorStateMachine *nextState) {
+ m_Behavior = INITIAL_STATE;
-BehaviorStateMachine::BehaviorStateMachine(PlanningParams* pParams, PreCalculatedConditions* pPreCalcVal, BehaviorStateMachine* nextState)
-{
- m_Behavior = INITIAL_STATE;
+ m_currentStopSignID = -1;
+ m_currentTrafficLightID = -1;
+ decisionMakingTime = 0.0;
+ decisionMakingCount = 1;
+ m_zero_velocity = 0.1;
- m_currentStopSignID = -1;
- m_currentTrafficLightID = -1;
- decisionMakingTime = 0.0;
- decisionMakingCount = 1;
- m_zero_velocity = 0.1;
+ if (!pPreCalcVal)
+ m_pCalculatedValues = new PreCalculatedConditions();
+ else
+ m_pCalculatedValues = pPreCalcVal;
- if(!pPreCalcVal)
- m_pCalculatedValues = new PreCalculatedConditions();
- else
- m_pCalculatedValues = pPreCalcVal;
+ if (!pParams)
+ m_pParams = new PlanningParams;
+ else
+ m_pParams = pParams;
- if(!pParams)
- m_pParams = new PlanningParams;
- else
- m_pParams = pParams;
+ if (nextState)
+ pNextStates.push_back(nextState);
- if(nextState)
- pNextStates.push_back(nextState);
+ pNextStates.push_back(this);
- pNextStates.push_back(this);
-
- Init();
+ Init();
}
-void BehaviorStateMachine::InsertNextState(BehaviorStateMachine* nextState)
-{
- if(nextState)
- pNextStates.push_back(nextState);
+void BehaviorStateMachine::InsertNextState(BehaviorStateMachine *nextState) {
+ if (nextState)
+ pNextStates.push_back(nextState);
}
-void BehaviorStateMachine::UpdateLogCount(BehaviorStateMachine* pState)
-{
- if(!pState) return;
-
- bool bFound = false;
- for(unsigned int i = 0; i < m_BehaviorsLog.size(); i++)
- {
- if(m_BehaviorsLog.at(i).first->m_Behavior == pState->m_Behavior)
- {
- m_BehaviorsLog.at(i).second++;
- bFound = true;
- break;
+void BehaviorStateMachine::UpdateLogCount(BehaviorStateMachine *pState) {
+ if (!pState)
+ return;
+
+ bool bFound = false;
+ for (unsigned int i = 0; i < m_BehaviorsLog.size(); i++) {
+ if (m_BehaviorsLog.at(i).first->m_Behavior == pState->m_Behavior) {
+ m_BehaviorsLog.at(i).second++;
+ bFound = true;
+ break;
+ }
}
- }
- if(!bFound)
- {
- m_BehaviorsLog.push_back(std::make_pair(pState, 1));
- }
+ if (!bFound) {
+ m_BehaviorsLog.push_back(std::make_pair(pState, 1));
+ }
}
-BehaviorStateMachine* BehaviorStateMachine::FindBestState(int nMinCount)
-{
- for(unsigned int i = 0; i < m_BehaviorsLog.size(); i++)
- {
- if(m_BehaviorsLog.at(i).second >= nMinCount)
- {
- //std::cout << "Found Next Beh: " << m_BehaviorsLog.at(i).first->m_Behavior << ", Count: " << m_BehaviorsLog.at(i).second << ", LogSize: " << m_BehaviorsLog.size() << std::endl;
- return m_BehaviorsLog.at(i).first;
+BehaviorStateMachine *BehaviorStateMachine::FindBestState(int nMinCount) {
+ for (unsigned int i = 0; i < m_BehaviorsLog.size(); i++) {
+ if (m_BehaviorsLog.at(i).second >= nMinCount) {
+ // std::cout << "Found Next Beh: " << m_BehaviorsLog.at(i).first->m_Behavior << ", Count: " << m_BehaviorsLog.at(i).second << ", LogSize:
+ // " << m_BehaviorsLog.size() << std::endl;
+ return m_BehaviorsLog.at(i).first;
+ }
}
- }
- return nullptr;
+ return nullptr;
}
-BehaviorStateMachine* BehaviorStateMachine::FindBehaviorState(const STATE_TYPE& behavior)
-{
- for(unsigned int i = 0 ; i < pNextStates.size(); i++)
- {
- BehaviorStateMachine* pState = pNextStates.at(i);
- if(pState && behavior == pState->m_Behavior )
- {
- //UpdateLogCount(pState);
- //pState = FindBestState(decisionMakingCount);
-
- if(pState == 0) return this;
-
- m_BehaviorsLog.clear();
- pState->ResetTimer();
- return pState;
+BehaviorStateMachine *BehaviorStateMachine::FindBehaviorState(const STATE_TYPE &behavior) {
+ for (unsigned int i = 0; i < pNextStates.size(); i++) {
+ BehaviorStateMachine *pState = pNextStates.at(i);
+ if (pState && behavior == pState->m_Behavior) {
+ // UpdateLogCount(pState);
+ // pState = FindBestState(decisionMakingCount);
+
+ if (pState == 0)
+ return this;
+
+ m_BehaviorsLog.clear();
+ pState->ResetTimer();
+ return pState;
+ }
}
- }
- return nullptr;
+ return nullptr;
}
-void BehaviorStateMachine::Init()
-{
- UtilityH::GetTickCount(m_StateTimer);
-}
+void BehaviorStateMachine::Init() { UtilityH::GetTickCount(m_StateTimer); }
-void BehaviorStateMachine::ResetTimer()
-{
- UtilityH::GetTickCount(m_StateTimer);
-}
+void BehaviorStateMachine::ResetTimer() { UtilityH::GetTickCount(m_StateTimer); }
-BehaviorStateMachine::~BehaviorStateMachine()
-{
-}
+BehaviorStateMachine::~BehaviorStateMachine() {}
-BehaviorStateMachine* ForwardState::GetNextState()
-{
- // std::cout<pedestrianAppearence<currentGoalID != pCParams->prevGoalID)
- return FindBehaviorState(GOAL_STATE);
-
- else if(m_pParams->enableSwerving
- && pCParams->distanceToNext <= m_pParams->minDistanceToAvoid
- && !pCParams->bFullyBlock
- && (pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory || pCParams->iCurrSafeLane != pCParams->iPrevSafeLane)
- )
- return FindBehaviorState(OBSTACLE_AVOIDANCE_STATE);
-
- else if(m_pParams->enableTrafficLightBehavior
- && pCParams->currentTrafficLightID > 0
- && pCParams->bTrafficIsRed
- && pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
- return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
-
- else if(m_pParams->enableStopSignBehavior
- && pCParams->currentStopSignID > 0
- && pCParams->currentStopSignID != pCParams->prevStopSignID)
- return FindBehaviorState(STOP_SIGN_STOP_STATE);
-
- else if(m_pParams->enableFollowing
- && pCParams->bFullyBlock)
- return FindBehaviorState(FOLLOW_STATE);
-
-// else if(pCParams->distanceToNext <= m_pParams->maxDistanceToAvoid)
-// return FindBehaviorState(STOPPING_STATE);
-
- else
- {
- if(pCParams->iCurrSafeTrajectory == pCParams->iCentralTrajectory && pCParams->iPrevSafeTrajectory != pCParams->iCurrSafeTrajectory){
- pCParams->bRePlan = true;
- }
+BehaviorStateMachine *ForwardState::GetNextState() {
+ // std::cout<pedestrianAppearence<m_Behavior); // return and reset
- }
-}
+ PreCalculatedConditions *pCParams = GetCalcParams();
-BehaviorStateMachine* MissionAccomplishedState::GetNextState()
-{
- return FindBehaviorState(this->m_Behavior); // return and reset
-}
+ if (pCParams->currentGoalID != pCParams->prevGoalID)
+ return FindBehaviorState(GOAL_STATE);
-BehaviorStateMachine* StopState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+ else if (m_pParams->enableSwerving && pCParams->distanceToNext <= m_pParams->minDistanceToAvoid && !pCParams->bFullyBlock &&
+ (pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory || pCParams->iCurrSafeLane != pCParams->iPrevSafeLane))
+ return FindBehaviorState(OBSTACLE_AVOIDANCE_STATE);
- PreCalculatedConditions* pCParams = GetCalcParams();
+ else if (m_pParams->enableTrafficLightBehavior && pCParams->currentTrafficLightID > 0 && pCParams->bTrafficIsRed &&
+ pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
+ return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
- if(pCParams->distanceToNext > m_pParams->maxDistanceToAvoid)
- return FindBehaviorState(FORWARD_STATE);
+ else if (m_pParams->enableStopSignBehavior && pCParams->currentStopSignID > 0 && pCParams->currentStopSignID != pCParams->prevStopSignID)
+ return FindBehaviorState(STOP_SIGN_STOP_STATE);
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
-}
+ else if (m_pParams->enableFollowing && pCParams->bFullyBlock)
+ return FindBehaviorState(FOLLOW_STATE);
-BehaviorStateMachine* TrafficLightStopState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+ // else if(pCParams->distanceToNext <= m_pParams->maxDistanceToAvoid)
+ // return FindBehaviorState(STOPPING_STATE);
- PreCalculatedConditions* pCParams = GetCalcParams();
+ else {
+ if (pCParams->iCurrSafeTrajectory == pCParams->iCentralTrajectory && pCParams->iPrevSafeTrajectory != pCParams->iCurrSafeTrajectory) {
+ pCParams->bRePlan = true;
+ }
- if(!pCParams->bTrafficIsRed)
- {
- pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
- return FindBehaviorState(FORWARD_STATE);
- }
+ return FindBehaviorState(this->m_Behavior); // return and reset
+ }
+}
- else if(pCParams->bTrafficIsRed && pCParams->currentVelocity <= m_zero_velocity)
- return FindBehaviorState(TRAFFIC_LIGHT_WAIT_STATE);
- else
+BehaviorStateMachine *MissionAccomplishedState::GetNextState() {
return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* TrafficLightWaitState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *StopState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- if(!pCParams->bTrafficIsRed)
- {
- pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
- return FindBehaviorState(FORWARD_STATE);
- }
+ if (pCParams->distanceToNext > m_pParams->maxDistanceToAvoid)
+ return FindBehaviorState(FORWARD_STATE);
- else if(pCParams->currentVelocity > m_zero_velocity)
- return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
+}
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+BehaviorStateMachine *TrafficLightStopState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
+
+ PreCalculatedConditions *pCParams = GetCalcParams();
+ if (!pCParams->bTrafficIsRed) {
+ pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
+
+ else if (pCParams->bTrafficIsRed && pCParams->currentVelocity <= m_zero_velocity)
+ return FindBehaviorState(TRAFFIC_LIGHT_WAIT_STATE);
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* StopSignStopState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *TrafficLightWaitState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- //std::cout << "From Stop Beh D: " << pCParams->distanceToStop() << ", Prev LineID: " << pCParams->prevStopSignID << ", Curr SignID: " << pCParams->currentStopSignID << std::endl;
+ if (!pCParams->bTrafficIsRed) {
+ pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
- if(pCParams->currentVelocity < m_zero_velocity)
- return FindBehaviorState(STOP_SIGN_WAIT_STATE);
+ else if (pCParams->currentVelocity > m_zero_velocity)
+ return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* StopSignWaitState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *StopSignStopState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- //std::cout << "From Wait Beh D: " << pCParams->distanceToStop() << ", Prev LineID: " << pCParams->prevStopSignID << ", Curr SignID: " << pCParams->currentStopSignID << std::endl;
+ // std::cout << "From Stop Beh D: " << pCParams->distanceToStop() << ", Prev LineID: " << pCParams->prevStopSignID << ", Curr SignID: " <<
+ // pCParams->currentStopSignID << std::endl;
- pCParams->prevStopSignID = pCParams->currentStopSignID;
+ if (pCParams->currentVelocity < m_zero_velocity)
+ return FindBehaviorState(STOP_SIGN_WAIT_STATE);
- return FindBehaviorState(FORWARD_STATE);
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* WaitState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *StopSignWaitState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- //PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- return FindBehaviorState(FORWARD_STATE);
+ // std::cout << "From Wait Beh D: " << pCParams->distanceToStop() << ", Prev LineID: " << pCParams->prevStopSignID << ", Curr SignID: " <<
+ // pCParams->currentStopSignID << std::endl;
+
+ pCParams->prevStopSignID = pCParams->currentStopSignID;
+
+ return FindBehaviorState(FORWARD_STATE);
}
-BehaviorStateMachine* InitState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *WaitState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ // PreCalculatedConditions* pCParams = GetCalcParams();
- if(pCParams->bOutsideControl == 1)
- {
- pCParams->prevGoalID = pCParams->currentGoalID;
return FindBehaviorState(FORWARD_STATE);
- }
+}
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+BehaviorStateMachine *InitState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
+
+ PreCalculatedConditions *pCParams = GetCalcParams();
+
+ if (pCParams->bOutsideControl == 1) {
+ pCParams->prevGoalID = pCParams->currentGoalID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
+
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* FollowState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *FollowState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- //std::cout << "Following State >> followDistance: " << pCParams->distanceToNext << ", followSpeed: " << pCParams->velocityOfNext << std::endl;
+ // std::cout << "Following State >> followDistance: " << pCParams->distanceToNext << ", followSpeed: " << pCParams->velocityOfNext << std::endl;
- if(m_pParams->enableTrafficLightBehavior
- && pCParams->currentTrafficLightID > 0
- && pCParams->bTrafficIsRed
- && pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
- return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ if (m_pParams->enableTrafficLightBehavior && pCParams->currentTrafficLightID > 0 && pCParams->bTrafficIsRed &&
+ pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
+ return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
- else if(m_pParams->enableStopSignBehavior
- && pCParams->currentStopSignID > 0
- && pCParams->currentStopSignID != pCParams->prevStopSignID)
- return FindBehaviorState(STOP_SIGN_STOP_STATE);
+ else if (m_pParams->enableStopSignBehavior && pCParams->currentStopSignID > 0 && pCParams->currentStopSignID != pCParams->prevStopSignID)
+ return FindBehaviorState(STOP_SIGN_STOP_STATE);
- else if(pCParams->currentGoalID != pCParams->prevGoalID
- || !pCParams->bFullyBlock)
- return FindBehaviorState(FORWARD_STATE);
+ else if (pCParams->currentGoalID != pCParams->prevGoalID || !pCParams->bFullyBlock)
+ return FindBehaviorState(FORWARD_STATE);
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* SwerveState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *SwerveState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- if(pCParams->distanceToNext > 0
- && pCParams->distanceToNext < m_pParams->minDistanceToAvoid
- && !pCParams->bFullyBlock
- && pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
- return FindBehaviorState(this->m_Behavior);
+ if (pCParams->distanceToNext > 0 && pCParams->distanceToNext < m_pParams->minDistanceToAvoid && !pCParams->bFullyBlock &&
+ pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
+ return FindBehaviorState(this->m_Behavior);
- else
- return FindBehaviorState(FORWARD_STATE);
+ else
+ return FindBehaviorState(FORWARD_STATE);
}
-BehaviorStateMachine* GoalState::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
+BehaviorStateMachine *GoalState::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
- PreCalculatedConditions* pCParams = GetCalcParams();
+ PreCalculatedConditions *pCParams = GetCalcParams();
- if(pCParams->currentGoalID == -1)
- return FindBehaviorState(FINISH_STATE);
+ if (pCParams->currentGoalID == -1)
+ return FindBehaviorState(FINISH_STATE);
- else if(pCParams->currentGoalID != pCParams->prevGoalID)
- {
- pCParams->prevGoalID = pCParams->currentGoalID;
- return FindBehaviorState(FORWARD_STATE);
- }
+ else if (pCParams->currentGoalID != pCParams->prevGoalID) {
+ pCParams->prevGoalID = pCParams->currentGoalID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* ForwardStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
-
- if(pCParams->currentGoalID != pCParams->prevGoalID)
- return FindBehaviorState(GOAL_STATE);
- else if(m_pParams->pedestrianAppearence){
- return FindBehaviorState(PEDESTRIAN_STATE);
- }
- // hjw added
- else if(m_pParams->enableTrafficLightBehavior
- && pCParams->currentTrafficLightID > 0
- && pCParams->bTrafficIsRed)
+BehaviorStateMachine *ForwardStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
+
+ if (pCParams->currentGoalID != pCParams->prevGoalID)
+ return FindBehaviorState(GOAL_STATE);
+ // else if (m_pParams->pedestrianAppearence) {
+ // return FindBehaviorState(PEDESTRIAN_STATE);
+ // }
+ // hjw added
+ else if (m_pParams->enableTrafficLightBehavior && pCParams->currentTrafficLightID > 0 && pCParams->bTrafficIsRed)
// && pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
- return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
- else if(m_pParams->isInsideIntersection
- && (m_pParams->turnLeft || m_pParams->turnRight)){
- return FindBehaviorState(INTERSECTION_STATE);
- }
- else if(m_pParams->enableStopSignBehavior
- && pCParams->currentStopSignID > 0
- && pCParams->currentStopSignID != pCParams->prevStopSignID)
- return FindBehaviorState(STOP_SIGN_STOP_STATE);
-
- // else if(m_pParams->enableFollowing && pCParams->bFullyBlock)
- // return FindBehaviorState(FOLLOW_STATE);
-
- else if(m_pParams->enableSwerving
- && pCParams->distanceToNext <= m_pParams->minDistanceToAvoid
- && !pCParams->bFullyBlock
- && pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
- return FindBehaviorState(OBSTACLE_AVOIDANCE_STATE);
-
- else
- return FindBehaviorState(this->m_Behavior);
+ return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ else if (m_pParams->isInsideIntersection && (m_pParams->turnLeft || m_pParams->turnRight)) {
+ return FindBehaviorState(INTERSECTION_STATE);
+ } else if (m_pParams->enableStopSignBehavior && pCParams->currentStopSignID > 0 && pCParams->currentStopSignID != pCParams->prevStopSignID)
+ return FindBehaviorState(STOP_SIGN_STOP_STATE);
+
+ // else if(m_pParams->enableFollowing && pCParams->bFullyBlock)
+ // return FindBehaviorState(FOLLOW_STATE);
+
+ else if (m_pParams->enableSwerving && pCParams->distanceToNext <= m_pParams->minDistanceToAvoid && !pCParams->bFullyBlock &&
+ pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
+ return FindBehaviorState(OBSTACLE_AVOIDANCE_STATE);
+
+ else
+ return FindBehaviorState(this->m_Behavior);
}
-BehaviorStateMachine* FollowStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
-
- if(pCParams->currentGoalID != pCParams->prevGoalID)
- return FindBehaviorState(GOAL_STATE);
- else if(m_pParams->pedestrianAppearence)
- return FindBehaviorState(PEDESTRIAN_STATE);
- else if(m_pParams->enableTrafficLightBehavior
- && pCParams->currentTrafficLightID > 0
- && pCParams->bTrafficIsRed)
+BehaviorStateMachine *FollowStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
+
+ if (pCParams->currentGoalID != pCParams->prevGoalID)
+ return FindBehaviorState(GOAL_STATE);
+ else if (m_pParams->pedestrianAppearence)
+ return FindBehaviorState(PEDESTRIAN_STATE);
+ else if (m_pParams->enableTrafficLightBehavior && pCParams->currentTrafficLightID > 0 && pCParams->bTrafficIsRed)
// && pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
- return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
- else if(m_pParams->enableStopSignBehavior
- && pCParams->currentStopSignID > 0
- && pCParams->currentStopSignID != pCParams->prevStopSignID)
- return FindBehaviorState(STOP_SIGN_STOP_STATE);
+ else if (m_pParams->enableStopSignBehavior && pCParams->currentStopSignID > 0 && pCParams->currentStopSignID != pCParams->prevStopSignID)
+ return FindBehaviorState(STOP_SIGN_STOP_STATE);
- else if(m_pParams->enableSwerving
- && pCParams->distanceToNext <= m_pParams->minDistanceToAvoid
- && !pCParams->bFullyBlock
- && pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
- return FindBehaviorState(OBSTACLE_AVOIDANCE_STATE);
+ else if (m_pParams->enableSwerving && pCParams->distanceToNext <= m_pParams->minDistanceToAvoid && !pCParams->bFullyBlock &&
+ pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
+ return FindBehaviorState(OBSTACLE_AVOIDANCE_STATE);
- else if(!pCParams->bFullyBlock)
- return FindBehaviorState(FORWARD_STATE);
+ else if (!pCParams->bFullyBlock)
+ return FindBehaviorState(FORWARD_STATE);
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* SwerveStateII::GetNextState()
-{
- if(m_pParams->pedestrianAppearence)
- return FindBehaviorState(PEDESTRIAN_STATE);
- PreCalculatedConditions* pCParams = GetCalcParams();
+BehaviorStateMachine *SwerveStateII::GetNextState() {
+ if (m_pParams->pedestrianAppearence)
+ return FindBehaviorState(PEDESTRIAN_STATE);
+ PreCalculatedConditions *pCParams = GetCalcParams();
- pCParams->iPrevSafeTrajectory = pCParams->iCurrSafeTrajectory;
- pCParams->bRePlan = true;
+ pCParams->iPrevSafeTrajectory = pCParams->iCurrSafeTrajectory;
+ pCParams->bRePlan = true;
- // if(pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
- // return FindBehaviorState(FORWARD_STATE);
- // else
- // return FindBehaviorState(this->m_Behavior);
+ // if(pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
+ // return FindBehaviorState(FORWARD_STATE);
+ // else
+ // return FindBehaviorState(this->m_Behavior);
- return FindBehaviorState(FORWARD_STATE);
+ return FindBehaviorState(FORWARD_STATE);
}
-BehaviorStateMachine* InitStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
+BehaviorStateMachine *InitStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
- if(pCParams->currentGoalID > 0)
- return FindBehaviorState(FORWARD_STATE);
- else
- return FindBehaviorState(this->m_Behavior);
+ if (pCParams->currentGoalID > 0)
+ return FindBehaviorState(FORWARD_STATE);
+ else
+ return FindBehaviorState(this->m_Behavior);
}
-BehaviorStateMachine* GoalStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
+BehaviorStateMachine *GoalStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
- if(pCParams->currentGoalID == -1)
- return FindBehaviorState(FINISH_STATE);
+ if (pCParams->currentGoalID == -1)
+ return FindBehaviorState(FINISH_STATE);
- else
- {
- pCParams->prevGoalID = pCParams->currentGoalID;
- return FindBehaviorState(FORWARD_STATE);
- }
+ else {
+ pCParams->prevGoalID = pCParams->currentGoalID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
}
-BehaviorStateMachine* MissionAccomplishedStateII::GetNextState()
-{
- return FindBehaviorState(this->m_Behavior);
-}
+BehaviorStateMachine *MissionAccomplishedStateII::GetNextState() { return FindBehaviorState(this->m_Behavior); }
-BehaviorStateMachine* StopSignStopStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
-
- if(pCParams->currentGoalID != pCParams->prevGoalID)
- return FindBehaviorState(GOAL_STATE);
- else if(m_pParams->pedestrianAppearence)
- return FindBehaviorState(PEDESTRIAN_STATE);
- else if(pCParams->currentVelocity < m_zero_velocity)
- return FindBehaviorState(STOP_SIGN_WAIT_STATE);
-
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+BehaviorStateMachine *StopSignStopStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
+
+ if (pCParams->currentGoalID != pCParams->prevGoalID)
+ return FindBehaviorState(GOAL_STATE);
+ else if (m_pParams->pedestrianAppearence)
+ return FindBehaviorState(PEDESTRIAN_STATE);
+ else if (pCParams->currentVelocity < m_zero_velocity)
+ return FindBehaviorState(STOP_SIGN_WAIT_STATE);
+
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* StopSignWaitStateII::GetNextState()
-{
- if(UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
- return this;
- else if(m_pParams->pedestrianAppearence)
- return FindBehaviorState(PEDESTRIAN_STATE);
- PreCalculatedConditions* pCParams = GetCalcParams();
+BehaviorStateMachine *StopSignWaitStateII::GetNextState() {
+ if (UtilityH::GetTimeDiffNow(m_StateTimer) < decisionMakingTime)
+ return this;
+ else if (m_pParams->pedestrianAppearence)
+ return FindBehaviorState(PEDESTRIAN_STATE);
+ PreCalculatedConditions *pCParams = GetCalcParams();
- pCParams->prevStopSignID = pCParams->currentStopSignID;
+ pCParams->prevStopSignID = pCParams->currentStopSignID;
- return FindBehaviorState(FORWARD_STATE);
+ return FindBehaviorState(FORWARD_STATE);
}
-BehaviorStateMachine* TrafficLightStopStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
- if(m_pParams->pedestrianAppearence)
- return FindBehaviorState(PEDESTRIAN_STATE);
- //std::cout << "Stopping for trafficLight " << std::endl;
- else if(!pCParams->bTrafficIsRed)
- {
- //std::cout << "Color Changed Stopping for trafficLight " << std::endl;
- pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
- return FindBehaviorState(FORWARD_STATE);
- }
+BehaviorStateMachine *TrafficLightStopStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
+ if (m_pParams->pedestrianAppearence)
+ return FindBehaviorState(PEDESTRIAN_STATE);
+ // std::cout << "Stopping for trafficLight " << std::endl;
+ else if (!pCParams->bTrafficIsRed) {
+ // std::cout << "Color Changed Stopping for trafficLight " << std::endl;
+ pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
- else if(pCParams->bTrafficIsRed && pCParams->currentVelocity <= m_zero_velocity)
- {
- //std::cout << "Velocity Changed Stopping for trafficLight (" <currentVelocity << ", " << m_zero_velocity << ")" << std::endl;
- return FindBehaviorState(TRAFFIC_LIGHT_WAIT_STATE);
- }
+ else if (pCParams->bTrafficIsRed && pCParams->currentVelocity <= m_zero_velocity) {
+ // std::cout << "Velocity Changed Stopping for trafficLight (" <currentVelocity << ", " << m_zero_velocity << ")" << std::endl;
+ return FindBehaviorState(TRAFFIC_LIGHT_WAIT_STATE);
+ }
- else
- {
- return FindBehaviorState(this->m_Behavior); // return and reset
- }
+ else {
+ return FindBehaviorState(this->m_Behavior); // return and reset
+ }
}
-BehaviorStateMachine* TrafficLightWaitStateII::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
-
- //std::cout << "Wait for trafficLight " << std::endl;
- if(m_pParams->pedestrianAppearence)
- return FindBehaviorState(PEDESTRIAN_STATE);
- else if(!pCParams->bTrafficIsRed)
- {
- pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
- return FindBehaviorState(FORWARD_STATE);
- }
+BehaviorStateMachine *TrafficLightWaitStateII::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
-// else if(pCParams->currentVelocity > m_zero_velocity)
-// return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ // std::cout << "Wait for trafficLight " << std::endl;
+ if (m_pParams->pedestrianAppearence)
+ return FindBehaviorState(PEDESTRIAN_STATE);
+ else if (!pCParams->bTrafficIsRed) {
+ pCParams->prevTrafficLightID = pCParams->currentTrafficLightID;
+ return FindBehaviorState(FORWARD_STATE);
+ }
- else
- return FindBehaviorState(this->m_Behavior); // return and reset
+ // else if(pCParams->currentVelocity > m_zero_velocity)
+ // return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ else
+ return FindBehaviorState(this->m_Behavior); // return and reset
}
-BehaviorStateMachine* PedestrianState::GetNextState()
-{
- if(m_pParams->pedestrianAppearence){
- return FindBehaviorState(this->m_Behavior);
- }
- else
- return FindBehaviorState(FORWARD_STATE);
+BehaviorStateMachine *PedestrianState::GetNextState() {
+ if (m_pParams->pedestrianAppearence) {
+ return FindBehaviorState(this->m_Behavior);
+ } else
+ return FindBehaviorState(FORWARD_STATE);
}
-BehaviorStateMachine* IntersectionState::GetNextState()
-{
- PreCalculatedConditions* pCParams = GetCalcParams();
- if(m_pParams->closestIntersectionDistance < 35){
- return FindBehaviorState(this->m_Behavior);
- }
- else if(m_pParams->enableTrafficLightBehavior
- && pCParams->currentTrafficLightID > 0
- && pCParams->bTrafficIsRed)
+BehaviorStateMachine *IntersectionState::GetNextState() {
+ PreCalculatedConditions *pCParams = GetCalcParams();
+ if (m_pParams->closestIntersectionDistance < 35) {
+ return FindBehaviorState(this->m_Behavior);
+ } else if (m_pParams->enableTrafficLightBehavior && pCParams->currentTrafficLightID > 0 && pCParams->bTrafficIsRed)
// && pCParams->currentTrafficLightID != pCParams->prevTrafficLightID)
- return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
- else
- return FindBehaviorState(FORWARD_STATE);
+ return FindBehaviorState(TRAFFIC_LIGHT_STOP_STATE);
+ else
+ return FindBehaviorState(FORWARD_STATE);
}
} /* namespace PlannerHNS */
diff --git a/autoware.ai/src/autoware/common/op_planner/src/DecisionMaker.cpp b/autoware.ai/src/autoware/common/op_planner/src/DecisionMaker.cpp
index 9edfca2f..f4fc1a2c 100755
--- a/autoware.ai/src/autoware/common/op_planner/src/DecisionMaker.cpp
+++ b/autoware.ai/src/autoware/common/op_planner/src/DecisionMaker.cpp
@@ -4,66 +4,61 @@
/// \author Hatem Darweesh
/// \date Dec 14, 2016
-
#include "op_planner/DecisionMaker.h"
-#include "op_utility/UtilityH.h"
-#include "op_planner/PlanningHelpers.h"
#include "op_planner/MappingHelpers.h"
#include "op_planner/MatrixOperations.h"
+#include "op_planner/PlanningHelpers.h"
+#include "op_utility/UtilityH.h"
+namespace PlannerHNS {
-namespace PlannerHNS
-{
-
-DecisionMaker::DecisionMaker()
-{
- m_iCurrentTotalPathId = 0;
- pLane = 0;
- m_pCurrentBehaviorState = 0;
- m_pGoToGoalState = 0;
- m_pStopState= 0;
- m_pWaitState= 0;
- m_pMissionCompleteState= 0;
- m_pAvoidObstacleState = 0;
- m_pTrafficLightStopState = 0;
- m_pTrafficLightWaitState = 0;
- m_pStopSignStopState = 0;
- m_pStopSignWaitState = 0;
- m_pFollowState = 0;
- m_MaxLaneSearchDistance = 3.0;
- m_pStopState = 0;
- m_pMissionCompleteState = 0;
- m_pGoalState = 0;
- m_pGoToGoalState = 0;
- m_pWaitState = 0;
- m_pInitState = 0;
- m_pFollowState = 0;
- m_pAvoidObstacleState = 0;
- m_pPedestrianState = 0;
- m_sprintSpeed = -1;
- m_remainObstacleWaitingTime = 0;
- curveSlowDownCount = 400;
+DecisionMaker::DecisionMaker() {
+ m_iCurrentTotalPathId = 0;
+ pLane = 0;
+ m_pCurrentBehaviorState = 0;
+ m_pGoToGoalState = 0;
+ m_pStopState = 0;
+ m_pWaitState = 0;
+ m_pMissionCompleteState = 0;
+ m_pAvoidObstacleState = 0;
+ m_pTrafficLightStopState = 0;
+ m_pTrafficLightWaitState = 0;
+ m_pStopSignStopState = 0;
+ m_pStopSignWaitState = 0;
+ m_pFollowState = 0;
+ m_MaxLaneSearchDistance = 3.0;
+ m_pStopState = 0;
+ m_pMissionCompleteState = 0;
+ m_pGoalState = 0;
+ m_pGoToGoalState = 0;
+ m_pWaitState = 0;
+ m_pInitState = 0;
+ m_pFollowState = 0;
+ m_pAvoidObstacleState = 0;
+ m_pPedestrianState = 0;
+ m_sprintSpeed = -1;
+ m_remainObstacleWaitingTime = 0;
+ curveSlowDownCount = 400;
}
-DecisionMaker::~DecisionMaker()
-{
- delete m_pStopState;
- delete m_pMissionCompleteState;
- delete m_pGoalState;
- delete m_pGoToGoalState;
- delete m_pWaitState;
- delete m_pInitState;
- delete m_pFollowState;
- delete m_pAvoidObstacleState;
- delete m_pTrafficLightStopState;
- delete m_pTrafficLightWaitState;
- delete m_pStopSignWaitState;
- delete m_pStopSignStopState;
- delete m_pPedestrianState;
+DecisionMaker::~DecisionMaker() {
+ delete m_pStopState;
+ delete m_pMissionCompleteState;
+ delete m_pGoalState;
+ delete m_pGoToGoalState;
+ delete m_pWaitState;
+ delete m_pInitState;
+ delete m_pFollowState;
+ delete m_pAvoidObstacleState;
+ delete m_pTrafficLightStopState;
+ delete m_pTrafficLightWaitState;
+ delete m_pStopSignWaitState;
+ delete m_pStopSignStopState;
+ delete m_pPedestrianState;
}
-void DecisionMaker::Init(const ControllerParams& ctrlParams, const PlannerHNS::PlanningParams& params,const CAR_BASIC_INFO& carInfo, const double sprintSpeed)
- {
+void DecisionMaker::Init(const ControllerParams &ctrlParams, const PlannerHNS::PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const double sprintSpeed) {
m_CarInfo = carInfo;
m_ControlParams = ctrlParams;
m_params = params;
@@ -76,7 +71,7 @@ void DecisionMaker::Init(const ControllerParams& ctrlParams, const PlannerHNS::P
m_pidSprintVelocity.Setlimit(sprintSpeed, 0);
m_pidIntersectionVelocity.Init(0.01, 0.004, 0.01);
- m_pidIntersectionVelocity.Setlimit(m_params.maxSpeed*0.7, 0);
+ m_pidIntersectionVelocity.Setlimit(m_params.maxSpeed * 0.7, 0);
m_pidStopping.Init(0.05, 0.05, 0.1);
m_pidStopping.Setlimit(m_params.horizonDistance, 0);
@@ -90,771 +85,732 @@ void DecisionMaker::Init(const ControllerParams& ctrlParams, const PlannerHNS::P
InitBehaviorStates();
- if(m_pCurrentBehaviorState)
- m_pCurrentBehaviorState->SetBehaviorsParams(&m_params);
- }
+ if (m_pCurrentBehaviorState)
+ m_pCurrentBehaviorState->SetBehaviorsParams(&m_params);
+}
-void DecisionMaker::InitBehaviorStates()
-{
+void DecisionMaker::InitBehaviorStates() {
- m_pStopState = new StopState(&m_params, 0, 0);
- m_pMissionCompleteState = new MissionAccomplishedStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), 0);
- m_pGoalState = new GoalStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pMissionCompleteState);
- m_pGoToGoalState = new ForwardStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoalState);
- m_pInitState = new InitStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pStopState = new StopState(&m_params, 0, 0);
+ m_pMissionCompleteState = new MissionAccomplishedStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), 0);
+ m_pGoalState = new GoalStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pMissionCompleteState);
+ m_pGoToGoalState = new ForwardStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoalState);
+ m_pInitState = new InitStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pFollowState = new FollowStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pAvoidObstacleState = new SwerveStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pStopSignWaitState = new StopSignWaitStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pStopSignStopState = new StopSignStopStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pStopSignWaitState);
+ m_pFollowState = new FollowStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pAvoidObstacleState = new SwerveStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pStopSignWaitState = new StopSignWaitStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pStopSignStopState = new StopSignStopStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pStopSignWaitState);
- m_pTrafficLightWaitState = new TrafficLightWaitStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pTrafficLightStopState = new TrafficLightStopStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pTrafficLightWaitState = new TrafficLightWaitStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pTrafficLightStopState = new TrafficLightStopStateII(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- // Added by PHY
- m_pPedestrianState = new PedestrianState(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ // Added by PHY
+ m_pPedestrianState = new PedestrianState(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pIntersectionState = new IntersectionState(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
+ m_pIntersectionState = new IntersectionState(m_pStopState->m_pParams, m_pStopState->GetCalcParams(), m_pGoToGoalState);
- m_pGoToGoalState->InsertNextState(m_pAvoidObstacleState);
- m_pGoToGoalState->InsertNextState(m_pStopSignStopState);
- m_pGoToGoalState->InsertNextState(m_pTrafficLightStopState);
- m_pGoToGoalState->InsertNextState(m_pFollowState);
- m_pGoToGoalState->InsertNextState(m_pPedestrianState);
- m_pGoToGoalState->InsertNextState(m_pIntersectionState);
- m_pGoToGoalState->decisionMakingCount = 0;//m_params.nReliableCount;
+ m_pGoToGoalState->InsertNextState(m_pAvoidObstacleState);
+ m_pGoToGoalState->InsertNextState(m_pStopSignStopState);
+ m_pGoToGoalState->InsertNextState(m_pTrafficLightStopState);
+ m_pGoToGoalState->InsertNextState(m_pFollowState);
+ m_pGoToGoalState->InsertNextState(m_pPedestrianState);
+ m_pGoToGoalState->InsertNextState(m_pIntersectionState);
+ m_pGoToGoalState->decisionMakingCount = 0; // m_params.nReliableCount;
- m_pGoalState->InsertNextState(m_pGoToGoalState);
+ m_pGoalState->InsertNextState(m_pGoToGoalState);
- m_pStopSignWaitState->decisionMakingTime = m_params.stopSignStopTime;
- m_pStopSignWaitState->InsertNextState(m_pStopSignStopState);
- m_pStopSignWaitState->InsertNextState(m_pGoalState);
- m_pStopSignWaitState->InsertNextState(m_pPedestrianState);
+ m_pStopSignWaitState->decisionMakingTime = m_params.stopSignStopTime;
+ m_pStopSignWaitState->InsertNextState(m_pStopSignStopState);
+ m_pStopSignWaitState->InsertNextState(m_pGoalState);
+ m_pStopSignWaitState->InsertNextState(m_pPedestrianState);
- m_pStopSignStopState->InsertNextState(m_pPedestrianState);
+ m_pStopSignStopState->InsertNextState(m_pPedestrianState);
- m_pTrafficLightStopState->InsertNextState(m_pTrafficLightWaitState);
- m_pTrafficLightStopState->InsertNextState(m_pPedestrianState);
+ m_pTrafficLightStopState->InsertNextState(m_pTrafficLightWaitState);
+ m_pTrafficLightStopState->InsertNextState(m_pPedestrianState);
- m_pTrafficLightWaitState->InsertNextState(m_pTrafficLightStopState);
- m_pTrafficLightWaitState->InsertNextState(m_pGoalState);
- m_pTrafficLightWaitState->InsertNextState(m_pPedestrianState);
+ m_pTrafficLightWaitState->InsertNextState(m_pTrafficLightStopState);
+ m_pTrafficLightWaitState->InsertNextState(m_pGoalState);
+ m_pTrafficLightWaitState->InsertNextState(m_pPedestrianState);
- m_pFollowState->InsertNextState(m_pAvoidObstacleState);
- m_pFollowState->InsertNextState(m_pStopSignStopState);
- m_pFollowState->InsertNextState(m_pTrafficLightStopState);
- m_pFollowState->InsertNextState(m_pGoalState);
- m_pFollowState->InsertNextState(m_pPedestrianState);
- m_pFollowState->decisionMakingCount = 0;//m_params.nReliableCount;
+ m_pFollowState->InsertNextState(m_pAvoidObstacleState);
+ m_pFollowState->InsertNextState(m_pStopSignStopState);
+ m_pFollowState->InsertNextState(m_pTrafficLightStopState);
+ m_pFollowState->InsertNextState(m_pGoalState);
+ m_pFollowState->InsertNextState(m_pPedestrianState);
+ m_pFollowState->decisionMakingCount = 0; // m_params.nReliableCount;
- m_pAvoidObstacleState->InsertNextState(m_pPedestrianState);
+ m_pAvoidObstacleState->InsertNextState(m_pPedestrianState);
- m_pInitState->decisionMakingCount = 0;//m_params.nReliableCount;
+ m_pInitState->decisionMakingCount = 0; // m_params.nReliableCount;
- m_pCurrentBehaviorState = m_pInitState;
+ m_pCurrentBehaviorState = m_pInitState;
}
- bool DecisionMaker::GetNextTrafficLight(const int& prevTrafficLightId, const std::vector& trafficLights, PlannerHNS::TrafficLight& trafficL)
- {
- for(unsigned int i = 0; i < trafficLights.size(); i++)
- {
- double d = hypot(trafficLights.at(i).pos.y - state.pos.y, trafficLights.at(i).pos.x - state.pos.x);
- if(d <= trafficLights.at(i).stoppingDistance)
- {
- double a_diff = UtilityHNS::UtilityH::AngleBetweenTwoAnglesPositive(UtilityHNS::UtilityH::FixNegativeAngle(trafficLights.at(i).pos.a) , UtilityHNS::UtilityH::FixNegativeAngle(state.pos.a));
-
- if(a_diff < M_PI_2 && trafficLights.at(i).id != prevTrafficLightId)
- {
- //std::cout << "Detected Light, ID = " << trafficLights.at(i).id << ", Distance = " << d << ", Angle = " << trafficLights.at(i).pos.a*RAD2DEG << ", Car Heading = " << state.pos.a*RAD2DEG << ", Diff = " << a_diff*RAD2DEG << std::endl;
- trafficL = trafficLights.at(i);
- return true;
- }
- }
- }
-
- return false;
- }
-
- void DecisionMaker::CalculateImportantParameterForDecisionMaking(const PlannerHNS::VehicleState& car_state,
- const int& goalID, const bool& bEmergencyStop, const std::vector& detectedLights,
- const TrajectoryCost& bestTrajectory)
- {
- if(m_TotalPath.size() == 0) return;
-
- PreCalculatedConditions* pValues = m_pCurrentBehaviorState->GetCalcParams();
-
- if(m_CarInfo.max_deceleration != 0)
- pValues->minStoppingDistance = -pow(car_state.speed, 2)/(m_CarInfo.max_deceleration);
-
- pValues->iCentralTrajectory = m_pCurrentBehaviorState->m_pParams->rollOutNumber/2;
-
- if(pValues->iPrevSafeTrajectory < 0)
- pValues->iPrevSafeTrajectory = pValues->iCentralTrajectory;
-
- pValues->stoppingDistances.clear();
- pValues->currentVelocity = car_state.speed;
- pValues->bTrafficIsRed = false;
- pValues->currentTrafficLightID = -1;
- pValues->bFullyBlock = false;
-
- pValues->distanceToNext = bestTrajectory.closest_obj_distance;
- pValues->velocityOfNext = bestTrajectory.closest_obj_velocity;
-
- if(bestTrajectory.index >=0 && bestTrajectory.index < (int)m_RollOuts.size())
- pValues->iCurrSafeTrajectory = bestTrajectory.index;
- else
- pValues->iCurrSafeTrajectory = pValues->iCentralTrajectory;
-
- pValues->bFullyBlock = bestTrajectory.bBlocked;
-
- if(bestTrajectory.lane_index >=0)
- pValues->iCurrSafeLane = bestTrajectory.lane_index;
- else
- {
- PlannerHNS::RelativeInfo info;
- PlannerHNS::PlanningHelpers::GetRelativeInfoRange(m_TotalPath, state, m_params.rollOutDensity*m_params.rollOutNumber/2.0 + 0.1, info);
- pValues->iCurrSafeLane = info.iGlobalPath;
- }
-
- double critical_long_front_distance = m_CarInfo.wheel_base/2.0 + m_CarInfo.length/2.0 + m_params.verticalSafetyDistance;
-
- // HJW modified
- // ISSUE: Stop distnace should be calculated dynamically on real vehicle
- //if(ReachEndOfGlobalPath(pValues->minStoppingDistance + critical_long_front_distance, pValues->iCurrSafeLane))
- if(ReachEndOfGlobalPath(0.3, pValues->iCurrSafeLane))
- pValues->currentGoalID = -1;
- else
- pValues->currentGoalID = goalID;
-
- m_iCurrentTotalPathId = pValues->iCurrSafeLane;
-
- // For Intersection
- m_params.isInsideIntersection = m_isInsideIntersection;
- m_params.obstacleinRiskyArea = (m_riskyLeft || m_riskyRight);
- m_params.closestIntersectionDistance = m_closestIntersectionDistance;
-
- // std::cout << "isIn : " << m_params.isInsideIntersection << " left : " << m_params.turnLeft << " right : " << m_params.turnRight << std::endl;
-
- // For Traffic Signal
-
- int stopLineID = -1;
- int stopSignID = -1;
- double stopLineLength = -1;
- int trafficLightID = -1;
- double distanceToClosestStopLine = 0;
- bool bShouldForward = true;
- bool traffic_detected = false;
- double remain_time = 0;
-
- distanceToClosestStopLine = PlanningHelpers::CalculateStopLineDistance_RUBIS(m_TotalPath.at(pValues->iCurrSafeLane), state, m_Map.stopLines, stopLineID, stopLineLength, trafficLightID) - critical_long_front_distance;
-
- // std::cout << "StopLineID : " << stopLineID << ", TrafficLightID : " << trafficLightID << ", Distance: " << distanceToClosestStopLine << ", MinStopDistance: " << pValues->minStoppingDistance << std::endl;
- // std::cout << "detected Lights # : " << detectedLights.size() << std::endl;
-
- if(m_pCurrentBehaviorState->m_pParams->enableTrafficLightBehavior){
-
- for(unsigned int i=0; i< detectedLights.size(); i++)
- {
- if(detectedLights.at(i).id == trafficLightID){
- traffic_detected = true;
-
- ////// V2X without remain time
- remain_time = m_remainTrafficLightWaitingTime;
- // new light case
- if(detectedLights.at(i).id != m_prevTrafficLightID){
- if(detectedLights.at(i).lightState == GREEN_LIGHT){
- remain_time = detectedLights.at(i).routine.at(1); // Add yellow light
- }
- else{ // For yellow, red case
- remain_time = 0;
- }
+bool DecisionMaker::GetNextTrafficLight(const int &prevTrafficLightId, const std::vector &trafficLights,
+ PlannerHNS::TrafficLight &trafficL) {
+ for (unsigned int i = 0; i < trafficLights.size(); i++) {
+ double d = hypot(trafficLights.at(i).pos.y - state.pos.y, trafficLights.at(i).pos.x - state.pos.x);
+ if (d <= trafficLights.at(i).stoppingDistance) {
+ double a_diff = UtilityHNS::UtilityH::AngleBetweenTwoAnglesPositive(UtilityHNS::UtilityH::FixNegativeAngle(trafficLights.at(i).pos.a),
+ UtilityHNS::UtilityH::FixNegativeAngle(state.pos.a));
+
+ if (a_diff < M_PI_2 && trafficLights.at(i).id != prevTrafficLightId) {
+ // std::cout << "Detected Light, ID = " << trafficLights.at(i).id << ", Distance = " << d << ", Angle = " <<
+ // trafficLights.at(i).pos.a*RAD2DEG << ", Car Heading = " << state.pos.a*RAD2DEG << ", Diff = " << a_diff*RAD2DEG << std::endl;
+ trafficL = trafficLights.at(i);
+ return true;
+ }
}
- else if(detectedLights.at(i).lightState != m_prevTrafficLightSignal){
- if(detectedLights.at(i).lightState == GREEN_LIGHT){ // R -> G
- // G Time + Y Time
- remain_time = detectedLights.at(i).routine.at(0) + detectedLights.at(i).routine.at(1);
- }
- else if(detectedLights.at(i).lightState == YELLOW_LIGHT){ // G -> Y
- remain_time = detectedLights.at(i).routine.at(1);
- }
- else{ // Y -> R
- remain_time = detectedLights.at(i).routine.at(2);
- }
- }
- else{
- remain_time -= 0.01; // spin period;
- if(remain_time < 0) remain_time = 0.0;
- }
-
- if(distanceToClosestStopLine < m_params.stopLineDetectionDistance && distanceToClosestStopLine > 0){
- bool bGreenTrafficLight = !(detectedLights.at(i).lightState == RED_LIGHT);
- double reachableDistance = m_params.maxSpeed * detectedLights.at(i).remainTime / 2;
- bShouldForward = (bGreenTrafficLight && reachableDistance > distanceToClosestStopLine) ||
- (!bGreenTrafficLight && reachableDistance < distanceToClosestStopLine);
+ }
- pValues->currentTrafficLightID = trafficLightID;
- pValues->stoppingDistances.push_back(distanceToClosestStopLine);
- }
+ return false;
+}
- m_prevTrafficLightID = trafficLightID;
- m_prevTrafficLightSignal = detectedLights.at(i).lightState;
+void DecisionMaker::CalculateImportantParameterForDecisionMaking(const PlannerHNS::VehicleState &car_state, const int &goalID,
+ const bool &bEmergencyStop, const std::vector &detectedLights,
+ const TrajectoryCost &bestTrajectory) {
+ if (m_TotalPath.size() == 0)
+ return;
- ////// V2X with remain time and stop line length
- // double remain_time = detectedLights.at(i).remainTime;
- // if(detectedLights.at(i).lightState == GREEN_LIGHT){ // Add time for yellow lights time
- // remain_time += detectedLights.at(i).routine.at(1); // Add yellow light
- // }
- // double reachableDistance = m_params.maxSpeed * detectedLights.at(i).remainTime / 2;
- // bool bGreenTrafficLight = !(detectedLights.at(i).lightState == RED_LIGHT);
- // bShouldForward = (bGreenTrafficLight && reachableDistance > distanceToClosestStopLine + stopLineLength) ||
- // (!bGreenTrafficLight && reachableDistance < distanceToClosestStopLine);
-
- ////// V2X with remain time without stop line length
- // double remain_time = detectedLights.at(i).remainTime;
- // if(detectedLights.at(i).lightState == GREEN_LIGHT){ // Add time for yellow lights time
- // remain_time += detectedLights.at(i).routine.at(1); // Add yellow light
- // }
- // double reachableDistance = m_params.maxSpeed * detectedLights.at(i).remainTime / 2;
- // bool bGreenTrafficLight = !(detectedLights.at(i).lightState == RED_LIGHT);
- // bShouldForward = (bGreenTrafficLight && reachableDistance > distanceToClosestStopLine) ||
- // (!bGreenTrafficLight && reachableDistance < distanceToClosestStopLine);
- }
- }
+ PreCalculatedConditions *pValues = m_pCurrentBehaviorState->GetCalcParams();
- if(!traffic_detected){
- m_prevTrafficLightID = -1;
- m_prevTrafficLightSignal = UNKNOWN_LIGHT;
- }
+ if (m_CarInfo.max_deceleration != 0)
+ pValues->minStoppingDistance = -pow(car_state.speed, 2) / (m_CarInfo.max_deceleration);
- m_remainTrafficLightWaitingTime = remain_time;
- }
-
- pValues->bTrafficIsRed = !bShouldForward;
-
- if(bEmergencyStop)
- {
- pValues->bFullyBlock = true;
- pValues->distanceToNext = 1;
- pValues->velocityOfNext = 0;
- }
- //cout << "Distances: " << pValues->stoppingDistances.size() << ", Distance To Stop : " << pValues->distanceToStop << endl;
- }
-
- void DecisionMaker::UpdateCurrentLane(const double& search_distance)
- {
- PlannerHNS::Lane* pMapLane = 0;
- PlannerHNS::Lane* pPathLane = 0;
- pPathLane = MappingHelpers::GetLaneFromPath(state, m_TotalPath.at(m_iCurrentTotalPathId));
- if(!pPathLane)
- {
- std::cout << "Performance Alert: Can't Find Lane Information in Global Path, Searching the Map :( " << std::endl;
- pMapLane = MappingHelpers::GetClosestLaneFromMap(state, m_Map, search_distance);
- }
-
- if(pPathLane)
- pLane = pPathLane;
- else if(pMapLane)
- pLane = pMapLane;
- else
- pLane = 0;
- }
-
- bool DecisionMaker::ReachEndOfGlobalPath(const double& min_distance, const int& iGlobalPathIndex)
- {
- if(m_TotalPath.size()==0) return false;
-
- PlannerHNS::RelativeInfo info;
- PlanningHelpers::GetRelativeInfo(m_TotalPath.at(iGlobalPathIndex), state, info);
-
- double d = 0;
- for(unsigned int i = info.iFront; i < m_TotalPath.at(iGlobalPathIndex).size()-1; i++)
- {
- d+= hypot(m_TotalPath.at(iGlobalPathIndex).at(i+1).pos.y - m_TotalPath.at(iGlobalPathIndex).at(i).pos.y, m_TotalPath.at(iGlobalPathIndex).at(i+1).pos.x - m_TotalPath.at(iGlobalPathIndex).at(i).pos.x);
- if(d > min_distance)
- return false;
- }
-
- return true;
- }
-
-void DecisionMaker::SetNewGlobalPath(const std::vector >& globalPath)
-{
- if(m_pCurrentBehaviorState)
- {
- m_pCurrentBehaviorState->GetCalcParams()->bNewGlobalPath = true;
- m_TotalOriginalPath = globalPath;
- }
- }
-
-bool DecisionMaker::SelectSafeTrajectory()
-{
- bool bNewTrajectory = false;
- PlannerHNS::PreCalculatedConditions *preCalcPrams = m_pCurrentBehaviorState->GetCalcParams();
-
- if(!preCalcPrams || m_RollOuts.size() == 0) return bNewTrajectory;
-
- int currIndex = PlannerHNS::PlanningHelpers::GetClosestNextPointIndexFast(m_Path, state);
- int index_limit = 0;
- if(index_limit<=0)
- index_limit = m_Path.size()/2.0;
- if(currIndex > index_limit
- || preCalcPrams->bRePlan
- || preCalcPrams->bNewGlobalPath)
- {
- std::cout << "New Local Plan !! " << currIndex << ", "<< preCalcPrams->bRePlan << ", " << preCalcPrams->bNewGlobalPath << ", " << m_TotalOriginalPath.at(0).size() << ", PrevLocal: " << m_Path.size();
- m_Path = m_RollOuts.at(preCalcPrams->iCurrSafeTrajectory);
- std::cout << ", NewLocal: " << m_Path.size() << std::endl;
+ pValues->iCentralTrajectory = m_pCurrentBehaviorState->m_pParams->rollOutNumber / 2;
- preCalcPrams->bNewGlobalPath = false;
- preCalcPrams->bRePlan = false;
- bNewTrajectory = true;
- }
+ if (pValues->iPrevSafeTrajectory < 0)
+ pValues->iPrevSafeTrajectory = pValues->iCentralTrajectory;
- return bNewTrajectory;
- }
+ pValues->stoppingDistances.clear();
+ pValues->currentVelocity = car_state.speed;
+ pValues->bTrafficIsRed = false;
+ pValues->currentTrafficLightID = -1;
+ pValues->bFullyBlock = false;
- PlannerHNS::BehaviorState DecisionMaker::GenerateBehaviorState(const PlannerHNS::VehicleState& vehicleState)
- {
- PlannerHNS::PreCalculatedConditions *preCalcPrams = m_pCurrentBehaviorState->GetCalcParams();
+ pValues->distanceToNext = bestTrajectory.closest_obj_distance;
+ pValues->velocityOfNext = bestTrajectory.closest_obj_velocity;
- m_pCurrentBehaviorState = m_pCurrentBehaviorState->GetNextState();
- if(m_pCurrentBehaviorState==0)
- m_pCurrentBehaviorState = m_pInitState;
+ if (bestTrajectory.index >= 0 && bestTrajectory.index < (int)m_RollOuts.size()) {
+ pValues->iCurrSafeTrajectory = bestTrajectory.index;
+ } else {
+ pValues->iCurrSafeTrajectory = pValues->iCentralTrajectory;
+ }
- PlannerHNS::BehaviorState currentBehavior;
+ if (pValues->bFullyBlock == false)
+ pValues->bFullyBlock = bestTrajectory.bBlocked;
- currentBehavior.state = m_pCurrentBehaviorState->m_Behavior;
- currentBehavior.followDistance = preCalcPrams->distanceToNext;
+ if (bestTrajectory.lane_index >= 0)
+ pValues->iCurrSafeLane = bestTrajectory.lane_index;
+ else {
+ PlannerHNS::RelativeInfo info;
+ PlannerHNS::PlanningHelpers::GetRelativeInfoRange(m_TotalPath, state, m_params.rollOutDensity * m_params.rollOutNumber / 2.0 + 0.1, info);
+ pValues->iCurrSafeLane = info.iGlobalPath;
+ }
- currentBehavior.minVelocity = 0;
- currentBehavior.stopDistance = preCalcPrams->distanceToStop();
- currentBehavior.followVelocity = preCalcPrams->velocityOfNext;
- if(preCalcPrams->iPrevSafeTrajectory<0 || preCalcPrams->iPrevSafeTrajectory >= m_RollOuts.size())
- currentBehavior.iTrajectory = preCalcPrams->iCurrSafeTrajectory;
- else
- currentBehavior.iTrajectory = preCalcPrams->iPrevSafeTrajectory;
+ double critical_long_front_distance = m_CarInfo.wheel_base / 2.0 + m_CarInfo.length / 2.0 + m_params.verticalSafetyDistance;
- double average_braking_distance = -pow(vehicleState.speed, 2)/(m_CarInfo.max_deceleration) + m_params.additionalBrakingDistance;
+ // HJW modified
+ // ISSUE: Stop distnace should be calculated dynamically on real vehicle
+ // if(ReachEndOfGlobalPath(pValues->minStoppingDistance + critical_long_front_distance, pValues->iCurrSafeLane))
+ if (ReachEndOfGlobalPath(0.3, pValues->iCurrSafeLane))
+ pValues->currentGoalID = -1;
+ else
+ pValues->currentGoalID = goalID;
+
+ m_iCurrentTotalPathId = pValues->iCurrSafeLane;
+
+ // For Intersection
+ m_params.isInsideIntersection = m_isInsideIntersection;
+ m_params.obstacleinRiskyArea = (m_riskyLeft || m_riskyRight);
+ m_params.closestIntersectionDistance = m_closestIntersectionDistance;
+
+ // std::cout << "isIn : " << m_params.isInsideIntersection << " left : " << m_params.turnLeft << " right : " << m_params.turnRight << std::endl;
+
+ // For Traffic Signal
+
+ int stopLineID = -1;
+ int stopSignID = -1;
+ double stopLineLength = -1;
+ int trafficLightID = -1;
+ double distanceToClosestStopLine = 0;
+ bool bShouldForward = true;
+ bool traffic_detected = false;
+ double remain_time = 0;
+
+ distanceToClosestStopLine = PlanningHelpers::CalculateStopLineDistance_RUBIS(m_TotalPath.at(pValues->iCurrSafeLane), state, m_Map.stopLines,
+ stopLineID, stopLineLength, trafficLightID) -
+ critical_long_front_distance;
+
+ // std::cout << "StopLineID : " << stopLineID << ", TrafficLightID : " << trafficLightID << ", Distance: " << distanceToClosestStopLine << ",
+ // MinStopDistance: " << pValues->minStoppingDistance << std::endl; std::cout << "detected Lights # : " << detectedLights.size() << std::endl;
+
+ if (m_pCurrentBehaviorState->m_pParams->enableTrafficLightBehavior) {
+
+ for (unsigned int i = 0; i < detectedLights.size(); i++) {
+ if (detectedLights.at(i).id == trafficLightID) {
+ traffic_detected = true;
+
+ ////// V2X without remain time
+ remain_time = m_remainTrafficLightWaitingTime;
+ // new light case
+ if (detectedLights.at(i).id != m_prevTrafficLightID) {
+ if (detectedLights.at(i).lightState == GREEN_LIGHT) {
+ remain_time = detectedLights.at(i).routine.at(1); // Add yellow light
+ } else { // For yellow, red case
+ remain_time = 0;
+ }
+ } else if (detectedLights.at(i).lightState != m_prevTrafficLightSignal) {
+ if (detectedLights.at(i).lightState == GREEN_LIGHT) { // R -> G
+ // G Time + Y Time
+ remain_time = detectedLights.at(i).routine.at(0) + detectedLights.at(i).routine.at(1);
+ } else if (detectedLights.at(i).lightState == YELLOW_LIGHT) { // G -> Y
+ remain_time = detectedLights.at(i).routine.at(1);
+ } else { // Y -> R
+ remain_time = detectedLights.at(i).routine.at(2);
+ }
+ } else {
+ remain_time -= 0.01; // spin period;
+ if (remain_time < 0)
+ remain_time = 0.0;
+ }
+
+ if (distanceToClosestStopLine < m_params.stopLineDetectionDistance && distanceToClosestStopLine > 0) {
+ bool bGreenTrafficLight = !(detectedLights.at(i).lightState == RED_LIGHT);
+ double reachableDistance = m_params.maxSpeed * detectedLights.at(i).remainTime / 2;
+ bShouldForward = (bGreenTrafficLight && reachableDistance > distanceToClosestStopLine) ||
+ (!bGreenTrafficLight && reachableDistance < distanceToClosestStopLine);
+
+ pValues->currentTrafficLightID = trafficLightID;
+ pValues->stoppingDistances.push_back(distanceToClosestStopLine);
+ }
+
+ m_prevTrafficLightID = trafficLightID;
+ m_prevTrafficLightSignal = detectedLights.at(i).lightState;
+
+ ////// V2X with remain time and stop line length
+ // double remain_time = detectedLights.at(i).remainTime;
+ // if(detectedLights.at(i).lightState == GREEN_LIGHT){ // Add time for yellow lights time
+ // remain_time += detectedLights.at(i).routine.at(1); // Add yellow light
+ // }
+ // double reachableDistance = m_params.maxSpeed * detectedLights.at(i).remainTime / 2;
+ // bool bGreenTrafficLight = !(detectedLights.at(i).lightState == RED_LIGHT);
+ // bShouldForward = (bGreenTrafficLight && reachableDistance > distanceToClosestStopLine + stopLineLength) ||
+ // (!bGreenTrafficLight && reachableDistance < distanceToClosestStopLine);
+
+ ////// V2X with remain time without stop line length
+ // double remain_time = detectedLights.at(i).remainTime;
+ // if(detectedLights.at(i).lightState == GREEN_LIGHT){ // Add time for yellow lights time
+ // remain_time += detectedLights.at(i).routine.at(1); // Add yellow light
+ // }
+ // double reachableDistance = m_params.maxSpeed * detectedLights.at(i).remainTime / 2;
+ // bool bGreenTrafficLight = !(detectedLights.at(i).lightState == RED_LIGHT);
+ // bShouldForward = (bGreenTrafficLight && reachableDistance > distanceToClosestStopLine) ||
+ // (!bGreenTrafficLight && reachableDistance < distanceToClosestStopLine);
+ }
+ }
- if(average_braking_distance < m_params.minIndicationDistance)
- average_braking_distance = m_params.minIndicationDistance;
+ if (!traffic_detected) {
+ m_prevTrafficLightID = -1;
+ m_prevTrafficLightSignal = UNKNOWN_LIGHT;
+ }
- double minDistanceToRollOut = 0;
- for(int i=0; ibTrafficIsRed = !bShouldForward;
- if(minDistanceToRollOut == 0 || minDistanceToRollOut > direct_distance){
- minDistanceToRollOut = direct_distance;
- currentBehavior.currTrajectory = i;
+ if (bEmergencyStop) {
+ pValues->bFullyBlock = true;
+ pValues->distanceToNext = 1;
+ pValues->velocityOfNext = 0;
}
- }
-
- // Check turn
- // Detects whether or not to turning 50m ahead
- m_turnWaypoint = m_RollOuts.at(currentBehavior.currTrajectory).at(std::min(100, int(m_RollOuts.at(currentBehavior.currTrajectory).size()))-1);
-
- currentBehavior.indicator = PlanningHelpers::GetIndicatorsFromPath(m_Path, state, average_braking_distance );
-
- return currentBehavior;
- }
-
- double DecisionMaker::UpdateVelocityDirectlyToTrajectory(const BehaviorState& beh, const VehicleState& CurrStatus, const double& dt)
- {
- if(m_TotalOriginalPath.size() ==0 ) return 0;
-
- RelativeInfo info, total_info;
- PlanningHelpers::GetRelativeInfo(m_TotalOriginalPath.at(m_iCurrentTotalPathId), state, total_info);
- PlanningHelpers::GetRelativeInfo(m_Path, state, info);
- double average_braking_distance = -pow(CurrStatus.speed, 2)/(m_CarInfo.max_deceleration) + m_params.additionalBrakingDistance;
- double max_velocity = PlannerHNS::PlanningHelpers::GetVelocityAhead(m_TotalOriginalPath.at(m_iCurrentTotalPathId), total_info, total_info.iBack, average_braking_distance);
-
- unsigned int point_index = 0;
- double critical_long_front_distance = m_CarInfo.length/2.0;
-
- if(beh.state == PEDESTRIAN_STATE){
- double desiredVelocity = -1;
- return desiredVelocity;
- }
- else if(beh.state == INTERSECTION_STATE){
-
- max_velocity = m_params.maxSpeed*0.7;
- double target_velocity = max_velocity;
-
- double e = target_velocity - CurrStatus.speed;
-
- m_pidSprintVelocity.getPID(e);
- m_pidVelocity.getPID(e);
- double desiredVelocity = m_pidIntersectionVelocity.getPID(e);
-
- if(desiredVelocity > max_velocity)
- desiredVelocity = max_velocity;
- else if(desiredVelocity < m_params.minSpeed)
- desiredVelocity = 0;
-
- // std::cout << "o_a : " << m_params.obstacleinRiskyArea << "f_d : " << beh.followDistance << std::endl;
- // std::cout << "remain_time : " << m_remainObstacleWaitingTime << std::endl;
-
- // Wait for predetermined time
- if(m_remainObstacleWaitingTime > 0){
- m_remainObstacleWaitingTime--;
- desiredVelocity = 0;
- }
- else if(m_params.obstacleinRiskyArea){
- // double desiredAcceleration = m_params.maxSpeed * m_params.maxSpeed / 2 / std::max(beh.stopDistance - m_params.stopLineMargin, 0.1);
- // double desiredVelocity = m_params.maxSpeed - desiredAcceleration * 0.1; // 0.1 stands for delta t.
- // if(desiredVelocity < 0.5)
- // desiredVelocity = 0;
- desiredVelocity = 0;
- m_remainObstacleWaitingTime = int(m_obstacleWaitingTimeinIntersection * 100);
+ // cout << "Distances: " << pValues->stoppingDistances.size() << ", Distance To Stop : " << pValues->distanceToStop << endl;
+}
+
+void DecisionMaker::UpdateCurrentLane(const double &search_distance) {
+ PlannerHNS::Lane *pMapLane = 0;
+ PlannerHNS::Lane *pPathLane = 0;
+ pPathLane = MappingHelpers::GetLaneFromPath(state, m_TotalPath.at(m_iCurrentTotalPathId));
+ if (!pPathLane) {
+ std::cout << "Performance Alert: Can't Find Lane Information in Global Path, Searching the Map :( " << std::endl;
+ pMapLane = MappingHelpers::GetClosestLaneFromMap(state, m_Map, search_distance);
}
- // else if(beh.followDistance < 30){
- // desiredVelocity = 0;
- // m_remainObstacleWaitingTime = int(m_obstacleWaitingTimeinIntersection * 100);
- // }
-
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = desiredVelocity;
-
- return desiredVelocity;
- }
- else if(beh.state == TRAFFIC_LIGHT_STOP_STATE || beh.state == TRAFFIC_LIGHT_WAIT_STATE)
- {
- double desiredAcceleration = m_params.maxSpeed * m_params.maxSpeed / 2 / std::max(beh.stopDistance - m_params.stopLineMargin, 0.1);
- double desiredVelocity = m_params.maxSpeed - desiredAcceleration * 0.1; // 0.1 stands for delta t.
-
- double e = max_velocity - CurrStatus.speed;
- m_pidSprintVelocity.getPID(e);
- m_pidVelocity.getPID(e);
- m_pidIntersectionVelocity.getPID(e);
-
- if(desiredVelocity < 0.5)
- desiredVelocity = 0;
-
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = desiredVelocity;
- return desiredVelocity;
- }
- else if(beh.state == STOP_SIGN_STOP_STATE)
- {
- PlanningHelpers::GetFollowPointOnTrajectory(m_Path, info, beh.stopDistance - critical_long_front_distance, point_index);
-
- double e = -beh.stopDistance;
- double desiredVelocity = m_pidStopping.getPID(e);
-
- double e2 = max_velocity - CurrStatus.speed;
- m_pidSprintVelocity.getPID(e2);
- m_pidVelocity.getPID(e2);
- m_pidIntersectionVelocity.getPID(e2);
-
-// std::cout << "Stopping : e=" << e << ", desiredPID=" << desiredVelocity << ", PID: " << m_pidStopping.ToString() << std::endl;
-
- if(desiredVelocity > max_velocity)
- desiredVelocity = max_velocity;
- else if(desiredVelocity < m_params.minSpeed)
- desiredVelocity = 0;
-
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = desiredVelocity;
-
- return desiredVelocity;
- }
- else if(beh.state == STOP_SIGN_WAIT_STATE)
- {
- double target_velocity = 0;
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = target_velocity;
-
- return target_velocity;
- }
- else if(beh.state == FOLLOW_STATE)
- {
-
- double deceleration_critical = 0;
- double inv_time = 2.0*((beh.followDistance- (critical_long_front_distance+m_params.additionalBrakingDistance))-CurrStatus.speed);
- if(inv_time <= 0)
- deceleration_critical = m_CarInfo.max_deceleration;
+
+ if (pPathLane)
+ pLane = pPathLane;
+ else if (pMapLane)
+ pLane = pMapLane;
else
- deceleration_critical = CurrStatus.speed*CurrStatus.speed/inv_time;
+ pLane = 0;
+}
- if(deceleration_critical > 0) deceleration_critical = -deceleration_critical;
- if(deceleration_critical < - m_CarInfo.max_acceleration) deceleration_critical = - m_CarInfo.max_acceleration;
+bool DecisionMaker::ReachEndOfGlobalPath(const double &min_distance, const int &iGlobalPathIndex) {
+ if (m_TotalPath.size() == 0)
+ return false;
- double desiredVelocity = (deceleration_critical * dt) + CurrStatus.speed;
+ PlannerHNS::RelativeInfo info;
+ PlanningHelpers::GetRelativeInfo(m_TotalPath.at(iGlobalPathIndex), state, info);
- if(desiredVelocity > m_params.maxSpeed)
- desiredVelocity = m_params.maxSpeed;
+ double d = 0;
+ for (unsigned int i = info.iFront; i < m_TotalPath.at(iGlobalPathIndex).size() - 1; i++) {
+ d += hypot(m_TotalPath.at(iGlobalPathIndex).at(i + 1).pos.y - m_TotalPath.at(iGlobalPathIndex).at(i).pos.y,
+ m_TotalPath.at(iGlobalPathIndex).at(i + 1).pos.x - m_TotalPath.at(iGlobalPathIndex).at(i).pos.x);
+ if (d > min_distance)
+ return false;
+ }
- if((desiredVelocity < 0.1 && desiredVelocity > -0.1) || beh.followDistance <= 0) //use only effective velocities
- desiredVelocity = 0;
+ return true;
+}
- //std::cout << "Acc: V: " << desiredVelocity << ", Accel: " << deceleration_critical<< std::endl;
+void DecisionMaker::SetNewGlobalPath(const std::vector> &globalPath) {
+ if (m_pCurrentBehaviorState) {
+ m_pCurrentBehaviorState->GetCalcParams()->bNewGlobalPath = true;
+ m_TotalOriginalPath = globalPath;
+ }
+}
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = desiredVelocity;
+bool DecisionMaker::SelectSafeTrajectory() {
+ bool bNewTrajectory = false;
+ PlannerHNS::PreCalculatedConditions *preCalcPrams = m_pCurrentBehaviorState->GetCalcParams();
- return desiredVelocity;
+ if (!preCalcPrams || m_RollOuts.size() == 0)
+ return bNewTrajectory;
- }
- else if(beh.state == FORWARD_STATE)
- {
- if(m_sprintSwitch == true){
- max_velocity = m_sprintSpeed;
- }
+ // int currIndex = PlannerHNS::PlanningHelpers::GetClosestNextPointIndexFast(m_Path, state);
+ // int index_limit = 0;
+ // if(index_limit<=0)
+ // index_limit = m_Path.size()/2.0;
- double target_velocity = max_velocity;
- bool bSlowBecauseChange=false;
+ if (preCalcPrams->iCurrSafeTrajectory != m_prevSafeTrajectory || preCalcPrams->bRePlan || preCalcPrams->bNewGlobalPath) {
+ // m_Path = m_RollOuts.at(preCalcPrams->iCurrSafeTrajectory);
- // std::cout << "curr Traj : " << beh.currTrajectory << ", curr Safe Traj : " << m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory << std::endl;
- // if(m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory != m_pCurrentBehaviorState->GetCalcParams()->iCentralTrajectory)
- if(beh.currTrajectory != m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory)
- {
- // target_velocity /= fabs(beh.currTrajectory - m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory);
- target_velocity *= 0.5;
- bSlowBecauseChange = true;
+ preCalcPrams->bNewGlobalPath = false;
+ preCalcPrams->bRePlan = false;
+ bNewTrajectory = true;
}
-
- double e = target_velocity - CurrStatus.speed;
- double desiredVelocity = 0;
- double sprint_pid_vel, forward_pid_vel;
- sprint_pid_vel = m_pidSprintVelocity.getPID(e);
- forward_pid_vel = m_pidVelocity.getPID(e);
- m_pidIntersectionVelocity.getPID(e);
+ m_Path = m_RollOuts.at(preCalcPrams->iCurrSafeTrajectory);
+ m_prevSafeTrajectory = preCalcPrams->iCurrSafeTrajectory;
- if(m_sprintSwitch == true)
- desiredVelocity = sprint_pid_vel;
+ return bNewTrajectory;
+}
+
+PlannerHNS::BehaviorState DecisionMaker::GenerateBehaviorState(const PlannerHNS::VehicleState &vehicleState) {
+ PlannerHNS::PreCalculatedConditions *preCalcPrams = m_pCurrentBehaviorState->GetCalcParams();
+
+ m_pCurrentBehaviorState = m_pCurrentBehaviorState->GetNextState();
+ if (m_pCurrentBehaviorState == 0)
+ m_pCurrentBehaviorState = m_pInitState;
+
+ PlannerHNS::BehaviorState currentBehavior;
+
+ currentBehavior.state = m_pCurrentBehaviorState->m_Behavior;
+ currentBehavior.followDistance = preCalcPrams->distanceToNext;
+
+ currentBehavior.minVelocity = 0;
+ currentBehavior.stopDistance = preCalcPrams->distanceToStop();
+ currentBehavior.followVelocity = preCalcPrams->velocityOfNext;
+ if (preCalcPrams->iPrevSafeTrajectory < 0 || preCalcPrams->iPrevSafeTrajectory >= m_RollOuts.size())
+ currentBehavior.iTrajectory = preCalcPrams->iCurrSafeTrajectory;
else
- desiredVelocity = forward_pid_vel;
-
- if(m_params.enableSlowDownOnCurve){
- GPSPoint curr_point = m_Path.at(info.iFront).pos; // current waypoint (p1)
- GPSPoint near_point = m_Path.at(std::min(info.iFront + 3, int(m_Path.size())-1)).pos; // waypoint after 1.5m (p2)
- GPSPoint far_point = m_Path.at(std::min(info.iFront + 100, int(m_Path.size())-1)).pos; // waypoint afeter 50m (p3)
-
- double deg_1 = atan2((near_point.y - curr_point.y), (near_point.x - curr_point.x)) / 3.14 * 180;
- double deg_2 = atan2((far_point.y - curr_point.y), (far_point.x - curr_point.x)) / 3.14 * 180;
- double angle_diff = std::abs(deg_1 - deg_2); // angle between p1p2 and p1p3
- if (angle_diff > 180){
- angle_diff = 360 - angle_diff;
- }
-
- // std::cout << "curvature : " << angle_diff << std::endl;
-
- if (angle_diff > 7){ // Slow down when angle is large
- desiredVelocity = m_params.maxSpeed * 40 / (angle_diff + 33);
- // desiredVelocity = m_params.maxSpeed * 17 / (angle_diff + 10);
- if(desiredVelocity > previous_velocity){
- desiredVelocity = previous_velocity;
+ currentBehavior.iTrajectory = preCalcPrams->iPrevSafeTrajectory;
+
+ double average_braking_distance = -pow(vehicleState.speed, 2) / (m_CarInfo.max_deceleration) + m_params.additionalBrakingDistance;
+
+ if (average_braking_distance < m_params.minIndicationDistance)
+ average_braking_distance = m_params.minIndicationDistance;
+
+ double minDistanceToRollOut = 0;
+ for (int i = 0; i < m_RollOuts.size(); i++) {
+ const PlannerHNS::WayPoint rollout_start_waypoint = m_RollOuts.at(i).at(std::min(10, int(m_RollOuts.at(i).size())) - 1);
+
+ double direct_distance = hypot(rollout_start_waypoint.pos.y - state.pos.y, rollout_start_waypoint.pos.x - state.pos.x);
+
+ if (minDistanceToRollOut == 0 || minDistanceToRollOut > direct_distance) {
+ minDistanceToRollOut = direct_distance;
+ currentBehavior.currTrajectory = i;
}
- curveSlowDownCount = 0;
- }
- // if (angle_diff > 30){
- // desiredVelocity = m_params.maxSpeed * 0.8;
- // curveSlowDownCount = 0;
- // // desiredVelocity = max_velocity * 100 / (angle_diff + 90);
- // }
- // else if(angle_diff > 10){
- // desiredVelocity = m_params.maxSpeed * 0.6;
- // curveSlowDownCount = 0;
- // }
- else if(curveSlowDownCount < 400){ // wait 4 sec when angle become less than 7 // TODO: Check its feasibility when pure pursuit is sufficiently tuned
- desiredVelocity = previous_velocity + (m_params.maxSpeed - previous_velocity) / 100;
- curveSlowDownCount += 1;
- }
- else{
- desiredVelocity = m_params.maxSpeed;
- }
-
- if(desiredVelocity < m_params.maxSpeed * m_params.curveVelocityRatio){ // minimum of target velocity is max_speed / 2
- desiredVelocity = m_params.maxSpeed * m_params.curveVelocityRatio;
- }
- previous_velocity = desiredVelocity;
}
- for(auto it = m_Path.begin(); it != m_Path.end(); ++it){
- (*it).v = desiredVelocity;
- }
+ // Check turn
+ // Detects whether or not to turning 50m ahead
+ m_turnWaypoint = m_RollOuts.at(currentBehavior.currTrajectory).at(std::min(100, int(m_RollOuts.at(currentBehavior.currTrajectory).size())) - 1);
+
+ currentBehavior.indicator = PlanningHelpers::GetIndicatorsFromPath(m_Path, state, average_braking_distance);
+
+ return currentBehavior;
+}
+
+double DecisionMaker::UpdateVelocityDirectlyToTrajectory(const BehaviorState &beh, const VehicleState &CurrStatus, const double &dt) {
+ if (m_TotalOriginalPath.size() == 0)
+ return 0;
+
+ RelativeInfo info, total_info;
+ PlanningHelpers::GetRelativeInfo(m_TotalOriginalPath.at(m_iCurrentTotalPathId), state, total_info);
+ PlanningHelpers::GetRelativeInfo(m_Path, state, info);
+ double average_braking_distance = -pow(CurrStatus.speed, 2) / (m_CarInfo.max_deceleration) + m_params.additionalBrakingDistance;
+ double max_velocity = PlannerHNS::PlanningHelpers::GetVelocityAhead(m_TotalOriginalPath.at(m_iCurrentTotalPathId), total_info, total_info.iBack,
+ average_braking_distance);
+
+ unsigned int point_index = 0;
+ double critical_long_front_distance = m_CarInfo.length / 2.0;
+
+ if (beh.state == PEDESTRIAN_STATE) {
+ double desiredVelocity = -1;
+ return desiredVelocity;
+ } else if (beh.state == INTERSECTION_STATE) {
+
+ max_velocity = m_params.maxSpeed * 0.7;
+ double target_velocity = max_velocity;
+
+ double e = target_velocity - CurrStatus.speed;
+
+ m_pidSprintVelocity.getPID(e);
+ m_pidVelocity.getPID(e);
+ double desiredVelocity = m_pidIntersectionVelocity.getPID(e);
+
+ if (desiredVelocity > max_velocity)
+ desiredVelocity = max_velocity;
+ else if (desiredVelocity < m_params.minSpeed)
+ desiredVelocity = 0;
+
+ // std::cout << "o_a : " << m_params.obstacleinRiskyArea << "f_d : " << beh.followDistance << std::endl;
+ // std::cout << "remain_time : " << m_remainObstacleWaitingTime << std::endl;
+
+ // Wait for predetermined time
+ if (m_remainObstacleWaitingTime > 0) {
+ m_remainObstacleWaitingTime--;
+ desiredVelocity = 0;
+ } else if (m_params.obstacleinRiskyArea) {
+ // double desiredAcceleration = m_params.maxSpeed * m_params.maxSpeed / 2 / std::max(beh.stopDistance - m_params.stopLineMargin, 0.1);
+ // double desiredVelocity = m_params.maxSpeed - desiredAcceleration * 0.1; // 0.1 stands for delta t.
+ // if(desiredVelocity < 0.5)
+ // desiredVelocity = 0;
+ desiredVelocity = 0;
+ m_remainObstacleWaitingTime = int(m_obstacleWaitingTimeinIntersection * 100);
+ }
+ // else if(beh.followDistance < 30){
+ // desiredVelocity = 0;
+ // m_remainObstacleWaitingTime = int(m_obstacleWaitingTimeinIntersection * 100);
+ // }
+
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = desiredVelocity;
+
+ return desiredVelocity;
+ } else if (beh.state == TRAFFIC_LIGHT_STOP_STATE || beh.state == TRAFFIC_LIGHT_WAIT_STATE) {
+ double desiredAcceleration = m_params.maxSpeed * m_params.maxSpeed / 2 / std::max(beh.stopDistance - m_params.stopLineMargin, 0.1);
+ double desiredVelocity = m_params.maxSpeed - desiredAcceleration * 0.1; // 0.1 stands for delta t.
+
+ double e = max_velocity - CurrStatus.speed;
+ m_pidSprintVelocity.getPID(e);
+ m_pidVelocity.getPID(e);
+ m_pidIntersectionVelocity.getPID(e);
- // std::cout << "desiredVelocity : " << desiredVelocity << std::endl;
-
- // std::cout << "Target Velocity: " << target_velocity << ", desired : " << desiredVelocity << ", Change Slowdown: " << bSlowBecauseChange << std::endl;
-
- if(desiredVelocity>max_velocity)
- desiredVelocity = max_velocity;
- else if(desiredVelocity < m_params.minSpeed)
- desiredVelocity = 0;
-
- return desiredVelocity;
- }
- else if(beh.state == OBSTACLE_AVOIDANCE_STATE )
- {
- double target_velocity = max_velocity;
- bool bSlowBecauseChange=false;
- // std::cout << "curr Traj : " << beh.currTrajectory << ", curr Safe Traj : " << m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory << std::endl;
- // if(m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory != m_pCurrentBehaviorState->GetCalcParams()->iCentralTrajectory)
- if(beh.currTrajectory != m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory)
- {
- // target_velocity /= fabs(beh.currTrajectory - m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory);
- target_velocity *= 0.5;
- bSlowBecauseChange = true;
+ if (desiredVelocity < 0.5)
+ desiredVelocity = 0;
+
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = desiredVelocity;
+ return desiredVelocity;
+ } else if (beh.state == STOP_SIGN_STOP_STATE) {
+ PlanningHelpers::GetFollowPointOnTrajectory(m_Path, info, beh.stopDistance - critical_long_front_distance, point_index);
+
+ double e = -beh.stopDistance;
+ double desiredVelocity = m_pidStopping.getPID(e);
+
+ double e2 = max_velocity - CurrStatus.speed;
+ m_pidSprintVelocity.getPID(e2);
+ m_pidVelocity.getPID(e2);
+ m_pidIntersectionVelocity.getPID(e2);
+
+ // std::cout << "Stopping : e=" << e << ", desiredPID=" << desiredVelocity << ", PID: " << m_pidStopping.ToString() << std::endl;
+
+ if (desiredVelocity > max_velocity)
+ desiredVelocity = max_velocity;
+ else if (desiredVelocity < m_params.minSpeed)
+ desiredVelocity = 0;
+
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = desiredVelocity;
+
+ return desiredVelocity;
+ } else if (beh.state == STOP_SIGN_WAIT_STATE) {
+ double target_velocity = 0;
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = target_velocity;
+
+ return target_velocity;
+ } else if (beh.state == FOLLOW_STATE) {
+
+ double deceleration_critical = 0;
+ double inv_time = 2.0 * ((beh.followDistance - (critical_long_front_distance + m_params.additionalBrakingDistance)) - CurrStatus.speed);
+ if (inv_time <= 0)
+ deceleration_critical = m_CarInfo.max_deceleration;
+ else
+ deceleration_critical = CurrStatus.speed * CurrStatus.speed / inv_time;
+
+ if (deceleration_critical > 0)
+ deceleration_critical = -deceleration_critical;
+ if (deceleration_critical < -m_CarInfo.max_acceleration)
+ deceleration_critical = -m_CarInfo.max_acceleration;
+
+ double desiredVelocity = (deceleration_critical * dt) + CurrStatus.speed;
+
+ if (desiredVelocity > m_params.maxSpeed)
+ desiredVelocity = m_params.maxSpeed;
+
+ if ((desiredVelocity < 0.1 && desiredVelocity > -0.1) || beh.followDistance <= 0) // use only effective velocities
+ desiredVelocity = 0;
+
+ // std::cout << "Acc: V: " << desiredVelocity << ", Accel: " << deceleration_critical<< std::endl;
+
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = desiredVelocity;
+
+ return desiredVelocity;
+
+ } else if (beh.state == FORWARD_STATE) {
+ if (m_sprintSwitch == true) {
+ max_velocity = m_sprintSpeed;
+ }
+
+ double target_velocity = max_velocity;
+ bool bSlowBecauseChange = false;
+
+ if (beh.currTrajectory != m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory) {
+ // target_velocity /= fabs(beh.currTrajectory - m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory);
+ target_velocity *= 0.5;
+ bSlowBecauseChange = true;
+ }
+
+ double e = target_velocity - CurrStatus.speed;
+ double desiredVelocity = 0;
+
+ double sprint_pid_vel, forward_pid_vel;
+ sprint_pid_vel = m_pidSprintVelocity.getPID(e);
+ forward_pid_vel = m_pidVelocity.getPID(e);
+ m_pidIntersectionVelocity.getPID(e);
+
+ if (m_sprintSwitch == true)
+ desiredVelocity = sprint_pid_vel;
+ else
+ desiredVelocity = forward_pid_vel;
+
+ if (m_params.enableSlowDownOnCurve) {
+ GPSPoint curr_point = m_Path.at(info.iFront).pos; // current waypoint (p1)
+ GPSPoint near_point = m_Path.at(std::min(info.iFront + 3, int(m_Path.size()) - 1)).pos; // waypoint after 1.5m (p2)
+ GPSPoint far_point = m_Path.at(std::min(info.iFront + 100, int(m_Path.size()) - 1)).pos; // waypoint afeter 50m (p3)
+
+ double deg_1 = atan2((near_point.y - curr_point.y), (near_point.x - curr_point.x)) / 3.14 * 180;
+ double deg_2 = atan2((far_point.y - curr_point.y), (far_point.x - curr_point.x)) / 3.14 * 180;
+ double angle_diff = std::abs(deg_1 - deg_2); // angle between p1p2 and p1p3
+ if (angle_diff > 180) {
+ angle_diff = 360 - angle_diff;
+ }
+
+ if (angle_diff > 40) { // Slow down when angle is large
+ desiredVelocity = m_params.maxSpeed * (90-angle_diff)/90;
+
+ curveSlowDownCount = 0;
+ }
+ else if (curveSlowDownCount <
+ 400) { // wait 4 sec when angle become less than 7 // TODO: Check its feasibility when pure pursuit is sufficiently tuned
+ desiredVelocity = previous_velocity + (m_params.maxSpeed - previous_velocity) / 100;
+ curveSlowDownCount += 1;
+ } else {
+ desiredVelocity = m_params.maxSpeed;
+ }
+
+ if (desiredVelocity < m_params.maxSpeed * m_params.curveVelocityRatio) { // minimum of target velocity is max_speed * curveVelocityRatio
+ desiredVelocity = m_params.maxSpeed * m_params.curveVelocityRatio;
+ }
+ previous_velocity = desiredVelocity;
+ }
+
+ for (auto it = m_Path.begin(); it != m_Path.end(); ++it) {
+ (*it).v = desiredVelocity;
+ }
+
+ // std::cout << "desiredVelocity : " << desiredVelocity << std::endl;
+
+ // std::cout << "Target Velocity: " << target_velocity << ", desired : " << desiredVelocity << ", Change Slowdown: " << bSlowBecauseChange <<
+ // std::endl;
+
+ if (desiredVelocity > max_velocity)
+ desiredVelocity = max_velocity;
+ else if (desiredVelocity < m_params.minSpeed)
+ desiredVelocity = 0;
+
+ return desiredVelocity;
+ } else if (beh.state == OBSTACLE_AVOIDANCE_STATE) {
+ double target_velocity = max_velocity;
+ bool bSlowBecauseChange = false;
+ // std::cout << "curr Traj : " << beh.currTrajectory << ", curr Safe Traj : " << m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory
+ // << std::endl; if(m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory !=
+ // m_pCurrentBehaviorState->GetCalcParams()->iCentralTrajectory)
+ if (beh.currTrajectory != m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory) {
+ // target_velocity /= fabs(beh.currTrajectory - m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory);
+ target_velocity *= 0.5;
+ bSlowBecauseChange = true;
+ }
+
+ double e = target_velocity - CurrStatus.speed;
+ double desiredVelocity = m_pidVelocity.getPID(e);
+ m_pidSprintVelocity.getPID(e);
+ m_pidIntersectionVelocity.getPID(e);
+
+ if (desiredVelocity > max_velocity)
+ desiredVelocity = max_velocity;
+ else if (desiredVelocity < m_params.minSpeed)
+ desiredVelocity = 0;
+
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = desiredVelocity;
+
+ // std::cout << "Target Velocity: " << desiredVelocity << ", Change Slowdown: " << bSlowBecauseChange << std::endl;
+
+ return desiredVelocity;
+ } else {
+ double target_velocity = 0;
+ for (unsigned int i = 0; i < m_Path.size(); i++)
+ m_Path.at(i).v = target_velocity;
+
+ return target_velocity;
}
- double e = target_velocity - CurrStatus.speed;
- double desiredVelocity = m_pidVelocity.getPID(e);
- m_pidSprintVelocity.getPID(e);
- m_pidIntersectionVelocity.getPID(e);
-
- if(desiredVelocity>max_velocity)
- desiredVelocity = max_velocity;
- else if(desiredVelocity < m_params.minSpeed)
- desiredVelocity = 0;
-
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = desiredVelocity;
-
- // std::cout << "Target Velocity: " << desiredVelocity << ", Change Slowdown: " << bSlowBecauseChange << std::endl;
-
- return desiredVelocity;
- }
- else
- {
- double target_velocity = 0;
- for(unsigned int i = 0; i < m_Path.size(); i++)
- m_Path.at(i).v = target_velocity;
-
- return target_velocity;
- }
-
- return max_velocity;
- }
-
- PlannerHNS::BehaviorState DecisionMaker::DoOneStep(
- const double& dt,
- const PlannerHNS::WayPoint currPose,
- const PlannerHNS::VehicleState& vehicleState,
- const int& goalID,
- const std::vector& trafficLight,
- const TrajectoryCost& tc,
- const bool& bEmergencyStop)
-{
-
- PlannerHNS::BehaviorState beh;
- state = currPose;
- m_TotalPath.clear();
- for(unsigned int i = 0; i < m_TotalOriginalPath.size(); i++)
- {
- t_centerTrajectorySmoothed.clear();
- PlannerHNS::PlanningHelpers::ExtractPartFromPointToDistanceDirectionFast(m_TotalOriginalPath.at(i), state, m_params.horizonDistance , m_params.pathDensity , t_centerTrajectorySmoothed);
- m_TotalPath.push_back(t_centerTrajectorySmoothed);
- }
-
- if(m_TotalPath.size()==0) return beh;
-
- UpdateCurrentLane(m_MaxLaneSearchDistance);
-
- CalculateImportantParameterForDecisionMaking(vehicleState, goalID, bEmergencyStop, trafficLight, tc);
-
- // Enable if left turn scenario needed
- // CheckTurn();
-
- // PrintTurn();
-
- beh = GenerateBehaviorState(vehicleState);
-
- beh.bNewPlan = SelectSafeTrajectory();
-
- beh.maxVelocity = UpdateVelocityDirectlyToTrajectory(beh, vehicleState, dt);
-
- //std::cout << "Eval_i: " << tc.index << ", Curr_i: " << m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory << ", Prev_i: " << m_pCurrentBehaviorState->GetCalcParams()->iPrevSafeTrajectory << std::endl;
-
- return beh;
- }
-
- // Added by PHY
- void DecisionMaker::UpdatePedestrianAppearence(const bool pedestrianAppearence){
- m_params.pedestrianAppearence = pedestrianAppearence;
- }
-
- void DecisionMaker::printPedestrianAppearence(){
- if(m_params.pedestrianAppearence == true){
- std::cout<<"Pedestrian Appearence: True"< &trafficLight, const TrajectoryCost &tc,
+ const bool &bEmergencyStop) {
+ static double prev_max_velocity = 0.0;
+
+ PlannerHNS::BehaviorState beh;
+ state = currPose;
+ m_TotalPath.clear();
+ for (unsigned int i = 0; i < m_TotalOriginalPath.size(); i++) {
+ t_centerTrajectorySmoothed.clear();
+ PlannerHNS::PlanningHelpers::ExtractPartFromPointToDistanceDirectionFast(m_TotalOriginalPath.at(i), state, m_params.horizonDistance,
+ m_params.pathDensity, t_centerTrajectorySmoothed);
+ m_TotalPath.push_back(t_centerTrajectorySmoothed);
}
- else{
- std::cout<<"Pedestrian Appearence: False"< m_params.maxSpeed - 1) {
+ m_isTargetVelocityReady = true;
+ break;
+ }
+ }
}
- }
+ beh.maxVelocity = UpdateVelocityDirectlyToTrajectory(beh, vehicleState, dt);
- void DecisionMaker::CheckTurn(){
- if(abs(m_turnAngle) > m_turnThreshold){
- if(m_turnAngle > 0){
- m_params.turnLeft = true;
- m_params.turnRight = false;
- }
- else{
- m_params.turnLeft = false;
- m_params.turnRight = true;
- }
+ // std::cout << "Eval_i: " << tc.index << ", Curr_i: " << m_pCurrentBehaviorState->GetCalcParams()->iCurrSafeTrajectory << ", Prev_i: " <<
+ // m_pCurrentBehaviorState->GetCalcParams()->iPrevSafeTrajectory << std::endl;
+
+ return beh;
+}
+
+// Added by PHY
+void DecisionMaker::UpdatePedestrianAppearence(const bool pedestrianAppearence) { m_params.pedestrianAppearence = pedestrianAppearence; }
+
+void DecisionMaker::printPedestrianAppearence() {
+ if (m_params.pedestrianAppearence == true) {
+ std::cout << "Pedestrian Appearence: True" << std::endl;
+ } else {
+ std::cout << "Pedestrian Appearence: False" << std::endl;
}
- else{
- m_params.turnLeft = false;
- m_params.turnRight = false;
+}
+
+void DecisionMaker::CheckTurn() {
+ if (abs(m_turnAngle) > m_turnThreshold) {
+ if (m_turnAngle > 0) {
+ m_params.turnLeft = true;
+ m_params.turnRight = false;
+ } else {
+ m_params.turnLeft = false;
+ m_params.turnRight = true;
+ }
+ } else {
+ m_params.turnLeft = false;
+ m_params.turnRight = false;
}
- }
+}
- void DecisionMaker::PrintTurn(){
- std::cout<<"LEFT:"< Can't Find Global Waypoint Nodes in the Map for Start (" << sp.ToString() << ") and Goal (" << gp.ToString() << ")" << endl;
+ // cout << endl << "Error: PlannerH -> Can't Find Global Waypoint Nodes in the Map for Start (" << sp.ToString() << ") and Goal (" << gp.ToString() << ")" << endl;
return 0;
}
if(!pStart->pLane || !pGoal->pLane)
{
- cout << endl << "Error: PlannerH -> Null Lane, Start (" << pStart->pLane << ") and Goal (" << pGoal->pLane << ")" << endl;
+ // cout << endl << "Error: PlannerH -> Null Lane, Start (" << pStart->pLane << ") and Goal (" << pGoal->pLane << ")" << endl;
return 0;
}
diff --git a/autoware.ai/src/autoware/common/op_planner/src/TrajectoryCosts.cpp b/autoware.ai/src/autoware/common/op_planner/src/TrajectoryCosts.cpp
index d4a1ca2d..34cd18e0 100755
--- a/autoware.ai/src/autoware/common/op_planner/src/TrajectoryCosts.cpp
+++ b/autoware.ai/src/autoware/common/op_planner/src/TrajectoryCosts.cpp
@@ -31,6 +31,7 @@ TrajectoryCost TrajectoryCosts::DoOneStep(const vector >
const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
const std::vector& obj_list)
{
+ /*
TrajectoryCost bestTrajectory;
bestTrajectory.bBlocked = true;
bestTrajectory.closest_obj_distance = params.horizonDistance;
@@ -53,6 +54,11 @@ TrajectoryCost TrajectoryCosts::DoOneStep(const vector >
}
}
+ std::cout<<"## Initail trajecotry cost"<ToString()< >
m_PrevCostIndex = smallestIndex;
return bestTrajectory;
+ */
}
void TrajectoryCosts::CalculateLateralAndLongitudinalCosts(vector& trajectoryCosts,
@@ -303,6 +310,8 @@ void TrajectoryCosts::NormalizeCosts(vector& trajectoryCosts)
trajectoryCosts.at(ic).longitudinal_cost = trajectoryCosts.at(ic).longitudinal_cost / totalLongitudinalCosts;
else
trajectoryCosts.at(ic).longitudinal_cost = 0;
+
+ std::cout<<"Costs("<& trajectoryCosts)
trajectoryCosts.at(ic).lateral_cost = m_WeightLat*trajectoryCosts.at(ic).lateral_cost;
trajectoryCosts.at(ic).longitudinal_cost = m_WeightLong*trajectoryCosts.at(ic).longitudinal_cost;
+ std::cout<<"Weighted Costs("< >& rollOuts,
- const vector& totalPaths, const WayPoint& currState,
- const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
- const std::vector& obj_list, const int& iCurrentIndex)
-{
- TrajectoryCost bestTrajectory;
- bestTrajectory.bBlocked = true;
- bestTrajectory.closest_obj_distance = params.horizonDistance;
- bestTrajectory.closest_obj_velocity = 0;
- bestTrajectory.index = -1;
-
- double critical_lateral_distance = carInfo.width/2.0 + params.horizontalSafetyDistancel;
- double critical_long_front_distance = carInfo.wheel_base/2.0 + carInfo.length/2.0 + params.verticalSafetyDistance;
- double critical_long_back_distance = carInfo.length/2.0 + params.verticalSafetyDistance - carInfo.wheel_base/2.0;
-
- int currIndex = -1;
- if(iCurrentIndex >=0 && iCurrentIndex < rollOuts.size())
- currIndex = iCurrentIndex;
- else
- currIndex = GetCurrentRollOutIndex(totalPaths, currState, params);
+TrajectoryCost TrajectoryDynamicCosts::DoOneStepDynamic(const vector> &rollOuts, const vector &totalPaths,
+ const WayPoint &currState, PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState, const std::vector &obj_list,
+ const int &iCurrentIndex) {
+ /*
+ TrajectoryCost bestTrajectory;
+ bestTrajectory.bBlocked = true;
+ bestTrajectory.closest_obj_distance = params.horizonDistance;
+ bestTrajectory.closest_obj_velocity = 0;
+ bestTrajectory.index = -1;
- InitializeCosts(rollOuts, params);
+ double critical_lateral_distance = carInfo.width/2.0 + params.horizontalSafetyDistancel;
+ double critical_long_front_distance = carInfo.wheel_base/2.0 + carInfo.length/2.0 + params.verticalSafetyDistance;
+ double critical_long_back_distance = carInfo.length/2.0 + params.verticalSafetyDistance - carInfo.wheel_base/2.0;
- InitializeSafetyPolygon(currState, carInfo, vehicleState, critical_lateral_distance, critical_long_front_distance, critical_long_back_distance);
+ int currIndex = -1;
+ if(iCurrentIndex >=0 && iCurrentIndex < rollOuts.size())
+ currIndex = iCurrentIndex;
+ else
+ currIndex = GetCurrentRollOutIndex(totalPaths, currState, params);
- CalculateTransitionCosts(m_TrajectoryCosts, currIndex, params);
+ InitializeCosts(rollOuts, params);
- CalculateLateralAndLongitudinalCostsDynamic(obj_list, rollOuts, totalPaths, currState, params, carInfo, vehicleState, critical_lateral_distance, critical_long_front_distance, critical_long_back_distance);
+ InitializeSafetyPolygon(currState, carInfo, vehicleState, critical_lateral_distance, critical_long_front_distance, critical_long_back_distance);
- NormalizeCosts(m_TrajectoryCosts);
+ CalculateTransitionCosts(m_TrajectoryCosts, currIndex, params);
- int smallestIndex = -1;
- double smallestCost = DBL_MAX;
- double smallestDistance = DBL_MAX;
- double velo_of_next = 0;
- bool bAllFree = true;
+ CalculateLateralAndLongitudinalCostsDynamic(obj_list, rollOuts, totalPaths, currState, params, carInfo, vehicleState, critical_lateral_distance,
+ critical_long_front_distance, critical_long_back_distance);
- //cout << "Trajectory Costs Log : CurrIndex: " << currIndex << " --------------------- " << endl;
- for(unsigned int ic = 0; ic < m_TrajectoryCosts.size(); ic++)
- {
- if(!m_TrajectoryCosts.at(ic).bBlocked && m_TrajectoryCosts.at(ic).cost < smallestCost)
- {
- smallestCost = m_TrajectoryCosts.at(ic).cost;
- smallestIndex = ic;
- }
+ NormalizeCosts(m_TrajectoryCosts);
+
+ int smallestIndex = -1;
+ double smallestCost = DBL_MAX;
+ double smallestDistance = DBL_MAX;
+ double velo_of_next = 0;
+ bool bAllFree = true;
- if(m_TrajectoryCosts.at(ic).closest_obj_distance < smallestDistance)
+ //cout << "Trajectory Costs Log : CurrIndex: " << currIndex << " --------------------- " << endl;
+ for(unsigned int ic = 0; ic < m_TrajectoryCosts.size(); ic++)
{
- smallestDistance = m_TrajectoryCosts.at(ic).closest_obj_distance;
- velo_of_next = m_TrajectoryCosts.at(ic).closest_obj_velocity;
- }
+ if(!m_TrajectoryCosts.at(ic).bBlocked && m_TrajectoryCosts.at(ic).cost < smallestCost)
+ {
+ smallestCost = m_TrajectoryCosts.at(ic).cost;
+ smallestIndex = ic;
+ }
- if(m_TrajectoryCosts.at(ic).bBlocked)
- bAllFree = false;
- }
+ if(m_TrajectoryCosts.at(ic).closest_obj_distance < smallestDistance)
+ {
+ smallestDistance = m_TrajectoryCosts.at(ic).closest_obj_distance;
+ velo_of_next = m_TrajectoryCosts.at(ic).closest_obj_velocity;
+ }
- if(bAllFree && smallestIndex >=0)
- smallestIndex = params.rollOutNumber/2;
+ if(m_TrajectoryCosts.at(ic).bBlocked)
+ bAllFree = false;
+ }
+ if(bAllFree && smallestIndex >=0)
+ smallestIndex = params.rollOutNumber/2;
- if(smallestIndex == -1)
- {
- bestTrajectory.bBlocked = true;
- bestTrajectory.lane_index = 0;
- bestTrajectory.index = m_PrevCostIndex;
- bestTrajectory.closest_obj_distance = smallestDistance;
- bestTrajectory.closest_obj_velocity = velo_of_next;
- }
- else if(smallestIndex >= 0)
- {
- bestTrajectory = m_TrajectoryCosts.at(smallestIndex);
- }
-
- m_PrevIndex = currIndex;
-
- //std::cout << "Current Selected Index : " << bestTrajectory.index << std::endl;
- return bestTrajectory;
-}
-TrajectoryCost TrajectoryDynamicCosts::DoOneStepStatic(const vector >& rollOuts,
- const vector& totalPaths, const WayPoint& currState,
- const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
- const std::vector& obj_list, const PlannerHNS::STATE_TYPE& state, const int& iCurrentIndex)
-{
- TrajectoryCost bestTrajectory;
- bestTrajectory.bBlocked = true;
- bestTrajectory.closest_obj_distance = params.horizonDistance;
- bestTrajectory.closest_obj_velocity = 0;
- bestTrajectory.index = -1;
-
- // get parameter
- m_WeightPriority = params.weightPriority;
- m_WeightTransition = params.weightTransition;
- m_WeightLong = params.weightLong;
- m_WeightLat = params.weightLat;
- m_LateralSkipDistance = params.LateralSkipDistance;
-
- RelativeInfo car_info;
- PlanningHelpers::GetRelativeInfo(totalPaths, currState, car_info);
-
- if(car_info.perp_point.LeftLnId == 100){
- m_startTrajIdx = rollOuts.size() / 2;
- m_endTrajIdx = rollOuts.size() / 2;
- }
- else if(car_info.perp_point.LeftLnId > car_info.perp_point.RightLnId){
- m_endTrajIdx = min(car_info.perp_point.LeftLnId, int(rollOuts.size())-1);
- m_startTrajIdx = min(car_info.perp_point.RightLnId, int(rollOuts.size())-1);
- }
- else{
- m_startTrajIdx = min(car_info.perp_point.LeftLnId, int(rollOuts.size())-1);
- m_endTrajIdx = min(car_info.perp_point.RightLnId, int(rollOuts.size())-1);
- }
-
- double minDistanceToRollOut = 0;
- int currIndex = 0;
-
- for(int i=0; i direct_distance){
- minDistanceToRollOut = direct_distance;
- currIndex = i;
+ if(smallestIndex == -1)
+ {
+ bestTrajectory.bBlocked = true;
+ bestTrajectory.lane_index = 0;
+ bestTrajectory.index = m_PrevCostIndex;
+ bestTrajectory.closest_obj_distance = smallestDistance;
+ bestTrajectory.closest_obj_velocity = velo_of_next;
}
- }
-
- //std::cout << "Current Index: " << currIndex << std::endl;
-
- // Calculate lane change cost: Scoring the cost by the distance between current path and candidate path
- m_TrajectoryCosts.clear();
- if(rollOuts.size()>0)
- {
- TrajectoryCost tc;
- int centralIndex = params.rollOutNumber/2;
- tc.lane_index = 0;
- for(unsigned int it=0; it< rollOuts.size(); it++)
+ else if(smallestIndex >= 0)
{
- tc.index = it;
- tc.relative_index = it - centralIndex; // index based on center (central index is 0)
- tc.distance_from_center = params.rollOutDensity*tc.relative_index;
- tc.priority_cost = fabs(tc.distance_from_center); // priority_cost = distance from center
- tc.closest_obj_distance = params.horizonDistance;
- if(rollOuts.at(it).size() > 0)
- tc.lane_change_cost = rollOuts.at(it).at(0).laneChangeCost;
- m_TrajectoryCosts.push_back(tc);
+ bestTrajectory = m_TrajectoryCosts.at(smallestIndex);
}
- }
- // std::cout << m_PrevSelectedIndex << std::endl;
+ m_PrevIndex = currIndex;
- if(m_PrevSelectedIndex == -1){
- CalculateTransitionCosts(m_TrajectoryCosts, currIndex, params);
- }
- else{
- CalculateTransitionCosts(m_TrajectoryCosts, m_PrevSelectedIndex, params);
- }
- //end
-
- // Calculate trajectory cost with object
- WayPoint p;
- m_AllContourPoints.clear();
- for(unsigned int io=0; io> &rollOuts, const vector &totalPaths,
+ const WayPoint &currState, PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState, const std::vector &obj_list,
+ const PlannerHNS::STATE_TYPE &state, const int &iCurrentIndex) {
+ TrajectoryCost bestTrajectory;
+ bestTrajectory.bBlocked = false;
+ bestTrajectory.closest_obj_distance = params.horizonDistance;
+ bestTrajectory.closest_obj_velocity = 0;
+ bestTrajectory.index = -1;
+
+ // get parameter
+ m_WeightPriority = params.weightPriority;
+ m_WeightTransition = params.weightTransition;
+ m_WeightLong = params.weightLong;
+ m_WeightLat = params.weightLat;
+ m_LateralSkipDistance = params.LateralSkipDistance;
- NormalizeCosts(m_TrajectoryCosts);
+ RelativeInfo car_info;
+ PlanningHelpers::GetRelativeInfo(totalPaths, currState, car_info);
- int smallestIndex = -1;
- double smallestCost = DBL_MAX;
- double smallestDistance = DBL_MAX;
- double velo_of_next = 0;
+ // M
+ // if(car_info.perp_point.LeftLnId == 100){
+ // m_startTrajIdx = rollOuts.size() / 2;
+ // m_endTrajIdx = rollOuts.size() / 2;
+ // }
+ // else if(car_info.perp_point.LeftLnId > car_info.perp_point.RightLnId){
+ // m_endTrajIdx = min(car_info.perp_point.LeftLnId, int(rollOuts.size())-1);
+ // m_startTrajIdx = min(car_info.perp_point.RightLnId, int(rollOuts.size())-1);
+ // }
+ // else{
+ // m_startTrajIdx = min(car_info.perp_point.LeftLnId, int(rollOuts.size())-1);
+ // m_endTrajIdx = min(car_info.perp_point.RightLnId, int(rollOuts.size())-1);
+ // }
- bool bAllFree = true;
+ double minDistanceToRollOut = 0;
+ int currIndex = 0;
+ currIndex = GetCurrentRollOutIndex(totalPaths, currState, params);
- for(int ic = 0; ic < m_startTrajIdx; ic++) m_TrajectoryCosts.at(ic).bBlocked = true;
- for(int ic = rollOuts.size() - 1; ic > m_endTrajIdx; ic--) m_TrajectoryCosts.at(ic).bBlocked = true;
+ // Calculate lane change cost: Scoring the cost by the distance between current path and candidate path
+ int centralIndex = params.rollOutNumber / 2;
+ if (rollOuts.size() % 2 == 0)
+ centralIndex--;
+
+ m_TrajectoryCosts.clear();
+ for (unsigned int it = 0; it < rollOuts.size(); it++) {
+ TrajectoryCost tc;
+ tc.lane_index = it;
+ tc.index = it;
+ tc.relative_index = it - centralIndex; // index based on center (central index is 0)
+ tc.distance_from_center = params.rollOutDensity * tc.relative_index;
+ tc.priority_cost = fabs(tc.distance_from_center); // priority_cost = distance from center
+ tc.closest_obj_distance = params.horizonDistance;
+
+ if (it == params.blockIdx) {
+ tc.cost = 99999.0;
+ tc.bBlocked = true;
+ }
- // for(unsigned int ic = std::max(currIndex - 1, m_startTrajIdx); ic <= std::min(currIndex + 1, m_endTrajIdx); ic++)
- for(unsigned int ic = m_startTrajIdx; ic <= m_endTrajIdx; ic++)
- {
- if(!m_TrajectoryCosts.at(ic).bBlocked && m_TrajectoryCosts.at(ic).cost < smallestCost)
- {
- #ifdef DEBUG_ENABLE
- std::cout << "smallestIndex is Updated" << std::endl;
- #endif
- smallestCost = m_TrajectoryCosts.at(ic).cost;
- smallestIndex = ic;
+ if (rollOuts.at(it).size() > 0)
+ tc.lane_change_cost = rollOuts.at(it).at(0).laneChangeCost;
+ m_TrajectoryCosts.push_back(tc);
}
- if(m_TrajectoryCosts.at(ic).closest_obj_distance < smallestDistance)
- {
- smallestDistance = m_TrajectoryCosts.at(ic).closest_obj_distance;
- velo_of_next = m_TrajectoryCosts.at(ic).closest_obj_velocity;
+ if (m_PrevSelectedIndex == -1) {
+ CalculateTransitionCosts(m_TrajectoryCosts, centralIndex, params);
+ } else {
+ CalculateTransitionCosts(m_TrajectoryCosts, m_PrevSelectedIndex, params);
}
- if(m_TrajectoryCosts.at(ic).lateral_cost > 0){
- bAllFree = false;
+ // Calculate trajectory cost with object
+ WayPoint p;
+ m_AllContourPoints.clear();
+ for (unsigned int io = 0; io < obj_list.size(); io++) // Object in object list
+ {
+ // Only add centroid
+ p.pos = obj_list.at(io).center.pos;
+ p.v = obj_list.at(io).center.v;
+ p.id = io;
+ m_AllContourPoints.push_back(p);
}
- }
-
- // Enable when needed
- // if(bAllFree && smallestIndex >= 0){
- // smallestIndex = params.rollOutNumber/2;
- // }
-
- ////// Change Lane when turn left / right
- // // Calculate Turn Angle
- // double turn_angle = 0;
-
- // if(m_PrevSelectedIndex != -1)
- // turn_angle = CalculateTurnAngle(rollOuts.at(m_PrevSelectedIndex), currState, 50);
-
- // // std::cout << "b_all_free : " << bAllFree << " , t_a : " << turn_angle << std::endl;
-
- // // Keep state when Intersection state
- // if(state == PlannerHNS::INTERSECTION_STATE){
- // smallestIndex = m_PrevSelectedIndex;
- // }
- // // For Left Turn
- // else if(bAllFree && turn_angle > 45){
- // smallestIndex = 0;
- // }
- // // For Right Turn
- // else if(bAllFree && turn_angle < -45 && params.rollOutNumber > 0){
- // smallestIndex = params.rollOutNumber - 1;
- // }
-
- // if(smallestIndex >= 0 && m_TrajectoryCosts.at(currIndex).bBlocked){
- // int left_block_idx = -1;
-
- // for(int ic = currIndex - 1; ic >= m_startTrajIdx; ic--)
- // {
- // if(m_TrajectoryCosts.at(ic).bBlocked){
- // left_block_idx = ic;
- // break;
- // }
- // }
-
- // if(left_block_idx != -1 && smallestIndex < left_block_idx){
- // smallestIndex = -1;
- // }
-
- // int right_block_idx = -1;
-
- // for(int ic = currIndex + 1; ic <= m_endTrajIdx; ic++)
- // {
- // if(m_TrajectoryCosts.at(ic).bBlocked){
- // right_block_idx = ic;
- // break;
- // }
- // }
-
- // if(right_block_idx != -1 && smallestIndex > right_block_idx){
- // smallestIndex = -1;
- // }
- // }
- // Hyundai challenge legacy
-
- if(smallestIndex == -1)
- {
- bestTrajectory.bBlocked = true;
- bestTrajectory.lane_index = m_PrevSelectedIndex;
- bestTrajectory.index = m_PrevSelectedIndex;
- bestTrajectory.closest_obj_distance = smallestDistance;
- bestTrajectory.closest_obj_velocity = velo_of_next;
- }
- else if(smallestIndex >= 0)
- {
- bestTrajectory = m_TrajectoryCosts.at(smallestIndex);
- m_PrevSelectedIndex = smallestIndex;
- }
-
- m_PrevIndex = currIndex;
-
- #ifdef DEBUG_ENABLE
- for(unsigned int ic=0; ic > >& rollOuts,
- const vector >& totalPaths, const WayPoint& currState, const int& currIndex,
- const int& currLaneIndex,
- const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
- const std::vector& obj_list)
-{
- TrajectoryCost bestTrajectory;
- bestTrajectory.bBlocked = true;
- bestTrajectory.closest_obj_distance = params.horizonDistance;
- bestTrajectory.closest_obj_velocity = 0;
- bestTrajectory.index = -1;
+ CalculateLateralAndLongitudinalCostsStatic(m_TrajectoryCosts, rollOuts, totalPaths, currState, m_AllContourPoints, params, carInfo, vehicleState);
+ NormalizeCosts(m_TrajectoryCosts, params.enableDebug);
- if(!ValidateRollOutsInput(rollOuts) || rollOuts.size() != totalPaths.size()) return bestTrajectory;
+ int smallestIndex = -1;
+ double smallestCost = DBL_MAX;
+ double smallestDistance = DBL_MAX;
+ double velo_of_next = 0;
- if(m_PrevCostIndex == -1)
- m_PrevCostIndex = params.rollOutNumber/2;
+ bool bAllFree = true;
- m_TrajectoryCosts.clear();
+ // M
+ // for(int ic = 0; ic < m_startTrajIdx; ic++) m_TrajectoryCosts.at(ic).bBlocked = true;
+ // for(int ic = rollOuts.size() - 1; ic > m_endTrajIdx; ic--) m_TrajectoryCosts.at(ic).bBlocked = true;
- for(unsigned int il = 0; il < rollOuts.size(); il++)
- {
- if(rollOuts.at(il).size()>0 && rollOuts.at(il).at(0).size()>0)
- {
- vector costs = CalculatePriorityAndLaneChangeCosts(rollOuts.at(il), il, params);
- m_TrajectoryCosts.insert(m_TrajectoryCosts.end(), costs.begin(), costs.end());
- }
- }
+ // for(unsigned int ic = std::max(currIndex - 1, m_startTrajIdx); ic <= std::min(currIndex + 1, m_endTrajIdx); ic++)
+ // for(unsigned int ic = m_startTrajIdx; ic <= m_endTrajIdx; ic++)
- CalculateTransitionCosts(m_TrajectoryCosts, currIndex, params);
+ bool is_current_path_blocked = false;
+ for (unsigned int ic = 0; ic < rollOuts.size(); ic++) {
+ if (!m_TrajectoryCosts.at(ic).bBlocked && m_TrajectoryCosts.at(ic).cost < smallestCost) {
+ if (params.enableDebug)
+ std::cout << "smallestIndex is Updated" << std::endl;
+ smallestCost = m_TrajectoryCosts.at(ic).cost;
+ smallestIndex = ic;
+ }
- WayPoint p;
- m_AllContourPoints.clear();
- for(unsigned int io=0; io 0) {
+ bAllFree = false;
+ }
}
- if(m_TrajectoryCosts.at(ic).closest_obj_distance < smallestDistance)
- {
- smallestDistance = m_TrajectoryCosts.at(ic).closest_obj_distance;
- velo_of_next = m_TrajectoryCosts.at(ic).closest_obj_velocity;
+ static int path_keeping_cnt = 80, cur_path_blocking_cnt = 80;
+ if (m_PrevIndex == currIndex) {
+ path_keeping_cnt--;
+ if (path_keeping_cnt < 0)
+ path_keeping_cnt = 0;
+ } else
+ path_keeping_cnt = 80;
+
+ for (unsigned int ic = 0; ic < rollOuts.size(); ic++) {
+ if (m_TrajectoryCosts.at(ic).cost > params.blockThreshold) {
+ m_TrajectoryCosts.at(ic).bBlocked = true;
+ }
}
- }
-
- //cout << "Smallest Distance: " << smallestDistance << "------------------------------------------------------------- " << endl;
-
- //All is blocked !
- if(smallestIndex == -1 && m_PrevCostIndex < (int)m_TrajectoryCosts.size())
- {
- bestTrajectory.bBlocked = true;
- bestTrajectory.lane_index = currLaneIndex;
- bestTrajectory.index = currIndex;
- bestTrajectory.closest_obj_distance = smallestDistance;
- bestTrajectory.closest_obj_velocity = velo_of_next;
- //bestTrajectory.index = smallestIndex;
- }
- else if(smallestIndex >= 0)
- {
- bestTrajectory = m_TrajectoryCosts.at(smallestIndex);
- //bestTrajectory.index = smallestIndex;
- }
-
-// cout << "smallestI: " << smallestIndex << ", C_Size: " << m_TrajectoryCosts.size()
-// << ", LaneI: " << bestTrajectory.lane_index << "TrajI: " << bestTrajectory.index
-// << ", prevSmalI: " << m_PrevCostIndex << ", distance: " << bestTrajectory.closest_obj_distance
-// << ", Blocked: " << bestTrajectory.bBlocked
-// << endl;
-
- m_PrevCostIndex = smallestIndex;
-
- return bestTrajectory;
-}
-void TrajectoryDynamicCosts::CalculateLateralAndLongitudinalCostsStatic(vector& trajectoryCosts,
- const vector >& rollOuts, const vector& totalPaths,
- const WayPoint& currState, const vector& contourPoints, const PlanningParams& params,
- const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState)
-{
- double critical_lateral_distance = carInfo.width/2.0 + params.horizontalSafetyDistancel;
- double critical_long_front_distance = carInfo.wheel_base/2.0 + carInfo.length/2.0 + params.verticalSafetyDistance;
- double critical_long_back_distance = carInfo.length/2.0 + params.verticalSafetyDistance - carInfo.wheel_base/2.0;
+ // Change lane if current path is blocked or current path is not center and the ego keeps lane 1 sceonds(When rate is 20)
+ if ((is_current_path_blocked) || (smallestIndex != params.rollOutNumber / 2 && path_keeping_cnt == 0)) {
+ if (smallestIndex == -1) {
+ bestTrajectory.bBlocked = true;
+ bestTrajectory.lane_index = m_PrevSelectedIndex;
+ bestTrajectory.index = m_PrevSelectedIndex;
+ bestTrajectory.closest_obj_distance = smallestDistance;
+ bestTrajectory.closest_obj_velocity = velo_of_next;
+ } else if (smallestIndex >= 0) {
+ bestTrajectory = m_TrajectoryCosts.at(smallestIndex);
+ bestTrajectory.index = smallestIndex;
+ bestTrajectory.lane_index = smallestIndex;
+ m_PrevSelectedIndex = smallestIndex;
+ }
+ } else {
+ bestTrajectory.index = smallestIndex;
+ bestTrajectory.lane_index = smallestIndex;
+ }
- PlannerHNS::Mat3 invRotationMat(currState.pos.a-M_PI_2);
- PlannerHNS::Mat3 invTranslationMat(currState.pos.x, currState.pos.y);
+ m_PrevIndex = currIndex;
- double corner_slide_distance = critical_lateral_distance/2.0;
- double ratio_to_angle = corner_slide_distance/carInfo.max_steer_angle;
- double slide_distance = vehicleState.steer * ratio_to_angle;
+ if (params.enableDebug) {
+ for (unsigned int ic = 0; ic < rollOuts.size(); ic++) {
+ std::cout << "Index: " << ic << ", Priority: " << m_TrajectoryCosts.at(ic).priority_cost
+ << ", Transition: " << m_TrajectoryCosts.at(ic).transition_cost << ", Lat: " << m_TrajectoryCosts.at(ic).lateral_cost
+ << ", Long: " << m_TrajectoryCosts.at(ic).longitudinal_cost << ", Change: " << m_TrajectoryCosts.at(ic).lane_change_cost
+ << ", Avg: " << m_TrajectoryCosts.at(ic).cost << ", Blocked : " << m_TrajectoryCosts.at(ic).bBlocked << std::endl;
+ }
+ std::cout << "---------------------------------------" << std::endl;
+ std::cout << "leftLnId : " << car_info.perp_point.LeftLnId << ", RightLnId : " << car_info.perp_point.RightLnId << std::endl;
+ std::cout << "start_idx : " << m_startTrajIdx << ", end_idx : " << m_endTrajIdx << std::endl;
+ std::cout << "Path keeping cnt: " << path_keeping_cnt << ", prev_idx : " << m_PrevIndex << ", current_idx : " << currIndex
+ << ", selected one : " << smallestIndex << std::endl;
+ std::cout << "---------------------------------------" << std::endl;
+ }
- GPSPoint bottom_left(-critical_lateral_distance ,-critical_long_back_distance, currState.pos.z, 0);
- GPSPoint bottom_right(critical_lateral_distance, -critical_long_back_distance, currState.pos.z, 0);
+ return bestTrajectory;
+}
- GPSPoint top_right_car(critical_lateral_distance, carInfo.wheel_base/3.0 + carInfo.length/3.0, currState.pos.z, 0);
- GPSPoint top_left_car(-critical_lateral_distance, carInfo.wheel_base/3.0 + carInfo.length/3.0, currState.pos.z, 0);
+TrajectoryCost TrajectoryDynamicCosts::DoOneStep(const vector>> &rollOuts, const vector> &totalPaths,
+ const WayPoint &currState, const int &currIndex, const int &currLaneIndex, PlanningParams ¶ms,
+ const CAR_BASIC_INFO &carInfo, const VehicleState &vehicleState,
+ const std::vector &obj_list) {
+ /*
+ TrajectoryCost bestTrajectory;
+ bestTrajectory.bBlocked = true;
+ bestTrajectory.closest_obj_distance = params.horizonDistance;
+ bestTrajectory.closest_obj_velocity = 0;
+ bestTrajectory.index = -1;
- GPSPoint top_right(critical_lateral_distance - slide_distance, critical_long_front_distance, currState.pos.z, 0);
- GPSPoint top_left(-critical_lateral_distance - slide_distance , critical_long_front_distance, currState.pos.z, 0);
+ if(!ValidateRollOutsInput(rollOuts) || rollOuts.size() != totalPaths.size()) return bestTrajectory;
- bottom_left = invRotationMat*bottom_left;
- bottom_left = invTranslationMat*bottom_left;
+ if(m_PrevCostIndex == -1)
+ m_PrevCostIndex = params.rollOutNumber/2;
- top_right = invRotationMat*top_right;
- top_right = invTranslationMat*top_right;
+ m_TrajectoryCosts.clear();
- bottom_right = invRotationMat*bottom_right;
- bottom_right = invTranslationMat*bottom_right;
+ for(unsigned int il = 0; il < rollOuts.size(); il++)
+ {
+ if(rollOuts.at(il).size()>0 && rollOuts.at(il).at(0).size()>0)
+ {
+ vector costs = CalculatePriorityAndLaneChangeCosts(rollOuts.at(il), il, params);
+ m_TrajectoryCosts.insert(m_TrajectoryCosts.end(), costs.begin(), costs.end());
+ }
+ }
- top_left = invRotationMat*top_left;
- top_left = invTranslationMat*top_left;
+ CalculateTransitionCosts(m_TrajectoryCosts, currIndex, params);
- top_right_car = invRotationMat*top_right_car;
- top_right_car = invTranslationMat*top_right_car;
- top_left_car = invRotationMat*top_left_car;
- top_left_car = invTranslationMat*top_left_car;
+ WayPoint p;
+ m_AllContourPoints.clear();
+ for(unsigned int io=0; io 0 && rollOuts.at(0).size()>0)
- {
- RelativeInfo car_info;
- PlanningHelpers::GetRelativeInfo(totalPaths, currState, car_info);
+ int smallestIndex = -1;
+ double smallestCost = DBL_MAX;
+ double smallestDistance = DBL_MAX;
+ double velo_of_next = 0;
- for(unsigned int it=0; it< rollOuts.size(); it++)
+ for(unsigned int ic = 0; ic < m_TrajectoryCosts.size(); ic++)
{
- #ifdef DEBUG_ENABLE
- int unskipped = 0;
- #endif
-
- int skip_id = -1;
- for(unsigned int icon = 0; icon < contourPoints.size(); icon++)
+ if(!m_TrajectoryCosts.at(ic).bBlocked && m_TrajectoryCosts.at(ic).cost < smallestCost)
{
- // if(skip_id == contourPoints.at(icon).id)
- // continue;
-
- RelativeInfo obj_info;
- PlanningHelpers::GetRelativeInfo(totalPaths, contourPoints.at(icon), obj_info);
- double longitudinalDist = PlanningHelpers::GetExactDistanceOnTrajectory(totalPaths, car_info, obj_info); // Caculate cumulated distance between car and obj in path
- if(obj_info.iFront == 0 && longitudinalDist > 0)
- longitudinalDist = -longitudinalDist;
-
- // double direct_distance = hypot(obj_info.perp_point.pos.y-contourPoints.at(icon).pos.y, obj_info.perp_point.pos.x-contourPoints.at(icon).pos.x); // Caculate direct distance
+ smallestCost = m_TrajectoryCosts.at(ic).cost;
+ smallestIndex = ic;
+ }
- // Original
- // if(contourPoints.at(icon).v < params.minSpeed && direct_distance > (m_LateralSkipDistance+contourPoints.at(icon).cost))
- // {
- // skip_id = contourPoints.at(icon).id;
- // continue;
- // }
+ if(m_TrajectoryCosts.at(ic).closest_obj_distance < smallestDistance)
+ {
+ smallestDistance = m_TrajectoryCosts.at(ic).closest_obj_distance;
+ velo_of_next = m_TrajectoryCosts.at(ic).closest_obj_velocity;
+ }
+ }
- // std::cout << obj_info.perp_distance << std::endl;
- // std::cout << rollOuts.size() << " " << rollOuts.size() /2 << std::endl;
- // std::cout << ((rollOuts.size() / 2) * params.rollOutDensity) * (-1) << std::endl;
+ //All is blocked !
+ if(smallestIndex == -1 && m_PrevCostIndex < (int)m_TrajectoryCosts.size())
+ {
+ bestTrajectory.bBlocked = true;
+ bestTrajectory.lane_index = currLaneIndex;
+ bestTrajectory.index = currIndex;
+ bestTrajectory.closest_obj_distance = smallestDistance;
+ bestTrajectory.closest_obj_velocity = velo_of_next;
+ }
+ else if(smallestIndex >= 0)
+ {
+ bestTrajectory = m_TrajectoryCosts.at(smallestIndex);
+ }
- double distance_from_center = trajectoryCosts.at(iCostIndex).distance_from_center; // Disetance between center and trajectory
+ m_PrevCostIndex = smallestIndex;
- double lateralDist = fabs(obj_info.perp_distance - distance_from_center);
+ return bestTrajectory;
+ */
+}
- // std::cout << "long : " << longitudinalDist << ", lat : " << lateralDist << std::endl;
+void TrajectoryDynamicCosts::CalculateLateralAndLongitudinalCostsStatic(vector &trajectoryCosts,
+ const vector> &rollOuts, const vector &totalPaths,
+ const WayPoint &currState, const vector &contourPoints,
+ PlanningParams ¶ms, const CAR_BASIC_INFO &carInfo,
+ const VehicleState &vehicleState) {
+ double critical_lateral_distance = carInfo.width / 2.0 + params.horizontalSafetyDistancel;
+ double critical_long_front_distance = carInfo.wheel_base / 2.0 + carInfo.length / 2.0 + params.verticalSafetyDistance;
+ double critical_long_back_distance = carInfo.length / 2.0 + params.verticalSafetyDistance - carInfo.wheel_base / 2.0;
- if(longitudinalDist < 0 ||
- longitudinalDist > 30 ||
- obj_info.perp_distance < (((rollOuts.size() - 1) / 2) * params.rollOutDensity + critical_lateral_distance / 2) * (-1) ||
- obj_info.perp_distance > ((rollOuts.size() - 1) / 2 + 1) * params.rollOutDensity + critical_lateral_distance / 2)
- // obj_info.perp_distance < (((rollOuts.size() - 1) / 2) * params.rollOutDensity) * (-1) ||
- // obj_info.perp_distance > ((rollOuts.size() - 1) / 2 + 1) * params.rollOutDensity)
- {
- continue;
+ PlannerHNS::Mat3 invRotationMat(currState.pos.a - M_PI_2);
+ PlannerHNS::Mat3 invTranslationMat(currState.pos.x, currState.pos.y);
+
+ double corner_slide_distance = critical_lateral_distance / 2.0;
+ double ratio_to_angle = corner_slide_distance / carInfo.max_steer_angle;
+ double slide_distance = vehicleState.steer * ratio_to_angle;
+
+ GPSPoint bottom_left(-critical_lateral_distance, -critical_long_back_distance, currState.pos.z, 0);
+ GPSPoint bottom_right(critical_lateral_distance, -critical_long_back_distance, currState.pos.z, 0);
+
+ GPSPoint top_right_car(critical_lateral_distance, carInfo.wheel_base / 3.0 + carInfo.length / 3.0, currState.pos.z, 0);
+ GPSPoint top_left_car(-critical_lateral_distance, carInfo.wheel_base / 3.0 + carInfo.length / 3.0, currState.pos.z, 0);
+
+ GPSPoint top_right(critical_lateral_distance - slide_distance, critical_long_front_distance, currState.pos.z, 0);
+ GPSPoint top_left(-critical_lateral_distance - slide_distance, critical_long_front_distance, currState.pos.z, 0);
+
+ bottom_left = invRotationMat * bottom_left;
+ bottom_left = invTranslationMat * bottom_left;
+
+ top_right = invRotationMat * top_right;
+ top_right = invTranslationMat * top_right;
+
+ bottom_right = invRotationMat * bottom_right;
+ bottom_right = invTranslationMat * bottom_right;
+
+ top_left = invRotationMat * top_left;
+ top_left = invTranslationMat * top_left;
+
+ top_right_car = invRotationMat * top_right_car;
+ top_right_car = invTranslationMat * top_right_car;
+
+ top_left_car = invRotationMat * top_left_car;
+ top_left_car = invTranslationMat * top_left_car;
+
+ m_SafetyBorder.points.clear();
+ m_SafetyBorder.points.push_back(bottom_left);
+ m_SafetyBorder.points.push_back(bottom_right);
+ m_SafetyBorder.points.push_back(top_right_car);
+ m_SafetyBorder.points.push_back(top_right);
+ m_SafetyBorder.points.push_back(top_left);
+ m_SafetyBorder.points.push_back(top_left_car);
+
+ if (params.enableDebug)
+ std::cout << "points num : " << contourPoints.size() << std::endl;
+
+ int iCostIndex = 0;
+ int blockCnt = 0;
+ if (rollOuts.size() > 0 && rollOuts.at(0).size() > 0) {
+ RelativeInfo car_info;
+ PlanningHelpers::GetRelativeInfo(totalPaths, currState, car_info);
+
+ for (unsigned int it = 0; it < rollOuts.size(); it++) {
+ // int unskipped = 0;
+
+ int skip_id = -1;
+ for (unsigned int icon = 0; icon < contourPoints.size(); icon++) {
+ // if(skip_id == contourPoints.at(icon).id)
+ // continue;
+
+ RelativeInfo obj_info;
+ PlanningHelpers::GetRelativeInfo(totalPaths, contourPoints.at(icon), obj_info);
+ double longitudinalDist = PlanningHelpers::GetExactDistanceOnTrajectory(
+ totalPaths, car_info, obj_info); // Caculate cumulated distance between car and obj in path
+ if (obj_info.iFront == 0 && longitudinalDist > 0)
+ longitudinalDist = -longitudinalDist;
+
+ // double direct_distance = hypot(obj_info.perp_point.pos.y-contourPoints.at(icon).pos.y,
+ // obj_info.perp_point.pos.x-contourPoints.at(icon).pos.x); // Caculate direct distance
+
+ // Original
+ // if(contourPoints.at(icon).v < params.minSpeed && direct_distance > (m_LateralSkipDistance+contourPoints.at(icon).cost))
+ // {
+ // skip_id = contourPoints.at(icon).id;
+ // continue;
+ // }
+
+ // std::cout << obj_info.perp_distance << std::endl;
+ // std::cout << rollOuts.size() << " " << rollOuts.size() /2 << std::endl;
+ // std::cout << ((rollOuts.size() / 2) * params.rollOutDensity) * (-1) << std::endl;
+
+ double distance_from_center = trajectoryCosts.at(iCostIndex).distance_from_center; // Disetance between center and trajectory
+
+ double lateralDist = fabs(obj_info.perp_distance - distance_from_center);
+
+ // std::cout << "long : " << longitudinalDist << ", lat : " << lateralDist << std::endl;
+
+ // *** Debug *** //
+ /*
+ if (longitudinalDist < 0 || longitudinalDist > 30 ||
+ obj_info.perp_distance < (((rollOuts.size() - 1) / 2) * params.rollOutDensity + critical_lateral_distance / 2) * (-1) ||
+ obj_info.perp_distance > ((rollOuts.size() - 1) / 2 + 1) * params.rollOutDensity + critical_lateral_distance / 2)
+ // obj_info.perp_distance < (((rollOuts.size() - 1) / 2) * params.rollOutDensity) * (-1) ||
+ // obj_info.perp_distance > ((rollOuts.size() - 1) / 2 + 1) * params.rollOutDensity)
+ {
+ continue;
+ }
+ */
+
+ // if(params.enableDebug) unskipped++;
+
+ // Original
+ // if(longitudinalDist < -carInfo.length || longitudinalDist > params.minFollowingDistance || lateralDist > m_LateralSkipDistance)
+ // {
+ // continue;
+ // }
+
+ if (m_SafetyBorder.PointInsidePolygon(m_SafetyBorder, contourPoints.at(icon).pos) == true) {
+ trajectoryCosts.at(iCostIndex).bBlocked = true;
+ }
+
+ if (lateralDist <= params.lateralBlockingThreshold && longitudinalDist < params.frontLongitudinalBlockingThreshold &&
+ longitudinalDist >= params.rearLongitudinalBlockingThreshold) {
+ trajectoryCosts.at(it).bBlocked = true;
+ }
+
+ // Original
+ // if(lateralDist <= critical_lateral_distance
+ // && longitudinalDist >= -carInfo.length/1.5
+ // && longitudinalDist < params.minFollowingDistance)
+ // trajectoryCosts.at(iCostIndex).bBlocked = true;
+
+ if (lateralDist != 0)
+ trajectoryCosts.at(iCostIndex).lateral_cost += 1.0 / lateralDist;
+
+ if (longitudinalDist != 0)
+ trajectoryCosts.at(iCostIndex).longitudinal_cost += 1.0 / fabs(longitudinalDist);
+
+ if (longitudinalDist > 0 && longitudinalDist < trajectoryCosts.at(iCostIndex).closest_obj_distance) {
+ trajectoryCosts.at(iCostIndex).closest_obj_distance = longitudinalDist;
+ trajectoryCosts.at(iCostIndex).closest_obj_velocity = contourPoints.at(icon).v;
+ }
+ }
+
+ // if(params.enableDebug){
+ // std::cout << trajectoryCosts.at(iCostIndex).longitudinal_cost << " " << trajectoryCosts.at(iCostIndex).lateral_cost << ", ";
+ // std::cout << unskipped << " ";
+ // }
+
+ // Calculate lateral/logitudinal cost, disdtance and velocity
+ if (trajectoryCosts.at(iCostIndex).bBlocked) {
+ blockCnt++;
+ }
+ iCostIndex++;
}
- #ifdef DEBUG_ENABLE
- unskipped++;
- #endif
-
- // Original
- // if(longitudinalDist < -carInfo.length || longitudinalDist > params.minFollowingDistance || lateralDist > m_LateralSkipDistance)
- // {
- // continue;
- // }
-
- if(m_SafetyBorder.PointInsidePolygon(m_SafetyBorder, contourPoints.at(icon).pos) == true)
- trajectoryCosts.at(iCostIndex).bBlocked = true;
-
- // Disabled bj hjw
- if(lateralDist <= 1.5
- && longitudinalDist >= -5
- && longitudinalDist < 30)
- trajectoryCosts.at(it).bBlocked = true;
-
- // Original
- // if(lateralDist <= critical_lateral_distance
- // && longitudinalDist >= -carInfo.length/1.5
- // && longitudinalDist < params.minFollowingDistance)
- // trajectoryCosts.at(iCostIndex).bBlocked = true;
-
- if(lateralDist != 0)
- trajectoryCosts.at(iCostIndex).lateral_cost += 1.0/lateralDist;
-
- if(longitudinalDist != 0)
- trajectoryCosts.at(iCostIndex).longitudinal_cost += 1.0/fabs(longitudinalDist);
-
- if(longitudinalDist > 0 && longitudinalDist < trajectoryCosts.at(iCostIndex).closest_obj_distance)
- {
- trajectoryCosts.at(iCostIndex).closest_obj_distance = longitudinalDist;
- trajectoryCosts.at(iCostIndex).closest_obj_velocity = contourPoints.at(icon).v;
+ if (blockCnt == rollOuts.size()) {
+ params.enableStop = true;
}
- }
- #ifdef DEBUG_ENABLE
- // std::cout << trajectoryCosts.at(iCostIndex).longitudinal_cost << " " << trajectoryCosts.at(iCostIndex).lateral_cost << ", ";
- std::cout << unskipped << " ";
- #endif
-
- // Calculate lateral/logitudinal cost, disdtance and velocity
- iCostIndex++;
+ if (params.enableDebug)
+ std::cout << std::endl;
}
- #ifdef DEBUG_ENABLE
- std::cout << std::endl;
- #endif
- }
}
-void TrajectoryDynamicCosts::CalculateLateralAndLongitudinalCosts(vector& trajectoryCosts,
- const vector > >& rollOuts, const vector >& totalPaths,
- const WayPoint& currState, const vector& contourPoints, const PlanningParams& params,
- const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState)
-{
- double critical_lateral_distance = carInfo.width/2.0 + params.horizontalSafetyDistancel;
- double critical_long_front_distance = carInfo.wheel_base/2.0 + carInfo.length/2.0 + params.verticalSafetyDistance;
- double critical_long_back_distance = carInfo.length/2.0 + params.verticalSafetyDistance - carInfo.wheel_base/2.0;
- int iCostIndex = 0;
-
- PlannerHNS::Mat3 invRotationMat(currState.pos.a-M_PI_2);
- PlannerHNS::Mat3 invTranslationMat(currState.pos.x, currState.pos.y);
+void TrajectoryDynamicCosts::CalculateLateralAndLongitudinalCosts(vector &trajectoryCosts,
+ const vector