# Introducing PID-Wise: interactive PID tuning from a logfile

**URL:** <https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449>\
**Category:** PX4 Autopilot\
**Created:** [September 3, 2026, 1:51pm UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449 "2026-09-03T13:51:40Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Romain\_Chiappinelli](https://discuss.px4.io/user_avatar/discuss.px4.io/romain_chiappinelli/32/6089_2.png) [@Romain\_Chiappinelli](https://discuss.px4.io/u/Romain_Chiappinelli)\
**Post date:** [September 3, 2026, 1:51pm UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449/1 "2026-09-03T13:51:40Z")

</div>

Hi everyone,

Sharing a cool tool we’ve built at Altitude R&D: PID-Wise. Upload a .ulg (PX4 v1.12+) and get step response and curve fitted model with interactive PID tuning — see the effect of a gain or filter change before you flash it.

Supports standard multicopters and ArduPilot .bin (4.0+).

Quick [demo](https://youtu.be/_92UhSbC1kI?si=9vUvL233SlD4H2x4)

Try it at [Altitude R&D Chiappinelli - PID-Wise](http://www.altitude-rd.com/pid-wise)

Still early days — genuinely want feedback, bugs, and edge cases. Happy to here your first impressions.

![pid-wise](https://discuss.px4.io/uploads/default/original/3X/1/1/11312a7e94502435ff10b52842420a618635364d.gif)

Intro codes through end of Sept if useful: TEST50 (50% off 7-day), KICKOFF20 (20% off monthly/yearly).

---

<div class="post-metadata">

**Author:** ![yigitcan-ozturk](https://discuss.px4.io/user_avatar/discuss.px4.io/yigitcan-ozturk/32/22039_2.png) [@yigitcan-ozturk](https://discuss.px4.io/u/yigitcan-ozturk)\
**Post date:** [October 3, 2026, 4:32pm UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449/2 "2026-10-03T16:32:08Z")

</div>

Looking at the full animation rather than a single frame changes the interpretation a bit. The fitted roll model appears to match the measured step response reasonably well after fitting (`M/I ≈ 1179`, motor time constant ≈ `12.4 ms` in the shown fit).

The larger excursions in the flight trace also appear to contain substantial commanded rate changes, so I would be cautious about interpreting those peaks as rate-controller instability from this plot alone.

What I would check next is whether the fitted model remains consistent across several clean excitation intervals and different thrust levels. If the identified `M/I` or effective motor time constant changes substantially with operating point, a single fitted model may hide that dependency.

It would also be useful to compare the rate setpoint, measured angular velocity, actuator/control-allocation output and saturation status around one clean excitation.

If the ULog is available, that would make it possible to distinguish model-fit error from actuator saturation or an operating-point-dependent response.

---

<div class="post-metadata">

**Author:** ![Romain\_Chiappinelli](https://discuss.px4.io/user_avatar/discuss.px4.io/romain_chiappinelli/32/6089_2.png) [@Romain\_Chiappinelli](https://discuss.px4.io/u/Romain_Chiappinelli)\
**Post date:** [October 14, 2026, 11:28am UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449/3 "2026-10-14T11:28:28Z")

</div>

Hello and thanks for your review.

Motor saturation is already displayed as orange box over the plot, as shown in the following figure. The idea is to select a portion free from saturation for curve fitting.

Regarding operating points at different thrust level, are you thinking of adding a payload to the vehicle? In the case the M/I might change slightly by the added mass and therefore added inertia.

 ![motor_sat](https://discuss.px4.io/uploads/default/original/3X/a/c/acafc2df3fbfb311f665542d7f25c5a7e02497f6.png)

---

<div class="post-metadata">

**Author:** ![yigitcan-ozturk](https://discuss.px4.io/user_avatar/discuss.px4.io/yigitcan-ozturk/32/22039_2.png) [@yigitcan-ozturk](https://discuss.px4.io/u/yigitcan-ozturk)\
**Post date:** [October 14, 2026, 12:00pm UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449/4 "2026-10-14T12:00:00Z")

</div>

Hi Romain,

Thanks for the clarification. I had not accounted for the orange saturation regions already shown in PID-Wise. Excluding those intervals from the fitting process makes sense.

Regarding the operating point, I was not necessarily referring to adding payload.

I was thinking primarily about different collective thrust levels on the same vehicle, with unchanged mass, inertia and hardware configuration.

Even without a payload change, the effective relationship between motor commands, rotor speeds and generated torques can vary with the operating point.

For that reason, I would be interested in whether the fitted M/I coefficient and motor time constant remain reasonably consistent when you select several clean, unsaturated excitation intervals at different collective thrust levels.

A simple comparison could be:

- Select low-, medium- and high-thrust intervals from the same flight.

- Exclude saturation and major transients unrelated to the excitation.

- Fit the model independently in each interval.

- Compare the identified parameters and, ideally, their ability to predict responses in the other intervals.

If the fitted parameters remain stable, that would support using a single model across those operating points. If they differ significantly, it could reveal an operating-point dependency or a limitation of the identification model.

Adding payload would be a separate experiment because it can also change the vehicle inertia.

I think this could be an interesting validation feature for PID-Wise, especially when assessing how representative a selected fitting interval is of the wider flight envelope.

Best regards,  
Yiğitcan Öztürk  
PAMILANGA LTD

---

<div class="post-metadata">

**Author:** ![gfLv\_amov](https://discuss.px4.io/user_avatar/discuss.px4.io/gflv_amov/32/21809_2.png) [@gfLv\_amov](https://discuss.px4.io/u/gfLv_amov)\
**Post date:** [October 16, 2026, 9:17am UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449/5 "2026-10-16T09:17:10Z")

</div>

How do you use this tool?

---

<div class="post-metadata">

**Author:** ![Romain\_Chiappinelli](https://discuss.px4.io/user_avatar/discuss.px4.io/romain_chiappinelli/32/6089_2.png) [@Romain\_Chiappinelli](https://discuss.px4.io/u/Romain_Chiappinelli)\
**Post date:** [October 21, 2026, 2:35pm UTC](https://discuss.px4.io/t/introducing-pid-wise-interactive-pid-tuning-from-a-logfile/49449/6 "2026-10-21T14:35:46Z")

</div>

To use the tool, you need to upload a logfile. Then click on the upper right corner on “MC PID Wise” button. The coming page has a lot of documentation in between the graphs, that I invite you to read.

 ![image](https://discuss.px4.io/uploads/default/original/3X/4/5/457a0b710c43345ab86a46d76f8198514727e201.png)

The most used feature is the step response for the roll and pitch axis: zoom in the roll angle graph to selected a portion of the flight with roll inputs and without saturation, this updates the step response. You can curve fit the step response model using the curve fit button.

 ![image](https://discuss.px4.io/uploads/default/original/3X/6/6/668cdcf515de050f37e5912e73d567a6de1a4d01.png)

 ![image](https://discuss.px4.io/uploads/default/original/3X/f/0/f09a582b8fb9f1196d0d831a3c00fd754d2f2baf.png)

In the paid version, sliding the PID gain sliders allows you to predict the shape of the step response using this curve fitted model. This is used to tune multicopter for a fast/sharp response with minimal response and minimal motor saturation
