mirror of
https://github.com/CopterExpress/clever-show.git
synced 2026-05-26 07:07:58 +00:00
tools: Add animation_info script
This commit is contained in:
91
tools/animation_info.py
Normal file
91
tools/animation_info.py
Normal file
@@ -0,0 +1,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 in takeoff start action:")
|
||||
data = animation.get_table(a.output_frames_takeoff, header)
|
||||
print (tabulate(data, headers=header))
|
||||
|
||||
shutil.rmtree('animation_config')
|
||||
Reference in New Issue
Block a user