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