2012 Algalita/5 Gyres Expedition Trawl Images & Locations – Leg 2 | Facebook

April 25, 2013

See on Scoop.itSynthetic Sea Solutions

Facebook is a social utility that connects people with friends and others who work, study and live around them.

Chris Vamfun‘s insight:

This seems to be showing that the plastic is becoming more uniform throughout the Pacific rather than a big garbage patch.   It is on just a single path and make me want to see more data.   I continue to support Algilata’s foundation.  I hope you will too dear reader.

See on www.facebook.com


Out To Sea? The Plastic Garbgabe Project

March 30, 2013

See on Scoop.itSynthetic Sea Solutions

Plastic – a material for eternity? Inexpensive, simple to produce and able to adopt almost any desired characteristics, since the start of the 20th century t…

Chris Vamfun‘s insight:

This is one of the better introductions I have seen to the topic.   It makes the point very visible.   Congrats to the project.  We should have these museums all over the world.

See on www.youtube.com


Water jet Flyboard thrust physics (rev 4.26.13)

March 27, 2013

zapata jet pack

I met an inventor named Bob at the Long Beach FRC robotic regional competition who wanted my opinions on how to best stabilize single nozzle version of the  Zapata racing Flyboard which was inspired by the JetLev.  Another newer version of this is called the Jetovator.  All three are summarized in this Gismag article.

I wanted to refresh myself on the physics of the thrust that drives the jet pack.

We know that  F = d(mv)/dt   which under steady speed  conditions and equal input and output pressures leads to the thrust  (T) equation (ref NASA thrust site)

T = F = m_dot*(v_e – v_i)

where m_dot= time rate of change of  water mass flowing through a hose  and

v_e = water exit speed , v_i = water input speed along the same direction.

The mass continuity equations yields

m_dot = A_hose*rho*(v_hose)   = A_nozzle*rho*v_e  

where rho is the density of water and A_hose is the area of the hose, v_hose is the water flow rate in the hose and A_nozzle is the area of the thruster nozzle.

Since v_i = 0 for a stationary jet ski pumping water vertically to the flyboard then thrust equation for T in terms of v_e gives

T = A_nozzle*rho*V_e^2

If the hose and nozzle areas are different the relationship between v_hose and v_e is

v_e = v_hose*A_hose/A_nozzle. 

Substituting into the T equation for V_e give T in terms of v_hose.

T = A_hose*rho*v_hose*v_e = (A_hose*v_hose)^2*rho/A_nozzle

or in terms of hose flow rate  q   = A_hose*v_hose

T = q^2 *rho/A_nozzle

Other data we will need:

A_hose = 1/12 sqft (approx 4 in hose diameter),

g = 32.2 ft/s/s,

rho = 1.94 slug/cft

Under steady state flight the total thrust must equal to the weight.    It is assumed that the water weight is supported by the thrust since it puts a downward force on the hose directly beneath the vertical water column.     The thrust must also support the dry weight of the hose extending above the water.  (Note:  the hose has viscosity drag due to the high-speed water flowing through it.  The reaction force adds lift to the side of the hose. but is cancelled by the opposing downward force on the bottom of the hose.)

T = W_platform + W_hose_dry + W_water 

where

W_hose _dry= 85 lb*H/100ft    (4 in standard fire hose)

W_water= g*rho*A_hose*H

and H is the length of the hose above the water.

Substituting the weights into the T equation above we can rearrange terms and solve for q

q = sqrt((W_platform + W_hose_dry + W_water)/ (rho/A_nozzle ))

Comparison of Bob’s Test numbers with Theoretical calculation:

Bob built a test platform which weighed 250 lbs with him aboard.  At a height of 30 feet the exit flow rates were around 1000 gpm and the jet ski ran at 7100 rpm.   At 5 ft , the ski jet rpm lowered to 4500 rpm.  

The  rpm ratio he saw was  7200/4500 = 1. 6 between heights.   He said he had two nozzles with a diameter of 1.7 inches (A_nozzle =2* .0158 sqft= .0316 sqft) . 

The total length of these hoses are typically 50 ft when you account for the portion of the hose in the water.

So lets get started with the calculation based upon my equations:

The dry weight of the hose at 30ft  and the water weight are:

W_hose_30ft = 85*30/100 = 26 lbs    ,   W_water_30ft = 156 lbs

W_hose_5 ft  = 4.25 lbs                          , W_water_5ft = 26 lbs

Lets calculate the required  flow rate  q at 30 feet  and 5 ft  and see how it compares with Bobs.

q_30 =   2.65 cfs ( 1189 gpm )   , q_5 = 2.13 cfs (958 gpm)

The flow ratio  = (q_30/q_5) =  2.65/2.13 = 1.24

The calculated flow rate of 1189  gpm compares within  19% of the observed 1000 gpm .I would expect a little better agreement… I am not sure to what accuracy Bob estimated his observation or how it was measured.

RPM ratio :

Normally, pump affinity laws state that flow rates are directly proportional to rpm’s and we could stop here but as you see the flow ratio is 1.24 compared to the observed rpm ratio of 1.6.   This is because there is static pump pressure and friction losses as well as dynamic pump pressure.   So it is more accurate to compare the total pump pressure at each height and use a pump affinity rule that says the rpm is proportional to the sqrt of total pump pressure.

To calculate the rpm ratio of the pump we need the pump head or pump pressure p_p.  Once we have that on the assumption of a centrifugal pump we know that the rpm’s are proportional to the sqrt(p_p) assuming the same pump efficiency.   Using Bernoulli’s total pressure relationship we know that the total pressure at the pump must be higher than the total pressure at the nozzle  by the added pressure of the water weight (p_h) and the friction back pressure (p_fl).

p_p = p_f l + p_T + p_h

 To compute  p_fl   I  assume that the total hose length is 50 feet and doesn’t change with how much hose is above water.

I found an internet equation  (ref)  that gives the hose friction pressure FL in terms of lbs per sqin.

FL _lbs_per_in2= C*(q_hose_gpm/100)^2*L_ft/100   where

C = Friction loss Coefficient  = .2   for a 4 in fire hose.

To keep units the same we can write p_fl  in terms of q (cft/s)

p_fl =144*FL =  C’*q^2*50ft    with C ‘ =  C*(448.8)^2*144/(10^6)=  5.8

 p_T  = T/A_nozzle  is the pressure on the nozzle area due to the thrust and is the total pressure at that point

p_h  = W_water/A_hose  is the pressure due to the water height

 Pressure ……………………   H_ft = 30 ft……………………..H_ft = 5 ft

p_fl

2034

1321

p_h

4954

825.6

p_T

13693

8891

 p_p (sum)

26548

11037

 Recall that assuming the same pump efficiency, the rpm’s are proportional to the sqrt of the total pump pressure.  So

rpm_ratio = sqrt(p_p_30/p_p_5) = sqrt(26548/11037) = sqrt(2.4) = 1.6

Amazing!  This is matches the observed rpm ratio of 1.6.


Note: Using a Line Sensor to Update Gyro Heading

February 28, 2013

Using Line Sensor to Update Gyro Heading

The programming challenge for the 2013 Sack Attack game was attempted by team 1508 LancerBots fully autonomous robot. It uses gyro information to generate a navigation solution and then automatically sequences through several way points to solve the route sequences. Unfortunately as mentioned in earlier posts, the gyro drift causes heading corruption which then causes sacks to by slightly missed. One possible solution I am proposing is to use line sensors to update the gyro.
Figure 1 shows the geometry and formulas required to accomplish the update for a special case when the line is parallel to the truth x axis.    The coordinates used by 1508 were specifically chosen so all lines were parallel to either the x or y  axis.  This simplifies the update equations.

Simply put… when a line sensor event occurs, note the position error  with respect to the line (using the Nav coordinates) and divide it by the range from the origin.    This ratio is the gyro drift error in radians.

Error Contributions:  

