the mazak is true servo, right ray?
Yes it is.
what kind of drives and servo card are you planning to use?
All the way servo. Like 1.5-2kw dc axis drives.
nice little motors
Encoders are already in place.
Yes I'm staying through the 26'th.
I suspect that there will be a lot of cleanup on the retrofit over the weekend.
the machine is dave E's?
No Roland owns two of them.
One is an 81 the other an 86
ok, I must have gotten my mill mixed up
He has a mazak service guy coming in tomorrrow.
to tell him if they are any good at all.
both will move some but not under full auto program control.
what if he says "yes, you should keep running the exsiting controls" ;-)
then you say "Thank You", and retrofit anyway :)
Roland promised one for us.
send mazak guy home with a control stuffed in his pocked (or elsewhere)
The mazak guy is going to be there for the week. Don't know if he wants to work with us or the other guys.
that will be "interesting"
Think EMC2 is up to the task.
rayh: You should have those CDs by then.
Just upgraded 2.20 with the disks you gave me at fest.
* paul_c is wasting too much time on that damned G92
I did some experimentation with tk8.5 and the display is much better.
I'm just kinda ignoring the guy.
I probably should have
just to show how often I use mini....
He is a very difficult person to change once he gets a notion
hehe... and we aren't ? (I'll speak for myself :) )
where is the "ahead" function for restarting in the middle of a program ?
Oh I'm always up for something new!
They appear when you hit abort or estop.
but you can show them under the view menu -- I think.
shows how often i use mini...
nope - No restart popup or in
you in auto mode?
Should be a set of buttons to the right of the g-code text display.
gah... need to expand the window.
Oh. They are lower space priority than most of the display.
That get's ugly in a big hurry when you reduce the size.
Size is sorta autoset during startup.
G92 does what it says on the tin - The only quible I have is the call to G92.2 on an M2 or M30 - It should be G92.1 in my opinion.
Yes, there was a minor bug where the offsets were not being zero'd correctly on Y & Z....
* paul_c goes to bed.
I'd like to publicly thank John Kasunich for all his hard work and time helping me get my machine running smoothly and better than it has EVER run before~! John, you are a credit to yourself, your family, and the EMC community. Thank you~!
* jmkasunich blushes
ran a quickee program just before I left
will post a pic in a minute
pic here - http://solutionsmachining.com/images/cnc_mill/emc2.jpg
took all of about 45 seconds
oops... bandwidth limit exceeded
(I guess I shouldn't have browsed your site this afternoon)
really? holy sh|t... brb
If you need we could put the pic up on linuxcnc.org/Dropbox
done, its up
feel free to copy it to there, too
I'll have some "hard parts" (functional) stuff in the next few days that should be a nice addition to anyone's EMC album
nice to see the parts... thanks Weyland
Actually, if you go to the "store", you'll see a really nice example of one
it's the mag cover
Then you can report your findings to the list and make a wiki link.
I'll be happy to, Ray
don't know how to do the wiki thing, but whatever I can do to help
I'll catch you guys later.
Good to see thing moving forward.
* Phydbleep sends a wheelie-bin chasing asdf-qwee.
gotta get baq to work
Thanks again, John
so, jmk, how best can I help the cause?
the short term need is hal drivers
the problem with drivers is that without the hardware, they're hard to test.
longer term I want to continue what you started with the refactor
somewhere between long and short term is some other changes to HAL, things that aren't as disruptive as the refactor
for example - locking
The refactor is disruptive. What are your thoughts on locking? (Did we speak of this before? Time to dig out notes...)
locking is new
came out of an IRC discussion this weekend
We spoke of having the kernel manage everything, which is a form of defactor locking.
right now, you can have a complete hal/emc system running, and do "rmmod stpgen" right in the middle
ahh... that kind of locking.
hal_lib ensures that stepgen is removed cleanly (no hanging tasks, no crashes, etc) but the emc machine certainly won't work right afterwards
You want things to shut down in a graceful way at a graceful point in time rather than just being slammed.
likewise, you can unlink signals, add functions to threads, etc
locking would be a flag (maybe two) in hal shmem
hal_lib would refuse to do things if the flag is set
one flag would lock everything
the other might lock everything except setp, to allow for tuning
flags would be set/cleared by "halcmd lock", "halcmd unlock", perhaps with a qualifier to identify which flag
makes good sense.
unfortunately, a coworker just came by, so I have to attend to work things... more later, I hope...
I'll be here for a little while... or you an email and we can go into more detail
Email is probably best. We'll see what happens though :)
SWPadnos, turbocnc guys are asking for a external jogger for CNC machines.
* A-L-P-H-A pokes SWPadnos
anybody here know what happens with a signal (say SIGINT) interrupts a fgets() call?
the signal handler should get called, and then the behavior depends on what it does
if it just returns, then the fgets shouldn't be affected
in this case, all it does is sets a global flag and returns
that's the problem... prog is sitting in fgets waiting for input
SIGINT wants to end the prog
the handler sets a flag that will break it out of it's line handling loo
waiting at a prompt?
halcmd is the prog...
you might be able to use select or poll for that
it has provisions to get it's input from stdin, but usually takes it from a file
the stdin case is the one I'm dealing with now
right - I'm not sure if select works on console, but I
I'm not sure why it wouldn't
when getting from a file, fgets always returns quickly, either due to having a line, or eof
SWPadnos, what's your drive train generator do again?
yes - you should be able to do a select on stdin with a timeout
it generates a stream of pulses at a rate set by the user.
it also has a serial port, so it could do just about anything under program control as well
(computer program, that is)
SWPadnos, so not really that useful for a manual jogger for a CNC machine? or yes?
not really, in its present form
The software could be rewritten to just act as an encoder counter, and upload counts to the cmputer
baq briefly... wanted to ask a quest about Ray's request of me
ray's gone, but shoot
he wants me to post an update, right? I'm kewl with that, but how? on the list?
as an email?
I'm not sure what he had in mind
one thing would be to link from the wiki to your work
what's his addy? is it public?
okay, got it, I'll write him
I think he was suggesting a wiki page
also, (I'll ask him too) how would I do the wiki thing?
[03:39:17] <jmkasunich> http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Case_Studies
you might want to add a link from there
okay, I'll go read that
If you go to the wiki, select preferences (a link at the bottom of the page), give yourself a username, and enter the super-secret admin password: emc
I want put in a user request to delete G92 from EMC
that will piss him off
send it to the list... we need more controversy
isn't that a little silly?
he did :)
oh, as a joke, I get it
then you can edit the pages - if you add a link like SolutionsMachining, (capitalized words stuck together), then a ? link will show up, and that will be a new page (click on the link, then edit this page)
I still think my advice (using home without switches) is the best
it sets the axis to 0, exactly what you want
Using a set of toolholders with a datum plane would be even better
well, I have toolholders and I set the lengths all the same
but I still "home" at the top of the material
He's looking for a way of making the offsets semi-automatic
He must have people running the machine for him, and he wants to make it easy for them
(ie - harder to screw up)
emc is hard to use if you have to reset Z at a tool change. You just about have to use separate programs for each tool.
my maxnc control software would let you pause, jog around and reset Z, then continue
that's his gripe (I think)
I dunno... I'm done with that discussion
it's the ONLY thing it got right
blast... select is not a nice lightweight way to do things
easy enough to use, but not really lightweight, no
jmkasunich: what are you using select for?
I'm not (yet)
halcmd can accept input from a file or from stdin
my suggetion for an fgets that would stop looking for input (from stdin)
today it uses fgets() to read a line
problem: somebody hits ctrl-C while it is waiting for input
any boneheadedness in the idea is mine :)
why is that a problem?
I need to capture the ctrl-C so it will call hal_exit() and free shared memory
first attempt - capture the signal, set a flag that will drop out of the line processing loop
but that won't happen until fgets() returns
not a prob when reading from a file... but from stdin, it may take a long time
I _could just call hal_exit() and _exit() from the signal handler, and never return to the main prog at all
but the main prog may have been signaled while it was making a hal call and had the hal mutex
better to let the hal call complete and drop out of the loop at the end
I hate to say it, but the traditional unix way to do this is with setjmp/longjmp
better to use signal(), I'd say
I assume you did try that, jmk?
used signal to capture the ctrl-C, yes
SWPadnos: the problem is: what does the signal handler call?
the sighandler sets a flag to end the loop
signal(SIGINT, myHandler) will call the handler
but, you're still stuck in the fgets at signal return?
if I'm anywhere in the main loop except the fgets, it works
the handler can just do the hal_exit, then exit(0)
but if I'm in the fgets...
I think the two answers are: don't return, or use longjmp
that brings up a larger point about interruptible / re-entrant code
can 2 copies of halcmd be run safely at the same time?
WOW~! I was just reading... what's this about "AXIS"?
SWPadnos: huh? It's not multithreaded
thats one of the things I'm working on
a shell script can launch many simultaneous instances
...really... do tell...
all access to the hal shared memory is protected by a mutex
not AXIS - halcmd :)
so in theory you can launch many halcmds
sorry to butt in
just went there
I always like talking about it
is that your work?
until about 20 mins ago, they all used the same module name, so when additional ones called hal_init(), it would fail
I'm half at fault for it, yes
just fixed that (appended the process id, same trick I did to allow multiple halmeters)
yes - halcmd frizzle ; halcmd frozzzle ; halcmd bebop would be capable of running those simultaeously
as different processes!
Boys, I've got to say that in the year and a half or so that I was away, you've REALLY brought EMC(2) a LONG LONG way
so now I can have multple halcmd processes (for example in differnet shells)
yes - do they each have their own hal mutex, or is that system-wide??
and even if you issue say a "setp" command at the exact same instant in both, only one at a time gets to mess around in the shmem
one mutex for any access to hal shmem that involved the data structures
well - consider this - if the mutex is held, then the main loop is probably not waiting in an fgets
normal pin-signal-pin connections don't mess with the data structs and are totally asynchronous
unless it's held by another process - crap
the HAL modules don't "depend" on one another (in the modprobe sense), do they?
no - they all depend on hal_lib and rtapi, but not on each other
(ie, stepgen doesn't depend on parport, because it could be attached to sensoray)
in fact you can rmmod a stepgen even if it is connected to other things
that can be a feature or a bug depending on your perspective
cradek: was reading - has the bug been worked out for using AXIS with EMC2?
OK, and doing a pin-signal-pin connection consists of getting the address of one variable, and storing that pointer into another location (in a separate module, possibly)
weyland: which bug?
yes, pretty much (the locations in question are all in shmem)
nevermind - the addresses are all in shmem, so the problem I was thinking of isn't actually a probnlem
it speaks of position not being updated because EMC1 and EMC2 report location differently
(module unload between getting the address and storing the pointer)
[03:58:29] <weyland> http://axis.unpy.net/index.cgi/01101998950
weyland: I'm pretty sure that was fixed long ago
re: Axis, I think I had it crash on my emc machine - does it reqiure OpenGL?
I'll have to check it out after I get these parts made
yes it uses GL
weyland: yes that's fixed for sure
hmmm - my crappy integrated video machine isn't really up to that :(
nope - it's safe against model unload (much thought went into that, and the mutex is involved - cleanup_module() calls hal_exit() which gets the mutex then destroys all objects beloing to the module (including "neatly" breaking connections to those objects)
SWPadnos: I use software GL (Mesa) on a years-old video card
SWPadnos: it works just great. It's just some lines, not some complicated video game.
hmmm - I'll look into it when I have copious amounts of free time :)
I don't think BDI has AXIS 1.0 - I recommend using 1.0
it has several bugfixes.
I'm afraid that select may be the proper approach... but that is very messy
jmkasunich: but you will probably have to switch to using read()
not just select, but using fd's probalby means I need to use read() instead of nice buffered i/o like fgets()
jmkasunich: I was thinking about the "library" function that connects pins. That could be in the process of adding a connection when it get interrupted (with a preemptible kernel), and the module it's connecting to gets unloaded before it stores the address of the pin(signal)
jmkasunich: surely that's not what you want
swp: while hal_lib is in the process of adding a connection, it holds the mutex...
and the module won't unload...
jmkasunich: read loops where you ask for some number of characters and get some other number, then put them in a buffer, and do something if you get a full line ... suck.
if somebody else tries to rmmod the module, when it calls hal_exit(), it will block on the mutex until the connection is complete
jmkasunich: I've written that way too many times (usually for serial)
cradek: you understand my overwhelimg enthusiasm for using select ;-(
can you get away with exiting from inside the signal handler?
I believe so
ugly hack alert:
then I think you should do that and wash your hands of it
set a global flag on entry to fgets(), clear on exit from gets()
that's sort of where I was headed with the hal_mutex
if the signal happens while the flag is set, you know you were in fgets, NOT holding the mutex... call hal_exit, and bail
if the mutex is held, then block on that in the handler, and just do hal_exit/exit when it frees up
if the flag was clear, you might be holding the mutex, but are not in fgets, set the done flag which drops you out of the loop after you get done with the mutex
swp: I like that...
what could be happening while the mutex is held (ie, how long could the operation take?)
on second thought, no
if "I" have the mutex in my main thread, and the signal interrupts that, the signal handler will wait until hell freezes over for it to become available
it's the "multiple controllers" problem all over again :)
is the mutex manually grabbed, or is it automatic in the hal library functions?
all operations where the mutex is held are "fast", they never make blocking calls (but may be suspended by a linux process switch)
automatic by the lib routines
halcmd does some things that are beyond the core hal api (such as listing all signals)
for those things it grabs the mutex and walks the data structures itself
can the program tell if its process holds the mutex, or is it an all or nothing thing?
in fact, those are probably the longest mutex holding operations... they are writing the list to stdout
three mutex calls:
ie, "somebody is using a hal function" vs. "I'm using a hal function"
somebody (might be me)
then the "I'm about to go into silly mode, please exit for me" flag is the best bet
but "I" can set a flag that only I see saying "I might have the mutex" vs "no, there's no way I have it"
if "I" might have it, then I'm NOT in the fgets, set the loop terminating flag and return
if I can't have it, it's safe to call hal_exit, and exit, the sig handler never returns
you mean like fgets()?
I should have said "stupid mode, waiting for something I may never get and ignoring all the fine information flowing around me" flag :)
thanks guys... these problems are always easier with multiple brains
indeed they are
actually, I'd just have a flag that you set when you *do* manually grab the mutex
I think I'm gonna restructure the main loop while I'm at it
when I "might" have the mutex
any other time, the hal will return pretty quickly, so blocking on hal_exit isn't a problem
the main loop calls a funct that parses and executes the command, which in turn might call a hal funct that grabs the mutex, or may grab it itself and start walking structures
better to just set the flag before calling the parsing funct, and clear it on return
are the hal_lib functions linked into this program, or are they kernel calls at that point?
Ah - then do it your way :)
the hal structures are in shmem and can be manipulated from user space or kernel space
the mutex protects both types of access
uh - it's single writer/multiple reader, right?
so if halcmd is changing something, then the kernel modules can't read anything?
there are linked lists, and if a reader is traversing the list while a writer adds or deletes a node...
yes - could be a problem
the actual realtime data doesn't pass thru the data structures
ah - phew!
pins, signals, parameters, functions and threads all work independent of the mutex
it's only when you want to change something (add a function to a thread, connect two pins, add a new parameter, etc) that the mutex comes into play
I was going to say - something like "halcmd list" causing the RT system to choke wouldn't be the best thing
but you knew that
no... I covered that long ago (not my first trip around the RT block)
heh - doesn't look like it
but the gotchas are still there... like this signal thing
the window was there all along - if you hit ctrl-C while halcmd was processing a file, it would exit without freeing shmem
just that when processing from a file it's pretty damned fast, and the situation "never" arises
tried it with stdin for the first time today, and the light went on
houston, we have a problem ;-)
sounds like we have a solution now...
* jmkasunich starts coding again
good luck. I think I'll head for bed now.
see you later
SWPadnos is now known as SWP_Away
thanks and goodnight
* anonimasu sighs
good morning everyone
03jmkasunich * 10emc2/ (scripts/emc.run src/hal/utils/halcmd.c): modified halcmd to gracefully handle ctrl-C, especially when taking its input from stdin
okay... help... wiki...
tap...tap...tap... this thing on?
who were the prostars with AVR stuff?
anonimasu, you and AJ are play with AVR stuff right? I know swampy does.
although not much lately
ever deal with the PWM on the 90s series?
played with it a bit..
at90s? not the tiny or the megas.
wait a sec..
let me check
yeah, that'd be good.
weyland, was there something you needed?
I'm trying tofigure out how to add a page to the wiki so I can start writing the page I agreed to
I don't see what John was talking about
it's late, and I'm a moron
Je ne sais pas, wiki.
what're *you* smilin' at?!?!?
don't make me spear you
do it and take me out of this misery
I think someone needs to give you permission to make a page.
I don't think it's a random person can edit page type wiki
* anonimasu slaps weyland with http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?BasicSteps
actually, it says I can edit it
sheepishly - thank you...
yeah follow it :D
I'll be baq, I'm sure...
I hope paul has some thoughts about the algorithm I made up
one for joining/simplifying beziers
simplifying/matching mutliple beziers to one
so we'll soon be able to machine nurbs?
I dont know I hope we will
that'd be fuck'n sick!
I can finaly make that silicon vigina casting I've been looking forward to.
my ides was that you remove control points, then tweak the remaining curve
until you en d
end up with a close enough match
see, I think perhaps there should be control points... just massive amounts of them.
like a ramen sum of the curve.
you do know what I'm talking about right?
the trouble is that we need to avoid moving massive ammounts of data..
that looks funny
anonimasu, gcode data??
could make it another gcode... but I know you guys would object to another funny G-code #.
A-L-P-H-A: you need to convert the points back to nurbs also..
err not nurbs bsplines..
another explain more
bsplines require what? 3 points? right?
3 or more
well, each control point is 3 points.
start, bspline control point, end point. So each spline control point requires 5 points. and overlapping start/end points.
for subsequent points
you need one point for each control point
and 2 anchor points
that's that I have. Except your's is more brief.
mine's a convoluted way of describing it.
shit, I'm tired. I should sleep.
the control point is the midpoint of the curve..
do you think that algorithm will work?
I know what a bspline is... autocad, illustrator, inkscape, flash have them.
for simplifying them
that's what I am trying to find out
I don't know how you can really simplify them even more.
like you're gotta have those control points, and stuff.
with that information, you can create the movement points.
oh the trouble is if there's 20 in a short segment
that's a high detail bspline.
too much data to pass around..
see, you could make it, create G2/3 points, that have a specific line segment size only.
you still end up passing too much data in the end
thats why you need to simplify them even more
that would be a post processor thing then, not a EMC thing.
theres no point in making splines if the spline has as many points as the orginal spline
err orginal path/line
think about it... the computer doesn't really give a shit how much data you push at it... it just chuggs it. Why do you care how much data is passed back and forth?
because the limit of the speed emc can acheieve is based on how much data you can pass at one servo cycle..
the queue starvation that shows up in SQ at high speeds..
see if you toss some data, you lose precision.
how much precision do you want to loose?
that's a very good question
but since you average the remaining points, until you en up with a spline within t of the orginal one
or a flat line.
anonimasu, that's kinda bad... like what happens when you have a shark fin... you're gonna have a bump, instead of a fin.
are your sharkfins that small..
could be... lets say I'm trying to make a saw blade pattern, in that scale.
yeah but it still large..
[05:57:39] <anonimasu> http://www.mmsonline.com/articles/079901.html
as I said earlyer the limit is how much data you can pass around
the less data the more speed
again, it's a speed versus accuracy. Higher the tolerance, the higher everything else.
perhaps scale it to the resolution that each machine can handle.
well it's up to the user anyway..
well, there's really no point, if say the user can only get 0.0005" resolution. [and unlikely to be unrepeatable at that resolution ether].
what's my solution?
tweak your acceptable error down
if you can average 4 points to a spline it's still less data
I'm not exactly the best person to have this discussion, because I'm a step/dir guy. I don't know how servos should REALLY behave.
as they should in this case.
I'm a poor stepper motor man.
oh, it's not the servos, it's the planning of the motion
oh, like look ahead, continous motion.
I'm definitely interested in that.
the trajectory planner
I hate how turbocnc pauses after each entry.
read the page I threw
I'm browsing it.
my eyes aren't focusing well... it's 2am.
if you can throw nurbs at the controller ^_^ joy!
definitely would be COOL. well, geek cool... but I'm a geek.
still would require a killer post..
it's all trajectories, and maintaining constant feedrate... the lookahead would really need to be slick.
and from what I understand you can scale nurbs up to as manu axis:es you want
yup. you can.
# Nurbs interpolation offers an alternative to traditional chord interpolation for machining complex contoured forms, like dies or molds. If you are instead machining geometrically simple parts, nurbs interpolation can't help you.
# Nurbs interpolation may let you machine these complex forms at a higher average feed rate than you would achieve using chords, without compromising accuracy. CNC processing speed may provide the reason why, but there are other reasons, too.
# By itself, nurbs interpolation is not more accurate than chord interpolation. But when accuracy is required, nurbs can offer a more efficient way to achieve it
multiple control makers say that a typical nurbs block can replace five to ten blocks of straight-line moves.
actuall. nurbs3d... you'd need 3 control points for each axis. But could be define for each point in 3d space, you'd need 4 control points. and XYZ controll points, plus the original control point vertice, and then there could be another point for feedrate. And then another point for spindle direction.
that's 3, plus 5, that's 8 variables for each control point.
oh... could add another control point for acceleration for the feedrate.
I dont belive that they are passes as points..
I'm thinking 3d visualization.
yeah, but I am not :)
but you could visualize it laso
they could be visually represented that way. :)
with the same paths..
sO just figured out a way to do 4d!!! :D woohoo.
actually, for this example it'd be like, 8D
and that wasn't meant to be a smily.
well, I dont care for that but you can easily visualize bsplines
position in space, time, excelleration, spline curvature in 3 axis, and spin direction.
and have 8 axis contouring
my machine will do 1.5m/min now
I got 35m/min
1" = 25.4mm
I get 2m/min right now. :P
actually faster than that.
I think I'm getting 80-90ipm.
the datrondynamics machines does 400ipm..
I'm off to bed. later.
[06:42:55] <asdf-qwee> http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=7517191614&rd=1&sspagename=STRK%3AMEBI%3AIT&rd=1
hm seems expensive for 1
but very nice
asdf-qwee Crap, I wish I'd known.. I saw a buttload of those at surplus for $0.25/section a while back.
* Phydbleep sends a wheelie-bin chasing asdf-qwee.
And what's that supposed to be?
Wheelie-bin? Plastic trash can with wheels, like they use for the trash-trucks with a grabber arm.
* asdf-qwee ties a package for Phydbleep to a stray dog, stamps "New Mexico" on it, and gives the dog a boot
asdf-qwee: I glued yours to a snail. :)
Should be there Thursday or Friday.
You should have gotten an email from UPS
Yeah, I did, looking to see where it is and how many times it's been searched for illegal aliens. :)
Man. I wished I'd known that you wanted DIN rail terminals.
Well, I could still go some DIN rail
Yeah, But I won't be back up that way till next weekend.
Maybe a gift card for AutomationDirect.com? :P
asdf-qwee: Is that the site with the blonde and the reworked Ford wiper motor? :)
The surplus place here has a bunch of the din stuff.. I ended up useing miles of it for car stereo stuff for friends.
Well, if you REALLY like the toolpost, maybe you send me another wheelie-bin
I'm going to try using it for my next controller box(es)
Oh that wasn't the package, that was a retriever. :)
Funny you should say controller parts. :)
* anonimasu just got a toolpost
machined the orginal
mount on the lathe for it yesterday
anonimasu: I'll have to use my old one to make a mount for the new one. :\
I milled the O with the rotary table..
I thought ALPHA was going to send me 2 labs and 50lbs in pennies...
err the centresince I didnt feel like machining a whole new one..
Anybody got a spare rotary index table or worm-drive to make one cheap?
Hmmmm... I wonder if I could harden/heat-treat MS (mild steel) to make a tap to hob a MS gear?
Phydbleep, there's bunches of pages out there about doing just that type of thing
probably better to start off with a brass gear
fenn_afk: Yeah, but 99% of the ones I've seen use MS for the tap and Al for the gear. :\
better than no rotary table
fenn_afk is now known as fenn
IO'd rather use MS even if I have to wear out a tap and make a new one. :)
alu wouldnt work..
not for too long
anonimasu: It works for telescope mounts and that kind of stuff, But I want something that will survive massive abuse.
I've got a worm and gear I bought to do the "Gingery Dividing Head"
* Phydbleep may want to build a massive revolver cylinder like block for a wierd piston engine...
I've since bought myself a rotary table and an dividing head :)
when you've got your machine running you wont need a rotary table too mugh
Phydbleep: What, a quad-piston Stirling?
I use it for quick half manual stuff
7 cyl radial with a 90 degree bend in the rods. :)
Cross between a radial and a "wobble-plate" torpedo motor.
asdf-qwee: BTW.. Congratulations.. It's a box, 14" cube, 10.2 lbs. :)
10 of it you wanted, the 0.2 is something amusing. :)
anonimasu: Nothing that amusing, just spare parts. :)
"...In a discrete brown paper wrapping"
Close.. Small white cardboard box.
Well, it's about time for me to leave for work
And after work...I work some more!
Work? That's a four letter word. :)
You go wash your mouth out with beer right now young man!
First my day job, and then off to do some CNC freelancing
Yeah, THAT's just what I want on my breath when I walk through the door
asdf-qwee: Question, Did you do that split in the boring bar block V or H?
It's quite solid
Phydbleep anonimasu: It works for telescope mounts and that kind of stuff, But I want something that will survive massive abuse.
sorry just quoting
OK, Cool. i can get domed allen-heads for it..
don't rotary tables have spindle locks?
fenn: Most do.
* asdf-qwee is away - stop talking to me!
so all the load goes on the spindle lock instead of onto the backlashy worm gear
Yesss.. BUT, I want to be able to power the head later for spiral cuts/etc.
hmm.. is there such a thing as a "ball worm gear"
like a ball screw but for worm gears
it works in my mind but i might be overlooking some important kinematic requirement
fenn: You're missing the important financial requirement.. Well, Actually I am.. I'm broke. :\
i'm thinking about power transmission designs for turboshafts.. will build some time in the future if it works out
worm gears are a neat idea but have terrible efficiencies due to low relative sliding motion
fenn: I could give a rats ass about efficiency in this case. I want to be able to mount it on the cross-feed and play spirograph. :)
you're not trying to make a wankel engine are you?
Not today. :)
you could use a universal joint linking the spindle and the rotary table, and use change gears to drive the (spur geared) rotary table
instead of a worm gear
might be more complicated though..
fenn: You can also take 99.9% of the backalsh out of a worm system if you build it right.
fenn: yes, but they cost a arm..
fenn: or a small sized country
anonimasu, what are they used for
fenn: higher end rotary tables
Morning paul. :)
paul_c: got any thoughts about the last message I sent you yesterday
way, way too much math being done.
paul_c: got a better solution to it?
dont think it'd be _THAT_ much math
paul_c: if you can come up with a way to aproximate the spline, you can do with less calculation
'xactly - There has to be a better way than to convert to way points & compare old and new...
yeah, you can do without converting them..
must have missed that msg then...
I didnt send it...
I wrote some stuff on a paper besides my bed..
paul_c: You about?
I know the feeling.
I don't have 2.6.10 anywhere.
Will the head of emc2 build on 9?
it should do.
Okay. Then I won't worry about that right now.
paul_c: I guess it'll be a while before we solve this in a good way.
did you ask on math ?
didnt get a way to join/simplify spliens..
there isn't an easy way....
It is going to involve trig and/or matrixes somewhere along the line.
if somone could just explain how you do it..
or give us a formula for doing it..
it would probably be easier to just start out with splines in the CAD program, export to spline toolpath in the CAM program, and _then_ work on a spline gcode interpreter
instead of converting to hundreds-of-little-lines and trying to massage it back into spline format in the interpreter
fenn: give me the name of a program that does it :)
anonimasu, exactly ;)
it'd be easier but well, impossible if we dont have some program that can do it for us..
but nice hack ;)
why bother implementing spline interpolation if you can't even make a spline toolpath?
there is a severe need for a GPL'd CAM program
generating a path from a spline is (almost) trivial.
but that is not the problem...
spline toolpath== G0 K0 * * *
imagine for a mo, someone sends you a g-code file
there are sections where it does an arc of (say) 2"
yeah but loading it up in a cam program.. is neat..
if we were writing specialized control for a special machine perhaps it'd work..
and the cam program they used split those arcs in to straight line moves of 0.00175" long
paul_c, i get it
your motion planner chokes on all the data
Without overloading the usr<->RT comms, you've gotta reduce the amount of information.
anonimasu, it doesn't matter what machine you run it on, it's all in cartesian coordinates until you get to the kinematics section, right?
unless you are jogging a strut on a hexapod.... But that is a special case that is easy to handle.
people do that on purpose??
On the odd parallel kins machine, yes.
(scara, puma, etc)
well, that has nothing to do with spline interpolation then
at least, i thought it was spherical motion, i might be wrong
fenn: hm, I have no idea how the kinematics are handled..
well, anyway, spline interpolation doesn't seem all that hard to implement
getting hundreds of little lines back into a big spline seems somewhat harder
fenn, the purpose of the splining is not path accuracy...It is to insure that velocity and perhaps accel are continuous functions so the machine does not shudder
it's to reduce the ammount of data you pass between the userspace and rt part..
heh well that helps too
thus giving a higher block processing rate.
and well no queue starvation..
btw on your generation of points to prevent didtant points from being oversmoothed....
if the traj planner is at a constant rate in RT that will kinda happen
so a big move is broken up into many pseudo points
that controls in zone path errors
les: you end up with way too much data.
error is the a function of traj rate and accel
yes it is a lot
libcsiro0 -- bivariate Cubic Spline Approximation library
but less than the raw points sometimes
les: but that stull avoids the real problem..
Note that Rogier first ran joint space points thru a three term FIR low pass filter before anything else
les: how do you convert the thousand segments to a spline with less data.
or well the 1000 move circle.
you resample the thousand points first
think about pocketing a 1" dia circle at 400ipm..
and based on desired rate of curvature...
create new and fewer psuedo points
can you come up with the math on it?
that's where the trouble lies..
yes I think I can
It will take a bit but I should just write down the whole process as pseudocode
I would want to do this in joint space
much easier to understand
and of cource machine space can be created by running through forward kinematics
then that can be run though any desired inverse kinematics (like a hexapod)
i thought forward kinematics was rectangular -> joint space
paul_c: can you explain what stuff les needs to do I dont understand this..
cartesian -> six axes pointing toward one point, i mean
I dont get the "joint space, stuff"
anonimasu, he's talking about non-perpendicular axis machines
or rather no time to look at it..
yeah that rogier blom paper is too long
les, why do you want to do it in joint space?
joint space is describing motions at things like robot elbow bearings
there's already a algorithm that's applicable.. but reducing the amount of data are the only trouble.
forward kins calculate end effector position from the joints
that is fairly easy
i guess i've got it backwards
inverse kins calculate the joint positions from the end effector
that is not easy
les: you just have to come up with that part..
there are sometimes multiple solutions
or solutions that blow up
les, there's always one solution if you take into account what position you were in before
I think you are overcomplicating this :)
yeah it would be easier to do it in cartesian coordinates so you only have to write the code once
Imagine moving shoulder, elbow, wrist etc but keeping your middle finger in one spot.
When you try to calculate all the joint positions from the fact that your finger is in one spot....
there are many combinations that will work
but the "Right" combination is the one that is closest to where you were before
closest usually defined in terms of time
but if it takes too long to calculate in terms of time, could be done other ways
yes..well I had my finger stationary
that is a subset
is emc2 planned to support more than 6 DOF?
just to show that inverse kins are not trivial...
anyway that was just to get an idea of the terms....trajectory planning should really be independent of kinematics
Now in Segmentqueue it was not....
no wonder it never worked
so it would not work on anything more than a 3 axis cartesian machine
heh let me modify that statement...
would not work at all!
better luck next time
well, fenn possible new algorithm supports as manu axises as you would like.
les: the only thing you have to do is to reduce the amount of points and generate a spline off them.
well... something like this:
read ahead some points....
run them througha spatial filter....
resample at a constant rate (as slow as possible)
put the coeficcients on a queue.
for each axis
what is the constant rate based on?
SWP_Away is now known as SWPadnos
arc motion requires a little thought
Hey Paul. You got a adeos kernel set up that fixes the bug?
either use what is in there or spline an arc with a cubic
I think it will exactly fit
les: that's probably the best way..
is it just the RT data rate that's the problem, or does the block processing rate come into play as well?
user/RT comms must be carefully managed I guess
I know Paul has mentioned that as a hard limit on user->RT bocks
block processing rate in general would not have to be a problem because it can be done at any time
block meaning g-code
just the man I wanted to see
I guess my question is, with the pathological example Paul gave sometime back (a 2" circle output as a string of line segments 0.00175" long), those need to be processed quickly
are the algorithms you're thinking of efficient enough for rapid processing of that kind of data
seems you guys are debating the hot topic
(given the 1000 ipm or 500 ipm speeds you want
SWP it would be resampled at a greater spacing.
i got the idea that it would not be done in realtime
what's a possible realtime app of turning pathological sampling rates into splines?
sure, but there remains the fact that you want the machine to burn through 10 inches/sec, with 1/600 inch segments - that's 6000 segments per second of processing (in that example)
alex...ask your question on chat
In the limiting sense an entire program would need to be preprocessed
what i mean is first you turn the crazy CAM output into a decent splined gcode file, then run it
OK - that's what I was afraid of :)
I would thing that is possible...plenty of memory about
* anonimasu sighs
les: actually I wanted to bring the topic up
and maybe get you to write a bitch-list about tp
SWPadnos: that's what I asked les to come up with..
alex_joni_away is now known as alex_joni
yeah - I was heading in that direction yesterday when I was interrupted by a phone call
heh - contagious
seems like it
I just got off the phone
"telephones are a pox on all mankind"
fenn: don't dare to mention cellphones ;)
cellphones are like pissing in the drinking water
you're just asking for it
who was it that said "I'll be happy when my computer is as easy to use as my telephone"
someone who will never be happy :)
and then said "well - it's happened. My computer is as easy to use as my telephone - I can't figure out how to use this damn thing"
I think it was Dennis Ritchie or someone like him :)
the phone had become complicated enought that it caught up - too funny.
well off to customer
* alex_joni reads back
I really think we need urgent addressing on this matter :)
is there a hal interpreter yet?
a hal-based gcode interpreter
is that too much to ask?
WTF would you need a HAL based gcode interp?
what would that be good for?
and how should it communicate with the rest of the world?
set a pin when we need a line, and another for circle?
yeah pretty much
well.. that's bogus
the reason it's important is that HAL makes the whole system transparent to the user
Folks I must make a client housecall
Catch you later.
it's also important because NML is a bunch of crap and needs to be replaced by something like HAL
fenn: interp & motion don't talk NML
is someone going to beat me with a pointy stick now?
* fenn cringes in terror!
Ooh a pointy stick is good.
* alex_joni suspects robin hides under fenn's clothes
In a monolythic program you do not need formal communication
that's the point, it shouldn't be monolithic
Cause it does what you wrote it to do and no more.
When you run more than one system at the same time
say i want to keep the motion planner, but chuck g-code out the window since it's been around 60 years too long
They have to communicate using formal language.
right, and HAL is definately no formal language
it's an ABSTRACTION LAYER
got nothing to do with communication
Formal language can be imposed upon HAL
probably should be imposed in fact
Well there are a few formal elements like data typing.
But for the most part, when you connect a hal module to another,
it's just like connecting wires
with analog / digital components
the one doing it keeps in mind what the meaning of a change in pin state is.
With a formal language, the meaning is decided upon by h
a dictionary, canon if you will.
This is the semantic element of the language. "What does this message mean to me."
rayh: I know what a language is
The other half of the formal language is the syntax
but that's far from what HAL is / needs to be
anyways.. getting back to TP
the poor bastard NML has no bad influence here
And that is why it would be a very bad idea to simply impose hal like structure on thw whole of emc
that's circular logic
"i think hal should be low-level, therefore hal should be low-level"
making certain that the sender of a pin(signal) and the receiver have the same sence of
fenn: HAL is ok to be wrapped around hardware drivers
what that signal means would be terrible.
to be able to connect them to EMC
fenn: has the right idea here.
rayh, i don't agree with what i just said
As I said yesterday, I like absolute in certain mixtures.
* alex_joni takes a note: <fenn> rayh, i don't agree with what i just said
* fenn hangs his head.
and you guys are all a figment of my imagination.
Jon Paul rears his ugly head again.
IMO NML needs an easy way to add words to its vocabulary.
rayh: can we PLEASE address NML another time?
I really feel bad when people go away from EMC
and people going away are USERS
Who is going away?
the point is.. people that dislike EMC is because they don't like how it performs
not because some shitty library is used for communication
at least that's what I think
99% use tkemc on the motion control machine anyway
the problem with NML is a pita for developers, I agree
but.. those are developers, and a decent developer should be able to handle it, or limit himself to other areas
or ask for help
or change the fscking thing
i can't make any useful comments about what will/wont work in order to fix the TP since I don't know what the overall layout of emc2 looks like
* alex_joni is not in the mood to make a decent suggestion to fenn
so I skip that ;)
but there is some documentation on the whole system
fenn: got some programming skills?
so "motion" has output to HAL, but regular hard-coded input from the interpreter?
alex_joni, maybe :)
motion has output to hal
there you can connect either a stepgen
or one for servos
to command your hardware (be it servos, or steppers, etc)
motion is realtime
okay, now say i want to have something a little more interactive, like controlling a robot that responds to its environment
depends on where you want the feedback
"motion" is realtime
probably don't need realtime feedback
that means no (NO) communication libraries are suitable
all communication is done through shm
fenn: got it so far?
ok.. so TP needs to write motion commands in a SHM
on the other hand TP gets data from the interp
i like having flexibility though
right now emc only takes gcode in and spits out motion based on certain assumptions i may not agree with for the particular application
like, "adhere to path" is more important than "constant speed"
i feel like if the whole system were more modular and flexible, i could easily adapt it to my needs without bugging the developers about little things like that
path following mode is settable with a G code
I agree that flexibility would be nice at a higher level like the interpreter
* fenn really hates G code.
so you could connect a STEP interpreter to your motion system and/or a G code interpreter, and an STL interpreter, etc.
and, different trajectory planners as well
fenn: by the time you deliver the STEP interp. the TP will be ready
(which are all compiled into task atm, I think)
SWP: but from different sourcefiles
yes - the source is ,modular but the ex ecutable isn't
alex_joni, i have to learn "real world" programming first, dunno how long that will take
which is kind of backwards
SWPadnos, it's that way because it's easier for the developers
if it were the other way around it would be easier for the users
I know - it's just conceptually wrong :)
but, the TP is more important than completely redesigning the interpreter at this point
agreed on that
I should have my mother read the sonja and rogier documents
She's a mathematician/programmer (/chemist/physicist)
she likes the math a lot more tha n I do
* alex_joni joins the club urging SWP's mother to read the stuff
math is really easy when they show you the shortcuts
but she has a mental block on geometry, and therefore 3-d stuff :)
can she do mental quintics?
just for fun, she bought a couple of books on the calculus of variations (whatever that is)
* alex_joni goes home
see ya later
I'll be online later tonight
* fenn waves
if you get les around.. maybe you'll start a wiki, or a message to the dev list
both seems like a good idea
wikis get ignored, messages to the dev lists get thoroughly discussed then forgotten
jmk is really good at writing documentation, so i understand hal very well, but the rest of it is all a big mystery to me
do you have the emc2 diagram?
ah, the mystical emc2 diagram. is that a cabalistic document?
no i've never heard of it
there's a pretty good block diagram showing where all the components fit, and what communicates with what
I'll see if I can find it
We can do this now, excuse me Alex, within the confines of the canon available.
are you waxing biblical again?
Ah. Sorry guys.
no - that's "Yea, verily"
Do we have some TP change plan?
first of all, what source file is the current TP in?
step 1: fix it :)
step 2: tell the world it's fixed.
step 3: profti!!!
I mean profit!!!
Ah. The old US Gov ploy!
s/profti/deal with headaches from 500 new users
no - that starts at step 2 :)
ah! tp.c was hiding in the "attic" all this time
how about emc2/src/emc/kinematics/tp.[ch]
emc2/src/emc/motion/tp.c is version 1.2, versus version 1.11 in kinematics. dunno if version numbers mean anything
oh damn 1.11 is higher than 1.2 nevermind
i hate sub-versions greater than 9
Get used to it - Those numbers are CVS versions
paul_c, any idea where i can find the emc2 block diagram?
Thers's also a pdf in docs/
found it, thanks
that's not the one I'm thinking of - it's a jpeg, I think.
OK - it's called emc_control_LG.gif
[14:53:13] <SWPadnos> http://home.att.net/~jmkasunich/EMC_Docs/EMC_Control_LG.gif
i never would've found that
the page isn't even there anymore
(the image still is)
I found my local copy, googled, found an irc log, and got the link from there :)
interpolator runs in joint space??
i'd also think that unit conversion would be above kinematics; would simplify code since you don't need to remember which unit you're using
well - if you are moving along a cartesian axis, but you have a polar robot (puma-like), then you really want to do smoothing based on the path the actuator will take
I thought the same thing, but there's a problem with that - different machines have different mechanical unit systems
there would be a small but measurable error if you always used inches, but your machine had a 2mm pitch ballscrew
(or the other way around - I can't remember)
no, inches is defined at 25.4 mm exactly
so if your calculations are more than 3 sig figures there won't be any error
yes, but what's amillimeter in inches?
1/25.4 isn't so nice a number
(look at 1/3 - you need more than 1 sig dig to get accurate results)
just seems like a lot of realtime processing power going to waste
finally back at work.
hm, did you come to a conclusion?
well - conversions are easy - it's a single multiply or divide
simple * 1000 times a second
fenn: that error doesn't matter, as long as it's not cumulative.
simple * 1000 times per sec / 1,000,000,000 cycles/sec :)
are you at the TP atm?
no - I'm at the computer - the TP is in the bathroom
and what are you discussing please fill me in :D
we're talking about overall layout of emc2
fenn: the trouble with modularity is that you cant make everyone happy..
right - it's either too inflexible or too hard to configure :)
it ends up at the skill of the developer in the end.
I was just having a discussion about the phrase "easy to use"
and what it means to different people
I'd define it as a efficient and self explaining but powerful interface..
if we are talking about GUI, but I assume that because that's what the user see..
self explaining to whom? a programmer? a machinist? a photographer? etc. (it's harder than you think :) )
anonimasu, that definition should work for both text and graphical interfaces
my customers dont give a shit what I stuff into the plc's as long as it works.
the user in this case probably doesn't know anything about Gcode, programming, or linux
the user wants to crank out parts..
he wants it to "just work dammit"
that's what I define easy to use as..
emc is not easy to use.
it seems easy for paul_c :)
i thought bdi 4.20 worked pretty well first time i used it
setting offsets was aggravating
easy to use perhaps..
not to set up and tweak..
probably should trademark that if emc ever gets popular :)
users generally dont give a shit as long as things work..
after all a mill is a tool..
anything stopping me from using O1 DRILL ROD, grinding it, heating it to a cherry read, and dunking it into oil, to product a boring bar?
A-L-P-H-A, worked for me :)
A-L-P-H-A: I wouldnt think anything does..
well, the better question is, will it work?
if you get it "hard"
cherry red is a little hot imho
A-L-P-H-A: I think it might be a little brittle if you don't anneal it afterward
I dont know what's involved in hardening drillrod..
or how hard you have to harden it..
A-L-P-H-A: I think you get hardening instructions from the manufacturer
A-L-P-H-A: if you're not cutting with it, you don't have to harden it, do you?
temper to 450 Deg F
paul_c: that just means after the oil drop, bake it in the oven for a while, right?
I'm making it into a internal grooving tool
A-L-P-H-A: oh so you are cutting with it
then try to just harden the cutting end.
that was what I was gonna try.
heat until the business end is barely red (don't burn it), drop in oil, anneal
anneal it is heat it up again?
yes, an extended bake at a lower temperature
hmm... I don't think I can do that... unless I leave it in the oven.
just throw it in your (kitchen) oven
when you heat it to red with the torch, don't put the torch on the cutting edge - apply it to the underside and watch the cutting edge for color.
thanks. any more tips?
I think that's it
you know... maybe I'll just get a long piece of highspeed steel instead.
gotta polish off the black oxide so you can see what color the tip is when you're annealing it
seems easier right now, than heating and annealing all that.
well, that's what I do I guess
you should learn heat treating if you wanna be a machinist
never know when you might need it
do you heat treat tool steel yourself or do you send it in to do it?
depends on how critical it is that i get it right
nothing I do is critical so i do it myself
i wouldn't heat treat my own camlock pins cause my life is at risk if one of them breaks and a 50 lb chuck goes flying
maybe I should finish up my work and go and get some food
and a break
anyone think this is an AC or DC motor? http://www.harborfreight.com/cpi/ctaf/Displayitem.taf?itemnumber=33833
look at the manual (green button on bottom of page)
it's got brushes..
fenn is now known as fenn_afk
A-L-P-H-A: I'd be willing to bet it runs perfectly well on AC.
phew ... another job done
* robin_sz finishes another series of auctions
we just cmpleted a series of auctions in Geneva .. no problems, me happy
oh yeah :)
15% from the buyers
* alex_joni prepares to watch #3
plus a simialr amount forem sellers
I'm off watching the final part of the saga
f@ck. just dropped another $100
03paul_c 07bdi-4 * 10emc2/src/emc/Makefile:
Lost a few of the sanity checks on P & Q words during the merge - Some of the
canned cycles will fault out if passed a negative value (as will G04). Also
gained a few unwanted #ifdefs around some of the M functions - These should be
stubbed in the canonicals rather than the interpreter.
03paul_c 07bdi-4 * 10emc2/src/emc/ (19 files in 2 dirs):
Lost a few of the sanity checks on P & Q words during the merge - Some of the
canned cycles will fault out if passed a negative value (as will G04). Also
gained a few unwanted #ifdefs around some of the M functions - These should be
stubbed in the canonicals rather than the interpreter.
03paul_c 07bdi-4 * 10emc2/src/emc/global_defs.h: Need global_defs.h to go with the merged interp.
03paul_c 07bdi-4 * 10emc2/generic.ini: Get rid of a couple of obsolete entries.
03paul_c 07bdi-4 * 10emc2/generic.ini: Added notes about STEPPING_TYPE to the ini.
well I am back for a little while but everyone is gone?
was looking at g92/% thread on the list
I think I will steer clear....
back for a little while
* Phydbleep wakes up and looks out from under the flat rock..
anything interesting while I was gone?
What are you people making all this noise about?
I just read back
and the fact there are slight "imperfections" with emc
just a little TP discussion
to call it nicely ;)
I saw whether you were wondering if I was leaving emc
Ah, And I was just about to remind A-L-P-H-A that a drop of superglue will keep the $100 bill on the end of his finger instead of leaving it in the bra. :)
I think I read one of your posts
I can use it on a bridgeport or something
les: it's a shame that you won't use it on your mill anymore :(
But I have to pull it from the big router pretty soon because production is beginning again
how come the change?
wanna go faster with it?
I sure don't want too...it's work and will cost many thousand dollars
alex, I am running at one third speed or less due to the TP
well.. you know how big blue puts it :)
never touch a running system :P
but I agree on the speed stuff :(
and in your case.. it's not running how it should
I would rather leave it alone for sure
still.. as I said.. it's a shame
* alex_joni wishes he paid more attention during those boring math classes
I vaguely remember how to solve integrals :)
I think emc will still be useful for some simple shapes on bridgeport
as long as I don't try to make molds or something
regarding G92 - I think I may have found a work-around, and the source of the problem in the interpreter
(sorry to steer back to that)
makes me wonder... did you always have this problems?
SWP: no sweat
It might still have it's problems on a BP at higher speeds cutting plastic and stuff
alex_joni: I'm actually glad I ignore 90% of the math classes.. I didn't have any pre-conceptions about how quaternions should work when I had to learn them for VR stuff.
SWPadnos: Problem. Some people have difficulty in using G92 correctly.
Phydbleep: heh.. well I think I'll need to read some old courses of mine :)
SWPadnos: Answer: Remove user and/or G92
true enough, but there is something that I consider a problem in the interpreter
I always had the problems. Fred confirmed years ago that it was the TP.
paul_c, SWP: send that guy a patch file, let's see if he does anything with it :)
I didn't make a patch, but I think a workaround is to issue a G92.3 after the M02 (in his example code)
What's the M30 do? I heard it will clear the G92 as well.
it stops using offsets, but doesn't clear the variables
[19:56:42] <paul_c> http://www.isd.cme.nist.gov/personnel/kramer/pubs/RS274NGC_3.pdf
- see P.38
I only use it to touch off in MDI...it's very handy for that. The turkey code uses an mdi g92, g10 and all 9 coordinate systems, and numerous G43
alex_joni: Turkey calls
les: for that same money, could you commission the work you want done on emc?
What would G28/G30 do to G92?
les: maybe to cradek?
he wouldn't charge you, he's a nice fellow
I would (and I'm still a nice fellow :) )
this is business - heh heh
* alex_joni strikes SWPadnos from the nice fellows list
so.. what are we gonna do about TP?
whoops was away...
* Phydbleep hands alex_joni a Sears-Roebuck catalog.
les: anything else bugging you about emc bad enough? or for now it's only TP?
$5000 buys very little software I think....
les: depends where you buy
les: a decent programmer gets about 4-500 / month here
Thay's 60+ hours from me - easily several comment blocks :D
les: Get you 200 hours here. :)
5k = 10 months = 2000 hrs
No it's only the TP...the rest of emc is stable, versatile, and what I would consider to be fairly modern
well.. there are a few bits that need some bending imho
all this toilet paper, and no place to ...
but that's ok :)
I wish I had a paper describing TP like I have for SQ
I'll tell you one thing...i'll put off chnging the router control as long as I can
I'd at least try to hack in arc blending
That is something very easy to put off!
les: what is the exact problem causing you to want to change? is it arc blending or jerk?
les: You already have a control head that will drive it like you want?
cradek: it's queue starvation
Well I kinda offered to try a pseudocode document on a joint space planner
given the time
les: that would be great.. and something to code by
But I am worried that what I write up will not be easy to integrate into existing code
never mind that
you write it how it should be
I'd sure as heck read it
we'll figure out the rest (not wanting to sound like a smartass)
it starts with coordinated motion calcs
les: Yeah, Other people will will have to tear their hair out.
then filtering with a fir
if it doesn't fit in.. we can still rip out the old code, and redo it
then blended cubics
but I can't imagine doing all that in RT
les: does it need to be in RT?
* Phydbleep thought alll that should be pre-calc'd and canned to feed the queue.
I think given a big enough queue it can be done in non-RT
Given memory...no it does not
and motion should only grab one segment at a time, and move
would speed up the RT stuff
but that means perhaps the whole gcode program must be planned
maybe make it work faster (step pulse wise)
that will probably take a while on big programs
Unless there is a lot of spare time in the RT thread
and the planning goes out the window if a feedrate over-ride is done (or pause/resume)
I have that covered SWP
plan using max over ride
rihgt - you wanted to calculate for the max speed, then slow down
les: that way (planning from the beginning) you can warn the user if there are any problems
then if time scaling is done in the RT code the plan will still honor max vel and accel at lower speeds
say the machine can't keep up to the speed demanded
it's like a super-verify
paul_c: what are you working on currently?
that was one place I was headed yesterday (when I was so rudely interrupted by a phone call)
The planner is responsible for calculating moves that the machine can always do
it knows max vel and accel
that was a good nap.
les, hell well do shell reamers work?
and can therefore tell you that a feature is too small or the speed is too high
there was an issue about max vel / path following
shell reamers work fine!
well path following issues I think would be a function of the resampling rate
note the low pass filter before resampling
that is for anti-alias
A-L-P-H-A: The ones i've use have been OK.
Website creation and management lessons.
A-L-P-H-A: I've actually got an adjustable dia reamer I use when it will fit.
lesson #1 : don't use flash
Lesson 2: See Lesson #1
lesson #2: whenever in doubt about graphics remember rule #1
see, I saw those, I don't wanna fiddle with adjusting the screw to get the exact dia I want.
this is more how ftp works, etc.
lesson #3: when using ftp, don't use flash
they are set up with cuteftp, photofiltre, web album generator, and a couple other programs.
as long as it's not flashftp :)
right.. back to serious stuff
Lesson 4: When thinking about using Flash, Seek competent psychiatric help.
Lesson 5: make sure shrink doesn't use flash
Lesson 6: There is no Lesson 6.
Not using it...although the software can....
And finally Lesson 7: NO FLASH!
wanna know a secret?
* alex_joni did some flash :)
alex_joni: You've been flashing your shrink?
I've been flashing strangers :))
* Phydbleep is betting he got paid for it. :)
oh no...just discovered I left the usb cable in the camera overnight
have to run out for a minute
yet another one of those mysteries
USB should provide POWER
not drain :)
may keep it from poering down
powering, that is
it should still not drain the batteries in the device. :\
no, but the device itself would drain the batteries overnight (he didn't mention if the cable was plugged into a computer, or if the computer was on :) )
There should be a disconnect like for the AC/Battery switching in a boombox.
Plug the cable in and it cuts the internal battery connection.
nope - not on a USB device
it's generally done in logic, and the device may not be USB powered (most cameras probably draw more current than USB can provide)
This Kodak has a xfer setting that just allows data xfer.
It 'should' just turn the camera into a USB powered CF reader... Instead it eats batteries faster that using the flash/display.
nice thingy for accumulators
need to discharge them fast? transfer some pictures
So I pop the CF card out and stick it in a PCMCIA reader. :)
les: still around?
USB can only provide either 100 or 500 mA t oa device - the camera probably takes 1A or more
Phydbleep: I liked CF.. until I switched to SD
SWPadnos: Whaich is stupid for reading a CF card. :\
my laptop has an SD slot, that makes it just so easy
that's why you have a bus-powered CF reader :)
alex_joni: Yeah, That's why I spent $7 on the PCMCIA>CF adapter. :)
I wonder why I got me a docking station for the cam
and never unpacked it
alex_joni: Will it recharge the batteries in the camera?
sure it can turn the Camera to an USB master, and I would be able to connect it to a printer
but why the fsck would I want that
Phydbleep: plugging the AC adapter charges the batteries
ah - the PhotoSmart series?
or something like that
4MP, 8x optical
pretty old too :)
yeah - it looks big for a small acmera :)
it's not that small
neither big enough
SWP: how about TP?
sorry - was AFK for a mo
well - starting at the machine, and working backwards to the planner...
we have a certain feature size / feedrate that we want to support
this implies (or is defined by) a max acecleration for the machine
not necessarely in m/min
also need to remember smthg like : 10000 segments / sec
so any feature has to be a certain size to be possible at a given feedrate
the number of segments/sec is determined by the feature size and feedrate, for any non-trivial moves
(ie, a single line split into many smaller segments)
it should be trivial to combine that type of thing
so now we're at the point where we need to decide how far ahead we need to look to get good planning
unfortunately, the lookahead increases as the feedrate increases, because the limitation is the machine acceleration
*then* we start talking about which algorithms to use to blend segments
It may be that the groundwork is already well understood and I missed it :)
I also think there's a conceptual problem with the output to the motor drivers being a velocity - that implies to me that there can be a large discontinuity in acceleration every servo cycle
(if the output were torwue or acceleration, then it would make more sense)
if you make it accel, then you'll have jerk
well - a change in velocity implies acceleration
and a change in accel implies jerk
The solution is to increase the servo rate until you are above the bandwidth of the system.
or feed the DAC o/p through a filter.
lemme get this straight
TP gets segments (lines / arcs) from the interp
he does his funky math on it (filters, blending, etc.)
then spits out a queue with small motion chunks
say one motion chunk is to keep velocity constant, and for how long
adn motion (RT) takes a chunk and runs it
skip "funky" "filters" and replace "blending" with "crude algorithm"
well.. was thinking about the overall concept
TP takes a series of lines & arcs
does some (limited) blending
and spits out a queue of way points for the servo loop to hit
based on change in direction?
(way point - current position) * constant = velocity command
or also change in speed?
I mean figuring out the waypoints
A typical line (or segment) as it is passed to TP -
end_x, end_y, end_z, velocty
the last end points are the start points for the current segment
TP looks at the velocity and the distance of the segment.
based on the max velocity & max accel
the calculated time of the move may be increased...
Once TP knows the length of time the current segment will take
it slices it up in to way points at the servo rate.
so not based on interp read velocity?
say you have F200 in the g-code
multiply that by the max override and use that as max_vel
that way you might get less waipoints, when not running at full speed
What's the SFM for cold rolled mild steel?
so now the servo loop has to take in to account an ever increasing error....
what error is that?
IF the servo loop was running in single shot mode, it might work....
although it would probably go tits up when you try to run two or more axis.
think about it - Three axis...
three servo loops
all running at different speeds
yup.. but you have one waypoint
for all of the axes
OK.... Now say Y is subject to an unusal loading that increases the following error
way point[n+1] now needs the ferr added on
now the actual way point is not the same as the planned way point.
it still needs to go to the waypoint
to the planned one
or it should imho
in which case, you can not use a single shot timer for the servo loop.
so you are back to periodic timings
* alex_joni_laptop finds it conforting that at least somebody gets his laughs
[21:29:18] <Phydbleep> http://www.sky.com/skynews/article/0,,91059-13355259,00.html
Sorry, This was just so awfully utterly ridiculous. :)
I hope paul doesn't think I was laughing at him. :)
don't think so..
we can always code up some clothoids
finally off work.
brb, eating dinner..
getting clear the deadline is near for an0n ;)
when he's at 25 h / day .. it's only a few days far away :D
alex_joni_laptop: oh, I was working on somthing else..
alex_joni_laptop: the racecar project..
although I am going to take half of tomorrow off..
I am going to tig some stainless..
and lack of sleep isnt too good when welding thin stuff :)
alex_joni_laptop: lend me a robot ;)
anonimasu: I saw a Fanuc for <$4k
I've seen it..
did you get anywhere with the discussion about TP?
not very far
anonimasu: I think i saw something about pre-crunching the #'s (non-RT).
but we might start some coding
Whee! The accelerometer samples are here.
* Phydbleep gets out a magnifying glass.
now.. stick a few in your pockets, then jump out the window
and tell us how it went
4mm X 4mm X <2mm
+/- 18g, 100mV/g when VCC = 5V..
hmm.. not sure you'll survive 18g
-4g is tricky
+9 is doable
I figure they should survive life as spin balancer parts. :)
* alex_joni_laptop goes to bed
too long day ;)
G'night AJ. :)
* Phydbleep looks to see how many of the 16 tiny (0.5mm square) pads on the back of this really need to be connected.
well was away a bit longer than I thought
oh I read back
heh - are we making any sense?
a comment about dac velocity or torque....
either one works fine...it's the nature of PID
most machines send torque commands
it's probably more the discontinuous nature of the control that has me going
ie, it's a discrete time control, operating on a continuous-time machine
it is discontinuous but not due to using torque or velocity
it is discontinuous because it is a trapeziodal planner
but as Paul pointed out, filtering and servo rate adjustments can fix that problem
no - it's discontinuous because the calculations are applied every n seconds, rather than continuously
it's fft vs. fourier
(more precisely, DFT vs. real fourier series)
Well imagine a velocity vs time trapezoid...ok?
sure - that's discontinuous also :)
now differentiate that
and it looks like?
yes - you have impulses
or step functions
and that's bad
heaviside functions yeah
it is bad
my point is that any curve following is effectively like a trapezoid, because the continuous curve is split into smaller line segments that are (obviously) non-collinear
a polygon yes
but that should be at the servo rate...very high
right - that gives the same problem as a trapezoid, but on a smaller scale
perhaps a couple kilohertz
the motor is an integrator
yep - that's where Paul's filtering comes in
so it's smooth
roght - or at least withing the limits of "non-jerkiness"
(sans typing errors)
that's why I wanted to start at the machine performance specs, and work backwards into the planner requirements
but you (and Paul) may have already done that, at least in your heads
well that needs to be a consensus i guess
yep - that's where I was leading yesterday with the question about max machine feedrate
perhaps a wiki page "NewTrajectoryPlanner" with thoughts and performance goals would be in order
i know what i need
I think it should be good enough for a light industrial router
It should be on a par with any modern control
the RT.user comms don't limit it too much
according to Paul that may be a real brick wall
well - that's what we need "real" specs for
if we can agree on a performance spec, and we can show that it's impossible with the current user<->RT comm method, then the conclusion is obvious for all of us
And I figure if one strives for a very good control....it will also be fine for hobby stuff.
but not the other way round...
it shouldn't be any worse than a crappy control :)
but possibly harder to configure
200 microsecond and better I would consider very good at this point
galil's cards are about 250
there will probably be a fair amount of phase jitter at that rate
the kmotion card that I am getting in is 90.
a DSP or FPGA would certainly make the jitter much lower, and probably can do a higher rate as well
90 seems pretty good.
how many axes
it's a kilobuck
I made a PID controller for a power supply that ran at a phase rate of 50 KHz
I am getting a freebie to eveluate
20 uS * 5 phases gave a 10 KHz update rate
free = good ;)
it uses emc interpreter
but they wrote a new TP
does it do the interpretation on the card?
it is not quite there I suspect...and they want some help
hence free boards.
They are doing non RT TP on the host and usb 2.0 flashing the dsp
what is the company name? (I just searched for KMotion, but google came up with irrelevant stuff)
that could be problematic of course
[22:55:09] <les> http://www.dynomotion.com/Help/
check out the iir filter stuff in the pid
filters are oh-so-pfast on a DSP - it's calculating the coefficients that's a bear
fast, not pfast
they generally take one cycle per element (so an 8-element filter takes 8 cycles, or 0.08 uS on this DSP)
See I really have a couple separate business problems...I have production jobs with my big router that run way too slow and...
you want to make an affordable, yet good, router to sell :0
I have a router product that needs a good low cost control
$699 quan ten for software, card, amps, and all ain't bad
well - having some embedded control is probably a good thing
but i'll bet it is not quite ready for prime time yet
but it's not the greatest if the user has to re-flash the unit every time they make a program change
(G-code program change that is)
I don't know...but will find out
the stuff on that page looks pretty neat
that's all I know at this point other that a long talk on the phone
They seemed reassured when I said the 274 interpreter part of emc was very good
They used that...and tossed the rest
said they could not figure it out
They wrote an SQ type planner
the three biquad iir filters in the pidff are very good
can put zeros on machine resonance poles
yeah - good on a DSP, but nearly impossible on a (30x faster) x86 CPU
I think so
emc has one low pass
called SMOOTH_D or something
is that a low pass filter, or slew rate limiting?
it is a fir filter
the 4-point smoother in cubic.c?
I forgot where it is though...or even if it is being used
It is just a realization that differentiators blow up at high freq
difference equations might not...but they still can get big.
yeah - integrators need to be clamped
itemc has anti windup
anyway I am wondering how my work time will be going...
hmmm - too bad their software only seems to work on Windows
I want a couple or so days a week of engineering....and some production...and some extra time
extra time is good
But Devilbiss is sending a bunch of competitor's electrostatic guns next day air...
I have to design a better spray gun system
that sounds - um - fun. yeah - that's it, fun :)
Think they'll let me work on it two days a week?
all customers are patient, caring individuals.
they really want you to be happy
* Phydbleep wonders what SWPadnos has been smoking.
I am going to shock some people with these 100 kV guns
I don't even know what I will do yet
anyway I'll see how much extra time I get
if I switch from one job to another too fast I get confused
how about one week spray gun.....next week cnc?
back and forth
OK by me - but you mnay need a full board vote to get off the hook so easily :)
hey - this is *volunteer* - the most demanding type of work there is
* Phydbleep is too bored to vote and would rather watch les wriggle. :)
I have a fellowship with the parent company.....but...they still want inovation on que
Aw they are prob doing gant charts right now
les: What about 10:00-12:00 sprayer, 12:00-13:00 Lunch, 13:00-15:00 CNC, 15:00-10:00 relax/chase women? :)
sounds like a plan
pity I am out in the woods
oh there are women...
but they have no teeth.
1500-15:45 - travel to town, 1545-09:15 relax/chase women , 0915-10:00 travel back to work
So.. "Hey baby watch it with the teeth!" is out of the evenings conversation. :)
10 per square mile avg pop density in this county
no...pickup line is:
Hi. Nice tooth!
"Hey Y'all - ever seen this?"
SWPadnos: Yeah, On tape on ebay last week. :)
I am not quite accurate really...many have a full set of teeth.
But they come out at night.
les: Sitting in a glas of water?
They ALL like Paul though
heh - it's the accent :)
Bloody Ell. :)
that's haitch - ell
Hey Steve. How you doing this evening.
still trying to probe a camera with microscopic contacts
Using EMC to guide the probes I presume.
if only :)
SWPadnos: What are you trying to do? Trip the shutter or read the action?
cause 60 cameras to capture at the same time (within +-50 uS or so)
You need some of jeff's nanotech.
Josh Hall from devFest
SWPadnos: Matched length fiber lines and tuned circuits?
that's child abuse!
ah - indeed. too bad it isn't ready yet :)
Nanorex -- sorry.
I hope the qt book lands tomorrow :)
Don't each of these cameras have a free running pic.
yes, but that would be too low resolution, and too coarse timing
the free run is usually at 15-30 fps
(or about 1000 times too variable)
So how do you get round that?
well - on a camera with a mechanical shutter, you take over the operation of the shutter, and release it a programmed time after trigger
I was thinking of the processor that reads the button to take the picture.
that also gives you shutter speed control, because you can release the second curtain a programmed time later
SWPadnos: What kind of cameras are thesse?
Fuji FinePix E550
that microcontroller runs its own interrupt cycle, then does some stuff before triggering the capture
SWPadnos: Standard remote release with a solenoid?
it's variable by around 50 mS at the moment
G'night anonimasu :)
SWPadnos: What about a rack of film cameras?
we already have that
[23:40:03] <SWPadnos> http://www.bigfreeze.com
SWPadnos: Flying spot camera! :)
um - yeah
SWPadnos: Are you familiar with the concept?
the ones that hang on 4 wires?
No, The high-speed scanned light dot with 1 detector.
ah - like the good film scanners
they use a CRT with a spot of varying size to get good variable resolution scans
I haven't seen any with a single detector, but I have seen the multi-detector IR scopes on the M1 tank
The system I'm thinking of uses a laser, piezo mirrors and a spread set of detectors to generate a semi-holographic image.
Hi Paul. :)
Hey, quit jumping on me as soon as I appear
fine - be that way
No more tea for SWPadnos ;O
fine - be that way
So.... Where did we get to ?
I think Les and I agreed that a wiki page with expected performance specs would be a good thing
then we can work backwards into what implementations can work
(assuming you're talking about TP)
Say Paul. I don't see a config-2.6.10 will 2.6.9 work?
rayh: Sure - Just replace 10 with 9 and you'll be OK
no rule to make target.
did you follow all the instructions on the wiki page ?
Yes I tried.
all the installs worked. Said what was there was the latest.
can you tell me what "uname -a" returns ?
2.6.9-adeos fri jan28 20:06:40 GMT
Something is borked. This is the box I ran at devFest.
Will reinstall it all.
OK... Now "ls /usr/src/kernel-sources-2.6.9-adeos/.config"
no such file or dir
OK... Now "ls /usr/src/kernel-source-2.6.9-adeos/.config"
I did change /boot/config* from 9 to 10