Re: Hi, and 2 questions (kinematics and look-ahead)
Hello Robin
Good to hear from you and that you are moving toward Linux as a central
part of your machine shop.
I really want to take you up on your offer to write something about
kinematics for the handbook and I'll get back to you on that before long
but I'm not certain that kinematics is what you need.
Kinematics are the computation of motor motion based on the relationship
between the motion that a motor controls and the coordinate system in
which the g-code was written. For a router with three axes 90 degrees
from each other we use trivkins which is a perfect correspondence between
a motor and one of the axes in cartesian space. Most of our kinematic
applications are to hexapods where cartesian motion is generated by a
matrix of strut lengths and angles between struts. You can see one
example of this at
http://www.isw.uni-stuttgart.de/personen/t_franit/primodell/index.html
If you cast about there a bit with model 1 and model 2 you will see
something that looks a bit like a hexapod.
The other machine where kinematics are essential is a robot where one
joint or wrist or knee or whatever you would like to think of these robot
motion points to be is built onto another. In many robot arms, the joint
motions are stacked several joints in a row. Think of your arm and the
various motions that are possible and then think of motors attached to
each possible direction of motion and you will see a bit of the problem.
I am certain that there would be a kinematic solution to your axis droop
problem but I haven't a clue where to start. We do have several on the
list who are using routers for one thing or another and I think that they
may help us with this problem.
I hope this convoluted part of the post hasn't made it worse for you.
Keep asking until you get what you need.
Look ahead works two ways, at the highest level, it will read several
thousand lines ahead on my mill here. At this level it is only reading
the code and looking for gross errors. At the motion control level it
works about 200+ ahead of the current motion command. For countouring
that should be more than enough. I know of one router that is running
about 600 ipm and doing some pretty detailed work. So the first part of
an answer is that yes it can do contouring without even breaking a sweat
on a reasonable computer.
The second question about will it overshoot or round a corner after a
bunch of small arcs or lines approaching that corner. The answer is that
it depends on how you write the code to do that corner. If you are in
constant contour mode it probably will but if you use an exact stop at
the hard corner then it will go to the point and then take off again in
the new direction. You can turn on or off these modes (g61, g61.1, g64)
in any block of code. See the rs274 pages at linuxcnc.org/handbook for
greater detail on how these work.
The cubic spline computation routines really try to get successive sets
of motions to come together at the transition point fairly well. How
well will depend upon your routers ability to accelerate and decelerate
and the consistency of the tuning that you do the maximize it's ability
to follow your part file.
Ray
On Monday 09 September 2002 04:40 pm, Robin wrote:
> Hi,
>
> I'm in the process of upgrading from something nasty in DOS to EMC
> under linux for my 3 axis router and plasma cutter
> (http://www.rszemeti.demon.co.uk/cnc2.htm if you want some tacky
> photos) thus allowing me to rid myself of the last bit of Microsoft
> software in the shop.
>
> So ... firstly Kinematics ...
> I've been reading through the various [blah]kins.c packages and trying
> to make head or tail of the nomenclature ... much is spoken of
> 'inverseKinematics' and joints .. and no doubt the documentation would
> mean something to me if I understood the terms ... I naiivley imagined
> hte kinematics to be in the order of
>
> <pseudocode>
>
> convert(xin,yin,zin){
> xout = fx(xin,yin,zin);
> yout = fy(xin,yin,zin);
> zout = fz(xin,yin,zin);
>
> return (xout,you,zout);
> }
>
> </pseudocode>
>
> or something similar, using refernces etc as appropriate ...
> translating the desired x position into a 'real' x position
>
> Take my router for example .. it 'sags' in Z along the X axis by 20
> thou' due to flex in the beams, I'd really like to take that out of the
> Z axis as the X axis moves along ... trivial really .. but sadly after
> reading through the [blah]kins.c files I'm no wiser ... I'm familiar
> with C C++ and Perl (and a bit of lisp on occasion too) so its not the
> language its just the core concepts of whats going on thats confusing
> me here.
>
> A simple pointer would be much appreciated. I'll even write up a
> 'kinematics' section for the FAQ if I can understand enough of it to
> make it of use to others!
>
> Secondly, lookahead ... reading through the NGC intepreter stuff I was
> not entirely clear how many steps were passed ahead to the emcmot stuff
> .. as you probably know the majority of 3D work consists of linear
> moves along say the Y axis with Z going up and down to follow a 3D
> surface, at the end of the pass the X axis moves along say 1/4" and
> then the pass comes back along the Y axis ... the GCODE for this is
> thousands of tiny line segments with a sudden X axis right angled
> corner at the end ... unless there is considerable lookahead for
> several hundred steps the machine is going to come to an out of limits
> condition as it hits the right angle at the end ...
>
> The reason I ask this is because the plasma cutter will often have
> multiple small line segments leading up to a right angled corner and
> then a 90 degree turn ... it would be disastorous if it over shot the
> corner (or worse rounded it off) so just how many lines of lookahead is
> there ...??
Date Index |
Thread Index |
Back to archive index |
Back to Mailing List Page
Problems or questions? Contact