Caddy. Scott Root Spring 2014

Size: px
Start display at page:

Download "Caddy. Scott Root Spring 2014"

Transcription

1 Caddy Scott Root Spring 2014 University of Florida Department of Electrical and Computer Engineering EEL 5666 IMDL Final Report Instructors: A. Antonio Arroyo, Eric M. Schwartz TAs: Josh Weaver, Nick Cox, Andy Gray, Daniel Frank

2 2 Table of Contents Abstract... 3 Executive Summary... 3 Introduction... 3 Integrated System... 4 Mobile Platform... 4 Actuation... 6 Sensors... 7 Behaviors... 9 Experimental Layout and Results Conclusion Documentation Appendices... 13

3 3 Abstract Caddy is an autonomous robot for the collection of golf balls. It utilizes a smartphone camera and OpenCV to detect and track balls for collection. When Caddy drives over to a golf ball, it uses servos, a brush, and a scoop to sweep up the ball and deposit it in a collection bucket. Caddy uses IR rangefinders as well as bump switches to successfully navigate its environment. Executive Summary Caddy is an autonomous robot designed to navigate its environment to find and collect golf balls. It is controlled by an Arduino Mega 2650, a dual H-bridge motor driver, and OpenCV running on my laptop. Wireless communication between my laptop and the robot is accomplished through the use of a pair of Wixel wireless communication devices. Caddy s main cabinet houses most of the electronics. Inside are the Arduino, the motor controller, an axel and both motors, one Wixel, a circuit board, a battery, status LEDs, and a power switch. Two reversible DC motors with 90mm wheels attached provide locomotion, while plastic ball casters provide support and smooth turning. The collection of the golf balls is accomplished by two Hi-Torque servos attached to a brush and scoop. Three IR rangefinders and four bumps sensors are used for obstacle avoidance. For object detection, a smartphone camera and an IR LED/Transistor pair are used. Caddy begins its task by calibrating all of its IR sensors. It then begins to drive straight and starts looking for objects and obstacles. Using its camera and OpenCV, if Caddy detects the specified object (in this case golf balls) it will drive towards it and collect the object. Caddy does this by sweeping the object up the ramp and into the scoop. It then lifts its scoop and dumps the object into its collection bucket. If Caddy detects an obstacle instead, it will utilize obstacle avoidance routines to navigate away from the detected obstacles. Introduction One of the ways my friends and I kill time at our fraternity house is by driving plastic practice golf balls. They don t go far, but they re fun to hit. The problem is cleaning them up afterwards is annoying. One day I was driving balls trying to figure out what I should do for my IMDL project, and the idea came to me. I decided to make an autonomous robot that would collect the golf balls for me.

4 4 Integrated System Caddy is controlled by an Arduino Mega 2560 microcontroller. It utilizes servos and DC motors for actuation. Three IR rangefinders, four bump sensors, an IR LED/transistor pair, and a smartphone camera are used to determine how Caddy navigates its environment. A pair of Wixel wireless communication modules allows the Arduino to communicate with OpenCV running on my laptop. See figure 1 below for details on the system. Mobile Platform Figure 1: Circuit Schematic The mobile platform consists of several parts (see figure 2 for detail). The main body consists of the cabinet and front extension. The front extension houses the brush, scoop, ramp, servos, and sensors. The cabinet houses the Arduino, motors, motor controller, 11.1V 5000mAh battery, power switch, status LEDs, Wixel, and Wixel Arduino shield/circuit board (see figure 3 for detail). The cabinet also contains magnetic latching points that allow the access flap to stay closed and the collection bucket to stay in place on top of the cabinet. This allows for easy access to the internals while keeping the wiring out of sight.

5 5 Two 90mm wheels are used on either side of the robot conjoined by an axel made from a PVC pipe, ensuring that the wheels are aligned. The axel is located in the front of the cabinet, approximately in the middle of the robot. The battery, which is large and heavy, is placed above the axel to minimize the torque it places on the motors. Six plastic ball casters are also placed on the robot (two at the rear of the cabinet, four on the front extension) to allow for balance and smooth driving. The combination of the ramp, brush, and scoop allows golf balls to be transported from the ground to the collection bucket. When available, the sweep moves the golf balls up the ramp and into the scoop. The scoop then rotates upwards, and gravity causes the balls to roll into the collection bucket. Figure 2: Platform

6 6 Figure 3: Cabinet Internals Actuation Actuation for the robot is achieved by two DC motors and two servos, all bought from Pololu.com (see figure 4 for detail). The DC motors actuate the wheels and are powered by an 11.1 Volt source and have a peak output of 6 Amps. At peak conditions the motors can supply 130 Oz-In of torque at 130 RPM. Both motors are controlled by a dual H-bridge motor controller from Atlanta Robotics, and are capable of supplying 15 Amps continuous or 30 Amps peak per channel. Each motor is controlled by a single PWM input as well as two digital inputs. The PWM controls the speed of the motor and the binary combination of the digital inputs determines forward, reverse, or braking movements. I decided to use two wheels so that my robot would be able to turn about a single point. These motors have more than enough torque to carry the robot, but I overestimated how fast they would be. I have to slow down the motors to less than 1/5 th of their max speed in order to get the robot to move slow enough to process the camera feed. The two servos are HD high-torque (240 Oz-In) servos. One is attached to the brush and one is attached to the scoop. Both are controlled by a single PWM input that determines their rotational position (out of 180 degrees). The brush servo actuates first to sweep golf balls up the ramp and into the scoop, then the servo returns to its initial

7 7 position. The scoop servo then tilts up, depositing the ball into the collection bucket. The servo then returns to its starting position. This routine is referred to as a sweep and scoop. A lesson I learned while implementing the actuation is that if the floor is uneven, the wheels won t always touch the ground. This seems obvious but it s easy to overlook. I was able to overcome this issue by wrapping three rubber bands around each wheel then slipping the rubber tread over top. This ensures that the wheels are always touching the ground, and improved my robots overall driving performance. Another lesson I learned was to not buy parts from India. I ordered a servo, motor controller, and battery from there and none of them worked. No refunds for a reason, I suppose. Sensors Figure 4: Actuation Bump Sensors: There are four bump sensors located on the front extension (see figure 6 for location). They consist of simple lever switches configured as normally open and are tied to a 10kΩ pull-up resistor. When closed, the output of the switch is pulled low. Each bump switch has a wooden arm attached to it to increase area of effectiveness. The rear bump switches protect the wheels from catching on anything (chair legs, walls, etc ) while the front switches tell the robot when it has turned too far.

8 8 IR Rangefinders: There are three IR (infrared) Rangefinders located on the front extension (see figure 6 for location). They consist of 10-80cm GP2Y0A21 Sharp distance sensors, which are powered by 5V and have a single analog output. The IRRF is read through the Arduino s built in ADC (analog to digital converter), producing a number between 0 and The distance to voltage relationship is shown in figure 5. Figure 5: Distance-Voltage Curve (pololu.com) IR LED & IR Transistor Pair: This sensor is located directly under the front bump switches. The IR LED forms a beam directed at the IR transistor that spans the length of the ramp. The IR beam acts as the gate signal of the transistor; therefore, when the beam is blocked a different voltage will be measured on the output of the transistor (see figure 1 for schematic). This voltage is measured by the Arduino s ADC, which allows the robot to sense if there is an object waiting to be collected or not. Smartphone Camera: Caddy s vision system is designed to work with any smartphone running an IP camera app. The video feed from the phone is uploaded to a local network address. Using a computer on the same network, a program called IP Camera Adapter is used to pull the video feed from the network and trick my laptop into thinking the feed is from a local webcam. Another program called ManyCam is used to access the newly created fake webcam. Visual Studio 2012 can then grab this feed to be analyzed using OpenCV. I am

9 9 using the app BL-IP Cam on my Droid X2 for this sensor. It transmits at VGA (640x480) resolution at 30 frames per second. Under optimal wifi conditions, there is only a quarter second lag between the feed and the processing. Behavior Figure 6: Sensor Placement Arduino: When Caddy is turned on, it is initially set in a wait state. It is waiting for a bump sensor to be pressed. When a bump sensor is pressed, the nearest IR rangefinder is calibrated by reading the distance ten times and averaging the results. This value becomes the new threshold value for the rangefinders. If calibration is skipped, a default value will be used for each threshold. When the front right bump sensor is pressed, a similar calibration occurs with the IR LED/transistor pair, then the robot starts driving straight. Caddy now enters a four state loop that will continue until he is turned off, or receives a special debug command. The first state is to check if an object is ready to be collected. The Arduino does this by sampling the IR transistors analog value. If this value is greater than the calibrated threshold value (plus tolerance), a sweep and scoop routine is triggered. In this routine the brush sweeps the ball into the scoop. The robot then comes to a halt as the brush returns to its initial position and the scoop rotates upwards. Gravity cause the ball to roll into the collection bucket, and the sweep returns to it s initial position. The robot then continues straight.

10 10 The next state is to check the camera feed. If an L, M, or R is received serially from the laptop (via the Wixel), the robot will start to drift left, drive straight, or drift right respectively. This will cause the robot to center itself on the ball and drive straight towards it for collection. This state also checks for debug commands sent serially from the laptop. The next takes an averaged read from each IR rangefinder. If the value returned is greater than the threshold value a binary digit is set in a 3-digit number (left sensor = MSB, right sensor = LSB). A total of 8 combinations are possible, and each combination has a different obstacle avoidance routine associated with it. These routines are timed routines that will navigate the robot away from any nearby sensors. I decided to use pretimed routines over more efficient routines so that my robot would cover more ground and potentially see more objects. The final state is to check the bump sensors. If one is pressed the robot simply navigates away from the direction which it touched using pre-timed routines. After this, the four state loop restarts. Visual Studio & Open CV: My camera vision software was written in Microsoft Visual Studio 2012 on Windows 7 utilizing OpenCV, an open source computer vision algorithm depository. The code for this consists of code written by myself, code gathered from open source databases, and Josh Weaver s HSV color detection code. The program begins by initializing variables and opening the wireless serial port established by the pair of Wixels. It then waits for a mouse click that will read the HSV values of the clicked pixel and store the values in threshold variables. A loop is entered here. The program grabs a still image from the feed and converts the pixels into the HSV color space. It compares the HSV value of every pixel with the threshold values within some tolerance. If the color is close to the threshold the pixel will turn white. Otherwise, it will turn black. The program then uses erosion and dilation techniques to filter out noise. After this, I tried to add in code to only recognize one object at a time. I did this by identifying contours, computing their areas, and filtering out all but the biggest. Unfortunately, my knowledge of coding is based off of one course in Java, which I extrapolated to C for junior design and Microprocessors, which I extrapolated to C++ for this course. Because I m three degrees removed from the language I know, I wasn t able to get the syntax correct for this part in time. After the mask is established, the center of mass is computed from the locations of the white pixels. The last analyzed image is displayed along with its associated mask. If the x value of the center of mass is on the left, middle, or right side of the screen, a green, blue, or red dot will be displayed respectively at the center of mass and an L, M or R will be serially sent respectively to the Arduino via the Wixel. The program will continue to loop through this until Q is pressed, at which it will exit the program.

11 11 Experimental Layout and Results As a whole, the design and implementation for Caddy stayed largely consistent throughout the entire process. The only major disparity between design and implementation was the material that the robot is made from. The original design was for an entirely 3D printed robot, however this proved unfeasible. I adopted my design to some 3D printed parts, but my 3D printing contact ended up falling through. My finished robot ended up being a clever construction of wood, cardboard, Styrofoam, moldable plastic, and pvc. Smaller iterations did occur. I went through two different motor controllers before finding one that worked (the first two didn t provide enough power). This taught me when in doubt go for more capabilities not less. I also went through two sets of motors; the first set was way too fast and didn t have enough torque. The only other change was that the robot was originally called Shelly and designed to pick up shell casings. Given the ammo shortage, however, the driving range has proven a more practical hobby than the firing range, leading me to repurpose my robot. In it s current iteration, Caddy drives slowly and deliberately to allow for more effective processing. It navigates even crowded spaces quite effectively and in optimal wifi conditions it is excellent at performing the task it was designed for. Conclusion Overall, I was able to accomplish most of what I set out to do. I was able to effectively control both my motors and servos in a mechanically sound way. Caddy s obstacle detection and avoidance routines are better than they need to be. The IR plane is effective at detecting golf balls and collecting is almost always successful. My smartphone adequately transmits a live video feed, and the Wixel units do a great job of communicating with the Arduino. And the robot also looks good, with few visible wires, which is always a plus. The obstacle avoidance capabilities turned out much better than expected, my robot is able to navigate the cafeteria-esque kitchen in my fraternity house exceptionally well (lots of chairs and tables). I am also particularly satisfied that I was able to use my smartphone as the camera (or any smartphone for that matter, it can change out very quickly). The wiring is also particularly neat and organized considering how much more of a rats nest it could have been. This projects limitation was definitely my lack of familiarity with C++. As I explained early the only formal coding education I ve had has been a semester of Java, so fumbling with syntax was definitely my downfall. The most obvious improvements I could make would be to my vision processing just to make it more accurate. The brush servo could also be more powerful, the ramp could be more smooth, and the plastic ball casters should be replaced with metal ones. Through all this, I thoroughly enjoyed working on this project. It has taught me so much about design, controls, and automation that I wouldn t have learned otherwise. I m very satisfied with the way my robot turned out, as well as with the experience.

12 12 Documentation IR Rangefinder: DC Motors: Wixel: Motor Controller: Arduino: Servos:

