Ballbot balancing with new control system!

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.