A comment was made in the ConVEX thread about gyro stability and the effect of running motors on the gyro output. I did a very quick test before work today and confirmed that I could see the same problem, support the robot on something so the drive can be run without moving and the gyro reading changes when it shouldn’t.
The first thought was that the drop in battery voltage when under load may be causing this, a quick test using a bench power supply showed that this is not the case.
I had proposed some other possible causes, vibration, motor wiring cross talk or motor magnetic field influence. Testing for improvement is pretty easy so I did a couple of further experiments.
This is the usual placement of the gyro on the “Open source robot”
With the robot supported on a couple of storage boxes above the ground, if the drive is run the gyro drifts.
First modification to see if vibration is the cause, mount the gyro on some rubber couplers.
This showed minor but not significant improvement.
Second modification, gyro moved to the top of the robot and isolated using rubber couplers.
This shows significant improvement, but, is that because the gyro has moved away from the drive motors or is there less vibration?
So I moved the experiment to a bench system consisting of the gyro and one motor. The code used was the same as on the robot (written using ConVEX).
I ran the motor and moved it around the gyro, it seems to have no effect. If I touch the base supporting the gyro with the motor running I see a similar error to that which I saw on the robot.
So my conclusion based on these simple tests is that vibration created by the motors running is the cause of some gyro drift, moving the gyro away from the source of the vibration and isolating it using rubber couplers helps. I have no idea if this significantly effects the gyro accuracy when actually running the robot on the ground.
Has anyone else experienced this?