From 76447b0f4e2d6604a87adb1034c7fc64d672c253 Mon Sep 17 00:00:00 2001 From: Julien Lecoeur Date: Fri, 13 Oct 2017 15:49:17 +0200 Subject: [PATCH] Mixers: Use geometry filename as mixer name --- src/lib/mixer/CMakeLists.txt | 26 +++++++++---------- .../mixer/geometries/dodeca_bottom_cox.toml | 1 - src/lib/mixer/geometries/dodeca_top_cox.toml | 1 - src/lib/mixer/geometries/hex_cox.toml | 1 - src/lib/mixer/geometries/hex_plus.toml | 1 - src/lib/mixer/geometries/hex_t.toml | 1 - src/lib/mixer/geometries/hex_x.toml | 1 - src/lib/mixer/geometries/octa_cox.toml | 1 - src/lib/mixer/geometries/octa_cox_wide.toml | 1 - src/lib/mixer/geometries/octa_plus.toml | 1 - src/lib/mixer/geometries/octa_x.toml | 1 - src/lib/mixer/geometries/quad_deadcat.toml | 1 - src/lib/mixer/geometries/quad_h.toml | 1 - src/lib/mixer/geometries/quad_plus.toml | 1 - src/lib/mixer/geometries/quad_vtail.toml | 1 - src/lib/mixer/geometries/quad_wide.toml | 1 - src/lib/mixer/geometries/quad_x.toml | 1 - src/lib/mixer/geometries/quad_x_pusher.toml | 1 - src/lib/mixer/geometries/quad_y.toml | 1 - .../geometries/tools/px_generate_mixers.py | 9 +++++-- src/lib/mixer/geometries/tri_y.toml | 1 - src/lib/mixer/geometries/twin_engine.toml | 1 - 22 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/lib/mixer/CMakeLists.txt b/src/lib/mixer/CMakeLists.txt index 8cbb8d250d..463f496084 100644 --- a/src/lib/mixer/CMakeLists.txt +++ b/src/lib/mixer/CMakeLists.txt @@ -33,7 +33,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) -set(geom_files +set(geometry_files quad_x.toml quad_h.toml quad_plus.toml @@ -56,34 +56,34 @@ set(geom_files dodeca_bottom_cox.toml ) -set(geom_list) -foreach(geom_file ${geom_files}) - list(APPEND geom_list ${CMAKE_CURRENT_SOURCE_DIR}/geoms/${geom_file}) +set(geometries_list) +foreach(geom_file ${geometry_files}) + list(APPEND geometries_list ${CMAKE_CURRENT_SOURCE_DIR}/geometries/${geom_file}) endforeach() add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/geoms/tools/px_generate_mixers.py -f ${geom_list} -o ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/geoms/tools/px_generate_mixers.py ${geom_list} + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools/px_generate_mixers.py -f ${geometries_list} -o ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools/px_generate_mixers.py ${geometries_list} ) add_custom_target(mixer_gen DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h - DEPENDS ${geom_list}) + DEPENDS ${geometries_list}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/geoms/tools/px_generate_mixers.py --normalize -f ${geom_list} -o ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/geoms/tools/px_generate_mixers.py ${geom_list} + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools/px_generate_mixers.py --normalize -f ${geometries_list} -o ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools/px_generate_mixers.py ${geometries_list} ) add_custom_target(mixer_gen_norm DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h - DEPENDS ${geom_list}) + DEPENDS ${geometries_list}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/geoms/tools/px_generate_mixers.py --sixdof -f ${geom_list} -o ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/geoms/tools/px_generate_mixers.py ${geom_list} + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools/px_generate_mixers.py --sixdof -f ${geometries_list} -o ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools/px_generate_mixers.py ${geometries_list} ) add_custom_target(mixer_gen_6dof DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h - DEPENDS ${geom_list}) + DEPENDS ${geometries_list}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_legacy.generated.h COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/multi_tables.py > ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_legacy.generated.h diff --git a/src/lib/mixer/geometries/dodeca_bottom_cox.toml b/src/lib/mixer/geometries/dodeca_bottom_cox.toml index 0c62fcdc3d..7470bff67b 100644 --- a/src/lib/mixer/geometries/dodeca_bottom_cox.toml +++ b/src/lib/mixer/geometries/dodeca_bottom_cox.toml @@ -1,7 +1,6 @@ # Generic Dodecacopter in X coax configuration, bottom half [info] -name = "dodeca_bottom_cox" key = "6a" description = "Generic Dodecacopter in X coax configuration, bottom half" diff --git a/src/lib/mixer/geometries/dodeca_top_cox.toml b/src/lib/mixer/geometries/dodeca_top_cox.toml index 06a2536f74..e875240bac 100644 --- a/src/lib/mixer/geometries/dodeca_top_cox.toml +++ b/src/lib/mixer/geometries/dodeca_top_cox.toml @@ -1,7 +1,6 @@ # Generic Dodecacopter in X coax configuration, top half [info] -name = "dodeca_top_cox" key = "6m" description = "Generic Dodecacopter in X coax configuration, top half" diff --git a/src/lib/mixer/geometries/hex_cox.toml b/src/lib/mixer/geometries/hex_cox.toml index 6d082ca4eb..a344c16e1f 100644 --- a/src/lib/mixer/geometries/hex_cox.toml +++ b/src/lib/mixer/geometries/hex_cox.toml @@ -1,7 +1,6 @@ # Generic Hexacopter in coaxial configuration [info] -name = "hex_cox" key = "6c" description = "Generic Hexacopter in coaxial configuration" diff --git a/src/lib/mixer/geometries/hex_plus.toml b/src/lib/mixer/geometries/hex_plus.toml index da8b5b2f04..6b86cb40b6 100644 --- a/src/lib/mixer/geometries/hex_plus.toml +++ b/src/lib/mixer/geometries/hex_plus.toml @@ -1,7 +1,6 @@ # Generic Hexacopter in + configuration [info] -name = "hex_plus" key = "6+" description = "Generic Hexacopter in + configuration" diff --git a/src/lib/mixer/geometries/hex_t.toml b/src/lib/mixer/geometries/hex_t.toml index 0ec4cf1174..fc8c32b964 100644 --- a/src/lib/mixer/geometries/hex_t.toml +++ b/src/lib/mixer/geometries/hex_t.toml @@ -1,7 +1,6 @@ # Generic Hexacopter in T configuration [info] -name = "hex_t" key = "6t" description = "Generic Hexacopter in T configuration" diff --git a/src/lib/mixer/geometries/hex_x.toml b/src/lib/mixer/geometries/hex_x.toml index 2324f1a5d3..a546a83f72 100644 --- a/src/lib/mixer/geometries/hex_x.toml +++ b/src/lib/mixer/geometries/hex_x.toml @@ -1,7 +1,6 @@ # Generic Hexacopter in X configuration [info] -name = "hex_x" key = "6x" description = "Generic Hexacopter in X configuration" diff --git a/src/lib/mixer/geometries/octa_cox.toml b/src/lib/mixer/geometries/octa_cox.toml index cbe863fab0..6c42bfa1f7 100644 --- a/src/lib/mixer/geometries/octa_cox.toml +++ b/src/lib/mixer/geometries/octa_cox.toml @@ -1,7 +1,6 @@ # Generic Octacopter in coax configuration [info] -name = "octa_cox" key = "8c" description = "GenericOctacopter in coax configuration" diff --git a/src/lib/mixer/geometries/octa_cox_wide.toml b/src/lib/mixer/geometries/octa_cox_wide.toml index 0bf1a553ad..785c6a4c0e 100644 --- a/src/lib/mixer/geometries/octa_cox_wide.toml +++ b/src/lib/mixer/geometries/octa_cox_wide.toml @@ -1,7 +1,6 @@ # Generic Octacopter in wide coax configuration [info] -name = "octa_cox_wide" key = "8cw" description = "Generic Octacopter in wide coax configuration" diff --git a/src/lib/mixer/geometries/octa_plus.toml b/src/lib/mixer/geometries/octa_plus.toml index 05168b9dc5..7c13bc728d 100644 --- a/src/lib/mixer/geometries/octa_plus.toml +++ b/src/lib/mixer/geometries/octa_plus.toml @@ -1,7 +1,6 @@ # Generic Octacopter in + configuration [info] -name = "octa_plus" key = "8+" description = "Generic Octacopter in + configuration" diff --git a/src/lib/mixer/geometries/octa_x.toml b/src/lib/mixer/geometries/octa_x.toml index 6ff2a41d10..e85403b032 100644 --- a/src/lib/mixer/geometries/octa_x.toml +++ b/src/lib/mixer/geometries/octa_x.toml @@ -1,7 +1,6 @@ # Generic Octacopter in X configuration [info] -name = "octa_x" key = "8x" description = "Generic Octacopter in X configuration" diff --git a/src/lib/mixer/geometries/quad_deadcat.toml b/src/lib/mixer/geometries/quad_deadcat.toml index b46ee4ca85..1e7febaef4 100644 --- a/src/lib/mixer/geometries/quad_deadcat.toml +++ b/src/lib/mixer/geometries/quad_deadcat.toml @@ -2,7 +2,6 @@ # Same geometry as quad_wide, except CG is located at intersection of rear arms, so front motors are more loaded. [info] -name = "quad_deadcat" key = "4dc" description = "SK450 DeadCat Quadcopter, CG at intersection of rear arms" diff --git a/src/lib/mixer/geometries/quad_h.toml b/src/lib/mixer/geometries/quad_h.toml index 3ce7eeae20..e58b5a5ed6 100644 --- a/src/lib/mixer/geometries/quad_h.toml +++ b/src/lib/mixer/geometries/quad_h.toml @@ -1,7 +1,6 @@ # Generic Quadcopter in H configuration [info] -name = "quad_h" key = "4h" description = "Generic Quadcopter in H configuration" diff --git a/src/lib/mixer/geometries/quad_plus.toml b/src/lib/mixer/geometries/quad_plus.toml index d14a0f6b0a..59ba2cf90c 100644 --- a/src/lib/mixer/geometries/quad_plus.toml +++ b/src/lib/mixer/geometries/quad_plus.toml @@ -1,7 +1,6 @@ # Generic Quadcopter in + configuration [info] -name = "quad_plus" key = "4+" description = "Generic Quadcopter in + configuration" diff --git a/src/lib/mixer/geometries/quad_vtail.toml b/src/lib/mixer/geometries/quad_vtail.toml index d4f71dc61b..3b934018db 100644 --- a/src/lib/mixer/geometries/quad_vtail.toml +++ b/src/lib/mixer/geometries/quad_vtail.toml @@ -1,7 +1,6 @@ # Quadcopter in Y configuration with rear props tilted at 45 degrees [info] -name = "quad_vtail" key = "4vt" description = "Quadcopter in Y configuration with rear props tilted at 45 degrees" diff --git a/src/lib/mixer/geometries/quad_wide.toml b/src/lib/mixer/geometries/quad_wide.toml index a794b6c02b..d2fde7861b 100644 --- a/src/lib/mixer/geometries/quad_wide.toml +++ b/src/lib/mixer/geometries/quad_wide.toml @@ -1,7 +1,6 @@ # Generic Quadcopter in wide configuration [info] -name = "quad_wide" key = "4w" description = "Quadcopter in wide configuration. Same geometry as SK450 Deadcat except the CG is moved backward to load all motors equally" diff --git a/src/lib/mixer/geometries/quad_x.toml b/src/lib/mixer/geometries/quad_x.toml index 8e7fc4be91..b4cf484c21 100644 --- a/src/lib/mixer/geometries/quad_x.toml +++ b/src/lib/mixer/geometries/quad_x.toml @@ -1,7 +1,6 @@ # Generic Quadcopter in X configuration [info] -name = "quad_x" key = "4x" description = "Generic Quadcopter in X configuration" diff --git a/src/lib/mixer/geometries/quad_x_pusher.toml b/src/lib/mixer/geometries/quad_x_pusher.toml index 29aa4ab279..a63ff0652b 100644 --- a/src/lib/mixer/geometries/quad_x_pusher.toml +++ b/src/lib/mixer/geometries/quad_x_pusher.toml @@ -2,7 +2,6 @@ # with added pusher motor in the back [info] -name = "quad_x_pusher" key = "4x1p" description = "Quadcopter in X configuration, with added pusher motor in the back" diff --git a/src/lib/mixer/geometries/quad_y.toml b/src/lib/mixer/geometries/quad_y.toml index 5aa9e9b779..b75756c8d9 100644 --- a/src/lib/mixer/geometries/quad_y.toml +++ b/src/lib/mixer/geometries/quad_y.toml @@ -1,7 +1,6 @@ # Quadcopter in Y configuration with coax rear props [info] -name = "quad_y" key = "4y" description = "Quadcopter in Y configuration with coax rear props" diff --git a/src/lib/mixer/geometries/tools/px_generate_mixers.py b/src/lib/mixer/geometries/tools/px_generate_mixers.py index 3bfcb97624..d6e483feea 100644 --- a/src/lib/mixer/geometries/tools/px_generate_mixers.py +++ b/src/lib/mixer/geometries/tools/px_generate_mixers.py @@ -67,6 +67,7 @@ def parse_geometry_toml(filename): ''' Parses toml geometry file and returns a dictionary with curated list of rotors ''' + import os # Load toml file d = toml.load(filename) @@ -82,10 +83,12 @@ def parse_geometry_toml(filename): raise AttributeError('{}: Error, missing info section'.format(filename)) # Check info section - for field in ['name', 'key', 'description']: + for field in ['key', 'description']: if field not in d['info']: raise AttributeError('{}: Error, unspecified info field "{}"'.format(filename, field)) + # Use filename as mixer name + d['info']['name'] = os.path.basename(filename).split('.')[0].lower() # Convert rotors rotor_list = [] @@ -234,7 +237,9 @@ def generate_mixer_multirotor_header(geometries_list, use_normalized_mix=False, # Print enum buf.write(u"enum class MultirotorGeometry : MultirotorGeometryUnderlyingType {\n") for i, geometry in enumerate(geometries_list): - buf.write(u"\t{} = {},\n".format(geometry['info']['name'].upper(), i)) + buf.write(u"\t{},{}// {} (text key {})\n".format( + geometry['info']['name'].upper(), ' ' * (max(0, 30 - len(geometry['info']['name']))), + geometry['info']['description'], geometry['info']['key'])) buf.write(u"\n\tMAX_GEOMETRY\n") buf.write(u"}; // enum class MultirotorGeometry\n\n") diff --git a/src/lib/mixer/geometries/tri_y.toml b/src/lib/mixer/geometries/tri_y.toml index 9c060938cc..b41dbd8cbd 100644 --- a/src/lib/mixer/geometries/tri_y.toml +++ b/src/lib/mixer/geometries/tri_y.toml @@ -1,7 +1,6 @@ # Tri Y [info] -name = "tri_y" key = "3y" description = "Tri Y" diff --git a/src/lib/mixer/geometries/twin_engine.toml b/src/lib/mixer/geometries/twin_engine.toml index 771b2c8987..6a547a1654 100644 --- a/src/lib/mixer/geometries/twin_engine.toml +++ b/src/lib/mixer/geometries/twin_engine.toml @@ -1,7 +1,6 @@ # Twin engine [info] -name = "twin_engine" key = "2-" description = "Twin engine"