2010/6/15 Andy Pugh <[email protected]>:
> On 11 June 2010 13:46, Viesturs Lācis <[email protected]> wrote:
>
>> 13     double xy_tan = atan2(pos->tran.y - old.y,pos->tran.x - old.x);
>
> I have been thinking about this some more, and it is too simplistic
> and may be causing problems.
>
> What happens when X and Y are stationary? atan2(0,0) is undefined.
> Then as soon as one axis moves fractionally the kinematics will try to
> send the head shooting off to the correct tangential position.
>
> I am not sure how to handle this,it might be that EMC handles such
> situations and limits the rates of change of the axes, or it might
> have to be handled inside the Kinematics module.
>
> I don't know if a kinematics module can know anything more about the
> machine state than is contained in the emc_pose structure that is
> passed to it. In this case the kinematic module needs to know the
> direction of travel (and, preferably, the _intended_ direction of
> travel...)
>
> At the very least xy_tan (which is the angular direction of the
> current path in the XY plane, or the tangent to the current curve)
> needs to hold its last value if the X and Y axes are stopped.
>

Yes, You are right about the point, that xy_tan is not defined, if
both X and Y are not moving.

I think that it is not important, because:
1) if head does not move, then it is not necessary to have the head
tilted in a particular direction.
2) if the head does not move, then there is risk that the head is not
positioned for the next move and it might want to achieve very high
transfer rates in joints [4] and [5] get ready for the required
position - I think it can be handled that with max_accel and
max_velocity
3) actually risks mentioned in previous point is a case of a normal operation:
for example, finishing cutting some rectangle - last move is in X+
direction, then follows rapid move in Y+ direction and then next
rectangle is cut with first move in X- direction.
The same goes for sharp corners - there is one move, movement stops
for a very short moment and then continues in different direction. So
it does not really matter, for how long there is this stop or pause in
movement. I think that it has to be handled with proper acceleration
and max velocity values for both linear and rotary axis - I think that
I will need to find a proper balance between linear and rotary axis
settings.
4) OpenOffice spreadsheet calculates atan2(0,0) = 0, I think that EMC2
should produce the same outcome, so there shouldn't be any error
5) I think that it is very hard to predict what will be the outcoming
result of this module. I think that I have to get it working in my
machine, turn on the water and do test cuts and then check the
accuracy and quality of cuts and pay attention, how does corners look
like - if the head is moved and tilted as needed or no.

I think that I will agree with You that it might be useful to store
last xy_tan value, if deltaX and delta Y both are 0, because otherwise
it will produce new xy_tan value 0, which [most likely] will cause the
head to be tilted in the according direction and that in certain
circumstances can lead to ruined part.

Viesturs

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to