13 13 Appendices Flowcharts: Arduino/Visual Studio

14 14 Arduino Code: #include <Servo.h> //Set Global Variables volatile int RF = 0; volatile int FLV = 0; volatile int FRV = 0; volatile int BLV = 0; volatile int BRV = 0; volatile int SV = 0; volatile int RFLthresh = 225; volatile int RFMthresh = 150; volatile int RFRthresh = 225; volatile int IRthresh = 0; //Set Variables int forward = 1; int reverse = -1; int brake = 0; int irled = 53; //Status LED's int cled = 51; int rfled = 49; int bled = 47;

15 15 int M1 = 13; //Motor Control int M2 = 12; int M3 = 9; int M4 = 8; int PWM1 = 11; int PWM2 = 10; int FL = 6; //Bump Sensors int FR = 7; int BL = 4; int BR = 5; int sweep = A3; //IR transistor int RFL = A2; //IR Rangefinders( int RFM = A1; int RFR = A0; Servo servo1; // create servo object to control sweep servo Servo servo2; // create servo object to control scoop servo int pos = 80; // variable to store sweep servo position int posit = 25; // variable to store scoop servo position void setup(){ pinmode(m1, OUTPUT);

16 16 pinmode(m2, OUTPUT); pinmode(m3, OUTPUT); pinmode(m4, OUTPUT); pinmode(irled, OUTPUT); pinmode(cled, OUTPUT); pinmode(rfled, OUTPUT); pinmode(bled, OUTPUT); Serial.begin(115200); //Set baud rate servo1.attach(3); // attaches the servo on pin 3 to the servo object servo2.attach(2); void loop(){ //Initialize Servo positions servo1.write(80); servo2.write(25); delay(250); while(1){ //Calibrate IR Rangefinders FRV = digitalread(fr); FLV = digitalread(fl); BRV = digitalread(br);

17 17 BLV = digitalread(bl); //Take 10 samples and average if corresponding bump sensor is pressed if(flv == LOW){ RFMthresh = 0; int thresh = 0; for(int i = 0; i < 10; i++){ thresh = analogread(rfm); RFMthresh = RFMthresh+thresh; RFMthresh = RFMthresh/10; //Serial.println(RFMthresh); delay(500); if(brv == LOW){ RFRthresh = 0; int thresh = 0; for(int i = 0; i < 10; i++){ thresh = analogread(rfr); RFRthresh = RFRthresh+thresh; RFRthresh = RFRthresh/10; //Serial.println(RFRthresh);

