Lego Mindstorms EV3 Gyroboy

Version 1.1 (45.1 MB) by Tim Hughes
Observer-based reference tracking feedback controller for the LEGO Mindstorms EV3 Gyroboy segway robot.
Updated 29 Oct 2019

Observer-based reference tracking feedback controller based on the standard LEGO Mindstorms EV3 Gyroboy segway robot build. Takes input from an Xbox One gamepad or keyboard.

This is joint work with Gareth Willetts and Jakub Kryczka.

The main Simulink files have been saved in MATLAB 2019a, and also exported to 2018a and 2017a formats.

To begin, refer to the file setup_guide.m on the GitHub repository.

Details of the project will appear in:
"LQG controller for the LEGO MINDSTORMS EV3
Gyroboy segway robot." by Timothy H. Hughes, Gareth H. Willetts and Jakub A. Kryczka. Submitted to the 2020 International Federation of Automatic Control World Congress.

KeyboardControl.slx: Simulink file for sending keyboard inputs to the Gyroboy robot.
setup.m: Matlab script for managing Simulink variants (for running on the EV3 or in simulation mode, and switching between pre-programmed and Xbox gamepad/keyboard input)
model.m: Matlab script with model parameters
gyroboy.mp4: Brief video of the Gyroboy robot in operation.
setup_guide.pdf: instructions for getting started.

MATLAB and Simulink files for various controllers are available in the following folders:
LQG_NPC: LQG controller.
LQG_WPC: LQG controller with pre-compensator.
LQG_IA_NPC: LQG controller plus integral action.
LQR_NPC: LQR controller
LQR_NPC_IA: LQR controller with integral action
OPP_NPC: LQR controller with observer designed using pole placement
PP_NPL: Pole placement controller

MATLAB and Simulink files for measuring model parameters are in the following folders:

MOTOR_TEST: for measuring LEGO EV3 motor parameters.
SENSOR_TEST: for quantifying the noise on the LEGO gyroscopic sensor.

Cite As

Tim Hughes, Gareth Willetts and Jakub Kryczka (2019). LegoMindstormsEV3 (, GitHub. Retrieved June 18, 2019.

MATLAB Release Compatibility
Created with R2019a
Compatible with R2017a to R2019a
Platform Compatibility
Windows macOS Linux
Tags Add Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes

Added several controller designs to the GitHub repository


Updated image


Added image (courtesy of Millie Papworth)


Edited description and added Acknowledgments


Included website


To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.