config coming up
[00:09:34] <jmkasunich> http://pastebin.ca/340749
I believe this matches the code
I see no need for D4 at all
actually, it doesn't perfectly match the code, but I'm gonna change the code
D2 isn't in the code, but is usefull for generating a model
there are a couple other values not used for the kins but usefull for the model
like how much travel on the vertical slide
oops, I forgot joint 3
(which isn't used for machining, since its parallel to the tool
what's joint 3 ?
the end effector can turn on its axis
used for pic-n-place robots to orient the part
not used for machineing, no need to orient a round endmill
or a plasma torch
unless it's tilted 45° for beveling :P
heh, its implemented wrong in the kins
the c angle isn't just joint3, its the sum of all three joints
not that it matters for us
this is not good.. I see that it uses world->c
whats wrong with that?
hmm.. think I'm not sure :D
if we have that on trivkins, it doesn't work without enabling a & b aswell
but here it might work..
I really don't like the use of A for distances
A should be angle
I'm changing them, unless you say not to
jmkasunich: I think I'll head to bed..
getting late here :()
just about to commit the rewritten kins, and start on the model
I'll read back in the morning..
it will be a few hours
(till the model is done)
I'll wait that long (on the rewritten kins)
the scara kins seem to be working OK
I thought you were going to bed ;-)
how do you do sqrt() in python?
might have to "import math"
from math import sqrt print sqrt( 49 )
good night all
* alex_joni heads to bed
jepler: you around?
had some questions about scaling the opengl stuff
jmkasunich: I'm here for a moment at least
for the puma, I treated length units (rather arbitrarily) as meters, and chose numbers that kind of gave a smallish to typical machine
scarakins has defaults that are in mm
so the initial image will be huge
(coords are hundreds of units, instead of fractions to single digit integers)
as you may have discovered already, "distance" gives the initial distance from the camera to the origin
oh, is that what the distance parameter is for model?
so I can pick that based on the model dimensions
there is also "self.near" and "self.far"
probably you need to arrange to increase "far" as well -- it defaults to 1000
do I need to set those?
where would I do that?
seems like maybe the call to main() should accept those params?
yes, a new param to main, and then main assigns it just like distance
I might go for convenience and have on arg called size
def main(model, distance=10, far=1000): ...
... t.far = far ...
distance = 5x size, near = 2.5x, far =7.5x
actually yo uwant "near" to be a small number
near and far are measured from the camera position?
nothing further than "near" or farther than "far" are visible
so if size is 2 meters, then the camera will be 10 meters away, and everything between 5 and 15 meters from the camera will be visible
which would certiainly include all of a model whose "size" is about 2 meters
yes -- but if you "zoom in" to be just 1 meter from some part of the machine, then you won't actually see it
it'll be clipped because it's now closer to the camera than a "near" of 5 meters
hmm - does the zoom mouse function move the camera, or just tighten the field of view?
I guess you answered that
it moves the camera in space
ok, then near needs to be "small"
is zero OK?
I'd suggest leaving 'near' unchanged no matter what, until that causes trouble
do you know what the default is?
zero is not permitted
I'll leave it alone
I saw that you added sphere to your lib
yes I went ahead and did that
I'm gonna add a Sphere primitive then
I'm a little confused - when I call gluSphere, am I calling the lib, or am I calling you and then you call the lib?
this page explains why near can't be zero: http://pyopengl.sourceforge.net/documentation/manual/gluPerspective.3G.html
jmkasunich: Python can't directly call general functions written in C or C++. for each opengl function that python uses, there's a wrapper function defined
for things that are in mm, 0.1 is not going to be a good value, much lost precision
ok, you added the wrapper
if I run into trouble, I might make near = 0.01 * size
probably you want more like 1/1000 or 1/10000 as big
the defaults are 1000 : .1 and that has worked OK in axis so far
I do like the idea of getting far and distance from a "size", and I'm warming to the idea of getting "near" from it too
is near also the granularity of the Z buffer? I would think that the buffer granularity = ( far - near ) / 2^number-of-bits
I don't think they're distributed linearly for perspective projections
actually I think I read something in the GL docs about the Z buffer being logarithmic - better resolution close up and worse far away, so there is probably no single granularity number
geez you'd think I would have tested gluSphere before committing it
but it's actually all a part of my plan -- now jmkasunich is a certified python hacker, and can no longer say he doesn't understand it
he even writes extension modules
edits, not writes
I've yet to start with a blank page
I was having Z resolution issues (things would become transparent as I zoomed)
so I did the size thing for distance, near, and far
seems to work
got two of 5 major chunks of the scara done
tool, and the vertical arm, joints 2 and 3
the model you mean?
I'm making it parametric
you enter the machine dims (length of arms, etc) and it calcs the rest
"enter" via the commandline, ultimately?
"enter" means "edit into the py file" at the momnet
or some other way?
I don't know how to do IO in py
f = open("filename")
l = f.readline() # get one line with trailing \n
s/I don't know how/don't want to spend the time/
m = f.readlines() # get whole file as list of lines
here's what I've got now:
[02:57:34] <jmkasunich> http://pastebin.ca/340877
(for the parameters)
ideally, both the kins file and the model would get the data from the same place in the config
loadusr scaragui --d1=[GEOMETRY]d1 --d2=[GEOMETRY]d2 ...
and use the same items when doing loadrt scarakins or setp scarakins.
I'll happily write that if you want to leave it for me
I was just about to ask...
not useful, except to show the XML format for specifying the machine
I think I like writing it in python better
cradek made me realize something yesterday
because I always used compiled langages, the idea of letting a user write something in the actual programming language never occurred to me
py with our primitives and transforms isn't trivial to use, but its not much more difficult than something like POVray's language
which I was seriously considering as a format
if I had taken that path, I'd be about 10% done with a parser now
it's easy to get used to 'rapid prototyping'
I don't have the perspective to understand whether, for a completely green user, there's a big difference in difficulty between XML, a format with curly braces (pov or halvcp), or a python program
actually, I wouldn't even be that far along, because the "cool, it works" factor that got me going last night wouldn't be there
for a completely green, python's stack trace error messages are not very informative
a domain specific language can print better messages than a generic one, because the context is more controlled
yeah -- if you write it
the tradeoff is the time to write it
"error somewhere near line 10"
jmkasunich: I think I said it before, but I'm thrilled that you took my little prototype and turned it into a much more interesting and maybe even useful program
I think your words were "fucking cool" and they made me grin
and thanks for the "prototype", thats what got me over the learning curve + inertia hump
damn : after if - gets me every time
what is it that causes people to ask for help without posting the error message!?
they want us to practice our mind reading skillz
jmkasunich: still around?
jepler: scara kins sure is nice.. it's almost OK
$ ./scripts/emc configs/scara/scara.ini
scarakins: dlsym: /usr/src/emc2/bin/rtapi_app: undefined symbol: rtapi_app_main
darn, it doesn't work for me
aha think I found the problem
but when I switch to coord mode my arm falls off
that is, if I "home all" first
start, hit "home all", hit "$" to go to coord mode -> x, y become nan
hahah the scara is milling the axis splash screen
I get a kick out of mario.
whatever makes you happy :P
anybody thought about how to define the work volume for a nontrivial machine?
I just started thinking about that, and it's nontrivial^2, I think
jepler: I don't think you can
only generate it from joint limits
jepler: hmm.. somthing is still wrong about scara kins..
if I jog joint 3, and switch to carthesian, I see the machine pos change
and touch-off doesn't seem to work (maybe I don't know how to use it..)
I think offsets are useless in TELEOP mode, because the carthesian position gets overwritten with data from teh joints
touch off should probably be greyed unless in cartesian mode
I used touch-off with scara
otherwise I can't imagine why it wouldn't work -- it just sends an MDI command
oh, I was in cartesian
.. and it is greyed out
it works in Manual control cartesian
(I was beeing stupid..)
this is fun...
* alex_joni watches scara milling 3d_chips :)
I've milled the axis splash screen a few times
it's nice ..
I increased accels a bit.. it was way too sluggish on teleop
"a bit" = about 10 times
I must say I'm really impressed by all this work you've done
me? I've barely done a thing
"you" = you, jmk, ..
the solution seems so simple now.. but it makes quite a difference ..
ah, the plural
I have a much better idea about nontrivial machines now
but that allows me to worry that we can't fix all the problems in a reasonable amount of time
e.g., for 2.2 or fest
no-one says 2.2 must have kins working for all types of robots
but other stuff like work envelope, allowable acceleration, etc
maybe it's not as bad as I think right now
* alex_joni still wonders wth jacobianForward & jacobianInverse do..
I think those are the first derivative
I think so too.. so they should act like speed transformations?
they're unused except in the testing code
seems the problem with building a scara is getting the power to the 2nd and 3rd joints
I guess it's simpler if you don't let the joints rotate indefinitely
if you want to go 360 you need some complicated contacts in the arm
thinking about building one?
not too seriously
it seems like if you rotate to +10*360 degrees on the first joint, the wire will get all twisted around
you need a slipring system if you want to allow "infinite" rotation
yeah that's it
I wonder how effective "microstepping" is without current feedback -- just varying the duty cycle blindly
I suspect that there has to be some feedback
any chopper drive already has feedback - you only need to make the OC threshold variable to do microstepping
I missed that the H-bridge chip on the 7i31/7i32 had current sense built in
I thought it was a dumb bridge like l298 or whatever skunkworks used
woohoo - a 2k resistor fixes monitor detection on my high res flat panel!
hmmm - partly at least
except that it's only one bridge per package, the Allegro A3959 looks like a nice chip compared to L298.
uh oh -- computer trouble?
the 9MP panels tend to be finicky, especially with certain video cards
apparently, the Quadro FX 3500 is one of the bad ones, even though they mention that you can run multiple 9MP panels from one card
wow - that's so funny. X wouldn't start, so I assumed a monitor detection problem. In fact, I had forgotten to connect the 6-piun PCIe power connector, so the server refused to start
ooh time to drive home
heh - see you later
Hello, If one uses hardware pulse generation (similar to the Pico systems board), how large a base period can be used. Can it be as large as the servo period, around 1ms?
sorry, wrong window