inav-toolkit 2.15.1__tar.gz → 2.16.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/PKG-INFO +49 -39
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/README.md +48 -38
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit.egg-info/PKG-INFO +49 -39
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/pyproject.toml +1 -1
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/LICENSE +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/__init__.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/autotune.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/blackbox_analyzer.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/flight_db.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/i18n.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/locales/en.json +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/locales/es.json +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/locales/pt_BR.json +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/msp.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/param_analyzer.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/vtol_configurator.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit/wizard.py +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit.egg-info/SOURCES.txt +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit.egg-info/dependency_links.txt +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit.egg-info/entry_points.txt +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit.egg-info/requires.txt +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/inav_toolkit.egg-info/top_level.txt +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/setup.cfg +0 -0
- {inav_toolkit-2.15.1 → inav_toolkit-2.16.0}/tests/test_smoke.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: inav-toolkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.16.0
|
|
4
4
|
Summary: Blackbox analyzer, parameter checker, and tuning wizard for INAV flight controllers
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/agoliveira/INAV-Toolkit
|
|
@@ -32,20 +32,29 @@ Dynamic: license-file
|
|
|
32
32
|
|
|
33
33
|
# INAV Toolkit
|
|
34
34
|
|
|
35
|
-
A Python toolkit for analyzing blackbox logs, validating configurations, and tuning INAV flight controllers. Plug in your FC via USB
|
|
35
|
+
A Python toolkit for analyzing blackbox logs, validating configurations, and tuning INAV flight controllers. Plug in your FC via USB - it pulls the config, downloads the blackbox, tells you exactly what to change, and gives you the CLI commands to paste.
|
|
36
36
|
|
|
37
37
|
Built for the INAV long-range community. Tested on 7" to 15" multirotors with GPS navigation, INAV 9.0.x.
|
|
38
38
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
### Install
|
|
39
|
+
## Install / Update
|
|
42
40
|
|
|
43
41
|
```bash
|
|
44
|
-
|
|
42
|
+
git clone https://github.com/agoliveira/INAV-Toolkit.git
|
|
43
|
+
cd INAV-Toolkit
|
|
44
|
+
python3 -m venv .venv
|
|
45
|
+
source .venv/bin/activate
|
|
46
|
+
pip install -r requirements.txt
|
|
47
|
+
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
45
48
|
```
|
|
46
49
|
|
|
50
|
+
Or on Debian/Ubuntu, system packages:
|
|
51
|
+
```bash
|
|
52
|
+
sudo apt install python3-numpy python3-scipy python3-serial
|
|
53
|
+
```
|
|
47
54
|
Python 3.8+. `pyserial` only needed for direct FC connection.
|
|
48
55
|
|
|
56
|
+
> **Note:** If using a venv, activate it (`source .venv/bin/activate`) before running any commands below.
|
|
57
|
+
|
|
49
58
|
### Connect and Analyze
|
|
50
59
|
|
|
51
60
|
```bash
|
|
@@ -57,34 +66,34 @@ That's it. The tool will auto-detect your FC, pull the current config, download
|
|
|
57
66
|
### Output
|
|
58
67
|
|
|
59
68
|
```
|
|
60
|
-
|
|
61
|
-
Connected: NAZGUL 10
|
|
69
|
+
INAV Blackbox Analyzer v2.16.0
|
|
70
|
+
Connected: NAZGUL 10 - INAV 9.0.1
|
|
62
71
|
Pulling configuration (diff all)... 89 settings
|
|
63
72
|
Downloading 2236KB ... 204KB/s
|
|
64
|
-
Found 3 flights
|
|
73
|
+
Found 3 flights - analyzing best from latest config
|
|
65
74
|
|
|
66
75
|
TUNE QUALITY: █████████████░░░░░░░ 65/100
|
|
67
76
|
Noise:95 | PID:N/A | Motors:94
|
|
68
77
|
|
|
69
78
|
CONFIG:
|
|
70
|
-
Roll P= 32 I= 82 D= 32 (FC now: P
|
|
71
|
-
Pitch P= 35 I= 90 D= 35 (FC now: P
|
|
79
|
+
Roll P= 32 I= 82 D= 32 (FC now: P->35, I->75, D->28)
|
|
80
|
+
Pitch P= 35 I= 90 D= 35 (FC now: P->38, I->82, D->31)
|
|
72
81
|
|
|
73
82
|
NOISE SOURCES:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
50Hz motor imbalance on Roll/Yaw [medium]
|
|
84
|
+
128Hz motor noise on Pitch/Yaw [low]
|
|
85
|
+
187-437Hz (6 peaks) electrical on Pitch/Roll/Yaw [medium]
|
|
77
86
|
|
|
78
|
-
DO THIS
|
|
79
|
-
1. Lower dynamic_gyro_notch_min_hz: 50
|
|
87
|
+
DO THIS - 2 changes:
|
|
88
|
+
1. Lower dynamic_gyro_notch_min_hz: 50 -> 40
|
|
80
89
|
2. Consider enabling RPM filter
|
|
81
90
|
|
|
82
|
-
INAV CLI
|
|
91
|
+
INAV CLI - paste into Configurator CLI tab:
|
|
83
92
|
set dynamic_gyro_notch_min_hz = 40
|
|
84
93
|
save
|
|
85
94
|
|
|
86
95
|
CONFIG REVIEW:
|
|
87
|
-
|
|
96
|
+
[CRITICAL] Critical beeper warnings disabled - BAT_CRIT_LOW, RX_LOST
|
|
88
97
|
```
|
|
89
98
|
|
|
90
99
|
## Tools
|
|
@@ -94,7 +103,7 @@ That's it. The tool will auto-detect your FC, pull the current config, download
|
|
|
94
103
|
Decodes `.bbl` / `.bfl` blackbox logs natively in Python (no `blackbox_decode` needed) and produces actionable tuning recommendations.
|
|
95
104
|
|
|
96
105
|
```bash
|
|
97
|
-
# Connect to FC
|
|
106
|
+
# Connect to FC - pull config + download + analyze
|
|
98
107
|
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
99
108
|
|
|
100
109
|
# Analyze an existing log file
|
|
@@ -114,12 +123,12 @@ python3 -m inav_toolkit.blackbox_analyzer flight.bbl --history
|
|
|
114
123
|
```
|
|
115
124
|
|
|
116
125
|
**What it measures:**
|
|
117
|
-
- PID step response
|
|
118
|
-
- Noise spectrum
|
|
119
|
-
- Hover oscillation
|
|
120
|
-
- Motor balance
|
|
121
|
-
- Filter phase lag
|
|
122
|
-
- Config mismatch
|
|
126
|
+
- PID step response - overshoot %, tracking delay, settling time per axis
|
|
127
|
+
- Noise spectrum - identifies peak frequencies, classifies sources (propwash, electrical, motor imbalance), groups and ranks by severity
|
|
128
|
+
- Hover oscillation - RMS and peak-to-peak gyro during centered stick
|
|
129
|
+
- Motor balance - average load and saturation per motor
|
|
130
|
+
- Filter phase lag - total delay through the gyro/D-term filter chain
|
|
131
|
+
- Config mismatch - detects when the FC config has changed since the flight being analyzed
|
|
123
132
|
|
|
124
133
|
**What it outputs:**
|
|
125
134
|
- Terminal report with score, noise sources, specific CLI commands to paste
|
|
@@ -185,27 +194,28 @@ Handles MSP v2 framing, pipelined dataflash download (4-deep), CLI command/batch
|
|
|
185
194
|
```
|
|
186
195
|
1. NEW BUILD
|
|
187
196
|
python3 -m inav_toolkit.param_analyzer --setup 10 --voltage 6S
|
|
188
|
-
|
|
189
|
-
|
|
197
|
+
-> Conservative starting PIDs and filter settings
|
|
198
|
+
-> Paste CLI commands into INAV Configurator
|
|
190
199
|
|
|
191
200
|
2. SAFETY CHECK
|
|
192
201
|
python3 -m inav_toolkit.param_analyzer my_diff.txt --frame 10
|
|
193
|
-
|
|
194
|
-
|
|
202
|
+
-> Catches disabled beepers, failsafe issues, battery limits
|
|
203
|
+
-> Fix before flying
|
|
195
204
|
|
|
196
205
|
3. FLY
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
206
|
+
-> Enable blackbox logging (GYRO_RAW, MOTORS, RC_COMMAND)
|
|
207
|
+
-> Hover for 10s, then do deliberate roll/pitch/yaw sweeps
|
|
208
|
+
-> The analyzer needs stick inputs to measure PID response
|
|
200
209
|
|
|
201
210
|
4. ANALYZE
|
|
202
211
|
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
203
|
-
|
|
204
|
-
|
|
212
|
+
-> Downloads log, pulls current config, runs full analysis
|
|
213
|
+
-> Shows exactly what to change with CLI commands
|
|
205
214
|
|
|
206
|
-
5. APPLY
|
|
207
|
-
|
|
208
|
-
|
|
215
|
+
5. APPLY + REPEAT
|
|
216
|
+
-> Paste CLI commands, fly again
|
|
217
|
+
-> Tool auto-detects which flights use the new config
|
|
218
|
+
-> Flight database tracks your progression across sessions
|
|
209
219
|
```
|
|
210
220
|
|
|
211
221
|
## Frame Size Profiles
|
|
@@ -246,7 +256,7 @@ INAV-Toolkit/
|
|
|
246
256
|
|
|
247
257
|
## INAV Version Support
|
|
248
258
|
|
|
249
|
-
Developed and tested against **INAV 9.0.x**. The blackbox binary decoder handles the Cleanflight/INAV encoding format natively in Python
|
|
259
|
+
Developed and tested against **INAV 9.0.x**. The blackbox binary decoder handles the Cleanflight/INAV encoding format natively in Python - no external `blackbox_decode` tool needed. Parameter names are INAV-specific; Betaflight is not currently supported.
|
|
250
260
|
|
|
251
261
|
## Contributing
|
|
252
262
|
|
|
@@ -259,6 +269,6 @@ MIT License. See [LICENSE](LICENSE).
|
|
|
259
269
|
## Acknowledgments
|
|
260
270
|
|
|
261
271
|
- The INAV development team and community
|
|
262
|
-
- QuadMeUp (
|
|
272
|
+
- QuadMeUp (Pawel Spychalski) for filter and RPM analysis research
|
|
263
273
|
- The INAV Fixed Wing Group for modes documentation
|
|
264
274
|
- UAV Tech for the spark that gave me the idea to create this
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
# INAV Toolkit
|
|
2
2
|
|
|
3
|
-
A Python toolkit for analyzing blackbox logs, validating configurations, and tuning INAV flight controllers. Plug in your FC via USB
|
|
3
|
+
A Python toolkit for analyzing blackbox logs, validating configurations, and tuning INAV flight controllers. Plug in your FC via USB - it pulls the config, downloads the blackbox, tells you exactly what to change, and gives you the CLI commands to paste.
|
|
4
4
|
|
|
5
5
|
Built for the INAV long-range community. Tested on 7" to 15" multirotors with GPS navigation, INAV 9.0.x.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
### Install
|
|
7
|
+
## Install / Update
|
|
10
8
|
|
|
11
9
|
```bash
|
|
12
|
-
|
|
10
|
+
git clone https://github.com/agoliveira/INAV-Toolkit.git
|
|
11
|
+
cd INAV-Toolkit
|
|
12
|
+
python3 -m venv .venv
|
|
13
|
+
source .venv/bin/activate
|
|
14
|
+
pip install -r requirements.txt
|
|
15
|
+
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
13
16
|
```
|
|
14
17
|
|
|
18
|
+
Or on Debian/Ubuntu, system packages:
|
|
19
|
+
```bash
|
|
20
|
+
sudo apt install python3-numpy python3-scipy python3-serial
|
|
21
|
+
```
|
|
15
22
|
Python 3.8+. `pyserial` only needed for direct FC connection.
|
|
16
23
|
|
|
24
|
+
> **Note:** If using a venv, activate it (`source .venv/bin/activate`) before running any commands below.
|
|
25
|
+
|
|
17
26
|
### Connect and Analyze
|
|
18
27
|
|
|
19
28
|
```bash
|
|
@@ -25,34 +34,34 @@ That's it. The tool will auto-detect your FC, pull the current config, download
|
|
|
25
34
|
### Output
|
|
26
35
|
|
|
27
36
|
```
|
|
28
|
-
|
|
29
|
-
Connected: NAZGUL 10
|
|
37
|
+
INAV Blackbox Analyzer v2.16.0
|
|
38
|
+
Connected: NAZGUL 10 - INAV 9.0.1
|
|
30
39
|
Pulling configuration (diff all)... 89 settings
|
|
31
40
|
Downloading 2236KB ... 204KB/s
|
|
32
|
-
Found 3 flights
|
|
41
|
+
Found 3 flights - analyzing best from latest config
|
|
33
42
|
|
|
34
43
|
TUNE QUALITY: █████████████░░░░░░░ 65/100
|
|
35
44
|
Noise:95 | PID:N/A | Motors:94
|
|
36
45
|
|
|
37
46
|
CONFIG:
|
|
38
|
-
Roll P= 32 I= 82 D= 32 (FC now: P
|
|
39
|
-
Pitch P= 35 I= 90 D= 35 (FC now: P
|
|
47
|
+
Roll P= 32 I= 82 D= 32 (FC now: P->35, I->75, D->28)
|
|
48
|
+
Pitch P= 35 I= 90 D= 35 (FC now: P->38, I->82, D->31)
|
|
40
49
|
|
|
41
50
|
NOISE SOURCES:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
50Hz motor imbalance on Roll/Yaw [medium]
|
|
52
|
+
128Hz motor noise on Pitch/Yaw [low]
|
|
53
|
+
187-437Hz (6 peaks) electrical on Pitch/Roll/Yaw [medium]
|
|
45
54
|
|
|
46
|
-
DO THIS
|
|
47
|
-
1. Lower dynamic_gyro_notch_min_hz: 50
|
|
55
|
+
DO THIS - 2 changes:
|
|
56
|
+
1. Lower dynamic_gyro_notch_min_hz: 50 -> 40
|
|
48
57
|
2. Consider enabling RPM filter
|
|
49
58
|
|
|
50
|
-
INAV CLI
|
|
59
|
+
INAV CLI - paste into Configurator CLI tab:
|
|
51
60
|
set dynamic_gyro_notch_min_hz = 40
|
|
52
61
|
save
|
|
53
62
|
|
|
54
63
|
CONFIG REVIEW:
|
|
55
|
-
|
|
64
|
+
[CRITICAL] Critical beeper warnings disabled - BAT_CRIT_LOW, RX_LOST
|
|
56
65
|
```
|
|
57
66
|
|
|
58
67
|
## Tools
|
|
@@ -62,7 +71,7 @@ That's it. The tool will auto-detect your FC, pull the current config, download
|
|
|
62
71
|
Decodes `.bbl` / `.bfl` blackbox logs natively in Python (no `blackbox_decode` needed) and produces actionable tuning recommendations.
|
|
63
72
|
|
|
64
73
|
```bash
|
|
65
|
-
# Connect to FC
|
|
74
|
+
# Connect to FC - pull config + download + analyze
|
|
66
75
|
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
67
76
|
|
|
68
77
|
# Analyze an existing log file
|
|
@@ -82,12 +91,12 @@ python3 -m inav_toolkit.blackbox_analyzer flight.bbl --history
|
|
|
82
91
|
```
|
|
83
92
|
|
|
84
93
|
**What it measures:**
|
|
85
|
-
- PID step response
|
|
86
|
-
- Noise spectrum
|
|
87
|
-
- Hover oscillation
|
|
88
|
-
- Motor balance
|
|
89
|
-
- Filter phase lag
|
|
90
|
-
- Config mismatch
|
|
94
|
+
- PID step response - overshoot %, tracking delay, settling time per axis
|
|
95
|
+
- Noise spectrum - identifies peak frequencies, classifies sources (propwash, electrical, motor imbalance), groups and ranks by severity
|
|
96
|
+
- Hover oscillation - RMS and peak-to-peak gyro during centered stick
|
|
97
|
+
- Motor balance - average load and saturation per motor
|
|
98
|
+
- Filter phase lag - total delay through the gyro/D-term filter chain
|
|
99
|
+
- Config mismatch - detects when the FC config has changed since the flight being analyzed
|
|
91
100
|
|
|
92
101
|
**What it outputs:**
|
|
93
102
|
- Terminal report with score, noise sources, specific CLI commands to paste
|
|
@@ -153,27 +162,28 @@ Handles MSP v2 framing, pipelined dataflash download (4-deep), CLI command/batch
|
|
|
153
162
|
```
|
|
154
163
|
1. NEW BUILD
|
|
155
164
|
python3 -m inav_toolkit.param_analyzer --setup 10 --voltage 6S
|
|
156
|
-
|
|
157
|
-
|
|
165
|
+
-> Conservative starting PIDs and filter settings
|
|
166
|
+
-> Paste CLI commands into INAV Configurator
|
|
158
167
|
|
|
159
168
|
2. SAFETY CHECK
|
|
160
169
|
python3 -m inav_toolkit.param_analyzer my_diff.txt --frame 10
|
|
161
|
-
|
|
162
|
-
|
|
170
|
+
-> Catches disabled beepers, failsafe issues, battery limits
|
|
171
|
+
-> Fix before flying
|
|
163
172
|
|
|
164
173
|
3. FLY
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
174
|
+
-> Enable blackbox logging (GYRO_RAW, MOTORS, RC_COMMAND)
|
|
175
|
+
-> Hover for 10s, then do deliberate roll/pitch/yaw sweeps
|
|
176
|
+
-> The analyzer needs stick inputs to measure PID response
|
|
168
177
|
|
|
169
178
|
4. ANALYZE
|
|
170
179
|
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
171
|
-
|
|
172
|
-
|
|
180
|
+
-> Downloads log, pulls current config, runs full analysis
|
|
181
|
+
-> Shows exactly what to change with CLI commands
|
|
173
182
|
|
|
174
|
-
5. APPLY
|
|
175
|
-
|
|
176
|
-
|
|
183
|
+
5. APPLY + REPEAT
|
|
184
|
+
-> Paste CLI commands, fly again
|
|
185
|
+
-> Tool auto-detects which flights use the new config
|
|
186
|
+
-> Flight database tracks your progression across sessions
|
|
177
187
|
```
|
|
178
188
|
|
|
179
189
|
## Frame Size Profiles
|
|
@@ -214,7 +224,7 @@ INAV-Toolkit/
|
|
|
214
224
|
|
|
215
225
|
## INAV Version Support
|
|
216
226
|
|
|
217
|
-
Developed and tested against **INAV 9.0.x**. The blackbox binary decoder handles the Cleanflight/INAV encoding format natively in Python
|
|
227
|
+
Developed and tested against **INAV 9.0.x**. The blackbox binary decoder handles the Cleanflight/INAV encoding format natively in Python - no external `blackbox_decode` tool needed. Parameter names are INAV-specific; Betaflight is not currently supported.
|
|
218
228
|
|
|
219
229
|
## Contributing
|
|
220
230
|
|
|
@@ -227,6 +237,6 @@ MIT License. See [LICENSE](LICENSE).
|
|
|
227
237
|
## Acknowledgments
|
|
228
238
|
|
|
229
239
|
- The INAV development team and community
|
|
230
|
-
- QuadMeUp (
|
|
240
|
+
- QuadMeUp (Pawel Spychalski) for filter and RPM analysis research
|
|
231
241
|
- The INAV Fixed Wing Group for modes documentation
|
|
232
242
|
- UAV Tech for the spark that gave me the idea to create this
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: inav-toolkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.16.0
|
|
4
4
|
Summary: Blackbox analyzer, parameter checker, and tuning wizard for INAV flight controllers
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/agoliveira/INAV-Toolkit
|
|
@@ -32,20 +32,29 @@ Dynamic: license-file
|
|
|
32
32
|
|
|
33
33
|
# INAV Toolkit
|
|
34
34
|
|
|
35
|
-
A Python toolkit for analyzing blackbox logs, validating configurations, and tuning INAV flight controllers. Plug in your FC via USB
|
|
35
|
+
A Python toolkit for analyzing blackbox logs, validating configurations, and tuning INAV flight controllers. Plug in your FC via USB - it pulls the config, downloads the blackbox, tells you exactly what to change, and gives you the CLI commands to paste.
|
|
36
36
|
|
|
37
37
|
Built for the INAV long-range community. Tested on 7" to 15" multirotors with GPS navigation, INAV 9.0.x.
|
|
38
38
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
### Install
|
|
39
|
+
## Install / Update
|
|
42
40
|
|
|
43
41
|
```bash
|
|
44
|
-
|
|
42
|
+
git clone https://github.com/agoliveira/INAV-Toolkit.git
|
|
43
|
+
cd INAV-Toolkit
|
|
44
|
+
python3 -m venv .venv
|
|
45
|
+
source .venv/bin/activate
|
|
46
|
+
pip install -r requirements.txt
|
|
47
|
+
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
45
48
|
```
|
|
46
49
|
|
|
50
|
+
Or on Debian/Ubuntu, system packages:
|
|
51
|
+
```bash
|
|
52
|
+
sudo apt install python3-numpy python3-scipy python3-serial
|
|
53
|
+
```
|
|
47
54
|
Python 3.8+. `pyserial` only needed for direct FC connection.
|
|
48
55
|
|
|
56
|
+
> **Note:** If using a venv, activate it (`source .venv/bin/activate`) before running any commands below.
|
|
57
|
+
|
|
49
58
|
### Connect and Analyze
|
|
50
59
|
|
|
51
60
|
```bash
|
|
@@ -57,34 +66,34 @@ That's it. The tool will auto-detect your FC, pull the current config, download
|
|
|
57
66
|
### Output
|
|
58
67
|
|
|
59
68
|
```
|
|
60
|
-
|
|
61
|
-
Connected: NAZGUL 10
|
|
69
|
+
INAV Blackbox Analyzer v2.16.0
|
|
70
|
+
Connected: NAZGUL 10 - INAV 9.0.1
|
|
62
71
|
Pulling configuration (diff all)... 89 settings
|
|
63
72
|
Downloading 2236KB ... 204KB/s
|
|
64
|
-
Found 3 flights
|
|
73
|
+
Found 3 flights - analyzing best from latest config
|
|
65
74
|
|
|
66
75
|
TUNE QUALITY: █████████████░░░░░░░ 65/100
|
|
67
76
|
Noise:95 | PID:N/A | Motors:94
|
|
68
77
|
|
|
69
78
|
CONFIG:
|
|
70
|
-
Roll P= 32 I= 82 D= 32 (FC now: P
|
|
71
|
-
Pitch P= 35 I= 90 D= 35 (FC now: P
|
|
79
|
+
Roll P= 32 I= 82 D= 32 (FC now: P->35, I->75, D->28)
|
|
80
|
+
Pitch P= 35 I= 90 D= 35 (FC now: P->38, I->82, D->31)
|
|
72
81
|
|
|
73
82
|
NOISE SOURCES:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
50Hz motor imbalance on Roll/Yaw [medium]
|
|
84
|
+
128Hz motor noise on Pitch/Yaw [low]
|
|
85
|
+
187-437Hz (6 peaks) electrical on Pitch/Roll/Yaw [medium]
|
|
77
86
|
|
|
78
|
-
DO THIS
|
|
79
|
-
1. Lower dynamic_gyro_notch_min_hz: 50
|
|
87
|
+
DO THIS - 2 changes:
|
|
88
|
+
1. Lower dynamic_gyro_notch_min_hz: 50 -> 40
|
|
80
89
|
2. Consider enabling RPM filter
|
|
81
90
|
|
|
82
|
-
INAV CLI
|
|
91
|
+
INAV CLI - paste into Configurator CLI tab:
|
|
83
92
|
set dynamic_gyro_notch_min_hz = 40
|
|
84
93
|
save
|
|
85
94
|
|
|
86
95
|
CONFIG REVIEW:
|
|
87
|
-
|
|
96
|
+
[CRITICAL] Critical beeper warnings disabled - BAT_CRIT_LOW, RX_LOST
|
|
88
97
|
```
|
|
89
98
|
|
|
90
99
|
## Tools
|
|
@@ -94,7 +103,7 @@ That's it. The tool will auto-detect your FC, pull the current config, download
|
|
|
94
103
|
Decodes `.bbl` / `.bfl` blackbox logs natively in Python (no `blackbox_decode` needed) and produces actionable tuning recommendations.
|
|
95
104
|
|
|
96
105
|
```bash
|
|
97
|
-
# Connect to FC
|
|
106
|
+
# Connect to FC - pull config + download + analyze
|
|
98
107
|
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
99
108
|
|
|
100
109
|
# Analyze an existing log file
|
|
@@ -114,12 +123,12 @@ python3 -m inav_toolkit.blackbox_analyzer flight.bbl --history
|
|
|
114
123
|
```
|
|
115
124
|
|
|
116
125
|
**What it measures:**
|
|
117
|
-
- PID step response
|
|
118
|
-
- Noise spectrum
|
|
119
|
-
- Hover oscillation
|
|
120
|
-
- Motor balance
|
|
121
|
-
- Filter phase lag
|
|
122
|
-
- Config mismatch
|
|
126
|
+
- PID step response - overshoot %, tracking delay, settling time per axis
|
|
127
|
+
- Noise spectrum - identifies peak frequencies, classifies sources (propwash, electrical, motor imbalance), groups and ranks by severity
|
|
128
|
+
- Hover oscillation - RMS and peak-to-peak gyro during centered stick
|
|
129
|
+
- Motor balance - average load and saturation per motor
|
|
130
|
+
- Filter phase lag - total delay through the gyro/D-term filter chain
|
|
131
|
+
- Config mismatch - detects when the FC config has changed since the flight being analyzed
|
|
123
132
|
|
|
124
133
|
**What it outputs:**
|
|
125
134
|
- Terminal report with score, noise sources, specific CLI commands to paste
|
|
@@ -185,27 +194,28 @@ Handles MSP v2 framing, pipelined dataflash download (4-deep), CLI command/batch
|
|
|
185
194
|
```
|
|
186
195
|
1. NEW BUILD
|
|
187
196
|
python3 -m inav_toolkit.param_analyzer --setup 10 --voltage 6S
|
|
188
|
-
|
|
189
|
-
|
|
197
|
+
-> Conservative starting PIDs and filter settings
|
|
198
|
+
-> Paste CLI commands into INAV Configurator
|
|
190
199
|
|
|
191
200
|
2. SAFETY CHECK
|
|
192
201
|
python3 -m inav_toolkit.param_analyzer my_diff.txt --frame 10
|
|
193
|
-
|
|
194
|
-
|
|
202
|
+
-> Catches disabled beepers, failsafe issues, battery limits
|
|
203
|
+
-> Fix before flying
|
|
195
204
|
|
|
196
205
|
3. FLY
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
206
|
+
-> Enable blackbox logging (GYRO_RAW, MOTORS, RC_COMMAND)
|
|
207
|
+
-> Hover for 10s, then do deliberate roll/pitch/yaw sweeps
|
|
208
|
+
-> The analyzer needs stick inputs to measure PID response
|
|
200
209
|
|
|
201
210
|
4. ANALYZE
|
|
202
211
|
python3 -m inav_toolkit.blackbox_analyzer --device auto
|
|
203
|
-
|
|
204
|
-
|
|
212
|
+
-> Downloads log, pulls current config, runs full analysis
|
|
213
|
+
-> Shows exactly what to change with CLI commands
|
|
205
214
|
|
|
206
|
-
5. APPLY
|
|
207
|
-
|
|
208
|
-
|
|
215
|
+
5. APPLY + REPEAT
|
|
216
|
+
-> Paste CLI commands, fly again
|
|
217
|
+
-> Tool auto-detects which flights use the new config
|
|
218
|
+
-> Flight database tracks your progression across sessions
|
|
209
219
|
```
|
|
210
220
|
|
|
211
221
|
## Frame Size Profiles
|
|
@@ -246,7 +256,7 @@ INAV-Toolkit/
|
|
|
246
256
|
|
|
247
257
|
## INAV Version Support
|
|
248
258
|
|
|
249
|
-
Developed and tested against **INAV 9.0.x**. The blackbox binary decoder handles the Cleanflight/INAV encoding format natively in Python
|
|
259
|
+
Developed and tested against **INAV 9.0.x**. The blackbox binary decoder handles the Cleanflight/INAV encoding format natively in Python - no external `blackbox_decode` tool needed. Parameter names are INAV-specific; Betaflight is not currently supported.
|
|
250
260
|
|
|
251
261
|
## Contributing
|
|
252
262
|
|
|
@@ -259,6 +269,6 @@ MIT License. See [LICENSE](LICENSE).
|
|
|
259
269
|
## Acknowledgments
|
|
260
270
|
|
|
261
271
|
- The INAV development team and community
|
|
262
|
-
- QuadMeUp (
|
|
272
|
+
- QuadMeUp (Pawel Spychalski) for filter and RPM analysis research
|
|
263
273
|
- The INAV Fixed Wing Group for modes documentation
|
|
264
274
|
- UAV Tech for the spark that gave me the idea to create this
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "inav-toolkit"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.16.0"
|
|
8
8
|
description = "Blackbox analyzer, parameter checker, and tuning wizard for INAV flight controllers"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|