+ All Categories
Home > Documents > University of Calgary Webdisk Server - Robotic...

University of Calgary Webdisk Server - Robotic...

Date post: 16-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
45
Robotic Object Acquisition and Camera Handler ME 4451 Robotics Fall 2009 December, 2009 Zakaria Elahmadi Ajeya Karajgikar Jason Kulpe Andrew Turner
Transcript
Page 1: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

Robotic Object Acquisition and Camera Handler

ME 4451 Robotics

Fall 2009

December, 2009

Zakaria Elahmadi

Ajeya Karajgikar

Jason Kulpe

Andrew Turner

Page 2: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

I. INTRODUCTION

The purpose of this project was to

camera. A TrendNet camera is

tracks the motion of an object. The object will be slowly

motors will adjust the position of the camera by reeling in or out the cables

The idea was inspired by Skycam, a trademark brandname of a patented, computer

cable-suspended camera system, often used to broadcast live matches to bring video

camera angles. The goal of the project was to envision a Skycam system that would be able to

perform automatically without the aid of a human controller.

a. Initial Plan

The initial plan was to build a rectangular wooden supporting structure with four columns as

shown in Figure 1. The dimensions of the field given by length, width and height are 3’, 2’ and

2.5’ respectively. There would be four columns (one in each corner) to support the m

attach the pulleys for the cable to reel on

supported by the four cables. As shown in the figure, the red triangle represents the object that

the camera must follow as the object moves along the playing field. If the object stays at one

position for a defined period of time, then the camera must attempt to lower itself in order to get

a magnified view of the object as it rests.

Figure 1: a.) Side view of the proposed model b.)

1

of this project was to build a 3 dimensional, cable-suspended,

is suspended via cables above a ‘playing field’. It

tracks the motion of an object. The object will be slowly moved around on the field, and servo

motors will adjust the position of the camera by reeling in or out the cables at determined speeds

The idea was inspired by Skycam, a trademark brandname of a patented, computer

em, often used to broadcast live matches to bring video

camera angles. The goal of the project was to envision a Skycam system that would be able to

perform automatically without the aid of a human controller.

was to build a rectangular wooden supporting structure with four columns as

shown in Figure 1. The dimensions of the field given by length, width and height are 3’, 2’ and

’ respectively. There would be four columns (one in each corner) to support the m

attach the pulleys for the cable to reel onto. The camera would hover over the playing field

supported by the four cables. As shown in the figure, the red triangle represents the object that

the camera must follow as the object moves along the playing field. If the object stays at one

defined period of time, then the camera must attempt to lower itself in order to get

a magnified view of the object as it rests.

a.) Side view of the proposed model b.) Top view of the proposed model

, motion tracking

above a ‘playing field’. It automatically

moved around on the field, and servo

at determined speeds.

The idea was inspired by Skycam, a trademark brandname of a patented, computer-controlled,

em, often used to broadcast live matches to bring video-game-like

camera angles. The goal of the project was to envision a Skycam system that would be able to

was to build a rectangular wooden supporting structure with four columns as

shown in Figure 1. The dimensions of the field given by length, width and height are 3’, 2’ and

’ respectively. There would be four columns (one in each corner) to support the motors and

. The camera would hover over the playing field

supported by the four cables. As shown in the figure, the red triangle represents the object that

the camera must follow as the object moves along the playing field. If the object stays at one

defined period of time, then the camera must attempt to lower itself in order to get

Top view of the proposed model

Page 3: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

2

b. Implemented Plan

The implemented plan was very similar to the initial plan with slight modifications. The

base of the wooden structure was 36” in length and 24” wide. Three additional planks of wood

were attached in the middle for added support. All the wood used for the base was held in place

with the help of metal brackets. Four columns (poles) each of 28” in height were attached to each

corner of the base. A hook was attached one inch below the top of each pole facing each other on

the inside of the support structure. This support acts as a cable holder. Fishing line was used as

cable, which ran through the pulleys and into the hook that directs it to the camera hanging over

the playing field. Figure 2 shows the basic outline of the structure on the left and the use of

brackets on the right. Figure 3 shows the attached hook on the pole which acts as a cable holder.

Drawings of parts are included in Appendix II.

Figure 2: Left- Base structure of the final robot. Right- Metal brackets were used to maintain the

position of the wooden planks

Page 4: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

3

Figure 3: The cable runs from the pulley to the metal hook which directs it to the camera

The pulleys were manufactured in the machine shop out of high density polyethylene

(HDPE). Two clear plastic discs were attached on either side which served as the flanges.

Modified servo motors were connected to the pulleys as they rested on edges of each of the

wooden planks as shown in Figure 4. The motors were held in place using a metal sheet that was

modified to act like a bracket. A shaft was inserted through a support pole and into the pulley.

This held the pulley in place and provided an axle for it to rotate on.

Figure 4: Motors were connected to the pulleys and were mounted on the base by a metal

bracket

Page 5: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

4

The top region of the robot was covered by a playing field which was a hole-patterned

particle board. The field was cut at the four corners to make room for the motor-pulley-pole

assembly. Another cut was made towards one corner of the field to put the control box in place.

A metal sheet was placed under the wooden base which held the control box in place. This is

shown in the figure below.

Figure 5: Left- Holder for the control box attached to the base of the structure. Right-

Bottom view of the playing field showing where the control box is held in place.

When the control box was switched on with all the motors connected to their respective

pins, the motors would start to rotate uncontrolled until it received a command from the

