On an 6 kilograms octa-quad in Copter 3.5 we are having an issue with axes affecting each other.
Sending wide changes to roll and pitch simultaneously throws off the yaw axis by 20º to 30º, which goes back to its original position after 2 or 3 seconds of releasing commands.
All sensors were calibrated (IMU, compass, radio, ESCs) and PIDs were successfully set using autotune.
After a while we figured out what was wrong: a broken prop was replaced with one of another brand, that didn’t have exactly the same specs as the other ones. Getting all props to be the same fixed that particular issue with the yaw, but that wasn’t the only one.
We also figured that with bad props (too flexible, badly balanced) that induce a lot of vibrations the copter would randomly rotate on its yaw axis in LOITER. But we fixed that issue as well using good props.
The issue that remains and that we can’t get rid of looks a lot like a bug in the GUIDED mode.
We are controlling the drone’s attitude using the SET_ATTITUDE_TARGET message and sending quaternions, with the bitmask for the yaw set to absolute yaw angle (instead of yaw rate). The goal of that is to control the drone’s position around an object using a lidar.
The problem is that sometimes (often and randomly) the drone will rotate 20º to 40º on its yaw axis, throwing off position control. We checked and double checked, the yaw we are sending in the quaternion is constant. It really is Ardupilot drifting away from is setpoint. In the logs, the Yaw and DesYaw (that we believe is Ardupilot’s internal yaw setpoint) are totally desynchronised during the event.
I will post this issue in a separate topic, and possibly in a Github issue, as soon as I have the logs that go with it.