-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathrun_rosnode.py
77 lines (65 loc) · 2.81 KB
/
run_rosnode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python3
# Copyright 2021 by Julian Nubert, Robotic Systems Lab, ETH Zurich.
# All rights reserved.
# This file is released under the "BSD-3-Clause License".
# Please see the LICENSE file that has been included as part of this package.
import click
import numpy as np
import torch
import yaml
import ros_utils.odometry_publisher
@click.command()
@click.option('--checkpoint', prompt='Path to the saved model you want to test')
@click.option('--dataset',
prompt='On which dataset configuration do you want to get predictions? [kitti, darpa, ....]. Does not '
'need to be one of those, but the sensor paramaters are looked up in the config_datasets.yaml.')
@click.option('--lidar_topic', prompt='Topic of the published LiDAR pointcloud2 messages.')
@click.option('--lidar_frame', prompt='LiDAR frame in TF tree.')
@click.option('--integrate_odometry', help='Whether the published odometry should be integrated in the TF tree.',
default=True)
def config(checkpoint, dataset, lidar_topic, lidar_frame, integrate_odometry):
f = open('config/config_datasets.yaml')
config = yaml.load(f, Loader=yaml.FullLoader)
f = open('config/deployment_options.yaml')
deployment_options = yaml.load(f, Loader=yaml.FullLoader)
config.update(deployment_options)
f = open('config/hyperparameters.yaml')
network_hyperparameters = yaml.load(f, Loader=yaml.FullLoader)
config.update(network_hyperparameters)
# Mode
config["mode"] = "training"
# No dropout during testing
if config["use_dropout"]:
config["use_dropout"] = False
print("Deactivating dropout for this mode.")
# CLI Input
## Checkpoint
config["checkpoint"] = str(checkpoint)
## Dataset
config["datasets"] = [str(dataset)]
## LiDAR Topic
config["lidar_topic"] = str(lidar_topic)
## LiDAR Frame
config["lidar_frame"] = str(lidar_frame)
## Integrate odometry
config["integrate_odometry"] = integrate_odometry
# Device to be used
if config["device"] == "cuda":
config["device"] = torch.device("cuda")
else:
config["device"] = torch.device("cpu")
# Convert angles to radians
for dataset in config["datasets"]:
config[dataset]["vertical_field_of_view"][0] *= (np.pi / 180.0)
config[dataset]["vertical_field_of_view"][1] *= (np.pi / 180.0)
config["horizontal_field_of_view"][0] *= (np.pi / 180.0)
config["horizontal_field_of_view"][1] *= (np.pi / 180.0)
print("----------------------------------")
print("Configuration for this run: ")
print(config)
print("----------------------------------")
return config
if __name__ == "__main__":
config = config(standalone_mode=False)
publisher = ros_utils.odometry_publisher.OdometryPublisher(config=config)
publisher.publish_odometry()