v1.0.0; fix bugs
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
__version__ = "0.1.0"
|
||||
__version__ = "1.0.0"
|
||||
ROBOGAUGE_ROOT_DIR = str(Path(__file__).parents[1])
|
||||
ROBOGAUGE_LOGS_DIR = str(Path(ROBOGAUGE_ROOT_DIR) / "logs")
|
||||
|
||||
@@ -28,9 +28,9 @@ from pprint import pprint
|
||||
|
||||
default_args_list = [
|
||||
'--stress-benchmark',
|
||||
# '--stress-terrain-names', 'flat', 'wave', 'slope_fd', 'slope_bd', 'stairs_fd', 'stairs_bd', 'obstacle',
|
||||
'--stress-terrain-names', 'flat', 'wave',
|
||||
'--num-processes', '50',
|
||||
'--stress-terrain-names', 'flat', 'wave', 'slope_fd', 'slope_bd', 'stairs_fd', 'stairs_bd', 'obstacle',
|
||||
# '--stress-terrain-names', 'flat', 'wave',
|
||||
'--num-processes', '30',
|
||||
'--seeds', '0', '1', '2',
|
||||
'--search-seeds', '0', '1', '2', '3', '4',
|
||||
'--frictions', '0.5', '0.75', '1.0', '1.25', '1.5', '1.75', '2.0', '2.25', '2.5',
|
||||
@@ -58,7 +58,7 @@ class ResponseStatus:
|
||||
ERROR = "error"
|
||||
NOT_FOUND = "not_found"
|
||||
|
||||
def run_api_server(input_queue, result_dict, port=9973):
|
||||
def run_api_server(input_queue: multiprocessing.Queue, result_dict: dict, port=9973):
|
||||
"""
|
||||
Running in a separate subprocess.
|
||||
I/O Process: submit requests -> put into queue -> return ID.
|
||||
@@ -83,7 +83,8 @@ def run_api_server(input_queue, result_dict, port=9973):
|
||||
def get_result(task_id: str):
|
||||
if task_id not in result_dict:
|
||||
return {"status": ResponseStatus.NOT_FOUND}
|
||||
return result_dict[task_id]
|
||||
result = result_dict.pop(task_id)
|
||||
return result
|
||||
|
||||
print(f"📡 API Server listening on port {port}...")
|
||||
uvicorn.run(app, host="127.0.0.1", port=port, log_level="error")
|
||||
|
||||
@@ -178,12 +178,14 @@ class StressPipeline:
|
||||
return
|
||||
|
||||
summary = {**self.static_info, 'summary': {}, 'robust_score': {}, 'benchmark_score': 0.0, 'scores': {}}
|
||||
scores = summary['scores']
|
||||
metric_collections = defaultdict(lambda: defaultdict(list))
|
||||
terrain_collections = defaultdict(lambda: defaultdict(list))
|
||||
zero_terrain_count = defaultdict(lambda: 0)
|
||||
for result in all_results:
|
||||
terrain_name = result['data']['terrain_name']
|
||||
terrain_level = result['level'] # None, 0, 1, ..., 10
|
||||
scores[terrain_name] = 0.0
|
||||
key = f'{terrain_name}_{terrain_level}'
|
||||
key += f'_baseMass{result["data"]["base_mass"]}_friction{result["data"]["friction"]}'
|
||||
if terrain_level == 0:
|
||||
@@ -207,7 +209,6 @@ class StressPipeline:
|
||||
|
||||
robust_score = defaultdict(dict)
|
||||
robust_scores = []
|
||||
scores = summary['scores']
|
||||
for terrain_name, means in terrain_collections.items():
|
||||
for mean_name, values in means.items():
|
||||
values.extend([0.0] * zero_terrain_count[terrain_name]) # include zero terrains
|
||||
@@ -215,7 +216,7 @@ class StressPipeline:
|
||||
scores[terrain_name] = robust_score[terrain_name]['mean@50']
|
||||
robust_scores.append(robust_score[terrain_name]['mean@50'])
|
||||
summary['robust_score'] = dict(robust_score)
|
||||
summary['benchmark_score'] = float(np.mean(robust_scores))
|
||||
summary['benchmark_score'] = float(np.mean(list(scores.values())))
|
||||
scores['benchmark'] = summary['benchmark_score']
|
||||
|
||||
save_path = stress_logger.log_dir / "stress_benchmark_results.yaml"
|
||||
|
||||
Reference in New Issue
Block a user