Today we successfully implemented a joystick into our GUI for manually controlling our vehicle. We were also able to stream joystick data to our cRIO which then can be processed into motor commands. Here is a screenshot of our GUI recognizing the Joystick and streaming it’s data.
Image Segmentation
We have completed Image segmentation on the GPU based on the previously completed SOM for non-linear color reduction. To segment the image from the SOM(Self-organizing map) we first clustered the 16×16 SOM into 7 color clusters. After sufficient clustering is achieved each pixel in the image to be segmented is first matched to the SOM node with the minimum SSD and the corresponding cluster number is placed in a cluster map of the image. To remove outliers in the image we then run the resulting cluster image through two K nearest neighbours filters. The results of image segmentation will be used in our next algorithm to get an initial disparity estimate for our stereo vision system. Below you can see the results of our algorithm with and without k nearest neighbours filtering.
On the GPU the full implementation of the algorithm runs in 8.3ms without filtering and in 10.75ms with two rounds of filtering. Image resolution is 1024×768.
Video of the GUI
The following video shows our GUI correctly updating the map. In the video you can see an obstacle (Viktoras) moving around while the robot calculates and finds the new best path to take around him. The map shown only contains the data grabbed from the LIDAR sensor with a 4Hz update.
Driving with Tentacles: Classification Area Calculated
In our last update on Driving with Tentacles we got the tentacles calculated but we still needed to calculate the classification area for each tentacle. Classification area is the area that our vehicle will be covering as it drives along the tentacle. In order to choose the correct tentacle to drive by we must know if our vehicle will have a clear path along the tentacle. So here it is, the classification area for three tentacles in the image below. We show only three because otherwise it would be very difficult to see the difference between each tentacle. “S” stands for the classification area and a “.” represents an actual tentacle.
Chassis Update: Finished Frame
Through the break we were not only able to finish the motor brackets but also weld them on to the frame. As you can see in the picture below the frame is whole and has the rear wheels and one motor attached. Also the frame is more than strong enough to hold me up with little to no deflection. The next step is the machining of the front wheel mechanism from the material we already have. We will also begin cleaning the oxides off of the welds and wire brushing the aluminum to prepare it for its matte black paint job which it will get once the cover has been manufactured. Below you can see Ben standing on the frame. Clearly the frame will hold up!
Using Tentacles for Path Calculation
Throughout the research for path calculation methods the team came across various ways of calculating paths including very untraditional one, using tentacles. This method of path calculation was invented by Felix von Hundelshausen, Michael Himmelsbach, Falk Hecker, Andre Mueller, and Hans-Joachim Wuensche and first used applied at both the C-Elrob (European Land Robot Trial) 2007 and the 2007 DARPA Urban Challenge. This method has a very simple concept, it creates number of tentacles extending out from the center of the robot. Each tentacle has a different length and curvature based on the travel speed of the robot. Travel speeds are grouped intro speed sets, each containing different sets of tentacles. “Our approach does not accumulate data and uses a local ego-centered grid, thereby avoiding the SLAM problem.” – Driving with tentacles: Integral structures for sensing and motion One of the reasons we selected this method for path calculation was because it is innovative, was proven to work and is quite easy to implement. The link above will allow you to download the report that the team used to implement tentacles for Prometheus.The image below shows the tentacles calculated for the robot driving at half of the maximum speed (1.1m/s).
Red dot indicates the front of the robot facing to the right. Since each tentacle is divided into segments that will contain the probability of an object being at the point of the segment we were able to plot our tentacles using the x, y coordinate of each segment. Black lines over dots represent actual tentacles formed by the segments. There is a total of 81 tentacles represented in the map. This is the first version of the tentacles and there is much work to be done tweaking the parameters and experimenting with the results on the robot. Updates to come.
SOM Color Reduction
We have successfully done a non-linear color conversion from RGB to gray scale on the GPU. To perform the non-linear conversion we first converted the image from RGB to Modified L*u*v space by using the set of equations in the document listed below. After converting to L*u*v space a neural network variant called a SOM(Self-Organizing Map) was trained to perform the non-linear conversion to gray scale. Each node in the trained SOM corresponds to a level of gray scale 0-255. After the SOM was trained the gray scale conversion was simply the index of the node with the smallest sum-square difference to the current L*u*v pixel. The resulting gray scale image preserves the topology of the original color image and will be used for image segmentation and eventually disparity and distance calculations. Currently the program is implemented in CUDA and performs non-linear color conversion on a 1024×768 image in about 20ms on the TeslaC1060 GPU. The results of an image conversion are posted below along with the article explaining the algorithm.
Chassis Fabrication Update
This weekend the team continued to make progress on fabricating the chassis. The front A-frames were welded onto the box frames, and attached some of the support bars. In addition, the tabs for mounting the wheel axles were welded on as well. The frame is now in three large sub-components: the bottom box/A-frame, the top box/A-frame and the back cage. Once all of the hardware for mounting the motors has been machined and attached, we will be ready to finish welding everything together.
We also tested the strength of the chassis out by riding it around on the rear wheels, and are pleased to say that not only did it hold up without any problems, but it is also quite well balanced.
We hope to have the chassis completed by the end of the week.

Categories:















