Example #1
0
def get_unique_filename(rt_name: str, rdbe: ResultDBEntry) -> str:
    commit = rdbe.commit[-8:]
    d = rdbe.date.replace("-", "")
    basename = rt_name + f"_{d}_{rdbe.branch}_{commit}.rdbe.yaml"

    dr = dru.get_ros_package_path("easy_regression")
    filename = os.path.join(dr, "db", rt_name, basename)
    return filename
Example #2
0
def get_roots_for_calibrations() -> List[str]:
    roots: List[str] = []
    try:
        d = dtu.get_duckiefleet_root()
    except dtu.DTConfigException:
        dtu.logger.warn('Skipping duckiefleet root.')
        pass
    else:
        roots.append(os.path.join(d, "calibrations"))
    try:
        d = dru.get_ros_package_path("duckietown")
    except ResourceNotFound:
        dtu.logger.warn('Skipping duckietown root.')
    else:
        roots.append(os.path.join(d, "config", "baseline", "calibration"))

    d0 = dru.get_ros_package_path("complete_image_pipeline")
    dd = os.path.join(d0, "log-calib-config", "baseline", "calibration")
    roots.append(dd)

    return roots
Example #3
0
def load_configuration_for_nodes_in_package(package_name: str):
    """
    returns dict node_name -> config
    """
    suffix = ".easy_node.yaml"
    package_dir = dru.get_ros_package_path(package_name)
    configs = dtu.locate_files(package_dir, "*" + suffix)
    res = {}
    for c in configs:
        node_name = os.path.basename(c).replace(suffix, "")
        res[node_name] = load_configuration_package_node(
            package_name, node_name)
    return res
Example #4
0
def load_configuration_package_node(package_name: str,
                                    node_type_name: str) -> EasyNodeConfig:
    path = dru.get_ros_package_path(package_name)
    look_for = f"{node_type_name}.easy_node.yaml"
    found = dtu.locate_files(path, look_for)
    if not found:
        msg = f"Could not find EasyNode configuration {look_for!r}."
        raise dtu.DTConfigException(msg)  # XXX

    fn = found[0]
    contents = open(fn).read()
    c = load_configuration(fn, contents)
    c = c._replace(package_name=package_name)
    c = c._replace(node_type_name=node_type_name)

    # Add the common parameters
    if node_type_name != "easy_node":
        c0 = load_configuration_baseline()
        c = merge_configuration(c0, c)

    return c
Example #5
0
def load_board_info(filename: str = None) -> dict:
    """Load calibration checkerboard info"""
    if filename is None:
        root = dru.get_ros_package_path("duckietown")
        filename = root + "/config/baseline/ground_projection/ground_projection/default.yaml"

    if not os.path.isfile(filename):
        msg = f"No such file: {filename}"
        raise dtu.DTException(msg)

    target_data = dtu.yaml_load_file(filename)
    target_info = {
        "width": target_data["board_w"],
        "height": target_data["board_h"],
        "square_size": target_data["square_size"],
        "x_offset": target_data["x_offset"],
        "y_offset": target_data["y_offset"],
        "offset": np.array([target_data["x_offset"], -target_data["y_offset"]]),
        "size": (target_data["board_w"], target_data["board_h"]),
    }
    dtu.logger.info("Loaded checkerboard parameters")
    return target_info