#linuxcnc-devel | Logs for 2016-02-22

Back
[04:03:39] <jsskangas_> hello
[04:03:48] <jsskangas_> anyone up
[04:03:51] <jsskangas_> ?
[04:06:54] <jsskangas_> I need help with kinematics, I need to be able to write pos->tran.x variables in kinematicsForward function
[04:07:07] <jsskangas_> can anyone help me with thsi one
[04:07:12] <jsskangas_> ?
[07:49:48] <alex_joni> jsskangas_: what help?
[07:50:01] <jsskangas> Hello
[07:51:20] <jsskangas> Quickl strart of how kinematics works on linuxcnc.
[07:52:08] <jsskangas_> there are two functions that in interested kinematicinverce and kinematicsforward
[07:52:19] <jsskangas_> when these are called
[07:52:48] <jsskangas_> everytime at certain point in servo thread?
[07:54:50] <jsskangas_> currently im testing my own kinematics where you can change between two different kinematics rotating table and fixed machine
[07:56:10] <jsskangas_> rotating tapble is coordinate system where it is fixed on rotating table, and it rotates along table
[07:56:36] <jsskangas_> fixed machine is machine base fixed coordinate system
[07:57:14] <alex_joni> ok.. go on
[07:57:22] <alex_joni> and yes, they are called periodically
[07:57:56] <jsskangas_> now im point where these two exist and you can change between them
[07:58:10] <alex_joni> when you want to move coordinated (lets say from X10Y5 to X5Y10) the motion controller determines what needs to be done
[07:58:21] <alex_joni> e.g. what is the path in carthesian coordinates (world)
[07:58:27] <alex_joni> then it generates points along that path
[07:58:50] <alex_joni> and for each point it runs KinematicsInverse to determine the joint positions (motor positions) so it coresponds
[07:59:31] <jsskangas_> that far I have managed to determine its internal
[07:59:38] <alex_joni> I'm not sure kinematics is the only answer to your problem
[07:59:47] <alex_joni> I think there are also g-codes for coordinate rotation
[08:00:05] <alex_joni> and then it's way easier, because it's treated above the motion controller
[08:00:35] <jsskangas_> ok this is not to move coordinate system or zero point
[08:01:15] <jsskangas_> I just want to simply switch between RTCP and normal mode
[08:01:33] <alex_joni> what is RTCP for you?
[08:02:04] <jsskangas_> im making a command like M128 in heidenhain or TRAORI in 840D or G43.4 in fanuc
[08:02:24] <alex_joni> sorry, not familiar with thiose
[08:02:26] <jsskangas_> Rotary tool center point control
[08:03:02] <alex_joni> but there is G10 L2 P<xx> R<angle> for rotating coordinate systems
[08:03:10] <alex_joni> isn't that what you want?
[08:03:15] <jsskangas_> not the same thing
[08:04:03] <alex_joni> ok.. then I'm not sure what you want/need
[08:04:16] <jsskangas_> ok im trying to explain
[08:04:21] <jsskangas_> plese wait
[08:05:34] <jsskangas_> RTCP fixes coordinate system to rotary table, so when table is rotated tool moves along wit it
[08:06:24] <jsskangas_> this is handlet in linuxcnc with minematics module
[08:06:40] <jsskangas_> kinematics module
[08:07:32] <jsskangas_> But I need this feature to be turned on and off
[08:08:21] <jsskangas_> when Im doing 3+2 indexing machining I dont want coordinate system to rotate with table
[08:09:07] <jsskangas_> but when I do 5-axis machining like impeller I need coordinate system to rotate along with table
[08:09:39] <jsskangas_> problem now is smooth transition between these two modes
[08:10:08] <alex_joni> yup, that's why I don't think kinematics is a good way to do it
[08:10:21] <alex_joni> you 'could' maybe use UVW for the rotated coordinates
[08:10:24] <jsskangas_> is there any other way?
[08:10:32] <alex_joni> and XYZ for the one which is not rotated
[08:10:46] <alex_joni> the problem is there are some g-codes that don't work in UVW I think
[08:11:10] <alex_joni> and you surely need those for impellers (like circles and nurbs)
[08:11:42] <jsskangas_> I think I need to do this hard way
[08:11:59] <jsskangas_> and trough kinematics
[08:12:06] <jsskangas_> math is no problem
[08:12:17] <jsskangas_> I do machinetool kinematics for living
[08:12:33] <alex_joni> I don't see a way to switch these kinematics on the fly (with rotation, no rotation)
[08:12:43] <jsskangas_> But linuxcnc is new platform for me
[08:14:53] <jsskangas_> Welll you simply calculate new original position from where you are now and use this to calculate your current rotated point in RTCP mode
[08:15:08] <cradek> adding the ability to link in several kinematics modules and switch between them at runtime, which is the way I suggest you think about this problem, is not something you can hack together in an afternoon because it will require changes at every layer of linuxcnc, but it IS surely possible to do
[08:15:29] <jthornton> I cloned and checked out 2.7, how do I set it to 2.7.3? I get an error trying to build 2.7.4 on LinuxMint
[08:15:54] <cradek> I think we've talked about this before and I gave the same advice
[08:16:07] <jsskangas_> If have think this a wile now and I think its possible to implement in kinematics
[08:16:21] <jsskangas_> Hello cradek
[08:16:33] <jsskangas_> Iv been thinking this after since
[08:16:40] <cradek> jthornton: git checkout v2.7.3
[08:17:09] <jthornton> thanks
[08:17:15] <jthornton> I thought it was simple
[08:17:23] <jsskangas_> I think I have solved dirty and not so comblicated way to do this
[08:17:35] <cradek> jthornton: it is, but I predict it won't fix your build problem :-)
[08:18:31] <jthornton> I have a 2.7.3 deb that installs fine but building 2.7.4 and I get install errors
[08:18:46] <jthornton> so I want to build 2.7.3 again and see if it's me
[08:18:54] <cradek> aha
[08:18:55] <alex_joni> huh, that shouldn't happen between 2.7.3 and 2.7.4
[08:19:06] <alex_joni> but git bisect is your friend
[08:19:09] <cradek> yeah that's my thinking too, but trying is good
[08:19:23] <alex_joni> hi cradek, btw ;)
[08:19:50] <cradek> hi alex!
[08:19:52] <cradek> hope all is well
[08:20:04] <alex_joni> too well, no time left for almost anything :)
[08:22:43] <jsskangas_> pos->tran.x is this comming from where
[08:23:52] <alex_joni> that's what the planner tells the kinematics module is the next position
[08:24:08] <alex_joni> and the kinematics function needs to convert that to joint position
[08:24:16] <jsskangas_> ok good
[08:24:29] <alex_joni> (ot the other way around: you have joint positions, and need to calculate pos->tran.x)
[08:28:05] <jsskangas_> please try to bare with me its really hard to explain as enghlish is not may native lanquage
[08:29:01] <alex_joni> it's not mine either
[08:29:13] <jepler> jthornton: does debian/configure print a message saying it doesn't recognize your system?
[08:29:16] <jepler> echo "unknown distribution: $DISTRIB_NAME"
[08:29:18] <jepler> echo "configuration may be wrong!"
[08:29:37] <jsskangas_> normal mode where pos.x=joint[0]
[08:29:41] <jthornton> just a sec and I'll see
[08:33:11] <jthornton> http://paste.ubuntu.com/15170368/
[08:34:00] <jthornton> this is the error I got with 2.7.4 http://paste.ubuntu.com/15170372/
[08:34:48] <jepler> OK, thanks.
[08:35:11] <jepler> this is familiar but I don't think the other person affected determined the fix
[08:35:37] <jepler> I had advised to put a line into the post-installation script that would at least show each step it is executing so we could isolate the one which is causing the error
[08:35:49] <cradek> which os's package are you installing on mint?
[08:35:58] <jsskangas_> My idea to change between kinematics, from fixed to RTCP is following: starting in normal mode when RTCP is activated current position is rewriten to current position
[08:36:33] <jthornton> mate is the desktop
[08:37:02] <jepler> cradek: If I understand correctly, today jt is installing a package he just built on mint, on that same mint system
[08:37:09] <cradek> ohhh
[08:37:14] <cradek> sorry
[08:37:53] <jepler> jthornton: In the file debian/linuxcnc.postinst, change the line "set -e" to "set -xe". rebuild, reinstall. then more information should be shown by the failing script -- namely, each command that it executes
[08:38:09] <jthornton> ok thanks
[08:38:15] <jsskangas_> meaning that pos->tran.x,y,z are are calculated from current position in backward so that when kinematics are applied you will end up where are you now
[08:39:09] <jepler> git log v2.7.3..origin/2.7 -- debian/linuxcnc.postinst
[08:39:17] <jepler> packaging: use "set -e" to fail on error in the postinst script
[08:39:28] <cradek> jsskangas_: I think that is the right conceptual approach
[08:39:30] <jepler> so since 2.7.3, seb_kuzminsky changed this script so that an error in it does not pass silently.
[08:39:57] <cradek> ha, alex_joni and I were sure wrong
[08:39:59] <jepler> that means it's likely the problem existed all along, it's just not blithely continuing anymore
[08:40:14] <jsskangas_> so I made some changes to kinematics h to
[08:40:33] <jepler> jthornton: so you could just roll your eye, remove the "set -e" line altogether, and go back to living your life. but we wouldn't be able to accept that patch for linuxcnc in the long term.
[08:41:06] <jsskangas_> so I made some changes to kinematics.h to to be able to overwrite pos from kinematicsinverse function
[08:42:58] <jepler> afk
[08:43:30] <jthornton> I'll test to see what the error is in a bit, my script is downloading all the depends
[08:44:03] <cradek> jsskangas_: your will need to add support for handling position updates throughout motion, canon, and interpreter. it is not something you can do in only kinematics
[08:44:27] <jsskangas_> cradek: ok plese explain
[08:44:53] <alex_joni> jsskangas_: I suggest you study the sourcecode a bit (all parts of it), how it connects, etc
[08:45:06] <alex_joni> it's similar to saying you want a new motor on your car
[08:45:22] <cradek> everywhere the current position is stored, you will have to add handling for updating it, because the code all assumes it does not change
[08:45:27] <alex_joni> but you need to make changes in the car computer, in the bus and maybe some other components aswell
[08:45:52] <cradek> unfortunately I don't know where all those places are, or how to make them handle this updating - you will have to study it
[08:45:53] <alex_joni> afk
[08:46:31] <jsskangas_> so pos->tran.x will not update my position
[08:46:41] <jsskangas_> If i change that
[08:46:55] <cradek> I think last time I suggested you look at "machine off" -> "machine on" transition code
[08:47:11] <cradek> no it is absolutely not that easy :-)
[08:47:52] <cradek> I have to go for a while, sorry
[08:47:55] <jsskangas_> damnet
[08:48:22] <cradek> I hope you succeed at this jsskangas_, sorry it's not easy.
[08:48:36] <jsskangas_> well let see
[08:48:58] <jsskangas_> how it goes
[08:56:32] <jsskangas_> alex_joni: When i want new engine in my car I build it my self :)
[08:57:13] <jsskangas_> alex_joni:https://picasaweb.google.com/100325893956269903721
[09:49:56] <jthornton> jepler: this is the results http://paste.ubuntu.com/15170932/
[09:50:39] <jepler> jthornton: the extra messages I had hoped to see would be shown when installing the package
[09:50:53] <jepler> I don't know why yo ugot the permission denied error writing the .dsc file, that is something to do with your local filesystem permissions
[09:51:11] <jepler> the .dsc file is written in the directory above the linuxcnc source directory so check permissions there
[09:55:44] <jsskangas_> Is there any chart or pdf from how motion / position of axis is handled in linuxcnc
[09:55:46] <jsskangas_> ?
[09:56:05] <jsskangas_> in what files I can find what
[10:00:08] <jepler> the best resource is the source files themselves. "git grep" can quickly search all source files for a string, so when you want to find where a function is defined or used just "git grep" for it.
[10:01:05] <jepler> If your editor supports ctags or etags, then you can "make tags" or "make etags" to produce these files, then in your editor you can use it for "go to definition of function"
[10:01:37] <jepler> in the past we had documents describing the purpose of the source files in each directory, but I find that these lists get out of date and still don't answer the question very well
[10:02:03] <jthornton> I somehow managed to create that file as root... starting over with a clean slate
[10:03:33] <jsskangas_> ok I have source files I compile my own linuxcnc at moment just for testing my kinematics module
[10:04:41] <jsskangas_> im just trying to speed up my screarch time for what files I need to lookinto when I want to make this position update
[10:05:18] <jsskangas_> like every one else I have really limited time to use
[10:05:32] <jsskangas_> for this
[10:09:44] <jepler> I understand about that. What I have forgotten is how hard it is for a new developer to find stuff in linuxcnc
[10:14:50] <jsskangas_> Thats a real problem, Other one is understandin arhcitexture of this thing
[10:15:10] <jsskangas_> architechture
[10:55:38] <cradek> zlog:
[11:07:06] <seb_kuzminsky> morning
[11:10:43] <seb_kuzminsky> jthornton: looking at linuxcnc.postinst, it strikes me that we should handle our limits by installing a linuxcnc.limits in /etc/security/limits.d, rather than by clumsily editing the main limits.conf file
[11:11:13] <seb_kuzminsky> also, restarting udev by calling the init script might not be portable any more, what with upstart and systemd and god knows what nowdays
[11:11:32] <seb_kuzminsky> kids and their newfangled init systems, get off my lawn, etc
[11:30:30] <skunkworks> zlog
[11:31:58] <jepler> http://unix.stackexchange.com/questions/39370/how-to-reload-udev-rules-without-reboot
[11:32:20] <jepler> so maybe: udevadm control --reload-rules ; udevadm trigger
[11:32:49] <jepler> and yes to limits.d. I think I researched within the last months and found that all our master-branch architectures have limits.d.
[11:33:12] <jepler> and in fact 10.04 did
[11:36:29] <jepler> also we should either be installing udev files under /lib/udev now and/or using dh_installudev to get it in the right place
[11:36:50] <jepler> the latter one handles moving the file from the deprecated location in /etc too
[11:37:00] <jepler> but doesn't appear to cover restarting udev
[11:38:46] <jepler> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=697362 please automatically generate `udevadm trigger` calls, wishlist since 2013, no activity
[11:44:59] <CaptHindsight> jepler: do you recall if that Odroid you used with FPGA over SPI had GPU accell running or was it just software rendering?
[11:50:45] <jepler> CaptHindsight: as I installed it, AXIS was running without OpenGL acceleration.
[11:51:24] <jepler> I believe the odroid u3 only has accelerated OpenGL ES 2.0, not OpenGL -- this seems to be typical of ARMs, since ES is what Android needs
[11:55:40] <CaptHindsight> thanks, we ran Axis on the older cubieboard, it ran fine and smooth (even in full screen 1920x1080) until you tried to move the window around
[11:57:45] <CaptHindsight> we were just looking into trying it on some newer ARM boards
[12:04:45] <jepler> is window moving bad in general, or is axis somehow worse than others?
[12:08:00] <archivist> I have had window moving in an editor be a killer to latency on some video boards
[12:08:28] <jepler> early 2000s integrated video sure did that on systems I encountered
[12:12:05] <CaptHindsight> latency didn't spike during window moves, the window movement was just very choppy
[12:13:08] <CaptHindsight> I think were even played back movies while running Axis
[12:33:44] <skunkworks> http://highlab.com/~seb/linuxcnc
[12:33:56] * seb_kuzminsky winks at skunkworks
[12:59:49] <skunkworks> umm.. wow? http://imgur.com/UpR8aJ9
[12:59:53] <skunkworks> I will let it run.
[13:05:42] <jepler> pcw has also reported sub-10us latencies with new hardware and recent rt kernels
[13:09:59] <skunkworks> That is impressive. that would work for software stepping
[13:15:03] <jepler> you may get different (worse) results with more than one thread, but your result would still be interesting once you've let the single-thread case run for long enough
[13:18:06] <skunkworks> running for a little while
[13:18:09] <skunkworks> jepler, http://imgur.com/xfc49Am
[14:26:55] <skunkworks> seems to run a 30us base thread in axis just fine
[14:27:27] <skunkworks> The cone in axis is a bit choppier than I would have expected.
[14:39:26] <seb_kuzminsky> skunkworks: that's awesome
[14:39:38] <seb_kuzminsky> what hardware?
[14:41:36] <skunkworks> http://www.newegg.com/Product/Product.aspx?Item=N82E16883283133&cm_re=hp_8100-_-83-283-133-_-Product
[14:41:47] <skunkworks> 2nd gen i5
[14:48:53] <jsskangas> cradek: i quickly check trough code, this is simply too much to learn in time i have.
[14:50:29] <jsskangas> cradek: i will continue using two different setups for my job's. My main idea is not to be developer.
[17:34:26] <skunkworks> tried an ati video card and it seems to peak at about 50us - but I left it running all night (installing the opensource radeon driver/firmware.
[19:06:28] <CaptHindsight> tempted to try http://www.newegg.com/Product/Product.aspx?Item=9SIA7KW2TJ0426 since it comes with a 17" monitor for only $170
[19:13:24] <jepler> and Windows XP. nice.
[20:26:17] <KGB-linuxcnc> 03Dewey Garrett 052.7 f54f7c0 06linuxcnc 10lib/hallib/xhc-hb04.tcl xhc-hb04.tcl: accomodate prior connect of this pin: * 14http://git.linuxcnc.org/?p=linuxcnc.git;a=commitdiff;h=f54f7c0