Errors in the update equation can stem from errors in  the Nav initial condition (<.25 in, 1 deg heading) , encoder scaling (typically <1%) , encoder resolution(< .03 in) , line location measurements (<.25 in), line tape width (<.5 in) and Navigation solution numerical errors (sampling, round off).

The dominant error is the encoder scaling which can add up when the encoder has moved several hundred inches.   Lines can also be use to update the Nav  position solution so that these  errors remain less than 1% distance  from the field origin and not the total distance traveled by an encoder.   This error translates to about .6 deg of heading error from a gyro update.    So we should not expect much better than that from our updates.

General Case: Lines skew to the coordinate axes

To complete this note,  lets consider a more general line that is described by

c = a*x + b*y

where a,b and c are constants and again x and y are truth coordinates.   Now we have three unknowns (x,y and delta) and three equations:

x’ = x*cos(delta) + y*sin(delta)

y’ = -x*sin(delta) + y*cos(delta)

c = a*x + b*y

First we solve for x and y from the first two equations which is a simple inverse:

x = x’*cos(delta) – y’*sin(delta)

y = x’*sin(delta) + y’*cos(delta)

Make the small angle substitution gives

x = x’ – y’*delta

y = x’*delta + y’

Now substitute x and y into the line equation

c = a*(x’ – y’*delta) + b*(x’*delta + y’)

Now solve for delta

c -a*x’ - b*y’ = (b*x’ – a*y’)* delta

or

answer:

delta = (c -a*x’ - b*y’ )/(b*x’ – a*y’)

Check the special case above :  y = c, a = 0, b = 1

delta = (y - y’)/(x’)  : checks ok


1508 LancerBots reach world top 40 in drive skills at Robodox skills challenge

February 26, 2013

Funny thing happened on the way to qualify for worlds in the programming challenge… the robot  won the Robodox driver challenge instead with our programmer Gevorg as the driver.  Go figure.   Lancerbots brought three robots to the competition  but only one of them was working so the programming robot did double duty as both driver and programming entry.   The drive skill score was 205 which puts it in the top 40 world rankings but you need to be in the top 30 to qualify.  Being in the top 5 of the California robots qualifies it for the California State Championships on March 16th in Santa Clara near San Jose.

I helped the kids construct a solid programming robot that was very close to being qualified for worlds…except for a pesky sack that caused the robot to not complete its route. (robot video)   The robot is a very efficent spatula robot that can pick up and dump a load of 16 sacks over its back.   It is designed with encoders  , line sensors and gyro sensors that are used to provide full navigation ( two axis position and speed as well as  heading).   The line sensors are used to update the navigation solution.

The field geometry is coded by 4 way points  which are at the intersection of  the crossing white lines used for line tracking.   The waypoints  are used to automatically steer toward using a waypoint tracker algorithm that nulls cross track distance and has heading inner loop.   It makes the programming simple and straight forward and works great so long as the gyro doesn’t drift too much.   The gyro is used to generate heading as a compass would.   We know it is not a great sensor to use as a compass because it does drift at about 6 deg/min which is enough to mess you up on the last legs of the route.   But we thought we would give it a try since it is a random phenomonon and sometimes it works great..if you are lucky.       We have some ideas to make the compass heading more reliable by using  a gyro rate deadzone and also blending the gyro with additional encoder data.

I think the robot is capable of competing at the world class level and probably could score 250 points (pending compass problem fixes and optimization).   The world record currently stands at 185 points.   Had it completed its route on Saturday, the score would have matched the current world record.  Woulda shoulda coulda…frustrating to put in hours of work and have a darn sack trip you up.

I will publish the software at a future date.   It uses four tasks: Navigation, System Control, Feedback Control and Task Control.   The User and Autonomous functions generate engage commands for automatic functions and provide  relavent parameters.

As an example:   Suppose we want to track a line crossing through a waypoint.   We simply set the waypoint number (a waypoint has a position and heading) , engage the tracker and use a “move until” distance function that stops the robot when it has reached the desired point along the track.   The lateral tracking is done automatically.   Any virtual line on the field can be tracked independent of the white lines given to the programmer to use.

