(reverse-run was backported from master to 2.8 but )
(this related commit was omitted: cherry-pick 3a47be11e)
probably a typo unnoticed to to few users connecting
this pin.
also add motion.tp-reverse to motion man page
New motmod parameter: num_extrajoints
1) An 'extra' joint uses the normal joint homing process but
transfers control to a new hal pin (joint.N.posthome-cmd)
after homing. An independent motion planner/controller
(limit3 component typically) must be employed to manage
the 'extra' joint motion using this input.
2) Includes: simulation configs:
1extrajoint.ini XYYZ (4joints) + 1 extra ( 5 joints total)
2extrajoints.ini XYYZ (4joints) + 2 extra ( 6 joints total)
12extrajoints.ini XYYZ (4joints) + 12 extra (16 joints total)
and example M144 command to set extra joints jN.limit3.in
3) motion man page update
Notes:
1) if num_extrajoints is nonzero, require KINEMATICS_BOTH
in order to make sensible axis gui displays
2) by legacy, [KINS]JOINTS= sets the *total* number of joints
e.g., num_joints + num_extrajoints
Example non-motion source files using [KINS]JOINTS:
a) src/emc/ini/initraj.cc
b) src/emc/usr_intf/halui.cc
c) src/emc/usr_intf/axis/scripts/axis.py
------------------------------------------------------------
updates:
rebased to origin/master ae6e7e00a Thu Sep 5 22:27:20 2019 -0700
1) report numExtraJoints to task
2) axis.py update joint jog radiobuttons for homing
3) use #define for ALL_JOINTS,NO_OF_KINS_JOINTS,IS_EXTRAJOINT
4) axis.py formerly would not 'unhome all' unless machine on
5) add demo ini for 16 joints (12 extra)
6) glcanon.py posstrs minor format
------------------------------------------------------------
Anticpated support for 'extra' joints can use a number of joints
that exceeds the number of axes used (maxium of 9 for coordinates
xyzabcuvw).
Test increasing EMCMOT_MAX_JOINTS (64bit OS) using
configs/sim/axis/extrajoints/demo1.ini:
EMCMOT_MAX_JOINTS = 9 ==> sizeof EMC_STAT = 14816
EMCMOT_MAX_JOINTS = 16 ==> sizeof EMC_STAT = 16336 <--
Message size for emcStatus is allocated in configs/common/linuxcnc.nml:
B emcStatus SHMEM localhost 16384 0 0 2 16 1002 TCP=5005 xdr
From 2.7 (77309ebf9) to master (0f67445fa) the sizeof EMC_STAT
for 9 joints max has grown by about 2500 bytes
(14816-12304=2512). The message size allocation of 16384
(4 4096sized pages) is marginal for 16 joints. This commit
indreases this size to 20480 leaves (20480-16336)=4144 bytes
for future growth.
Notes:
1) EMC_STAT includes:
EMC_MOTION_STAT
EMC_TRAJ_STAT
EMC_JOINT_STAT joint[EMCMOT_MAX_JOINTS]
EMC_AXIS_STAT axis[EMCMOT_MAX_AXIS]
EMC_SPINDLE_STAT spindle[EMCMOT_MAX_SPINDLES]
int synch_di[EMCMOT_MAX_DIO]
int synch_do[EMCMOT_MAX_DIO]
double analog_input[EMCMOT_MAX_AIO]
double analog_output[EMCMOT_MAX_AIO]
int debug
int on_soft_limit
int external_offsets_applied
EmcPose eoffset_pose
2) Tested on:
a) Debian GNU/Linux 10 (buster)
4.19.0-5-amd764 (uspace sim)
b) Debian GNU/Linux 9.3 (stretch)
4.9.0-5-rt-amd64 #1 SMP PREEMPT RT Debian 4.9.65-3+deb9u2 x86_64
c) VirtualBox: Debian GNU/Linux 7.9 (wheezy)
3.4-9-rtai-686-pae #1 SMP PREEMPT Debian 3.4.55-4linuxcnc i686
(sizeof EMC_STAT = 15592 rtai,32bit)
d) Debian GNU/Linux buster/sid
4.19.0-1-amd64 #1 SMP Debian 4.19.12-1 x86_64
3) fix runtests that are hardcoded for the number of joints:
interp/m98m99/12-M99-endless-main-program
motion-logger/basic adapt
motion-logger/mountaindew
4) axis gui (axis.py) updated to display up to 16 joint radio
buttons and can display 16 joint values in preview and DRO
tabs.
(Future increases of EMCMOT_MAX_JOINTS beyond 16 will require
additional changes to display all joints in the DRO tab and
in the Preview created by glcanon.py)
5) tested guis touchy,gmoccapy,gscreen,tklinuxcnc to verify that
*existing* sim configs continue to startup.
Over time, the motion man page has become a little
inconsistent in ordering so this commit:
1) Order pins listed in [MOTION],[AXIS],[JOINT],[SPINDLE]
sections in the same order as they appear for:
$ halcmd show pin
2) Joint pins in section 'DEBUGGING PINS' moved to the
'JOINT PINS' section and marked individually as '(DEBUG)'
Retain note that they "are subject to change or removal"
3) Orders parameters for [MOTION] in the order they appear
for:
$ halcmd show param
4) fix other minor omissions and inconsistencies as found
rebased to master at:
0cab36566 Thu Oct 18 22:56:02 2018 +0100
Note: eoffset_pid additions moved to a separate branch dgarr/eoffset_pid
Docs: docs/src/motion/external-offsets.txt
Hal pins (input interface is similar to wheel jogging pins):
axis.L.eoffset-enable Input (bit): enable
axis.L.eoffset-scale Input (float): scale factor
axis.L.eoffset-counts Input (s32): request is accumulated counts*scale
axis.L.eoffset-clear Input (bit): clear request
axis.L.eoffset Output (float): current external offset
axis.L.eoffset-request Output (float): requested external offset (debug pin)
motion.eoffset-active Output (bit): non-zero external offsets applied
motion.eoffset-limited Output (bit): limited by soft limit
Hal components:
eoffset_per_angle.comp
Sim configs (configs/sim/axis/external_offsets/)
eoffset_demo.ini (XYZ ext offsets)
jwp_z.ini (jog-while-pause Z)
dynamic_offsets.ini (dynamic Z)
opa.ini (X ext offset per C angle)
Notes:
1) see docs/src/motion/external_offsets.txt for usage restrictions
man updated: motion.9
new manpage: offset_per_angle.9 (auto by halcompile)
2) In canon.hh, option:
#undef STOP_ON_SYNCH_IF_EXTERNAL_OFFSETS
#define STOP_ON_SYNCH_IF_EXTERNAL_OFFSETS
forces a stop on any synch() if non-zero external
offsets.
3) In command.c, using ALT_EOFFSET_BEHAVIOR for cont/incr jogs
Squash notes:
a) eliminate synch() restrictions
Prior synch() restrictions are eliminated by changing the
way that external offsets are removed from the current position
information used by the interpreter.
Stopping on synch() with external offset applied may
be enabled at compile-time using an option defined
in nml_intf/canon.cc:
#define STOP_ON_SYNCH_IF_EXTERNAL_OFFSETS
This option will be removed in the future.
b) eoffset_per_angle.comp: support multiple instances
* origin/2.7:
docs: note that G38 probe results #5061-#5069 are in work coords
docs: refer to the G38 family of probe moves as "G38.n", not "G38.x"
docs: tidy up description of probe result params
simplify comments in canon.hh, no code changes
pid: use command-deriv when supplied
Update about-linuxcnc.txt
Docs: add more information to coolant control m code
Conflicts:
docs/man/man9/motion.9
docs/src/gcode/overview.txt
groff treats '-' (the character you get when you hit the "minus" key on
the keyboard) as "hyphen", not as "minus". Thus it renders incorrectly
in some locales, and line-wraps strangely.
groff treats the two-character sequence "\-" as "minus", and the
four-character sequence "\(hy" as "hyphen".
Details here: https://lists.debian.org/debian-devel/2003/03/msg01481.html
This commit replaces every instance of "-" in our manpages where the
meaning is "minus" with "\-", so it works right.
This fixes many lintian warnings.
Conflicts:
src/emc/usr_intf/axis/scripts/linuxcnctop.py
I resolved this merge conflict by using the version of linuxcnctop.py
from Jeff's original master-based linuxcnctop-stretch-leak branch instead.
new motion hal pins:
axis.L.jog-accel-fraction
joint.N.jog-accel-fraction
Hal pins specify reduced acceleration for wheel jogging to reduce
impulsive motion when jog count changes occur at low frequency.
The pins specify a fraction (between 0 and 1) of the corresponding
ini setting for [*]MAX_ACCELERATION. Values less than zero or
more than 1 are ignored.
When jog-counts are increased/decreased slowly, the use of full
acceleration can cause disconcerting motion or shaking on machines
with high acceleration capabilities. This feature may be used
with or without auxiliary lowpass filtering of the *.jog-counts
inputs.
Note: Lowpass filtering of jog-counts smooths motion when
jog-counts changes are sustained but is less effective for single
event or low frequency count changes because the leading/trailing
accel occurs at the ini setting for max_acceleration.
Some complicated systems take advantage of the
provisions for synchronizing the final joint homing
moves as controlled by negative [JOINT_N]HOME_SEQUENCE=
ini file items. Candidate systems include gantries
with two motors for an axis, delta robots, hexapods,
etc.
By default, the synchronization provisions also
disallow *joint* jogging prior to homing in order to
prevent jog activity that (unless executed with much
care) can misalign the machine (gantry racking for
example).
System integrators may want to allow *joint* jogging
prior to homing with some hal logic that dynamically
alters the [JOINT_N]HOME_SEQUENCE= items. Such logic
can assert the motion.homing-inhibit pin to ensure
homing is not initiated under certain conditions.
Example: synced joints 0,1 using sequence -1 for
synced homing with a switch (allow_jjog) to select sequence 1 for
*joint* jogging before homing (partial hal code):
setp mux.in0 -1
setp mux.in1 1
net home_seq <= mux.out
net home_seq => ini.0.home_sequence
net home_seq => ini.1.home_sequence
net hsequence_select <= allow_jjog
net hsequence_select => mux_sel
net hsequence_select => motion.homing-inhibit
Note that ini hal pins are not available until milltask
starts so execution of the above hal commands may need
to be deferred using an [APPLICATION]APP= script or a
a postgui halfile.
Thanks to pkmcnc for suggestion.
1) before this commit, hal pins axis.L.pos-cmd were
only valid for teleop, now update in
control.c/output_to_hal() so pins are valid for
coordinated motion too.
2) rename to conform to actual implementation:
was: axis.L.vel-cmd
is: axis.L.teleop-vel-cmd
Signed-off-by: Dewey Garrett <dgarrett@panix.com>
ini-config.txt update for joints/axes
core-components.txt update motion joints/axes
refer to motion man page instead of
listing pins in two places
iniaxis.cc remove unused items:
[TRAJ]AXES no longer used
[AXIS_n]HOME
inihal.cc remove some refs
Signed-off-by: Dewey Garrett <dgarrett@panix.com>
Unlock pins:
joint.N.unlock
joint.N.is-unlocked
may be needed for locking indexers (typically a rotary joint).
Previously, unlock pins were created based on the convention
for rotary axes (A,B,C).
For joints_axes branch, use a parameter to cause creation
of the unlock pins.
New parameter: unlock_joints_mask=
Example: loadrt motmod ... unlock_joints_mask=0x38
for joints 3,4,5
Signed-off-by: Dewey Garrett <dgarrett@panix.com>
After the removal of heuristic overrun detection, this param's value
was never changed from 0.
As noted clearly in the documentation, this parameter was for debugging
and subject to removal at any time, so we don't need to wait to remove
it.
Signed-off-by: Jeff Epler <jepler@unpythonic.net>
when motion creates the base and servo thread,
the base thread doesn't support floating point.
When using brushless DC motors, it is desireable
to run the bldc component faster than the servo
thread, but it needs FP. Added an module parameter
to motion that tells it to create a floating point
capable base thread. Default behavior is the same
as before, so change is transparent.