I've been having a strange issue lately where trying to control a drone we've built with the Voxl Flight Deck (VFD) is unable to takeoff correctly in offboard mode.
The context is: I'm working on an indoor use case and have been testing both the Seeker and an in-house drone built with the VFD for our target use case. I am using an autonomy stack implemented in ROS which uses mavros to control the drone in offboard mode.
Previously, we used a pixhawk-based flight controller running v1.12.3 of the px4firmware and there are no issues.
In our current tests, I have tested the same ROS autonomy stack with both the Seeker and the VFD-based drone.
What I have found is the Seeker can takeoff and fly the mission no problem, but when the VFD tries to takeoff, it seems to hit an "invisible ceiling" where it tries to take off to 1m - I can see the setpoint in the flight logs - but at around 1-2' off the ground, the drone rapidly decelerates, levels off, then begins to descend.
Some observations I have when it does this:
- The flight mode is remaining in offboard, and the setpoints we stream at 20Hz to the fcu are not dropping
- We have tried different hover thrust values in the px4 firmware, nothing changed
- We are running v1.12.3-0.0.9 from the modal ai github, because we are using a rangefinder for altitude estimate and in 1.11.3 version of px4 firmware there was a bug with the fusion for altitude estimate that eventually was fixed in 1.12.0+.
- The same issue happens in v1.11.3, plus there is also altitude estimate issues with that version (in general I don't use VIO for altitude estimates given they ten to be less reliable than an old-fashioned range finder if you can fit it
- The same software works fine with Seeker
- We've tried different controller tunings as well and whether the velocity or position control is aggressive or loose we see this behavior.
Here are some flight review charts:
Here's a snippet from the second link which I think illustrates the point a bit:
You can see a setpoint is set in z-axis position - we don't use velocity or acceleration setpoints, only position and yaw - and the drone doesn't achieve the z-axis setpoint. Altitude levels out around 0.8m and then I have to switch to land as we need to abort the mission. Any comments or ideas on what to look into would really be appreciated! There's only so much I can include in this initial post but I can follow up with more details in the comments.