#linuxcnc-devel | Logs for 2015-09-22

Back
[09:33:17] <jepler> trying so hard to not even read the thread about windows
[09:33:27] <jepler> otherwise I'll be tempted to reach into the internet and throttle someone
[09:36:00] <pcw_home> Yeah lets Mach4-ify LinuxCNC
[09:41:38] <pcw_home> I do see some appeal to the HMI <--> RT physical separation
[09:41:39] <pcw_home> but only if the RT part can run the TP and HAL so thats not really something
[09:41:41] <pcw_home> thats doable with a micro so then you end up with 2 OS system
[09:41:43] <pcw_home> not really sure this is a great win system complexity wise
[09:43:58] <cradek> > He has several hundred photos to check to figure out which ones are of the same newt.
[09:44:15] <cradek> andy's always in on something fun
[09:45:42] <cradek> if only someone had thought before about porting to windows! nobody has ever thought to ask for it! we have been doing it wrong all along. if only we could rewrite history with this new wisdom in mind.
[09:46:26] <cradek> I for one would sure like to buy windows licenses and deal with their registration process for no reason or benefit
[09:46:39] <cradek> sorry
[09:46:47] <archivist> first rewrite windaz to be realtime :)
[09:48:17] <jepler> if there's a shared memory model between the RT CPU and the regular system, then you could still do HAL much as we know it today
[09:48:48] <mozmck> I see more people ditching windows for linux these days because of win10 - that's encouraging.
[09:48:50] <jepler> anything with a PRU, and probably lots of things with embedded FPGAs or FPGAs with embedded CPUs would qualify
[09:49:34] <jepler> but you'll probably start bumping into multiprocessor consistency problems that don't exist on x86, even worse than the ones we've explored on ARM so far
[09:50:13] <mozmck> Martin at Elektor talked like he is doing it now in an Elektor post a couple weeks ago.
[09:50:43] <archivist> there are those servo drives that talk
[09:50:55] <archivist> to each other to retimethemselfs
[09:59:17] <skunkworks> I think it was rogge who made the comment that tormach probably wouldn't go to embedded -> windows interface. Too epensive
[09:59:26] <archivist> probably the only sensible way to use windows http://www.technosoftmotion.com/en/intelligent-drives-and-motors/other-drives/closed-frame/idm240-idm640
[09:59:29] <skunkworks> need to fix the X
[10:00:50] <archivist> but have no idea how those deal with short line merges
[10:01:29] <skunkworks> Jeeze. wireless keyboards do just fine!.. (if your machine does something worng - it doesn't push a ton of fixturing off onto the floor)
[10:01:59] <skunkworks> Rant tuesday?
[10:02:01] <mozmck> I use windows to see outside
[10:02:40] <archivist> I work part time moving/fixing windows
[10:02:52] <archivist> the see through kind
[10:02:52] <mozmck> http://www.videobash.com/photo_show/Apparently-Mac-now-supports-Windows-209992
[10:03:28] <mozmck> reminds me I need to fix some of mine.
[15:30:09] <jsskangas> Hello
[15:30:51] <jsskangas> quick help with kinematics needed
[15:31:40] <jsskangas> I need to set new axis values as kinematics mode is enablet
[15:33:04] <jsskangas> Lets asume that C axis is rotated 45 degrees before kinematis for rotary table is applyed
[15:33:33] <jsskangas> this moment I calculate current position of tool
[15:34:06] <jsskangas> and i would like to give that position to current position
[15:34:24] <jsskangas> so that toll would not make jump.
[15:36:31] <jsskangas> in servo system without new position setup it will give error, cause current position will jump out of error window
[15:36:33] <seb_kuzminsky> jsskangas: forward and reverse kinematics must agree, in order to avoid a jump when switching between world mode and joint mode
[15:37:24] <jsskangas> meaning?
[15:38:31] <seb_kuzminsky> kinematics are the position relationship between world coordinates and joint coordinates of a machine. There are two types of kinematics. Forward kinematics is used to calculate world coordinates from joint coordinates. Inverse kinematics is used for exactly the opposite purpose. Note that kinematics does not take into account, the forces, moments etc. on the machine. It is for positioning only.
[15:38:37] <seb_kuzminsky> http://linuxcnc.org/docs/2.7/html/common/Glossary.html
[15:38:38] <jsskangas> what you mean about joint mode and world mode
[15:39:05] <seb_kuzminsky> ah
[15:39:19] <seb_kuzminsky> in joint mode, joints move independently of each other
[15:39:54] <seb_kuzminsky> in world mode, the machine is commanded in world coordinates, and the machine's kinematics code computes joint coordinates in a coordinated way to accomplish the world-mode command
[15:40:27] <jsskangas> ok im still out
[15:40:42] <jsskangas> lets try this other way around
[15:41:06] <jsskangas> what commersial cnc controllers you have used
[15:41:09] <jsskangas> ?
[15:41:14] <seb_kuzminsky> also called "Free" mode and "Teleop" mode
[15:41:46] <seb_kuzminsky> me? uh, a Boss8 for about 15 minutes...
[15:41:51] <jsskangas> kinematics works not a problen
[15:41:52] <seb_kuzminsky> what are you trying to do?
[15:42:15] <seb_kuzminsky> if you get a jump in position when switching between free & teleop, there is a problem with your kinematics
[15:42:18] <jsskangas> g43.3 fanuc coordinate fixed on rotating table
[15:42:21] <jsskangas> ore
[15:42:23] <jsskangas> or
[15:42:33] <jsskangas> haidenhain M128
[15:42:40] <jsskangas> same thing
[15:42:51] <jsskangas> siemens: TRAORI
[15:42:52] <seb_kuzminsky> what does the thing do?
[15:42:59] <seb_kuzminsky> all those terms are meaningless to me
[15:43:04] <jsskangas> they enable TCP
[15:43:12] <jsskangas> that is tool centerpoint control
[15:43:23] <seb_kuzminsky> what are you trying to do?
[15:43:37] <jsskangas> when its fixed to table
[15:43:51] <jsskangas> coordinate system rotates with table
[15:44:04] <jsskangas> inverse kinematics
[15:44:30] <jsskangas> caalculations and kinematics works correct
[15:44:56] <jsskangas> but i need this inverse kinematics to be on/off
[15:45:42] <jsskangas> so that when its off XYZ axis are fixed to machine
[15:45:52] <seb_kuzminsky> wow, that sounds cool
[15:46:01] <jsskangas> when its on XYZ should move with table
[15:46:12] <jsskangas> well I done it all ready
[15:47:04] <jsskangas> olny need help to write current position so that this jump does not occur
[15:47:07] <seb_kuzminsky> so the plane rotates around Z as the C axis rotates?
[15:47:14] <seb_kuzminsky> *the XY plane
[15:47:27] <seb_kuzminsky> is that what you're describing?
[15:47:43] <jsskangas> yes
[15:48:06] <seb_kuzminsky> is this instead of having a C table, or in addition?
[15:48:45] <jsskangas> https://www.youtube.com/watch?v=abbforVdruw
[15:48:53] * seb_kuzminsky clicks
[15:49:00] <jsskangas> this is the setup
[15:51:52] <seb_kuzminsky> ok, so i see the C rotary axis turning, but the XYZ coordinate system (show by the little red/green/blue arrows) seems to be fixed
[15:52:10] <jsskangas> but my question still remains how can i rewrite my current XYZ position in linuxcnc?
[15:52:10] <seb_kuzminsky> am i missing something?
[15:52:27] <jsskangas> bont worry about kinemtics
[15:52:45] <seb_kuzminsky> i'm still trying to understand what it is you're trying to accomplish
[15:52:51] <jsskangas> ok
[15:52:54] <seb_kuzminsky> ok, i'll stop worrying about kinematics :-)
[15:53:00] <jsskangas> thanks
[15:53:14] <jsskangas> I will explain when I have more time
[15:53:32] <seb_kuzminsky> our G10 L2 lets you rotate the XY plane around Z: http://linuxcnc.org/docs/2.7/html/gcode/g-code.html#_g10_l2_set_coordinate_system
[15:53:40] <seb_kuzminsky> but i dont think that's what you're looking for
[15:53:43] <jsskangas> ok, ino
[15:53:46] <jsskangas> no
[15:54:10] <jsskangas> Lets say that Im in X20 Y0 Z0
[15:54:30] <jsskangas> And I want to jump X0 Y20 Z0
[15:54:40] <jsskangas> how can I do This
[15:55:11] <seb_kuzminsky> when you say "jump" you mean you want the coordinates displayed by the DRO to change, but the machine to stay still?
[15:55:45] <jsskangas> well not sure anymore
[15:56:08] <seb_kuzminsky> or do you mean you want the machine to move to the new coordinates (in a controlled way, while the DRO keeps track of where the machine is)?
[15:56:17] <jsskangas> If I rotate C90 without kinematics on
[15:56:28] <jsskangas> tool staus at X20
[15:56:36] <jsskangas> stay
[15:57:03] <seb_kuzminsky> "without kinematics" sounds like you're talking about Free mode, where each joint moves independently of each other, and the kinematics code does not run
[15:57:16] <seb_kuzminsky> in that mode, you don't *have* X, Y, Z, C coordinates
[15:57:27] <seb_kuzminsky> you only have joint0 position, joint1 position, etc
[15:57:32] <jsskangas> yes
[15:57:44] <jsskangas> now you are getting the point
[15:57:54] <seb_kuzminsky> heh, to me it's you who's getting the point ;-)
[15:58:01] <jsskangas> but I need XYZ coordinates in both mode
[15:58:23] <seb_kuzminsky> if you want to compute XYZ from joint positions, you need teleop mode, aka world mode
[15:58:27] <jsskangas> in commersial cnccontrollers
[15:58:36] <seb_kuzminsky> that's when kinematics are active and performing that calculation for you
[15:59:46] <jsskangas> yes but then come problem
[16:00:30] <cradek> can you back up and say what problem you are solving? I see you have chosen a solution that does not match how linuxcnc works, but I don't understand why you want that solution, and I would like to understand the problem you are solving
[16:00:32] <jsskangas> when rotating table even that toll does not move, XYZ coordinates will change
[16:01:07] <jsskangas> in world mode
[16:01:57] <jsskangas> cradek
[16:02:00] <jsskangas> hello
[16:02:05] <cradek> hi!
[16:02:25] <jsskangas> we both are owners of mori mv juniors?
[16:02:41] <cradek> yes I have one, wonderful machine
[16:02:47] <jsskangas> I know
[16:02:50] <jsskangas> wait
[16:03:14] <jsskangas> https://www.youtube.com/watch?v=b-qWp8Nhcuk
[16:03:52] <cradek> nice tilting table
[16:04:19] <cradek> surprising to see on such a small machine
[16:04:25] <jsskangas> Ok Im trying to use Linuxncn in two different mode, axis fixed in machine when minematics are off
[16:04:42] <cradek> you can't turn kinematics on and off, but you can switch between joint and world mode
[16:04:50] <jsskangas> and axis fixed in rotating table when kinematics are on
[16:05:03] <cradek> you could have two different machine configurations
[16:05:13] <jsskangas> command in haidenhain would be M128 and M129
[16:05:13] <cradek> I don't understand what you mean "kinematics are on/off"
[16:05:25] <cradek> we don't have those, but it sounds nice
[16:05:30] <jsskangas> TCP tool center point control
[16:05:43] <jsskangas> yes I know¨
[16:05:58] <jsskangas> im implementing those function at the moment
[16:06:04] <cradek> that's great
[16:06:15] <jsskangas> Im only missing one link to get it to work
[16:06:18] <cradek> can you point us to the spec you are working from?
[16:06:26] <cradek> or documentation?
[16:06:46] <jsskangas> well
[16:07:14] <jsskangas> it just some rotation matrices
[16:07:29] <jsskangas> nothing too fancy
[16:07:41] <cradek> I don't mean the implementation, I mean the design
[16:07:51] <cradek> what is it supposed to do - how is it used
[16:07:56] <jsskangas> ok
[16:07:58] <jsskangas> wait
[16:07:59] <cradek> what are the M codes
[16:08:02] <cradek> thanks!
[16:10:27] <jsskangas> https://www.youtube.com/watch?v=Gs5EKfL95WU
[16:10:42] <jsskangas> here is a good video of TCP
[16:10:54] <jsskangas> and how it work
[16:11:22] <jsskangas> Im doing TCP that rotates with table
[16:11:58] <cradek> I think I understand what that is (without watching the video) and that's what our world mode does
[16:12:15] <cradek> the XYZ system is in the frame of the final stage of the rotating table
[16:13:00] <skunkworks> Oh - your sort of trying to switch between 2 different kins within one instince of linuxcnc.
[16:13:01] <cradek> so when you move B you get compensating movements that cause the tooltip to stay at the same place on the table
[16:13:26] <cradek> skunkworks: that is also what I think is going on
[16:14:07] <cradek> I also suspect that specifically, on these machines, one of them is always trivkins
[16:15:00] <jsskangas> Ok lets start with exsample
[16:15:09] <jsskangas> Kinematic off
[16:15:21] <jsskangas> X30 Y0 Z0
[16:15:42] <jsskangas> C90
[16:15:47] <cradek> by "kinematic off" do you mean M128?
[16:16:06] <jsskangas> M129 in haidenhain
[16:16:34] <cradek> ok
[16:16:54] <jsskangas> Now this poin we are in X30 Y0 z0 and rotated C table 90 degrees
[16:17:12] <cradek> so you are controlling joint positions
[16:17:20] <cradek> the joints are all independent
[16:17:55] <jsskangas> at this point if you apply TCP(m128, G43.4...) your place is changed
[16:18:08] <cradek> yes maybe to Y-30 X0
[16:18:13] <cradek> C90
[16:18:20] <cradek> if I have my directions right
[16:18:32] <cradek> you have not yet said what G43.4 is
[16:18:49] <jsskangas> cause you have rotated table kinematics kick in and you will instantly change coordinates to X0 Y30 Z0
[16:19:31] <cradek> we have similar with joint vs world mode, but you can't change between them with gcodes because there is no gcode available in joint mode
[16:19:32] <jsskangas> Code G43.4 in fanuc M128 in haidenhain and TRAORI in SIEMENS are all TCP activation commands
[16:19:46] <cradek> oh ok, different codes, similar behavior
[16:19:55] <jsskangas> yes
[16:20:17] <cradek> this sounds very nice to have, but fairly hard to do
[16:20:25] <jsskangas> no
[16:20:34] <jsskangas> one small step and it done
[16:20:49] <cradek> haha
[16:20:54] <jsskangas> I only need to change my current position in Linuxcnc
[16:20:58] <jsskangas> and it done
[16:21:07] <cradek> yes, and that is hard
[16:21:24] <cradek> that is exactly the entire problem
[16:21:34] <jsskangas> Sorry that I have not sayed yet What i do for living
[16:21:46] <jsskangas> ok hardest part
[16:22:01] <jsskangas> is to update current position
[16:22:08] <jsskangas> ?
[16:22:20] <cradek> yes I am sure that is the hard part of implementing this
[16:23:13] <cradek> if you look at the code that switches between world and joint (TELEOP and FREE modes) you will see all the things necessary
[16:23:24] <jsskangas> I was thinking to update position command and feedback at same time
[16:23:44] <cradek> well joint position command will not change, so feedback will not change
[16:23:45] <jsskangas> in that way PID loop would not be affected
[16:24:01] <cradek> they won't change at that level - that is the point
[16:24:26] <cradek> you have to change the internal idea of the current controlled point, the external does not move
[16:24:26] <seb_kuzminsky> cradek: it's harder than that, isn't it? since jsskangas wants gcode available in the "simple" mode, that mode can't be Free
[16:24:57] <seb_kuzminsky> so we'd need to run with two kins modules, and switch between them somehow
[16:25:01] <cradek> yes, but he has to understand that switching first, because it already does most of the things, like resync motion and the interpreter's idea of the current point
[16:25:16] <seb_kuzminsky> ah, ok
[16:26:35] <jsskangas> It was good evening talk, we need to continue later. now I need to go to bed.
[16:26:40] <cradek> goodnight
[16:26:45] <jsskangas> Need to wakeup in 4 hours
[16:26:45] <cradek> I hope you succeed at this
[16:26:51] <seb_kuzminsky> bye!
[16:27:05] <cradek> I'd like this to work, too
[16:27:06] <jsskangas> we will continue , I need your help with this one
[16:27:31] <seb_kuzminsky> sounds good
[16:27:31] <jsskangas> My job relates to Machine tool simulations and kinematics
[16:27:40] <cradek> if you look at TELEOP/FREE switching maybe we can help with more specific questions next time, now that we understand what you are asking
[16:28:09] <cradek> great, hope to work with you more
[16:28:21] <cradek> sounds like you are the right person to tackle this problem
[16:29:18] <jsskangas> in free mode
[16:29:50] <jsskangas> XYZ axis should not change values even if A and C axis are rotated
[16:30:08] <seb_kuzminsky> that's how it works, yes
[16:30:26] <cradek> you are right, but the words are wrong; in free mode we have joint numbers 0..8 and they are all independent like you say
[16:30:43] <seb_kuzminsky> but remember, in free mode there are no axes (XYZ etc)
[16:30:45] <cradek> if you move joint 5 (the horizontal rotary table) joints 0,1 (big table) do not move
[16:31:13] <cradek> when you switch back to world mode after moving joint 5, you get a new XY point calculated by kins and everything is correct
[16:31:45] <jsskangas> ok next example
[16:31:59] <cradek> wait, did you understand what I just typed?
[16:32:10] <jsskangas> im in free mode X30 Y0 Z0
[16:32:16] <cradek> wait
[16:32:17] <jsskangas> then rotate C30 deg
[16:32:20] <cradek> wait
[16:32:40] <jsskangas> X values change 25.xx y sohmthing
[16:33:08] <cradek> please read back
[16:33:39] <jsskangas> yes
[16:33:49] <seb_kuzminsky> jsskangas: you're describing how you want things to work, but cradek is describing how linuxcnc currently works, and they're different
[16:34:16] <jsskangas> I dont know if they are different after all
[16:34:18] <cradek> yes "free mode X30" makes no sense and shows that you aren't understanding what I'm typing
[16:34:51] <cradek> I think I understand what you are saying, but I want you to understand how linuxcnc works so you can continue to study it to accomplish your goal
[16:35:14] <jsskangas> yes I do not understand
[16:35:21] <jsskangas> but im trying
[16:35:44] <jsskangas> we come from two different side of same thing
[16:35:52] <cradek> yes I want you to succeed at your goal
[16:36:09] <cradek> I think understanding the current behavior is step 1 in your success
[16:36:26] <cradek> sorry, I have to go now
[16:36:29] <cradek> goodnight jsskangas
[16:36:33] <jsskangas> same
[20:48:09] <jepler> zlog_: