forked from CopterExpress/clever-show
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanimation_info.py
91 lines (81 loc) · 3.99 KB
/
animation_info.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import os
import sys
import shutil
import logging
import argparse
from tabulate import tabulate
logging.basicConfig( # TODO all prints as logs
level=logging.INFO, # INFO
stream=sys.stdout,
format="%(asctime)s [%(name)-7.7s] [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s",
handlers=[
logging.StreamHandler(sys.stdout),
])
logger = logging.getLogger(__name__)
# Add parent dir to PATH to import messaging_lib and config_lib
current_dir = (os.path.dirname(os.path.realpath(__file__)))
root_dir = os.path.realpath(os.path.join(current_dir,'..'))
lib_dir = os.path.realpath(os.path.join(root_dir, 'lib'))
modules_dir = os.path.realpath(os.path.join(root_dir, 'drone/modules'))
sys.path.insert(0, lib_dir)
sys.path.insert(0, modules_dir)
from config import ConfigManager
def load_config(config):
config_dir = 'animation_config/config'
spec_path = os.path.join(config_dir,'spec')
if not os.path.exists(spec_path):
try:
os.makedirs(spec_path)
except OSError:
logger.debug("Creation of the directory {} failed".format(spec_path))
else:
logger.debug("Successfully created the directory {}".format(spec_path))
client_config_dir = os.path.realpath(os.path.join(root_dir,"drone/config"))
client_config_path = os.path.realpath(os.path.join(client_config_dir,"client.ini"))
client_configspec_path = os.path.realpath(os.path.join(client_config_dir,"spec/configspec_client.ini"))
shutil.copy(client_configspec_path, spec_path)
if os.path.exists(client_config_path):
shutil.copy(client_config_path, config_dir)
config.load_config_and_spec(os.path.join(config_dir,'client.ini'))
config = ConfigManager()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Get animation info")
parser.add_argument('animation', nargs='?', default='../examples/animations/basic/basic.csv',
help="Path to animation. Default is ../examples/animations/basic/basic.csv.")
parser.add_argument('--config', action='store_true',
help="Set this option to print config info.")
args = parser.parse_args()
if args.config:
print("\nLoading config copy from drone")
load_config(config)
if args.config:
print("\nConfig name: {} | version: {}".format(config.config_name, config.config_version))
print("Config animation settings:")
for key, value in config.animation.items():
if key == 'OUTPUT':
print('\tOUTPUT:')
for key, value in config.animation_output.items():
print("\t\t{}: {}".format(key, value))
else:
print("\t{}: {}".format(key, value))
print("Config flight settings:")
for key, value in config.flight.items():
print("\t{}: {}".format(key, value))
print("\nLoading animation {}".format(args.animation))
import animation
a = animation.Animation(args.animation, config)
print("\nAnimation id: {} | state: {}".format(a.id, a.state))
print("Frames separation:")
print("\tStatic begin frames: {}".format(animation.get_numbers(a.transformed_frames[:a.takeoff_index])))
print("\tTakeoff frames: {}".format(animation.get_numbers(a.transformed_frames[a.takeoff_index:a.route_index])))
print("\tRoute frames: {}".format(animation.get_numbers(a.transformed_frames[a.route_index:a.land_index])))
print("\tLand frames: {}".format(animation.get_numbers(a.transformed_frames[a.land_index:a.static_end_index])))
print("\tStatic end frames: {}".format(animation.get_numbers(a.transformed_frames[a.static_end_index:])))
header = animation.get_default_header()
print("\nOutput frames on fly start action:")
data = animation.get_table(a.output_frames, header)
print (tabulate(data, headers=header))
print("\nOutput frames on takeoff start action:")
data = animation.get_table(a.output_frames_takeoff, header)
print (tabulate(data, headers=header))
shutil.rmtree('animation_config')