cradek, are youthere
SWP_Away is now known as SWPadnos
I just looked at the TP change you made
in the context of the commit mail, not in the TP
there have been so many
are dx et al guaranteed to be positive?
yes, look up and see the fabs()
let me check again to make sure, but I think there are fabs everywhere they are needed
so why sqrt (2dx)?
d=at^2/2 => t=sqrt(2d/a)
ok, it's accel there. of course
this means I need to add comments
well, there may be other stuff around
as I said, this was from reading hte diff, not the resulting code
dx = fabs(x - canonEndPoint.x);
dy = fabs(y - canonEndPoint.y);
I'm not sure how this can be tested without actual hardware
thanks for checking it though
looking at it must make the head hurt (a lot)
use stepper without headroom, it's a great test
any constraint violation immediately triggers a following error
ok, with suitably lowered FERROR, presumably
yes, it should be pretty low
like 2 steps or thereabouts, if you really want to be paranoid
jepler started putting rotary support in axis - it's cool, the cone rotates
I guess there would need to be a separate mode for rotary tables
something like rotating the image, with "shadow axes"
yeah, it's only going to be right for one machine (A axis parallel to X) without hacking
A is defined as parallel to X, so that may not be an issue
if the naming and ordering works (which it may not)
yeah, that's the only rotary setup I've ever used
the other popular one would be a pivoting head, I think
one paranoid question: is it guaranteed that the axis max_accels are positive?
what would a negative value mean?
I'm not sure, but it would result in a sqrt(negative) in this code
hence the paranois
well don't do that then
ok. it looks like it isn't forced positive in iniaxis.cc
ah, but it is set to 0 if negative, in emcAxisSetMaxAcceleration (phew ;) )
* cradek rolls his eyes
sorry - used to embedded programming, you look for anything that can screw up your otherwise perfect code
(of course, 0 would cause divide-by-0 erros, so it's not perfectly safe)
it's so weird to see the cone change orientation!
that sounds really cool to me
I understand defensiveness but I can't imagine writing one extra line of code in order to let someone set their accels to zero and still have emc work
nope - I'm not planning on committing a change there
it got through 187 lines of G XYZA and GXYZ torture
I think, clearly, it shouldn't work
all we need now is for the tool shape to be dependent on the tooltable settings (length and diameter)
* SWPadnos ducks
I'm shocked by how many things have been completely wrong all along
it is pretty amazing
that nobody seemed to notice
oh and that was mostly with 900% FO
I guess there haven't been many non-cartesian machines, outside of academia (where they expect to do weird stuff on their own)
SWPadnos: they noticed, they just set their hal to allow 2.5x the accels they asked for
SWPadnos: then it worked almost all the time :-/
I'm thinking in emc1.x
since the code should be very similar
in emc1, there were virtually no checks of the output, so you just got wrong vel/accels.
which meant stalls for steppers?
yep - the headroom was in the reduced software limits
no, people would just use 80% of the real capability
the headroom was in the machine
jepler: I fixed at least one terrible problem in emc1 that caused stalls for me (helixes)
oh and offsets
so yeah, stalls
ooh, I haven't tested offsets
I'm shocked and amazed that the tp could even know about offsets
no, it's task
oh, that's good for EDM reversals
but not whole program reverse
I don't get the connection between offsets & reversals
sorry - if the tool offsets are already in the moves the TP sees, then no special notice has to be taken of offset modes or values for reversals
normally, you'd have to switch offset side
It's not how the rs274ngc interpreter works, but in my view stuff like units and offsets should be dispensed with as early as possible
either that, or every communication carries all three (coordinates, units, and offsets)
462 more lines of XYZA torture passed .. goodnight
[03:49:18] <jepler> http://emergent.unpy.net/index.cgi-files/sandbox/torture-xyza.png
heh, now make the path look like a hotwheels track, including orientation ;)
that's one seriously screwed up toolpath
or are you looking for the other one?
(ie, the DreamHost site)
SWPadnos is now known as SWP_Away
one minor question, spawned by Eric Johnson's email to the user list
it probably doesn't matter much, but shouldn't hte average servo-thread look like this:
all read functions
the two motion functions
the pid calcs
all output functions
yeah.. that's about it
I see.. capture-pos -1
ok, because the default configs have PID before motion
and capture at the beginning.. not at almost end
that's one thing, plus he didn't mention that he added pid.x.do-calcs to the threads ;)
he shouldn't do that.. that's in core_servo.hal afaik
I've got an email pointing that out, and was listing how I thought the thread should look
if he uses core-servo
I note that univstep doesn't, it has its own univstep_load.hal file
I'm looking at his full config dir now
HALFILE = ../common/core_servo.hal
HALFILE = vti_motion.hal
HALFILE = vti_io.hal
the pid calcs should be added at position 3, not 1
so that motion-command-handler and motion-controller are before them
SWPadnos: how so?
I see the pid.x.do-pid-calcs are the first one in core_servo
and the order core_servo, motion, io is in all the drivers
motenc, m5i20, stg, ..
SWPadnos: think I found the problem for Eric
P = 6.0
I = 0.000
D = 64.000
that's awfull small P there
that's the X axis of his ini
what about FF1?
that should be 1, I think
FF0 = 0.000
FF1 = 0.000
BIAS = 0.000
SWPadnos: not necessarely
you can tune only using PID
for velocity mode
but with such a small P, you'll get ferrors right away
it helps a lot, I gather
it'll be too mushy (soft)
oscilating all over the place probably
I'm going to add his configs to CVS
use some "sane" PID values
I see that
looks like the commit emailer is being efficient today
SWPadnos: I'd appreciate you flying over those files
just a quick glance should be enough ;)
reading them might be too much to ask of you :P
sorry - was working on my "get-axis" script ;)
I was just figuring out how to tell what the directory name will be when it's untarred
tar tjf axisblahblah | head -1 does it nicely
ok, I'm starting a hexapod on emc2 ;)
I've had it with people trying and failing to do that
do you think that Bostjan just didn't home before switching modes?
I think he might be helpless
heh, could be
not wanting to say clueless
well, he has a lot of help
damn. I thought it was `command` to get the text output of a command into a script
like AXISPATH = `tar tjf axis | head -1`
wonder if this is a bad idea?
I aded a variable called KINEMATICS to Makefile.inc
so the user can specify trivkins, genhexkins, or whatever
that would be really great, if you're thinking of having a configure-time (or make-time) option
even better would be a run-time option
like separate motion-controllers or something
for now it's the user who can comment out genhexkins, and comment trivkins
I simply hated doubling the whole motmod dependencies, just because one of them is differnet
it doesn't have top be too easy yet
and adding a configure option is dumb too
not really the place for that
it would be optimal to have a separate module that does the kins only
just ask paul ;)
mr "floats are non-atomic"? ;)
mr "those shitty little modules"
heh. Mr. Monolithic
like Linus, I guess
that'll be the day
when you can compare the two
well, they both write Linux code, and neither one of them is American :)
I fit in that description too :P
there you go, you're just like Paul
oops, I mean Linus
oops.. that was a typo
it's just like the keys are right next to each other
the fsck macro-key
that would be a perfect use for the Optimus keyboard
AXISPATH = `command` doesn't work (of course)
but AXISPATH=`command` does
yes, thought you knew that
I did, but shell scripting isn't exactly my best language ;)
oh, fsck it..
just found a bug in tkemc
thought I nailed that one ages ago, but didn't test on 6 axes :)
what's the write/print command in tcl again?
don't think so
aaargh.. I hate tcl
SWPadnos: can you look at something and tell me if I'm completely bonkers now?
around line 1600
1556 over here
set minusAxis -1
in proc minusDone?
the idea is this:
minusAxis holds the active axis which gets jogged with the minux key
-/= jog the active axis
which you can select with the mouse or whatever
can be XYZABC or whatever
now, the problem
and "-1" means no axis selected
after the key gets released I want to reset it to -1
but that doesn't happen
that should be in minusup, I think
which it is
but I placed a puts in minusDown
minusDone is called from both minusDown and minusUp
and it never gets reset
I think this is an example of how hard it is to debug event-driven programs ;)
I think this is how it works:
at - keypress, minusdown gets called
it does several things, including setting up a callback with the "after cancel minusDone" line
it then goes directly on to the jog command, and exits
after either a cancel, or a minusUp event, the minusDone command will be called
which does the jogStop
and rebinds the minusDown to the keypress event
so the minusDone isn't executed from minusDown, so the variable will not be reset while minusDown is executing
oh fsck me
it's set minusAxis -1
not set $minusAxis -1
set 1 -1 = that shouldn't work ;)
but you need to leave the minusAxis set until jogStop is called (in minusDone)
yeah, only unsetting it there
yay, jogging 6 axes in tkemc ;)
too many fingers needed :)
SWPadnos: that's what I'm used to
the robots we use have 12 keys for jogging ;)
hmmm - nevermind ;)
I jog using 4 usually
I can even make it up to 6, but that's hard ;)
you need a spaceball interface
or a Bird
[19:06:41] <SWPadnos> http://www.ascension-tech.com/
[19:07:10] <SWPadnos> http://www.ascension-tech.com/products/pcibird.php
full 6-axis mouse, basically
actually, they have a 6-axis mouse
[19:08:04] <SWPadnos> http://www.ascension-tech.com/products/6dmouse.php
SWPadnos: bird is VERY interesting
any idea how expensive?
yep, or a flck of birds - you can have dozens
not sure these days, it's in the $thousands for the system
there are similar products at Polhemus
[19:09:59] <SWPadnos> http://www.polhemus.com/
that is soo nice
heh - yep
I think Ascension was founded by someone at Polhemus, who had a new idea
both those companies are local to me
[19:14:48] <alex_joni> http://www.polhemus.com/PATRIOT.htm
that's what I need
in fact, I was just talking to a friend, who is working on some tiny thing for Ascension
but for larger than 5 feet
I think they have a booster for the base station, and that you can use multiple bases to extend the range
I imagine synchronisation is an issue
it's taken care of by the hardware/software they supply
can you ask how expensive one of those is?
ok, it looks like the bigger transmitter is only for the FASTRACK system
yeah, looks better
what tracking envelope do you need?
about 4m across
cradek: you around in here too?
I was wondering about one thing..
how should we handle more than 3 axes in hal?
whould we have the core_sim for 3 axes
for the stepper-xyza I modified core_stepper and called it stepper-xyza or something like that
then load another ontop (core_sim4) with defs for the 4th axis?
I think you should ask jmk, not me
and another one core_sim5, etc
I made one and called it core_sim_6.hal
for 6 axes
but I placed it in hexapod not in common
wonder if common wouldn't be a better place
and have one for 3,4,5,6
then the user specifies in the ini which one he likes
but that is hard to do with the makefile copying
my opinion is that unless you think a halfile will be used by many configs, don't bother with common
yeah, but for core_servo it might be usefull
if it turns out differently, we can always move it into common
I mean we can have lots of servo users with 4 axes
not talking about what I am doing now, thinking about the future a bit
oh I meant to ask you about g64 - on my inch machine the tolerance seems to be in inches even when in g21 mode - can you fix that?
huh.. I can try..
let me finish this up first
ok no hurry at all
actually there is..
tomorrow is my last day at home
on sunday I'm off to that fair I talked about
going on a trip?
yup, till next saturday most probably
hmm - should the makefile have emc/kinematics/$(KINEMATICS).h in the headers (rather than both hex and triv)?
of course, I should look at the whole file before asking such questions ...
there is not triv.h
nor hex, I imagine ;)
Is kinematics chosen at compile time or by .ini/.hal?
jepler: it gets linked into motmod
ugh -- can that be fixed? Thta seems like a terrible limitation.
but it could be done differently
have it as a separate module
even if it's to build several versions of motmod and insert the right one
with that support we could have experimental tps too
jepler: I can do that, but that would mean to duplicate that long list of motmod objs
cradek: it's just matter of makefile I guess
and all the overly-complicated scripts
and whitelisting new modules in module_helper
yup, that's why I chose to do it like this for now
can we EXPORT_SYMBOL or whatever the kernel calls it, so that motmod.ko can use routines from kins.ko and tp.ko?
argh, I just wrote gauss-jordan the other day because I couldn't find it in posemath
yes, we can
Yeah, I'm *not* saying you should have waited to check it in or anything
but that means we make kins and tp modules
which is pretty bad for their average size
oops - .o shouldn't have been committed
but I guess I'm ok with that
oopsy.. did I commit that?
cvs killthisfilerightnow genhexkins.o ;)
cvs killthisfilerightnow --remove-all-traces genhexkins.o ;)
cvs killthisfilerightnow --remove-all-traces --make-never-has-existed genhexkins.o
is the pose data in block_pointer ( ie: block_pointer->x_number ) absolute ? even tho the gcode was G91?
no idea staggerlytom
any idea how to add the data to debug printouts? ( the text in the terminal that invoked emc? )
the interp is not realtime, so you can add a printf wherever you like it.
you can also attach the debugger to task
ok, i need the value, but not in realtime, thanks ( wait, to task? for pose? )
pose is in emcmotStatus soemthing
and it passes through task
from motion through SHM to task and then to GUI (through NML)
if you just want to see the stat buffer, run emctop inside axis
err whatever it's called "emc status" on the menu
thanks alex,cradek ... (emctop, somethingnew2me )
cradek: I'm afraid I'm too tired to think about the G64Pxxx
the problem should be in emccanon.cc
alex_joni: that's fine :-)
there is a CONVERT_UNITS() needed
but I never figured out which is which
TO/FROM something :D
yeah I unfortunately know all about those
I'm not sure that's what you need though
those don't change with g20/g21, they are about user units
but don't worry about it before your trip
how does feed_rate get specified?
I don't know but it seems like the same problem
so not FROM_EXT_LEN () which I think is ini specific
but FROM_PROG_LEN() which is program specific
cradek: still around?
seems jepler isn't responding..
ping -f jepler ;)
ping -f -s 65535 jepler
heh, that broke down doze boxes ;)
but I guess it's 'sudo ping -f ...'
methinks dmessier needs to step away from the bong
or the PC
ok, so I guess cradek & jepler are not in.. so I'll leave a message
jepler, cradek : two problems when running AXIS & hexapod
#1 the position of the XYZ coord system is always at 0,0,0 but on the hexapod HOME position is at 0,0,-20 which makes it really hard to use (at -20 I can't really zoom in to view the cone bigger, or drag it around)
so I guess I would like to see the initial position of AXIS at the HOME position specified in the TRAJ section
#2 AXIS oes only nomral jogging, like mini, so that doesn't work for nontrivkins. for nontrivkins you jog using TELEOP_VECTOR, specifying speeds on the axes (XYZRPW or how they are called)
#2' I can't switch from world to joint view, that means I can't move a single joint before homing..
ok, since you're not protesting.. he'res a small user-request ;) (if it's not too hard to do).. how about making zoom (scroll wheel) zoom the area where the mouse pointer is, not center of the screen.. (that is usually common on CAD)
plus rotation around the view, not the world origin
SWPadnos: if they don't come back quick we could go on for ever
we are, so far it's working ;)
SWPadnos is now known as SWP_Away
those are great ideas
I'm happy to accept patches during the axis 1.3 development cycle.
if I only knew python ;-)
ok,joke aside.. did you see what we talked about in #emc ?
no, I haven't been following too closely
ok, bottom line conclusion
2 different things
XYZRPW specifies only movement/tilting/rolling/yaw of the head (no movement of the workpiece)
XYZABC is a setup where the rotaries are moving the workpiece
XYZRPW is easy, XYZABC is hard/next to impossible
XYZABC can be done only if you have additional knowledge about the machine
RPW is just the tilting of the cone
I guess that's it ;)
each machine can be run as both I guess with proper kinematics
Here's my point of view: the only machine I have access to is XYZA, and that's not even mine -- it's in cradek's basement
right.. I have less ;)
but there's always simulation..
Do you think XYZA (or XZA) is going to be more or less common than XYZRPW?
that's hard to say
I think it will be more common on small mills
and less common on serious machines
nutating heads are less common than rotaries
The code I've added for "A" axis backplot will be a useful starting point for showing tool orientation for these RPW machines
Which existing front-end uses TELEOP_VECTOR?
but the TELEOP stuff is in emcsh
emc_teleop_disable [0|1] ?
look at sendJogCont()
mini is borked.. it only shows 3 axes
alex_joni: ok--I kinda understand this, but I'm sure not completely. If you want this added to axis, I still say submitting a patch is the best way.
sending me one of these freaky xyzrpw machines would be second-best
heh ;) you could build one :)
like the wire-thingie I built
you can see that there
anyways, when I'll have some time I might get back on you with that patch
but I'll need some help to get going on AXIS, e.g. where to start looking .. ok ?
nice xyzrpw: http://www.cybamantech.co.uk/cyba/?page=home
xyz overhead rpw like puma
dnag, thats abc sorry
ok, night all
* alex_joni goes to bed
SWP_Away is now known as SWPadnos