Machine vision updates

|
After having tinkered with MATLAB for quite a bit of time since last week, I've gotten to a point where most of the programming involves optimizing the code for trajectory following. Initially I came up with a bare bone architecture for path following and obstacle avoidance. Currently I've been working with making a more robust system for tracking the edges of the traversable path and thereby determining a corresponding trajectory for the vehicle.

Here is an overview of my progress in the past week.

[+] Used RoboRealm (RR) to setup a robust vision scheme for optimally tracking the edges of a traversable region and finding each of their corresponding slopes for further application development.

- This first image shows a snap of a video feed that is filtered with RR using a couple of its inbuilt filters. (Picture - Right)








- A color threshold is added to the above image to obtain a video feed that only shows the path that has to be traversed. (Picture - Left)











- A Convex hull algorithm is added to the above setup to obtain continuous curves and edges. This allows an easier implementation of edge finding and allows faster image processing in MATLAB which will be explained later in this post.
(Picture - uhmm.. You should have figured it out by now)








- An outline of the convex hull algorithm.
(Picture - Oh, cmon. Are you kidding me?)











- Hough transform extracted from the above image. This image is grabbed by MATLAB with the use of MEX functions from the Roborealm API server (still need to figure out how to do this. Please let me know if any of you have any clue).Currently, its just an image read from the local disk.

[+] A MATLAB algorithm that efficiently finds the midpoint of the two edges and thereby creating a smooth trajectory for the vehicle to follow. The m-file uses a hough_eqn function that is also a user defined function which finds the equation for the hough edges using the data that is provided by Roborealm such as x,y coordinates of the endpoints of each line.
(The algorithm is still in beta testing mode and will be uploaded once completed.)

The midpoint trajectory algorithm is quite efficient primarily because the all the pixels in the image are not accessed. This is because, with a given set of coordinates for the continuous lines (they have to be continuous otherwise the algorithm will be inefficient) the algorithm determines the possible pixels that contain the lines and thus eliminates unwanted access of pixels that don't contain any information about the edges. Although accessing each and every pixel in the image is eliminated, an additional task of finding slopes of the hough lines is added to predict the direction and location of the lines. However, this additional information (slope of the lines and location) will help the vehicle to determine how straight its trajectory is with respect to the path.

[+] Another progress I've made over the week involves coming up with a crude method for obstacle detection purely based on vision. Further info shall be provided in the next post. Please leave me comments if you would like a more detailed explanation of any of my algorithms or any particular aspect for that matter.

1 comments:

Unknown said...

it's all very interesting. and please give more details.