Kugle - Modelling and Control of a Ball-balancing Robot
Author
Jespersen, Thomas Kølbæk
Term
4. term
Education
Publication year
2019
Submitted on
2019-04-23
Pages
281
Abstract
Denne afhandling udvikler en ikke-lineær model og en robust styring til en robot, der balancerer på en enkelt kugle ved hjælp af tre omnihjul (hjul med ruller, der muliggør bevægelse i alle retninger). Modellen bygger på kvaternioner, en kompakt matematisk måde at beskrive orientering i 3D, og er udledt med Lagranges mekanik. Kravet om, at kvaternionen har en længde på 1, håndhæves med en Lagrange-multiplikator. Modellen bruges til at designe en sliding mode-regulering (en robust styringsmetode) til at stabilisere robotens orientering. Regulatoren sammenligner en kvaternion-baseret fejlfunktion med ønsket orientering og en reference for vinkelhastighed. To forskellige glideoverflader foreslås og sammenlignes i simulation. Regulatoren implementeres og verificeres både i simulation og på en 16 kg prototype, Kugle V1. Den kører på indlejret firmware sammen med to udvidede Kalman-filtre (EKF’er) til at estimere henholdsvis orientering (kvaternion) og hastigheder. Et Vicon bevægelsesfangstsystem bruges til at validere simulationsmodellen mod praktiske målinger. Systemet kan følge kontinuerligt varierende referencer med en sporingsfejl under 1 grad op til 1 Hz. Regulatoren testes desuden i en kaskade: først en hastigheds-LQR, derefter en shape-accelereret baneopfølgende MPC, der genererer kvaternion- og vinkelhastighedsreferencer og muliggør positionhold, hastighedssporing og baneopfølgning. Referencer op til 1 m/s og 1 rad/s afprøves og kan spores i praksis. Afhandlingen konkluderer, at en kvaternionmodel kan udledes og bruges effektivt til styring af en kuglerobot, selvom den gør teorien mere kompleks og vurderes unødvendig inden for robotens normale arbejdsområde. Alt materiale, herunder MATLAB-kode, simulationer, ROS-drivere og den indlejrede firmware, er open source og tilgængeligt på GitHub.
This thesis develops a nonlinear model and a robust controller for a robot that balances on a single ball using three omniwheels (wheels with rollers that allow movement in any direction). The model uses quaternions, a compact mathematical way to represent 3D orientation, and is derived with Lagrangian mechanics. The unit-length constraint on the quaternion is enforced via a Lagrange multiplier. This model is then used to design a sliding mode controller (a robust control method) to stabilize the robot’s orientation. The controller relies on a quaternion-based error function combining the desired orientation and an angular velocity reference. Two sliding surfaces are proposed and compared in simulation. The controller is implemented and verified both in simulation and on a 16 kg prototype, Kugle V1. It runs on embedded firmware alongside two extended Kalman filters (EKFs) that estimate the quaternion (orientation) and velocities. A Vicon motion capture system is used to validate the simulation model against practical measurements. The system can track continuously changing commands with less than 1 degree error up to 1 Hz. The controller is further tested in a cascaded setup: first a velocity LQR, then a shape-accelerated path-following MPC, which generate quaternion and angular velocity references and enable station-keeping, velocity tracking, and path following. Reference commands up to 1 m/s and 1 rad/s are tested and can be tracked in practice. The thesis concludes that a quaternion-based model can indeed be derived and used effectively for ballbot control, even though it complicates the derivation and is considered unnecessary within the normal operating envelope. All materials, including MATLAB code, simulations, ROS drivers, and the embedded firmware, are open source and available on GitHub.
[This abstract was generated with the help of AI]
Keywords
kugle ; ballbot ; ball-balancing robot ; robot ; sliding mode ; non-linear ; quaternions ; control ; shape-accelerated ; mpc ; lqr ; omniwheels ; kinematics ; lagrangian mechanics ; lagrange multiplier ; euler-lagrange ; stm32 ; acado ; matlab ; simulink ; ros ; gazebo
Documents
