Commit 17811381 authored by alexander's avatar alexander

常熟脚本生成配置提交

parent e8274f84
...@@ -102,19 +102,6 @@ class AutoCityV2GenConfig: ...@@ -102,19 +102,6 @@ class AutoCityV2GenConfig:
TRANS[3, 3] = 1.0 TRANS[3, 3] = 1.0
return TRANS.tolist() return TRANS.tolist()
def gen_cam_trans(self, cur_camera_node):
fusion_node = {}
cam_trans = []
cam_intrinsics = []
cam_dists = []
cam_dects = []
for cam in cur_camera_node["CameraParams"]:
cam_trans.append(cam["cam_trans"])
cam_intrinsics.append(cam["cam_intrinsics"])
cam_dists.append(cam["cam_dist"])
cam_dects.append([0,300])
return cam_trans, cam_intrinsics, cam_dists, cam_dects
def batch_gen(self): def batch_gen(self):
yaml = ruamel.yaml.YAML() yaml = ruamel.yaml.YAML()
yaml.preserve_quotes = True yaml.preserve_quotes = True
...@@ -182,13 +169,29 @@ class AutoCityV2GenConfig: ...@@ -182,13 +169,29 @@ class AutoCityV2GenConfig:
# Flag list for run.sh # Flag list for run.sh
rep_str = [ rep_str = [
'RUN_RSLIDAR=1', 'RUN_RSLIDAR=1',
'RUN_POINT_CLOUD=1', 'RUN_PP=1',
'RUN_TRACKING=1',
'RUN_RADAR=1',
'RUN_PUB=1',
'RUN_FUSION=1',
'RUN_EVENT=1'
] ]
Flags_run_sh = [ Flags_run_sh = [
# 0 RUN_RSLIDAR=0 # 0 RUN_RSLIDAR=0
1, 1,
# 1 RUN_POINT_CLOUD=1 # 1 RUN_PP=1
1] 1,
# 1 RUN_TRACKING=1
1,
# 1 RUN_RADAR=1
1,
# 1 RUN_PUB=1
1,
# 1 RUN_FUSION=1
1,
# 1 RUN_EVENT=1
1
]
cur_lidar_node = lidar_total_node[node_name] cur_lidar_node = lidar_total_node[node_name]
cur_camera_node = camera_total_node[node_name] cur_camera_node = camera_total_node[node_name]
...@@ -236,7 +239,7 @@ class AutoCityV2GenConfig: ...@@ -236,7 +239,7 @@ class AutoCityV2GenConfig:
drive_dict["min_distance"]=0.2 drive_dict["min_distance"]=0.2
drive_dict["max_distance"]=200 drive_dict["max_distance"]=200
drive_dict["dense_points"]=True drive_dict["dense_points"]=True
drive_dict["ts_first_point"]=True drive_dict["ts_first_point"]=False
drive_dict["use_lidar_clock"]=False drive_dict["use_lidar_clock"]=False
drive_dict["pcap_path"]="/home/robosense/lidar.pcap" drive_dict["pcap_path"]="/home/robosense/lidar.pcap"
...@@ -303,10 +306,10 @@ class AutoCityV2GenConfig: ...@@ -303,10 +306,10 @@ class AutoCityV2GenConfig:
# FUSION # FUSION
fusion_node = {} fusion_node = {}
fusion_node["match_color"] = 1 #for k, v in cur_fusion_node.items():
if "match_color" in cur_fusion_node.keys(): # fusion_node[k] = v
fusion_node["match_color"] = cur_fusion_node["match_color"] #yaml_dict["FUSION"] = fusion_node
yaml_dict["FUSION"] = fusion_node yaml_dict["FUSION"] = cur_fusion_node
# TRACKING # TRACKING
...@@ -314,8 +317,8 @@ class AutoCityV2GenConfig: ...@@ -314,8 +317,8 @@ class AutoCityV2GenConfig:
tracking_node["is_save_log"] = 0 tracking_node["is_save_log"] = 0
tracking_node["save_log_file"] = "/workspace/data_log/tracking.log" tracking_node["save_log_file"] = "/workspace/data_log/tracking.log"
tracking_node["kf_gpu"] = 0 tracking_node["kf_gpu"] = 0
if "kf_gpu" in cur_track_node.keys(): for k, v in cur_track_node.items():
tracking_node["kf_gpu"] = cur_track_node["kf_gpu"] tracking_node[k] = v
yaml_dict["TRACKING"] = tracking_node yaml_dict["TRACKING"] = tracking_node
#EVENT #EVENT
......
...@@ -20,15 +20,20 @@ ...@@ -20,15 +20,20 @@
# TODO: convert to python script # TODO: convert to python script
# The project path should include the install folder # The project path should include the install folder
CATKIN_WS_PATH="/home/nvidia/workspace/catkin_ws_v2" CATKIN_WS_PATH="/data/workspace/catkin_ws"
# The log path prefix is changed to the path where you need to save the log. Do not add / at the end # The log path prefix is changed to the path where you need to save the log. Do not add / at the end
LOG_PATH_PREFIX="/home/nvidia/workspace/catkin_ws_v2/data_log" LOG_PATH_PREFIX="/data/workspace/catkin_ws/data_log"
# Different configurations at different intersections # Different configurations at different intersections
LOG_ENABLE=1 LOG_ENABLE=1
RUN_RSLIDAR=1
# Programs to be started: set to 1 to start, set to 0 to not start # Programs to be started: set to 1 to start, set to 0 to not start
RUN_RSLIDAR=1
RUN_PP=1 RUN_PP=1
RUN_TRACKING=1
RUN_RADAR=1
RUN_PUB=1
RUN_FUSION=1
RUN_EVENT=1
# declare a global node list # declare a global node list
declare -g -a NODE_LIST declare -g -a NODE_LIST
...@@ -44,9 +49,19 @@ declare -g -a NOT_FOUND_NODE_LIST ...@@ -44,9 +49,19 @@ declare -g -a NOT_FOUND_NODE_LIST
# ps -ef | grep bin # ps -ef | grep bin
NODE_LIST[0]="rslidar,rslidar_sdk,start.launch,/rslidar_sdk_node,__name:=rslidar_sdk_node,${RUN_RSLIDAR}" NODE_LIST[0]="rslidar,rslidar_sdk,start.launch,/rslidar_sdk_node,__name:=rslidar_sdk_node,${RUN_RSLIDAR}"
NODE_LIST[1]="pp,jfx_point_cloud_detector,point_cloud_detector.launch,/jfx_point_cloud_detector,__name:=jfx_point_cloud_detector,${RUN_PP}" NODE_LIST[1]="pp,jfx_point_cloud_detector,point_cloud_detector.launch,/jfx_point_cloud_detector,__name:=jfx_point_cloud_detector,${RUN_PP}"
NODE_LIST[2]="track,jfx_tracking,jfx_tracking.launch,/jfx_tracking,__name:=jfx_tracking,${RUN_TRACKING}"
NODE_LIST[3]="radar,jfx_traffic_radar_driver_changshu_hurys,jfx_traffic_radar_driver_changshu_hurys.launch,/jfx_traffic_radar_driver_changshu_hurys,__name:=jfx_traffic_radar_driver_changshu_hurys,${RUN_RADAR}"
NODE_LIST[4]="pub,jfx_fusion_pub_cetc28_changshu,fusion_pub_cetc28_changshu.launch,/jfx_fusion_pub_cetc28_changshu,__name:=jfx_fusion_pub_cetc28_changshu,${RUN_PUB}"
NODE_LIST[5]="fusion,jfx_rvfusion_cx,fusion.launch,/jfx_rvfusion_cx,__name:=jfx_rvfusion_cx,${RUN_FUSION}"
NODE_LIST[6]="event,jfx_traffic_events,jfx_events.launch,/jfx_events,__name:=jfx_events,${RUN_EVENT}"
NODE_MAP[rslidar]=${NODE_LIST[0]} NODE_MAP[rslidar]=${NODE_LIST[0]}
NODE_MAP[pp]=${NODE_LIST[1]} NODE_MAP[pp]=${NODE_LIST[1]}
NODE_MAP[track]=${NODE_LIST[2]}
NODE_MAP[radar]=${NODE_LIST[3]}
NODE_MAP[pub]=${NODE_LIST[4]}
NODE_MAP[fusion]=${NODE_LIST[5]}
NODE_MAP[event]=${NODE_LIST[6]}
# echo -e "${NODE_MAP[gb28181]}" # echo -e "${NODE_MAP[gb28181]}"
...@@ -55,6 +70,11 @@ declare -g -A LOG_PATH_LIST ...@@ -55,6 +70,11 @@ declare -g -A LOG_PATH_LIST
# struct LOG_PATH_LIST {nick_name,log_absolute_path0,log_abolute_path1...} # struct LOG_PATH_LIST {nick_name,log_absolute_path0,log_abolute_path1...}
LOG_PATH_LIST["rslidar"]="" LOG_PATH_LIST["rslidar"]=""
LOG_PATH_LIST["pp"]="" LOG_PATH_LIST["pp"]=""
LOG_PATH_LIST["track"]=""
LOG_PATH_LIST["radar"]=""
LOG_PATH_LIST["pub"]=""
LOG_PATH_LIST["fusion"]=""
LOG_PATH_LIST["event"]=""
# Temporarily reserved until the version update is complete # Temporarily reserved until the version update is complete
function killpid(){ function killpid(){
......
node1: node1:
GlobalConfig:
acquisition_frame_rate: 10
utc_leap_nanoseconds: 37000000000
CameraParams: CameraParams:
- idx: 0 - idx: 0
url: 10.56.108.124 url: 172.16.20.24
location_lon: 121.188479
location_lat: 31.275802
location_ele: 0
raw_topic: /camera_array/cam0/image_raw
cam_trans: [[ 1.51042207e-02, -1.50427234e-02, -1.13173363e+01],
[-7.78807026e-04, -1.45158646e-01, 1.13531205e+02],
[ 1.27580184e-05, 2.20449713e-03, -7.25591444e-01]]
cam_intrinsics: [[3.13188623,-1.69726816,3006.77076161],
[0.15893756,0.21158008,290.67111259],
[0.00054013,0.00059379,1. ]]
cam_dist: [-0.1387, 3.5558, 0.0065, 9.1060e-04, 0.2381]
- idx: 1 - idx: 1
url: 10.56.109.127 url: 172.16.20.25
location_lon: 121.1877493
location_lat: 31.2757621
location_ele: 0
raw_topic: /camera_array/cam1/image_raw
cam_trans: [[ -1.64915971 , -4.53892942 ,-4759.1907378 ],
[ 0.65469646 , -0.308533, 731.68354325],
[ 0.00106312, -0.00075274, 1. ]]
cam_intrinsics: [[ -1.64915971, -4.53892942, -4759.1907378 ],
[ 0.65469646, -0.308533, 731.68354325],
[ 0.00106312, -0.00075274, 1. ]]
cam_dist: [-0.1387, 3.5558, 0.0065, 9.1060e-04, 0.2381]
- idx: 2 - idx: 2
url: 10.56.109.128 url: 172.16.20.26
location_lon: 121.1876840
location_lat: 31.2756782
location_ele: 0
raw_topic: /camera_array/cam2/image_raw
cam_trans: [[-8.18108420e-04 , 1.09704652e-01, -1.16081430e+02],
[ 1.74596191e-02 , 1.00373102e-02 ,-1.67333506e+01],
[ 6.03293984e-05 , 8.99020631e-04, 2.53539016e-02]]
cam_intrinsics: [[-3.17881853,-4.97343073,-7034.53070758],
[0.23636193,0.14470063,495.80985215],
[0.00090617,-0.00047155,1.]]
cam_dist: [-0.1387, 3.5558, 0.0065, 9.1060e-04, 0.2381]
LogConfig:
log_name: node1
log_enable: false
log_path: /workspace/log/
log_to_stderr: false
also_log_to_stderr: false
stderr_threshold: 0
log_buf_secs: 0
max_log_size: 100
stop_logging_if_full_disk: true
log_prefix: true
log_clean_days: 0
log_color: true
node2: node2:
GlobalConfig:
acquisition_frame_rate: 10
utc_leap_nanoseconds: 37000000000
CameraParams: CameraParams:
- idx: 0 - idx: 0
url: 10.56.100.131 url: 172.16.22.26
location_lon: 121.160087
location_lat: 31.282610
location_ele: 0
raw_topic: /camera_array/cam0/image_raw
cam_trans: [[1.72715738e-02, 2.95514778e-01, -2.19812153e+02],
[-7.34889367e-03, -3.16259208e-01, 1.38078122e+02],
[ 1.97048960e-04, 2.58610293e-03, -1.32415680e+00]]
cam_intrinsics: [[4.3004e+03, 0.0, 968.6373,],
[0.0, 4.3064e+03, 688.2004,],
[0.0, 0.0, 1.0,]]
cam_dist: [-0.1387, 3.5558, 0.0065, 9.1060e-04, 0.2381]
- idx: 1 - idx: 1
url: 10.56.100.129 url: 172.16.22.27
location_lon: 121.160464 - idx: 2
location_lat: 31.281601 url: 172.16.22.28
location_ele: 0 - idx: 3
raw_topic: /camera_array/cam1/image_raw url: 172.16.22.29
cam_trans: [[1.53258448e-02, -9.78250085e-02, 1.58912911e+01],
[3.65285051e-03, 1.73733978e-01, 4.15968464e+00],
[-4.07695972e-05, -2.54866135e-03, 9.52422567e-01]]
cam_intrinsics: [[4.3004e+03, 0.0, 968.6373,],
[0.0, 4.3064e+03, 688.2004,],
[0.0, 0.0, 1.0,]]
cam_dist: [-0.1387, 3.5558, 0.0065, 9.1060e-04, 0.2381]
LogConfig:
log_name: node2
log_enable: false
log_path: /workspace/log/
log_to_stderr: false
also_log_to_stderr: false
stderr_threshold: 0
log_buf_secs: 0
max_log_size: 100
stop_logging_if_full_disk: true
log_prefix: true
log_clean_days: 0
log_color: true
node1: node1:
MEC_V4_IP: 172.16.20.16 MEC_V4_IP: 172.16.20.16
CROSS_NAME: hushan-yunshen CROSS_NAME: hushan-yunshen
SCENE_TYPE: 0 # 0表示开放区域(城市道路); 1表示半封闭区域(高速高架,桥梁隧道); 2表示封闭限定区域(园区,机场,停车场); 3为预留
node2: node2:
MEC_V4_IP: 172.16.22.16 MEC_V4_IP: 172.16.22.16
MEC_NAME: JFX_MEC_2
CROSS_NAME: dongnan-changkun CROSS_NAME: dongnan-changkun
SCENE_TYPE: 0 # 0表示开放区域(城市道路); 1表示半封闭区域(高速高架,桥梁隧道); 2表示封闭限定区域(园区,机场,停车场); 3为预留
node1: node1:
match_color: 0 GlobalConfig:
start: true
mec_id: MEC00000001
receive_msg: all
FusionConfig:
thread: 8
center_lon: 120.7765910
center_lat: 31.5899241
fusion_stdout: true
log_indata: true
log_path: /data/wqb/fusion_data/origin
filter_radius: 200
fusion_radius: 200
lidar_vehicle_out_radius: 200
lidar_unvehicle_out_radius: 200
radar_vehicle_out_radius: 200
radar_unvehicle_out_radius: 200
vision_vehicle_out_radius: 0
vision_unvehicle_out_radius: 0
first_mode: l
create_fobj_mode: lr
check_objtype: true
filter_lidar_nonvehicle: false
filter_lidar_vehicle: false
filter_radar_nonvehicle: true
filter_radar_vehicle: true
filter_vision_nonvehicle: true
filter_vision_vehicle: true
filter_devid_l: []
filter_devid_r: []
filter_devid_v: []
lidar_delay: 0
radar_delay: 0
vision_delay: 0
dynamicDropFrame: false
dynamicDropTime: false
checkInMap: true
checkRoi: false
heading_keep: []
filter_roi: [[]]
lidar_inner_area: [[]]
radar_outer_area: [[]]
node2: node2:
match_color: 0 GlobalConfig:
start: true
mec_id: MEC00000002
receive_msg: all
FusionConfig:
thread: 8
center_lon: 120.7810739
center_lat: 31.5994864
fusion_stdout: true
log_indata: true
log_path: /data/wqb/fusion_data/origin
filter_radius: 200
fusion_radius: 200
lidar_vehicle_out_radius: 200
lidar_unvehicle_out_radius: 200
radar_vehicle_out_radius: 200
radar_unvehicle_out_radius: 200
vision_vehicle_out_radius: 0
vision_unvehicle_out_radius: 0
first_mode: l
create_fobj_mode: lr
check_objtype: true
filter_lidar_nonvehicle: false
filter_lidar_vehicle: false
filter_radar_nonvehicle: true
filter_radar_vehicle: true
filter_vision_nonvehicle: true
filter_vision_vehicle: true
filter_devid_l: []
filter_devid_r: []
filter_devid_v: []
lidar_delay: 0
radar_delay: 0
vision_delay: 0
dynamicDropFrame: false
dynamicDropTime: false
checkInMap: true
checkRoi: false
heading_keep: []
filter_roi: [[]]
lidar_inner_area: [[]]
radar_outer_area: [[]]
node1: node1:
MAX_NUM_VOXELS: 50000 MAX_POINTS_ALLOWED: 400000
MAX_NUM_VOXELS: 150000
MAX_ACTIVE: 400000 MAX_ACTIVE: 400000
MAX_NUM_POINTS_PER_VOXEL: 32 MAX_NUM_POINTS_PER_VOXEL: 12
NUM_HAND_CRAFTED_FEATURES: 10 NUM_HAND_CRAFTED_FEATURES: 10
NUM_CLASS: 5 NUM_CLASS: 5
SCORE_THRESHOLD: 0.3 SCORE_THRESHOLD: 0.1
NMS_OVERLAP_THRESHOLD: 0.1 NMS_OVERLAP_THRESHOLD: 0.01
NUM_THREADS: 64 NUM_THREADS: 64
BATCH_SIZE: 1 BATCH_SIZE: 1
RPN_ENGINE_FILE: s RPN_ENGINE_FILE: s
PFE_ENGINE_FILE: s PFE_ENGINE_FILE: s
VOXEL_SIZES: [0.2, 0.2, 5] VOXEL_SIZES: [0.1, 0.1, 0.125]
GRID_SIZES: [1000, 1000, 1] GRID_SIZES: [1664, 1664, 40]
PC_RANGE: [-100,-100,-7,100,100,-2] PC_RANGE: [-83.2, -83.2,-7.0,83.2,83.2, -2.0]
DS_RATIO: 4 DS_RATIO: 8
BEV_FEATURE_SIZE: [250, 250, 64] BEV_FEATURE_SIZE: [208, 208, 256]
RPN_ONNX_FILE: unified_35_and_chengdu_50_pillar_bb.onnx RPN_ONNX_FILE: changshu_mixup_1_2_plus_cpv_truckloss.onnx
PFE_ONNX_FILE: unified_35_and_chengdu_50_pillar_pfe_50000.onnx CUTCONV_WEIGHTS: changshu_mixup_1_2_plus_cpv_truckloss.weights
USEENGINE: False USEENGINE: False
NUM_HEAD: 1 NUM_HEAD: 1
NUM_HEAD_FEAT: 5 NUM_HEAD_FEAT: 5
PC_T_RANGE: [11.556491477551948, 9.883761477330482, 80.0, 137.0, 31.872136543806814,
37.0, -196.0, 150.0, -80.0, -10.96031098768305]
ORIGIN2KITTI: [[0.999750,-0.000158,-0.022344,-43.366158,], ORIGIN2KITTI: [[0.999750,-0.000158,-0.022344,-43.366158,],
[-0.000158,0.999900,-0.014170,4.965493,], [-0.000158,0.999900,-0.014170,4.965493,],
[0.022344,0.014170,0.999650,-1.200000,], [0.022344,0.014170,0.999650,-1.200000,],
[0.000000,0.000000,0.000000,1.000000,],] [0.000000,0.000000,0.000000,1.000000,],]
KITTI2ORIGIN: [[0.999750,-0.000158,0.022344,43.382930,], KITTI2ORIGIN: [[0.999750,-0.000158,0.022344,43.382930,],
[-0.000158,0.999900,0.014170,-4.954857,], [-0.000158,0.999900,0.014170,-4.954857,],
[-0.022344,-0.014170,0.999650,0.300965,], [-0.022344,-0.014170,0.999650,0.300965,],
[0.000000,0.000000,0.000000,1.000000,],] [0.000000,0.000000,0.000000,1.000000,],]
INFER_THRESHOLD: INFER_THRESHOLD:
CLASS_0: 0.4 # truck CLASS_0: 0.15 # truck
CLASS_1: 0.4 # car CLASS_1: 0.30 # car
CLASS_2: 0.4 # other_v CLASS_2: 0.5 # other_v
CLASS_3: 0.4 # cyclist CLASS_3: 0.5 # cyclist
CLASS_4: 0.4 # pedestrain CLASS_4: 0.5 # pedestrain
node2: node2:
MAX_NUM_VOXELS: 50000 MAX_POINTS_ALLOWED: 400000
MAX_NUM_VOXELS: 150000
MAX_ACTIVE: 400000 MAX_ACTIVE: 400000
MAX_NUM_POINTS_PER_VOXEL: 32 MAX_NUM_POINTS_PER_VOXEL: 12
NUM_HAND_CRAFTED_FEATURES: 10 NUM_HAND_CRAFTED_FEATURES: 10
NUM_CLASS: 5 NUM_CLASS: 5
SCORE_THRESHOLD: 0.3 SCORE_THRESHOLD: 0.1
NMS_OVERLAP_THRESHOLD: 0.1 NMS_OVERLAP_THRESHOLD: 0.01
NUM_THREADS: 64 NUM_THREADS: 64
BATCH_SIZE: 1 BATCH_SIZE: 1
RPN_ENGINE_FILE: s RPN_ENGINE_FILE: s
PFE_ENGINE_FILE: s PFE_ENGINE_FILE: s
VOXEL_SIZES: [0.2, 0.2, 5] VOXEL_SIZES: [0.1, 0.1, 0.125]
GRID_SIZES: [1000, 1000, 1] GRID_SIZES: [1664, 1664, 40]
PC_RANGE: [-100,-100,-7,100,100,-2] PC_RANGE: [-83.2, -83.2,-7.0,83.2,83.2, -2.0]
DS_RATIO: 4 DS_RATIO: 8
BEV_FEATURE_SIZE: [250, 250, 64] BEV_FEATURE_SIZE: [208, 208, 256]
RPN_ONNX_FILE: unified_35_and_chengdu_50_pillar_bb.onnx RPN_ONNX_FILE: changshu_mixup_1_2_plus_cpv_truckloss.onnx
PFE_ONNX_FILE: unified_35_and_chengdu_50_pillar_pfe_50000.onnx CUTCONV_WEIGHTS: changshu_mixup_1_2_plus_cpv_truckloss.weights
USEENGINE: False USEENGINE: False
NUM_HEAD: 1 NUM_HEAD: 1
NUM_HEAD_FEAT: 5 NUM_HEAD_FEAT: 5
ORIGIN2KITTI: [[0.976220,-0.002876,0.216762,-52.130093,], PC_T_RANGE: [11.556491477551948, 9.883761477330482, 80.0, 137.0, 31.872136543806814,
[-0.002876,0.999652,0.026214,5.534293,], 37.0, -196.0, 150.0, -80.0, -10.96031098768305]
[-0.216762,-0.026214,0.975873,0.400000,], ORIGIN2KITTI: [[0.998610,0.000552,0.052702,-58.627052,],
[0.000552,0.999781,-0.020942,7.254136,],
[-0.052702,0.020942,0.998391,1.200000,],
[0.000000,0.000000,0.000000,1.000000,],] [0.000000,0.000000,0.000000,1.000000,],]
KITTI2ORIGIN: [[0.998610,0.000552,-0.052702,58.604804,],
[0.000552,0.999781,0.020942,-7.245295,],
KITTI2ORIGIN: [[0.976220,-0.002876,-0.216762,50.993078,], [0.052702,-0.020942,0.998391,2.043622,],
[-0.002876,0.999652,-0.026214,-5.671799,],
[0.216762,0.026214,0.975873,10.764374,],
[0.000000,0.000000,0.000000,1.000000,],] [0.000000,0.000000,0.000000,1.000000,],]
INFER_THRESHOLD: INFER_THRESHOLD:
CLASS_0: 0.4 # truck CLASS_0: 0.15 # truck
CLASS_1: 0.4 # car CLASS_1: 0.40 # car
CLASS_2: 0.4 # other_v CLASS_2: 0.5 # other_v
CLASS_3: 0.4 # cyclist CLASS_3: 0.5 # cyclist
CLASS_4: 0.4 # pedestrain CLASS_4: 0.5 # pedestrain
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment