Pawel Cieslewski Robo-Retriever Formal Report

Size: px
Start display at page:

Download "Pawel Cieslewski Robo-Retriever Formal Report"

Transcription

1 Pawel Cieslewski Robo-Retriever Formal Report EEL 4665 Intelligent Machines Design Laboratory University of Florida Department of Electrical and Computer Engineering TAs: Andy Gray, Josh Weaver, Nick Cox Instructors: Dr. A. Antonio Arroyo Dr. Eric M. Schwartz

2 Table of Contents 3 - Abstract 4 - Executive Summary 5 - Introduction 6 - Integrated System 7 - Mobile Platform 8 - Actuation 9 - Sensors 10 - Behaviors 11 - Experimental Layout and Results 12 - Conclusion 13 - Documentation 14 - Appendices 2

3 3. Abstract Robo-Retriever is a robot inspired by the behavior of a Black Labrador named Jake. It is every exciting to play with this dog and it would be interesting to try to mimic this behavior in a robot. Robo-Retriver is a robot that does exactly this. The purpose of this robot is to try to play with a person by not only avoiding obstacles but by picking up tennis balls. Making use of various sensors and a camera is this possible. The robot is capable of using sonars to avoid hitting itself and looking at a video feed to identify tennis balls. Once the robot locks on to a ball, it grabs it, and returns it. 4. Executive Summary Robo-Retriever, more specifically, is an autonomous robot with several goals. These goals are to be able to prevent the robot from running into objects and to use image processing to identify objects in a picture. The Robo-Retriever uses sonars to judge the distance to the nearest object based on the time it takes for the sound to return to the robot after is has been emitted. The sonars must be controlled individually in order to prevent their sounds from interfering with each other. Infrared encoders on the wheels are also used to be able to judge the if the robot is traveling in the correct direction. The encoders work by counting the gaps in the inside of the wheel and toggling a digital value. An interrupt on the microcontroller counts these toggles in order to create feedback from motors that would otherwise not have any. This robot in particular is looking for tennis balls, due to their brightly colored nature. Using a library called Open Computer Vision, the robot is able to efficiently process an incoming video stream to judge if a tennis ball has actually been seen. To accomplish this the robot checks for several layers of criteria. First it thresholds the hue, saturation, and value of each frame. Using this threshold, it is able to see blobs. Filters are applied to these images to reduce noise and the only the largest blobs remain. We then check if the blobs are round enough to constitute a tennis ball. 5. Introduction While Robo Retriever s mission is not a serious one it is interesting and complex. This project attempts to mimic to behavior of a dog. The purpose of building this robot is to learn from it. The scope of this entire project is educational one. Each portion of Robo Retriever represents an interesting challenge to explore. The first major problem is mechanical assembly. The robot needed to be designed and manufactured. The second problem was electrical design. The systems of the robot needed to be able to function properly, each with their own operational demands being met. Aside for this, these components needed to communicate to create a coherent entity. This was extremely 3

4 challenging, not only from the point of design, but also organization. The other major problem is software. In order to make all of the mechanical and electrical systems to work, it is necessary to write software for the microcontroller and onboard computer to control all of these components. 6. Integrated System Robo-Retriever uses two main circuit boards for controlling the system. For data acquisition and low-level control a Arduino Uno R3 (ATmega16U2 Architecture) is used. This board was chosen because of the simplicity of use and large support. Since this board is natively programmed in C with convenient software, it is easier to focus on robot design and functionality. This board is used to control all of the sensors on board, the motor driver, and the servos. All traveling is handled directly by the Arduino. For higher level processing a Raspberry Pi board is used. Running a 700 MHz ARM1176JZF-S core CPU, the raspberry pi is able to handle signal processing type applications. This board is connected to the Raspberry Pi camera. The raspberry pi will use image processing to find objects and then relay this information to the Arduino. 4

5 7. Mobile Platform The mobile platform of the robot is used to house all of the electronics and protect the robot from harm. I was able to design a majority of my robot in solidworks and use hacked T-Tech to cut the platform for me. The T-Tech s real purpose was to etch PC boards. However, by pressing the drill through balsa wood, it turns out it can also manufacture robots. This is a picture of my Solidworks model for the robot itself. Comparing this model to the real version, they are very similar. I believe that using Solidworks to design the robot was a good choice and dramatically simplified the thinking and manufacturing. While the manufacturing of the model went very well, it cannot be said that all of my mechanical decisions were good. The robot ended up being slightly tilted because the caster wheels were slightly taller than the height that the wheels. Furthermore the planning of the mechanical gripping mechanism was nothing more than a disaster. It was very difficult for me to think of a proper way I could grip the tennis ball, so the mechanism I settled for was very simple and unreliable. 5

6 8. Actuation For actuation the robot uses two micro gear motors with a gear ratio of 150:1 pictured below. The reason that these motors were chosen is because they have a powerful amount of torque for a relatively low amount of current. They are rated at 45oz/in of torque with a stall current of only 1.6 amps and a no load current of 70ma. These motors are high quality and since the power consumption is low, the motor board does not have to be very expensive. The motor board to run these motors is a TB6612FNG Dual Motor Driver Carrier pictured below. This motor board is very inexpensive however the specs are well within the range. The driver is able to control two motors at the same time with a continuous current of 1A on each channel and a peak current of 3A. The motor driver is rated well above the motor rating so overheating or failure should not be a concern. To be able to drive the vehicle, the Pololu wheel and encoder set have been chosen. 6

7 The vehicle needs an encoder to be able to track the distance the robot has traveled but also to ensure that the robot is capable of driving in a straight line. The wheels measure 42x19mm with a thick rubber tire. The tires provide a firm grip of the floor to prevent the robot from slipping. 9. Sensors The sensors used on Robo-Retriever deal with obstacle avoidance and tennis-ball detection. The robot uses two Ultrasonic Range Finders. These range finders are used for object avoidance, especially on the edges of the robot. This model was chosen because it has a semi-wide beam angle and an analog output so data acquisition is very simple. It is important to note however that I realized late in the project that these sonars actually interfere with each other. I needed to reintegrate them with the system in order to prevent getting false values. The special sensor that this robot possesses is a video camera, specifically a Raspberry Pi Camera Module. This camera was chosen over a webcam because of its integration with the raspberry pi. The connection is integrated directly into the board rather than using a serial port. More importantly however, the GPU on board the raspberry pi assists with processing data. Since computing power is extremely important with this processor, being able to relieve the processor, even slightly, is important. 7

8 10. Behaviors Robo-Retriever has four primary behaviors. The first behavior is obstacle avoidance. During this behavior the microcontroller is heavily monitoring all sensors to prevent the robot from hitting anything. This is the only behavior in which the robot travels to different locations. During this behavior the robot also listens to the raspberry pi data checking if the camera happened to notice a tennis ball. The second behavior is rotation. This behavior is started after the robot has spent some time traveling around in the obstacle avoidance mode. In this mode the robot stops, and then begins to rotate in a circle. During his rotation he is spending a large amount of time making sure there is not a tennis ball in the frame. The third mode is adjustment. After a ball has been seen in any mode, the robot attempts to adjust. What is meant by this is it tries to center the ball in its field of vision. If the ball is centered within a certain threshold, it begins to inch forward, constant calling the adjust function. Once the ball has been found and its radius is a certain length, the robot will do its final approach. In this mode, the robot opens its arms, goes forward, and closes its arms around the tennis ball. 11. Experimental Layout and Results There were many challenges in implementing the special sensor. Although the Rasberry Pi Camera Module is a very high quality camera, it does have its drawbacks. Since the connection from the raspberry pi to the camera is proprietary, Open CV does not support it by default. However, I was able to implement a library that allowed the use of the camera and importing it into an Open CV format. Once this was working I was able to approach the problem very systematically. I needed to first threshold the image to find pixels that could be part of the tennis ball. I started off with a video feed such as the following. 8

9 I was then able to change the picture from a Red, Green, Blue color space to Hue, Saturation, Value space. This allowed me to filter the colors based on the hue. If I did not do this, shadows on the ball would be a lot more difficult to manage. After some calibration I was able to get the following image. However, I needed the ball to be one large mass so I would be able to apply some other filters on it. Occasionally, noise would enter the picture and cause speckles of white dots all around the screen. I was able to remove the noise by using OpenCV s built in erode and dilate. By doing this, I was able to filter the background and remove the letters from the ball itself. 9

10 Once this picture was attained, it was a matter of applying a circle finding algorithm to finish the job. I tried to use Hough Circles at first. I had a rather unsuccessful attempt at this. Using this algorithm I had many false positives that would destroy the functionality of my robot. At close distances to the robot, I would find many circles rather than just one. I decided to try a different approach. I took the binary representation of my image and first discarded all blobs that did not meet my size requirements. I did this to reduce noise. For example, all small dots were immediately removed. I also knew for a fact that the tennis ball would never be in point blank range so larger items were discarded as well. After this step I would draw a encompassing circle around the blob and I would measure the area of this circle. If the blob that was encompassed did not fill in a majority of the encompassing circle I knew that the object was not sudo-round. So objects such as squares would not trip the algorithm. This greatly reduced my false positive count. Actually it worked so well that I very rarely even encountered an instance where noise would create false tennis balls. My results are shown in the picture below. 10

11 The issues that arose however were difficult to fix. It was clear that the lighting conditions were extremely sensitive. Even as the time of the day changed I need to change my HSV filtering values. In order to solve this issue, I mounted a light source on top of the robot. It shines directly in front of the robot in order to illuminate the tennis balls and keep the color values constant. This helped greatly; however, it introduced a new problem. Since the light source was placed off center of the camera, the tennis ball would be illuminated slightly off center. This had a large impact on being able to center on the ball and I was forced to correct my centering algorithm. Once the special sensor was working testing the other functions of the robot consisted of tweaking values. I laid my robot on a box and observed the OpenCV values and adjusted the microcontroller behavior. CLOSING 12. Conclusion The work that I accomplished on this robot was very successful in my opinion. The purpose of the robot was to learn how to build a robot from the ground up. While all of my components were not perfect, they each taught valuable lessons. In the beginning I was not capable of using solidworks and after the mechanical design portion of this robot I can now create models that can work with each other in solidworks. I am able to materialize my thoughts in this software to greatly facilitate manufacturing. 11

12 The hardware portion of my robot taught me about integration of sensors and motors. It also made me familiarize myself with power distribution and providing working conditions for all my sensors. My favorite learning experience, however, was learning to use the camera on this robot. I never used image processing before and I am now able to apply elementary OpenCV algorithms to detect objects and colors. Of course it is important to note that I was very ambitious with regards to my initial intentions with the robot. I wanted this robot to be able to detect face and listen to sounds. Working with limited hardware and more importantly limited time put these objectives outside of the scope of the project. One of the things that I could have improved on is definitely behavior of the robot. One of the issues that I ran into with the microcontroller is that I was having difficulty parallelizing code without instantiating a lot of timers. Having the ability to use threads on an operating system makes this so simple, but on a microcontroller it is non-trivial. I wish that I spent more time programming with a clear organized end goal in mind. I feel that my code had a lot of hacked patches that would hinder development of this robot much further than his current state. Another thing that I would have liked to fix is adding a behavior to return the ball to the user somehow. I could have made a glove of a particular color for the robot to find but this would have been a simple extension of my current code. One of my initial idea was to try to use dead reckoning to return to my original position, but after seeing how much the robot slips, this seems impossible. For future students I would pass along a lot of information. One of the most important things to consider when doing image processing knowing that you have full control of your camera. One of the things that I noticed is that my camera would automatically change exposure settings which would ruin everything I attempted with the OpenCV code. Furthermore, if you choose to use a raspberry pi, it is important to know that the WiringPi library exists. It allows for communication with the GPIO pins and serial ports using a library written in C++. This is a bonus because most likely the code you will use for OpenCV will be written in C++ as well. If I was to start the project from the beginning, I would definitely pay more attention to the camera. I would make sure that I am getting consistent images that have the same exposure settings. I would also make sure that I think about OpenCV and coding the microcontroller a lot earlier. I would have preferred it if my functions were coordinated and thoughtful, rather than hundreds of lines shoved together to make a working product. 13. Documentation WiringPi Library for hardware interfacing with the Raspberry Pi in C

13 *It is important to note that libserial does not compile on the Raspberry Pi which makes this library even more useful. Robidouille s Library to use Raspberry Pi camera with the Raspberry Pi OpenCV Documentation for example code Grzegorz Cieslewski Computer Engineering Graduate from the University of Florida 13

14 14. Appendices Microcontroller: #include <Servo.h> #define FORWARD 0 #define BACKWARD 1 #define LEFT 2 #define RIGHT 3 int currentdir = 0; //Declares for motor direction switches. I am guessing H-Bridge. int ain1 = 52; int ain2 = 53; int bin1 = 50; int bin2 = 51; //Led on board. static const int led = 13; //PWM pins to control motor int motorpwm1 = 2; int motorpwm2 = 3; //Pins to read in Sonar Values int rightsonar = A0; int leftsonar = A1; int rightsonarval = 300; int leftsonarval = 300; int rightsonarstrobe = 41; int leftsonarstrobe = 39; //Values for OpenCV infro int ballradius = 0; int ballx = 0; int bally = 0; bool ballisleft = false; bool ballisright = false; bool balliscentered = false; bool seeball = false; bool inchforward = false; bool canbepicked = false; bool seeballduringavoid = false; bool haveball = false; bool raspionline = false; Servo leftarm; Servo rightarm; //Servo cameraservo; int cameraservopin = 6; int leftarmpin = 5; int rightarmpin = 4; int leftservpos = 10; int rightservpos = 45; //int cameraservpos = 135; //closed : left:10 right:45 //open: left:120 right:155 //First run? bool firstrun = true; void setup() { SerialUSB.begin(9600); Serial.begin(9600); 14

15 //Serial.begin(9600); pinmode(led, OUTPUT); pinmode(ain1, OUTPUT); pinmode(ain2, OUTPUT); pinmode(bin1, OUTPUT); pinmode(bin2, OUTPUT); pinmode(motorpwm1, OUTPUT); pinmode(motorpwm2, OUTPUT); int rightsonar = A0; int leftsonar = A1; pinmode(leftsonar, INPUT); pinmode(rightsonar, INPUT); pinmode(leftsonarstrobe, OUTPUT); pinmode(rightsonarstrobe, OUTPUT); setdirection(forward); analogwrite(motorpwm1, 0); analogwrite(motorpwm2, 0); servoinit(); closearms(); waitforpi(); setdirection(forward); void loop() { roamandlook(); if(!seeball){ rotate(); else{ SerialUSB.flush(); while(seeball){ seeball = false; ballisleft = false; ballisright = false; inchforward = false; canbepicked = false; balliscentered = false; for(int i=0; i<4; i++){ getballinfo(); if(seeball){ break; if(canbepicked){ openarms(); setdirection(forward); delay(6000); closeonball(); closearms(); seeball = false; ballisleft = false; ballisright = false; inchforward = false; canbepicked = false; 15

16 balliscentered = false; delay(1000); setdirection(right); delay(5000); delay(500); movearms(120,45); closearms(); break; adjust(); void analyze(){ digitalwrite(leftsonarstrobe, HIGH); delay(1); digitalwrite(leftsonarstrobe, LOW); delay(50); digitalwrite(rightsonarstrobe, HIGH); delay(1); digitalwrite(rightsonarstrobe, LOW); delay(50); leftsonarval = analogread(leftsonar); rightsonarval = analogread(rightsonar); //Serial.println(rightSonarVal); //delay(200); if( (leftsonarval < 25) && (currentdir == FORWARD) ){ //Serial.println(currentDir); delay(500); setdirection(right); delay(500); //This ensures that the vehicle turns at least some finite amount. else if( (rightsonarval < 25) && (currentdir == FORWARD) ){ //Serial.println("R"); delay(500); setdirection(left); delay(500); //This ensures that the vehicle turns at least some finite amount. else if( (rightsonarval >= 35) && (leftsonarval >= 35) && (currentdir!= FORWARD) ){ //Serial.println("F"); delay(250); setdirection(forward); void rotate(){ //This method spins the robot in a circle trying to find the tennis ball. delay(500); setdirection(left); for(int i = 0; i<14; i++){ delay(800); 16

17 for(int j = 0; j<2; j++) getballinfo(); if(seeball){ return; delay(1000); void analyzeandlook(){ digitalwrite(leftsonarstrobe, HIGH); delay(1); digitalwrite(leftsonarstrobe, LOW); delay(50); digitalwrite(rightsonarstrobe, HIGH); delay(1); digitalwrite(rightsonarstrobe, LOW); delay(50); leftsonarval = analogread(leftsonar); rightsonarval = analogread(rightsonar); //Serial.println(rightSonarVal); //delay(200); getballinfofast(); if( (leftsonarval < 15) && (currentdir == FORWARD) ){ //Serial.println(currentDir); delay(500); setdirection(right); delay(500); //This ensures that the vehicle turns at least some finite amount. else if( (rightsonarval < 15) && (currentdir == FORWARD) ){ //Serial.println("R"); delay(500); setdirection(left); delay(500); //This ensures that the vehicle turns at least some finite amount. else if( (rightsonarval >= 25) && (leftsonarval >= 25) && (currentdir!= FORWARD) ){ //Serial.println("F"); delay(250); setdirection(forward); 17

18 void setdirection(int dir){ currentdir = dir; if(dir==forward){ digitalwrite(ain1, HIGH); digitalwrite(ain2, LOW); digitalwrite(bin1, LOW); digitalwrite(bin2, HIGH); else if(dir==backward){ digitalwrite(ain1, LOW); digitalwrite(ain2, HIGH); digitalwrite(bin1, HIGH); digitalwrite(bin2, LOW); else if(dir==left){ digitalwrite(ain1, HIGH); digitalwrite(ain2, LOW); digitalwrite(bin1, HIGH); digitalwrite(bin2, LOW); else if(dir==right){ digitalwrite(ain1, LOW); digitalwrite(ain2, HIGH); digitalwrite(bin1, LOW); digitalwrite(bin2, HIGH); void go(){ analogwrite(motorpwm1, 75); analogwrite(motorpwm2, 82); void sto(){ analogwrite(motorpwm1, 0); analogwrite(motorpwm2, 0); void getballinfo(){ String recieved = ""; char temp = 'z'; SerialUSB.write('q'); delay(400); if(serialusb.available() > 0){ while(serialusb.available() > 0){ temp = SerialUSB.read(); if(temp == 'n'){ seeball = false; ballisleft = false; ballisright = false; inchforward = false; canbepicked = false; balliscentered = false; else if(temp == 'y'){ seeball = true; else if(temp == 'l'){ ballisleft = true; ballisright = false; balliscentered = false; else if(temp == 'r'){ ballisright = true; ballisleft = false; balliscentered = false; 18

19 else if(temp == 'f'){ inchforward = true; else if(temp == 'g'){ canbepicked = true; else if(temp == 'c'){ balliscentered = true; ballisright = false; ballisleft = false; return; else{ seeball = false; ballisleft = false; ballisright = false; inchforward = false; canbepicked = false; balliscentered = false; void adjust(){ delay(25); if(seeball){ if(balliscentered){ setdirection(forward); delay(200); return; else if(ballisleft){ setdirection(left); delay(100); return; else if(ballisright){ setdirection(right); delay(100); return; void waitforpi(){ char temp; while(1){ if(serialusb.available() > 0){ temp = SerialUSB.read(); if(temp == 'o'){ raspionline = true; return; 19

20 void servoinit(){ leftarm.attach(leftarmpin); rightarm.attach(rightarmpin); leftarm.write(leftservpos); rightarm.write(rightservpos); delay(1000); void openarms(){ while(leftservpos!= 120 rightservpos!= 155){ leftarm.write(leftservpos); rightarm.write(rightservpos); if(leftservpos < 120) leftservpos++; else if(leftservpos > 120) leftservpos--; if(rightservpos < 155) rightservpos++; else if(rightservpos > 155) rightservpos--; delay(20); void closearms(){ while(leftservpos!= 10 rightservpos!= 45){ leftarm.write(leftservpos); rightarm.write(rightservpos); if(leftservpos < 10) leftservpos++; else if(leftservpos > 10) leftservpos--; if(rightservpos < 45) rightservpos++; else if(rightservpos > 45) rightservpos--; delay(20); void movearms(int angleft, int angright){ while(leftservpos!= angleft rightservpos!= angright){ rightarm.write(rightservpos); leftarm.write(leftservpos); if(leftservpos < angleft) leftservpos++; else if(leftservpos > angleft) leftservpos--; if(rightservpos < angright) rightservpos++; else if(rightservpos > angright) rightservpos--; delay(15); void closeonball(){ movearms(80,115); movearms(80,60); movearms(25,45); void pickup(){ openarms(); delay(25); delay(1000); //Tweak for distance. closearms(); delay(1000); void roam(){ setdirection(forward); 20

21 unsigned long timeelapsed = 0; unsigned long startmillis = millis(); while(timeelapsed < 20000){ timeelapsed = (millis() - startmillis); analyze(); delay(500); void roamandlook(){ setdirection(forward); unsigned long timeelapsed = 0; unsigned long startmillis = millis(); while(timeelapsed < 20000){ timeelapsed = (millis() - startmillis); analyzeandlook(); if(seeball){ break; delay(500); bool checkifhaveball(){ delay(25); setdirection(backward); delay(1300); setdirection(forward); for(int i=0; i<2; i++){ getballinfo(); if(seeball){ return false; return true; void getballinfofast() String recieved = ""; char temp = 'z'; SerialUSB.write('q'); if(serialusb.available() > 0){ while(serialusb.available() > 0){ temp = SerialUSB.read(); if(temp == 'n'){ seeball = false; ballisleft = false; ballisright = false; inchforward = false; canbepicked = false; 21

22 balliscentered = false; else if(temp == 'y'){ seeball = true; else if(temp == 'l'){ ballisleft = true; ballisright = false; balliscentered = false; else if(temp == 'r'){ ballisright = true; ballisleft = false; balliscentered = false; else if(temp == 'f'){ inchforward = true; else if(temp == 'g'){ canbepicked = true; else if(temp == 'c'){ balliscentered = true; ballisright = false; ballisleft = false; return; else{ seeball = false; ballisleft = false; ballisright = false; inchforward = false; canbepicked = false; balliscentered = false; 22

23 OpenCV Code: #include <cv.h> #include <highgui.h> #include <iostream> //#include "RaspiCamCV.h" //#include <wiringserial.h> using namespace std; using namespace cv; //Tweak Values float fraction =.7; int radius_min = 20; IplImage* GetThresholdedImage(IplImage* img); void findthecontours(iplimage* bin); int ballx = 0; int bally = 0; int ballradius = 0; bool seeball = false; String ballxs; String ballys; String ballradiuss; String convertint(int number){ stringstream ss; ss << number; return ss.str(); IplImage* image; IplImage* imagethreshed; IplImage* imghsv; int main(){ /* int fd; if( (fd = serialopen("/dev/ttyacm0", 9600)) < 0 ){ cout << "Unable to open serial communication." << endl; */ //RaspiCamCvCapture* capture = raspicamcvcreatecameracapture(0); CvCapture* capture = cvcapturefromcam( 0 ); cvnamedwindow("camtest", 1); //I cant get rid of this line? image = cvqueryframe( capture ); //serialputchar(fd, 'o'); //cout << "Raspi Online. Sending o." << endl; do { image = cvqueryframe( capture ); //image = raspicamcvqueryframe(capture); imagethreshed = GetThresholdedImage(image); cverode( imagethreshed, imagethreshed, 0, 1 ); cvdilate( imagethreshed, imagethreshed, 0,5 ); cvshowimage("camtest", imagethreshed); 23

24 findthecontours(imagethreshed); cvreleaseimage(&imagethreshed); ballxs = convertint(ballx); ballys = convertint(bally); ballradiuss = convertint(ballradius); //cout << ballxs << endl; /* serialputchar(fd, 'r'); serialputs(fd, ballradiuss.c_str()); serialputchar(fd, 'e'); serialputchar(fd, 'x'); serialputs(fd, ballxs.c_str()); serialputchar(fd, 'e'); serialputchar(fd, 'y'); serialputs(fd, ballys.c_str()); serialputchar(fd, 'e'); */ while (cvwaitkey(10) < 0); cvdestroywindow("camtest"); cvreleasecapture(&capture); //raspicamcvreleasecapture(&capture); return 0; //This method needs to be changed based on light conditions. IplImage* GetThresholdedImage(IplImage* img) { // Convert the image into an HSV image IplImage* imghsv = cvcreateimage(cvgetsize(img), 8, 3); cvcvtcolor(img, imghsv, CV_BGR2HSV); //Create another image to store the threshed image IplImage* imgthreshed = cvcreateimage(cvgetsize(img), 8, 1); //thresh cvinranges(imghsv, cvscalar(18, 90, 90), cvscalar(50, 255, 255), imgthreshed); //free mem cvreleaseimage(&imghsv); return imgthreshed; void findthecontours(iplimage* threshed) { //data structures vector<vector<point> > contours; vector<vec4i> hierarchy; //change iplimage into a new Mat image Mat threshold_output(threshed); //find the contours findcontours( threshold_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); //data structures vector<vector<point> > contours_poly2( 1 ); Point2f center2; float radius2; 24

25 //find the largest contour float largest_area = 0; int largest_contour_index = 0; //int next_largest_index = 0; for( int i = 0; i< contours.size(); i++ ) { float a = contourarea(contours[i],false); if(a>largest_area) { largest_area = a; largest_contour_index=i; Mat drawing = Mat::zeros( threshold_output.size(), CV_8UC3 ); //So if we have any contours if(contours.size()!= 0) { //Draw a circle around the largest one. approxpolydp( Mat(contours[largest_contour_index]), contours_poly2[0], 3, true ); minenclosingcircle( (Mat)contours_poly2[0], center2, radius2 ); //if the tennisball is approx round and has a radius of at least this... THen update the values if( (largest_area > ((fraction)*(3.14)*((int)radius2)*((int)radius2))) && ((int)radius2 > radius_min) ){ ballradius = (int)radius2; ballx = center2.x; bally = center2.y; seeball = true; else{ Scalar color = Scalar( 0, 0, 255 ); circle( drawing, center2, (int)radius2, color, 2, 8, 0 ); ballradius = 0; ballx = 0; bally = 0; seeball = false; cout << "Radius: " << ballradius << endl; cout << "Center X: " << ballx << endl; cout << "Center Y: " << bally << endl; //Draw on window if we need it. For testing //Scalar color = Scalar( 0, 0, 255 ); //circle( drawing, center2, (int)radius2, color, 2, 8, 0 ); /// Show in a window namedwindow( "Contours", CV_WINDOW_AUTOSIZE ); imshow( "Contours", drawing ); 25

EEL 5666C FALL Robot Name: DogBot. Author: Valerie Serluco. Date: December 08, Instructor(s): Dr. Arroyo. Dr. Schwartz. TA(s): Andrew Gray

EEL 5666C FALL Robot Name: DogBot. Author: Valerie Serluco. Date: December 08, Instructor(s): Dr. Arroyo. Dr. Schwartz. TA(s): Andrew Gray EEL 5666C FALL 2015 Robot Name: DogBot Author: Valerie Serluco Date: December 08, 2015 Instructor(s): Dr. Arroyo Dr. Schwartz TA(s): Andrew Gray Jacob Easterling INTRODUCTION ABSTRACT One of the fun things

More information

Wall-Follower. Xiaodong Fang. EEL5666 Intelligent Machines Design Laboratory University of Florida School of Electrical and Computer Engineering

Wall-Follower. Xiaodong Fang. EEL5666 Intelligent Machines Design Laboratory University of Florida School of Electrical and Computer Engineering Wall-Follower Xiaodong Fang EEL5666 Intelligent Machines Design Laboratory University of Florida School of Electrical and Computer Engineering TAs: Tim Martin Josh Weaver Instructors: Dr. A. Antonio Arroyo

More information

Autonomous Bottle Opener Robot

Autonomous Bottle Opener Robot Date: 03/19/02 Student Name: Clerc Jean-Philippe TAs: Aamir Qaiyumi Uriel Rodriguez Instructors: Dr. A. A Arroyo Dr. Schwartz University of Florida Department of Electrical and Computer Engineering Intelligent

More information

EEL 5666C - Intelligent Machine Design Lab Final report

EEL 5666C - Intelligent Machine Design Lab Final report EEL 5666C - Intelligent Machine Design Lab Final report Date: 04/21/14 Student Name: Shaoyi SHI Robot Name: Alin E-mail: ssytom@hotmail.com TA: Instructors: Josh Weaver A. Antonio Arroyo Eric M. Schwartz

More information

Final Report. EEL 5666 Intelligent Machines Design Laboratory

Final Report. EEL 5666 Intelligent Machines Design Laboratory Final Report EEL 5666 Intelligent Machines Design Laboratory TAs: Mike Pridgen & Thomas Vermeer Instructors: Dr. A. Antonio Arroyo & Dr. Eric M. Schwartz Hao (Hardy) He Dec 08 th, 2009 Table of Contents

More information

Alexander Bryan Shooty The Robot Final Formal report EEL 4665/5666 Intelligent Machines Design Laboratory University of Florida Department of

Alexander Bryan Shooty The Robot Final Formal report EEL 4665/5666 Intelligent Machines Design Laboratory University of Florida Department of Alexander Bryan Shooty The Robot Final Formal report EEL 4665/5666 Intelligent Machines Design Laboratory University of Florida Department of Electrical and Computer Engineering TAs: Andy Gray, Josh Weaver,

More information

BALL IS LIFE: The Autonomous Trash Can Project

BALL IS LIFE: The Autonomous Trash Can Project BALL IS LIFE: The Autonomous Trash Can Project Hyungsuk (Peter), Kim, Maruchi Kim, Amit Patankar, Spencer Schack I. ABSTRACT This project designs and implements an autonmous moving trash can that will

More information

Wallmaster Final Report

Wallmaster Final Report Wallmaster Final Report Terence Tai Class: EEL 4665/5666 Instructors: Dr. Arroyo, Dr. Schwartz TAs: Devin Hughes, Ryan Stevens, Josh Weaver, Sean Frucht, Tim Martin Table of Contents Abstract 3 Executive

More information

Table of Contents. Executive Summary 3 Walkthrough..4

Table of Contents. Executive Summary 3 Walkthrough..4 Official Report FALL IMDL 2015 EEL4665 Designer: Jesus Pintado Robot Name: Ballsy Instructors & TA s: Dr. A. Antonio Arroyo Dr. Eric M. Schwartz Andrew Gray Jacob Easterling Table of Contents Executive

More information

Final Report. Autonomous Robot: Chopper John Michael Mariano December 9, 2014

Final Report. Autonomous Robot: Chopper John Michael Mariano December 9, 2014 Final Report Autonomous Robot: Chopper John Michael Mariano December 9, 2014 EEL 4665: Intelligent Machines Design Laboratory Instructors: Dr. A. Antonio Arroyo, Dr. Eric M. Schwartz TA: Nicholas Cox,

More information

D-Rex. Final Report. An Ho. April 21, 14

D-Rex. Final Report. An Ho. April 21, 14 D-Rex Final Report An Ho April 21, 14 University of Florida Department of Electrical and Computer Engineering EEL 4665 IMDL Instructors: A. Antonio Arroyo, Eric M. Schwartz TA: Andrew Gray Table of Contents

More information

Formal Proposal (Special Sensor) [NOTE: Jump to Experimental Layout & Result Section] Si-Fo. The Universal Signs Follower.

Formal Proposal (Special Sensor) [NOTE: Jump to Experimental Layout & Result Section] Si-Fo. The Universal Signs Follower. Formal Proposal (Special Sensor) [NOTE: Jump to Experimental Layout & Result Section] Si-Fo The Universal Signs Follower Izhar Shaikh Intelligent Machine Design Lab EEL 4665, Fall 2015 Professors: Dr.

More information

Intelligent Machines Design Laboratory EEL 5666C

Intelligent Machines Design Laboratory EEL 5666C Atocha Too Donald MacArthur Center of Intelligent Machines and Robotics & Machine Intelligence Laboratory Intelligent Machines Design Laboratory EEL 5666C TABLE OF CONTENTS Abstract 3 Executive Summary

More information

Experiment 7: Robotics++ V3 Robot BlueToothbot

Experiment 7: Robotics++ V3 Robot BlueToothbot Experiment 7: Robotics++ V3 Robot BlueToothbot 1 Two different ways to control your robot via Bluetooth 1. Android phone wire your robot, download apps from the Google Play Store or install an APK (app

More information

Final Report Shoe Fetish

Final Report Shoe Fetish Final Report Shoe Fetish Jing Zou University of Florida Department of Electrical and Computer Engineering EEL 5666 IMDL Instructors: A. Antonio Arroyo, Eric M. Schwartz TAs: Josh Weaver, Andy Gray, Devin

More information

SystemVision Case Study: Robotic System Design. Dan Block Senior Project Oregon State University

SystemVision Case Study: Robotic System Design. Dan Block Senior Project Oregon State University SystemVision Case Study: Robotic System Design Dan Block Senior Project Oregon State University Introduction The TekBot is part of the Oregon State University (OSU) Platforms for Learning concept 1, created

More information

Final Report. Terminator by Ju Zong April 22, 2014

Final Report. Terminator by Ju Zong April 22, 2014 Final Report Terminator by Ju Zong April 22, 2014 University of Florida Department of Electrical and Computer Engineering EEL 5666 Instructors: A. Antonio Arroyo, Eric M. Schwartz TAs: Josh Weaver, Andy

More information

How to approach a computational problem

How to approach a computational problem How to approach a computational problem A lot of people find computer programming difficult, especially when they first get started with it. Sometimes the problems are problems specifically related to

More information

Pink Pants Stalker EEL4665C. Steven Settle. Instructors: A. Antonio Arroyo Eric M. Schwartz. Teaching Assistants: Tim Martin Ryan Stevens

Pink Pants Stalker EEL4665C. Steven Settle. Instructors: A. Antonio Arroyo Eric M. Schwartz. Teaching Assistants: Tim Martin Ryan Stevens Pink Pants Stalker EEL4665C Steven Settle Instructors: A. Antonio Arroyo Eric M. Schwartz Teaching Assistants: Tim Martin Ryan Stevens Table of Contents Abstract...2 Executive Summary...2 Introduction...2

More information

Mobile Autonomous Robotic Sentry (MARS) with Facial Detection and Recognition

Mobile Autonomous Robotic Sentry (MARS) with Facial Detection and Recognition Mobile Autonomous Robotic Sentry (MARS) with Facial Detection and Recognition Tyler M. Lovelly University of Florida, Dept. of Electrical & Computer Engineering 12315 Clarendon Ct Spring Hill, FL 34609

More information

Arduino Smart Robot Car Kit User Guide

Arduino Smart Robot Car Kit User Guide User Guide V1.0 04.2017 UCTRONIC Table of Contents 1. Introduction...3 2. Assembly...4 2.1 Arduino Uno R3...4 2.2 HC-SR04 Ultrasonic Sensor Module with Bracket / Holder...5 2.3 L293D Motor Drive Expansion

More information

IMDL Fall 2010 Final Report

IMDL Fall 2010 Final Report IMDL Fall 2010 Final Report Robot Spotting Courtney Hayes Summary This robot project consists of a large robot and a smaller one interacting with each other. The larger robots objective is to track another

More information

Comparing Different Visual Motion Detection Algorithms

Comparing Different Visual Motion Detection Algorithms Comparing Different Visual Motion Detection Algorithms New Mexico Supercomputing Challenge Final Report April 1, 2014 Team: 143 School of Dreams Academy Team Members: Albert Reed Zack Daniels Chloe Grubb

More information

Jiggabot. University of Florida EEL 5666 Intelligent Machine Design Lab

Jiggabot. University of Florida EEL 5666 Intelligent Machine Design Lab Jiggabot University of Florida EEL 5666 Intelligent Machine Design Lab Student Name: Jerone Hammond Date: April 25, 2001 Instructor: Dr. A. Arroyo Table of Contents Abstract.2 Executive Summary 3 Introduction..4

More information

Index. Jeff Cicolani 2018 J. Cicolani, Beginning Robotics with Raspberry Pi and Arduino,

Index. Jeff Cicolani 2018 J. Cicolani, Beginning Robotics with Raspberry Pi and Arduino, A Accessor methods, 92 Adafruit, 9 Adafruit DC & Stepper Motor HAT assembling board adjustment, 199 circuit board, 199 kit, 197 pins, 197 preparation, 197 Raspberry Pi, 198, 204 removal, 201 rotation,

More information

Another Forking Robot

Another Forking Robot Another Forking Robot A.k.a. AFR Matt Silverman IMDL Summer 99 Table of Contents Abstract Page 3 Executive Summary 4 Introduction 5 Integrated System 5 Mobile Platform 6 Actuation 6 Sensors 6 Behaviors

More information

IMDL Final Report. EEL5666: Intelligent Machine Design Laboratory. Aaron Fisher. Robot: Lazy Maid

IMDL Final Report. EEL5666: Intelligent Machine Design Laboratory. Aaron Fisher. Robot: Lazy Maid IMDL Final Report EEL5666: Intelligent Machine Design Laboratory Aaron Fisher Robot: Lazy Maid Instructors: Dr. A. Antonio Arroyo Dr. Eric M. Schwartz TA: Thomas Vermeer Mike Pridgen Table of Contents

More information

OpenCV. OpenCV Tutorials OpenCV User Guide OpenCV API Reference. docs.opencv.org. F. Xabier Albizuri

OpenCV. OpenCV Tutorials OpenCV User Guide OpenCV API Reference. docs.opencv.org. F. Xabier Albizuri OpenCV OpenCV Tutorials OpenCV User Guide OpenCV API Reference docs.opencv.org F. Xabier Albizuri - 2014 OpenCV Tutorials OpenCV Tutorials: Introduction to OpenCV The Core Functionality (core module) Image

More information

CS4758: Rovio Augmented Vision Mapping Project

CS4758: Rovio Augmented Vision Mapping Project CS4758: Rovio Augmented Vision Mapping Project Sam Fladung, James Mwaura Abstract The goal of this project is to use the Rovio to create a 2D map of its environment using a camera and a fixed laser pointer

More information

Arduino Uno. Power & Interface. Arduino Part 1. Introductory Medical Device Prototyping. Digital I/O Pins. Reset Button. USB Interface.

Arduino Uno. Power & Interface. Arduino Part 1. Introductory Medical Device Prototyping. Digital I/O Pins. Reset Button. USB Interface. Introductory Medical Device Prototyping Arduino Part 1, http://saliterman.umn.edu/ Department of Biomedical Engineering, University of Minnesota Arduino Uno Power & Interface Reset Button USB Interface

More information

Robot For Assistance. Master Project ME-GY 996. Presented By: Karim Chamaa. Presented To: Dr. Vikram Kapila

Robot For Assistance. Master Project ME-GY 996. Presented By: Karim Chamaa. Presented To: Dr. Vikram Kapila Robot For Assistance Master Project ME-GY 996 Presented By: Karim Chamaa Presented To: Dr. Vikram Kapila Project Description Building a robot with an assistance duty. Goals: Build a cheap and independent

More information

Color Tracking Robot

Color Tracking Robot Color Tracking Robot 1 Suraksha Bhat, 2 Preeti Kini, 3 Anjana Nair, 4 Neha Athavale Abstract: This Project describes a visual sensor system used in the field of robotics for identification and tracking

More information

Laboratory of Applied Robotics

Laboratory of Applied Robotics Laboratory of Applied Robotics OpenCV: Shape Detection Paolo Bevilacqua RGB (Red-Green-Blue): Color Spaces RGB and HSV Color defined in relation to primary colors Correlated channels, information on both

More information

OpenCV. Rishabh Maheshwari Electronics Club IIT Kanpur

OpenCV. Rishabh Maheshwari Electronics Club IIT Kanpur OpenCV Rishabh Maheshwari Electronics Club IIT Kanpur Installing OpenCV Download and Install OpenCV 2.1:- http://sourceforge.net/projects/opencvlibrary/fi les/opencv-win/2.1/ Download and install Dev C++

More information

ROUNDING ERRORS LAB 1. OBJECTIVE 2. INTRODUCTION

ROUNDING ERRORS LAB 1. OBJECTIVE 2. INTRODUCTION ROUNDING ERRORS LAB Imagine you are traveling in Italy, and you are trying to convert $27.00 into Euros. You go to the bank teller, who gives you 20.19. Your friend is with you, and she is converting $2,700.00.

More information

(a) (b) (c) Fig. 1. Omnidirectional camera: (a) principle; (b) physical construction; (c) captured. of a local vision system is more challenging than

(a) (b) (c) Fig. 1. Omnidirectional camera: (a) principle; (b) physical construction; (c) captured. of a local vision system is more challenging than An Omnidirectional Vision System that finds and tracks color edges and blobs Felix v. Hundelshausen, Sven Behnke, and Raul Rojas Freie Universität Berlin, Institut für Informatik Takustr. 9, 14195 Berlin,

More information

EV3 Programming Workshop for FLL Coaches

EV3 Programming Workshop for FLL Coaches EV3 Programming Workshop for FLL Coaches Tony Ayad 2017 Outline This workshop is intended for FLL coaches who are interested in learning about Mindstorms EV3 programming language. Programming EV3 Controller

More information

CSE/EE-576, Final Project

CSE/EE-576, Final Project 1 CSE/EE-576, Final Project Torso tracking Ke-Yu Chen Introduction Human 3D modeling and reconstruction from 2D sequences has been researcher s interests for years. Torso is the main part of the human

More information

Android Spybot. ECE Capstone Project

Android Spybot. ECE Capstone Project Android Spybot ECE Capstone Project Erik Bruckner - bajisci@eden.rutgers.edu Jason Kelch - jkelch@eden.rutgers.edu Sam Chang - schang2@eden.rutgers.edu 5/6/2014 1 Table of Contents Introduction...3 Objective...3

More information

Academic Year Annexure I. 1. Project Title: Color sensor based multiple line follower robot with obstacle detection

Academic Year Annexure I. 1. Project Title: Color sensor based multiple line follower robot with obstacle detection Academic Year 2015-16 Annexure I 1. Project Title: Color sensor based multiple line follower robot with obstacle detection TABLE OF CONTENTS 1.1 Abstract 2-2 1.2 Motivation 3-3 1.3 Objective 3-3 2.1 Block

More information

Camera Positioning System

Camera Positioning System Camera Positioning System Team 79 Members: Junjiao Tian, Jialu Li, and Weicheng Jiang Spring 2017 TA: John Capozzo Table of Contents 1 Introduction 1.1 Objective 1.2 Background 1.3 High-level requirement

More information

Chapter 7 Building robot with MicroCamp kit

Chapter 7 Building robot with MicroCamp kit MicroCamp : ATmega8 Activity Kit Manual l 63 Chapter 7 Building robot with MicroCamp kit This chapter focus learning the applications of the MICROCAMP microcontroller. The building of a robot integrates

More information

Stereo Rig Final Report

Stereo Rig Final Report Stereo Rig Final Report Yifei Zhang Abstract The ability to generate 3D images for the underwater environment offers researchers better insights by enabling them to record scenes for future analysis. The

More information

CSCI 512 / EENG 512 Computer Vision Spring Lab 6. February 17, 2016

CSCI 512 / EENG 512 Computer Vision Spring Lab 6. February 17, 2016 Lab 6 February 17, 2016 NAME NAME This lab assignment should be done in teams of two. Go through the exercises below and show me your results. If you don t finish by the end of today s class, you may show

More information

Experimental Procedure

Experimental Procedure 1 of 14 9/10/2018, 11:38 AM https://www.sciencebuddies.org/science-fair-projects/project-ideas/robotics_p028/robotics/obstacle-avoiding-robot (http://www.sciencebuddies.org/science-fair-projects /project-ideas/robotics_p028/robotics/obstacle-avoiding-robot)

More information

University of Florida Department of Electrical and Computer Engineering EEL 5666 Intelligent Machines Design Laboratory MOCTAR. Final Design Report

University of Florida Department of Electrical and Computer Engineering EEL 5666 Intelligent Machines Design Laboratory MOCTAR. Final Design Report University of Florida Department of Electrical and Computer Engineering EEL 5666 Intelligent Machines Design Laboratory MOCTAR Final Design Report Justin McCollum 12/12/97 Instructor: TA: Keith L. Doty

More information

Programming. C++ Basics

Programming. C++ Basics Programming C++ Basics Introduction to C++ C is a programming language developed in the 1970s with the UNIX operating system C programs are efficient and portable across different hardware platforms C++

More information

Embedded Robotics. Software Development & Education Center

Embedded Robotics. Software Development & Education Center Software Development & Education Center Embedded Robotics Robotics Development with 8051 µc INTRODUCTION TO ROBOTICS Types of robots Legged robots Mobile robots Autonomous robots Manual robots Robotic

More information

Introduction to the C++ Programming Language

Introduction to the C++ Programming Language LESSON SET 2 Introduction to the C++ Programming Language OBJECTIVES FOR STUDENT Lesson 2A: 1. To learn the basic components of a C++ program 2. To gain a basic knowledge of how memory is used in programming

More information

Vinci, the painter! Sai Prasanth Krishnamoorthy Mrudula Vaidya Lalit Damodaran

Vinci, the painter! Sai Prasanth Krishnamoorthy Mrudula Vaidya Lalit Damodaran Vinci, the painter! Sai Prasanth Krishnamoorthy Mrudula Vaidya Lalit Damodaran Overview and Purpose More than 100 million disabled Children with severe motor disabilities do not get to enjoy and express

More information

REVIEW. The C++ Programming Language. CS 151 Review #2

REVIEW. The C++ Programming Language. CS 151 Review #2 REVIEW The C++ Programming Language Computer programming courses generally concentrate on program design that can be applied to any number of programming languages on the market. It is imperative, however,

More information

5. Control Statements

5. Control Statements 5. Control Statements This section of the course will introduce you to the major control statements in C++. These control statements are used to specify the branching in an algorithm/recipe. Control statements

More information

Sensors and Motors Lab

Sensors and Motors Lab Sensors and Motors Lab Gauri Gandhi Team G Robographers Teammates: Rohit Dashrathi Jimit Gandhi Tiffany May Sida Wang ILR #1 October 16, 2015 a. Individual Progress For the Sensors and Motors Lab, I was

More information

AlphaBot2 robot building kit for Raspberry Pi 3 Model B

AlphaBot2 robot building kit for Raspberry Pi 3 Model B AlphaBot2 robot building kit for Raspberry Pi 3 Model B SKU 110060863 Description This AlphaBot2 robot kit is designed to use with Raspberry Pi 3 Model B. It features rich common robot functions including

More information

IMAGE PROCESSING AND OPENCV. Sakshi Sinha Harshad Sawhney

IMAGE PROCESSING AND OPENCV. Sakshi Sinha Harshad Sawhney l IMAGE PROCESSING AND OPENCV Sakshi Sinha Harshad Sawhney WHAT IS IMAGE PROCESSING? IMAGE PROCESSING = IMAGE + PROCESSING WHAT IS IMAGE? IMAGE = Made up of PIXELS. Each Pixels is like an array of Numbers.

More information

BirdBuggy Autonomous Mobile Parrot Perch

BirdBuggy Autonomous Mobile Parrot Perch BirdBuggy Autonomous Mobile Parrot Perch Andrew C Gray University of Florida Machine Intelligence Lab (MIL) Gainesville, FL 32611 +1 319 541-1182 viron11111@ufl.edu Dr. A. Antonio Arroyo University of

More information

Scott Kanowitz, A. Antonio Arroyo. Machine Intelligence Laboratory Department of Electrical and Computer Engineering

Scott Kanowitz, A. Antonio Arroyo. Machine Intelligence Laboratory Department of Electrical and Computer Engineering Scott Kanowitz, A. Antonio Arroyo Machine Intelligence Laboratory Department of Electrical and Computer Engineering 332 Benton Hall University of Florida Gainesville, FL 32611 Email: skano@mil.ufl.edu

More information

Maciej Sobieraj. Lecture 1

Maciej Sobieraj. Lecture 1 Maciej Sobieraj Lecture 1 Outline 1. Introduction to computer programming 2. Advanced flow control and data aggregates Your first program First we need to define our expectations for the program. They

More information

CS 4758 Robot Navigation Through Exit Sign Detection

CS 4758 Robot Navigation Through Exit Sign Detection CS 4758 Robot Navigation Through Exit Sign Detection Aaron Sarna Michael Oleske Andrew Hoelscher Abstract We designed a set of algorithms that utilize the existing corridor navigation code initially created

More information

1. Mesh Coloring a.) Assign unique color to each polygon based on the polygon id.

1. Mesh Coloring a.) Assign unique color to each polygon based on the polygon id. 1. Mesh Coloring a.) Assign unique color to each polygon based on the polygon id. Figure 1: The dragon model is shown rendered using a coloring scheme based on coloring each triangle face according to

More information

The Arduino Briefing. The Arduino Briefing

The Arduino Briefing. The Arduino Briefing Mr. Yee Choon Seng Email : csyee@simtech.a-star.edu.sg Design Project resources http://guppy.mpe.nus.edu.sg/me3design.html One-Stop robotics shop A-Main Objectives Pte Ltd, Block 1 Rochor Road, #02-608,

More information

Arduino Prof. Dr. Magdy M. Abdelhameed

Arduino Prof. Dr. Magdy M. Abdelhameed Course Code: MDP 454, Course Name:, Second Semester 2014 Arduino What is Arduino? Microcontroller Platform Okay but what s a Microcontroller? Tiny, self-contained computers in an IC Often contain peripherals

More information

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces Basic memory model Using functions Writing functions Basics Prototypes Parameters Return types Functions and memory Names and namespaces When a program runs it requires main memory (RAM) space for Program

More information

International Journal of Engineering Trends and Applications (IJETA) Volume 4 Issue 6, Nov-Dec 2017

International Journal of Engineering Trends and Applications (IJETA) Volume 4 Issue 6, Nov-Dec 2017 RESEARCH ARTICLE OPEN ACCESS Robot Navigation Using MATLAB S Bounding Box Algorithm Vishal Thakur [1], Vaibhav Khedkar [2], Ajay Patkar [3], Akshay Chidrawar [4] Department of Electronics Engineering Vivekanand

More information

Advance Robotics with Embedded System Design (ARESD)

Advance Robotics with Embedded System Design (ARESD) Advance Robotics with Embedded System Design (ARESD) LEARN HOW TO: Use Arduino hardware &Arduino programming for microcontroller based hobby project development Use WinAVRcross compiler formicrocontroller

More information

Control System Consideration of IR Sensors based Tricycle Drive Wheeled Mobile Robot

Control System Consideration of IR Sensors based Tricycle Drive Wheeled Mobile Robot Control System Consideration of IR Sensors based Tricycle Drive Wheeled Mobile Robot Aye Aye New, Aye Aye Zan, and Wai Phyo Aung Abstract Nowadays, Wheeled Mobile Robots (WMRs) are built and the control

More information

Automated Tennis - Image Processing and Launcher. Group 14 Michael Rathbun Aviel Yashar Khoa Hoang Kyle Willnow

Automated Tennis - Image Processing and Launcher. Group 14 Michael Rathbun Aviel Yashar Khoa Hoang Kyle Willnow Automated Tennis - Image Processing and Launcher Group 14 Michael Rathbun Aviel Yashar Khoa Hoang Kyle Willnow Motivation Make tennis as convenient as bowling Appeal to the lazy and luxurious Increase

More information

Intro to Programming & C Why Program? 1.2 Computer Systems: Hardware and Software. Why Learn to Program?

Intro to Programming & C Why Program? 1.2 Computer Systems: Hardware and Software. Why Learn to Program? Intro to Programming & C++ Unit 1 Sections 1.1-4 and 2.1-10, 2.12-13, 2.15-17 CS 1428 Spring 2019 Jill Seaman 1.1 Why Program? Computer programmable machine designed to follow instructions Program a set

More information

Junying Huang Fangjie Zhou. Smartphone Locker

Junying Huang Fangjie Zhou. Smartphone Locker Junying Huang Fangjie Zhou Smartphone Locker Motivation and Concept Smartphones are making our lives more and more convenient. In addition to some basic functions like making calls and sending messages,

More information

Multimedia Retrieval Exercise Course 2 Basic of Image Processing by OpenCV

Multimedia Retrieval Exercise Course 2 Basic of Image Processing by OpenCV Multimedia Retrieval Exercise Course 2 Basic of Image Processing by OpenCV Kimiaki Shirahama, D.E. Research Group for Pattern Recognition Institute for Vision and Graphics University of Siegen, Germany

More information

Colorado School of Mines. Computer Vision. Professor William Hoff Dept of Electrical Engineering &Computer Science.

Colorado School of Mines. Computer Vision. Professor William Hoff Dept of Electrical Engineering &Computer Science. Professor William Hoff Dept of Electrical Engineering &Computer Science http://inside.mines.edu/~whoff/ 1 Pose Estimation in OpenCV 2 Pose Estimation of a Known Model Assume we have a known object model,

More information

Intelligent Machine Design Lab

Intelligent Machine Design Lab Intelligent Machine Design Lab EML 5666 Final Report Luther Lloyd III Mechanical Engineer Table of Contents 1. Abstract 3 2. Executive Summary 3 3. Introduction 4 4. Integrated System 5 5. Mobile Platform

More information

MS4SSA Robotics Module:

MS4SSA Robotics Module: MS4SSA Robotics Module: Programming and Sensors Brad Miller and Kim Hollan What are we doing today? Talk about why to program robots Learn about basic RobotC programming Learn how to make the robot move

More information

Accelerometer-Based Musical Instrument

Accelerometer-Based Musical Instrument Accelerometer Music Instrument University of Texas at Austin TI Innovation Challenge 2015 Project Report Team Leader: Team Members: Advising Professor: Video Texas Instruments Mentor (if applicable): Date:12/13/2014

More information

The Maze Runner Zumo version. Alexander Kirillov

The Maze Runner Zumo version. Alexander Kirillov The Maze Runner Zumo version Alexander Kirillov URL: http://sigmacamp.org/mazerunner-zumo E-mail address: shurik179@gmail.com This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

More information

Chapter Four: Loops. Slides by Evan Gallagher. C++ for Everyone by Cay Horstmann Copyright 2012 by John Wiley & Sons. All rights reserved

Chapter Four: Loops. Slides by Evan Gallagher. C++ for Everyone by Cay Horstmann Copyright 2012 by John Wiley & Sons. All rights reserved Chapter Four: Loops Slides by Evan Gallagher The Three Loops in C++ C++ has these three looping statements: while for do The while Loop while (condition) { statements } The condition is some kind of test

More information

LME Software Block Quick Reference 1. Common Palette

LME Software Block Quick Reference 1. Common Palette LME Software Block Quick Reference Common Palette Move Block Use this block to set your robot to go forwards or backwards in a straight line or to turn by following a curve. Define how far your robot will

More information

Yushun He Written Report Project: DCR EEL5666 FALL 2011 Intelligent Machines Design Laboratory Dr. Arroyo and Dr. Schwartz

Yushun He Written Report Project: DCR EEL5666 FALL 2011 Intelligent Machines Design Laboratory Dr. Arroyo and Dr. Schwartz Yushun He Written Report Project: DCR EEL5666 FALL 2011 Intelligent Machines Design Laboratory Dr. Arroyo and Dr. Schwartz Table of Contents Opening Abstract...1 Executive Summary.....1 Introduction...2

More information

Robolab. Table of Contents. St. Mary s School, Panama. Robotics. Ch. 5: Robolab, by: Ernesto E. Angulo J.

Robolab. Table of Contents. St. Mary s School, Panama. Robotics. Ch. 5: Robolab, by: Ernesto E. Angulo J. Robolab 5 Table of Contents Objectives...2 Starting the program...2 Programming...3 Downloading...8 Tools...9 Icons...9 Loops and jumps...11 Multiple tasks...12 Timers...12 Variables...14 Sensors...15

More information

Review. Modules. CS 151 Review #6. Sample Program 6.1a:

Review. Modules. CS 151 Review #6. Sample Program 6.1a: Review Modules A key element of structured (well organized and documented) programs is their modularity: the breaking of code into small units. These units, or modules, that do not return a value are called

More information

Project 1 : Dead Reckoning and Tracking

Project 1 : Dead Reckoning and Tracking CS3630 Spring 2012 Project 1 : Dead Reckoning and Tracking Group : Wayward Sons Sameer Ansari, David Bernal, Tommy Kazenstein 2/8/2012 Wayward Sons CS3630 Spring 12 Project 1 Page 2 of 12 CS 3630 (Spring

More information

More Arduino Programming

More Arduino Programming Introductory Medical Device Prototyping Arduino Part 2, http://saliterman.umn.edu/ Department of Biomedical Engineering, University of Minnesota More Arduino Programming Digital I/O (Read/Write) Analog

More information

Arduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S

Arduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S Arduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S Overview Motivation Circuit Design and Arduino Architecture Projects Blink the LED Switch Night Lamp

More information

Arduino Part 2. Introductory Medical Device Prototyping

Arduino Part 2. Introductory Medical Device Prototyping Introductory Medical Device Prototyping Arduino Part 2, http://saliterman.umn.edu/ Department of Biomedical Engineering, University of Minnesota More Arduino Programming Digital I/O (Read/Write) Analog

More information

Unlocking the Potential of Your Microcontroller

Unlocking the Potential of Your Microcontroller Unlocking the Potential of Your Microcontroller Ethan Wu Storming Robots, Branchburg NJ, USA Abstract. Many useful hardware features of advanced microcontrollers are often not utilized to their fullest

More information

The American University in Cairo Department of Computer Science & Engineering CSCI &09 Dr. KHALIL Exam-I Fall 2011

The American University in Cairo Department of Computer Science & Engineering CSCI &09 Dr. KHALIL Exam-I Fall 2011 The American University in Cairo Department of Computer Science & Engineering CSCI 106-07&09 Dr. KHALIL Exam-I Fall 2011 Last Name :... ID:... First Name:... Form I Section No.: EXAMINATION INSTRUCTIONS

More information

Rover 5. Explorer kit

Rover 5. Explorer kit Rover 5 Explorer kit The explorer kit provides the perfect interface between your Rover 5 chassis and your micro-controller with all the hardware you need so you can start programming right away. PCB Features:

More information

CS283: Robotics Fall 2016: Software

CS283: Robotics Fall 2016: Software CS283: Robotics Fall 2016: Software Sören Schwertfeger / 师泽仁 ShanghaiTech University Mobile Robotics ShanghaiTech University - SIST - 18.09.2016 2 Review Definition Robot: A machine capable of performing

More information

MAE106 Laboratory Exercises Lab # 1 - Laboratory tools

MAE106 Laboratory Exercises Lab # 1 - Laboratory tools MAE106 Laboratory Exercises Lab # 1 - Laboratory tools University of California, Irvine Department of Mechanical and Aerospace Engineering Goals To learn how to use the oscilloscope, function generator,

More information

2002 Intelligent Ground Vehicle Competition Design Report. Grizzly Oakland University

2002 Intelligent Ground Vehicle Competition Design Report. Grizzly Oakland University 2002 Intelligent Ground Vehicle Competition Design Report Grizzly Oakland University June 21, 2002 Submitted By: Matt Rizzo Brian Clark Brian Yurconis Jelena Nikolic I. ABSTRACT Grizzly is the product

More information

AMRobot. Educational mini-robot platform

AMRobot. Educational mini-robot platform AMRobot Educational mini-robot platform Producer: AMEX Research Corporation Technologies Modlińska Str. 1, PL 15-066 Bialystok (Poland) Tel.: +48 602723295, Fax: +48 856530703 e-mail: amexinfo@amex.pl

More information

Today in CS161. Week #3. Learn about. Writing our First Program. See example demo programs. Data types (char, int, float) Input and Output (cin, cout)

Today in CS161. Week #3. Learn about. Writing our First Program. See example demo programs. Data types (char, int, float) Input and Output (cin, cout) Today in CS161 Week #3 Learn about Data types (char, int, float) Input and Output (cin, cout) Writing our First Program Write the Inches to MM Program See example demo programs CS161 Week #3 1 Data Types

More information

(Refer Slide Time: 00:01:30)

(Refer Slide Time: 00:01:30) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 32 Design using Programmable Logic Devices (Refer Slide Time: 00:01:30)

More information

Customize Your Environment

Customize Your Environment 26 c h a p t e r 2 Customize Your Environment Every vector drawing program comes with default settings. In general, the defaults are OK, but customizing your preferences will make creating your vector

More information

EEL 4924: Senior Design. 27 January Project Design Report: Voice Controlled RC Device

EEL 4924: Senior Design. 27 January Project Design Report: Voice Controlled RC Device EEL 4924: Senior Design 27 January 2009 Project Design Report: Voice Controlled RC Device Team VR: Name: Name: Kyle Stevenson Email: chrisdo@ufl.edu Email: relakyle@ufl.edu Phone: 8135271966 Phone: 8132051287

More information

Slide Set 1. for ENEL 339 Fall 2014 Lecture Section 02. Steve Norman, PhD, PEng

Slide Set 1. for ENEL 339 Fall 2014 Lecture Section 02. Steve Norman, PhD, PEng Slide Set 1 for ENEL 339 Fall 2014 Lecture Section 02 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Fall Term, 2014 ENEL 353 F14 Section

More information

Robotic Systems ECE 401RB Fall 2006

Robotic Systems ECE 401RB Fall 2006 The following notes are from: Robotic Systems ECE 401RB Fall 2006 Lecture 15: Processors Part 3 Chapter 14, G. McComb, and M. Predko, Robot Builder's Bonanza, Third Edition, Mc- Graw Hill, 2006. I. Peripherals

More information

Ch 22 Inspection Technologies

Ch 22 Inspection Technologies Ch 22 Inspection Technologies Sections: 1. Inspection Metrology 2. Contact vs. Noncontact Inspection Techniques 3. Conventional Measuring and Gaging Techniques 4. Coordinate Measuring Machines 5. Surface

More information

AUTONOMOUS CONTROL OF AN OMNI-DIRECTIONAL MOBILE ROBOT

AUTONOMOUS CONTROL OF AN OMNI-DIRECTIONAL MOBILE ROBOT Projects, Vol. 11, 2004 ISSN 1172-8426 Printed in New Zealand. All rights reserved. 2004 College of Sciences, Massey University AUTONOMOUS CONTROL OF AN OMNI-DIRECTIONAL MOBILE ROBOT C. J. Duncan Abstract:

More information

CS 142 Style Guide Grading and Details

CS 142 Style Guide Grading and Details CS 142 Style Guide Grading and Details In the English language, there are many different ways to convey a message or idea: some ways are acceptable, whereas others are not. Similarly, there are acceptable

More information