#emc-devel | Logs for 2006-07-10

[14:42:17] <cradek> uh-oh, ray just said on the list that we have leadscrew mapping in emc2, but I don't think we do
[14:45:57] <alex_joni> heh.. then we'll have to add it back :D
[15:11:17] <anonimasu> lol
[15:16:13] <cradek> we??
[15:44:46] <alex_joni> cradek: sorry, you
[15:44:47] <alex_joni> :D
[15:45:09] <cradek> haha
[15:46:27] <alex_joni> ;-)
[17:28:32] <alex_joni> cradek: around?
[18:15:15] <cradek> back
[18:17:56] <alex_joni> wanted to talk to you about spindle control
[18:18:20] <alex_joni> but I'm up to my elbows in it right now.. hang on ;)
[18:18:29] <cradek> haha
[18:18:39] <cradek> I hope you don't expect me to understand how it works
[18:18:45] <alex_joni> modifiying about 6 files at once
[18:18:54] <alex_joni> easy to loose track
[18:18:56] <cradek> sounds great
[18:19:04] <alex_joni> it's quite easy..
[18:19:10] <alex_joni> at least the first step
[18:20:10] <cradek> great
[18:27:29] <cradek> alex_joni: is there a good way to search your irc logs?
[18:29:35] <alex_joni> other than asking me?
[18:29:37] <alex_joni> nope
[18:29:51] <alex_joni> but I'm open to suggestions
[18:30:12] <cradek> maybe google indexes it
[18:30:17] <cradek> logger_devel: bookmark
[18:30:17] <cradek> See
[18:31:26] <alex_joni> http://www.google.com/search?client=opera&rls=en&q=site:
[18:31:46] <alex_joni> seems like it
[18:32:13] <cradek> yep
[18:33:09] <alex_joni> need a bit of pointer help
[18:33:14] <alex_joni> I have a status pointer
[18:33:18] <alex_joni> EMC_STAT * stat
[18:33:35] <alex_joni> EMC_STAT is a class that contains EMC_IO_STAT, EMC_MOTION_STAT, etc
[18:35:55] <cradek> cool, I found exactly what I wanted in the logs in just a few minutes
[18:36:00] <alex_joni> NICE
[18:36:20] <alex_joni> I think I got the right & * combo myself ;)
[18:51:56] <alex_joni> cradek: help :(
[18:52:48] <cradek> how?
[18:52:57] <alex_joni> can you look at some structs?
[18:53:09] <cradek> sure
[18:53:10] <alex_joni> * alex_joni is dizzy dereferencing
[18:53:19] <alex_joni> do you know EMC_STATUS ?
[18:53:23] <alex_joni> it's defined in emc.hh
[18:53:24] <cradek> yes
[18:53:34] <alex_joni> it contains EMC_IO_STAT and EMC_MOTION_STAT
[18:54:10] <alex_joni> now I want to copy EMC_SPINDLE_STAT to EMC_MOTION_STAT
[18:55:38] <cradek> you mean you want to move it into EMC_MOTION_STAT?
[18:55:57] <cradek> which will put it in EMC_STAT
[18:56:02] <alex_joni> right
[18:56:15] <alex_joni> but I still need to copy the data to EMC_IO_STAT->spindle
[18:56:24] <alex_joni> so that existing GUI's still can see it
[18:56:31] <cradek> fix the guis instead
[18:56:32] <alex_joni> before I go and break it
[18:56:58] <cradek> they all have the entire stat buffer, you would just have to change a few lines
[18:57:01] <alex_joni> either way, I think I didn't put the right thing in emcMotionUpdate
[18:57:05] <alex_joni> right
[19:00:18] <alex_joni> can you look at usrmotintf.cc : usrmotReadEmcmotStatus() ?
[19:00:48] <cradek> ok
[19:01:38] <alex_joni> this assumes that the two match perfectly.. right?
[19:01:42] <cradek> oops! I added stuff after "tail"
[19:01:54] <cradek> that's not right
[19:02:06] <cradek> I had no idea I had to look out for jankylocking
[19:02:40] <alex_joni> neither did I
[19:02:42] <cradek> but yes, it's just a memcpy
[19:02:53] <alex_joni> ok, so basicly the two need to fit
[19:03:02] <alex_joni> one comes from emc.hh ? and one from motion.h
[19:03:07] <alex_joni> if I read it right
[19:03:30] <alex_joni> err.. no
[19:03:42] <alex_joni> both of the same type (emcmot_status_t *)
[19:03:45] <cradek> they're both emcmot_status_t
[19:04:16] <alex_joni> right
[19:04:25] <alex_joni> now I wonder where NML comes into play
[19:05:45] <alex_joni> I guess taskintf.cc
[19:05:53] <cradek> will it mess you up if I fix the jankylocking in motion.h?
[19:06:03] <alex_joni> can you wait a bit?
[19:06:07] <cradek> sure
[19:06:13] <cradek> or you can do it (just move tail to the end)
[19:06:18] <alex_joni> ok
[19:07:57] <jepler> jankylocking?
[19:08:28] <cradek> it's a new, recently-coined term
[19:08:58] <cradek> see usrmotReadEmcmotStatus() for details
[19:09:04] <jepler> I haven't been following closely so I don't know what you mean
[19:11:25] <cradek> I wish cvsweb could use tags
[19:12:46] <jepler> alex_joni: so what is the "teleop vector" for?
[19:23:08] <alex_joni> jepler: actually it's a prescription of speeds
[19:23:15] <alex_joni> one for each carthesian coordinate
[19:23:28] <alex_joni> (Xvel, Yvel, Zvel, Avel, Bvel, Cvel)
[19:23:33] <alex_joni> that's a teleop vector
[19:24:54] <alex_joni> and for joggin in X+ you mainly set a Xvel > 0
[19:25:25] <alex_joni> not quite sure why teleop has been chosen (probably because stepping is not OK for nontrivial machines)
[19:38:14] <alex_joni> cradek: do you remember what the spindle on g-code is?
[19:46:29] <alex_joni> nm, found em (M3 & M5)
[19:53:03] <alex_joni> yikes :(
[19:58:33] <alex_joni> oh fsck it.. iosh completely messes the game
[19:58:46] <alex_joni> as it tries to send spindle commands directly to the iocontroller :((
[19:59:59] <jepler> alex_joni: reading iosh it looks like EMC_TRAJ_SET_TELEOP_VECTOR is used as an alternative to EMC_AXIS_JOG when working with joints?
[20:00:04] <jepler> so does that make pose.x the velocity for joint 0, etc?
[20:00:08] <alex_joni> right
[20:00:18] <alex_joni> but I bet you're reading emcsh not iosh
[20:00:22] <jepler> er
[20:00:23] <jepler> whatever
[20:00:32] <alex_joni> yeah, what you said
[20:00:54] <alex_joni> except that you don't send speeds for the joints
[20:00:54] <jepler> and there is no "incremental" jog in joint space
[20:00:55] <jepler> ?
[20:01:07] <alex_joni> you send speed for the teleop mode (world view)
[20:01:11] <alex_joni> carthesian space
[20:01:24] <alex_joni> and motion takes care of transforming that to joint jog commands
[20:01:45] <alex_joni> to summarize: in joint mode, you send normal jog messages (even incremental)
[20:01:54] <alex_joni> then you home, and switch to world
[20:02:07] <alex_joni> then you can't send any jog messages anymore, but need to send teleop messages
[20:05:46] <jepler> huh -- I see that what you describe is right
[20:05:59] <alex_joni> but it doesn't make sense?
[20:06:14] <jepler> I'm surprised that there's no incremental jog in world coordinates for nontrivial machines
[20:06:23] <alex_joni> well.. there's none
[20:06:32] <alex_joni> and no-one ever cried because of that lack :D
[20:07:00] <jepler> is there some difficulty in providing it that I don't understand?
[20:07:17] <alex_joni> the problem might be obeying limits
[20:07:32] <alex_joni> one step in world view, could trigger quite a jump in a joint
[20:07:55] <alex_joni> so I think setting a speed reference acts a bit easier
[20:08:00] <alex_joni> but I couldn't say really
[20:10:03] <jepler> all these problems would exist for a g0 move as well
[20:10:14] <alex_joni> I tend to agree
[20:10:22] <alex_joni> but I'm afraid we might miss something
[20:10:41] <jepler> g91 g0 x1 ( equivalent to a 1" incremental jog in world coords)
[20:10:59] <jepler> or with f-
[20:11:10] <alex_joni> yes, but you don't know how it goes (at least with g0)
[20:11:26] <alex_joni> each joint will move with a certain speed
[20:11:32] <alex_joni> so that they start and finish at once
[20:11:42] <alex_joni> and in world view it will definately NOT move on a X line
[20:12:04] <jepler> right or wrong, the documentation says both 0 and G1 produce coordinated motion
[20:12:08] <jepler> er, both G0 and G1
[20:12:11] <jepler> http://www.linuxcnc.org/handbook/RS274NGC_3/RS274NGC_33a.html#1012810
[20:13:29] <alex_joni> oh
[20:13:41] <alex_joni> I usually assumed something else for G0
[20:13:52] <alex_joni> at least for robots it's very common that it's not coordinated
[20:14:13] <alex_joni> well it's coordinated, but not as a geometrical limitation, but as a temporal limitation
[20:14:48] <alex_joni> jepler: don't be too upset .. I broke compatibility again :(
[20:14:59] <Lerneaen_Hydra> so what you need is some way of differing between a straight movement in reality and moving all motors at the same constant speed?
[20:15:25] <Lerneaen_Hydra> or am I just a silly newb poking around in stuff too advanced
[20:16:05] <alex_joni> jepler: still there?
[20:17:09] <alex_joni> any issues with the cvs ?
[20:18:29] <jepler> alex_joni: I haven't updated lately
[20:18:41] <alex_joni> it gives me an error when I try to connect
[20:19:10] <jepler> hm, it must have crashed. the machine sitting right next to it can't ping it.
[20:19:13] <jepler> From bald.unpythonic.net ( icmp_seq=0 Destination Host Unreachable
[20:19:21] <alex_joni> durn :)
[20:19:39] <jepler> I won't be able to reset it before I go home from work, a half hour at least.
[20:19:49] <alex_joni> was about to diff & read & fix & commit
[20:19:56] <alex_joni> jepler: don't sweat it
[20:20:01] <alex_joni> I'll go watch some telly :D
[20:20:44] <alex_joni> unless you want to talk about teleop
[20:33:40] <cradek> bye jepler
[20:34:35] <cradek> alex_joni: update: he thinks the power went out
[20:42:40] <alex_joni> cradek: oh ;)
[20:42:56] <alex_joni> that's why he lost the terminal?
[20:43:35] <alex_joni> cradek: the good news is that I think I finished
[20:56:43] <cradek> allright
[21:01:49] <cradek> now we will have to work together so I can figure out how to make TP do useful things with it
[21:01:56] <cradek> very exciting
[21:02:40] <alex_joni> heh.. right now it's all in a couple of variables
[21:02:48] <alex_joni> emcmotstatus.spindle.speed
[21:03:28] <alex_joni> but it's in shared memory and in the motion controller
[21:03:45] <alex_joni> so you could have some tp calls like tpSetSpindleSpeed()
[21:03:52] <alex_joni> and alter the HAL pin directly if you like
[21:04:15] <cradek> ok, I know how to do that, I already do that with spindlesync
[21:04:35] <cradek> so that's the commanded speed output to hal
[21:05:10] <cradek> it would be nice to also put the feedback speed in the stat buffer so the guis can display it
[21:06:03] <alex_joni> right
[21:06:09] <alex_joni> well, there is a pin for it already
[21:06:17] <alex_joni> we just need to hook it up
[21:06:17] <cradek> cool
[21:06:32] <alex_joni> but it means we need to add loopbacks for all configs that don't use it
[21:07:09] <cradek> yes, if people want to see the readout they will have to do that
[21:09:15] <alex_joni> jepler: something nice for you
[21:09:22] <alex_joni> "I had a dude come up to me asking what my settings were when I was taking a pic. He then furiously entered it into the memo of his mobile phone. I laughed my ass off for ages. All I could think of saying was "oh yeah, I use that setting all the time. Gives great results any time of the day." Mean bitch I know, but there it is. I'm really not a big fan of strangers just coming up to me and thinking they can just strike up a conversation, I've had my
[21:09:58] <jepler> alex_joni: cut off at "I've had my"
[21:10:27] <alex_joni> I've had my share of slimey men
[21:10:28] <alex_joni> doing that and I tend to just be offside with everyone."
[21:10:54] <alex_joni> this is something new to me: http://www.deviantart.com/deviation/35980867/
[21:11:04] <alex_joni> a girl shooting drills ;)
[21:11:25] <jepler> I guess I don't get the joke
[21:12:01] <alex_joni> wasn't really a joke
[21:12:14] <alex_joni> but I kinda had that one or two times
[21:12:47] <jepler> when people see you with an expensive camera they want to talk to you about it
[21:14:07] <alex_joni> yeah
[21:21:15] <alex_joni> cradek: I'm about to commit.. (it works here)
[21:21:36] <alex_joni> if somethings still screwy .. you can revert if needed :D
[21:26:48] <jepler> alex_joni: what are you working on, anyway?
[21:27:01] <alex_joni> moving spindle control into the motion controller
[21:27:04] <alex_joni> out of the iocontroller
[21:27:16] <jepler> what's the advantage?
[21:27:24] <alex_joni> that way chris can do constant surface machining
[21:27:27] <alex_joni> for lathe
[21:27:28] <jepler> oh
[21:27:33] <jepler> ok, sounds like a good idea!
[21:28:05] <alex_joni> http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=128600&group_id=6744&group_project_id=46285
[21:29:14] <alex_joni> cia's stupid again
[21:29:32] <jepler> emc/usr_intf/xemc.cc:2713: error: 'class EMC_IO_STAT' has no member named 'spindle'
[21:29:43] <jepler> did you not fix all the front-ends yet, or did I get only part of your commit?
[21:29:43] <alex_joni> oh.. forgot that one :(
[21:29:58] <alex_joni> I did fix keystick, halui, emcsh, iosh
[21:30:01] <jepler> I'
[21:30:05] <jepler> ll do it if you want
[21:30:06] <alex_joni> but I probably lack the Xaw libs
[21:30:14] <jepler> I'll have to make the same fix in axis, after all
[21:31:20] <alex_joni> jepler: done
[21:31:54] <jepler> ty
[21:32:46] <alex_joni> does it work?
[21:32:51] <alex_joni> I'm still getting the libs ;)
[21:33:01] <jepler> not sure, I don't run it
[21:33:03] <jepler> but it does build
[21:33:11] <alex_joni> ok, enough for now :D
[21:33:45] <alex_joni> you were lots faster than the compile farm :D
[21:35:44] <jepler> ./scripts/emc: line 270: 11813 Segmentation fault $HALCMD unloadusr all
[21:35:46] <jepler> ouch
[21:36:38] <alex_joni> oh-oh
[21:36:46] <jepler> let me make sure I didn't do something dumb
[21:37:13] <alex_joni> try cvs diff
[21:37:20] <alex_joni> my system seems up to date
[21:38:33] <jepler> no, nothing there
[21:39:01] <alex_joni> this is halcmd crapping out?
[21:39:07] <jepler> yes
[21:39:09] <alex_joni> what config did you run?
[21:39:12] <jepler> shouldn't be anything to do with you
[21:39:20] <jepler> configs/sim/tkemc.ini configs/sim/axis.ini
[21:39:20] <alex_joni> maybe I can replicate
[21:39:25] <alex_joni> btw.. did you rebuild?
[21:39:37] <alex_joni> I did change the motion variables
[21:39:43] <jepler> jepler@sofa:~/src/emc2$ ./scripts/realtime start
[21:39:44] <jepler> jepler@sofa:~/src/emc2$ ./bin/halcmd unloadrt all
[21:39:44] <jepler> RTAPI: ERROR: failed to map shmem
[21:39:44] <jepler> HAL: ERROR: could not open shared memory
[21:39:44] <jepler> Segmentation fault
[21:39:47] <jepler> I did a "make clean"
[21:40:35] <alex_joni> try again, and see if all files are gone
[21:41:34] <jepler> I must have done something wrong .. if I figure it out, I'll let you know
[21:41:43] <alex_joni> ok
[21:41:57] <alex_joni> you didn't commit this yet.. right?
[21:42:16] <jepler> commit what?
[21:43:08] <alex_joni> the diff you showed yesterday
[21:43:20] <alex_joni> oh, you did
[21:43:26] <jepler> yes, I did
[21:43:30] <alex_joni> sorry.. I've lost track :)
[21:43:32] <jepler> and in fact the debugger shows it's dying in hal_ready()
[21:44:03] <alex_joni> btw: the latest AXIS works OK with the changes in the spindle code
[21:44:04] <jepler> oh, are you talking about the kinematics changes?
[21:44:15] <alex_joni> no, the hal_ready()
[21:52:21] <jepler> OK, I'm confused. now it works again, and I don't think I changed anything
[21:52:30] <jepler> all I did was walk from the machine where I'd ssh'd in to the machine itself
[21:55:06] <alex_joni> jepler: it's a matter of FEAR
[21:55:14] <alex_joni> I get that on the robots a lot
[21:55:20] <alex_joni> they learned to fear me
[21:55:29] <alex_joni> so when I'm around everything works as it should
[21:56:23] <jepler> hah
[21:56:51] <alex_joni> I just love it when a customer calls that a robot is broken
[21:57:02] <alex_joni> I drive there, and suddenly everything works as it should :D
[21:57:14] <alex_joni> once I waited about an hour till it broke again :))
[21:57:15] <jepler> I know the experience
[21:58:31] <alex_joni> it's also frustrating sometimes :(