18 18 delay(500); if(blv == LOW){ RFLthresh = 0; int thresh = 0; for(int i = 0; i < 10; i++){ thresh = analogread(rfl); RFLthresh = RFLthresh+thresh; RFLthresh = RFLthresh/10; //Serial.println(RFLthresh); delay(500); //If front right BS is pressed, calibrate IR transistor and begin if(frv == LOW){ //Serial.println("GO"); for(int i = 0; i < 10; i++){ int thresh = analogread(sweep); IRthresh = IRthresh+thresh; IRthresh = IRthresh/10; straight(255);

19 19 delay(50); straight(40); //Serial.println(IRthresh); while(1){ //Main Loop checksweep(); checkcam(); checkrf(); dorf(); checkbs(); dobs(); void checkcam(){ //checks the camera for object while (Serial.available() > 0){ //If instructions from VS are recived digitalwrite(cled, HIGH); //enable status led int turn = Serial.read(); //read transmission

20 20 if(turn == 'L'){ driftleft(40); delay(10); if (turn == 'M'){ straight(40); delay(10); if(turn == 'R'){ driftright(40); delay(10); if(turn == 'S'){ //debug command halt(); delay(10); if(turn == 'T'){ //debug command turnaround(); delay(10); break; //exit loop for stability digitalwrite(cled, LOW); //disable status loop

21 21 void checksweep(){ //checks if object is in collection zone and collects it SV = 0; SV = analogread(sweep); //get analog value if(sv > IRthresh + 10){ //if object is detected digitalwrite(irled, HIGH); //enable status LED swep(); //sweep object up delay(200); scoop(); //scoop into collection bucket straight(40); //continue digitalwrite(irled, LOW); //disable status LED void checkbs(){ //check if bump sensor is pressed FLV = 0; //clear analog values FRV = 0; BLV = 0; BRV = 0;

22 22 FLV = digitalread(fl); //read analog values FRV = digitalread(fr); BLV = digitalread(bl); BRV = digitalread(br); void dobs(){ //navigate away from colliding obstacle if (FLV == LOW){ digitalwrite(bled, HIGH); //enable status LED halt(); back(); right(350); straight(40); return; if (FRV == LOW){ digitalwrite(bled, HIGH); //enable status LED halt(); back();

23 23 left(350); straight(40); return; if (BLV == LOW){ digitalwrite(bled, HIGH); //enable status LED halt(); back(); right(350); straight(40); return; if (BRV == LOW){ digitalwrite(bled, HIGH); //enable status LED halt(); back();

24 24 left(350); straight(40); return; digitalwrite(bled, LOW); //disable status LED void checkrf(){ //reads IRRF and determines action needed RF = 0; //initalize variables int LV = 0; int MV = 0; int RV = 0; //Take 3 samples per IRRF for(int i = 0; i<3; i++){ int readl = analogread(rfl); LV = LV + readl; delay(10); for(int i = 0; i<3; i++){

25 25 int readm = analogread(rfm); MV = MV + readm; delay(10); for(int i = 0; i<3; i++){ int readr = analogread(rfr); RV = RV + readr; delay(10); //averages values LV = LV/3; MV = MV/3; RV = RV/3; //determine combination of values int L = 0; int M = 0; int R = 0; if (LV > 225){ L = 1;

26 26 if (MV > 150){ M = 2; if (RV > 225){ R = 4; RF = L + M + R; void dorf(){ //navigate away from nearby obstacles if(rf > 0){ digitalwrite(rfled, HIGH); //enable status LED if(rf == 1){ // 100 halt(); right(350); straight(40); if(rf == 2){ // 010 halt(); back();

27 27 left(350); straight(40); if(rf == 3){ // 110 halt(); back(); right(350); straight(40); if(rf == 4){ // 001 halt(); left(350); straight(40); if(rf == 5){ // 101 halt();

28 28 turnaround(); straight(40); if(rf == 6){ // 011 halt(); back(); left(350); straight(40); if(rf == 7){ // 111 halt(); back(); turnaround(); straight(40);

29 29 digitalwrite(rfled, LOW); //disable status LED void right(int del){ //turns right about a point halt(); delay(50); motorl(60, 1); motorr(60, -1); delay(del); halt(); delay(50); void left(int del){ //turns left about a point halt(); delay(50); motorl(60, -1); motorr(60, 1); delay(del); halt(); delay(50);

30 30 void straight(int sped){ //drives straight at specified speed: sped halt(); delay(50); motorl(sped, 1); motorr(sped, 1); void turnaround(){ //rotates robot slightly more than 180 degrees halt(); delay(50); motorl(60, -1); motorr(60, 1); delay(1150); halt(); delay(50); void back(){ //drives back about 1.5 feet delay(50); halt(); delay(50);

31 31 motorl(60, -1); motorr(60, -1); delay(1000); halt(); void halt(){ //Stops robot motorl(255,0); motorr(255,0); delay(100); void motorl(int fast, int FoR){ //Controls left motor (speed, direction) analogwrite(pwm1,fast); //specify speed //specify direction if (FoR == 1){ digitalwrite(m1, HIGH); digitalwrite(m2, LOW); if(for == -1){ digitalwrite(m1, LOW); digitalwrite(m2, HIGH);

32 32 if(for == 0){ digitalwrite(m1, LOW); digitalwrite(m2, LOW); void motorr(int fast, int FoR){ //Controls left motor (speed, direction) analogwrite(pwm2,fast); //specify speed //specify direction if (FoR == 1){ digitalwrite(m3, HIGH); digitalwrite(m4, LOW); if(for == -1){ digitalwrite(m3, LOW); digitalwrite(m4, HIGH); if(for == 0){ digitalwrite(m3, LOW); digitalwrite(m4, LOW);

33 33 void driftleft(int sped){ //drift while moving motorl(sped - 15, 1); motorr(sped, 1); delay(10); void driftright(int sped){ //drift while moving motorl(sped, 1); motorr(sped - 15, 1); delay(10); void swep(){ //sweeps object up for(pos = 80; pos >= 6; pos-=1) // goes from 80 degrees to 11 degrees { servo1.write(pos); delay(15); // tell servo to go to position in variable 'pos' // waits 15ms for the servo to reach the position halt(); delay(500); for(pos = 5; pos < 80; pos += 1) // goes from 10 degrees to 80 degrees

34 34 { // in steps of 1 degree servo1.write(pos); delay(15); // tell servo to go to position in variable 'pos' // waits 15ms for the servo to reach the position void scoop(){ //scoops into bucket for(posit = 25; posit < 130; posit += 1){ // goes from 25 degrees to 130 degrees // in steps of 1 degree servo2.write(posit); delay(15); // tell servo to go to position in variable 'pos' // waits 15ms for the servo to reach the position delay(500); for(posit = 130; posit>=26; posit-=1){ // goes from 130 degrees to 26 degrees servo2.write(posit); delay(15); // tell servo to go to position in variable 'pos' // waits 15ms for the servo to reach the position

35 35 Visual Studio Code: #include "opencv/highgui.h" #include "opencv/cv.h" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdlib.h> #include <stdio.h> #include <tchar.h> #include "SerialClass.h" #include <string> #include <Windows.h> HANDLE hserial; DWORD btsio; // Maths methods #define max(a, b) ((a) > (b)? (a) : (b)) #define min(a, b) ((a) < (b)? (a) : (b)) #define abs(x) ((x) > 0? (x) : -(x)) #define sign(x) ((x) > 0? 1 : -1)

36 36 // Step mooving for object min & max #define STEP_MIN 5 #define STEP_MAX 100 IplImage *image; // Position of the object we overlay CvPoint objectpos = cvpoint(-1, -1); // Color tracked and our tolerance towards it int h = 0, s = 0, v = 0, tolerance = 10; /* * Transform the image into a two colored image, one color for the color we want to track, another color for the others colors * From this image, we get two datas : the number of pixel detected, and the center of gravity of these pixel */ CvPoint binarisation(iplimage* image, int *nbpixels) { std::vector<std::vector<cv::point> > contours; std::vector<cv::vec4i> hierarchy; int x, y;

37 37 CvScalar pixel; IplImage *hsv, *mask, *bin; IplConvKernel *kernel; int sommex = 0, sommey = 0; *nbpixels = 0; // Create the mask &initialize it to white (no color detected) mask = cvcreateimage(cvgetsize(image), image->depth, 1); // Create the hsv image hsv = cvcloneimage(image); cvcvtcolor(image, hsv, CV_BGR2HSV); // We create the mask cvinranges(hsv, cvscalar(h - tolerance -1, s - tolerance, 0), cvscalar(h + tolerance - 1, s + tolerance, 255), mask); // Create kernels for the morphological operation kernel = cvcreatestructuringelementex(5, 5, 2, 2, CV_SHAPE_ELLIPSE); // Morphological opening (inverse because we have white pixels on black background) cvdilate(mask, mask, kernel, 1); cverode(mask, mask, kernel, 1);

38 38 /* // Filter mask for largest contour bin = cvcloneimage(mask); // find contours std::vector<std::vector<cv::point> > contours; std::vector<cv::vec4i> hierarchy; cv::findcontours( bin, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cv::point(0, 0) ); // sort contours std::sort(contours.begin(), contours.end(), comparecontourareas); // grab contours std::vector<cv::point> biggestcontour = contours[contours.size()-1]; for(int i = 0; i < contours.size(); i ++){ if(contours[i] == biggestcontour){ //Turn White else{ //Turn Black

39 39 mask = cvcloneimage(bin); */ // We go through the mask to look for the tracked object and get its gravity center for(x = 0; x < mask->width; x++) { for(y = 0; y < mask->height; y++) { // If its a tracked pixel, count it to the center of gravity's calcul if(((uchar *)(mask->imagedata + y*mask->widthstep))[x] == 255) { sommex += x; sommey += y; (*nbpixels)++; // Show the result of the mask image cvshowimage("mask", mask); // We release the memory of kernels

40 40 cvreleasestructuringelement(&kernel); // We release the memory of the mask cvreleaseimage(&mask); // We release the memory of the hsv image cvreleaseimage(&hsv); // If there is no pixel, we return a center outside the image, else we return the center of gravity if(*nbpixels > 0) else return cvpoint((int)(sommex / (*nbpixels)), (int)(sommey /(*nbpixels))); return cvpoint(-1, -1); /* * Add a circle on the video that fellow your colored object */ void addobjecttovideo(iplimage* image, CvPoint objectnextpos, int nbpixels) { int objectnextstepx, objectnextstepy; char outputchars[] = "c"; // Calculate circle next position (if there is enough pixels)

41 41 if (nbpixels > 10) { // Reset position if no pixel were found if (objectpos.x == -1 objectpos.y == -1) { objectpos.x = objectnextpos.x; objectpos.y = objectnextpos.y; // Move step by step the object position to the desired position if (abs(objectpos.x - objectnextpos.x) > STEP_MIN) { objectnextstepx = max(step_min, min(step_max, abs(objectpos.x - objectnextpos.x) / 2)); objectpos.x += (-1) * sign(objectpos.x - objectnextpos.x) * objectnextstepx; if (abs(objectpos.y - objectnextpos.y) > STEP_MIN) { objectnextstepy = max(step_min, min(step_max, abs(objectpos.y - objectnextpos.y) / 2)); objectpos.y += (-1) * sign(objectpos.y - objectnextpos.y) *objectnextstepy; // -1 = object isn't within the camera range else {

42 42 objectpos.x = -1; objectpos.y = -1; // Draw an object (circle) centered on the calculated center of gravity if (nbpixels > 10 ){ if (objectpos.x > -1){ if (objectpos.x < 250){ 1); cvdrawcircle(image, objectpos, 15, CV_RGB(255, 0, 0), - outputchars[0] = 'L';//define variable for serial output outputchars[1] = 'L'; to serial port WriteFile(hSerial, outputchars, 1, &btsio, NULL);//write else if (objectpos.x > 450){ cvdrawcircle(image, objectpos, 15, CV_RGB(0, 255, 0), -1); outputchars[0] = 'M';//define variable for serial output outputchars[1] = 'M'; to serial port WriteFile(hSerial, outputchars, 1, &btsio, NULL);//write

43 43 else{ 1); cvdrawcircle(image, objectpos, 15, CV_RGB(0, 0, 255), - outputchars[0] = 'R';//define variable for serial output outputchars[1] = 'R'; to serial port WriteFile(hSerial, outputchars, 1, &btsio, NULL);//write // We show the image on the window cvshowimage("color Tracking", image); /* * Get the color of the pixel where the mouse has clicked * We put this color as model color (the color we want to tracked) */ void getobjectcolor(int event, int x, int y, int flags, void *param = NULL) { // Vars

44 44 CvScalar pixel; IplImage *hsv; if(event == CV_EVENT_LBUTTONUP) { // Get the hsv image hsv = cvcloneimage(image); cvcvtcolor(image, hsv, CV_BGR2HSV); // Get the selected pixel pixel = cvget2d(hsv, y, x); // Change the value of the tracked color with the color of the selected pixel h = (int)pixel.val[0]; s = (int)pixel.val[1]; v = (int)pixel.val[2]; // Release the memory of the hsv image cvreleaseimage(&hsv);

45 45 // comparison function object bool comparecontourareas ( std::vector<cv::point> contour1, std::vector<cv::point> contour2 ) { double i = fabs( contourarea(cv::mat(contour1)) ); double j = fabs( contourarea(cv::mat(contour2)) ); return ( i < j ); int main() { hserial = CreateFile(L"COM7", GENERIC_READ GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); { if (hserial!=invalid_handle_value) printf("port opened! \n"); DCB dcbserialparams; GetCommState(hSerial,&dcbSerialParams); dcbserialparams.baudrate = CBR_115200; dcbserialparams.bytesize = 8;

46 46 dcbserialparams.parity = NOPARITY; dcbserialparams.stopbits = ONESTOPBIT; SetCommState(hSerial, &dcbserialparams); else { if (GetLastError() == ERROR_FILE_NOT_FOUND) { printf("serial port doesn't exist! \n"); printf("error while setting up serial port! \n"); // Image & hsvimage IplImage *hsv; // Video Capture CvCapture *capture; // Key for keyboard event char key = 'd';

47 47 // Number of tracked pixels int nbpixels; // Next position of the object we overlay CvPoint objectnextpos; // Initialize the video Capture (200 => CV_CAP_V4L2) capture = cvcapturefromcam(0); //capture = cvcreatefilecapture(" :8000/mjpeg?dummy=param.mjpg"); // Check if the capture is ok if (!capture) { printf("can't initialize the video capture.\n"); return -1; // Create the windows cvnamedwindow("color Tracking", CV_WINDOW_AUTOSIZE); cvnamedwindow("mask", CV_WINDOW_AUTOSIZE); cvmovewindow("color Tracking", 0, 100); cvmovewindow("mask", 650, 100); // Mouse event to select the tracked color on the original image

48 48 cvsetmousecallback("color Tracking", getobjectcolor); // While we don't want to quit while(key!= 'Q' && key!= 'q') { // We get the current image image = cvqueryframe(capture); // If there is no image, we exit the loop if(!image) continue; objectnextpos = binarisation(image, &nbpixels); addobjecttovideo(image, objectnextpos, nbpixels); // We wait 10 ms key = cvwaitkey(10); // Destroy the windows we have created cvdestroywindow("color Tracking"); cvdestroywindow("mask");

49 49 // Destroy the capture cvreleasecapture(&capture); return 0; CloseHandle(hSerial);

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

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

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

Ballbot. Scott Pokorny. EML 5666 Intelligent Machines Design Lab. Instructors: Dr. A. Antonio Arroyo and Dr. Eric M. Schwartz

Ballbot. Scott Pokorny. EML 5666 Intelligent Machines Design Lab. Instructors: Dr. A. Antonio Arroyo and Dr. Eric M. Schwartz Ballbot Scott Pokorny EML 5666 Intelligent Machines Design Lab Instructors: Dr. A. Antonio Arroyo and Dr. Eric M. Schwartz TAs: Tim Martin, Ryan Stevens, and Josh Weaver Table of Contents Abstract... 4

More information

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

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

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

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

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

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

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

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

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

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

Master Chief A. Final Report Justin Dickinson

Master Chief A. Final Report Justin Dickinson Master Chief A Final Report Justin Dickinson University of Florida Department of Electrical and Computer Engineering EEL 5666 IMDL Spring 2009 Intelligent Machines Design Laboratory Table of Contents Abstract..3

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

AS AUTOMAATIO- JA SYSTEEMITEKNIIKAN PROJEKTITYÖT CEILBOT FINAL REPORT

AS AUTOMAATIO- JA SYSTEEMITEKNIIKAN PROJEKTITYÖT CEILBOT FINAL REPORT AS-0.3200 AUTOMAATIO- JA SYSTEEMITEKNIIKAN PROJEKTITYÖT CEILBOT FINAL REPORT Jaakko Hirvelä GENERAL The goal of the Ceilbot-project is to design a fully autonomous service robot moving in a roof instead

More information

An Epic Laser Battle

An Epic Laser Battle FLOWSTONE.qxd 2/14/2011 3:52 PM Page 20 by the staff of Robot An Epic Laser Battle BETWEEN ROBOTS Behind the Scenes! How we created vision-based programming using FlowStone Last month we introduced FlowStone,

More information

University of Florida Department of Electrical and Computer Engineering EEL5666 Intelligent Machines Design Laboratory. Final Report.

University of Florida Department of Electrical and Computer Engineering EEL5666 Intelligent Machines Design Laboratory. Final Report. University of Florida Department of Electrical and Computer Engineering EEL5666 Intelligent Machines Design Laboratory Final Report Lil Helper By: Jennifer Labush Abstract...3 Executive Summary 4 Integrated

More information

TA0139 USER MANUAL ARDUINO 2 WHEEL DRIVE WIRELESS BLUETOOTH ROBOT KIT

TA0139 USER MANUAL ARDUINO 2 WHEEL DRIVE WIRELESS BLUETOOTH ROBOT KIT TA0139 USER MANUAL ARDUINO 2 WHEEL DRIVE WIRELESS BLUETOOTH ROBOT KIT I Contents Overview TA0139... 1 Getting started: Arduino 2 Wheel Drive Wireless Bluetooth Robot Kit using Arduino UNO... 1 2.1. What

More information

Lab 2.2 Ohm s Law and Introduction to Arduinos

Lab 2.2 Ohm s Law and Introduction to Arduinos Lab 2.2 Ohm s Law and Introduction to Arduinos Objectives: Get experience using an Arduino Learn to use a multimeter to measure Potential units of volts (V) Current units of amps (A) Resistance units of

More information

Figure 18: Basic input port drawing.

Figure 18: Basic input port drawing. Appendix A Hardware Inputs The mx_ctlr.0 board has several different types of inputs and outputs allowing for a wide range of functions and actions. The inputs for the board can be broken into three basic

More information

Robotics Adventure Book Scouter manual STEM 1

Robotics Adventure Book Scouter manual STEM 1 Robotics Robotics Adventure Book Scouter Manual Robotics Adventure Book Scouter manual STEM 1 A word with our Scouters: This activity is designed around a space exploration theme. Your Scouts will learn

More information

C Language Reference for ActivityBot. Driving the robot a specific distance or a specific amount of turn

C Language Reference for ActivityBot. Driving the robot a specific distance or a specific amount of turn Code for Driving ActivityBot C Language Reference for ActivityBot Jeffrey La Favre - November 4, 2015 There are two types of functions for driving the robot. The first kind specifies a specific distance

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

Fire Bird V Insect - Nex Robotics

Fire Bird V Insect - Nex Robotics Fire Bird V Insect is a small six legged robot. It has three pair of legs driven by one servo each. Robot can navigate itself using Sharp IR range sensors. It can be controlled wirelessly using ZigBee

More information

How-To #3: Make and Use a Motor Controller Shield

How-To #3: Make and Use a Motor Controller Shield How-To #3: Make and Use a Motor Controller Shield The Arduino single-board computer can be used to control servos and motors. But sometimes more current is required than the Arduino can provide, either

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

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

A Simple Introduction to Omni Roller Robots (3rd April 2015)

A Simple Introduction to Omni Roller Robots (3rd April 2015) A Simple Introduction to Omni Roller Robots (3rd April 2015) Omni wheels have rollers all the way round the tread so they can slip laterally as well as drive in the direction of a regular wheel. The three-wheeled

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

Section 3 Board Experiments

Section 3 Board Experiments Section 3 Board Experiments Section Overview These experiments are intended to show some of the application possibilities of the Mechatronics board. The application examples are broken into groups based

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

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

Velocity: A Bat s Eye View of Velocity

Velocity: A Bat s Eye View of Velocity Name School Date Purpose Velocity: A Bat s Eye View of Velocity There are a number of ways of representing motion that we ll find useful. Graphing position, velocity, and acceleration vs. time is often

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

IEEE SoutheastCon Hardware Challenge

IEEE SoutheastCon Hardware Challenge IEEE SoutheastCon Hardware Challenge Cameron McSweeney, Kendall Knapp Brian Roskuszka, Daniel Hofstetter May 2, 207 Advisors: Dr. Jing Wang, Dr. Yufeng Lu, Dr. In Soo Ahn 2 Task 3 - Bring Down the Shields

More information

Direction Control of Robotic Fish Using Infrared Sensor Modules and IPMC Activation Schemes with a dspic30f4013 DSC

Direction Control of Robotic Fish Using Infrared Sensor Modules and IPMC Activation Schemes with a dspic30f4013 DSC Direction Control of Robotic Fish Using Infrared Sensor Modules and IPMC Activation Schemes with a dspic30f4013 DSC Carl A. Coppola 04/03/2009 ECE 480, Team 04 ME 481, Team 09 Abstract This application

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

RoboSpecies Technologies Pvt. Ltd.

RoboSpecies Technologies Pvt. Ltd. Table of Contents Table of Contents... vi Part 1: Introduction to Robotics... 1 1.1 Robotics... 3 1.1.1 House Robots... 4 1.1.2 Industrial Robots... 4 1.1.3 Medical Robots... 6 1.1.4 Space Robots... 7

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

Instruction Manual for BE-SP3 Circuit. 10/21/07

Instruction Manual for BE-SP3 Circuit. 10/21/07 Page 1 of 54 Instruction Manual for BE-SP3 Circuit. 10/21/07 Page 1 Index: Page 2 BE-SP3 Circuit Specifications. Page 3-4 Intro to the BE-SP3. Page 5 Basics of serial to parallel. Page 6-7 ASCII Code.

More information

Using PSpice to Simulate Transmission Lines K. A. Connor Summer 2000 Fields and Waves I

Using PSpice to Simulate Transmission Lines K. A. Connor Summer 2000 Fields and Waves I Using PSpice to Simulate Transmission Lines K. A. Connor Summer 2000 Fields and Waves I We want to produce the image shown above as a screen capture or below as the schematic of this circuit. R1 V1 25

More information

University of Hull Department of Computer Science C4DI Interfacing with Arduinos

University of Hull Department of Computer Science C4DI Interfacing with Arduinos Introduction Welcome to our Arduino hardware sessions. University of Hull Department of Computer Science C4DI Interfacing with Arduinos Vsn. 1.0 Rob Miles 2014 Please follow the instructions carefully.

More information

Appendix F: Design Documentation for multisensory therapy system

Appendix F: Design Documentation for multisensory therapy system Appendix F: Design Documentation for multisensory therapy system This appendix contains in details all the system design. It summarizes at the structure design, electrical design, and software design.

More information

Physics 101, Lab 1: LINEAR KINEMATICS PREDICTION SHEET

Physics 101, Lab 1: LINEAR KINEMATICS PREDICTION SHEET Physics 101, Lab 1: LINEAR KINEMATICS PREDICTION SHEET After reading through the Introduction, Purpose and Principles sections of the lab manual (and skimming through the procedures), answer the following

More information

ECE1778: Creative Applications for Mobile Devices. Mover-bot. Android-based Mobile Robotics Development Platform

ECE1778: Creative Applications for Mobile Devices. Mover-bot. Android-based Mobile Robotics Development Platform ECE1778: Creative Applications for Mobile Devices Mover-bot Android-based Mobile Robotics Development Platform and Fitsum Andargie Word count: 1639 4/8/2012 0 Introduction: Traditionally, research in the

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

Thumb Joystick Retail. Tools and parts you'll need. Things you'll want to know. How does it work? Skill Level: Beginner. by MikeGrusin March 22, 2011

Thumb Joystick Retail. Tools and parts you'll need. Things you'll want to know. How does it work? Skill Level: Beginner. by MikeGrusin March 22, 2011 Thumb Joystick Retail Skill Level: Beginner by MikeGrusin March 22, 2011 Thank you for purchasing our Thumb Joystick! Whether you're blasting aliens or driving a robot, you'll find it a very useful addition

More information

Intelligent Machine Design Laboratory. EEL 5934 (Robotics) Professor: Keith L. Doty THOR

Intelligent Machine Design Laboratory. EEL 5934 (Robotics) Professor: Keith L. Doty THOR Intelligent Machine Design Laboratory EEL 5934 (Robotics) Professor: Keith L. Doty THOR Final Written Report Chris Parman December, 12 1996 1 Table of Contents: Abstract...2 Executive Summary..2 Introduction...3

More information

Discover Robotics & Programming CURRICULUM SAMPLE

Discover Robotics & Programming CURRICULUM SAMPLE OOUTLINE 5 POINTS FOR EDP Yellow Level Overview Robotics incorporates mechanical engineering, electrical engineering and computer science - all of which deal with the design, construction, operation and

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

Physical Computing Self-Quiz

Physical Computing Self-Quiz Physical Computing Self-Quiz The following are questions you should be able to answer without reference to outside material by the middle of the semester in Introduction to Physical Computing. Try to answer

More information

F I N A L R E P O RT

F I N A L R E P O RT F I N A L R E P O RT Canek Acosta Arturito EEL 5666 IMDL Dr. Schwartz and Dr. Arroyo Mike Pridgen and Thomas Vermeer 1 TABLE OF CONTENTS I. Abstract - 3 II.Introduction 4 III.Main Body 4 A.Integrated System

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

Autonomous, Surveillance Fire Extinguisher Robotic Vehicle with Obstacle Detection and Bypass using Arduino Microcontroller

Autonomous, Surveillance Fire Extinguisher Robotic Vehicle with Obstacle Detection and Bypass using Arduino Microcontroller Autonomous, Surveillance Fire Extinguisher Robotic Vehicle with Obstacle Detection and Bypass using Arduino Microcontroller Sumanta Chatterjee Asst. Professor JIS College of Engineering Kalyani, WB, India

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

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 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

J. La Favre Calibrating Sharp Distance Sensors July 18, 2018

J. La Favre Calibrating Sharp Distance Sensors July 18, 2018 GEAR has a number of Sharp brand IR distance sensors that can be used to determine distance to a target object. This type of sensor can be useful for maze robot projects as well as others. Sharp offers

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

The Constant Gardener

The Constant Gardener The Constant Gardener Jose Jayma The Constant Gardener EEL5666: Intelligent Machine Design Laboratory A. Antonio Arroyo, PhD Eric M. Schwartz, PhD Abstract: This document presents the design specifications

More information

X-CAM A10-3H 3 Axis Gimbal for GOPRO. User Manual ( V2.00 )

X-CAM A10-3H 3 Axis Gimbal for GOPRO. User Manual ( V2.00 ) X-CAM A10-3H 3 Axis Gimbal for GOPRO User Manual ( V2.00 ) The X-CAM A10-3H 3 Axis Gimbal has been setup and calibrated for use with GOPRO cameras, it is ready to use straight from the box. Specifications:

More information

Table of Contents. Introduction 1. Software installation 2. Remote control and video transmission 3. Navigation 4. FAQ 5.

Table of Contents. Introduction 1. Software installation 2. Remote control and video transmission 3. Navigation 4. FAQ 5. Table of Contents Introduction 1. Software installation 2. Remote control and video transmission 3. Navigation 4. FAQ 5. Maintenance 1.1 1.2 1.3 1.4 1.5 1.6 2 Introduction Introduction Introduction The

More information

Pawel Cieslewski Robo-Retriever Formal Report

Pawel Cieslewski Robo-Retriever Formal Report 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

More information

Make your own secret locking mechanism to keep unwanted guests out of your space!

Make your own secret locking mechanism to keep unwanted guests out of your space! KNOCK LOCK Make your own secret locking mechanism to keep unwanted guests out of your space! Discover : input with a piezo, writing your own functions Time : 1 hour Level : Builds on projects : 1,,3,4,5

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

MP54 SOUND for AC track power by

MP54 SOUND for AC track power by ACv0 MP54 SOUND for AC track power by CAUTION: THIS DEVICE CAN BE DAMAGED BY STATIC DISCHARGE. PLEASE EXERCISE CARE DURING INSTALLATION TO AVOID THIS POSSIBILITY. DISCHARGE YOURSELF TO AN ELECTRICAL GROUND

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

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

Autonomous People Mover Phase II - Sensors P MSD 1 - FINAL DESIGN REVIEW

Autonomous People Mover Phase II - Sensors P MSD 1 - FINAL DESIGN REVIEW Autonomous People Mover Phase II - Sensors P15242 - MSD 1 - FINAL DESIGN REVIEW 1 The Team Member Role Program Nathan Biviano Project Manager & Integration IE Madeleine Daigneau Software Design & Hierarchy

More information

Final Report. [Establish User Requirements] User must be able to press the run button on the robot, as well as use the NQC software.

Final Report. [Establish User Requirements] User must be able to press the run button on the robot, as well as use the NQC software. Team 3 David Letteer Greg Broadwell Kathryn della Porta BE 1200 Basic Engineering Final Report Final Report [Clarify Objectives] Design, build, and program a robot that will acknowledge the presence of

More information

Robotics/Electronics Review for the Final Exam

Robotics/Electronics Review for the Final Exam Robotics/Electronics Review for the Final Exam Unit 1 Review. 1. The battery is 12V, R1 is 400 ohms, and the current through R1 is 20 ma. How many ohms is R2? ohms What is the voltage drop across R1? V

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

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

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

THE COMPLETE ALL IN ONE ROBOT 360 NANO BOT

THE COMPLETE ALL IN ONE ROBOT 360 NANO BOT THE COMPLETE ALL IN ONE ROBOT 360 NANO BOT LINE FOLLOWER FIVE LINE SENSORS FOR SCANNING WHITE OR BLACK LINE OBSTACLE AVOIDER TWO OBSTACLE SENSORS CAN DETECT OBSTACLES AND MEASURE DISTANCE BLUETOOTH CONTROL

More information

Introduction to Internet of Things Prof. Sudip Misra Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Introduction to Internet of Things Prof. Sudip Misra Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Introduction to Internet of Things Prof. Sudip Misra Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture - 23 Introduction to Arduino- II Hi. Now, we will continue

More information

Modern Robotics Inc. Sensor Documentation

Modern Robotics Inc. Sensor Documentation Sensor Documentation Version 1.0.1 September 9, 2016 Contents 1. Document Control... 3 2. Introduction... 4 3. Three-Wire Analog & Digital Sensors... 5 3.1. Program Control Button (45-2002)... 6 3.2. Optical

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

Seek and Destroy. Evan Wall

Seek and Destroy. Evan Wall Seek and Destroy Evan Wall EEL5666 - IMDL Instructors: Dr. Arroyo, Dr. Schwartz TAs: Mike Pridgen, Tim Martin, Ryan Stevens, Devin Hughes, Thomas Vermeer 1 Table of Contents I. Abstract II. Executive Summary

More information

527F CNC. Retrofit controller for machines made by Fadal Machining Centers. Installation and set-up manual Calmotion LLC

527F CNC. Retrofit controller for machines made by Fadal Machining Centers. Installation and set-up manual Calmotion LLC 527F CNC Retrofit controller for machines made by Fadal Machining Centers Installation and set-up manual 2008-2018 Calmotion LLC Calmotion LLC 7536 San Fernando Road Sun Valley, CA 91352 www.calmotion.com

More information

How-To: Make an RGB combination door lock (Part 1)

How-To: Make an RGB combination door lock (Part 1) How-To: Make an RGB combination door lock (Part 1) Written By: Feitan 2017 www.botsbits.org Page 1 of 14 INTRODUCTION Part 2 can be found here 2017 www.botsbits.org Page 2 of 14 Step 1 How-To: Make an

More information

Advanced Debugging I. Equipment Required. Preliminary Discussion. Basic System Bring-up. Hardware Bring-up, Section Plan

Advanced Debugging I. Equipment Required. Preliminary Discussion. Basic System Bring-up. Hardware Bring-up, Section Plan Advanced Debugging I Hardware Bring-up, Section Plan Equipment Required 192 car Logic analyzer with mini probes, cable PC scope with probes, M-F breadboard wire, USB cable Voltmeter Laptop with mouse,

More information

Necessary software and hardware:

Necessary software and hardware: Necessary software and hardware: Bases: First, remember that I m a French guy so my English is not perfect ;) If you see any mistakes, don t hesitate to tell me so I can correct them (my email is at the

More information

Indra Works DS Tuning Procedure

Indra Works DS Tuning Procedure Indra Works DS Tuning Procedure Rexroth Indramat drives can be tuned in-house or in the field. The following procedures are written for a technician tuning a drive, in-house. Where an asterisk (*) appears,

More information

MURRY! Jon Preussner 4/17/02 EEL5666 Final Report

MURRY! Jon Preussner 4/17/02 EEL5666 Final Report MURRY! Jon Preussner 4/17/02 EEL5666 Final Report Table of Contents Abstract..3 Executive Summary...4 Introduction....5 Integrated System..6 Mobile Platform. 8 Actuation 9 Sensors..10 Special sensor 11

More information

Preliminary Design Report. Project Title: Human-Powered Sub. Team Name: Depth Perception

Preliminary Design Report. Project Title: Human-Powered Sub. Team Name: Depth Perception EEL 4924 Electrical Engineering Design (Senior Design) Preliminary Design Report 19 April 2011 Project Title: Team Name: Depth Perception Team Members: Name: Jared Korn Email: ex.malfunction@gmail.com

More information

Operation and Maintenance Manual

Operation and Maintenance Manual VM Series Operation and Maintenance Manual VM - Voltage Monitor VM-100-24 V VM-100-48 V VM-100-125 V VM-100-250 V EAGLE EYE POWER SOLUTIONS All Rights Reserved. 1 The Voltage Monitor series reads battery

More information

TANGIBLE MEDIA & PHYSICAL COMPUTING MORE ARDUINO

TANGIBLE MEDIA & PHYSICAL COMPUTING MORE ARDUINO TANGIBLE MEDIA & PHYSICAL COMPUTING MORE ARDUINO AGENDA RECAP ALGORITHMIC APPROACHES TIMERS RECAP: LAST WEEK WE DID: ARDUINO IDE INTRO MAKE SURE BOARD AND USB PORT SELECTED UPLOAD PROCESS COVERED DATATYPES

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

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

EK307 Lab: Microcontrollers

EK307 Lab: Microcontrollers EK307 Lab: Microcontrollers Laboratory Goal: Program a microcontroller to perform a variety of digital tasks. Learning Objectives: Learn how to program and use the Atmega 323 microcontroller Suggested

More information

Physics 120/220. Microcontrollers Extras. Prof. Anyes Taffard

Physics 120/220. Microcontrollers Extras. Prof. Anyes Taffard Physics 120/220 Microcontrollers Extras Prof. Anyes Taffard Introduction 2 There are an infinite amount of applications for the Arduino. Lots of interfaces that can be controlled with it. Extension boards

More information

Controller and Programmer to sequential firing detonators in s7 rocket models. Size: 26 x 40 x 12 mm(17mm witch connector)

Controller and Programmer to sequential firing detonators in s7 rocket models. Size: 26 x 40 x 12 mm(17mm witch connector) Controller and Programmer to sequential firing detonators in s7 rocket models Device was built to sequential firing detonators in s7 rocket models. It is fully programmable device with microprocessor.

More information

Design Modular Planning

Design Modular Planning Phys253 - Lecture 7, Part II Circuit Components & Layout Design Modular Planning Design by assembling simple circuit modules, such as filters or amplifiers Modules may be separated by buffers, where required

More information

If I wanted to connect an LED and little light bulb and have them switch on and off with one switch, my schematic would look like the one below.

If I wanted to connect an LED and little light bulb and have them switch on and off with one switch, my schematic would look like the one below. Relays Relays are great tools for turning on and off entire circuits, either with a small control switch, or with a microcontroller like the Arduino. To understand how relays are useful and how to control

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

MAKING OPEN SOURCE ROBOTICS APPROACHABLE -- THE FUTURE IS NOW! James Ketrenos Embedded Linux Conference, Dublin, 2015

MAKING OPEN SOURCE ROBOTICS APPROACHABLE -- THE FUTURE IS NOW! James Ketrenos Embedded Linux Conference, Dublin, 2015 MAKING OPEN SOURCE ROBOTICS APPROACHABLE -- THE FUTURE IS NOW! James Ketrenos I, ROBOT: A Pseudo History A little bit about me... Intel Open Source Technology Center Portland, Oregon Where are all the

More information

Motors & Wheels. Wheels can be attached to the KIBO s motors to make them spin. The motors can be attached to the KIBO robot to make it move!

Motors & Wheels. Wheels can be attached to the KIBO s motors to make them spin. The motors can be attached to the KIBO robot to make it move! Motors & Wheels + Wheels can be attached to the KIBO s motors to make them spin. = The motors can be attached to the KIBO robot to make it move! + KIBO s motors can be attached in 2 ways to make KIBO move

More information