#linuxcnc-devel | Logs for 2013-10-14

[11:23:49] <KGB-linuxcnc> 03git 05master e2e7c8e 06linuxcnc 10src/emc/rs274ngc/pyemctypes.cc * interp/python: make EmcPose and PmCartesian instantiable
[11:32:55] <mhaberler> jepler: around? I'd need to discuss an efficiency idea re access to EMC_STAT, wonder what you think
[11:33:44] <mhaberler> cradek: looks like drogge gets tool wear offset fanuc-style to work with a pure Python remap of Tn
[11:36:48] <cradek> that's good news for his users who want that, and also for us who want to avoid hardcoding such a thing
[11:41:22] <mhaberler> right, we got around fiddling interp c++ code at last
[11:41:50] <mhaberler> btw he likes the tlo-applied-in-motion idea :)
[11:42:31] <mhaberler> jepler: just typing away anyway..
[11:43:32] <mhaberler> situation now: per-process updates of EMC_STAT, sometimes 2 of them (Axis: once in tcl/linuxcnc.so, once in emcmodule.cc); one more in gladevcp, and one more in hal_manualtoolchange
[11:45:02] <mhaberler> since I have to rework access to EMC_STAT anyway, I was considering moving the data to a shm segment which would be mapped r/o by using entities like UI's - so we're down to 1 update per machine, not per process
[11:45:58] <mhaberler> in the remote case there'd be updates over zmq/pb, probably incrementally as changes happen
[11:47:52] <mhaberler> the other option I followed so far was to do per-process incremental updates, but that strikes me as rather inelegant as all of EMC_STAT is to be read-only for clients (not for task of course, and the usrmot and iotaskintf updaters)
[11:49:59] <mhaberler> the more I think of it, the less I see downsides; it would guarantee all clients see the same data, which the current scheme does not (depends on update invocation time; for instance in axis its theoretically possible for tcl/linuxcnc.so to see different status than emcmodule.cc - at least for a short time period)
[11:50:35] <mhaberler> by mapping the segment read-only, clients going haywire cant damage anything, juse segfault
[11:55:29] <mhaberler> since right now emcstatbuffer in NML is in shared memory anyway, the only thing that goes away is the periodic copying, which I dont see any use case for - it looks like a NML artefact
[11:55:43] <mhaberler> example: shcom.cc:sendMachineOn() - what would change is:
[11:56:28] <mhaberler> emcCommandBuffer->write(state_msg) goes away, replaced by sending a protobuf message over a zmq socket
[11:57:57] <mhaberler> now in emcCommandWaitDone() and emcCommandWaitReceived() the updateStatus() call gets removed, since no need to update - it's up-to-date already
[11:59:16] <mhaberler> this rests on the assumption that for clients EMC_STATUS is read-only; I would think anything else is a coding error to start with
[12:00:10] <mhaberler> I would think it could drop CPU & memory usage of UI's a bit too
[12:00:21] <mhaberler> question: do you see this as rosy as I do?
[12:10:42] <mhaberler> hm, looking at the code it looks like emcStatus actually points to shared memory already, so the copying I mentioned above doesnt look like it actually happens; meaning just dropping the NML class draping around EMC_STAT and making it a POD struct is all thats needed
[12:13:06] <mhaberler> which, btw, opens the route for motion to directly update what used to be EMC_MOTION_STAT and EMC_TRAJ_STAT - the motion->usrmot path which does this arcane copying ("split read detection" and all) isnt needed anymore
[12:14:05] <mhaberler> I originally looked at dumping 38K lines under src/libnml and friends, but it could be more ;)
[12:15:55] <mhaberler> this is btw exactly what HAL does - write in RT, read in userland over shm _directly_
[12:20:32] <mhaberler> well that idea I need to think more about; what usrmotintf actually does is detect a timeslot where neither motion.controller nor motion.command-handler are active.
[12:25:10] <mhaberler> meaning that part is transactional. Drop the direct motion update idea for now. The idea - EMC_STAT replaced by POD in shm remains valid.
[12:37:34] <mhaberler> silly command of the day: type 'sudo halt' into wrong window
[12:46:04] <t12> beats a rm -rf something * instead of something.*
[22:04:42] <skunkworks_> logger[mah]:
[22:04:42] <logger[mah]> skunkworks_: Log stored at http://linuxcnc.mah.priv.at/irc/%23linuxcnc-devel/2013-10-15.html
[22:27:17] <seb_kuzminsky> i just pushed joints_axes4! finally :-)
[22:27:57] <KGB-linuxcnc> 03alex_joni 05joints_axes4 1d7b045 06linuxcnc 10src/emc/ini/iniaxis.cc * test branch creation
[22:27:58] <KGB-linuxcnc> 03alex_joni 05joints_axes4 e6c6be8 06linuxcnc 10configs/ 10scara/scara.ini 10scara/scara_sim_4.hal
[22:27:58] <KGB-linuxcnc> scara config - doesn't run atm, but eventually the code should support such a config
[22:28:05] <KGB-linuxcnc> 03alex_joni 05joints_axes4 7bcb8b5 06linuxcnc 10src/emc/nml_intf/emc.hh * changed message names from _AXIS_ to _JOINT_
[22:28:12] <KGB-linuxcnc> 03alex_joni 05joints_axes4 2947e6d 06linuxcnc 10src/ 10(28 files in 6 dirs) * first pass at fixing joints/axes issues. doesn't quite compile yet..
[22:28:20] <KGB-linuxcnc> 03alex_joni 05joints_axes4 f53212a 06linuxcnc 10src/emc/ 10(6 files in 5 dirs)
[22:28:23] <KGB-linuxcnc> add a couple of hacks (and further fixes) to make it compile/run. grep for FIXME-AJ for remaining issues
[22:28:31] <KGB-linuxcnc> 03alex_joni 05joints_axes4 0205181 06linuxcnc 10src/emc/ 10(8 files in 2 dirs)
[22:28:34] <KGB-linuxcnc> started changing jogging NML commands (EMC_JOG_CONT, EMC_JOG_INCR, EMC_JOG_ABS and EMC_JOG_STOP)
[22:28:43] <KGB-linuxcnc> 03alex_joni 05joints_axes4 92c3561 06linuxcnc 10src/emc/nml_intf/emc.hh * fix function names for jogging
[22:28:49] <KGB-linuxcnc> 03alex_joni 05joints_axes4 61afe32 06linuxcnc 10src/emc/task/ 10emctaskmain.cc 10taskintf.cc
[22:28:52] <KGB-linuxcnc> changed jogging NML commands (EMC_JOG_CONT, EMC_JOG_INCR, EMC_JOG_ABS and EMC_JOG_STOP)
[22:29:00] <KGB-linuxcnc> 03alex_joni 05joints_axes4 c8a9227 06linuxcnc 10src/emc/usr_intf/axis/extensions/emcmodule.cc
[22:29:04] <KGB-linuxcnc> update AXIS for changed jogging NML commands (EMC_JOG_CONT, EMC_JOG_INCR, EMC_JOG_ABS and EMC_JOG_STOP)
[22:29:13] <KGB-linuxcnc> 03alex_joni 05joints_axes4 84d4751 06linuxcnc 10src/emc/ 10motion/command.c 10motion/motion.h 10nml_intf/emc.hh 10task/taskintf.cc
[22:29:16] <KGB-linuxcnc> remove *teleop_vector*, those will be handled by regular jog messages (with motion controller in TELEOP mode, not in joint mode)
[22:29:26] <KGB-linuxcnc> 03alex_joni 05joints_axes4 e143b21 06linuxcnc 10src/emc/usr_intf/axis/extensions/emcmodule.cc * remove comment, it has been fixed
[22:29:33] <KGB-linuxcnc> 03alex_joni 05joints_axes4 14f3762 06linuxcnc 10src/emc/motion/emcmotglb.c * remove an older reference for num_joints (unused ..)
[22:29:39] <KGB-linuxcnc> 03alex_joni 05joints_axes4 c091f5e 06linuxcnc 10src/emc/nml_intf/emccfg.h * add default values for AXIS vel & acc limits
[22:29:46] <KGB-linuxcnc> 03alex_joni 05joints_axes4 36c8f2e 06linuxcnc 10src/emc/ 10nml_intf/emcglb.c 10nml_intf/emcglb.h * fix having values for AXIS vel & acc limits
[22:29:53] <KGB-linuxcnc> 03alex_joni 05joints_axes4 b79489e 06linuxcnc 10src/emc/nml_intf/emcglb.h * reenable EMC_AXIS_MAX
[22:29:59] <KGB-linuxcnc> 03alex_joni 05joints_axes4 49b3df6 06linuxcnc 10src/emc/ 10ini/emcIniFile.cc 10ini/iniaxis.cc 10ini/iniaxis.hh 10ini/inijoint.cc
[22:30:02] <KGB-linuxcnc> - reenable iniAxis* used for reading additional things from AXIS_X, Y, .. sections
[22:30:05] <KGB-linuxcnc> in the ini.
[22:30:07] <KGB-linuxcnc> these are things like:
[22:30:10] <KGB-linuxcnc> * carthesian HOME position
[22:30:12] <KGB-linuxcnc> * MIN/MAX limits (for box shaped workspace limiting)
[22:30:15] <KGB-linuxcnc> * MAX_VEL/ACC for carthesian speed/accel limiting
[22:30:18] <KGB-linuxcnc> - replace EMC_JOINT_LINEAR and ANGULAR with EMC_LINEAR and EMC_ANGULAR
[22:30:20] <KGB-linuxcnc> (they are used for joints, but also for axes in some places)
[22:30:47] <KGB-linuxcnc> 03alex_joni 05joints_axes4 0d9e67c 06linuxcnc 10src/emc/ 10nml_intf/emc.hh 10nml_intf/emcops.cc
[22:30:50] <KGB-linuxcnc> * add taskintf functions for setting Axis related things (min/max position, max vel/acc..)
[22:30:53] <KGB-linuxcnc> * change EMC_JOINT_LINEAR to EMC_LINEAR (same for ANGULAR): sometimes used for AXES too
[22:31:05] <KGB-linuxcnc> 03alex_joni 05joints_axes4 17f04c1 06linuxcnc 10src/emc/task/emctaskmain.cc * add a comment about some wrongly done limit checks
[22:31:11] <KGB-linuxcnc> 03alex_joni 05joints_axes4 baaa01f 06linuxcnc 10src/emc/task/taskintf.cc * add functions related to axis things (min/max limits, max vel/acc)
[22:31:18] <KGB-linuxcnc> 03alex_joni 05joints_axes4 f8444a2 06linuxcnc 10src/emc/ 10usr_intf/axis/extensions/emcmodule.cc 10usr_intf/emcrsh.cc 10usr_intf/emcsh.cc
[22:31:21] <KGB-linuxcnc> replace EMC_JOINT_LINEAR with EMC_LINEAR (same for ANGULAR), sometimes used for axes-related things too
[22:31:30] <KGB-linuxcnc> 03alex_joni 05joints_axes4 0e944f9 06linuxcnc 10src/emc/usr_intf/axis/scripts/axis.py
[22:31:34] <KGB-linuxcnc> a minor hack (disabling axis extents) so that the scara config runs again. will look at fixing it properly later - along with the rest of the places where joints/axes are still mixed
[22:31:46] <KGB-linuxcnc> 03jmkasunich 05joints_axes4 e1aa6f7 06linuxcnc 10src/ 10(5 files in 2 dirs)
[22:31:47] <KGB-linuxcnc> merge the 'new-telop' branch into 'joints_axes', two branches for such similar work is dumb
[22:31:56] <KGB-linuxcnc> 03alex_joni 05joints_axes4 05459a7 06linuxcnc 10TODO * note some ideas
[22:32:02] <KGB-linuxcnc> 03alex_joni 05joints_axes4 e6851fc 06linuxcnc 10(6 files in 5 dirs)
[22:32:04] <KGB-linuxcnc> a hack to make scara config start - jogging in world mode needs work, startup code to load joints/axes needs rethinking
[22:32:13] <KGB-linuxcnc> 03cradek 05joints_axes4 5a498d1 06linuxcnc 10src/emc/ 10(8 files in 5 dirs) * additional changes to make it build after the big rebase
[22:32:21] <KGB-linuxcnc> 03cradek 05joints_axes4 6461ca2 06linuxcnc 10configs/sim/axis/axis.ini 10src/emc/usr_intf/axis/scripts/axis.py 10src/emc/usr_intf/emcsh.cc 10src/emc/usr_intf/shcom.hh * additional changes to make it RUN now
[22:32:29] <KGB-linuxcnc> 03cradek 05joints_axes4 5b0cf94 06linuxcnc 03src/emc/ini/inijoint.hh
[22:32:31] <KGB-linuxcnc> Revert "Revert "rebase joint_axes branch which also has the changes from new-telop branch""
[22:32:40] <KGB-linuxcnc> 03micges 05joints_axes4 df780d6 06linuxcnc 10src/emc/motion/motion.c
[22:32:43] <KGB-linuxcnc> Change HAL pin names from axis.nn to joint.nn
[22:32:45] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:32:56] <KGB-linuxcnc> 03micges 05joints_axes4 7f0df07 06linuxcnc 10configs/ 10(71 files in 35 dirs)
[22:32:59] <KGB-linuxcnc> change sample configs to follow motion pin names change axis.nn => joint.nn
[22:33:02] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:33:12] <KGB-linuxcnc> 03micges 05joints_axes4 d06f96f 06linuxcnc 10src/emc/usr_intf/axis/scripts/axis.py
[22:33:15] <KGB-linuxcnc> update joint pins names
[22:33:18] <KGB-linuxcnc> enable 'Home all' button
[22:33:21] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:33:33] <KGB-linuxcnc> 03micges 05joints_axes4 b9488f6 06linuxcnc 10src/emc/ 10(6 files in 4 dirs)
[22:33:36] <KGB-linuxcnc> Allow to separately define joints and axes counts in infile
[22:33:38] <KGB-linuxcnc> - both joints and axes counts are in traj status
[22:33:42] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:33:53] <KGB-linuxcnc> 03micges 05joints_axes4 f819c9c 06linuxcnc 10src/emc/ 10ini/inijoint.cc 10task/taskintf.cc * Add joints config debug code
[22:34:01] <KGB-linuxcnc> 03micges 05joints_axes4 09f5a46 06linuxcnc 10src/emc/ini/inijoint.cc
[22:34:03] <KGB-linuxcnc> Remove reading single joints units
[22:34:06] <KGB-linuxcnc> they are defined now globally in TRAJ section
[22:34:09] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:34:22] <KGB-linuxcnc> 03micges 05joints_axes4 5ce5173 06linuxcnc 10src/emc/ini/inijoint.cc * Remove limit of joint counts <= axis counts in inifile
[22:34:28] <KGB-linuxcnc> 03micges 05joints_axes4 3fb104b 06linuxcnc 10src/emc/ 10ini/iniaxis.cc 10ini/iniaxis.hh
[22:34:31] <KGB-linuxcnc> Remove duplicated check for correct axis index
[22:34:34] <KGB-linuxcnc> - remove unused code
[22:34:36] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:34:49] <KGB-linuxcnc> 03micges 05joints_axes4 65e4ea7 06linuxcnc 10src/emc/ 10ini/iniaxis.cc 10task/taskintf.cc
[22:34:52] <KGB-linuxcnc> Add debugging to axis config functions
[22:34:55] <KGB-linuxcnc> Enable reading axes config from inifile
[22:34:57] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>
[22:35:11] <KGB-linuxcnc> 03micges 05joints_axes4 5d86149 06linuxcnc 10src/emc/ 10(9 files in 4 dirs) * Remove duplicate defines of max joints and max axes
[22:35:17] <KGB-linuxcnc> 03micges 05joints_axes4 dd0c42a 06linuxcnc 10src/emc/ 10ini/iniaxis.cc 10nml_intf/emcglb.h 10task/taskintf.cc
[22:35:20] <KGB-linuxcnc> Removed unused EMC_SET_DIO_INDEX and EMC_SET_AIO_INDEX messages
[22:35:23] <KGB-linuxcnc> Remove some unused variables
[22:35:25] <KGB-linuxcnc> Signed-off-by: Michael Geszkiewicz <micges@wp.pl>