|
Go Back
Robotics Stuff from Summer 2006
So yeah, I spent my sophomore-junior summer in the Robotics Percetion & Learning Lab at the National Taiwan University.
My first project is to implement fundamental visions and controls for a small robot (which is based on a remote control toy and a wireless web cam). I think the masters students in the lab did something similar for their advanced robotics class, since I've never done computer vision or controls stuff before, it's an interesting project for me to work on.
This is the robot, there you go, the web cam.
From a different angle.
Big thanks to Jim who modded the remote control to function with the PC via COM port.
This is the wireless receiver that receives the images captured by the web cam.
So the basic idea is... I tape the ground with tape, the wireless camera on the robot will capture the image of the ground and send this image back to the PC. The application running on the PC will convert this image to grayscale, apply binary threshold masking, apply canny (to find edges) and finally, apply HoughLines to find the line on the ground. From the slope of the line the application will determine whether the robot is to turn right, turn left or keep going straight.
Uncertainties & Difficulties:
It's based on a remote control toy car, so the control isn't very percise.
Speed of the robot - even at the lowest possible speed...the robot speeds off the track easily, and when that happens the track on the ground is no longer in the scope of the web cam.
Lighting - if the lighting changes then I'd have to reset the thresholds for Binary Masking and Canny.
The two tracks to test the robot on.
Here are some screenshots of the application I coded (given the hardware interfaces and libraries):
Application Running
Debugging On
As you can see: the command prompt window prints out the vision results and decisions of the robot; the top window allows me to adjust the computer vision thresholds and displays the image captured by the wireless camera; the bottom window shows the line fitting result.
Here are two runs that are (quite) successful:
on Track1
on Track2
Notes on the Implementation:
From the videoes you can see that the robot makes short pauses when the line is in scope so it has time to make corrections; when the line is out of scope, the robot will repeat the last action.
|