Garbage attitude control
-
Hi,
I have integrated the VOXL2 onto a standard carbon-fibre drone frame, roughly 400mm between diagonal motor mounts. This frame has been flown many times with Betaflight and Pixhawk flight controllers and always flies beautifully.
The VOXL2 is performing awfully. I initially loaded on m500 PIDs and it couldn't even take off without shaking violently. I detuned the gains down to almost nothing before it would stop oscillating. I can coax the thing into the air now, but the gains are so low that disturbance rejection is terrible and it's just sloppy. It's impossible to tighten the gains without it shaking itself apart.
I originally had the VOXL2 hard-mounted, but then I tired mounting it with 2 different levels of foam. Neither worked. Here's the kicker - I set it up to use a Pixhawk 4 as external controller and it flew b-e-a-utifully straight away on default PIDs.
I have tried two different VOXLs and they both perform the same. The oscillations are present in both Stabilize and Acro mode, so the Rate loop is to blame.
For context, I have 10 years of experience tuning PX4, Ardupilot and Betaflight controllers on aircraft from 20g to 200kg, so this isn't 'how do I tune the PIDs?', rather 'what am I missing?'.
Normally when I see this kind of behaviour, it's caused by vibration, but looking at the 'vibe' meter on QGC, X and Y vibe is non-existant, and Z vibe about 5% of the clipping threshold.
So what am I missing?
We just completed a remote flight with telemetry controlled by the VOXL2 over VPN, I controlled it from 20km away so I'm pretty happy right now, but it would be even better if we could eliminate the external flight controller.
Thanks,
Patrick -
Which ESCs are you using? The ModalAI ESC is closed loop RPM control for efficiency and requires its own calibration to the motors and propellers
https://docs.modalai.com/modal-esc-v2-manual/#calibration
https://gitlab.com/voxl-public/flight-core-px4/voxl-esc/-/blob/master/tools/calibration.md -
Thanks for the quick reply, Chad!
We're using a standard 4-in-1 racing ESC on PWM. We have a 6S battery so we couldn't use the ModalAI ESC but I've just ordered some of your new T-motor F55As. -
Then it sounds like you're using the M0065 VOXL 2 I/O board with it to generate PWM? If so, have you tried calibrating those ESC? https://docs.modalai.com/voxl2-io-user-guide/#pwm-esc-calibration
Otherwise, it still sounds like platform tuning... Can you copy the working parameters from your Pixhawk over?
-
@Chad-Sweet yep, we're using the I/O expander. We calibrated the ESC and and tried with the pixhawk's gains too, and it was still unflyable. Again, I have plenty of experience tuning PIDs, and nothing I could do could make this stable. Would it help if I uploaded some logs?
-
Yes, of course. logs.px4.io is a good way
-
Another thought... Did you configure the mixer using these docs: https://docs.modalai.com/voxl2-io-user-guide/#supported-mixers-and-airframe-setup
And then did you disable the modal_esc driver?
-
@Chad-Sweet I am also having same issue. Can you please tell what is modal_esc driver? How to disable it ?
-
Hmm, that's really interesting. Looking back at the parameters from those tests, the UART_ESC_CONFIG was set to 1. I'll set it to 0 and see what happens.
@Tamas-Pal-0 go into qgroudcontrol parameters and set UART_ESC_CONFIG to 0. please post your results! -
Guys, I'm actively looking at this and will report what I find, it's my top priority.
-
Thank you @modaltb , much appreciated. I look forward to your findings. I disabled the modal_esc driver and it didn't help. Here is a log of the VOXL as flight controller, and one with a Pixhawk 4 as flight controller, with identical parameters. Both were mounted to the aircraft the whole time, all we did was swap wires around between flights.
Obviously there's still room for improvement with the Pixhawk 4 but for the most part it flew really well with default PID gains, whereas we couldn't even get the VOXL2 stable.VOXL2:
https://logs.px4.io/plot_app?log=25afc87c-37cd-4693-9318-df62be99e4bdPixhawk 4:
https://logs.px4.io/plot_app?log=4b8a4762-8f59-49ca-a7fc-af41d38c466b -
@Patrick-Hinchey I also have same experience like you. After disabling modalai_esc driver. I set UART_ESC_CONFIG to 0 also. It didn't help.
-
I'm still actively looking into this! One area that caught my eye is here:
https://github.com/modalai/px4-firmware/blob/voxl-dev/boards/modalai/rb5-flight/voxl-px4.config#L187
Out testing has been on a Sentinel setup and am wondering if there's some settings not propagating correctly.
This file can be edited on target to adjust, I'm going through some testing now.
-
I saw something similar with PX4 version 1.13.1; I don't have a VOXL2, but I had an issue where with VOXL 1 Flight Deck with PX4 1.13.1 did not work well for me on a standard airframe.
I downgraded to 1.11.3 sub-version 0.2.3 - I think this is a Modal AI sub-version? - and had better luck, maybe try an earlier version of px4
-
No smoking gun, but here's a commit I have going that uses params instead of hard coded values that we could give a try.
https://github.com/modalai/px4-firmware/commit/a0317b59e72eeb90126788e71093726dafe70708
File changed is here: https://github.com/modalai/px4-firmware/blob/pr-m0065-mr1/boards/modalai/rb5-flight/voxl-px4.config
On monday, I did fly the default Sentinel params with this VOXL2 IO board, it oscillated like crazy and we did a quick dirty tune and got it reasonable.
I'm going to request that we do a full tune on our Sentinel here to ensure we can get same perf as expected with this setup so we have a ground truth. Will report back when I have info.
-
Also, any chance you could post a link to a video of a flight to help us understand the failure mode even more?
-
Thank you for looking into this.
Here is a video
https://drive.google.com/file/d/1qPXFrxluE-MyOOpnfHQJ5eT4XOLYvGNu/view?usp=share_link
I'll try with the new config file tonight. However the Pixhawk4 parameters are very similar - min=1075, maz=1950 so I would be surprised if that mad all that much difference.
Also, regarding tuning the VOXL2, I'm curious to hear your opinion on why the same gains on the same machine would work great on the Pixhawk4 but not on the VOXL2. The Pixhawk4 is running the latest stable release -
Hey @Patrick-Hinchey ,
Thanks for the video, I'm gonna get some teammates to help early this week who are much more versed in this area.
Here's my setup, it's VOXL2 with VOXL2 IO, as you can see it's flyable but a little rough, I too initially had a wobble that prevented me from flying and changed params a bit from our default Sentinel settings to get it airborne:
https://www.youtube.com/watch?v=1INto92k-v0I'll get some members of the team early this week to better answer your second question and we'll keep cranking away.
-
Hi @Patrick-Hinchey, we are actively working on figuring out the answer your question about "why the same gains on the same machine would work great on the Pixhawk4 but not on the VOXL2." There are several differences between the PX4 code running on VOXL2 compared to Pixhawk4. Specifically, the path of the PWM commands to the motors including the px4io setup is different on VOXL2 compared to Pixhawk4. Additionally, VOXL2 uses a different IMU than Pixhawk4 and that IMU is configured differently. We will keep you posted on what we are able to figure out.
-
I hope all is well!
I'm sorry you're dealing with this - I know it can be frustrating.
I'm jumping here a little late and may have missed something. I was wondering, can you confirm that you have the correct motor mapping:
Also, were you able to successfully run through a PWM ESC calibration using these Instructions? Which specific ESCs are you using? Did you hear the expected chimes (maybe firmware not accepting)?