Currently a non-trivial kinematics machine remains in joint mode after homing. Jogging without switching to world mode can cause a crash or at least requires re-homing.
I suggest to implement an optional auto-switching to world mode after homing. E.g.
[TRAJ] WORLD_MODE_AFTER_HOMING
which defaults to 1, but can be set to 0 for debugging purpose.
Also, when asked to home in world mode, "must be in joint mode to home" pops. Smarter behavior would be auto-switch to joint mode for (re-)homing and then back to world mode. Might be optional too.
I.e. joint mode should not appear to end user unless intentionally activated.
Which makes a non-trivial machine as simple to control as a trivial.
Is there any good reason at all to stay in joint mode (aka Free mode) after homing, on any kind of machine? I don't know of a reason.
As pkm points out, on non-trivkins machines it's important to switch to world mode immediately after homing. On trivkins machines it doesn't matter if you switch to Teleop (World mode), but it also doesn't hurt.
Therefore i think our GUIs (or maybe Task) should always automatically switch to Teleop mode after homing, with no ini option to turn off this behavior.
So be it.
I guess in case of manual homing it means switching to world mode after the last joint is homed.
We stay in joint mode after homing in order to enable incremental jogs on trivkins machines. World mode lacks incremental jogs (it has continuous jogs only).
I think we should add support for world-mode incremental jogging, then add automatic switching to world-mode after homing. The mode switch should probably be done by Task, so it's consistent for all GUIs.
I support pkm's suggestion to have the controller automatically switch to joint mode when asked to home. That mode switch should probably also be done by Task.
In JA, world mode now has incremental jogging (but not wheel jogging yet).