mirror of
https://github.com/CopterExpress/clever-show.git
synced 2026-05-26 15:13:26 +00:00
91 lines
4.0 KiB
Python
91 lines
4.0 KiB
Python
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') |