The new control system [with video of robot balancing]
So previously, the ballbot would attempt to stay at the same spot. Sure it worked, but it was very difficult to implement remote control. My only attempt of remote control involved sending the target coordinates over bluetooth to the ballbot. This meant that I was only really controlling the target position of the robot, not the target velocity.
Since then, I’ve taken quite a long break from this project; however, I’ve come back and completely changed the controller, and my changes have yielded promising results.
Here was the original control system
Position controller (PID) ↓ (output target roll/pitch) Roll/pitch controller (P) ↓ (output target motor power) Motor output
Here’s the system now
Position controller (PD) ↓ (output target velocity) ← computer/phone remote control ↓ (output target roll/pitch) Roll/pitch controller (P) ↓ (output target motor power) Motor output
Currently, the position controller is disabled so the target velocity is always zero. Even without the position controller, the robot does a good job at maintaining its position due to the integral term of the velocity controller.