Objective

Firstly, robot should be able to grab an empty soda can and deposit on randomly generated position. A robot must first stop at the fuel station to break the IR sensor, and choose a path based on the direction of bright light. In the course there are total 5 golf balls and 1 orange colored obstacle on ground. Robot must be capable of distinguishing between orange and blue golf balls and should seperate them at the exit of the course. Also the robot must avoid the obstacle. Here you can find out more details about this.


Example pic

 

Our Group

Left to right: Carla A. Swierenga, Hyongju Park, Gokhan Atinc, Rony F. Sousa

 

Example pic

 

 

Design

Mechanical (Gripper, Golf ball storing Mechanism)

 

Example pic

 

Example pic

 

Example pic

 

Visual Basic

 

One distinctive feature we have in VB is that it plays dramatic sound at every change in state. (e.g. Golf ball search state to can dopositing state)

 

Example pic

 

How It Works

• Robot turns CCW (counter-clockwise) until it sees the can.

• When the robot sees the can it turn towards it, and if the error is reasonably smaller than, it grabs the can.

• After grabbing the can robot approaches to the fual station where it breaks the IR sensor.

• When the IR sensor is broken, then bright light is turned on, and the robot starts to rotate CW (clockwise) until it sees the bright light.

• When the robot sees the bright light, it turns toward it and approches to the light.

• On the way to the bright light, robot searches for golf balls, and if there is golf balls robot tries to collect then.

• If robot does not find any golf balls it navigates to other place and do the same thing (check for golf balls)

• When the robot reaches near the can deposit area, it tries to find the pink paper. If it finds the pink paper, it tries align with the center of the pink paper and go towards it, and deposit the can.

• After the robot deposits the can, it returns and exit the course.

• At the exit, robot releases golf balls in different area by their colors.

 

For accomplishing the tasks of the Mechatronics Contest, many sensors on the robot have been utilized, but perhaps the most crucial sensor was the LADAR. LADAR can provide very precise information about the distance to nearby obstacles in every direction. For our project, we tried using the LADAR for implementing two functionalities, but unfortunately, although the C Code for both implementations exist, only one of the functionalities was successfully implemented for the project. We utilized LADAR readings for an alternate method to Dead Reckoning, namely, for implementing the Kalman Filter. While the robot moves throughout the course, since it's position and orientation information is provided by local sensors only, namely the gyro and motor encoders, and since the drift in the gyro tends to accumulate quickly, it is highly probable that the robot gets 'lost' on the course. In order to compensate for faulty sensor readings and other possible errors, Kalman Filtering has been implemented by using LADAR readings. Kalman Filter, crudely, combines sensor information and system dynamics and gives different weights to each based on how trustworthy the information is, and predicts what the actual position of the robot should be. System dynamics alone provides some information, but not entirely correct. On the other hand, sensors provide information, but faulty readings are common. So, by putting sufficient trust in each piece of information, Kalman Filter smoothes out the system trajectory, predicting a fairly accurate position for the robot. When the LADAR gets a reading, the read distances are utilized to calculate the coordinates of the points of reflection. These coordinates are compared to the coordinates of the known landmarks on the course, such as the walls. Also, the 'slopes' between consecutive readings are calculated to see which wall is closer, etc. To summarize, LADAR readings are used to check where in the course the robot is, by comparing coordinates of reflection points to wall coordinates. Also, the dynamical model of the robot is utilized, together with the LADAR, to implement the Kalman Filtering, which provides very accurate results and aids in mapping the position of the robots accurately on the Visual Basic UI.
The second functionality of the LADAR, for which the code was partially written, was for obstacle avoidance. The idea that we tried to implement and were able to implement partially, was to use part of the LADAR readings, which correspond to the front 120 (approximately) degrees of the robot, and divide these readings into 4 regions, and find the indices in each region that gives the minimum distance reading. By looking at the indices, we would be able to see the minimum distances, and basically try to figure out where the obstacle is with respect to the robot. We wanted to compare the LADAR readings to the wall coordinates to decide when a certain reading was reflected from a wall and when it was reflected from an obstacle. Using the minimum distance readings, we defined 4 errors, each one corresponding to a region among 4 regions, which would be used for calculating the turn velocity of the robot using a proportional controller. For instance, if we want the robot to keep a distance of 250 mm with the obstacle and the obstacle is to the left of the robot, we would look at the LADAR reading in 'left' region, and subtract minimum left reading from 250, and set turn to be Kp_left*(250-leftreading), so that, together with a linear velocity, the robot would navigate away from the obstacle until the distance is 250 mm. As easy as the idea sounds in theory, implementation-wise, it was not as easy at all. There were many different situations to consider depending on where the robot is on the course, so the idea was not fully implemented, although partial code was generated on Code Composer.

 

Some thoughts

There were some moments when we all get really frustrated by the robot, but we also learned a lot from the experiences. Thanks to Dan, Steve, and Mark for helping us throughout this project.

 

Video

 


 

Files

Menu

Useful links

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Go to the top of page