good night all
03cradek 07HEAD * 10emc2/src/emc/motion/control.c: basic overrun detection
* cradek hides from jmkasunich
cradek: question re emc2... Has anyone suggested adding functionality that would support include files in gcode files?
yes I think that's come up quite a few times
especially with subroutines I think it seems useful.
yes another magic comment might be a good way to do it
yes... I have been writing a bunch of oword subroutines and I would like to include them in different programs
I've done some of that too - I put them in useful-subroutines.ngc to share
so far I only managed to write 2 infinite loops!
it's pretty easy to screw up
yes... the debugging is a little tough.... some kind of printf or a modified msg cmd would help
yes that has also come up
you can use M101 Px Qx to show two values but I think that's the only way currently
I didnt think I would be the first.... but the oword stuff is very useful..... most of the cp1 stuff can be redone as gcode now
I think we all agree includes and prints would be nice - all we need is someone to do it now
hint hint... say no more...
I see Jeff has been doing a bunch of work on image to gcode.... I havent tried it out yet, but it looks very promising
yes it sure does
I have been working on some hardware servo drivers.... the proto is alive and has spent a week or trying to let the smoke out...
[01:49:23] <LawrenceG> http://members.shaw.ca/swstuff/dspic-servo.html
you're smart to use quadrature instead of step/dir
but why not use the pid in emc?
I am working on building a dedicated pcb mill and I want to use small servos
this was easier... less communication and hardware issues putting the servo loop in a pic.... used a simplified version of the servo loop code from emc2
my little lathe is like that, servo with a very simple driver and loop closed in emc
do you plan to allow it to report ferror to emc somehow? just enough to estop?
(I like that it stops when I crash into something...)
yea... that is my next project... getting the shoptask lathe running.... I should just have to get an encoder on the chuck
yes... there is an error output that can be tied to emc
so you will have the biggest benefit of closing the loop in emc
how fast can you count the quadrature?
at least 250khz.... its done in hardware
the pic has a 16 bit encoder interface
cmds from pc are done using interrupt on change....
pid loop takes about 200us to execute,... I am currently running a 1ms servo loop, but that could be stepped up quite a bit
I had the servo doing a yoyo type affair running back and forth for several days to see if it lost any counts on either the encoder of the pc interface and as far as I could tell it was flawless
how do you mean interrupt on change?
the 2 bits of quadrature drive from the pc (step type 2) feed into pins on the pic that cause an interrupt anytime they change... this isr then runs a state machine that either incr, decr or flags an error on the internal commanded position
I am impressed with those dspic chips.... I am not even using the dsp part of the chip... writing in C and using floating point is no problem (as in the PID loop)
* jmkasunich looks at cradek's overrun code
it sucks but it might be good enough
davidf's problems encouraged me to do it
you could probably set CYCLE_HISTORY to 1 and have it work reasonably well
I like seeing a bit of the history though, it lets you see what's normal and what's anomolous better
[1723626.972425] In recent history there were
[1723626.972428] 1977456, 1982217, 1977790, 1980970, and 1979305
[1723626.972430] elapsed clocks between calls to the motion controller.
[1723626.972432] This time, there were 3752640 which is so anomolously
yeah, that is nice
this is one of my runs where I started glxgears on my nvidia machine
you should export this_run as a hal pin
then you can scope it
that's a clever idea
hal param actually, no need to connect anything to it
make sure it gets updated even after the messages are suppressed
I'll do that now
heh, and another one that counts overruns
ideally each thread could do this, especially the base thread (if there is one)
but I figured something is better than nothing, and this code runs on all configs
"which is so anomolously"?
my problem (perfection enemy good enough) is that I wanted to do it on a per thread bases
* cradek kicks jepler
err, hi jepler
but the hal params need to be owned by some component, and generic threads don't qualify
jmkasunich: I knew you wanted to figure out the best way to do it, so I did something stupid instead for now
not stupid anyway
jepler: oh there's more message
I don't have a feel for whether if(this_run > 1.2 * cycles[i]) is sane or not
for the servo thread that's probably not bad
for the base thread might want to go more like 1.5 or so
if we get too many false alarms we can change it
(if we can tell what's a false alarm and what isn't)
if the 5 "normal" values range from 100000 to 119000, and the bad one is 121000, its a false alarm ;-)
I was just having trouble understanding what the message meant
I think I get it now
[1723626.972435] large that it probably signifies a problem with your
[1723626.972440] realtime configuration. For the rest of this run of
[1723626.972442] EMC, this message will be suppressed.
it is a bit wordy
it sure is
cradek: maybe you can get w--- d-- to write a longer message
w--- d-- ?
somebody from work?
but explanation when faced with a complex problem is good
the error emc presents is simpler
'Unexpected realtime delay; check dmesg for details.'
better wording welcome
someone changed _some_ of the pin exports in motion.c to use jepler's newer syntax
oh, pins were changed, params not
I hope 'someone' wasn't me
but it probably was
did you implement the new hal_pin_foo_newf() stuff for params too, or just pins?
* jmkasunich could just go look, but I'm lazy
jmkasunich: I don't remember
are there "Sam's club" down in the states?
Is there Costco as well?
jmkasunich: yes, for pins and params
I just tried out their photo club thing... [sam's]... pretty painless...
for prints... lets see how my prints come out... at $0.18CDN/each it isn't expensive. :)
lerp? lurch? lunge? leap? jump? jumped? raped?
jeplerp => nil
jepler > nil > cradek > null ?
it was a lisp joke
nil = 0. null = nothing. so I guess cradek is btween 0 and infinity.
maybe not very funny
damn. abs. kills.
worked them out. stupid friend made me laugh... and now I'm hurting
brb. windows wants a REBOOT again.
cradek: you lie!
report_delay = 0 doesn't just turn off reporting, it turns off checking
well until you got all fancypants about it, that was the right thing for it to do
a much better check would be to calculate the mean and standard deviation of the saved samples, and check to see if the current one is more than a couple deviations from the mean
* jmkasunich shoots cradek for mentioning standard deviation
(you are right of course, but I ain't going there)
I probably won't either, but I think that's exactly the right test to use
I wonder how complex it is to calc the std deviation of a continuing stream of numbers?
oh, its just RMS of variation from the mean
mean on a window can be done in constant time
but std deviation of a window takes time proportional to the window length
screw it, I'm just gonna use the last 5
because those are the ones we print
so you need sqrt to do stddev
technically (for this you could just square the most recent value, then compare square of recent to square of std dev
but I'm more concerned about the summation taking time
if I was gonna do mean and std dev, I'd be upping the sample size to a hundred or so
don't y'all love windows...
where a reboot solves most problems.
A-L-P-H-A: don't use it...
cradek... well... if I can get ubuntu to run ALL three of my monitors... I'd be in there with white on rice.
choose your poison, huh
cradek: I just managed to convince myself that std dev is _not_ the proper criteria ;-)
ok what is?
suppose mean is 100000 and std dev is 80000 - that doesn't mean that the threshold should be 260000
it means you have a crappy system
well that's true I guess
anyone got an idea for an engraving? I'm looking to make something on a 4"x4"x1/4" plexiglass... it's a demo piece, for a plastics company that wants to do engraved plexi signs.
small std dev is good, large is bad
it depends what question you're asking
probably looking for image that's 3x3", so I have a 1/2" border.
2 times mean is definitely an overrun
if you want to know "is this value quantifiably extreme compared to historical values" that's stddev
going to light it up from a edge, so that stuff that's engraved lights up.
but if the system has a lot of variation, that is bad... it shouldn't raise the level that is considered "very bad"
A-L-P-H-A: use a V shaped tool
cradek, drill bit?
use jepler's dot-cat
(with permission of course)
yeah the dot-cat is cool
got a photo fo the dot-cat?
I'll ask him, of course.
its on his website
unpythonic.net I think?
[03:23:16] <cradek> http://emergent.unpy.net/files/default/marielogo.jpg
cradek: C++ has corrupted you
now that IS cool.
mixing declarattions and code.... for shame
A-L-P-H-A: that's sidelit with red LEDs
Kernigan and Ritchie would be so sad
jmkasunich: it's C99, not C++
yeah, I was thinking of doing that... sidelit. red LEDs are cheap... but that is freak'n COOL.
99 was 7 years ago!
(I won't be offended if you change it)
cradek, that's sooo last millineum
I learned C 27 years ago!
jmkasunich, when exactly?
(well, 25 actually)
jmkasunich, month wise.
I was in kindergarten 27 years ago
I would have been 2.5months old, 27 years ago. hahaha
I'm surrounded by youts
A-L-P-H-A: the algorithm to decide where to put the dots is what makes the dot-cat interesting
cradek, yea, it is... that's really freak'n cool.
* cradek gives the old guy some more '
jmkasunich, don't feel bad... you probably have more money than us... [you definitely have more money than me]
I wonder where the software for dot-cat is
less hair I bet
jmkasunich: I'm sure I'm catching right up with you
we both have the same problem - the hair is reacting to gravity
moving from top of head to bottom of head
I'm asian... I don't have hairloss in my family... so I probably do have more hair on my head... but I'm pretty hairless on my arms... and I only grow whiskers, I couldn't grow a beard if my life depended on it...
you could have half my beard and I'd still have plenty
[03:28:33] <jmkasunich> http://home.att.net/~jmkasunich/Pics/cncworkshopemc.JPG
the emc bunch at fest
hey! the hippy is SWPadnos right?
definitly an abundance of facial hair
damn... I'd be like 1/2 the age of most there.
the beardess one
heh... SWPadnos looks stoned in that photo.
there was a huge range of ages
well, I'd be 26 at the time of that photo.
and GROSSS!!!! Someone had McD.
who's the big guy with the overlarge shirt that has no stretch anymore? [3rd from the left]
3rd from left is jmk
that photo needs a name tag...
3rd from left is me (in the dark green jacket)
but his shirt looks fine to me...?
nono... jmk, is the thick beard guy right?
the guy with the newbalance shoes.
which thick beard guy? ;-)
oh I see how you're counting
there's a guy I'm counting, that has his back turned.
the white hair guy is matt shaver
I missed the leftmost backwards guy
who's the uncool guy, with his back turned?
from the left (not counting seated backwards guy)
we'll call him "Mysteriouso"
do not forget to give Tux shoutout. :)
not counting the matt shaver and mystery-guy (2nd from right) we're all the same height
Steve Stallings, Matt Shaver, JMK, Jepler, TUX, Ray Henry, Jon Elson, SWPadnos, Dave Engvalls (daveE), unknown, Cradek
80% facial hair, 80% glasses
not a random sample of the population for sure
I bet 80% glasses isn't too odd
(thanks, intelligent design)
oops did I say that?
but 3/11 people being obese is a standard sample of North America (English speaking America)
thanks evolution (that no longer selects for good vision thanks to glasses)
I think the others are just vain and were contacts, or has laser surgery.
I used to wear contacts, but stopped because they're a pain
I never started
they work much better than glasses
OH! jepler... why are you so silly... SANDLES while working with machinary?? what about your toes!!!
not at stopping metal chips and flying solder blobs
he doesn't run the machine, he codes!
A-L-P-H-A: did you see the link http://emergent.unpy.net/stippler
jmk is trendy... wearing 'broken in' jeans. :)
oh STIPPLER... :) thanks.
I'd just be the 'hawt azn guy' with nice hair, if I were in the photo. hah
those are my accomplishment pants
"the one with hair"
spelling mistake. "inptut" on that stippler page. :)
hey we didn't note 100% male ... certainly not representative of the general population
jepler has hair too, he's just hiding it
yeah he has lots of hair
well, when you go to CNC workshop, 100% make pretty much goes without saying
SWPadnos, has hair... and lots of it.
I used to have more than both of them combined
'unknown' guy kind looks like a mole man...
photos are fun. :)
look at how much time we killed talking about it? :)
I still have it on my drivers license even
OMG... you should have seen my photo for my university ID.
is it may again yet? that was fun.
it was from grade 11... I looked like I was 14.
it was sad, when I'm using that ID, that didn't look a thing like me. when I was like 21.
now that is super cool.
he made a few of these with different images - at least one was a gift for someone iirc
as I recall?
if I remember correctly
[03:44:52] <cradek> http://www.oberlin.edu/math/faculty/bosch/tspart-page.html
this is messed.
another thing that would be very cool to engrave and light
if I order DSL and sign up for 3 years... I get a DELL 19" monitor.
cradek: did you post that link recently?
I think jepler did
I mean I know he found it, but I don't remember what channel I saw him paste it
that's another one where both the algorithm is interesting and the result is artistic
I know I saw that pic recently, either the link was here, or I randomly browsed to the same page
any other cool links?
we should have like an EMC del.icio.us page. :)
those are the only two things I can think of that would be nice for envgraving
both are a lot of programming to do well
looks like the tsp guy doesn't have code, but tsp algorithms are pretty easy to find
that isn't gcode exports the TSP art?
dots it is.
yeah if you want to engrave the tsp stuff you'll have some programming to do, jepler and I haven't done it yet :-)
but it would be very easy to convert the dot-cat into the tsp style art
it was already tsp optimized (or it would have taken a year to engrave the dots)
goodnight guys, I better go
jmkasunich: are you going to check something in still tonight?
too much talking, not enough coding
ok, I'm anxious to have a look at it tomorrow then
think its done, gotta test
we haven't had a gabfest for a while
I think I'm gonna nap now. ciao guys. thanks for the info.
cradek: you can induce overruns on your machine?
this seems to work, if I commit right now can you test before sleep?
03jmkasunich 07HEAD * 10emc2/src/emc/motion/ (control.c mot_priv.h motion.c): make servo thread period and overrun count hal paramaters so they can be scoped
you can just halmeter them
oops, there's a bug
(it will blow up dmesg on the first overrun)
03jmkasunich 07HEAD * 10emc2/src/emc/motion/control.c: fix a bug that would flood the system log
ok, now try it
you can halmeter "overruns" and "last-period" to see if it works
(or scope em, if you want)
I know last-period works, dunno about overruns and the printing logic (which I tweaked)
overruns is a read/write param, you can reset it to zero to re-enable the printing of the error message
well, the first attempt wasn't so cool
it would print whenver overruns == 1
iow, 1000 times a second from the time of the first error until another one happens
[04:09:30] <cradek> http://timeguy.com/cradek-files/emc/overruns.png
wow, you really wacked it
did it print only once?
one error from tkemc and one message in the log
there's a little problem with nvidia, wouldn't you say
just a little
66 overruns in one second
I sure won't be running a machine on this box
just don't run glxgears
I'm anxious to try this on my good machine
I bet even axis will mess it up sometimes
whats the scaling on the red trace?
are the overruns just a little over, or lots over
the baseline is at the bottom
so the overruns are about twice the normal number
so 2.5 million most of the time
normal is 2e6, most of the spikes are 4e6+
some are only 3e6
so 20% over is fine for detecting them
I notice some "grass" on the basline level on the left side... how tall is that?
seems like about 5% or so
nominal 1.98 grass 2.17
one major division should be 20% if I'd reading it right
that's with one glxgears running
I wonder if 20% is cutting it too close?
don't trust it as normal
we should try on our reliable machines
I thought glxgears started in the middle of the screen?
no that's when I started a second one
that made it REALLY bad
but even just one running will cause kern/latency test overruns
let's collect more data before worrying about what magic number to choose
well, 9% of the servo thread is probably 100% or more of the base thread
I'm firing up scope now, to see what this machine gives as normal
I better get to bed
I'll try it on max (very trusted machine) tomorrow and report back
hmm, pretty tight distribution here
nominal 1.64 million
99% of the fuzz is +/- 3000, worst peaks I've seen so far about +/- 15000
just found a scope bug
cursor off by one?
when you use a vertical offset, the trigger level slider ignores it
I offset the trace by 1.64 million, then upped the gain to 10K/div
yeah I never thought I understood how that was supposed to work
trigger level should be screen relative
(so I avoided using it)
so it should take into account offset and scaling
offset is simply subtracted from the sample before any other processing is done
to late to mess with it tonight
too late too
ValarQ_ is now known as ValarQ
awake again. so sad.
03jepler 07HEAD * 10emc2/src/emc/usr_intf/axis/scripts/axis.py: button3 and ctrl+button1 should zoom in the same way
wth... jymmm made his nick private.
hi jeff, got some internet access at the hotel ;)
nice of you to join us
but no-one knew of that
not even the guys from the hotel
anyways, I saw you announced the move of the debs
I kinda left abrupt the other day.. ran out of power
yes -- haven'theard one way or the other if it has helped people
ok, I was thinking a bit about update
and was wondering if we couldn't release one of the future emc2 packets which does a bit of sed in the postinst script
so basicly when we'll have 2.0.4 or even 2.1.0, we'll have a small postinst hack to search /etc/apt/sources.list and replace the old repo with the new one
alex_joni, I think there's a way of updating repositories anyway - the breezy->dapper update did that
SWPadnos: yeah, but that's for distupgrades
I'll let one of you guys dig into that
jepler: ty ;)
* alex_joni will sign up to do it
yeah - go for it ;)
on saturday, when I'm back home ;)
anyways.. here are some nice goodies: http://www.screenkeys.com/screenkeys/s1.html
I saw those at NAB this year - they're pretty cool
expensive as hell though
jepler: forgot to say thanks for the announcement: http://ziza.ru/other/082006/17/thks/thks.swf
alex_joni: that's very silly
I know .. but I couldn't resist
two days later, they're finally done ;)
who will ever know ?
not me, I assure you
but even that would be preferable to getting a Windows 98SE system to properly utilize a USB keyboard
correction: trying to get a Win98SE system to properly utilize a USB keyboard
hmm.. saw a nice bending machine today (CNC)
to tubes.. guess what OS?
oh, windows CD?
XP Pro :(
on startup it complained about a missing RT deadline (100usec overrun over the normal 630usec)
so it's probably patched, but I couldn't figure out with what
but it had fiber optics talking SERCOS to the servo drives (big AC drives & motors), so that part was nice
ok guys.. I'm off.. talk to you some other time
jepler: you there?
* ValarQ is almost here
We're sorry, the person you're trying to reach is dealing with Windows 98SE. Please leave a message, and he'll get back to you if he doesn't commit suicide first. Thank you.
why would one have to do anything with a 9x system?
(except for the COMMERCIAL CNC lathe at my old school, that ran 98se...)
my wife's computer is still 98se, and it died. I would like to keep all of her old email and graduate coursework
so I'm fighting with a nearly identical motherboard, which sadly has no PS/2 style keyboard / mouse ports - it's USB only
which of course works so well in 98SE
I may just install Ubuntu, but then she'd lose access to things like Corel Draw
corel doesn't like wine?
yeah, and even better, since it's the USB drivers that are a problem, I can't transfer drivers that are larger than a floppy
the CD-ROM doesn't work in safe mode (though the keyboard and mouse do, since the BIOS is left in control)
I'm not sure about Corel/wine - I've never gotten wine to work satisfactorily on any Linux machine
nothing like old, legacy systems...
yeah - tell me about it
if I could be sure that I can migrate the Mozilla/Windows mail to Thunderbird/Linux, I'd jump that way faster
luckily, most of her coursework was done in OpenOffice
oh joy - reboot #73
and of course, once it gets past the USB driver detection, the keyboard stops working. aaaaaaaarrrrggggghhhhhhh
SWPadnos: no ps2 port for a normal keyboard?
it's the "legacy free" Abit AT7Max
that's a terrible match for windows 98
works fine with Linux or Win2k
Lerneaen_Hydra: I'm back from lunch now
probably on a new install of 98se as well
how goes the image-to-gcode app?
ubuntu it is then
Lerneaen_Hydra: it needs desparately to be tested on a real machine
I see... I don't have a mill at the moment so I won't be able to test it I'm afriad
Lerneaen_Hydra: there's an organizational problem that makes it hard to specify different feed rates for different segments, and when doing up/down milling the place to split needs to be chosen better
how hard is it to apply differing feedrates to different lines?
set_feed() and cut() are two different methods on the object which actually writes the gcode
cut() actually puts the line into a structure and later performs the simplification algorithm on it
set_feed() just writes an F-word to the output
so if you try to just write set_feed(); cut(); set_feed(); cut() you either get all the F-s bunched before any of the G1s, or you lose the benefit of the simplification algorithm because it can't work across F-s
so I have to reorganize it so that when the G1s are actually being output (after simplification) some function can be called to choose the F for each segment actually being output
I'm not sure if that explanation makes sense when you're not familiar with the code
what's the reasoning behind using different F words? (other than separating plunge cuts from mill cuts)
I'll let Lerneaen_Hydra answer that .. I'm (considering) implementing it at his suggestion
I can see the separation in the case of plunge only vs. any other move, but varying the feed based on the direction of cut doesn't make a lot of sense to me
I'm back now
* Lerneaen_Hydra reads
SWPadnos: the reason for limiting plunge feed is becuase endmills aren't very good at cutting material when plunging, so if you have a 45 degree cut then should you have plunge feed or plane feed? it would seem to me that an average of them would be best
ignoring arcs for a moment, you could definitely adjust the feed for every segment depending on its angle from Z
yeah and that's what I intend(ed) to implement, before I realized that the "obvious" way to implement it wouldn't work
arcs should (IMO) use the speed with the lowest speed, in or out
if that makes any sense
that is to say, it shoudl use the feed of the g1 attached to its' end, and have the feed of the slowest g1 attached to it
Lerneaen_Hydra, I figured that plunge and mill should be different, but averaging for off-angle cuts probably isn't the answer
you end up with varying finish in that case
you'll get that even if you have a hard-cut transition between plunge and plane
ideally, I think the feed and depth of cut would be chosen by the program for roughing, and would remain constant for finish passes
what about during the roughing pass?
how is feed defined for plunge/plane feed then?
roughing is an unimplemented feature, as far as I can tell
one way it could work is to have the user enter a material removal rate (cubic inches/minute or similar)
well, if one were to assume its existance
that rate will be dependent on the spindle power, material, cutter composition, coatings, coolant ... (it could be calculated by the program, given enough data, but it's a PITA)
once you have that, and the expected cutting speed (SFM), cutter diameter, and desired chipload, you can calculate spindle speed, feedrate, and depth of cut automatically
so a set of "waterline" roughing passes would be done first, at the "ideal" material removal rate
at that point, there's not much need to change the feedrate based on plunge/plane moves
you could still have something that does separate plunge vs "finishing" moves, but I'd say that at that point, you don't need to vary the feedrate based on angle
that's still a lot more calculation than just defining a plunge and plane rate ;)
sure, but I'm not sure of the usefulness of the plunge/plane thing :)
probably a PITA to get the calc to work correctly WRT material, sharpness, and so on
that's why I'd just have the user enter a number for that
there are some tables on the net that tell you the optimum removal rate for various materials (per HP ot spindle power, usually)
in the machining handbook I have here the recomended plunge feedrate is 1/3 - 1/4 of the planing feedrate
so there is (IMO) reason to feed differently depending on plunge/plane
right - the chips don't clear as fast with a plunge move
so in the end you will need different feedrates for plunge/plane
but a diagonal move doesn't have that problem, and may leave undesirable finish variations
(if the speed is varied)
I see what you mean
so a hard limit at some certain angle may be best?
say around 70-80 degrees?
could be (also probably settable)
AFAICT my cam app has some hard limit angle that it uses for that
how ingrained is the raster image base?
is it some form of raster -> 3d model conversion
or are all things done based on pixel brightness
the idea for this type of thing is engraving images, not making parts from CAD
the program right now assumes it's milling within a rectangular area, that it can do a good job by looking at the height specified at discrete regularly-spaced locations, and that it can find the height of any location. You could change it to use a 3D model instead of an image as input.
it would be funny to render an STL, then use image-to-gcode to mill it ;)
yeah, that's what I was thinking. with the high level of CAM in the app now it would be nice to be able to import real 3d models, or at least high-res height-maps without too much CPU penalty
jepler: ooh, nice
well, cradek's unreleased 'toolpath' does basically that: take a polygonal model, render it to a z-buffer, and use that to compute the milling path. image-to-gcode adopts some of its methods (primarily, the tool shape compensation/gouging). http://unpy.net/jepler/toolpath.png
oh, I see
with this method, the effort increases approximately according to the cube of the image width (I think)
hmmm - why the cube?
(I suppose I should read the code before asking that)
the cube of the image width?
shouldn't the area determine the calculations done?
at each point it computes max(tool_shape + part_of_model_shape). tool_shape becomes a larger matrix when more pixels fit "under" a circle the diameter of the tool
so that's an n-squared operation
and you repeat it at each pixel location across a row or column
so you don't want to do stuff bigger than 1k by 1k pixels?
depends how patient you are
I usually use a 400x400 image while testing, though I turn up the spacing between rows
I think the tool_shape is typically a 45x45 matrix, but I'm not sure
what do you mean by "max(tool_shape + part_of_model_shape)"
SWPadnos: it does the by-element addition of matrices and then finds the maximum element
hmmm - ok
most tools will be either falt bottomed, round, or have an angle (possibly mostly flat and angled at the edges)
it seems that the max calculation could be similified considering those restrictions
it would be good to have max calc open though
with a bitmap for custom tools
if you know that shape and so on
sure - that's the most generic form
not very needed though, might be nice
now in toolpath the tool shape is programmed as a math expression so no matter what pass resolution you want, the tool matrix can be easily filled
a bitmap is going to not have that property
right, but the underlying comparison is still done on a "point-by-point" basis, though the tool points can be calculated to be the same resolution
as the bitmap
I agree there are only a few tool shapes (you can currently choose 45 degree and 60 degree vee, flat, and ball-end tools) but I don't see how you can find the correct depth to cut to without doing the full max(tool+model) calculation at each location
me either. I was thinking that ther emay be a more efficient way of getting the max though
but I don't know what it is
even if you can save some results from the previous max calculation and use that (since it covered all but one row of the current scan) you don't reduce the actual complexity
sure - you'd have to offset each grid item, instead of just racalculating it (which is the same amount of work, memory caching issues notwithstanding)
seems like you ought to be able to reduce it to n2 but I don't see how
it just "seems like there should be a better way", but as I said, I don't know what the better way is
yep I agree
the big payoff would be to use modern opengl hardware (except for the way you can't run any of that and emc at the same time)
render the model to the framebuffer then render the tool texture tiled over the whole model
heh - that is a problem :)
then repeat moving the tool origin to each of N*N locations
now you have the data for all the points on the model
same complexity, only several thousand times faster, so we don't care
I don't understand "render the tool texture tiled over the whole model"
use the tool depth map as a texture, and tile it over the entire source image
do that for N*N offsets, where N is the number of pixels wide the tooltip height map is
I have now a working emcprobe
Hello again; network dropout;.
This nickname is owned by someone else
If this is your nickname, type /msg NickServ IDENTIFY <password>