MATLAB program. In order to get proper co-ordination from each of the motors, it was decided

to switch each one of them individually without having to unplug and re-connect each of the

motors. This was solved by using one pole single pole single throw switches, which were

connected between the motor and the control box. The motor had three wires – PWM, power and

the ground. The power wire from the motor was directed to the switch, which was routed to the

control box. Figure 6 demonstrates the setup of the motor-switch-control box assembly.

Figure 6: Set-up of the switches connecting the motors to the control box

Page 6: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

5

The wires were tied and taped to the base so that the order of the connections was

maintained and troubleshooting problems later were made easier. Figure 7 shows a more

organized set-up of the switches. It also provides a top view of the switches.

Figure 7: Left- The wires were tied and taped. Right- Top view of the control box and switches.

Using the set-up as shown in Figure 8, the camera was made to move to different

locations using MATLAB code. The computer sent a signal to the control box, which in turn sent

a signal to the motors, which made the camera move in three dimensions.

Figure 8: Final implemented plan with the camera held in position by the cables

Finally, the set-up was painted to represent a Georgia Tech football field. This is shown in Figure

9 below.

Page 7: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

6

Figure 9: Final implemented plan displaying the colored robot

II. ROBOT KINEMATICS

The kinematics of the cable robot is three dimensional position control of the camera, which

is modeled as a point. The forward kinematics problem is to determine the camera position as a

resultant of the controlled cable lengths. Given an XYZ position, the four cable lengths necessary

to reach the position are calculated utilizing progressive applications of Pythagorean Theorem,

which is a simple solution to the reverse kinematics problem. Then, using physical specifications

and motor calibration data, motor velocities are calculated and executed in order to reach the

specified position.

Page 8: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

7

Equation (1) is the simple solution to the length problem and the figure listed in Appendix V is a

graphical representation of the solution process.

Cable Length, = √�� + �� + �� (1)

Note that the input XYZ position is a global coordinate that must be adapted for each cable. The

control code calculates the specific cable lengths given the X, Y, and Z coordinates. The solution

to this problem is given by the following equations (2-5) listed below. The variables are

presented in Figure 10 and Figure 11 along with the column locations and the coordinate system.

222

