TL;DR: I just pushed joints_axes4. Please stop using joints_axes3, use
joints_axes4 instead. Please don't merge anything into joints_axes4.
Acknowledgements:
First of all, many thanks to the folks that have worked (for 5.5 years!)
on the awesome feature in the joints_axes3 branch:
Michael Geszkiewicz, Chris Radek, Alex Joni, Jeff Epler, Stephen
Willie-Padnos, John Kasunich, and John Thornton.
What I did:
At long last, i have pushed the new joints_axes4 branch to git.linuxcnc.org.
I created this branch by rebasing joints_axes3 onto master. The
motivation was to make a clean linear history for us to review, and
possibly to rebase the branch again (and again) to fix bugs and other
problems that were introduced during the five and a half years of
development.
I tried to keep the commits in ja4 as similar to the commits in ja3 as
possible, but obviously many commits had to change somwhat. Most of the
differences between the original commits in ja3 and the "derived" ones
in ja4 consisted (logically) of taking changes made by a merge commit in
ja3 and moving them backwards in history to the relevant commit in ja4.
joints_axes4 contains all the non-merge commits in joints_axes3, but
with a linear history.
joints_axes4 is based on the commit in master that was most recently
merged into joints_axes3. I'm thus able to verify that I didn't mess up
the rebase by comparing the final working trees of joints_axes3 and
joints_axes4 - they should be identical.
But... They're not. There are a few hundred lines of diffstat between
them. All the differences are improvements in ja4 - removal of merge
turds, removal of incorrectly resolved merge conflicts, etc. Many of
the errors in joints_axes3 were introduced by me, in various merges. :-(
At the end of this email is a complete inventory of the differences
between ja3 and ja4, and why I think ja4 is better (sorry if i botch the
formatting on this list).
Where we go from here:
Please stop development on joints_axes3 - that branch should now be
considered read-only, and will eventually be removed.
Use joints_axes4 instead. This branch is now open for development! Any
commits you have that are based on joints_axes3 should rebase or
cherry-pick without problem to joints_axes4.
Don't merge anything into joints_axes4. Let's keep the history straight
and simple. If you really want to combine it with some other branch, do
so in a throw-away integration test branch. I repeat: do not push merge
commits to the joints_axes4 branch.
Please join me in reviewing and testing ja4. If you find a problem with
a commit in it, please push a new commit that fixes the problem, and
note in the commit message which old commit your new commit fixes. If
you find a problem that's not easily attributable to an older commit,
push the fix as a new commit anyway.
If/when we all feel confident in joints_axes4 (or in some future
larger-numbered descendant), we'll merge it into master for inclusion in
the upcoming 2.6 release.
-------------------------------------------------------------------------------
$ git diff --stat -p joints_axes3..joints_axes4
configs/max/max.hal | 68 +++++-----------------------
configs/motenc/motenc_motion.hal | 4 +-
configs/sim/axis/axis.ini | 36 ++++++++++-----
configs/sim/axis/axis_9axis.ini | 65 ++++++++++++++++++--------
configs/sim/axis/axis_mm.ini | 41 ++++++++---------
src/emc/motion/control.c | 34 ++++----------
src/emc/motion/motion.c | 4 +-
src/emc/nml_intf/canon.hh | 3 ++
src/emc/nml_intf/emc.hh | 30 ------------
src/emc/usr_intf/emcsh.cc | 10 ++--
src/emc/usr_intf/halui.cc | 25 ++++++----
11 files changed, 138 insertions(+), 182 deletions(-)
configs/max/max.hal
Commit c44fdf6d481f4b3c19c1a52c3ede432fdfdfce75 merges master
into ja3 and adds a bunch of merge turds.
configs/motenc/motenc_motion.hal
Commit 4011e450979a4b636a67c785ac63d5eb22053496 merges master
into ja3 and introduces a copypasta error.
configs/sim/axis/axis.ini
configs/sim/axis/axis_9axis.ini
configs/sim/axis/axis_mm.ini
in ja3, a15ab9fd610b6f425e495a56ec16c71f0866bb45 merges master
after the sim/axis configs moved. The merge has conflicts on
sim/axis.ini, sim/axis_9axis.ini, and sim/axis_mm.ini, and the
resolution removes those files, thus losing all the ja3-specific
changes made earlier. ja4 does not have a merge, and all the
.ini config changes were done with that rename already done,
so the joints_axes changes were applied to the new files.
Additionally, ja3 commit
0b34a605d9485a978f7758f0193171e0ea1cdad9 modifies
configs/sim/axis_9axis.ini but accidentally leaves behind
"[AXIS_0]" which obviously is wrong, so i took that out.
src/emc/motion/control.c
print_pose() is in ja3 but not ja4:
Commit 8b543dc77bafd1a02b6907edc1ad8ad3dc9fc9b0 merges
master into joints_axes3, but it fails to remove
print_pose() from control.c, even though this function was
removed in master before that merge.
print_pose() is never used, so the ja4 branch does not
bother to reproduce this merge error.
process_probe_inputs() in ja4 double-negates
emcmot_hal_data->probe_input, but ja3 does not:
ja3 moved the process_probe_inputs() function, which
confused git's merge, which confused me.
master double-negates the pin when reading it (commit
b775d509786ae48c398bc21736be3ecae97dee73, "Further fix
for bug 3040806"), so ja4 does too. ja3 should have too,
after merge commit 8122b6069bc62a03f9768c990acf87b0071ac460,
but i botched it.
process_probe_inputs() in ja4 moves the call to tpAbort() in the
"read probe inputs" block:
The tpAbort() call was moved in master in commit
40dc95e48118ae2c58f65c8563a72c175131e0c2 "Set flags
before aborting motion", but accidentally dropped
in ja3 during the merge of that commit into ja3,
8122b6069bc62a03f9768c990acf87b0071ac460.
process_probe_inputs() in ja4 adds a check for
"if(probe_whenclears)", which is missing in ja3:
This was added in master, but dropped in my merge of
master into ja3 (8122b6069bc62a03f9768c990acf87b0071ac460).
What was i smoking?
process_probe_inputs() in ja4 has a translatable g38.2 error
string, but in ja3 the error string is not translatable:
Changed in master, erroneously dropped in my merge
8122b6069bc62a03f9768c990acf87b0071ac460.
process_probe_inputs() in ja4 has different "Probe tripped
during non-probe MDI command" handling:
Changed in master, erroneously dropped in my merge
8122b6069bc62a03f9768c990acf87b0071ac460.
process_probe_inputs() in ja4 has translated "Probe tripped
during *" messages (non-probe MDI, homing, jog):
Changed in master, erroneously dropped in my merge
8122b6069bc62a03f9768c990acf87b0071ac460.
src/emc/motion/motion.c
Commit 8437496a54180fb59aa24581f9c48ab28f789428 merges master
into ja3 after master has gotten locked rotary support, and
introduces a bug: incorrect return value when motion init fails
to create joint pins).
In ja4, the locked rotary support preceedes all
joints_axes modifications, so I fixed it in ja4's commit
08f8342625cde1423bba5f3621ecd929db7b133a ("Cleanup of motion
code to prepare for deeper modifications"). This is the same
commit that changes all the rest of motion joint init.
src/emc/nml_intf/canon.hh
ja3 moved a bunch of canon globals into structs (commit
7a48f785019279058d98e045d002a99806e5a9dd, "Change globals
canon variables into one struct CanonConfig_t"). Later, master
added comments to some of the variables that ja3 moved (commit
1113a06a65f3b2e9d824157acc7b4fdb2887a739, "Fix incorrect spindle
direction after g43 in css+m4 mode"). The next merge of master
into ja3 dropped the comments.
In ja4, the move from globals to structs happened after the
comments were added, so i moved the comments along with the
variables that they describe.
src/emc/nml_intf/emc.hh
The EMC_SET_DIO_* and EMC_SET_AIO_* enums and the
EMC_VERSION_* #defines were removed in master (commit
ec24e13770d6bf04005d254e3fd46d2372895bed). That commit was
merged into ja3 in commit
a9f21bc0dce5ffc3fd23db3c874eaefdc78286e6, but those hunks got
dropped.
ja4 is based on a version of master after those things got
removed, and i didn't add them back in, to track master.
src/emc/usr_intf/emcsh.cc
Minor cosmetic differences in usage strings, all improvements
over ja3.
src/emc/usr_intf/halui.cc
The EMC_JOINT_UNHOME_MSG message got misnamed in ja3 commit
b200779f2808a8aaa93479203728afc111bd4eff, looks like a
cut-n-paste error. Fixed in ja4.
sendJointInc() vs sendJointIncr()
sendJogIncr() went away in master in 2006
Then ja3 was branched off master
sendJogIncr() was added in ja3
sendJogInc() was added in master in 2011
(f33f151f169e970e6362cf7f6f47b81bc3e541cd)
when master was merged into ja3, the ja3 name for the
function was kept, but since ja4 is based on a newer
version of master that already has sendJogInc(), i decided
to keep the name from master.
I also kept two extra argument sanity checks that are in
master but that got dropped when master was merged into ja3
-------------------------------------------------------------------------------
--
Sebastian Kuzminsky
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers