Pawel Cieslewski Robo-Retriever Formal Report
|
|
- Francis Rogers
- 6 years ago
- Views:
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 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 informationWall-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 informationAutonomous 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 informationEEL 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 informationFinal 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 informationAlexander 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 informationBALL 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 informationWallmaster 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 informationTable 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 informationFinal 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 informationD-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 informationFormal 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 informationIntelligent 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 informationExperiment 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 informationFinal 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 informationSystemVision 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 informationFinal 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 informationHow 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 informationPink 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 informationMobile 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 informationArduino 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 informationIMDL 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 informationComparing 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 informationJiggabot. 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 informationIndex. 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 informationAnother 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 informationIMDL 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 informationOpenCV. 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 informationCS4758: 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 informationArduino 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 informationRobot 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 informationColor 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 informationLaboratory 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 informationOpenCV. 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 informationROUNDING 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
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 informationEV3 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 informationCSE/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 informationAndroid 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 informationAcademic 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 informationCamera 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 informationChapter 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 informationStereo 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 informationCSCI 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 informationExperimental 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 informationUniversity 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 informationProgramming. 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 informationEmbedded 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 informationIntroduction 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 informationVinci, 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 informationREVIEW. 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 information5. 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 informationSensors 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 informationAlphaBot2 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 informationIMAGE 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 informationBirdBuggy 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 informationScott 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 informationMaciej 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 informationCS 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 information1. 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 informationThe 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 informationArduino 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 informationBasic 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 informationInternational 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 informationAdvance 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 informationControl 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 informationAutomated 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 informationIntro 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 informationJunying 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 informationMultimedia 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 informationColorado 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 informationIntelligent 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 informationMS4SSA 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 informationAccelerometer-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 informationThe 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 informationChapter 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 informationLME 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 informationYushun 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 informationRobolab. 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 informationReview. 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 informationProject 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 informationMore 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 informationArduino 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 informationArduino 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 informationUnlocking 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 informationThe 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 informationRover 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 informationCS283: 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 informationMAE106 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 information2002 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 informationAMRobot. 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 informationToday 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)
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 informationCustomize 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 informationEEL 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 informationSlide 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 informationRobotic 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 informationCh 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 informationAUTONOMOUS 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 informationCS 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