Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Trajectory Calculator (W/ Drag) (http://www.chiefdelphi.com/forums/showthread.php?t=100965)

gnunes 15-02-2012 12:53

Re: Trajectory Calculator (W/ Drag)
 
Yes, drag is complicated, but also important. If your launcher spins the ball, then lift is important too.

If you don't want this complication, then your best approach is empirical. Get a lot of data on distance vs. your launch parameters and make a table. Then, the robot can use interpolation to work the other way: given a distance, it can get values for the launch parameters. If you are varying two things (launch angle and ball velocity), then this could get complicated. You will have several tables, and will need an algorithm to determine which one to use.

Even though I wrote the trajectory calculator, our team is going to use the interpolation approach!

engunneer 15-02-2012 13:06

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by gnunes (Post 1127313)
Get a lot of data on distance vs. your launch parameters and make a table. Then, the robot can use interpolation to work the other way: given a distance, it can get values for the launch parameters.

This is pretty much our plan.

Hinfoiltat 15-02-2012 19:29

Re: Trajectory Calculator (W/ Drag)
 
I would appreciate a video of this in action.

Brandon_L 22-02-2012 02:40

Re: Trajectory Calculator (W/ Drag)
 
I see a formula for finding the angle to launch at with a constant velocity, but I can't find the opposite (Velocity to launch at with a constant angle) anywhere for the life of me. Does anyone know/have it? I've been going through my kinematic equations for the past 6 hours (I kid you not) and have nothing

Ether 22-02-2012 09:11

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by Brandon_L (Post 1132341)
I see a formula for finding the angle to launch at with a constant velocity, but I can't find the opposite (Velocity to launch at with a constant angle) anywhere for the life of me. Does anyone know/have it? I've been going through my kinematic equations for the past 6 hours (I kid you not) and have nothing

Let
Code:

d = horizontal distance (in feet) from launch point to hoop

h = vertical height (in feet) of hoop above the launch point

a = angle of launch (radians) above the horizontal

v = initial speed of ball (in ft/sec) as it leaves the launcher

Then the no-drag, no magnus formula for speed is:
Code:

v = 4*d/(cos(a)*sqrt(d*tan(a)-h))


Lalaland1125 22-02-2012 10:02

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by Brandon_L (Post 1132341)
I see a formula for finding the angle to launch at with a constant velocity, but I can't find the opposite (Velocity to launch at with a constant angle) anywhere for the life of me. Does anyone know/have it? I've been going through my kinematic equations for the past 6 hours (I kid you not) and have nothing

Our plan is to simply do the simple drag-free formula for an initial guess, and then slowly increase the velocity till the non-reversible drag including formula "hits" the target.

The computers are definitely fast enough for this, but who knows if the ball actually acts like its supposed to.

gnunes 22-02-2012 14:03

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by Lalaland1125 (Post 1132467)
Our plan is to...slowly increase the velocity till the non-reversible drag including formula "hits" the target.

The problem is that there is no "formula" for the case where drag is included. If you are using LabView, then you could take my trajectory calculator (see post #11) and turn it into a sub-VI that would find the distance for you (just cut out all the graphing stuff which you won't need).

I would recommend using the trajectory calculator "off-line" to calculate the distance for, say 100 or 200 launch velocities between your fastest and slowest launch speeds. Then store that table of distance vs launch speed in your competition code, and use interpolation to find the velocity you want in a single pass. Much, much faster.

Ether 22-02-2012 16:58

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by Lalaland1125 (Post 1132467)
Our plan is to simply do the simple drag-free formula for an initial guess, and then slowly increase the velocity till the non-reversible drag including formula "hits" the target.

Quote:

Originally Posted by gnunes (Post 1132662)
The problem is that there is no "formula" for the case where drag is included.

For a drag model where drag is either linear or quadratic in velocity, I believe there is a closed form solution* for height, given distance, launch angle, drag coefficient, and launch velocity. So you could vary the launch velocity and calculate the height until the height is the desired value.

I'm not saying that's the best way to do it, but it could be done.


* I haven't checked it. It's rather ugly.


Ether 22-02-2012 19:53

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by Ether (Post 1132806)
* I haven't checked it. It's rather ugly.

Here it is, if anyone wants to try it or check my math. I'm sure this could be simplified with a bit of work. Maybe even solved explicitly for Vo?

Code:

h=log(1-Vo^2*K/g)/(2*K)-log(sec(sqrt(-g)*sqrt(K)*((%e^(d*K)-1)/(cos(theta)*Vo*K)-atan((Vo*sqrt(K))/sqrt(-g))/(sqrt(-g)*sqrt(K)))))/K;
See attached PDF for derivation.



Ether 22-02-2012 22:58

Re: Trajectory Calculator (W/ Drag)
 


@gnunes: can you run your trajectory program with the following parameters, and post height vs distance data (say, every foot) and a PNG of a plot of height (above the launch point, in feet) vs distance (horizontal distance from the launch point) with the following parameters: Vo=23 feet/sec, theta=45 degrees, g=-32 ft/sec2, drag = -0.03*V2 ft/sec2, and no spin?



Lalaland1125 23-02-2012 19:56

Re: Trajectory Calculator (W/ Drag)
 
2 Attachment(s)
I ran your numbers through my dead simple approximator(code at bottom) and got a different result(image + source code is attached)

I am fairly sure that your result cannot be correct due to running it through the standard projectile motion equations.

Assuming no loss of energy, the ball will follow the equation: .5*Vy^2 = g * h.
(mgh = 1/2 * m * v^2)

Plugging this into wolfram alpha(http://www.wolframalpha.com/input/?i=%28%2823+feet+per+second+in+meters+*+sin%2845+d egrees%29%29+**+2++*+.5+%29%2F9.8+meters+per+secon d+squared) ( using meters because I am more used to them) gets me 4.113 ft as the max possible height. Your graph shows the ball approaching 7 m.

(When I set the drag to 0 on my code the height reaches a max of about 4ft and change)

Oh, and the code attachment shows what I mean by trial and error. Look at findBestCurveWithin.

Code:

void calcY(double& x,double& y, double &xVel, double& yVel)
{
  double oldxVel = xVel;
  double oldyVel = yVel;


  xVel += drag * xVel * xVel * timeIncrement;
  yVel += (g + drag * yVel * yVel) * timeIncrement;

  x += oldxVel * timeIncrement + .5 * timeIncrement * (xVel - oldxVel);
  y += oldyVel * timeIncrement + .5 * timeIncrement * (yVel - oldyVel);
}

QVector<QPointF> findCurve(double velocity, double angle, double targetX)
{
  QVector<QPointF> result;

  double rads = angle * M_PI/180;
  double xVel = velocity * cos(rads);
  double yVel = velocity * sin(rads);
  double x = 0;
  double y = 0;

  do
  {
      calcY(x,y,xVel,yVel);
      result.push_back(QPointF(x,y));
  }
  while (fabs(x - targetX) > .01);


  return result;
}


Ether 23-02-2012 20:46

Re: Trajectory Calculator (W/ Drag)
 
Quote:

Originally Posted by Lalaland1125 (Post 1133691)
I ran your numbers through my dead simple approximator(code at bottom) and got a different result(image + source code is attached)

Thank you. I have should have caught that.

Code:

x3: Vo =subst(0,t,rhs(x2));  <= a small typo on Page 2
x3: Vyo=subst(0,t,rhs(x2));  <= should have been

I'll see if a closed-form solution is still possible with this correction.




All times are GMT -5. The time now is 18:46.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi