Lane departure systems terrain finding

|
After a very lethargic week, I've propped myself right back up into 5th gear. It took me some time to convert the strings from RR (mainly from the hough line data) into sensible data so that they could be used for further processing in MATLAB. The data goes into MATLAB as hough_lines and are used by some specific systems that I'm currently working on such as a lane departure system(its quite interesting how the same system* is implemented in the Lexus LS460** and Citroen***). Furthermore, they will also be used to compute different elements to facilitate splitting the video feed into various ROI's (Regions of Interest) which would allow for easier computation by reducing the total number of pixels for image processing.

Here's the plan.

The lane departure system and terrain finding will be split into several different systems. First, we deal with the visual feed and how we can interpret the data into sensible data for lane and terrain detection.






[+] With the visual feed, I plan to split it into 3 different ROIs.








[-] The first one (ROI1) will occupy the lower area of the video feed spanning from the bottom till y = 60 pixels. This area calls for impulse reactions from the car and hence I chose to implement a center of mass (COG - Center Of Gravity module in RR) calculation so I can figure out where exactly center of the road lies.




[-] The second one (ROI2) occupies a dynamic area which changes based on certain hough characteristics. The area is dynamic since 'ycrop' which defines the lower bound of this region is a variable which changes with time. This variable is retrieved from the hough transforms created by edge detection of horizontal lines or those that are angled between -15 and 15 degrees. The higher point of the hough line that satisfies this condition is taken as ycrop. Here's an example of how the hough transforms and the region will look like.



[-] The third region will occupy most of the area spanning from the bottom till ycrop, the dynamic cropping variable previously mentioned. Here most of the hough transforms will take place and this will allow to predict the direction of the upcoming terrain and align the car accordingly. One obstacle that I encounter is that the hough transforms give me skewed results with the change in light intensity. This can be corrected by extending the hough transforms formed by the lanes to intersect within a bounding box. Through this, the significant('base') hough lines can be determined. Any other hough line will be disregarded. Here's yet another picture to illustrate it. NOTE: This is applicable only to considerably straight roads.

The combination of these 3 regions and their computations that would take place will provide a reasonably robust system for lane detection and car alignment or maneuvering if you will.

So far its been nothing but spending 8-10 hours in front of the computer trying to figure out how to relay data between MATLAB, Roborealm and the C++ code. I should have a working model by the end of next week with another week of coding the AI where the RC car would run solely on vision. With just hough transforms and center of gravity modules the car should be able to encounter curved terrain as well as road edges so that it keeps itself within the terrain. I'm gonna meet up with my professor, Ryan Eustice (I have to say, great guy. Really helpful.) later today and will possibly establish that I would want to start up a project of my own. The plan is to start small so that most of my ideas are implemented before it gets mixed up in a larger crowd of people. In terms of the demographics, I hope to have people from different fields of expertise such as computer engineering, electrical engineering and mechanical engineering. Maybe its a bit too early to be dreaming about my a student group led by me but its a worth a try.

Adios

* The system mentioned is Lane Departure Warning System (LDWS) , LDWS@cnet-review
** The Lexus LS 460 LDWS a.k.a Lane Keeping Assist
*** Citroen's LDWS

2 comments:

chardson said...

did you use my (simple) suggestion for the string decoding, or did you find something better?

what would you actually do in this magic project led by you, anyway?

Sudeep Pillai said...

Yeah..realized that string decoding doesn't require too much processing time. So ended up using a piece of code to push back numbers into an array from the initial string.. Just the usual string comparison and push back if a comma is seen..

As for the 'magic project' or how ever you may put it, I think I'd stick to developing AI systems and algorithms. I'd also work with the general dynamics and mechanics aspect of the car before I get my feet wet in the electronics and controls systems for it. Can't be really specific now, but will find out as the project moves along.