1 )( zHyxL −++= (2)

222

2 )()( zHyxSL −++−= (3)

222

3 )()()( zHyWxSL −+−+−= (4)

222

4 )()( zHyWxL −+−+= (5)

Figure 10: Top view of column number scheme and co-ordinate system

Figure 11: Side view of co-ordinate system

SSC control box

Columns

1

2

3

4

x

y

y

z

H

S

W

Page 9: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

8

The cable displacements, the only controllable parameters, are calculated as the

difference between the cable lengths at each position. With the required cable displacements

calculated for initial and final positions, it is possible to move the camera between the two points

with a calculated motor velocity. Given a time T, which can be optimized within the program,

and the cable diameter D, rotational speed is determined by Equation (6)

DT

ntDisplaceme

πθ =& (6)

This velocity value, θ& , is input into the calibration equations which equates a range of

motor rotations per second (RPS) to count values. The program attempts to minimize movement

time to place the resultant speed within the linear response range of the motors.

With this system there is no feedback. Therefore, to reduce error the initial position of the

camera must always be manually measured. This is needed because the camera motion is both a

function of cable displacement and initial position. For this reason, error plays an important role.

Once enough error accumulates, position control becomes perpetually inaccurate. The MATLAB

programs written for the system are documented in Appendix I. Also, Appendix VI describes the

process implemented by the code.

III. CHALLENGES

a. Servo motors

The initial challenge of the project was applicable servo motor torque and rotational

displacement. The first problem faced was the weight of the TrendNet camera and the

uncertainty that the servo motors would not be able to support the weight or not produce enough

torque to lift the weight of the camera at a variety of camera positions. The second issue with the

servo motors was that they only rotate a maximum of 180o and this would limit the range of

motion of the camera in the workspace. To increase reachable distance, pulley size would have

to increase. An increase in pulley size leads to an increase in motor torque, which decreases lift

capacity. These two issues, servo motor power and displacement, led to an optimization problem

of reachable workspace positions. Even with large reels of 10” diameters, the movement would

be significantly limited and errors in rotational displacement would amplify, increasing with

increasing diameter, to errors in camera position. Servo motors with large spools would also be

unwieldy and hard to package. Looking for different motion solutions, stepper motors (used in

ME 2110) were considered. The prebuilt control box used for the stepper motor was compatible

with only PBASIC and not MATLAB. The TrendNet camera was programmable with MATLAB

and not PBASIC and hence creating an interface between the two languages would be an overly

Page 10: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

9

complex and time consuming procedure not primarily dealing with the scope and needs of the

project. The budget and schedule put restrictions on buying a circuit as a controller for the

stepper motors. Designing a circuit to do the same was not in the scope of the project. It was also

observed that adjusting the motor speed too quickly would cause errors with MATLAB’s serial

communication causing stop signals to not be transmitted. This factor influenced our decision to

find a constant motor velocity, as described by Equation (6).

b. Calibration

The solution to increase range of motion was to use servo motors physically converted to

velocity control motors. This led to a need to devise a unique way to calibrate the motors of the

robot in order to determine the speeds for particular counts (ranging from 0 to 255). There were

many challenges to the calibration. In order to obtain accurate distance control, both count and

time had to be considered for calibration. For short operation time, acceleration has a noticeable

influence. An ideal calibration procedure needed to be found that took into account the time

dependency of velocity control.

c. Position control

Once the final version of robot was built, operational errors occurred within the system. The

errors resulted from the physical motor control, which diverged from the calibration determined

response, and from inaccurate initial position determination. The result was inaccurate position

control. To maintain accurate position control throughout motions, each cable must remain in

tension. The system has three degrees of freedom, but four constraints. Therefore, any position is

reachable using only a combination of three cables. This means that three system cables can

converge for a specific point while the third cable diverges. Once moving to the next point, if the

divergent cable becomes a depended variable, the system jumps to a large error. The initial

position determination posed a challenge simply because it is difficult to measure the location of

a point in three dimensional space.

d. Pan and tilt motion of camera

Apart from the initial weight concerns, another problem faced was with the motion and

direction of the camera once it was suspended over the field. The three dimensional rotational

position of the camera was arbitrary and erratic. The cables mounted to a single point above the

camera therefore the camera was not fixed in a particular direction. Further complicating the

camera direction, the tension from the camera power cable greatly dictated the position and

motion of the camera when it was moved from one point to another. The field of view of the

camera did not cover the intended football field but instead tilted up and spanned a horizontal

view of the entire room. Furthermore, the lack of controllable pan and tilt provided a poor image

Page 11: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

10

to perform motion tracking. Also, the orientation oscillations of the camera resulted in fuzzy

images.

Figure 12 presents a view of how the cables were connected to the camera. It was noticed

that the cables connected higher had more tension because they took most of the initial load. All

the cables could not be connected at the same height because it would cause them to slip around

one another and entangle.

Figure 12: Cables holding camera in place

IV. SOLUTIONS

a. Servo motors

With the initial idea of using servo motors to manipulate the camera, torque was a key

trouble. To test this, a ROBIX arm was attached to a servo motor while the camera was hung

from the end of the arm. With a 4” arm, the single servo motor was able to lift the camera. This

simple test showed that the motor torque would be sufficient for our application. Next was the

issue of adequate range of motion. On the 3’x2’x2.5’ field, a displacement of at least 2’ of cable

was desired. With a rotational range of 180o, the required reel radius would be 7.5”. A pulley this

large in diameter, yet thin enough to adequately couple with the motor shaft, would be

impossible to find commercially and exceedingly expensive to manufacture.

The ultimate solution was to physically modify the servo motors to create velocity control

motors. To do this, a connection ring was removed that coupled a gear to the servo’s

potentiometer. This potentiometer supplied the feedback for the servo motor. Also, a plastic

retaining block was removed from the top of the gear. This block physically limited the rotation

to 180o. Figures 13-17 show the layout and modification of the servo motors.

Page 12: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

11

Figure 13: Standard ROBIX servo motor

Figure 14: ROBIX servo motor with exposed gearbox

Figure 15: Overall motor disassembly and potentiometer coupling

Page 13: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

12

Figure 16: Gear retaining block and potentiometer coupling removal

Figure 17: Potentiometer shaft

With these two components removed, the servo motors were converted to velocity control

motors with no feedback. Given a count value and a potentiometer setting, the motor would set

to a specific velocity. The potentiometer was manually adjusted and set to achieve a zero

velocity point at a count value of 100. The resulting motor speed range is around 0.8 revolutions

per second, in both directions. For velocity control motors, infinite rotation range was achieved;

the need for an excessively large reel was gone but the need for a reel all together was still

present. Using the school’s machine shop, 1.27” radius plastic spools with connection cutouts

were manufactured to transmit motor rotation to pulley rotation. The unrestricted rotation proved

to be a significant achievement on the project.

b. Calibration

Although actual motor response is time dependent, it was determined that full calibration

would be too difficult and time intensive to pursue. A procedure that leads to steady state data

was chosen. To easily measure speed the motor was fixed to a table with a lever arm indicating

position. The motor was run at different counts and the time it took for it to complete 10

Page 14: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

13

revolutions was recorded using a stopwatch. The initial point was marked as the point

perpendicular to the base of the motor. The number of counts and the time it took was entered

into a spreadsheet and the velocity was determined through linear interpolation. Initially, the

results obtained included the time dependency because the measurements started from the initial,

zero velocity state. This was later corrected by letting the motor run for the first few times, until

it reached steady-state. This ensured a better database of time independent points. Sample

calibration data for all the motors is attached in Appendix III. The interpolated values could be

accessed quickly for each motor.

c. Position control

Error in position control was never eliminated. Motors exhibited random error depending on

direction, time of move, and camera position. The random nature of the error was a problem that

could not be solved with a simple solution. A multi-dimensional error correction is needed, but

this was a very time consuming and difficult task. For example, one motor always had an error

noticeably greater than other motors. An experimental scalar was multiplied to the calculated

velocity in an attempt to fix the error. Results showed no improvement. For position

measurement, a base with a grid pattern was used. This allowed for more accurate locating and

allowed for quick, no tape measure, position correction. The robot’s workspace was limited, via

code constraints, to X, Y, Z within [1, 21], [1, 33], [3, 22], respectively.

d. Pan and tilt motion of camera

Motion tracking was found to not be useable. In order to get a field of view of the playing

field, weight was initially added to the front of the camera in order to make it tilt downwards.

However, added weight increased the load on each of the cables and increased the directional

oscillatory behavior of the camera. Another method in which a bent hook was used to connect to

cables also did not succeed. Slippage of the cables would result in the camera returning to its

equilibrium state. It was found that the camera would not be useable for motion control. Future

iterations of this project should involve a method to better control the motion of the camera in

order to implement motion tracking on the field.

V. ACHIEVEMENT/RESULTS

The cable robot achieved moderate position control with an open-loop controller. No camera

or motor feedback was used. Given an initial position and waypoints, the camera can be moved

through the waypoints with a random, compounding error. Maximum initial error range is ±1.2”.

However, the normal error experienced for the first position change is less, at ±0.5” These errors

compound and begin to increase error if the position is not recalibrated periodically. A Graphic

User Interface (GUI) was created to interface the user with the source code. The GUI, shown in

Page 15: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

14

Figure 18, displays the camera’s view and a graphical representation of the camera movement

through the workspace. The GUI allows user input of waypoints and then executes the motions.

The GUI incorporates functions to make the robot move in a circle (along the XY plane) and in a

helix (in the XYZ plane).

Figure 18: GUI used to control the system

Thin metal brackets of different heights which acted as obstacles were placed at different

locations on the field. The robot was commanded to collide with the obstacles and turn them

over. This allows error observation and emphasized the compounding error. The coordinates to

complete these tasks was predetermined and the data is attached in Appendix IV. It was noted

that the measured coordinates of the obstacles was not the same as the coordinates that the robot

theoretically moved to when programmed to move using MATLAB. Therefore, the pseudo

coordinates of the obstacles were determined and fed into the program. On doing this, the robot

was able to hit all the obstacles with good consistency.

Page 16: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

15

VI. LEARNING EXPERIENCES

When dealing with the problem at a detailed level, it became more complex and there were

many unforeseen problems that were faced during the duration of the project. A lot of time was

spent building the robot and trying to analyze the problems that we had to overcome. Critical

thinking and problem solving were the key elements to finishing the project. Since most of the

project deals with cable robots, we had to widen our scope of understanding of the subject from

what was taught in class. A consensus opinion of the group was that kinematics of cable robots

taught in lecture would have been helpful.

A major learning experience was with error. It was determined that feedback is of ultimate

importance. In hindsight, it was decided that the unmodified servo motors with large reels should

have been used, with the caveat of unlimited rotation angle. If not servo motors, encoders should

have been used on the velocity control motors. Error for such a complex model proved to be

elusive to describe and quantify. With so many aspects of control, including physical and

programmatic, error was difficult to correct. Motor error was never successfully corrected.

A secondary experience was coping with limited resources; this includes time. The solution

began with using the supplied servo motors. This defined lift capacity, response, and accuracy.

Money and time lead to building a wooden frame, which reduced tolerances, and using a slack

camera support, which made the camera unusable. At least 100 hours was spent, but to solve this

problem correctly, it would take much more time.

Page 17: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

APPENDIX I. MATLAB CODES

Motor calibration:

function out=speed_data(motor,speed,count,motortype) % out=speed_data(motor,speed,count,motortype) % % Function with motor speed data used to interpolate to find the counts % matching the desired speed. Depending on the value of motortype % the function can work in reverse to give the speed for a desired count % value % % % The speed value must be within the motor limits are given by: % % motor1: [-0.7690, 0.7170] % motor2: [-0.8570, 0.8440] % motor3: [-0.7650, 0.7480] % motor4: [-0.8050, 0.7960] % % INPUTS: % motor: 1-4, integer identifying which motor % speed: desired speed in rev/s % count: desired count % motortype: = 1 speed -> counts % = 2 counts -> speed % % OUTPUTS: % out: interpolated count or speed value to be passed to ssc controller % % Jason Kulpe % 11/15/09

% Motor calibration data count1=[0 60 80 85 90 95 100 105 110 115 120 140 255]; speed1=[0.7140 0.7170 0.6420 0.5680 0.4180 0.1760 0 -0.2190 -0.4610 -0.6160

-0.7020 -0.7690 -0.7620]; count2=[0 20 40 60 80 85 90 95 100 105 110 115 120 140 160 180 200 220 240

255]; speed2=[0.8430 0.8431 0.8440 0.8400 0.7690 0.6600 0.5040 0.2450 0 -0.2451 -

0.5210 -0.6880... -0.7820 -0.8520 -0.8560 -0.8570 -0.8540 -0.8561 -0.8550 -0.8510]; count3=[0 60 80 85 90 95 100 105 110 115 120 140 255]; speed3=[0.7390 0.7480 0.6780 0.5910 0.4310 0.1800 0 -0.2800 -0.5320 -0.6620

-0.7200 -0.7650 -0.7540]; count4=[0 60 80 85 90 95 100 105 110 115 120 140 255]; speed4=[0.7880 0.7960 0.7390 0.6770 0.5320 0.2890 0 -0.2630 -0.5130 -0.6750 -

0.7420 -0.8050 -0.7880];

% Motor speed -> counts if motortype==1 if motor==1 out=round(interp1(speed1,count1,speed)); elseif motor==2

Page 18: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

out=round(interp1(speed2,count2,speed)); elseif motor==3 out=round(interp1(speed3,count3,speed)); elseif motor==4 out=round(interp1(speed4,count4,speed)); else error('Motor must be 1,2,3, or 4') end end

% Counts -> motor speed if motortype==2 if motor==1 out=interp1(count1,speed1,count); elseif motor==2 out=interp1(count2,speed2,count); elseif motor==3 out=interp1(count3,speed3,count); elseif motor==4 out=interp1(count4,speed4,count); else error('Motor must be 1,2,3, or 4') end end

% Check for NANs if isnan(out) error('Interpolation value is a NAN which means speed out of range') end

Drive motors for a selected time:

function drive_motors_time(ssc,T,count) % drive_motors_time(ssc,T,count) % % Drive all motors for time T at a level given by counts. After time has % elapsed all motors are stopped. % % INPUTS: % ssc: serial controller object % T: drive time, seconds % counts: 1x4 vector of motor counts

% Current time time=clock;

% Drive each motor at its count value until the elapsed time = T sscservoset(ssc,1,count(1)) sscservoset(ssc,2,count(2))

Page 19: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

sscservoset(ssc,3,count(3)) sscservoset(ssc,4,count(4))

while etime(clock,time)<=T end

% After time has elapsed stop all motors stop_all_motors(ssc)

Find motor speeds and drive time:

function [T count]=optimize_motor_drive_time(p1,p2) % [T count]=optimize_motor_drive_time(p1,p2) % % Optimize the motor drive time to move from points p1 to p2. The motor % time T is chosen to be the lowest time such that the associated motor % speeds are within the physical motor limits. % % INPUTS: % p1: [x y z] coordinates of point 1 % p2: [x y z] coordinates of point 2 % % OUTPUTS: % T: motor drive time, seconds % count: [c1 c2 c3 c4] motor count values

% Model variables model_parameters

% Calculate cable length change dp=cable_move(p1,p2);

% Initialize variables dt=.005; T=dt; check=1; iter=1;

% Gains a1=1.1; a2=.75;

% Iterate through loop to find the time that when speed is calculated, all % motor speeds are within bounds

Page 20: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

while check speed=dp/(pi*D*T); % Compute speed, assumed to be constant

% Choose a gain for motor 2 to compensate for errors? gain based on % direction if sign(speed(2)) speed(2)=a1*speed(2); else speed(2)=a2*speed(2); end

% Check to see if the speeds are within limits speed_check=prod(double(speed <= ub)) && prod(double(speed >= lb));

% If so terminate the loop, else, increment the time if speed_check check=0; else T=T+dt; iter=iter+1; end end

% Find count values from the associated speed for i=1:4 count(i)=speed_data(i,speed(i),[],1); end

Find cable lengths from camera position:

function L=cable_lengths(p) % L=cable_lengths(p) % % Calculates the cable lengths for the camera, at point p. % NOTE: World coordinate center is at tower 4, on the floor % % INPUTS % p: [x y z] = camera posistion % % OUTPUTS: % L = [L1 L2 L3 L4] : cable lengths, inches

% Find model parameters model_parameters

x=p(1);

Page 21: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

y=p(2); z=p(3);

% Compute lengths L1=sqrt(x^2+y^2+(H1-z)^2); L2=sqrt((S12-x)^2+y^2+(H2-z)^2); L3=sqrt((S34-x)^2+(W23-y)^2+(H3-z)^2); L4=sqrt(x^2+(W14-y)^2+(H4-z)^2); L=[L1 L2 L3 L4];

Find cable displacement:

function dp=cable_move(p1,p2) % dp=cable_move(p1,p2) % % Calculate the change in cable lengths between points 1 and 2. % % INPUTS: % p1: [x y z] coordinates of point 1 % p2: [x y z] coordinates of point 2 % % OUTPUTS: % dp: [d1 d2 d3 d4] change in lengths for cables 1-4

dp=cable_lengths(p2)-cable_lengths(p1);

Simulation plot of system:

function cable_plot(varargin) % h=cable_plot % h=cable_plot(pts) % % Function to plot the simulation of the camera on a figure with handle h. % The number of points can be any size. % % INPUTS: % pts: n x 3 vector of X Y Z points % % OUTPUT: % h: figure handle of plot

% Model parameters model_parameters

% La=cable_lengths(p1);

Page 22: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

% Lb=cable_lengths(p2);

% Draw field and frame S=mean([S12 S34]); W=mean([W14 W23]); H=mean([H1 H2 H3 H4]);

% Draw the lines hold on col='k'; wid=2; % Field h(1)=fill3([0 S S 0],[0 0 W W],[0 0 0 0],'g');

% Columns h(2)=line([0 0],[0 0],[0 H1],'color',col,'linewidth',wid,'linestyle','--'); h(3)=line([S S],[0 0],[0 H2],'color',col,'linewidth',wid,'linestyle','--'); h(4)=line([S S],[W W],[0 H3],'color',col,'linewidth',wid,'linestyle','--'); h(5)=line([0 0],[W W],[0 H4],'color',col,'linewidth',wid,'linestyle','--');

% Add in coordinate axes h(6)=quiver3(0,0,0,5,0,0,'color',col,'linewidth',wid); h(7)=quiver3(0,0,0,0,5,0,'color',col,'linewidth',wid); h(8)=quiver3(0,0,0,0,0,5,'color',col,'linewidth',wid); axis([-1 S+1 -1 W+1 -1 H+1 0 1])

% plot all the points if nargin>0 pts=varargin{1}; for i=1:size(pts,1); h(i+8)=plot3(pts(i,1),pts(i,2),pts(i,3),'ko','markersize',5,... 'markerfacecolor','k','markeredgecolor','k'); end end

% Create parent handle h_all to contain all object handles h_all=hggroup; rotate3d('on'); set(h,'Parent',h_all) ;

Parameters of model:

% Model parameters, inch % Pulley properties R=1.27/2; D=1.27;

% Frame properties W14=34+1/8; W23=34+3/16; S34=21+7/16;

Page 23: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

S12=21+1/8;

% Column properties H1=23+7/16; H2=23+3/16; H3=23+3/16; H4=23+3/8;

% Motor speed limits (rev/s) ub=[0.7170 0.8440 0.7480 0.7960]; lb=[-0.7690 -0.8570 -0.7650 -0.8050];

Custom waypoint selection:

function [run_time count_list]=custom_waypoint(p) % [run_time count_list]=custom_waypoint(pt_list) % % Compute the times and counts necessary to move through different % waypoints in the list pt_list. Assumes the minimum size of pt_list is % 2 x 3. % % INPUTS: % pt_list: n x 3 matrix where n describes the number of waypoints, % and 2 <= n <= 6 % % OUTPUTS: % run_time: n-1 vector of times to go between waypoints i-1 and i % count_list: n-1 x 4 matrix of motor counts to be used

n=size(p,1);

% Find the run times to go between each point for i=2:n % Move the camera between points p(i-1) to p(i) [run_time(i-1) count_list(i-1,:)]=optimize_motor_drive_time(p(i-

1,:),p(i,:)); end

Move in a circle:

function p=move_circle(ssc) % pts=move_circle(ssc) % % Make the camera move in a preset circular path %

Page 24: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

% INPUTS: % ssc: serial controller % % OUTPUTS: % pts: [x y z] points in space

% Pause time tp=2;

% Initial point p0=[11 20 6];

% Points n=20; tt=linspace(0,2*pi,n); r=3; for i=1:n p(i,:)=[r*cos(tt(i))-r r*sin(tt(i)) 0]+p0; end

% For each find the motor run time and associated counts for i=2:n % Move the camera between points p(i-1) to p(i) [run_time(i-1) count_list(i-1,:)]=optimize_motor_drive_time(p(i-

1,:),p(i,:)); end

% Drive if ssc is listed if nargin>0 % Run motors n=length(run_time); for i=1:n T=run_time(i); count=count_list(i,:); drive_motors_time(ssc,T,count); pause(tp) end end

Move in a helix:

function p=move_helix(ssc) % pts=move_helix(ssc) % % Move the camera in a preset pattern of a helix. % % INPUTS: % ssc: serial controller % % OUTPUTS:

Page 25: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

% pts: points of helix

% Pause time tp=2;

p0=[10 15 3]; % initial points n=50; t=linspace(0,4*pi,n)';

% Helix radius a=3;

% Helix pitch b=8/(4*pi);

% Helix coordinates x=a*cos(t)+p0(1); y=a*sin(t)+p0(2); z=b*t+p0(3); p=cat(2,x,y,z);

% Make coordinates and find motor drive times and counts for i=2:n % Move the camera between points p(i-1) to p(i) [run_time(i-1) count_list(i-1,:)]=optimize_motor_drive_time(p(i-

1,:),p(i,:)); end

% Drive if ssc is listed if nargin>0 % Drive motors for i=1:n-1 drive_motors_time(ssc,run_time(i),count_list(i,:)); stop_all_motors(ssc) pause(tp) end end

Collide with obstacles:

function p=object_collision(ssc) % pts=object_collision(ssc) % % Drive the camera in a pre-selected pattern designed to hit obstacles % % INPUTS: % ssc: serial servo controller % % OUTPUTS: % pts: points of trajectory

Page 26: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

% Pause time tp=1;

% Initial point p0=[11.5 16.5 3.5];

% Obstacle points p1=[6 8.25 6]; p2=[20 9 6]; p3=[20 20.5 3]; p4=[6 24.5 2];

% Find the counts and times between each poitns [T01 count01]=optimize_motor_drive_time(p0,p1); [T12 count12]=optimize_motor_drive_time(p1,p2); [T23 count23]=optimize_motor_drive_time(p2,p3); [T34 count34]=optimize_motor_drive_time(p3,p4);

% Form p p=cat(1,p0,p1,p2,p3,p4);

% Drive motors if ssc is listed if nargin>0 % Drive each motor %P0 to P1 drive_motors_time(ssc,T01,count01); stop_all_motors(ssc); pause(tp)

%P1 to P2 drive_motors_time(ssc,T12,count12); stop_all_motors(ssc); pause(tp)

%P2 to P3 drive_motors_time(ssc,T23,count23); stop_all_motors(ssc); pause(tp)

% P3 to P4 drive_motors_time(ssc,T34,count34); pause(tp)

% Stop all motors stop_all_motors(ssc) end

Page 27: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

APPENDIX II: MODEL SKETCHES

Page 28: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

36.000

.750

3.375

16.500

3.000

8.000

TOP VIEW

24.000

28.000

FRONT VIEWSIDE VIEW

1DO NOT SCALE DRAWING

WOODEN STRUCTURE

SHEET 1 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:12 WEIGHT:

REVDWG. NO.

ASIZE

TITLE: ENTIRE SETUP OF WOODEN (PINE) PLAYING FIELD

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA INSTITUTE OF TECHNOLOGY. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 29: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

ISOMETRIC VIEWS

1DO NOT SCALE DRAWING

WOODEN STRUCTURE

SHEET 2 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:12 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 30: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

1.500

1.750

.500

1.250

R.250

.750

SIDE VIEW REAR VIEW

TOP VIEW

MOTORS

1DO NOT SCALE DRAWING

MTRS ASS.SHEET 3 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:1 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA INSTITUTE OF TECHNOLOGY. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 31: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

1.600

.650

.500

1.600

R.625

1.146

.375

.050

PULLEYS

1DO NOT SCALE DRAWING

PLLS ASS.SHEET 4 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:1 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS: MADE IN MACHINE SHOP. NOT PROVIDED BY UNIVERSITY

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

CARBON PLASTICFINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 32: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

1.500

.055

.125

1.400

1.400

1.000

1DO NOT SCALE DRAWING

BRK ASM.SHEET 5 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:1 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

BRACKET

BRACKETBRACKETBRACKETBRACKETBRACKET

Page 33: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

3.0008.000 4.500

1.500

4.5001.500

16.500

4.500

1.500

4.500

1.500

36.000

.300

PLAYING FIELD

1DO NOT SCALE DRAWING

PLFLD ASM.SHEET 6 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:12 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 34: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

8.000.250

5.000

R.100

.250

HOLDER FOR CONTROL BOX

1DO NOT SCALE DRAWING

CNRT HLDR.ASM

SHEET 7 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:4 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 35: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

.970

.200

.097R.083

.085

.166

CABLE HOLDER

1DO NOT SCALE DRAWING

CBL HLD.ASMSHEET 8 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 2:1 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 36: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

A

DETAIL A SCALE 1 : 2

DETAILED VIEW OF MOTOR PULLEY SYSTEM

1DO NOT SCALE DRAWING

MTR-PLY.ASM

SHEET 9 OF 9

AJEYA

AJEYA

AJEYA

AJEYA

UNLESS OTHERWISE SPECIFIED:

SCALE: 1:12 WEIGHT:

REVDWG. NO.

ASIZE

TITLE:

NAME DATE

COMMENTS:

Q.A.

MFG APPR.

ENG APPR.

CHECKED

DRAWN

FINISH

MATERIAL

INTERPRET GEOMETRICTOLERANCING PER:

DIMENSIONS ARE IN INCHESTOLERANCES:FRACTIONALANGULAR: MACH BEND TWO PLACE DECIMAL THREE PLACE DECIMAL

APPLICATION

USED ONNEXT ASSY

PROPRIETARY AND CONFIDENTIALTHE INFORMATION CONTAINED IN THISDRAWING IS THE SOLE PROPERTY OFGEORGIA TECH. ANY REPRODUCTION IN PART OR AS A WHOLEWITHOUT THE WRITTEN PERMISSION OFAJEYA KARAJGIKAR IS PROHIBITED.

5 4 3 2 1

Page 37: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

APPENDIX III. CALIBRATION DATA

Figure A3-1: Calibration data for motor 1 (attached to pole 1)

Rev 10

Motor Stop Value Motor 1

Counts Time 1 Time 2 Time 3 Average time Speed (RPS)

1 100 0 14.06 13.9 14.06 14.007 0.714

60 14.06 13.97 13.81 13.947 0.717

80 15.66 15.57 15.5 15.577 0.642

85 17.59 17.63 17.63 17.617 0.568

90 24.28 23.9 23.66 23.947 0.418

95 56.84 56.78 56.81 56.810 0.176

100 0 0 0 0.000 0.000

105 46.19 45.65 45.16 45.667 -0.219

110 21.6 21.78 21.75 21.710 -0.461

115 16.31 16.19 16.22 16.240 -0.616

120 14.22 14.28 14.25 14.250 -0.702

140 13.06 12.97 12.97 13.000 -0.769

255 13.12 13.15 13.12 13.130 -0.762

-1.000

-0.800

-0.600

-0.400

-0.200

0.000

0.200

0.400

0.600

0.800

0 50 100 150 200 250 300

Sp

ee

d (

RP

S)

Counts

motor 1

Page 38: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

Figure A3-2: Calibration data for motor 2 (attached to pole 2)

Rev 10

Motor Stop Value Motor 2

Counts Time1 Time 2 Time 3 Average time Speed (RPS)

2 100 0 11.84 11.85 11.9 11.863 0.843

20 11.81 11.9 11.87 11.860 0.843

40 11.81 11.84 11.9 11.850 0.844

60 11.9 12 11.81 11.903 0.840

80 12.97 13.1 12.93 13.000 0.769

85 15.19 15.07 15.19 15.150 0.660

90 19.87 19.78 19.84 19.830 0.504

95 40.81 40.72 40.91 40.813 0.245

100 0 0 0 0.000 0.000

105 41.25 40.81 40.53 40.863 -0.245

110 19.28 19.21 19.06 19.183 -0.521

115 14.56 14.5 14.54 14.533 -0.688

120 12.82 12.75 12.81 12.793 -0.782

140 11.78 11.72 11.72 11.740 -0.852

160 11.71 11.66 11.68 11.683 -0.856

180 11.66 11.63 11.72 11.670 -0.857

200 11.68 11.75 11.68 11.703 -0.854

220 11.62 11.69 11.75 11.687 -0.856

240 11.78 11.69 11.62 11.697 -0.855

255 11.69 11.78 11.79 11.753 -0.851

y = 2E-06x6 - 0.0001x5 + 0.0033x4 - 0.0399x3 + 0.2001x2 - 0.4093x + 1.1026R² = 0.9994

-1.000

-0.800

-0.600

-0.400

-0.200

0.000

0.200

0.400

0.600

0.800

1.000

0 20 40 60 80 85 90 95 100 105 110 115 120 140 160 180 200 220 240 255

Sp

eed

(R

PS

)

Counts

Motor 2

Motor 2

Page 39: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

Figure A3-3: Calibration data for motor 3 (attached to pole 3)

Rev 10

Motor Stop Value Motor 3

Counts Time 1 Time 2 Time 3 Average time Speed (RPS)

3 100/101 0 13.65 13.56 13.41 13.540 0.739

60 13.4 13.34 13.35 13.363 0.748

80 14.81 14.75 14.72 14.760 0.678

85 16.78 17.03 16.94 16.917 0.591

90 23.28 23.16 23.16 23.200 0.431

95 55.94 55.25 55.91 55.700 0.180

100 0 0 0 0.000 0.000

105 36.03 35.72 35.28 35.677 -0.280

110 18.84 18.81 18.78 18.810 -0.532

115 15.03 15.15 15.16 15.113 -0.662

120 13.84 13.91 13.94 13.897 -0.720

140 13.06 13.09 13.09 13.080 -0.765

255 13.31 13.25 13.22 13.260 -0.754

-1.000

-0.800

-0.600

-0.400

-0.200

0.000

0.200

0.400

0.600

0.800

1.000

0 50 100 150 200 250 300

Sp

ee

d (

RP

S)

Counts

motor 3

Page 40: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

Figure A3-4: Calibration data for motor 4 (attached to pole 4)

Rev 10

Motor Stop Value Motor 4

Counts Time 1 Time 2 Time 3 Average time Speed (RPS)

4 100 0 12.75 12.65 12.69 12.697 0.788

60 12.56 12.57 12.56 12.563 0.796

80 13.62 13.43 13.53 13.527 0.739

85 14.78 14.78 14.75 14.770 0.677

90 18.81 18.78 18.85 18.813 0.532

95 34.34 34.47 35.03 34.613 0.289

100 0 0 0 0.000 0.000

105 38.09 37.97 37.88 37.980 -0.263

110 19.47 19.53 19.47 19.490 -0.513

115 14.87 14.78 14.81 14.820 -0.675

120 13.47 13.47 13.5 13.480 -0.742

140 12.47 12.37 12.44 12.427 -0.805

255 12.71 12.63 12.72 12.687 -0.788

-1.000

-0.800

-0.600

-0.400

-0.200

0.000

0.200

0.400

0.600

0.800

1.000

0 50 100 150 200 250 300

Sp

ee

d (R

PS)

Counts

Page 41: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

APPENDIX IV: Data to make the robot move from one co-ordinate to another

Note: All dimensions are in inches

OBSTACLE COLLISION DATA: DATA TO MAKE THE ROBOT MOVE IN A CIRCLE:

X Y Z

X Y Z Point 1 11 20 6.1

CENTER (p0) 11.5 16.5 3.5 Point 2 10.8375 20.9741 6.1

Point 3 10.3674 21.8426 6.1

Actual points (when measured) Point 4 9.6408 22.5115 6.1

X Y Z Point 5 8.7365 22.9082 6.1

Point 1 7 16.5 3 Point 6 7.7523 22.9898 6.1

Point 2 17 9.5 4 Point 7 6.7949 22.7473 6.1

Point 3 17 20.5 3 Point 8 5.9682 22.2072 6.1

Point 4 5 23.5 2 Point 9 5.3616 21.4278 6.1

Point 10 5.0409 20.4938 6.1

What the robot thinks its at: Point 11 5.0409 19.5062 6.1

X Y Z Point 12 5.3616 18.5722 6.1

Point 1 (p1) 6 8.25 6 Point 13 5.9682 17.7928 6.1

Point 2 (p2) 20 9 6 Point 14 6.7949 17.2527 6.1

Point 3 (p3) 20 20.5 3 Point 15 7.7523 17.0102 6.1

Point 4 (p4) 6 24.5 2 Point 16 8.7365 17.0918 6.1

Point 17 9.6408 17.4885 6.1

Point 18 10.3674 18.1574 6.1

Point 19 10.8375 19.0259 6.1

Point 20 11 20 6.1

DATA TO MAKE THE ROBOT MOVE IN A HELIX:

X Y Z

Point 1 13 15 3

Point 2 12.3674 16.8426 3.4211

Point 3 10.7365 17.9082 3.8421

Point 4 8.7949 17.7473 4.2632

Point 5 7.3616 16.4278 4.6842

Point 6 7.0409 14.5062 5.1053

Point 7 7.9682 12.7928 5.5263

Point 8 9.7523 12.0102 5.9474

Point 9 11.6408 12.4885 6.3684

Point 10 12.8375 14.0259 6.7895

Point 11 12.8375 15.9741 7.2105

Point 12 11.6408 17.5115 7.6316

Point 13 9.7523 17.9898 8.0526

Point 14 7.9682 17.2072 8.4737

Point 15 7.0409 15.4938 8.8947

Point 16 7.3616 13.5722 9.3158

Point 17 8.7949 12.2527 9.7368

Point 18 10.7365 12.0918 10.1579

Point 19 12.3674 13.1574 10.5789

Point 20 13 15 11

Page 42: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

APPENDIX V. ROBOT KINEMATICS GRAPHICAL SOLUTION

Figure

ROBOT KINEMATICS GRAPHICAL SOLUTION

Figure A5-1: Cable length solution process

Page 43: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

APPENDIX VI: PROGRAM FLOW CHARTS

Page 44: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables
Page 45: University of Calgary Webdisk Server - Robotic …people.ucalgary.ca/~ajeya.karajgikar/ME4451_Final...Figure 8: Final implemented plan with the camera held in position by the cables

Recommended