Relavent posts:

Note: Using a line sensor to update gyro heading

Waypoint steering geometry for a mobile robot

Navigation update equations for a two wheeled robot


All systems going for 599 Robodox 2013 Ultimate Ascent robot prior to bagging for competition

February 20, 2013

Prebag weekend was long but fruitful.  The kids and mentors put in about 12 hrs a day Sat, Sun and Mon to integrate and test all the systems prior to bagging the robot.  I must say, the shooter performance looked great… the Frisbee shots were fast and accurate.  The autonomous startup time including shooter spin up and firing 3 Frisbees was about 5 seconds which leaves us about 10 seconds to pick up and score two more.    It takes about 4 seconds for a ground Frisbee to reach the magazine so things are looking up for autonomous.

Video of first low hang:

Video of Frisbee floor feed into magazine:

Video of rapid shooter test:

Busy students and mentors doing final preparations of subsystems:

prebag 4 prebag 3 prebag 2 prebag 1


Waypoint steering geometry for a mobile robot

February 5, 2013

waypoint stearing dia

Fig 1 shows the geometry that I will use in the waypoint steering algorithms that will be discussed in future posts.  The field geometry is North (N) along the y-axis and East (E) along the x-axis.   The heading angle , psi is defined positive clockwise from North as a compass rose.

Waypoint:   The waypoint is defined with both location (X_p, Y_p) and direction psi_p.   The slope of the center track line m is  1/tan(psi_p).

Cross track and Along track Ranges:

The two parameters of interest are the along track range R_y and cross track range , R_x.   The steering is determined by R_x = R*sin(delta_psi) where delta_psi is the angle between a line drawn from the robot to the waypoint and the actual track line.

Derivation of R_x  and  R_y without sin and cos functions:

We know that the track can be expressed as a line that goes through (X_p,Y_p) and has a slope m.   So we can write the track line as  y= mx + y_0 form but we need y_0.    Plugging in for point p gives  y_0  = Y_p – m*X_p .

Hence the line eq  is   0 =  -y +m*x + Y_p – m*X_p.

It can be shown that the distance R_x  between a point  (x_r, y_r)  and a line  a*x + b*y  + c  = 0  is

|R_x|= | (a*x_r+b*y_r +c)|/sqrt(a^2 + b^2)    (see  wikipedia)

where a = m ,  b= -1 ,  c= Y_p – m*X_p ,    m  = 1/tan(psi_p)

This form can lead to division by zero when psi_p = 0 but can be avoided by using the tan(90 – psi_p)  = 1/ m  .  We  divide the starting equation

0 =  -y +m*x + Y_p – m*X_p

by m   to change its form and use it whenever m >1 or psi_p > 45 degrees.

0 = -y/m + x + Y_p/m – X_p.

Now we have new definitions of a,b,c

a = 1, b = -1 /m, c = Y_p/m – X_p  , 1/m = tan(90 – psi_p).

R_y derivation

We can use a similar method to find R_y.

|R_y| =  |(a’*x_r+b’*y_r +c’)|/sqrt(a’^2 + b’^2) )

where we use the perpendicular line to the track passing  through (X_r,Y_r) with slope  m’ =-1/m and the point as (X_p,Y_p).    This leads to

a’ = -1  , b’ = m’ , c’ = Y_r  – m’*X_r  , m’ = -1/m = -tan(psi_p)  .  We use this when psi_p  < 45 degrees and the modified form

a’ = m , b’ = 1 , c’ = -Y_r*m – X_r    for psi_p > 45 degrees.

Making R_x and R_y signed values

By convention, I want displacement to the right as positive R_x.  (X_r,Y_r) will be to the right of the track if  0< delta_psi  < 180 otherwise we change the sign of R_x.

Similarly, we want the along track distance, R_y,  to be positive if we are heading in the direction of the waypoint along the track and we have not reached the waypoint. This occurs when  0<90 – delta_psi < 180 otherwise R_y is negative.


Follow

Get every new post delivered to your Inbox.