Hi!
I am trying to build a vtol platform with Pixhawk 6c from Holybro and using PX4 1.16.
Firstly i have been focusing on building the drone part of the platform as i am using 4 static motors for the drone functions, and one pusher motor for the “plane” flying.
I have now gotten stuck in a problem where my drone is oscillating / vibrating. Firstly i though it could be vibrations from the motors going into my pixhawk and ruining the sensor values / regulator. Therefore i mounted it on a anti-vibration rubber mount, this however did not improve the performance. This made me look more into logging and activated more logging options and follow the “vibration isolation” and “Log Analysis using Flight review” guides from PX4. I can clearly see that the drone is vibrating more than it should from the guides. However i can see some weird motor commands where the motor outputs goes between 0-100 continuously, shown in this log:
I went back to the lab to try to see if there was an issue with communication between the pixhawk and esc (secure e70 G1 combined with T-Motors MN5008 antigravity 400kv, 6s LiPo and T-Motors 15x5 CF props)
The pixhawk is setup to use DShot300 from FMU PWM (AUX) port, when i try to use the actuator test inside QGroundcontrol the motors can go from 0-100% without any issue and no vibration in the drone when it is sitting on a table without the props. However, when i connect the remote and try to run the motors in manual mode without propeller the motors instantly start to vibrate and behave weird. Its like they go to zero and back to speed and then vibrates from this.
Any tips to what can be the reason for the weird motor outputs and why i can run them smoothly in actuator testing but not in manual mode?
As seen in the logs you have extremly high vibbrations, You’re having ±100 deg/s in noise in the estimated rates from the gyro. It’s no wonder it can’t regulate correctly
You can see it becoming a bad loop, noisy input => noisy output commands => even more noisy input, etc. The motor commands are going from 0-100-0% very rapidly
You’ve included high rate logging which is good, that means you can se at what frequencies you are having problems.
Seems like you have a 2 bladed prop which makes the 2nd harmonic at ~40Hz the worst.
You’re filtering parameters are sub optimal since you have IMU_GYRO_CUTOFF = 40Hz so all the noise is going through, only the higher harmonics are attenuated.
I would suggest:
- Make sure your frame is as rigid and stiff as possible
- More software filtering, preferably Dynamic notch filtering if you can, it not decrease the low pas filters.
IMU_GYRO_CUTOFF = 20Hz, IMU_GYRO_CUTOFF = 12 Hz, IMU_ACCEL_CUTOFF = 10Hz. This will make it slower to respond to actual movement but since it cannot even fly with the current settings these will help.
Thank you for the feedback! I was wondering if this could be result of bad regulation loop, and it certainly was.
I did two tests with change in the filter values, this made the drone able to fly.
First test i turned down the filter values and this made the drone fly but still vibrating.
IMU_DGYRO_CUTOFF = 20Hz
IMU_GYRO_CUTOFF = 25HZ
Second test i turned the filter values even further down and this made the drone stable and not visualy vibrating.
IMU_DGYRO_CUTOFF = 15Hz
IMU_GYRO_CUTOFF = 20HZ
I greatly appreciate your feedback as this clearly helped, i will now try to further make my frame as stiff as possible. This is quite a large drone with 60cm distance between front and back motors and 52 cm distance between the different side motors. I am using 2 bladed CF props from T-Motors and motor at 400kv with 6s LiPo.
Would you recommend to further move down the filter cutoff? Or should focus on dynamic notch filtering.
I wonder also if the PID values are to aggressive for my drone and make it very sensitive for vibrations from the motors.
I would not recomend going to much lower than 20Hz LP filter. The lower you go, the slower the drone will be to react to disturbances and if it’s too slow it can become unstable.
The best way to combat this is a good frame which doesn’t propagate low frequency vibrations, e.g stiff frame.
I would recomend you try to get dynamic notch filtering going if you want to get higher performance, it requires ESCs that support it. I would recomend using CAN protocol if you have the ESCs out on the arms. If you have them close to the FC you can use DSHOT, which is very fast and high data rate. But it doesn’t work very well at long cable lengths.