From ee51880b0f7c0bc882b283cf316de3d29694d76c Mon Sep 17 00:00:00 2001 From: Stevedan Ogochukwu Omodolor <stevedan.o.omodolor@gmail.com> Date: Fri, 27 May 2022 11:56:35 +0200 Subject: [PATCH] get current state removed from formation state --- ...lular_no_formation_crazyflie_1_logdata.bag | Bin 0 -> 234497 bytes ...lular_no_formation_crazyflie_2_logdata.bag | Bin 0 -> 227576 bytes ...lular_no_formation_crazyflie_3_logdata.bag | Bin 0 -> 227576 bytes .../scripts/autonomy_test.py | 191 + .../scripts/cache/D29D12CF.json | 4366 +++++++++++++++++ .../scripts/cache/E2229F02.json | 2410 +++++++++ .../src/drone_node.cpp | 25 +- .../src/omniwheel_node.cpp | 31 +- 8 files changed, 6996 insertions(+), 27 deletions(-) create mode 100644 real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_1_logdata.bag create mode 100644 real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_2_logdata.bag create mode 100644 real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_3_logdata.bag create mode 100644 real_robot/coordination_formation_control_pkg/scripts/autonomy_test.py create mode 100644 real_robot/coordination_formation_control_pkg/scripts/cache/D29D12CF.json create mode 100644 real_robot/coordination_formation_control_pkg/scripts/cache/E2229F02.json diff --git a/real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_1_logdata.bag b/real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_1_logdata.bag new file mode 100644 index 0000000000000000000000000000000000000000..aea77291a260268a21dd3d4e01658d30775fcf9e GIT binary patch literal 234497 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 Lf!H8(K~sYOQTK$C literal 0 HcmV?d00001 diff --git a/real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_2_logdata.bag b/real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_2_logdata.bag new file mode 100644 index 0000000000000000000000000000000000000000..f41744a13b4775950038e4e976e6c824bf68bef8 GIT binary patch literal 227576 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 OAy3DF*dTL3({%vci0m2w literal 0 HcmV?d00001 diff --git a/real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_3_logdata.bag b/real_robot/coordination_formation_control_pkg/results/experiment_1/experiment_1_trianglular_no_formation_crazyflie_3_logdata.bag new file mode 100644 index 0000000000000000000000000000000000000000..066de6cdf4fafcde646ef9a033fc8f61c329ccfb GIT binary patch literal 227576 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 I1x?oh0Cg#VegFUf literal 0 HcmV?d00001 diff --git a/real_robot/coordination_formation_control_pkg/scripts/autonomy_test.py b/real_robot/coordination_formation_control_pkg/scripts/autonomy_test.py new file mode 100644 index 0000000..0acc3ae --- /dev/null +++ b/real_robot/coordination_formation_control_pkg/scripts/autonomy_test.py @@ -0,0 +1,191 @@ +# -*- coding: utf-8 -*- +# +# || ____ _ __ +# +------+ / __ )(_) /_______________ _____ ___ +# | 0xBC | / __ / / __/ ___/ ___/ __ `/_ / / _ \ +# +------+ / /_/ / / /_/ /__/ / / /_/ / / /_/ __/ +# || || /_____/_/\__/\___/_/ \__,_/ /___/\___/ +# +# Copyright (C) 2018 Bitcraze AB +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +""" +Simple example that connects to one crazyflie (check the address at the top +and update it to your crazyflie address) and uses the high level commander +to send setpoints and trajectory to fly a figure 8. +This example is intended to work with any positioning system (including LPS). +It aims at documenting how to set the Crazyflie in position control mode +and how to send setpoints using the high level commander. +""" +import sys +import time + +import cflib.crtp +from cflib.crazyflie import Crazyflie +from cflib.crazyflie.high_level_commander import HighLevelCommander +from cflib.crazyflie.log import LogConfig +from cflib.crazyflie.mem import CompressedSegment +from cflib.crazyflie.mem import CompressedStart +from cflib.crazyflie.mem import MemoryElement +from cflib.crazyflie.syncCrazyflie import SyncCrazyflie +from cflib.crazyflie.syncLogger import SyncLogger +from cflib.utils import uri_helper + +# URI to the Crazyflie to connect to +uri = uri_helper.uri_from_env(default='radio://0/90/2M/E7E7E7E701') + +# The trajectory to fly +a = 0.9 +b = 0.5 +c = 0.5 +trajectory = [ + CompressedStart(0.0, 0.0, 0.0, 0.0), + CompressedSegment(2.0, [0.0, 1.0, 1.0], [0.0, a, 0.0], [], []), + CompressedSegment(2.0, [1.0, b, 0.0], [-a, -c, 0.0], [], []), + CompressedSegment(2.0, [-b, -1.0, -1.0], [c, a, 0.0], [], []), + CompressedSegment(2.0, [-1.0, 0.0, 0.0], [-a, 0.0, 0.0], [], []), +] + + +class Uploader: + def __init__(self): + self._is_done = False + self._sucess = True + + def upload(self, trajectory_mem): + print('Uploading data') + trajectory_mem.write_data(self._upload_done, + write_failed_cb=self._upload_failed) + + while not self._is_done: + time.sleep(0.2) + + return self._sucess + + def _upload_done(self, mem, addr): + print('Data uploaded') + self._is_done = True + self._sucess = True + + def _upload_failed(self, mem, addr): + print('Data upload failed') + self._is_done = True + self._sucess = False + + +def wait_for_position_estimator(scf): + print('Waiting for estimator to find position...') + + log_config = LogConfig(name='Kalman Variance', period_in_ms=500) + log_config.add_variable('kalman.varPX', 'float') + log_config.add_variable('kalman.varPY', 'float') + log_config.add_variable('kalman.varPZ', 'float') + + var_y_history = [1000] * 10 + var_x_history = [1000] * 10 + var_z_history = [1000] * 10 + + threshold = 0.001 + + with SyncLogger(scf, log_config) as logger: + for log_entry in logger: + data = log_entry[1] + + var_x_history.append(data['kalman.varPX']) + var_x_history.pop(0) + var_y_history.append(data['kalman.varPY']) + var_y_history.pop(0) + var_z_history.append(data['kalman.varPZ']) + var_z_history.pop(0) + + min_x = min(var_x_history) + max_x = max(var_x_history) + min_y = min(var_y_history) + max_y = max(var_y_history) + min_z = min(var_z_history) + max_z = max(var_z_history) + + # print("{} {} {}". + # format(max_x - min_x, max_y - min_y, max_z - min_z)) + + if (max_x - min_x) < threshold and ( + max_y - min_y) < threshold and ( + max_z - min_z) < threshold: + break + + +def reset_estimator(cf): + cf.param.set_value('kalman.resetEstimation', '1') + time.sleep(0.1) + cf.param.set_value('kalman.resetEstimation', '0') + + wait_for_position_estimator(cf) + + +def activate_high_level_commander(cf): + cf.param.set_value('commander.enHighLevel', '1') + + +def activate_mellinger_controller(cf): + cf.param.set_value('stabilizer.controller', '2') + + +def upload_trajectory(cf, trajectory_id, trajectory): + trajectory_mem = cf.mem.get_mems(MemoryElement.TYPE_TRAJ)[0] + + trajectory_mem.trajectory = trajectory + + upload_result = Uploader().upload(trajectory_mem) + if not upload_result: + print('Upload failed, aborting!') + sys.exit(1) + cf.high_level_commander.define_trajectory( + trajectory_id, + 0, + len(trajectory), + type=HighLevelCommander.TRAJECTORY_TYPE_POLY4D_COMPRESSED) + + total_duration = 0 + # Skip the start element + for segment in trajectory[1:]: + total_duration += segment.duration + + return total_duration + + +def run_sequence(cf, trajectory_id, duration): + commander = cf.high_level_commander + + commander.takeoff(1.0, 2.0) + time.sleep(3.0) + relative = True + commander.start_trajectory(trajectory_id, 1.0, relative) + time.sleep(duration) + commander.land(0.0, 2.0) + time.sleep(2) + commander.stop() + + +if __name__ == '__main__': + cflib.crtp.init_drivers() + + with SyncCrazyflie(uri, cf=Crazyflie(rw_cache='./cache')) as scf: + cf = scf.cf + trajectory_id = 1 + + activate_high_level_commander(cf) + # activate_mellinger_controller(cf) + duration = upload_trajectory(cf, trajectory_id, trajectory) + print('The sequence is {:.1f} seconds long'.format(duration)) + reset_estimator(cf) + run_sequence(cf, trajectory_id, duration) diff --git a/real_robot/coordination_formation_control_pkg/scripts/cache/D29D12CF.json b/real_robot/coordination_formation_control_pkg/scripts/cache/D29D12CF.json new file mode 100644 index 0000000..f41c02c --- /dev/null +++ b/real_robot/coordination_formation_control_pkg/scripts/cache/D29D12CF.json @@ -0,0 +1,4366 @@ +{ + "activeMarker": { + "btSns": { + "__class__": "LogTocElement", + "ident": 0, + "group": "activeMarker", + "name": "btSns", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "i2cOk": { + "__class__": "LogTocElement", + "ident": 1, + "group": "activeMarker", + "name": "i2cOk", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "aideck": { + "receivebyte": { + "__class__": "LogTocElement", + "ident": 2, + "group": "aideck", + "name": "receivebyte", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "motion": { + "motion": { + "__class__": "LogTocElement", + "ident": 3, + "group": "motion", + "name": "motion", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "deltaX": { + "__class__": "LogTocElement", + "ident": 4, + "group": "motion", + "name": "deltaX", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "deltaY": { + "__class__": "LogTocElement", + "ident": 5, + "group": "motion", + "name": "deltaY", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "shutter": { + "__class__": "LogTocElement", + "ident": 6, + "group": "motion", + "name": "shutter", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "maxRaw": { + "__class__": "LogTocElement", + "ident": 7, + "group": "motion", + "name": "maxRaw", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "minRaw": { + "__class__": "LogTocElement", + "ident": 8, + "group": "motion", + "name": "minRaw", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "Rawsum": { + "__class__": "LogTocElement", + "ident": 9, + "group": "motion", + "name": "Rawsum", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "outlierCount": { + "__class__": "LogTocElement", + "ident": 10, + "group": "motion", + "name": "outlierCount", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "squal": { + "__class__": "LogTocElement", + "ident": 11, + "group": "motion", + "name": "squal", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "std": { + "__class__": "LogTocElement", + "ident": 12, + "group": "motion", + "name": "std", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "ring": { + "fadeTime": { + "__class__": "LogTocElement", + "ident": 13, + "group": "ring", + "name": "fadeTime", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "loco": { + "mode": { + "__class__": "LogTocElement", + "ident": 14, + "group": "loco", + "name": "mode", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "spiWr": { + "__class__": "LogTocElement", + "ident": 15, + "group": "loco", + "name": "spiWr", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "spiRe": { + "__class__": "LogTocElement", + "ident": 16, + "group": "loco", + "name": "spiRe", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "ranging": { + "state": { + "__class__": "LogTocElement", + "ident": 17, + "group": "ranging", + "name": "state", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "distance0": { + "__class__": "LogTocElement", + "ident": 18, + "group": "ranging", + "name": "distance0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance1": { + "__class__": "LogTocElement", + "ident": 19, + "group": "ranging", + "name": "distance1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance2": { + "__class__": "LogTocElement", + "ident": 20, + "group": "ranging", + "name": "distance2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance3": { + "__class__": "LogTocElement", + "ident": 21, + "group": "ranging", + "name": "distance3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance4": { + "__class__": "LogTocElement", + "ident": 22, + "group": "ranging", + "name": "distance4", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance5": { + "__class__": "LogTocElement", + "ident": 23, + "group": "ranging", + "name": "distance5", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance6": { + "__class__": "LogTocElement", + "ident": 24, + "group": "ranging", + "name": "distance6", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "distance7": { + "__class__": "LogTocElement", + "ident": 25, + "group": "ranging", + "name": "distance7", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure0": { + "__class__": "LogTocElement", + "ident": 26, + "group": "ranging", + "name": "pressure0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure1": { + "__class__": "LogTocElement", + "ident": 27, + "group": "ranging", + "name": "pressure1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure2": { + "__class__": "LogTocElement", + "ident": 28, + "group": "ranging", + "name": "pressure2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure3": { + "__class__": "LogTocElement", + "ident": 29, + "group": "ranging", + "name": "pressure3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure4": { + "__class__": "LogTocElement", + "ident": 30, + "group": "ranging", + "name": "pressure4", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure5": { + "__class__": "LogTocElement", + "ident": 31, + "group": "ranging", + "name": "pressure5", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure6": { + "__class__": "LogTocElement", + "ident": 32, + "group": "ranging", + "name": "pressure6", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure7": { + "__class__": "LogTocElement", + "ident": 33, + "group": "ranging", + "name": "pressure7", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "tdoa2": { + "d7-0": { + "__class__": "LogTocElement", + "ident": 34, + "group": "tdoa2", + "name": "d7-0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d0-1": { + "__class__": "LogTocElement", + "ident": 35, + "group": "tdoa2", + "name": "d0-1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d1-2": { + "__class__": "LogTocElement", + "ident": 36, + "group": "tdoa2", + "name": "d1-2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d2-3": { + "__class__": "LogTocElement", + "ident": 37, + "group": "tdoa2", + "name": "d2-3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d3-4": { + "__class__": "LogTocElement", + "ident": 38, + "group": "tdoa2", + "name": "d3-4", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d4-5": { + "__class__": "LogTocElement", + "ident": 39, + "group": "tdoa2", + "name": "d4-5", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d5-6": { + "__class__": "LogTocElement", + "ident": 40, + "group": "tdoa2", + "name": "d5-6", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "d6-7": { + "__class__": "LogTocElement", + "ident": 41, + "group": "tdoa2", + "name": "d6-7", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc0": { + "__class__": "LogTocElement", + "ident": 42, + "group": "tdoa2", + "name": "cc0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc1": { + "__class__": "LogTocElement", + "ident": 43, + "group": "tdoa2", + "name": "cc1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc2": { + "__class__": "LogTocElement", + "ident": 44, + "group": "tdoa2", + "name": "cc2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc3": { + "__class__": "LogTocElement", + "ident": 45, + "group": "tdoa2", + "name": "cc3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc4": { + "__class__": "LogTocElement", + "ident": 46, + "group": "tdoa2", + "name": "cc4", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc5": { + "__class__": "LogTocElement", + "ident": 47, + "group": "tdoa2", + "name": "cc5", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc6": { + "__class__": "LogTocElement", + "ident": 48, + "group": "tdoa2", + "name": "cc6", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc7": { + "__class__": "LogTocElement", + "ident": 49, + "group": "tdoa2", + "name": "cc7", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "dist7-0": { + "__class__": "LogTocElement", + "ident": 50, + "group": "tdoa2", + "name": "dist7-0", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist0-1": { + "__class__": "LogTocElement", + "ident": 51, + "group": "tdoa2", + "name": "dist0-1", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist1-2": { + "__class__": "LogTocElement", + "ident": 52, + "group": "tdoa2", + "name": "dist1-2", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist2-3": { + "__class__": "LogTocElement", + "ident": 53, + "group": "tdoa2", + "name": "dist2-3", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist3-4": { + "__class__": "LogTocElement", + "ident": 54, + "group": "tdoa2", + "name": "dist3-4", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist4-5": { + "__class__": "LogTocElement", + "ident": 55, + "group": "tdoa2", + "name": "dist4-5", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist5-6": { + "__class__": "LogTocElement", + "ident": 56, + "group": "tdoa2", + "name": "dist5-6", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "dist6-7": { + "__class__": "LogTocElement", + "ident": 57, + "group": "tdoa2", + "name": "dist6-7", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "twr": { + "rangingSuccessRate0": { + "__class__": "LogTocElement", + "ident": 58, + "group": "twr", + "name": "rangingSuccessRate0", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingPerSec0": { + "__class__": "LogTocElement", + "ident": 59, + "group": "twr", + "name": "rangingPerSec0", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingSuccessRate1": { + "__class__": "LogTocElement", + "ident": 60, + "group": "twr", + "name": "rangingSuccessRate1", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingPerSec1": { + "__class__": "LogTocElement", + "ident": 61, + "group": "twr", + "name": "rangingPerSec1", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingSuccessRate2": { + "__class__": "LogTocElement", + "ident": 62, + "group": "twr", + "name": "rangingSuccessRate2", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingPerSec2": { + "__class__": "LogTocElement", + "ident": 63, + "group": "twr", + "name": "rangingPerSec2", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingSuccessRate3": { + "__class__": "LogTocElement", + "ident": 64, + "group": "twr", + "name": "rangingSuccessRate3", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingPerSec3": { + "__class__": "LogTocElement", + "ident": 65, + "group": "twr", + "name": "rangingPerSec3", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingSuccessRate4": { + "__class__": "LogTocElement", + "ident": 66, + "group": "twr", + "name": "rangingSuccessRate4", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingPerSec4": { + "__class__": "LogTocElement", + "ident": 67, + "group": "twr", + "name": "rangingPerSec4", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingSuccessRate5": { + "__class__": "LogTocElement", + "ident": 68, + "group": "twr", + "name": "rangingSuccessRate5", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rangingPerSec5": { + "__class__": "LogTocElement", + "ident": 69, + "group": "twr", + "name": "rangingPerSec5", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "oa": { + "front": { + "__class__": "LogTocElement", + "ident": 70, + "group": "oa", + "name": "front", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "back": { + "__class__": "LogTocElement", + "ident": 71, + "group": "oa", + "name": "back", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "up": { + "__class__": "LogTocElement", + "ident": 72, + "group": "oa", + "name": "up", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "left": { + "__class__": "LogTocElement", + "ident": 73, + "group": "oa", + "name": "left", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "right": { + "__class__": "LogTocElement", + "ident": 74, + "group": "oa", + "name": "right", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "usd": { + "spiWrBps": { + "__class__": "LogTocElement", + "ident": 75, + "group": "usd", + "name": "spiWrBps", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "spiReBps": { + "__class__": "LogTocElement", + "ident": 76, + "group": "usd", + "name": "spiReBps", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "fatWrBps": { + "__class__": "LogTocElement", + "ident": 77, + "group": "usd", + "name": "fatWrBps", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "pwm": { + "m1_pwm": { + "__class__": "LogTocElement", + "ident": 78, + "group": "pwm", + "name": "m1_pwm", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "m2_pwm": { + "__class__": "LogTocElement", + "ident": 79, + "group": "pwm", + "name": "m2_pwm", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "m3_pwm": { + "__class__": "LogTocElement", + "ident": 80, + "group": "pwm", + "name": "m3_pwm", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "m4_pwm": { + "__class__": "LogTocElement", + "ident": 81, + "group": "pwm", + "name": "m4_pwm", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + } + }, + "pm": { + "vbat": { + "__class__": "LogTocElement", + "ident": 82, + "group": "pm", + "name": "vbat", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vbatMV": { + "__class__": "LogTocElement", + "ident": 83, + "group": "pm", + "name": "vbatMV", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "extVbat": { + "__class__": "LogTocElement", + "ident": 84, + "group": "pm", + "name": "extVbat", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "extVbatMV": { + "__class__": "LogTocElement", + "ident": 85, + "group": "pm", + "name": "extVbatMV", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "extCurr": { + "__class__": "LogTocElement", + "ident": 86, + "group": "pm", + "name": "extCurr", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "chargeCurrent": { + "__class__": "LogTocElement", + "ident": 87, + "group": "pm", + "name": "chargeCurrent", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "state": { + "__class__": "LogTocElement", + "ident": 88, + "group": "pm", + "name": "state", + "ctype": "int8_t", + "pytype": "<b", + "access": 0 + }, + "batteryLevel": { + "__class__": "LogTocElement", + "ident": 89, + "group": "pm", + "name": "batteryLevel", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "radio": { + "rssi": { + "__class__": "LogTocElement", + "ident": 90, + "group": "radio", + "name": "rssi", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "isConnected": { + "__class__": "LogTocElement", + "ident": 91, + "group": "radio", + "name": "isConnected", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "gyro": { + "xRaw": { + "__class__": "LogTocElement", + "ident": 92, + "group": "gyro", + "name": "xRaw", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "yRaw": { + "__class__": "LogTocElement", + "ident": 93, + "group": "gyro", + "name": "yRaw", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "zRaw": { + "__class__": "LogTocElement", + "ident": 94, + "group": "gyro", + "name": "zRaw", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "xVariance": { + "__class__": "LogTocElement", + "ident": 95, + "group": "gyro", + "name": "xVariance", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yVariance": { + "__class__": "LogTocElement", + "ident": 96, + "group": "gyro", + "name": "yVariance", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "zVariance": { + "__class__": "LogTocElement", + "ident": 97, + "group": "gyro", + "name": "zVariance", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "x": { + "__class__": "LogTocElement", + "ident": 98, + "group": "gyro", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 99, + "group": "gyro", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 100, + "group": "gyro", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "pid_attitude": { + "roll_outP": { + "__class__": "LogTocElement", + "ident": 101, + "group": "pid_attitude", + "name": "roll_outP", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll_outI": { + "__class__": "LogTocElement", + "ident": 102, + "group": "pid_attitude", + "name": "roll_outI", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll_outD": { + "__class__": "LogTocElement", + "ident": 103, + "group": "pid_attitude", + "name": "roll_outD", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch_outP": { + "__class__": "LogTocElement", + "ident": 104, + "group": "pid_attitude", + "name": "pitch_outP", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch_outI": { + "__class__": "LogTocElement", + "ident": 105, + "group": "pid_attitude", + "name": "pitch_outI", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch_outD": { + "__class__": "LogTocElement", + "ident": 106, + "group": "pid_attitude", + "name": "pitch_outD", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw_outP": { + "__class__": "LogTocElement", + "ident": 107, + "group": "pid_attitude", + "name": "yaw_outP", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw_outI": { + "__class__": "LogTocElement", + "ident": 108, + "group": "pid_attitude", + "name": "yaw_outI", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw_outD": { + "__class__": "LogTocElement", + "ident": 109, + "group": "pid_attitude", + "name": "yaw_outD", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "pid_rate": { + "roll_outP": { + "__class__": "LogTocElement", + "ident": 110, + "group": "pid_rate", + "name": "roll_outP", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll_outI": { + "__class__": "LogTocElement", + "ident": 111, + "group": "pid_rate", + "name": "roll_outI", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll_outD": { + "__class__": "LogTocElement", + "ident": 112, + "group": "pid_rate", + "name": "roll_outD", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch_outP": { + "__class__": "LogTocElement", + "ident": 113, + "group": "pid_rate", + "name": "pitch_outP", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch_outI": { + "__class__": "LogTocElement", + "ident": 114, + "group": "pid_rate", + "name": "pitch_outI", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch_outD": { + "__class__": "LogTocElement", + "ident": 115, + "group": "pid_rate", + "name": "pitch_outD", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw_outP": { + "__class__": "LogTocElement", + "ident": 116, + "group": "pid_rate", + "name": "yaw_outP", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw_outI": { + "__class__": "LogTocElement", + "ident": 117, + "group": "pid_rate", + "name": "yaw_outI", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw_outD": { + "__class__": "LogTocElement", + "ident": 118, + "group": "pid_rate", + "name": "yaw_outD", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "colAv": { + "latency": { + "__class__": "LogTocElement", + "ident": 119, + "group": "colAv", + "name": "latency", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + } + }, + "ctrlINDI": { + "cmd_thrust": { + "__class__": "LogTocElement", + "ident": 120, + "group": "ctrlINDI", + "name": "cmd_thrust", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_roll": { + "__class__": "LogTocElement", + "ident": 121, + "group": "ctrlINDI", + "name": "cmd_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_pitch": { + "__class__": "LogTocElement", + "ident": 122, + "group": "ctrlINDI", + "name": "cmd_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_yaw": { + "__class__": "LogTocElement", + "ident": 123, + "group": "ctrlINDI", + "name": "cmd_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_roll": { + "__class__": "LogTocElement", + "ident": 124, + "group": "ctrlINDI", + "name": "r_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_pitch": { + "__class__": "LogTocElement", + "ident": 125, + "group": "ctrlINDI", + "name": "r_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_yaw": { + "__class__": "LogTocElement", + "ident": 126, + "group": "ctrlINDI", + "name": "r_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "u_act_dyn_p": { + "__class__": "LogTocElement", + "ident": 127, + "group": "ctrlINDI", + "name": "u_act_dyn_p", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "u_act_dyn_q": { + "__class__": "LogTocElement", + "ident": 128, + "group": "ctrlINDI", + "name": "u_act_dyn_q", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "u_act_dyn_r": { + "__class__": "LogTocElement", + "ident": 129, + "group": "ctrlINDI", + "name": "u_act_dyn_r", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "du_p": { + "__class__": "LogTocElement", + "ident": 130, + "group": "ctrlINDI", + "name": "du_p", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "du_q": { + "__class__": "LogTocElement", + "ident": 131, + "group": "ctrlINDI", + "name": "du_q", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "du_r": { + "__class__": "LogTocElement", + "ident": 132, + "group": "ctrlINDI", + "name": "du_r", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ang_accel_ref_p": { + "__class__": "LogTocElement", + "ident": 133, + "group": "ctrlINDI", + "name": "ang_accel_ref_p", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ang_accel_ref_q": { + "__class__": "LogTocElement", + "ident": 134, + "group": "ctrlINDI", + "name": "ang_accel_ref_q", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ang_accel_ref_r": { + "__class__": "LogTocElement", + "ident": 135, + "group": "ctrlINDI", + "name": "ang_accel_ref_r", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rate_d[0]": { + "__class__": "LogTocElement", + "ident": 136, + "group": "ctrlINDI", + "name": "rate_d[0]", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rate_d[1]": { + "__class__": "LogTocElement", + "ident": 137, + "group": "ctrlINDI", + "name": "rate_d[1]", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rate_d[2]": { + "__class__": "LogTocElement", + "ident": 138, + "group": "ctrlINDI", + "name": "rate_d[2]", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "uf_p": { + "__class__": "LogTocElement", + "ident": 139, + "group": "ctrlINDI", + "name": "uf_p", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "uf_q": { + "__class__": "LogTocElement", + "ident": 140, + "group": "ctrlINDI", + "name": "uf_q", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "uf_r": { + "__class__": "LogTocElement", + "ident": 141, + "group": "ctrlINDI", + "name": "uf_r", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Omega_f_p": { + "__class__": "LogTocElement", + "ident": 142, + "group": "ctrlINDI", + "name": "Omega_f_p", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Omega_f_q": { + "__class__": "LogTocElement", + "ident": 143, + "group": "ctrlINDI", + "name": "Omega_f_q", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Omega_f_r": { + "__class__": "LogTocElement", + "ident": 144, + "group": "ctrlINDI", + "name": "Omega_f_r", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "n_p": { + "__class__": "LogTocElement", + "ident": 145, + "group": "ctrlINDI", + "name": "n_p", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "n_q": { + "__class__": "LogTocElement", + "ident": 146, + "group": "ctrlINDI", + "name": "n_q", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "n_r": { + "__class__": "LogTocElement", + "ident": 147, + "group": "ctrlINDI", + "name": "n_r", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "ctrlMel": { + "cmd_thrust": { + "__class__": "LogTocElement", + "ident": 148, + "group": "ctrlMel", + "name": "cmd_thrust", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_roll": { + "__class__": "LogTocElement", + "ident": 149, + "group": "ctrlMel", + "name": "cmd_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_pitch": { + "__class__": "LogTocElement", + "ident": 150, + "group": "ctrlMel", + "name": "cmd_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_yaw": { + "__class__": "LogTocElement", + "ident": 151, + "group": "ctrlMel", + "name": "cmd_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_roll": { + "__class__": "LogTocElement", + "ident": 152, + "group": "ctrlMel", + "name": "r_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_pitch": { + "__class__": "LogTocElement", + "ident": 153, + "group": "ctrlMel", + "name": "r_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_yaw": { + "__class__": "LogTocElement", + "ident": 154, + "group": "ctrlMel", + "name": "r_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accelz": { + "__class__": "LogTocElement", + "ident": 155, + "group": "ctrlMel", + "name": "accelz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "zdx": { + "__class__": "LogTocElement", + "ident": 156, + "group": "ctrlMel", + "name": "zdx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "zdy": { + "__class__": "LogTocElement", + "ident": 157, + "group": "ctrlMel", + "name": "zdy", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "zdz": { + "__class__": "LogTocElement", + "ident": 158, + "group": "ctrlMel", + "name": "zdz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "i_err_x": { + "__class__": "LogTocElement", + "ident": 159, + "group": "ctrlMel", + "name": "i_err_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "i_err_y": { + "__class__": "LogTocElement", + "ident": 160, + "group": "ctrlMel", + "name": "i_err_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "i_err_z": { + "__class__": "LogTocElement", + "ident": 161, + "group": "ctrlMel", + "name": "i_err_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "controller": { + "cmd_thrust": { + "__class__": "LogTocElement", + "ident": 162, + "group": "controller", + "name": "cmd_thrust", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_roll": { + "__class__": "LogTocElement", + "ident": 163, + "group": "controller", + "name": "cmd_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_pitch": { + "__class__": "LogTocElement", + "ident": 164, + "group": "controller", + "name": "cmd_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_yaw": { + "__class__": "LogTocElement", + "ident": 165, + "group": "controller", + "name": "cmd_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_roll": { + "__class__": "LogTocElement", + "ident": 166, + "group": "controller", + "name": "r_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_pitch": { + "__class__": "LogTocElement", + "ident": 167, + "group": "controller", + "name": "r_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "r_yaw": { + "__class__": "LogTocElement", + "ident": 168, + "group": "controller", + "name": "r_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accelz": { + "__class__": "LogTocElement", + "ident": 169, + "group": "controller", + "name": "accelz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "actuatorThrust": { + "__class__": "LogTocElement", + "ident": 170, + "group": "controller", + "name": "actuatorThrust", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll": { + "__class__": "LogTocElement", + "ident": 171, + "group": "controller", + "name": "roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch": { + "__class__": "LogTocElement", + "ident": 172, + "group": "controller", + "name": "pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw": { + "__class__": "LogTocElement", + "ident": 173, + "group": "controller", + "name": "yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rollRate": { + "__class__": "LogTocElement", + "ident": 174, + "group": "controller", + "name": "rollRate", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitchRate": { + "__class__": "LogTocElement", + "ident": 175, + "group": "controller", + "name": "pitchRate", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yawRate": { + "__class__": "LogTocElement", + "ident": 176, + "group": "controller", + "name": "yawRate", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ctr_yaw": { + "__class__": "LogTocElement", + "ident": 177, + "group": "controller", + "name": "ctr_yaw", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + } + }, + "ext_pos": { + "X": { + "__class__": "LogTocElement", + "ident": 178, + "group": "ext_pos", + "name": "X", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Y": { + "__class__": "LogTocElement", + "ident": 179, + "group": "ext_pos", + "name": "Y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Z": { + "__class__": "LogTocElement", + "ident": 180, + "group": "ext_pos", + "name": "Z", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "locSrv": { + "x": { + "__class__": "LogTocElement", + "ident": 181, + "group": "locSrv", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 182, + "group": "locSrv", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 183, + "group": "locSrv", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qx": { + "__class__": "LogTocElement", + "ident": 184, + "group": "locSrv", + "name": "qx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qy": { + "__class__": "LogTocElement", + "ident": 185, + "group": "locSrv", + "name": "qy", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qz": { + "__class__": "LogTocElement", + "ident": 186, + "group": "locSrv", + "name": "qz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qw": { + "__class__": "LogTocElement", + "ident": 187, + "group": "locSrv", + "name": "qw", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "locSrvZ": { + "tick": { + "__class__": "LogTocElement", + "ident": 188, + "group": "locSrvZ", + "name": "tick", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "crtp": { + "rxRate": { + "__class__": "LogTocElement", + "ident": 189, + "group": "crtp", + "name": "rxRate", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "txRate": { + "__class__": "LogTocElement", + "ident": 190, + "group": "crtp", + "name": "txRate", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "kalman": { + "inFlight": { + "__class__": "LogTocElement", + "ident": 191, + "group": "kalman", + "name": "inFlight", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "stateX": { + "__class__": "LogTocElement", + "ident": 192, + "group": "kalman", + "name": "stateX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stateY": { + "__class__": "LogTocElement", + "ident": 193, + "group": "kalman", + "name": "stateY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stateZ": { + "__class__": "LogTocElement", + "ident": 194, + "group": "kalman", + "name": "stateZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "statePX": { + "__class__": "LogTocElement", + "ident": 195, + "group": "kalman", + "name": "statePX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "statePY": { + "__class__": "LogTocElement", + "ident": 196, + "group": "kalman", + "name": "statePY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "statePZ": { + "__class__": "LogTocElement", + "ident": 197, + "group": "kalman", + "name": "statePZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stateD0": { + "__class__": "LogTocElement", + "ident": 198, + "group": "kalman", + "name": "stateD0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stateD1": { + "__class__": "LogTocElement", + "ident": 199, + "group": "kalman", + "name": "stateD1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stateD2": { + "__class__": "LogTocElement", + "ident": 200, + "group": "kalman", + "name": "stateD2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varX": { + "__class__": "LogTocElement", + "ident": 201, + "group": "kalman", + "name": "varX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varY": { + "__class__": "LogTocElement", + "ident": 202, + "group": "kalman", + "name": "varY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varZ": { + "__class__": "LogTocElement", + "ident": 203, + "group": "kalman", + "name": "varZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varPX": { + "__class__": "LogTocElement", + "ident": 204, + "group": "kalman", + "name": "varPX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varPY": { + "__class__": "LogTocElement", + "ident": 205, + "group": "kalman", + "name": "varPY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varPZ": { + "__class__": "LogTocElement", + "ident": 206, + "group": "kalman", + "name": "varPZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varD0": { + "__class__": "LogTocElement", + "ident": 207, + "group": "kalman", + "name": "varD0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varD1": { + "__class__": "LogTocElement", + "ident": 208, + "group": "kalman", + "name": "varD1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "varD2": { + "__class__": "LogTocElement", + "ident": 209, + "group": "kalman", + "name": "varD2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "q0": { + "__class__": "LogTocElement", + "ident": 210, + "group": "kalman", + "name": "q0", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "q1": { + "__class__": "LogTocElement", + "ident": 211, + "group": "kalman", + "name": "q1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "q2": { + "__class__": "LogTocElement", + "ident": 212, + "group": "kalman", + "name": "q2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "q3": { + "__class__": "LogTocElement", + "ident": 213, + "group": "kalman", + "name": "q3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rtUpdate": { + "__class__": "LogTocElement", + "ident": 214, + "group": "kalman", + "name": "rtUpdate", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rtPred": { + "__class__": "LogTocElement", + "ident": 215, + "group": "kalman", + "name": "rtPred", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rtFinal": { + "__class__": "LogTocElement", + "ident": 216, + "group": "kalman", + "name": "rtFinal", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "outlierf": { + "lhWin": { + "__class__": "LogTocElement", + "ident": 217, + "group": "outlierf", + "name": "lhWin", + "ctype": "int32_t", + "pytype": "<i", + "access": 0 + }, + "bucket0": { + "__class__": "LogTocElement", + "ident": 218, + "group": "outlierf", + "name": "bucket0", + "ctype": "int32_t", + "pytype": "<i", + "access": 0 + }, + "bucket1": { + "__class__": "LogTocElement", + "ident": 219, + "group": "outlierf", + "name": "bucket1", + "ctype": "int32_t", + "pytype": "<i", + "access": 0 + }, + "bucket2": { + "__class__": "LogTocElement", + "ident": 220, + "group": "outlierf", + "name": "bucket2", + "ctype": "int32_t", + "pytype": "<i", + "access": 0 + }, + "bucket3": { + "__class__": "LogTocElement", + "ident": 221, + "group": "outlierf", + "name": "bucket3", + "ctype": "int32_t", + "pytype": "<i", + "access": 0 + }, + "bucket4": { + "__class__": "LogTocElement", + "ident": 222, + "group": "outlierf", + "name": "bucket4", + "ctype": "int32_t", + "pytype": "<i", + "access": 0 + }, + "accLev": { + "__class__": "LogTocElement", + "ident": 223, + "group": "outlierf", + "name": "accLev", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "errD": { + "__class__": "LogTocElement", + "ident": 224, + "group": "outlierf", + "name": "errD", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "estimator": { + "rtApnd": { + "__class__": "LogTocElement", + "ident": 225, + "group": "estimator", + "name": "rtApnd", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rtRej": { + "__class__": "LogTocElement", + "ident": 226, + "group": "estimator", + "name": "rtRej", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "extrx": { + "thrust": { + "__class__": "LogTocElement", + "ident": 227, + "group": "extrx", + "name": "thrust", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll": { + "__class__": "LogTocElement", + "ident": 228, + "group": "extrx", + "name": "roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch": { + "__class__": "LogTocElement", + "ident": 229, + "group": "extrx", + "name": "pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yawRate": { + "__class__": "LogTocElement", + "ident": 230, + "group": "extrx", + "name": "yawRate", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "zVel": { + "__class__": "LogTocElement", + "ident": 231, + "group": "extrx", + "name": "zVel", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "AltHold": { + "__class__": "LogTocElement", + "ident": 232, + "group": "extrx", + "name": "AltHold", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "Arm": { + "__class__": "LogTocElement", + "ident": 233, + "group": "extrx", + "name": "Arm", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "extrx_raw": { + "ch0": { + "__class__": "LogTocElement", + "ident": 234, + "group": "extrx_raw", + "name": "ch0", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch1": { + "__class__": "LogTocElement", + "ident": 235, + "group": "extrx_raw", + "name": "ch1", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch2": { + "__class__": "LogTocElement", + "ident": 236, + "group": "extrx_raw", + "name": "ch2", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch3": { + "__class__": "LogTocElement", + "ident": 237, + "group": "extrx_raw", + "name": "ch3", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch4": { + "__class__": "LogTocElement", + "ident": 238, + "group": "extrx_raw", + "name": "ch4", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch5": { + "__class__": "LogTocElement", + "ident": 239, + "group": "extrx_raw", + "name": "ch5", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch6": { + "__class__": "LogTocElement", + "ident": 240, + "group": "extrx_raw", + "name": "ch6", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "ch7": { + "__class__": "LogTocElement", + "ident": 241, + "group": "extrx_raw", + "name": "ch7", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "health": { + "motorVarXM1": { + "__class__": "LogTocElement", + "ident": 242, + "group": "health", + "name": "motorVarXM1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarYM1": { + "__class__": "LogTocElement", + "ident": 243, + "group": "health", + "name": "motorVarYM1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarXM2": { + "__class__": "LogTocElement", + "ident": 244, + "group": "health", + "name": "motorVarXM2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarYM2": { + "__class__": "LogTocElement", + "ident": 245, + "group": "health", + "name": "motorVarYM2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarXM3": { + "__class__": "LogTocElement", + "ident": 246, + "group": "health", + "name": "motorVarXM3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarYM3": { + "__class__": "LogTocElement", + "ident": 247, + "group": "health", + "name": "motorVarYM3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarXM4": { + "__class__": "LogTocElement", + "ident": 248, + "group": "health", + "name": "motorVarXM4", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorVarYM4": { + "__class__": "LogTocElement", + "ident": 249, + "group": "health", + "name": "motorVarYM4", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "motorPass": { + "__class__": "LogTocElement", + "ident": 250, + "group": "health", + "name": "motorPass", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "batterySag": { + "__class__": "LogTocElement", + "ident": 251, + "group": "health", + "name": "batterySag", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "batteryPass": { + "__class__": "LogTocElement", + "ident": 252, + "group": "health", + "name": "batteryPass", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "motorTestCount": { + "__class__": "LogTocElement", + "ident": 253, + "group": "health", + "name": "motorTestCount", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "memTst": { + "errCntW": { + "__class__": "LogTocElement", + "ident": 254, + "group": "memTst", + "name": "errCntW", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + } + }, + "posCtrlIndi": { + "posRef_x": { + "__class__": "LogTocElement", + "ident": 255, + "group": "posCtrlIndi", + "name": "posRef_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "posRef_y": { + "__class__": "LogTocElement", + "ident": 256, + "group": "posCtrlIndi", + "name": "posRef_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "posRef_z": { + "__class__": "LogTocElement", + "ident": 257, + "group": "posCtrlIndi", + "name": "posRef_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velS_x": { + "__class__": "LogTocElement", + "ident": 258, + "group": "posCtrlIndi", + "name": "velS_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velS_y": { + "__class__": "LogTocElement", + "ident": 259, + "group": "posCtrlIndi", + "name": "velS_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velS_z": { + "__class__": "LogTocElement", + "ident": 260, + "group": "posCtrlIndi", + "name": "velS_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velRef_x": { + "__class__": "LogTocElement", + "ident": 261, + "group": "posCtrlIndi", + "name": "velRef_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velRef_y": { + "__class__": "LogTocElement", + "ident": 262, + "group": "posCtrlIndi", + "name": "velRef_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velRef_z": { + "__class__": "LogTocElement", + "ident": 263, + "group": "posCtrlIndi", + "name": "velRef_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angS_roll": { + "__class__": "LogTocElement", + "ident": 264, + "group": "posCtrlIndi", + "name": "angS_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angS_pitch": { + "__class__": "LogTocElement", + "ident": 265, + "group": "posCtrlIndi", + "name": "angS_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angS_yaw": { + "__class__": "LogTocElement", + "ident": 266, + "group": "posCtrlIndi", + "name": "angS_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angF_roll": { + "__class__": "LogTocElement", + "ident": 267, + "group": "posCtrlIndi", + "name": "angF_roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angF_pitch": { + "__class__": "LogTocElement", + "ident": 268, + "group": "posCtrlIndi", + "name": "angF_pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angF_yaw": { + "__class__": "LogTocElement", + "ident": 269, + "group": "posCtrlIndi", + "name": "angF_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accRef_x": { + "__class__": "LogTocElement", + "ident": 270, + "group": "posCtrlIndi", + "name": "accRef_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accRef_y": { + "__class__": "LogTocElement", + "ident": 271, + "group": "posCtrlIndi", + "name": "accRef_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accRef_z": { + "__class__": "LogTocElement", + "ident": 272, + "group": "posCtrlIndi", + "name": "accRef_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accS_x": { + "__class__": "LogTocElement", + "ident": 273, + "group": "posCtrlIndi", + "name": "accS_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accS_y": { + "__class__": "LogTocElement", + "ident": 274, + "group": "posCtrlIndi", + "name": "accS_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accS_z": { + "__class__": "LogTocElement", + "ident": 275, + "group": "posCtrlIndi", + "name": "accS_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accF_x": { + "__class__": "LogTocElement", + "ident": 276, + "group": "posCtrlIndi", + "name": "accF_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accF_y": { + "__class__": "LogTocElement", + "ident": 277, + "group": "posCtrlIndi", + "name": "accF_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accF_z": { + "__class__": "LogTocElement", + "ident": 278, + "group": "posCtrlIndi", + "name": "accF_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accFT_x": { + "__class__": "LogTocElement", + "ident": 279, + "group": "posCtrlIndi", + "name": "accFT_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accFT_y": { + "__class__": "LogTocElement", + "ident": 280, + "group": "posCtrlIndi", + "name": "accFT_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accFT_z": { + "__class__": "LogTocElement", + "ident": 281, + "group": "posCtrlIndi", + "name": "accFT_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accErr_x": { + "__class__": "LogTocElement", + "ident": 282, + "group": "posCtrlIndi", + "name": "accErr_x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accErr_y": { + "__class__": "LogTocElement", + "ident": 283, + "group": "posCtrlIndi", + "name": "accErr_y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accErr_z": { + "__class__": "LogTocElement", + "ident": 284, + "group": "posCtrlIndi", + "name": "accErr_z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "phi_tilde": { + "__class__": "LogTocElement", + "ident": 285, + "group": "posCtrlIndi", + "name": "phi_tilde", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "theta_tilde": { + "__class__": "LogTocElement", + "ident": 286, + "group": "posCtrlIndi", + "name": "theta_tilde", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "T_tilde": { + "__class__": "LogTocElement", + "ident": 287, + "group": "posCtrlIndi", + "name": "T_tilde", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "T_inner": { + "__class__": "LogTocElement", + "ident": 288, + "group": "posCtrlIndi", + "name": "T_inner", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "T_inner_f": { + "__class__": "LogTocElement", + "ident": 289, + "group": "posCtrlIndi", + "name": "T_inner_f", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "T_incremented": { + "__class__": "LogTocElement", + "ident": 290, + "group": "posCtrlIndi", + "name": "T_incremented", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_phi": { + "__class__": "LogTocElement", + "ident": 291, + "group": "posCtrlIndi", + "name": "cmd_phi", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cmd_theta": { + "__class__": "LogTocElement", + "ident": 292, + "group": "posCtrlIndi", + "name": "cmd_theta", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "posCtl": { + "targetVX": { + "__class__": "LogTocElement", + "ident": 293, + "group": "posCtl", + "name": "targetVX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "targetVY": { + "__class__": "LogTocElement", + "ident": 294, + "group": "posCtl", + "name": "targetVY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "targetVZ": { + "__class__": "LogTocElement", + "ident": 295, + "group": "posCtl", + "name": "targetVZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "targetX": { + "__class__": "LogTocElement", + "ident": 296, + "group": "posCtl", + "name": "targetX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "targetY": { + "__class__": "LogTocElement", + "ident": 297, + "group": "posCtl", + "name": "targetY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "targetZ": { + "__class__": "LogTocElement", + "ident": 298, + "group": "posCtl", + "name": "targetZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bodyVX": { + "__class__": "LogTocElement", + "ident": 299, + "group": "posCtl", + "name": "bodyVX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bodyVY": { + "__class__": "LogTocElement", + "ident": 300, + "group": "posCtl", + "name": "bodyVY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bodyX": { + "__class__": "LogTocElement", + "ident": 301, + "group": "posCtl", + "name": "bodyX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bodyY": { + "__class__": "LogTocElement", + "ident": 302, + "group": "posCtl", + "name": "bodyY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Yp": { + "__class__": "LogTocElement", + "ident": 303, + "group": "posCtl", + "name": "Yp", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Yi": { + "__class__": "LogTocElement", + "ident": 304, + "group": "posCtl", + "name": "Yi", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Yd": { + "__class__": "LogTocElement", + "ident": 305, + "group": "posCtl", + "name": "Yd", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Zp": { + "__class__": "LogTocElement", + "ident": 306, + "group": "posCtl", + "name": "Zp", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Zi": { + "__class__": "LogTocElement", + "ident": 307, + "group": "posCtl", + "name": "Zi", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "Zd": { + "__class__": "LogTocElement", + "ident": 308, + "group": "posCtl", + "name": "Zd", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "VXp": { + "__class__": "LogTocElement", + "ident": 309, + "group": "posCtl", + "name": "VXp", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "VXi": { + "__class__": "LogTocElement", + "ident": 310, + "group": "posCtl", + "name": "VXi", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "VXd": { + "__class__": "LogTocElement", + "ident": 311, + "group": "posCtl", + "name": "VXd", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "VZp": { + "__class__": "LogTocElement", + "ident": 312, + "group": "posCtl", + "name": "VZp", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "VZi": { + "__class__": "LogTocElement", + "ident": 313, + "group": "posCtl", + "name": "VZi", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "VZd": { + "__class__": "LogTocElement", + "ident": 314, + "group": "posCtl", + "name": "VZd", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "posEstAlt": { + "estimatedZ": { + "__class__": "LogTocElement", + "ident": 315, + "group": "posEstAlt", + "name": "estimatedZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "estVZ": { + "__class__": "LogTocElement", + "ident": 316, + "group": "posEstAlt", + "name": "estVZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "velocityZ": { + "__class__": "LogTocElement", + "ident": 317, + "group": "posEstAlt", + "name": "velocityZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "motor": { + "m1": { + "__class__": "LogTocElement", + "ident": 318, + "group": "motor", + "name": "m1", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "m2": { + "__class__": "LogTocElement", + "ident": 319, + "group": "motor", + "name": "m2", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "m3": { + "__class__": "LogTocElement", + "ident": 320, + "group": "motor", + "name": "m3", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "m4": { + "__class__": "LogTocElement", + "ident": 321, + "group": "motor", + "name": "m4", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + } + }, + "range": { + "front": { + "__class__": "LogTocElement", + "ident": 322, + "group": "range", + "name": "front", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "back": { + "__class__": "LogTocElement", + "ident": 323, + "group": "range", + "name": "back", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "up": { + "__class__": "LogTocElement", + "ident": 324, + "group": "range", + "name": "up", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "left": { + "__class__": "LogTocElement", + "ident": 325, + "group": "range", + "name": "left", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "right": { + "__class__": "LogTocElement", + "ident": 326, + "group": "range", + "name": "right", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "zrange": { + "__class__": "LogTocElement", + "ident": 327, + "group": "range", + "name": "zrange", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + }, + "sensfusion6": { + "qw": { + "__class__": "LogTocElement", + "ident": 328, + "group": "sensfusion6", + "name": "qw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qx": { + "__class__": "LogTocElement", + "ident": 329, + "group": "sensfusion6", + "name": "qx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qy": { + "__class__": "LogTocElement", + "ident": 330, + "group": "sensfusion6", + "name": "qy", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qz": { + "__class__": "LogTocElement", + "ident": 331, + "group": "sensfusion6", + "name": "qz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "gravityX": { + "__class__": "LogTocElement", + "ident": 332, + "group": "sensfusion6", + "name": "gravityX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "gravityY": { + "__class__": "LogTocElement", + "ident": 333, + "group": "sensfusion6", + "name": "gravityY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "gravityZ": { + "__class__": "LogTocElement", + "ident": 334, + "group": "sensfusion6", + "name": "gravityZ", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "accZbase": { + "__class__": "LogTocElement", + "ident": 335, + "group": "sensfusion6", + "name": "accZbase", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "isInit": { + "__class__": "LogTocElement", + "ident": 336, + "group": "sensfusion6", + "name": "isInit", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "isCalibrated": { + "__class__": "LogTocElement", + "ident": 337, + "group": "sensfusion6", + "name": "isCalibrated", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + } + }, + "acc": { + "x": { + "__class__": "LogTocElement", + "ident": 338, + "group": "acc", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 339, + "group": "acc", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 340, + "group": "acc", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "baro": { + "asl": { + "__class__": "LogTocElement", + "ident": 341, + "group": "baro", + "name": "asl", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "temp": { + "__class__": "LogTocElement", + "ident": 342, + "group": "baro", + "name": "temp", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pressure": { + "__class__": "LogTocElement", + "ident": 343, + "group": "baro", + "name": "pressure", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "ctrltarget": { + "x": { + "__class__": "LogTocElement", + "ident": 344, + "group": "ctrltarget", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 345, + "group": "ctrltarget", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 346, + "group": "ctrltarget", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vx": { + "__class__": "LogTocElement", + "ident": 347, + "group": "ctrltarget", + "name": "vx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vy": { + "__class__": "LogTocElement", + "ident": 348, + "group": "ctrltarget", + "name": "vy", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vz": { + "__class__": "LogTocElement", + "ident": 349, + "group": "ctrltarget", + "name": "vz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ax": { + "__class__": "LogTocElement", + "ident": 350, + "group": "ctrltarget", + "name": "ax", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ay": { + "__class__": "LogTocElement", + "ident": 351, + "group": "ctrltarget", + "name": "ay", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "az": { + "__class__": "LogTocElement", + "ident": 352, + "group": "ctrltarget", + "name": "az", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll": { + "__class__": "LogTocElement", + "ident": 353, + "group": "ctrltarget", + "name": "roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch": { + "__class__": "LogTocElement", + "ident": 354, + "group": "ctrltarget", + "name": "pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw": { + "__class__": "LogTocElement", + "ident": 355, + "group": "ctrltarget", + "name": "yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "ctrltargetZ": { + "x": { + "__class__": "LogTocElement", + "ident": 356, + "group": "ctrltargetZ", + "name": "x", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 357, + "group": "ctrltargetZ", + "name": "y", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 358, + "group": "ctrltargetZ", + "name": "z", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "vx": { + "__class__": "LogTocElement", + "ident": 359, + "group": "ctrltargetZ", + "name": "vx", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "vy": { + "__class__": "LogTocElement", + "ident": 360, + "group": "ctrltargetZ", + "name": "vy", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "vz": { + "__class__": "LogTocElement", + "ident": 361, + "group": "ctrltargetZ", + "name": "vz", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "ax": { + "__class__": "LogTocElement", + "ident": 362, + "group": "ctrltargetZ", + "name": "ax", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "ay": { + "__class__": "LogTocElement", + "ident": 363, + "group": "ctrltargetZ", + "name": "ay", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "az": { + "__class__": "LogTocElement", + "ident": 364, + "group": "ctrltargetZ", + "name": "az", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + } + }, + "mag": { + "x": { + "__class__": "LogTocElement", + "ident": 365, + "group": "mag", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 366, + "group": "mag", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 367, + "group": "mag", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "stabilizer": { + "roll": { + "__class__": "LogTocElement", + "ident": 368, + "group": "stabilizer", + "name": "roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch": { + "__class__": "LogTocElement", + "ident": 369, + "group": "stabilizer", + "name": "pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw": { + "__class__": "LogTocElement", + "ident": 370, + "group": "stabilizer", + "name": "yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "thrust": { + "__class__": "LogTocElement", + "ident": 371, + "group": "stabilizer", + "name": "thrust", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rtStab": { + "__class__": "LogTocElement", + "ident": 372, + "group": "stabilizer", + "name": "rtStab", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "intToOut": { + "__class__": "LogTocElement", + "ident": 373, + "group": "stabilizer", + "name": "intToOut", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + } + }, + "stateEstimate": { + "x": { + "__class__": "LogTocElement", + "ident": 374, + "group": "stateEstimate", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 375, + "group": "stateEstimate", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 376, + "group": "stateEstimate", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vx": { + "__class__": "LogTocElement", + "ident": 377, + "group": "stateEstimate", + "name": "vx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vy": { + "__class__": "LogTocElement", + "ident": 378, + "group": "stateEstimate", + "name": "vy", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "vz": { + "__class__": "LogTocElement", + "ident": 379, + "group": "stateEstimate", + "name": "vz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ax": { + "__class__": "LogTocElement", + "ident": 380, + "group": "stateEstimate", + "name": "ax", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "ay": { + "__class__": "LogTocElement", + "ident": 381, + "group": "stateEstimate", + "name": "ay", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "az": { + "__class__": "LogTocElement", + "ident": 382, + "group": "stateEstimate", + "name": "az", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "roll": { + "__class__": "LogTocElement", + "ident": 383, + "group": "stateEstimate", + "name": "roll", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "pitch": { + "__class__": "LogTocElement", + "ident": 384, + "group": "stateEstimate", + "name": "pitch", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "yaw": { + "__class__": "LogTocElement", + "ident": 385, + "group": "stateEstimate", + "name": "yaw", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qx": { + "__class__": "LogTocElement", + "ident": 386, + "group": "stateEstimate", + "name": "qx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qy": { + "__class__": "LogTocElement", + "ident": 387, + "group": "stateEstimate", + "name": "qy", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qz": { + "__class__": "LogTocElement", + "ident": 388, + "group": "stateEstimate", + "name": "qz", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "qw": { + "__class__": "LogTocElement", + "ident": 389, + "group": "stateEstimate", + "name": "qw", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "stateEstimateZ": { + "x": { + "__class__": "LogTocElement", + "ident": 390, + "group": "stateEstimateZ", + "name": "x", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 391, + "group": "stateEstimateZ", + "name": "y", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 392, + "group": "stateEstimateZ", + "name": "z", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "vx": { + "__class__": "LogTocElement", + "ident": 393, + "group": "stateEstimateZ", + "name": "vx", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "vy": { + "__class__": "LogTocElement", + "ident": 394, + "group": "stateEstimateZ", + "name": "vy", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "vz": { + "__class__": "LogTocElement", + "ident": 395, + "group": "stateEstimateZ", + "name": "vz", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "ax": { + "__class__": "LogTocElement", + "ident": 396, + "group": "stateEstimateZ", + "name": "ax", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "ay": { + "__class__": "LogTocElement", + "ident": 397, + "group": "stateEstimateZ", + "name": "ay", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "az": { + "__class__": "LogTocElement", + "ident": 398, + "group": "stateEstimateZ", + "name": "az", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "quat": { + "__class__": "LogTocElement", + "ident": 399, + "group": "stateEstimateZ", + "name": "quat", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0 + }, + "rateRoll": { + "__class__": "LogTocElement", + "ident": 400, + "group": "stateEstimateZ", + "name": "rateRoll", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "ratePitch": { + "__class__": "LogTocElement", + "ident": 401, + "group": "stateEstimateZ", + "name": "ratePitch", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + }, + "rateYaw": { + "__class__": "LogTocElement", + "ident": 402, + "group": "stateEstimateZ", + "name": "rateYaw", + "ctype": "int16_t", + "pytype": "<h", + "access": 0 + } + }, + "sys": { + "canfly": { + "__class__": "LogTocElement", + "ident": 403, + "group": "sys", + "name": "canfly", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "isFlying": { + "__class__": "LogTocElement", + "ident": 404, + "group": "sys", + "name": "isFlying", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "isTumbled": { + "__class__": "LogTocElement", + "ident": 405, + "group": "sys", + "name": "isTumbled", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "armed": { + "__class__": "LogTocElement", + "ident": 406, + "group": "sys", + "name": "armed", + "ctype": "int8_t", + "pytype": "<b", + "access": 0 + } + }, + "tdoaEngine": { + "stRx": { + "__class__": "LogTocElement", + "ident": 407, + "group": "tdoaEngine", + "name": "stRx", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stEst": { + "__class__": "LogTocElement", + "ident": 408, + "group": "tdoaEngine", + "name": "stEst", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stTime": { + "__class__": "LogTocElement", + "ident": 409, + "group": "tdoaEngine", + "name": "stTime", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stFound": { + "__class__": "LogTocElement", + "ident": 410, + "group": "tdoaEngine", + "name": "stFound", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stCc": { + "__class__": "LogTocElement", + "ident": 411, + "group": "tdoaEngine", + "name": "stCc", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stHit": { + "__class__": "LogTocElement", + "ident": 412, + "group": "tdoaEngine", + "name": "stHit", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "stMiss": { + "__class__": "LogTocElement", + "ident": 413, + "group": "tdoaEngine", + "name": "stMiss", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cc": { + "__class__": "LogTocElement", + "ident": 414, + "group": "tdoaEngine", + "name": "cc", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "tof": { + "__class__": "LogTocElement", + "ident": 415, + "group": "tdoaEngine", + "name": "tof", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "tdoa": { + "__class__": "LogTocElement", + "ident": 416, + "group": "tdoaEngine", + "name": "tdoa", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "kalman_pred": { + "predNX": { + "__class__": "LogTocElement", + "ident": 417, + "group": "kalman_pred", + "name": "predNX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "predNY": { + "__class__": "LogTocElement", + "ident": 418, + "group": "kalman_pred", + "name": "predNY", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "measNX": { + "__class__": "LogTocElement", + "ident": 419, + "group": "kalman_pred", + "name": "measNX", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "measNY": { + "__class__": "LogTocElement", + "ident": 420, + "group": "kalman_pred", + "name": "measNY", + "ctype": "float", + "pytype": "<f", + "access": 0 + } + }, + "lighthouse": { + "validAngles": { + "__class__": "LogTocElement", + "ident": 421, + "group": "lighthouse", + "name": "validAngles", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "rawAngle0x": { + "__class__": "LogTocElement", + "ident": 422, + "group": "lighthouse", + "name": "rawAngle0x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle0y": { + "__class__": "LogTocElement", + "ident": 423, + "group": "lighthouse", + "name": "rawAngle0y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle1x": { + "__class__": "LogTocElement", + "ident": 424, + "group": "lighthouse", + "name": "rawAngle1x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle1y": { + "__class__": "LogTocElement", + "ident": 425, + "group": "lighthouse", + "name": "rawAngle1y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0x": { + "__class__": "LogTocElement", + "ident": 426, + "group": "lighthouse", + "name": "angle0x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0y": { + "__class__": "LogTocElement", + "ident": 427, + "group": "lighthouse", + "name": "angle0y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1x": { + "__class__": "LogTocElement", + "ident": 428, + "group": "lighthouse", + "name": "angle1x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1y": { + "__class__": "LogTocElement", + "ident": 429, + "group": "lighthouse", + "name": "angle1y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0x_1": { + "__class__": "LogTocElement", + "ident": 430, + "group": "lighthouse", + "name": "angle0x_1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0y_1": { + "__class__": "LogTocElement", + "ident": 431, + "group": "lighthouse", + "name": "angle0y_1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1x_1": { + "__class__": "LogTocElement", + "ident": 432, + "group": "lighthouse", + "name": "angle1x_1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1y_1": { + "__class__": "LogTocElement", + "ident": 433, + "group": "lighthouse", + "name": "angle1y_1", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0x_2": { + "__class__": "LogTocElement", + "ident": 434, + "group": "lighthouse", + "name": "angle0x_2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0y_2": { + "__class__": "LogTocElement", + "ident": 435, + "group": "lighthouse", + "name": "angle0y_2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1x_2": { + "__class__": "LogTocElement", + "ident": 436, + "group": "lighthouse", + "name": "angle1x_2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1y_2": { + "__class__": "LogTocElement", + "ident": 437, + "group": "lighthouse", + "name": "angle1y_2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0x_3": { + "__class__": "LogTocElement", + "ident": 438, + "group": "lighthouse", + "name": "angle0x_3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0y_3": { + "__class__": "LogTocElement", + "ident": 439, + "group": "lighthouse", + "name": "angle0y_3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1x_3": { + "__class__": "LogTocElement", + "ident": 440, + "group": "lighthouse", + "name": "angle1x_3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1y_3": { + "__class__": "LogTocElement", + "ident": 441, + "group": "lighthouse", + "name": "angle1y_3", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle0xlh2": { + "__class__": "LogTocElement", + "ident": 442, + "group": "lighthouse", + "name": "rawAngle0xlh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle0ylh2": { + "__class__": "LogTocElement", + "ident": 443, + "group": "lighthouse", + "name": "rawAngle0ylh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle1xlh2": { + "__class__": "LogTocElement", + "ident": 444, + "group": "lighthouse", + "name": "rawAngle1xlh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "rawAngle1ylh2": { + "__class__": "LogTocElement", + "ident": 445, + "group": "lighthouse", + "name": "rawAngle1ylh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0x_0lh2": { + "__class__": "LogTocElement", + "ident": 446, + "group": "lighthouse", + "name": "angle0x_0lh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle0y_0lh2": { + "__class__": "LogTocElement", + "ident": 447, + "group": "lighthouse", + "name": "angle0y_0lh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1x_0lh2": { + "__class__": "LogTocElement", + "ident": 448, + "group": "lighthouse", + "name": "angle1x_0lh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "angle1y_0lh2": { + "__class__": "LogTocElement", + "ident": 449, + "group": "lighthouse", + "name": "angle1y_0lh2", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "serRt": { + "__class__": "LogTocElement", + "ident": 450, + "group": "lighthouse", + "name": "serRt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "frmRt": { + "__class__": "LogTocElement", + "ident": 451, + "group": "lighthouse", + "name": "frmRt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "cycleRt": { + "__class__": "LogTocElement", + "ident": 452, + "group": "lighthouse", + "name": "cycleRt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bs0Rt": { + "__class__": "LogTocElement", + "ident": 453, + "group": "lighthouse", + "name": "bs0Rt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bs1Rt": { + "__class__": "LogTocElement", + "ident": 454, + "group": "lighthouse", + "name": "bs1Rt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "width0": { + "__class__": "LogTocElement", + "ident": 455, + "group": "lighthouse", + "name": "width0", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "width1": { + "__class__": "LogTocElement", + "ident": 456, + "group": "lighthouse", + "name": "width1", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "width2": { + "__class__": "LogTocElement", + "ident": 457, + "group": "lighthouse", + "name": "width2", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "width3": { + "__class__": "LogTocElement", + "ident": 458, + "group": "lighthouse", + "name": "width3", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "comSync": { + "__class__": "LogTocElement", + "ident": 459, + "group": "lighthouse", + "name": "comSync", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "bsReceive": { + "__class__": "LogTocElement", + "ident": 460, + "group": "lighthouse", + "name": "bsReceive", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "bsActive": { + "__class__": "LogTocElement", + "ident": 461, + "group": "lighthouse", + "name": "bsActive", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "bsCalUd": { + "__class__": "LogTocElement", + "ident": 462, + "group": "lighthouse", + "name": "bsCalUd", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "bsCalCon": { + "__class__": "LogTocElement", + "ident": 463, + "group": "lighthouse", + "name": "bsCalCon", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "status": { + "__class__": "LogTocElement", + "ident": 464, + "group": "lighthouse", + "name": "status", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0 + }, + "posRt": { + "__class__": "LogTocElement", + "ident": 465, + "group": "lighthouse", + "name": "posRt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "estBs0Rt": { + "__class__": "LogTocElement", + "ident": 466, + "group": "lighthouse", + "name": "estBs0Rt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "estBs1Rt": { + "__class__": "LogTocElement", + "ident": 467, + "group": "lighthouse", + "name": "estBs1Rt", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "x": { + "__class__": "LogTocElement", + "ident": 468, + "group": "lighthouse", + "name": "x", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "y": { + "__class__": "LogTocElement", + "ident": 469, + "group": "lighthouse", + "name": "y", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "z": { + "__class__": "LogTocElement", + "ident": 470, + "group": "lighthouse", + "name": "z", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "delta": { + "__class__": "LogTocElement", + "ident": 471, + "group": "lighthouse", + "name": "delta", + "ctype": "float", + "pytype": "<f", + "access": 0 + }, + "bsGeoVal": { + "__class__": "LogTocElement", + "ident": 472, + "group": "lighthouse", + "name": "bsGeoVal", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + }, + "bsCalVal": { + "__class__": "LogTocElement", + "ident": 473, + "group": "lighthouse", + "name": "bsCalVal", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0 + } + } +} \ No newline at end of file diff --git a/real_robot/coordination_formation_control_pkg/scripts/cache/E2229F02.json b/real_robot/coordination_formation_control_pkg/scripts/cache/E2229F02.json new file mode 100644 index 0000000..f0e9f40 --- /dev/null +++ b/real_robot/coordination_formation_control_pkg/scripts/cache/E2229F02.json @@ -0,0 +1,2410 @@ +{ + "activeMarker": { + "front": { + "__class__": "ParamTocElement", + "ident": 0, + "group": "activeMarker", + "name": "front", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "back": { + "__class__": "ParamTocElement", + "ident": 1, + "group": "activeMarker", + "name": "back", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "left": { + "__class__": "ParamTocElement", + "ident": 2, + "group": "activeMarker", + "name": "left", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "right": { + "__class__": "ParamTocElement", + "ident": 3, + "group": "activeMarker", + "name": "right", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "mode": { + "__class__": "ParamTocElement", + "ident": 4, + "group": "activeMarker", + "name": "mode", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "poll": { + "__class__": "ParamTocElement", + "ident": 5, + "group": "activeMarker", + "name": "poll", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "deck": { + "bcActiveMarker": { + "__class__": "ParamTocElement", + "ident": 6, + "group": "deck", + "name": "bcActiveMarker", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcAIDeck": { + "__class__": "ParamTocElement", + "ident": 7, + "group": "deck", + "name": "bcAIDeck", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcBuzzer": { + "__class__": "ParamTocElement", + "ident": 8, + "group": "deck", + "name": "bcBuzzer", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcFlow": { + "__class__": "ParamTocElement", + "ident": 9, + "group": "deck", + "name": "bcFlow", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcFlow2": { + "__class__": "ParamTocElement", + "ident": 10, + "group": "deck", + "name": "bcFlow2", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcLedRing": { + "__class__": "ParamTocElement", + "ident": 11, + "group": "deck", + "name": "bcLedRing", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcLighthouse4": { + "__class__": "ParamTocElement", + "ident": 12, + "group": "deck", + "name": "bcLighthouse4", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcDWM1000": { + "__class__": "ParamTocElement", + "ident": 13, + "group": "deck", + "name": "bcDWM1000", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcMultiranger": { + "__class__": "ParamTocElement", + "ident": 14, + "group": "deck", + "name": "bcMultiranger", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcOA": { + "__class__": "ParamTocElement", + "ident": 15, + "group": "deck", + "name": "bcOA", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcUSD": { + "__class__": "ParamTocElement", + "ident": 16, + "group": "deck", + "name": "bcUSD", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcZRanger": { + "__class__": "ParamTocElement", + "ident": 17, + "group": "deck", + "name": "bcZRanger", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "bcZRanger2": { + "__class__": "ParamTocElement", + "ident": 18, + "group": "deck", + "name": "bcZRanger2", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + } + }, + "motion": { + "disable": { + "__class__": "ParamTocElement", + "ident": 19, + "group": "motion", + "name": "disable", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "adaptive": { + "__class__": "ParamTocElement", + "ident": 20, + "group": "motion", + "name": "adaptive", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "flowStdFixed": { + "__class__": "ParamTocElement", + "ident": 21, + "group": "motion", + "name": "flowStdFixed", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "ring": { + "effect": { + "__class__": "ParamTocElement", + "ident": 22, + "group": "ring", + "name": "effect", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "neffect": { + "__class__": "ParamTocElement", + "ident": 23, + "group": "ring", + "name": "neffect", + "ctype": "uint32_t", + "pytype": "<L", + "access": 1, + "extended": false + }, + "solidRed": { + "__class__": "ParamTocElement", + "ident": 24, + "group": "ring", + "name": "solidRed", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "solidGreen": { + "__class__": "ParamTocElement", + "ident": 25, + "group": "ring", + "name": "solidGreen", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "solidBlue": { + "__class__": "ParamTocElement", + "ident": 26, + "group": "ring", + "name": "solidBlue", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "headlightEnable": { + "__class__": "ParamTocElement", + "ident": 27, + "group": "ring", + "name": "headlightEnable", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "emptyCharge": { + "__class__": "ParamTocElement", + "ident": 28, + "group": "ring", + "name": "emptyCharge", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "fullCharge": { + "__class__": "ParamTocElement", + "ident": 29, + "group": "ring", + "name": "fullCharge", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "fadeColor": { + "__class__": "ParamTocElement", + "ident": 30, + "group": "ring", + "name": "fadeColor", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0, + "extended": false + }, + "fadeTime": { + "__class__": "ParamTocElement", + "ident": 31, + "group": "ring", + "name": "fadeTime", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "system": { + "highlight": { + "__class__": "ParamTocElement", + "ident": 32, + "group": "system", + "name": "highlight", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "taskDump": { + "__class__": "ParamTocElement", + "ident": 33, + "group": "system", + "name": "taskDump", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "selftestPassed": { + "__class__": "ParamTocElement", + "ident": 34, + "group": "system", + "name": "selftestPassed", + "ctype": "int8_t", + "pytype": "<b", + "access": 1, + "extended": false + }, + "forceArm": { + "__class__": "ParamTocElement", + "ident": 35, + "group": "system", + "name": "forceArm", + "ctype": "int8_t", + "pytype": "<b", + "access": 0, + "extended": true + } + }, + "loco": { + "mode": { + "__class__": "ParamTocElement", + "ident": 36, + "group": "loco", + "name": "mode", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "usd": { + "canLog": { + "__class__": "ParamTocElement", + "ident": 37, + "group": "usd", + "name": "canLog", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "logging": { + "__class__": "ParamTocElement", + "ident": 38, + "group": "usd", + "name": "logging", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "led": { + "bitmask": { + "__class__": "ParamTocElement", + "ident": 39, + "group": "led", + "name": "bitmask", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "pm": { + "lowVoltage": { + "__class__": "ParamTocElement", + "ident": 40, + "group": "pm", + "name": "lowVoltage", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "criticalLowVoltage": { + "__class__": "ParamTocElement", + "ident": 41, + "group": "pm", + "name": "criticalLowVoltage", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "imu_sensors": { + "BMP388": { + "__class__": "ParamTocElement", + "ident": 42, + "group": "imu_sensors", + "name": "BMP388", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "AK8963": { + "__class__": "ParamTocElement", + "ident": 43, + "group": "imu_sensors", + "name": "AK8963", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "LPS25H": { + "__class__": "ParamTocElement", + "ident": 44, + "group": "imu_sensors", + "name": "LPS25H", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + } + }, + "imu_tests": { + "MPU6500": { + "__class__": "ParamTocElement", + "ident": 45, + "group": "imu_tests", + "name": "MPU6500", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "AK8963": { + "__class__": "ParamTocElement", + "ident": 46, + "group": "imu_tests", + "name": "AK8963", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + }, + "LPS25H": { + "__class__": "ParamTocElement", + "ident": 47, + "group": "imu_tests", + "name": "LPS25H", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + } + }, + "pid_attitude": { + "roll_kp": { + "__class__": "ParamTocElement", + "ident": 48, + "group": "pid_attitude", + "name": "roll_kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "roll_ki": { + "__class__": "ParamTocElement", + "ident": 49, + "group": "pid_attitude", + "name": "roll_ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "roll_kd": { + "__class__": "ParamTocElement", + "ident": 50, + "group": "pid_attitude", + "name": "roll_kd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pitch_kp": { + "__class__": "ParamTocElement", + "ident": 51, + "group": "pid_attitude", + "name": "pitch_kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pitch_ki": { + "__class__": "ParamTocElement", + "ident": 52, + "group": "pid_attitude", + "name": "pitch_ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pitch_kd": { + "__class__": "ParamTocElement", + "ident": 53, + "group": "pid_attitude", + "name": "pitch_kd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yaw_kp": { + "__class__": "ParamTocElement", + "ident": 54, + "group": "pid_attitude", + "name": "yaw_kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yaw_ki": { + "__class__": "ParamTocElement", + "ident": 55, + "group": "pid_attitude", + "name": "yaw_ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yaw_kd": { + "__class__": "ParamTocElement", + "ident": 56, + "group": "pid_attitude", + "name": "yaw_kd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "pid_rate": { + "roll_kp": { + "__class__": "ParamTocElement", + "ident": 57, + "group": "pid_rate", + "name": "roll_kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "roll_ki": { + "__class__": "ParamTocElement", + "ident": 58, + "group": "pid_rate", + "name": "roll_ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "roll_kd": { + "__class__": "ParamTocElement", + "ident": 59, + "group": "pid_rate", + "name": "roll_kd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pitch_kp": { + "__class__": "ParamTocElement", + "ident": 60, + "group": "pid_rate", + "name": "pitch_kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pitch_ki": { + "__class__": "ParamTocElement", + "ident": 61, + "group": "pid_rate", + "name": "pitch_ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pitch_kd": { + "__class__": "ParamTocElement", + "ident": 62, + "group": "pid_rate", + "name": "pitch_kd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yaw_kp": { + "__class__": "ParamTocElement", + "ident": 63, + "group": "pid_rate", + "name": "yaw_kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yaw_ki": { + "__class__": "ParamTocElement", + "ident": 64, + "group": "pid_rate", + "name": "yaw_ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yaw_kd": { + "__class__": "ParamTocElement", + "ident": 65, + "group": "pid_rate", + "name": "yaw_kd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "colAv": { + "enable": { + "__class__": "ParamTocElement", + "ident": 66, + "group": "colAv", + "name": "enable", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "ellipsoidX": { + "__class__": "ParamTocElement", + "ident": 67, + "group": "colAv", + "name": "ellipsoidX", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ellipsoidY": { + "__class__": "ParamTocElement", + "ident": 68, + "group": "colAv", + "name": "ellipsoidY", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ellipsoidZ": { + "__class__": "ParamTocElement", + "ident": 69, + "group": "colAv", + "name": "ellipsoidZ", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bboxMinX": { + "__class__": "ParamTocElement", + "ident": 70, + "group": "colAv", + "name": "bboxMinX", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bboxMinY": { + "__class__": "ParamTocElement", + "ident": 71, + "group": "colAv", + "name": "bboxMinY", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bboxMinZ": { + "__class__": "ParamTocElement", + "ident": 72, + "group": "colAv", + "name": "bboxMinZ", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bboxMaxX": { + "__class__": "ParamTocElement", + "ident": 73, + "group": "colAv", + "name": "bboxMaxX", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bboxMaxY": { + "__class__": "ParamTocElement", + "ident": 74, + "group": "colAv", + "name": "bboxMaxY", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bboxMaxZ": { + "__class__": "ParamTocElement", + "ident": 75, + "group": "colAv", + "name": "bboxMaxZ", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "horizon": { + "__class__": "ParamTocElement", + "ident": 76, + "group": "colAv", + "name": "horizon", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "maxSpeed": { + "__class__": "ParamTocElement", + "ident": 77, + "group": "colAv", + "name": "maxSpeed", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "sidestepThrsh": { + "__class__": "ParamTocElement", + "ident": 78, + "group": "colAv", + "name": "sidestepThrsh", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "maxPeerLocAge": { + "__class__": "ParamTocElement", + "ident": 79, + "group": "colAv", + "name": "maxPeerLocAge", + "ctype": "int32_t", + "pytype": "<i", + "access": 0, + "extended": false + }, + "vorTol": { + "__class__": "ParamTocElement", + "ident": 80, + "group": "colAv", + "name": "vorTol", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "vorIters": { + "__class__": "ParamTocElement", + "ident": 81, + "group": "colAv", + "name": "vorIters", + "ctype": "int32_t", + "pytype": "<i", + "access": 0, + "extended": false + } + }, + "commander": { + "enHighLevel": { + "__class__": "ParamTocElement", + "ident": 82, + "group": "commander", + "name": "enHighLevel", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "ctrlINDI": { + "thrust_threshold": { + "__class__": "ParamTocElement", + "ident": 83, + "group": "ctrlINDI", + "name": "thrust_threshold", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "bound_ctrl_input": { + "__class__": "ParamTocElement", + "ident": 84, + "group": "ctrlINDI", + "name": "bound_ctrl_input", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "g1_p": { + "__class__": "ParamTocElement", + "ident": 85, + "group": "ctrlINDI", + "name": "g1_p", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "g1_q": { + "__class__": "ParamTocElement", + "ident": 86, + "group": "ctrlINDI", + "name": "g1_q", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "g1_r": { + "__class__": "ParamTocElement", + "ident": 87, + "group": "ctrlINDI", + "name": "g1_r", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "g2": { + "__class__": "ParamTocElement", + "ident": 88, + "group": "ctrlINDI", + "name": "g2", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ref_err_p": { + "__class__": "ParamTocElement", + "ident": 89, + "group": "ctrlINDI", + "name": "ref_err_p", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ref_err_q": { + "__class__": "ParamTocElement", + "ident": 90, + "group": "ctrlINDI", + "name": "ref_err_q", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ref_err_r": { + "__class__": "ParamTocElement", + "ident": 91, + "group": "ctrlINDI", + "name": "ref_err_r", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ref_rate_p": { + "__class__": "ParamTocElement", + "ident": 92, + "group": "ctrlINDI", + "name": "ref_rate_p", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ref_rate_q": { + "__class__": "ParamTocElement", + "ident": 93, + "group": "ctrlINDI", + "name": "ref_rate_q", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "ref_rate_r": { + "__class__": "ParamTocElement", + "ident": 94, + "group": "ctrlINDI", + "name": "ref_rate_r", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "act_dyn_p": { + "__class__": "ParamTocElement", + "ident": 95, + "group": "ctrlINDI", + "name": "act_dyn_p", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "act_dyn_q": { + "__class__": "ParamTocElement", + "ident": 96, + "group": "ctrlINDI", + "name": "act_dyn_q", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "act_dyn_r": { + "__class__": "ParamTocElement", + "ident": 97, + "group": "ctrlINDI", + "name": "act_dyn_r", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "filt_cutoff": { + "__class__": "ParamTocElement", + "ident": 98, + "group": "ctrlINDI", + "name": "filt_cutoff", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "filt_cutoff_r": { + "__class__": "ParamTocElement", + "ident": 99, + "group": "ctrlINDI", + "name": "filt_cutoff_r", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "outerLoopActive": { + "__class__": "ParamTocElement", + "ident": 100, + "group": "ctrlINDI", + "name": "outerLoopActive", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "ctrlMel": { + "kp_xy": { + "__class__": "ParamTocElement", + "ident": 101, + "group": "ctrlMel", + "name": "kp_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kd_xy": { + "__class__": "ParamTocElement", + "ident": 102, + "group": "ctrlMel", + "name": "kd_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "ki_xy": { + "__class__": "ParamTocElement", + "ident": 103, + "group": "ctrlMel", + "name": "ki_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "i_range_xy": { + "__class__": "ParamTocElement", + "ident": 104, + "group": "ctrlMel", + "name": "i_range_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kp_z": { + "__class__": "ParamTocElement", + "ident": 105, + "group": "ctrlMel", + "name": "kp_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kd_z": { + "__class__": "ParamTocElement", + "ident": 106, + "group": "ctrlMel", + "name": "kd_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "ki_z": { + "__class__": "ParamTocElement", + "ident": 107, + "group": "ctrlMel", + "name": "ki_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "i_range_z": { + "__class__": "ParamTocElement", + "ident": 108, + "group": "ctrlMel", + "name": "i_range_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "mass": { + "__class__": "ParamTocElement", + "ident": 109, + "group": "ctrlMel", + "name": "mass", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "massThrust": { + "__class__": "ParamTocElement", + "ident": 110, + "group": "ctrlMel", + "name": "massThrust", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kR_xy": { + "__class__": "ParamTocElement", + "ident": 111, + "group": "ctrlMel", + "name": "kR_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kR_z": { + "__class__": "ParamTocElement", + "ident": 112, + "group": "ctrlMel", + "name": "kR_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kw_xy": { + "__class__": "ParamTocElement", + "ident": 113, + "group": "ctrlMel", + "name": "kw_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kw_z": { + "__class__": "ParamTocElement", + "ident": 114, + "group": "ctrlMel", + "name": "kw_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "ki_m_xy": { + "__class__": "ParamTocElement", + "ident": 115, + "group": "ctrlMel", + "name": "ki_m_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "ki_m_z": { + "__class__": "ParamTocElement", + "ident": 116, + "group": "ctrlMel", + "name": "ki_m_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "kd_omega_rp": { + "__class__": "ParamTocElement", + "ident": 117, + "group": "ctrlMel", + "name": "kd_omega_rp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "i_range_m_xy": { + "__class__": "ParamTocElement", + "ident": 118, + "group": "ctrlMel", + "name": "i_range_m_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "i_range_m_z": { + "__class__": "ParamTocElement", + "ident": 119, + "group": "ctrlMel", + "name": "i_range_m_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "controller": { + "tiltComp": { + "__class__": "ParamTocElement", + "ident": 120, + "group": "controller", + "name": "tiltComp", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "cmdrCPPM": { + "rateRoll": { + "__class__": "ParamTocElement", + "ident": 121, + "group": "cmdrCPPM", + "name": "rateRoll", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "ratePitch": { + "__class__": "ParamTocElement", + "ident": 122, + "group": "cmdrCPPM", + "name": "ratePitch", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "angPitch": { + "__class__": "ParamTocElement", + "ident": 123, + "group": "cmdrCPPM", + "name": "angPitch", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "angRoll": { + "__class__": "ParamTocElement", + "ident": 124, + "group": "cmdrCPPM", + "name": "angRoll", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "rateYaw": { + "__class__": "ParamTocElement", + "ident": 125, + "group": "cmdrCPPM", + "name": "rateYaw", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "hlCommander": { + "vtoff": { + "__class__": "ParamTocElement", + "ident": 126, + "group": "hlCommander", + "name": "vtoff", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "vland": { + "__class__": "ParamTocElement", + "ident": 127, + "group": "hlCommander", + "name": "vland", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "flightmode": { + "althold": { + "__class__": "ParamTocElement", + "ident": 128, + "group": "flightmode", + "name": "althold", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "poshold": { + "__class__": "ParamTocElement", + "ident": 129, + "group": "flightmode", + "name": "poshold", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "posSet": { + "__class__": "ParamTocElement", + "ident": 130, + "group": "flightmode", + "name": "posSet", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "yawMode": { + "__class__": "ParamTocElement", + "ident": 131, + "group": "flightmode", + "name": "yawMode", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "stabModeRoll": { + "__class__": "ParamTocElement", + "ident": 132, + "group": "flightmode", + "name": "stabModeRoll", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "stabModePitch": { + "__class__": "ParamTocElement", + "ident": 133, + "group": "flightmode", + "name": "stabModePitch", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "stabModeYaw": { + "__class__": "ParamTocElement", + "ident": 134, + "group": "flightmode", + "name": "stabModeYaw", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "locSrv": { + "enRangeStreamFP32": { + "__class__": "ParamTocElement", + "ident": 135, + "group": "locSrv", + "name": "enRangeStreamFP32", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "enLhAngleStream": { + "__class__": "ParamTocElement", + "ident": 136, + "group": "locSrv", + "name": "enLhAngleStream", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "extPosStdDev": { + "__class__": "ParamTocElement", + "ident": 137, + "group": "locSrv", + "name": "extPosStdDev", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "extQuatStdDev": { + "__class__": "ParamTocElement", + "ident": 138, + "group": "locSrv", + "name": "extQuatStdDev", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "crtpsrv": { + "echoDelay": { + "__class__": "ParamTocElement", + "ident": 139, + "group": "crtpsrv", + "name": "echoDelay", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + } + }, + "kalman": { + "resetEstimation": { + "__class__": "ParamTocElement", + "ident": 140, + "group": "kalman", + "name": "resetEstimation", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "quadIsFlying": { + "__class__": "ParamTocElement", + "ident": 141, + "group": "kalman", + "name": "quadIsFlying", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "robustTdoa": { + "__class__": "ParamTocElement", + "ident": 142, + "group": "kalman", + "name": "robustTdoa", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "robustTwr": { + "__class__": "ParamTocElement", + "ident": 143, + "group": "kalman", + "name": "robustTwr", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "pNAcc_xy": { + "__class__": "ParamTocElement", + "ident": 144, + "group": "kalman", + "name": "pNAcc_xy", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pNAcc_z": { + "__class__": "ParamTocElement", + "ident": 145, + "group": "kalman", + "name": "pNAcc_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pNVel": { + "__class__": "ParamTocElement", + "ident": 146, + "group": "kalman", + "name": "pNVel", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pNPos": { + "__class__": "ParamTocElement", + "ident": 147, + "group": "kalman", + "name": "pNPos", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pNAtt": { + "__class__": "ParamTocElement", + "ident": 148, + "group": "kalman", + "name": "pNAtt", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "mNBaro": { + "__class__": "ParamTocElement", + "ident": 149, + "group": "kalman", + "name": "mNBaro", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "mNGyro_rollpitch": { + "__class__": "ParamTocElement", + "ident": 150, + "group": "kalman", + "name": "mNGyro_rollpitch", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "mNGyro_yaw": { + "__class__": "ParamTocElement", + "ident": 151, + "group": "kalman", + "name": "mNGyro_yaw", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "initialX": { + "__class__": "ParamTocElement", + "ident": 152, + "group": "kalman", + "name": "initialX", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "initialY": { + "__class__": "ParamTocElement", + "ident": 153, + "group": "kalman", + "name": "initialY", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "initialZ": { + "__class__": "ParamTocElement", + "ident": 154, + "group": "kalman", + "name": "initialZ", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "initialYaw": { + "__class__": "ParamTocElement", + "ident": 155, + "group": "kalman", + "name": "initialYaw", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "maxPos": { + "__class__": "ParamTocElement", + "ident": 156, + "group": "kalman", + "name": "maxPos", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "maxVel": { + "__class__": "ParamTocElement", + "ident": 157, + "group": "kalman", + "name": "maxVel", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "health": { + "startPropTest": { + "__class__": "ParamTocElement", + "ident": 158, + "group": "health", + "name": "startPropTest", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "startBatTest": { + "__class__": "ParamTocElement", + "ident": 159, + "group": "health", + "name": "startBatTest", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "propTestPWMRatio": { + "__class__": "ParamTocElement", + "ident": 160, + "group": "health", + "name": "propTestPWMRatio", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + } + }, + "memTst": { + "resetW": { + "__class__": "ParamTocElement", + "ident": 161, + "group": "memTst", + "name": "resetW", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "posCtrlIndi": { + "K_xi_x": { + "__class__": "ParamTocElement", + "ident": 162, + "group": "posCtrlIndi", + "name": "K_xi_x", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "K_xi_y": { + "__class__": "ParamTocElement", + "ident": 163, + "group": "posCtrlIndi", + "name": "K_xi_y", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "K_xi_z": { + "__class__": "ParamTocElement", + "ident": 164, + "group": "posCtrlIndi", + "name": "K_xi_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "K_dxi_x": { + "__class__": "ParamTocElement", + "ident": 165, + "group": "posCtrlIndi", + "name": "K_dxi_x", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "K_dxi_y": { + "__class__": "ParamTocElement", + "ident": 166, + "group": "posCtrlIndi", + "name": "K_dxi_y", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "K_dxi_z": { + "__class__": "ParamTocElement", + "ident": 167, + "group": "posCtrlIndi", + "name": "K_dxi_z", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "pq_clamping": { + "__class__": "ParamTocElement", + "ident": 168, + "group": "posCtrlIndi", + "name": "pq_clamping", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "posCtlPid": { + "xKp": { + "__class__": "ParamTocElement", + "ident": 169, + "group": "posCtlPid", + "name": "xKp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "xKi": { + "__class__": "ParamTocElement", + "ident": 170, + "group": "posCtlPid", + "name": "xKi", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "xKd": { + "__class__": "ParamTocElement", + "ident": 171, + "group": "posCtlPid", + "name": "xKd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yKp": { + "__class__": "ParamTocElement", + "ident": 172, + "group": "posCtlPid", + "name": "yKp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yKi": { + "__class__": "ParamTocElement", + "ident": 173, + "group": "posCtlPid", + "name": "yKi", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yKd": { + "__class__": "ParamTocElement", + "ident": 174, + "group": "posCtlPid", + "name": "yKd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "zKp": { + "__class__": "ParamTocElement", + "ident": 175, + "group": "posCtlPid", + "name": "zKp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "zKi": { + "__class__": "ParamTocElement", + "ident": 176, + "group": "posCtlPid", + "name": "zKi", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "zKd": { + "__class__": "ParamTocElement", + "ident": 177, + "group": "posCtlPid", + "name": "zKd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "thrustBase": { + "__class__": "ParamTocElement", + "ident": 178, + "group": "posCtlPid", + "name": "thrustBase", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": true + }, + "thrustMin": { + "__class__": "ParamTocElement", + "ident": 179, + "group": "posCtlPid", + "name": "thrustMin", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": true + }, + "rLimit": { + "__class__": "ParamTocElement", + "ident": 180, + "group": "posCtlPid", + "name": "rLimit", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "pLimit": { + "__class__": "ParamTocElement", + "ident": 181, + "group": "posCtlPid", + "name": "pLimit", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "xVelMax": { + "__class__": "ParamTocElement", + "ident": 182, + "group": "posCtlPid", + "name": "xVelMax", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "yVelMax": { + "__class__": "ParamTocElement", + "ident": 183, + "group": "posCtlPid", + "name": "yVelMax", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "zVelMax": { + "__class__": "ParamTocElement", + "ident": 184, + "group": "posCtlPid", + "name": "zVelMax", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "velCtlPid": { + "vxKp": { + "__class__": "ParamTocElement", + "ident": 185, + "group": "velCtlPid", + "name": "vxKp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vxKi": { + "__class__": "ParamTocElement", + "ident": 186, + "group": "velCtlPid", + "name": "vxKi", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vxKd": { + "__class__": "ParamTocElement", + "ident": 187, + "group": "velCtlPid", + "name": "vxKd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vyKp": { + "__class__": "ParamTocElement", + "ident": 188, + "group": "velCtlPid", + "name": "vyKp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vyKi": { + "__class__": "ParamTocElement", + "ident": 189, + "group": "velCtlPid", + "name": "vyKi", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vyKd": { + "__class__": "ParamTocElement", + "ident": 190, + "group": "velCtlPid", + "name": "vyKd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vzKp": { + "__class__": "ParamTocElement", + "ident": 191, + "group": "velCtlPid", + "name": "vzKp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vzKi": { + "__class__": "ParamTocElement", + "ident": 192, + "group": "velCtlPid", + "name": "vzKi", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vzKd": { + "__class__": "ParamTocElement", + "ident": 193, + "group": "velCtlPid", + "name": "vzKd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vxKFF": { + "__class__": "ParamTocElement", + "ident": 194, + "group": "velCtlPid", + "name": "vxKFF", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vyKFF": { + "__class__": "ParamTocElement", + "ident": 195, + "group": "velCtlPid", + "name": "vyKFF", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "posEstAlt": { + "estAlphaAsl": { + "__class__": "ParamTocElement", + "ident": 196, + "group": "posEstAlt", + "name": "estAlphaAsl", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "estAlphaZr": { + "__class__": "ParamTocElement", + "ident": 197, + "group": "posEstAlt", + "name": "estAlphaZr", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "velFactor": { + "__class__": "ParamTocElement", + "ident": 198, + "group": "posEstAlt", + "name": "velFactor", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "velZAlpha": { + "__class__": "ParamTocElement", + "ident": 199, + "group": "posEstAlt", + "name": "velZAlpha", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "vAccDeadband": { + "__class__": "ParamTocElement", + "ident": 200, + "group": "posEstAlt", + "name": "vAccDeadband", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + } + }, + "motorPowerSet": { + "enable": { + "__class__": "ParamTocElement", + "ident": 201, + "group": "motorPowerSet", + "name": "enable", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "m1": { + "__class__": "ParamTocElement", + "ident": 202, + "group": "motorPowerSet", + "name": "m1", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + }, + "m2": { + "__class__": "ParamTocElement", + "ident": 203, + "group": "motorPowerSet", + "name": "m2", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + }, + "m3": { + "__class__": "ParamTocElement", + "ident": 204, + "group": "motorPowerSet", + "name": "m3", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + }, + "m4": { + "__class__": "ParamTocElement", + "ident": 205, + "group": "motorPowerSet", + "name": "m4", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + } + }, + "powerDist": { + "idleThrust": { + "__class__": "ParamTocElement", + "ident": 206, + "group": "powerDist", + "name": "idleThrust", + "ctype": "uint32_t", + "pytype": "<L", + "access": 0, + "extended": true + } + }, + "sensfusion6": { + "kp": { + "__class__": "ParamTocElement", + "ident": 207, + "group": "sensfusion6", + "name": "kp", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "ki": { + "__class__": "ParamTocElement", + "ident": 208, + "group": "sensfusion6", + "name": "ki", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": true + }, + "baseZacc": { + "__class__": "ParamTocElement", + "ident": 209, + "group": "sensfusion6", + "name": "baseZacc", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + } + }, + "sound": { + "effect": { + "__class__": "ParamTocElement", + "ident": 210, + "group": "sound", + "name": "effect", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": true + }, + "neffect": { + "__class__": "ParamTocElement", + "ident": 211, + "group": "sound", + "name": "neffect", + "ctype": "uint32_t", + "pytype": "<L", + "access": 1, + "extended": false + }, + "freq": { + "__class__": "ParamTocElement", + "ident": 212, + "group": "sound", + "name": "freq", + "ctype": "uint16_t", + "pytype": "<H", + "access": 0, + "extended": false + } + }, + "stabilizer": { + "estimator": { + "__class__": "ParamTocElement", + "ident": 213, + "group": "stabilizer", + "name": "estimator", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "controller": { + "__class__": "ParamTocElement", + "ident": 214, + "group": "stabilizer", + "name": "controller", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "stop": { + "__class__": "ParamTocElement", + "ident": 215, + "group": "stabilizer", + "name": "stop", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "cpu": { + "flash": { + "__class__": "ParamTocElement", + "ident": 216, + "group": "cpu", + "name": "flash", + "ctype": "uint16_t", + "pytype": "<H", + "access": 1, + "extended": false + }, + "id0": { + "__class__": "ParamTocElement", + "ident": 217, + "group": "cpu", + "name": "id0", + "ctype": "uint32_t", + "pytype": "<L", + "access": 1, + "extended": false + }, + "id1": { + "__class__": "ParamTocElement", + "ident": 218, + "group": "cpu", + "name": "id1", + "ctype": "uint32_t", + "pytype": "<L", + "access": 1, + "extended": false + }, + "id2": { + "__class__": "ParamTocElement", + "ident": 219, + "group": "cpu", + "name": "id2", + "ctype": "uint32_t", + "pytype": "<L", + "access": 1, + "extended": false + } + }, + "tdoaEngine": { + "logId": { + "__class__": "ParamTocElement", + "ident": 220, + "group": "tdoaEngine", + "name": "logId", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "logOthrId": { + "__class__": "ParamTocElement", + "ident": 221, + "group": "tdoaEngine", + "name": "logOthrId", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "matchAlgo": { + "__class__": "ParamTocElement", + "ident": 222, + "group": "tdoaEngine", + "name": "matchAlgo", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "lighthouse": { + "method": { + "__class__": "ParamTocElement", + "ident": 223, + "group": "lighthouse", + "name": "method", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "bsCalibReset": { + "__class__": "ParamTocElement", + "ident": 224, + "group": "lighthouse", + "name": "bsCalibReset", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "systemType": { + "__class__": "ParamTocElement", + "ident": 225, + "group": "lighthouse", + "name": "systemType", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + }, + "bsAvailable": { + "__class__": "ParamTocElement", + "ident": 226, + "group": "lighthouse", + "name": "bsAvailable", + "ctype": "uint16_t", + "pytype": "<H", + "access": 1, + "extended": false + }, + "sweepStd": { + "__class__": "ParamTocElement", + "ident": 227, + "group": "lighthouse", + "name": "sweepStd", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "sweepStd2": { + "__class__": "ParamTocElement", + "ident": 228, + "group": "lighthouse", + "name": "sweepStd2", + "ctype": "float", + "pytype": "<f", + "access": 0, + "extended": false + }, + "enLhRawStream": { + "__class__": "ParamTocElement", + "ident": 229, + "group": "lighthouse", + "name": "enLhRawStream", + "ctype": "uint8_t", + "pytype": "<B", + "access": 0, + "extended": false + } + }, + "firmware": { + "revision0": { + "__class__": "ParamTocElement", + "ident": 230, + "group": "firmware", + "name": "revision0", + "ctype": "uint32_t", + "pytype": "<L", + "access": 1, + "extended": false + }, + "revision1": { + "__class__": "ParamTocElement", + "ident": 231, + "group": "firmware", + "name": "revision1", + "ctype": "uint16_t", + "pytype": "<H", + "access": 1, + "extended": false + }, + "modified": { + "__class__": "ParamTocElement", + "ident": 232, + "group": "firmware", + "name": "modified", + "ctype": "uint8_t", + "pytype": "<B", + "access": 1, + "extended": false + } + } +} \ No newline at end of file diff --git a/real_robot/coordination_formation_control_pkg/src/drone_node.cpp b/real_robot/coordination_formation_control_pkg/src/drone_node.cpp index cbc4069..3789b62 100644 --- a/real_robot/coordination_formation_control_pkg/src/drone_node.cpp +++ b/real_robot/coordination_formation_control_pkg/src/drone_node.cpp @@ -201,6 +201,18 @@ int main(int argc, char **argv) { /* TODO improve state machine*/ while(ros::ok()) { + /*get current state of all the robot*/ + for(int i = 1; i <=n_drones; i++) + { + robot_state_t current_state; + current_state = uavs[i-1]->get_state(); + uav_state_q(0, i-1) =current_state.q(0); + uav_state_q(1, i-1) =current_state.q(1); + uav_state_p(0, i-1) = current_state.p(0); + uav_state_p(1, i-1) = current_state.p(1); + uav_state_a(0, i-1) = current_state.a(0); + uav_state_a(1, i-1) = current_state.a(1); + } if(coord_config->initialize_robot && coord_config->init_formation ==false && coord_config->stop_demo == false) { // send the robot to hover at zero velocity in plane @@ -219,18 +231,7 @@ int main(int argc, char **argv) { if (waypoint_received) { - /*get current state of all the robot*/ - for(int i = 1; i <=n_drones; i++) - { - robot_state_t current_state; - current_state = uavs[i-1]->get_state(); - uav_state_q(0, i-1) =current_state.q(0); - uav_state_q(1, i-1) =current_state.q(1); - uav_state_p(0, i-1) = current_state.p(0); - uav_state_p(1, i-1) = current_state.p(1); - uav_state_a(0, i-1) = current_state.a(0); - uav_state_a(1, i-1) = current_state.a(1); - } + /* update reference point*/ current_waypoint.q(0) = next_waypoint->pos[0] ; /*position 2 position 1 orientation yaw*/ current_waypoint.q(1) = next_waypoint->pos[1] ; /*position 2 position 1 orientation yaw*/ diff --git a/real_robot/coordination_formation_control_pkg/src/omniwheel_node.cpp b/real_robot/coordination_formation_control_pkg/src/omniwheel_node.cpp index 2301527..a0dd839 100644 --- a/real_robot/coordination_formation_control_pkg/src/omniwheel_node.cpp +++ b/real_robot/coordination_formation_control_pkg/src/omniwheel_node.cpp @@ -184,6 +184,22 @@ int main(int argc, char **argv) { /* TODO improve state machine*/ while(ros::ok()) { + + /*get current state of all the ugv*/ + for(int i = 1; i <=n_ugvs; i++) + { + robot_state_t current_state; + current_state = ugvs[i-1]->get_state(); + ugv_state_q(0, i-1) =current_state.q(0); + ugv_state_q(1, i-1) =current_state.q(1); + ugv_state_p(0, i-1) = current_state.p(0); + ugv_state_p(1, i-1) = current_state.p(1); + ugv_state_a(0, i-1) = current_state.a(0); + ugv_state_a(1, i-1) = current_state.a(1); + + } + + if(coord_config->initialize_robot && coord_config->init_formation ==false && coord_config->stop_demo == false) { // send the robot to hover at zero velocity in plane @@ -200,21 +216,6 @@ int main(int argc, char **argv) { if (waypoint_received) { - /*get current state of all the ugv*/ - for(int i = 1; i <=n_ugvs; i++) - { - robot_state_t current_state; - current_state = ugvs[i-1]->get_state(); - ugv_state_q(0, i-1) =current_state.q(0); - ugv_state_q(1, i-1) =current_state.q(1); - ugv_state_p(0, i-1) = current_state.p(0); - ugv_state_p(1, i-1) = current_state.p(1); - ugv_state_a(0, i-1) = current_state.a(0); - ugv_state_a(1, i-1) = current_state.a(1); - - } - - /* create a state vector of the cluster and the current agv*/ current_state_q(0,0) = next_waypoint->cluster_pos[robotid*2 -2]; current_state_q(1,0) = next_waypoint->cluster_pos[robotid*2 -1]; -- GitLab