Motion Control

A Dive into robot motion control theory and application


Many robotics projects involve controlling a car-like robot to accomplish some task. Examples include our Micromouse, Line Follower, and Sumo projects.

While each robot has different characteristics and is destined to accomplish a different goal, one thing is the same. They all have wheels. They all need motion control.

Often times in computer science, we find that many projects have the need to solve a similar problem, yet each project has been developing its own solution. This indicates duplicated or “wasted” effort, because the projects could be sharing code where their tasks overlap.

The goal of the Motion Control project is to study control theory surrounding car-like robots, to identify common elements and concepts surrounding these robots, and then to develop a practically useful library or “toolkit” for a potentially large audience. We want to develop a robust and easy to use strategy for getting a car-like robot up and running, so that the developer can quickly and effectively move past the task of motion control and continue on to solving the larger high-level problem (such as following a line or solving a maze).

This project involves a fairly wide scope of skills and knowledge:

  • C++ programming, compilation, libraries
  • Version control (git)
  • PID, feed-forward, and self-tuning control theory
  • Adaptability to feedback from unknown sources
  • Physics surrounding linear and rotational motion
  • Mechanical and electronic design
  • Use of diverse computer systems (Arduino, Raspberry Pi, UNIX, Windows...)

As a proof of concept, we would like to design three physically and electronically diverse robots and then load the same program onto each one, demonstrating how our project might adapt to different robots. Above all, we’re here to learn.