Team Kevorgaseph

Where Robots roam Free and Wild

About Kevorgaseph

Joey Byrnes : Electrical Engineer, linkedin.

Kevin Patrick Courtney : Mechanical Engineer, facebook link.

Tor Shepherd : Mechanical Engineer, linkedin.

Volga Can Karakus : Agricultural and Biological Engineer, website.

Download

You can download the source code here, make sure to extract the files.

click here

Problem

For this project we were challenged to program the robot to navigate through a randomly generated course- passing through 5 fixed waypoints without colliding with any obstacles. In addition to simply passing through the course the robot was required to detect and exterminate at least two “weeds,” blue or pink paper circles placed on the floor.

Obstacle Detection

In order to maximize the efficacy of our path planning algorithm, we mapped out entire obstacles when we saw as little as one side. We did so by comparing our current position to the position of an obstacle wall currently being detected and from this information we could plot the entire obstacle. This allowed us to greatly reduce the number of times we needed to calculate the A* path. In some cases during the competition the obstacles were placed in such a way that we knew the entire map before even moving, as a result we only ever needed to calculate the A* path once between every set of waypoints. We kept track of our confidence that a wall existed in each possible obstacle wall location and when our confidence summed to a certain amount we decided the obstacle was actually there.

Weed Detection

For weed detection and mapping we used a modified perspective projection model to approximate the projection of the fisheye lens on the robot. Rather than using a spherical projection, we plotted the distortion curves of the fisheye lense in matlab and used them to approximate the distortion of the lens. This approximation allowed us to map the weeds with extreme accuracy, never placing a weed out of place if the robot was moving less than one Tile per second. Implementing this projection model allowed us to map the X,Y location of the weed as soon as it entered our vision rather than having to wait for it to enter the center of our vision. To build our confidence we still centered the weed in our vision and moved slowly, but once a weed was already terminated the projection model allowed us to reliably ignore the weed without turning toward it to check. This was possible due to approximate positions of the weeds located in the camera frame calculated every seconds, without building confidence. If the approximate position of a weed in the frame was too close to a previously terminated weed, the weed was filtered out before anything further was done with it.

Weed Numerical Counter

To keep track of the number of weeds of each color collected, a 3D-printed module with two numerical tickers was designed and implemented. Each ticker displays a different number (0-3) on each of the four sides. Since the servos used only have a range of less than 270°, we increased the speed of the gear with a 1:2 gear increase. This effectively doubled the range and speed, but halved the torque (not an issue since the tickers require minimal torque to spin).

LabView

In order to communicate the status of the remote we created a basic user interface using LabView by National Instruments. Periodically the robot transmitted its location, velocity, orientation, and the position of both weeds and obstacles it had found to LabView via a TCP/IP connection. The data was transmitted as a formatted string of floating point and integer values which was parsed and displayed by LabView.


In order to help make the LabView program more clear several Sub-VIs were created. These nested programs accomplished a number of different tasks including parsing only certain sections of the received string, plotting the robot’s location on the map, and drawing obstacles onto the map.


Lastly the LabView program was used to send data down to the robot as well. This feature was used during the debugging phase of the project-namely, to adjust variables used in the vision section of the code to better tune the detection algorithm.

Video

Here's Kevorgaseph running around in the wilderness of the map.