Mobile robot control toolbox for MATLAB and Simulink
Code name: Moroteco
Abstract: Given a ceiling-suspended look-down webcam, and 4x two-wheel robots, , write a program to control their position in a camera’s field of view. That is, write a set of programs that will control the motors of the robot to move towards the desired point in the camera’s FOV.
Challenge: The robots have a mostly dumb microcontroller with a radio module, communicating through a telnet-like interface with a radio module to a PC, running Simulink. Write:
- The software for the microcontroller
- The communication protocol
- The communication protocol implementation for the robot side
- The communication protocol implementation for the matlab side
- Software for the Matlab side is to be useable by future research projects; meaning, it has to be in a form of an installable toolbox, complete with robot simulation and test GUI
- The robot position recognizer module - takes video feed from the webcam and returns robot’s coordinates in the robot’s world coordinates. Note that back then, there were no neural network for image recognition. I have used classic Computer Vision techniques to find a pattern of lights unique to each robot (e.g. red, red, blue for robot 1, red, red, green for robot 2 etc.).. This pattern of lights enabled me to recognize location and orientation of each robot.
- Write documentation and a tutorial on how to use the simulink modules
- Package everything as an installable MATLAB/SIMULINK toolbox with integrated help.
Notable result: Project success: on scope, on budget, on time. The work contains a nice treatment of the problem of computing the precise velocity of the vehicle while at the low-limit of the optical encoder (that is, what happens if the optical encoder resolution is poor). This is because originally, the mobile robots that I have been given to work with, had 2-inch wheels, and an encoder with 2 impulses per rotation (!!!) and I was told to control the position of a group of these in a working area of approx. 3x3 meters (!!!).
Fortunatelly, after my report, the project supervisor asked the technican to deliver better robots, and in the end, the project was very successfull.
Awaiting more details: as of 2020-07, I have indeed found the original files and documentation of the work. I am planning to publish it here.