I'm working on a 3-axis cartesian robot project for school
and need some help understanding selection concepts.
I created an array of points in 3D space that I want the
robot end effector to service so I know the distance and
time available for travel for each axis.
The question is knowing the basic equations for motion how
do I calculate the minimum velocities needed to achieve my
timing?
I know that I can accelerate the robot using trapezoidal or
triangular velocity profiles but how do I go about
calculating what these should be?
"Mark " <medwar19@yahoo.com> wrote in message <fnkquv$sge
$1@fred.mathworks.com>...
> Hi all,
>
> I'm working on a 3-axis cartesian robot project for school
> and need some help understanding selection concepts.
>
> I created an array of points in 3D space that I want the
> robot end effector to service so I know the distance and
> time available for travel for each axis.
>
> The question is knowing the basic equations for motion how
> do I calculate the minimum velocities needed to achieve my
> timing?
>
> I know that I can accelerate the robot using trapezoidal or
> triangular velocity profiles but how do I go about
> calculating what these should be?
>
> Thanks for any help or pointers to information.
>
> Mark.
----------
There is much you haven't made clear in the explanation of your project,
Mark. Do you know the sequential order you wish the robot to travel between
successive "points" in your array? Does the robot start and stop with zero
velocity at each successive point? You spoke of "the distance and time
available for travel for each axis." Do you mean by this simply that you know
the three-dimensional distance between successive points and the time
available for travel between them? If all the answers to these questions are
"yes", then you appear to be asking a rather trivial question. How to travel
distance, d, between points A and B with minimum velocity accumulated and
taking no more than a given amount of time, t. The answer would be to start
at rest at point A, use infinite acceleration until reaching velocity d/t, then
coast with constant velocity until reaching point B, and finally use infinite
deceleration to come to rest there. These are "trapezoidal" velocity segment
profiles in a sense, but I have the feeling you mean something very different
from this, though I am unable to guess what that might be.
"Roger
Stafford" <ellieandrogerxyzzy@mindspring.com.invalid> wrote
in message <fnlaup$imv$1@fred.mathworks.com>...
> "Mark " <medwar19@yahoo.com> wrote in message <fnkquv$sge
> $1@fred.mathworks.com>...
> > Hi all,
> >
> > I'm working on a 3-axis cartesian robot project for
school
> > and need some help understanding selection concepts.
> >
> > I created an array of points in 3D space that I want
the
> > robot end effector to service so I know the distance
and
> > time available for travel for each axis.
> >
> > The question is knowing the basic equations for motion
how
> > do I calculate the minimum velocities needed to achieve
my
> > timing?
> >
> > I know that I can accelerate the robot using
trapezoidal or
> > triangular velocity profiles but how do I go about
> > calculating what these should be?
> >
> > Thanks for any help or pointers to information.
> >
> > Mark.
> ----------
> There is much you haven't made clear in the explanation
of your project,
> Mark. Do you know the sequential order you wish the
robot to travel between
> successive "points" in your array? Does the robot start
and stop with zero
> velocity at each successive point? You spoke of "the
distance and time
> available for travel for each axis." Do you mean by this
simply that you know
> the three-dimensional distance between successive points
and the time
> available for travel between them? If all the answers to
these questions are
> "yes", then you appear to be asking a rather trivial
question. How to travel
> distance, d, between points A and B with minimum velocity
accumulated and
> taking no more than a given amount of time, t. The
answer would be to start
> at rest at point A, use infinite acceleration until
reaching velocity d/t, then
> coast with constant velocity until reaching point B, and
finally use infinite
> deceleration to come to rest there. These are
"trapezoidal" velocity segment
> profiles in a sense, but I have the feeling you mean
something very different
> from this, though I am unable to guess what that might be.
>
> Roger Stafford
>
Hi Roger,
Your assumption was right about the problem. It is simple
motion between 2 points. However no mech really achieves
infinite acceleration and this is the main question.
The mech will accelerate with limited acceleration, then a
triangular velocity or trapizodal (if maximum velocity can
be reached in time) before limited deceleration. The mech
will be stationary at the start and end.
I'm looking to minimise the maximum velocity of the mech
whilst making the distance in time.
I read that acceleration should be 1/3 the maximum speed?
"Mark " <medwar19.nospam@hotmail.com> wrote in message <fntmc9$2ir
$1@fred.mathworks.com>...
> Hi Roger,
>
> Your assumption was right about the problem. It is simple
> motion between 2 points. However no mech really achieves
> infinite acceleration and this is the main question.
>
> The mech will accelerate with limited acceleration, then a
> triangular velocity or trapizodal (if maximum velocity can
> be reached in time) before limited deceleration. The mech
> will be stationary at the start and end.
>
> I'm looking to minimise the maximum velocity of the mech
> whilst making the distance in time.
Well, then you should accelerate at the maximum amount allowed until
reaching a certain maximum velocity, coast at that maximum velocity for a
period of time, then decelerate at the maximum amount permissible, all in
such a way as to come back to zero velocity after total time t has elapsed.
The maximum velocity should be chosen so that the integral under the
velocity versus time curve is equal to d, the given distance. In other words,
the total area under the line v = d/t should equal the total area above it.
Since the "curve" is actually of trapezoidal shape, choosing this maximum
velocity is a matter of solving a simple linear equation obtained from the
triangles and rectangles involved in these areas. This will minimize your
maximum velocity attained.
> I read that acceleration should be 1/3 the maximum speed?
It is a bit arbitrary comparing acceleration with speed. They are measured
in different kinds of units and their relative numerical values therefore
depend on the particular system of units used.
In article <fntmc9$2ir$1@fred.mathworks.com>,
Mark <medwar19.nospam@hotmail.com> wrote:
>Your assumption was right about the problem. It is simple
>motion between 2 points. However no mech really achieves
>infinite acceleration and this is the main question.
>The mech will accelerate with limited acceleration, then a
>triangular velocity or trapizodal (if maximum velocity can
>be reached in time) before limited deceleration. The mech
>will be stationary at the start and end.
>I'm looking to minimise the maximum velocity of the mech
>whilst making the distance in time.
>I read that acceleration should be 1/3 the maximum speed?
Let the mech accelerate for t1 and travel at constant velocity
for t2, with a time limit of tL, and a required distance of D.
d[acceleration] = 1/2 * a * t1^2
d[deceleration] = d[acceleration] = 1/2 * a * t1^2
d[flat] = (a*t1) * t2 %after t1 seconds acceleration velocity is a*t1
d[total] = d[acceleration] + d[deceleration] + d[flat] =
1/2 * a * t1^2 + 1/2 * a & t1^2 + a * t1 * t2 =
a * t1^2 + a * t1 * t2 =
a * t1 * (t1 + t2)
But for lowest acceleration that gets you there in the available time tL,
then t1 + t2 = tL, and d[total] = D, so
d[total] = a * t1 * tL
D = a * t1 * tL
and
a * t1 = D/tL
Hence, for lowest acceleration that satisfies the requirement, t1
should be maximized, so t1 should be tL/2 (accelerate halfway
then decelerate) and
a * tL/2 = D/tL
a = 2 * D / tL^2
Any lower of an acceleration will not get you there in time,
and any higher of an acceleration is not needed to get you there in time,
so if a = 2 * D / tL^2 is less than your limiting acceleration you
use it, and if it is higher than your limiting acceleration you cannot
reach the goal.
In article <fnu13k$5ur$1@canopus.cc.umanitoba.ca>,
Walter Roberson <roberson@ibd.nrc-cnrc.gc.ca> wrote:
>d[total] = d[acceleration] + d[deceleration] + d[flat] =
> 1/2 * a * t1^2 + 1/2 * a & t1^2 + a * t1 * t2 =
> a * t1^2 + a * t1 * t2 =
> a * t1 * (t1 + t2)
>
>But for lowest acceleration that gets you there in the available time tL,
>then t1 + t2 = tL, and d[total] = D, so
Oh, an error! tL is not t1 + t2: tL is 2*t1 + t2 and thus t2 is tL-2*t1
>d[total] = a * t1 * tL
That should be,
d[total] = a * t1 * (t1 + tL - 2*t1) = a * t1 * (tL - t1)
>D = a * t1 * tL
That should be
D = a * t1 * (tL - t1)
a = D / (t1 * (tL - t1))
The denominator is maximized at t1 = tL/2, so 'a' is minimized at
t1 = tL/2, and a = D / (tL^2/4) so a = 4 * D / tL^2
The rest of the conclusion is the same as before: accelerate half way
then decelerate. No lower acceleration will get you there on time,
and no higher acceleration is needed.
--
"I was very young in those days, but I was also rather dim."
-- Christopher Priest
roberson@ibd.nrc-cnrc.gc.ca (Walter Roberson) wrote in message <fnu1ue
$6ul$1@canopus.cc.umanitoba.ca>...
> In article <fnu13k$5ur$1@canopus.cc.umanitoba.ca>,
> Walter Roberson <roberson@ibd.nrc-cnrc.gc.ca> wrote:
>
> >d[total] = d[acceleration] + d[deceleration] + d[flat] =
> > 1/2 * a * t1^2 + 1/2 * a & t1^2 + a * t1 * t2 =
> > a * t1^2 + a * t1 * t2 =
> > a * t1 * (t1 + t2)
> >
> >But for lowest acceleration that gets you there in the available time tL,
> >then t1 + t2 = tL, and d[total] = D, so
>
> Oh, an error! tL is not t1 + t2: tL is 2*t1 + t2 and thus t2 is tL-2*t1
>
> >d[total] = a * t1 * tL
>
> That should be,
>
> d[total] = a * t1 * (t1 + tL - 2*t1) = a * t1 * (tL - t1)
>
> >D = a * t1 * tL
>
> That should be
>
> D = a * t1 * (tL - t1)
>
> a = D / (t1 * (tL - t1))
>
> The denominator is maximized at t1 = tL/2, so 'a' is minimized at
> t1 = tL/2, and a = D / (tL^2/4) so a = 4 * D / tL^2
>
> The rest of the conclusion is the same as before: accelerate half way
> then decelerate. No lower acceleration will get you there on time,
> and no higher acceleration is needed.
---------
Mark's aim in both his articles is that of minimizing the maximum velocity,
not the acceleration. To minimize the acceleration in this case produces a
maximum velocity of 2*d/t which is greater than that possible using greater
acceleration (unless the maximum allowed acceleration is only just sufficient
to get there in time.)
I quote him: "The question is knowing the basic equations for motion how
do I calculate the minimum velocities needed to achieve my timing?" and "I'm
looking to minimise the maximum velocity of the mech whilst making the
distance in time."
"Roger
Stafford" <ellieandrogerxyzzy@mindspring.com.invalid> wrote
in message <fnu80l$5vl$1@fred.mathworks.com>...
> roberson@ibd.nrc-cnrc.gc.ca (Walter Roberson) wrote in
message <fnu1ue
> $6ul$1@canopus.cc.umanitoba.ca>...
> > In article <fnu13k$5ur$1@canopus.cc.umanitoba.ca>,
> > Walter Roberson <roberson@ibd.nrc-cnrc.gc.ca> wrote:
> >
> > >d[total] = d[acceleration] + d[deceleration] +
d[flat] =
> > > 1/2 * a * t1^2 + 1/2 * a & t1^2 + a * t1 * t2 =
> > > a * t1^2 + a * t1 * t2 =
> > > a * t1 * (t1 + t2)
> > >
> > >But for lowest acceleration that gets you there in the
available time tL,
> > >then t1 + t2 = tL, and d[total] = D, so
> >
> > Oh, an error! tL is not t1 + t2: tL is 2*t1 + t2 and
thus t2 is tL-2*t1
> >
> > >d[total] = a * t1 * tL
> >
> > That should be,
> >
> > d[total] = a * t1 * (t1 + tL - 2*t1) = a * t1 * (tL -
t1)
> >
> > >D = a * t1 * tL
> >
> > That should be
> >
> > D = a * t1 * (tL - t1)
> >
> > a = D / (t1 * (tL - t1))
> >
> > The denominator is maximized at t1 = tL/2, so 'a' is
minimized at
> > t1 = tL/2, and a = D / (tL^2/4) so a = 4 * D / tL^2
> >
> > The rest of the conclusion is the same as before:
accelerate half way
> > then decelerate. No lower acceleration will get you
there on time,
> > and no higher acceleration is needed.
> ---------
> Mark's aim in both his articles is that of minimizing
the maximum velocity,
> not the acceleration. To minimize the acceleration in
this case produces a
> maximum velocity of 2*d/t which is greater than that
possible using greater
> acceleration (unless the maximum allowed acceleration is
only just sufficient
> to get there in time.)
>
> I quote him: "The question is knowing the basic
equations for motion how
> do I calculate the minimum velocities needed to achieve
my timing?" and "I'm
> looking to minimise the maximum velocity of the mech
whilst making the
> distance in time."
>
> Roger Stafford
>
Hello,
Thanks for your time and method of dealing with
acceleration. I'm interested in writing a script that will
allow me to put any path and calculate a bunch of motion
parameters including the minimum velocity, accleration and
jerk that can be used to get round the path in a specific
time.
This is a common robotics problem that has proven harder to
solve that I expected.
"Mark " <medwar19.nospam@hotmail.com> wrote in message <fo35m9$d5p
$1@fred.mathworks.com>...
> Hello,
>
> Thanks for your time and method of dealing with
> acceleration. I'm interested in writing a script that will
> allow me to put any path and calculate a bunch of motion
> parameters including the minimum velocity, accleration and
> jerk that can be used to get round the path in a specific
> time.
>
> This is a common robotics problem that has proven harder to
> solve that I expected.
>
> Once again, I appreciate your time and insight.
>
> Regards,
>
> Mark.
-----------
For any pair of successive points in your path, I am assuming you have three
given quantities in advance: 1) D, the distance between the points, 2) T, the
allowed time for making the trip, and 3) A, the maximum permissible
acceleration and deceleration to be used along the way. As I have previously
indicated, the least possible maximum velocity is achieved by first
accelerating at the maximum amount, A, for some as yet unknown time t and
reaching maximum velocity v, then coasting at that constant velocity for time
T-2*t, and finally decelerating at maximum -A for time t so as to come to a
stop, with t being chosen so as to have traveled a total of D distance.
Expressing this as an equation with t as the unknown, we get
D = 1/2*A*t^2 + A*t*(T-2*t) + 1/2*A*t^2 = A*t*(T-t)
A*t^2 - A*T*t + D = 0
t = (A*T-sqrt(A^2*T^2-4*A*D)/(2*A) = T/2 - sqrt((T/2)^2-D/A)
With a plus sign in front of the square root, t would exceed T/2 which is
impossible, so we have rejected that solution to the above quadratic. If (T/2)
^2-D/A is negative, A is too small to allow a real solution and you have an
impossible problem. Otherwise, the maximum velocity would be
v = A*t = D / (T/2 + sqrt((T/2)^2-D/A))
where we have multiplied numerator and denominator by
T/2 + sqrt((T/2)^2-D/A)
to rationalize the numberator. Notice that if the permissible A is very large,
then v approaches D/T and t approaches 0. If A is at the minimum possible
value with (T/2)^2-D/A = 0, then v = 2*D/T and t = T/2 which gives the
triangular velocity profile.
When I originally described this problem, I asserted that it would lead to a
linear equation, which as you see was incorrect.
This may not fully answer the question you posed above, but I will confine
my contribution to what I have written here.
"Roger
Stafford" <ellieandrogerxyzzy@mindspring.com.invalid> wrote
in message <fo3e2e$gea$1@fred.mathworks.com>...
> "Mark " <medwar19.nospam@hotmail.com> wrote in message
<fo35m9$d5p
> $1@fred.mathworks.com>...
> > Hello,
> >
> > Thanks for your time and method of dealing with
> > acceleration. I'm interested in writing a script that
will
> > allow me to put any path and calculate a bunch of
motion
> > parameters including the minimum velocity, accleration
and
> > jerk that can be used to get round the path in a
specific
> > time.
> >
> > This is a common robotics problem that has proven
harder to
> > solve that I expected.
> >
> > Once again, I appreciate your time and insight.
> >
> > Regards,
> >
> > Mark.
> -----------
> For any pair of successive points in your path, I am
assuming you have three
> given quantities in advance: 1) D, the distance between
the points, 2) T, the
> allowed time for making the trip, and 3) A, the maximum
permissible
> acceleration and deceleration to be used along the way.
As I have previously
> indicated, the least possible maximum velocity is
achieved by first
> accelerating at the maximum amount, A, for some as yet
unknown time t and
> reaching maximum velocity v, then coasting at that
constant velocity for time
> T-2*t, and finally decelerating at maximum -A for time t
so as to come to a
> stop, with t being chosen so as to have traveled a total
of D distance.
>
> Expressing this as an equation with t as the unknown,
we get
>
> D = 1/2*A*t^2 + A*t*(T-2*t) + 1/2*A*t^2 = A*t*(T-t)
>
> A*t^2 - A*T*t + D = 0
>
> t = (A*T-sqrt(A^2*T^2-4*A*D)/(2*A) = T/2 - sqrt((T/2)^2-
D/A)
>
> With a plus sign in front of the square root, t would
exceed T/2 which is
> impossible, so we have rejected that solution to the
above quadratic. If (T/2)
> ^2-D/A is negative, A is too small to allow a real
solution and you have an
> impossible problem. Otherwise, the maximum velocity
would be
>
> v = A*t = D / (T/2 + sqrt((T/2)^2-D/A))
>
> where we have multiplied numerator and denominator by
>
> T/2 + sqrt((T/2)^2-D/A)
>
> to rationalize the numberator. Notice that if the
permissible A is very large,
> then v approaches D/T and t approaches 0. If A is at the
minimum possible
> value with (T/2)^2-D/A = 0, then v = 2*D/T and t = T/2
which gives the
> triangular velocity profile.
>
> When I originally described this problem, I asserted
that it would lead to a
> linear equation, which as you see was incorrect.
>
> This may not fully answer the question you posed above,
but I will confine
> my contribution to what I have written here.
>
> Roger Stafford
>
Hi Roger,
Thanks for showing your workings. I started this way
expressing the velocity and displacment equations for each
move that I was interested in acheiving. My next step was
to incorporate 2D and 3D moves rectilinear moves. The final
stage was in use splines to smooth the robot passage around
the transitions between the linear motions.
It turns out that National Instruments beat me to my goal
with NI Motion Assistant but at least I understand the
principles now.
Best regards,
Mark.
Tags for this Thread
Add a New Tag:
Separated by commas
Ex.: root locus, bode
What are tags?
A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.
Anyone can tag a thread. Tags are public and visible to everyone.
Public Submission Policy
NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for
all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content.
Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available
via MATLAB Central. Read the complete Disclaimer prior to use.