2021-01-21 09:42:04 +01:00
|
|
|
import json
|
|
|
|
import yaml
|
|
|
|
import xml.etree.ElementTree as ET
|
|
|
|
from collections import OrderedDict
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
|
|
def read_json(fname):
|
|
|
|
fname = Path(fname)
|
|
|
|
with fname.open('rt') as handle:
|
|
|
|
return json.load(handle, object_hook=OrderedDict)
|
|
|
|
|
|
|
|
|
|
|
|
def write_json(content, fname):
|
|
|
|
fname = Path(fname)
|
|
|
|
with fname.open('wt') as handle:
|
|
|
|
json.dump(content, handle, indent=4, sort_keys=False)
|
|
|
|
|
|
|
|
|
|
|
|
def read_yaml(fname):
|
|
|
|
fname = Path(fname)
|
|
|
|
with fname.open('rt') as handle:
|
|
|
|
return yaml.load(handle, Loader=yaml.FullLoader)
|
|
|
|
|
|
|
|
|
|
|
|
def write_yaml(content, fname):
|
|
|
|
fname = Path(fname)
|
|
|
|
with fname.open('wt') as handle:
|
|
|
|
yaml.dump(content, handle)
|
|
|
|
|
|
|
|
|
|
|
|
def config_save(dir_path, config):
|
|
|
|
dir_path = Path(dir_path)
|
|
|
|
config_path_json = dir_path / "config.json"
|
|
|
|
config_path_yaml = dir_path / "config.yml"
|
|
|
|
# .json and .yml file,save 2 version of configuration.
|
|
|
|
write_json(config, config_path_json)
|
|
|
|
write_yaml(config, config_path_yaml)
|
|
|
|
|
|
|
|
|
|
|
|
def change_kp_in_xml(kp_list,
|
2021-06-24 15:52:21 +02:00
|
|
|
model_path="/home/zhou/slow/table_tennis_rl/simulation/gymTableTennis/gym_table_tennis/simple_reacher/robotics/assets/table_tennis/right_arm_actuator.xml"):
|
2021-01-21 09:42:04 +01:00
|
|
|
tree = ET.parse(model_path)
|
|
|
|
root = tree.getroot()
|
|
|
|
# for actuator in root.find("actuator"):
|
|
|
|
for position, kp in zip(root.iter('position'), kp_list):
|
|
|
|
position.set("kp", str(kp))
|
|
|
|
tree.write(model_path)
|
|
|
|
|