Skip to content

Fix for ramping acceleration bug#8

Closed
robEllenberg wants to merge 2840 commits into
LinuxCNC:masterfrom
robEllenberg:hotfix/final-velocity-estimation-mk
Closed

Fix for ramping acceleration bug#8
robEllenberg wants to merge 2840 commits into
LinuxCNC:masterfrom
robEllenberg:hotfix/final-velocity-estimation-mk

Conversation

@robEllenberg

Copy link
Copy Markdown
Collaborator

I made a subtle mistake in the code that chooses whether to use trapezoidal or ramped acceleration, which can lead to strange behavior when using spindle-synced motion. The result was that short segments would sometimes be ramped up over a very long time (~20 seconds). This fix corrects the final velocity estimation so that this doesn't happen.

mhaberler and others added 30 commits December 29, 2014 20:57
emc/rs274ngc: fix compile problem with newer boost version
3e96abf Merge pull request LinuxCNC#9 from strahlex/halrcomp-no-create
a9c12fb for-proto: add no_create flag to Component submessage

git-subtree-dir: src/machinetalk/proto
git-subtree-split: 3e96abf
…g set

this makes creating UI's matching the HAL config a bit easier
Machinetalk: Add paramter to HAL remote component bind to prevent component creation
This will make cython a build requirement.

see also machinekit#318
hal/cython: remove precompiled files
machinetalk/haltalk: enabled zeroconf announcement on loopback device
cpp stringification created an invalid descriptor when using
parentheses
hal/drviers/7i90: unbreak loading of the driver
Also add an ini file field and allow user variance of arc tolerances
within preset limits
Default tolerance set to figure 2 * 0.001 * sqrt(2) for inch,
and 2 * 0.01 * sqrt(2) for mm.

This would mean that any valid arc where the endpoints and/or
centerpoint got rounded or truncated to 0.001 inch or 0.01 mm
precision would be accepted.

This behavior is the root of the problem with some CAM generated code.

Minimum tolerance capped at 1 micron and equivilent imperial.

Signed-off-by: Mick Grant<arceye@mgware.co.uk>
Fix metric arc tolerence to same value as imperial
Signed-off-by: Charles Steinkuehler <charles@steinkuehler.net>
Added support for using BeagleBone P8/P9 header pin numbers instead
of kernel GPIO numbers offset by 32

Signed-off-by: Charles Steinkuehler <charles@steinkuehler.net>
Signed-off-by: Charles Steinkuehler <charles@steinkuehler.net>
Allow exported hal names to use a configurable prefix.
The default hal_pru_generic is long enough it causes names exported
by the encoder to be truncated resulting in name colision which then
prevents the module from loading.

Signed-off-by: Charles Steinkuehler <charles@steinkuehler.net>
Signed-off-by: Charles Steinkuehler <charles@steinkuehler.net>
zultron and others added 22 commits February 6, 2015 01:50
Use `autoreconf` in `autogen.sh` and remove generated `aclocal.m4` so
that autoconf will use system-installed m4 macros.

Remove unneeded `m4_include` statements.
Replace NIH use of `pkg-config` with `PKG_CHECK_MODULES` for
`libudev`, `libmodbus3`, `libusb`, `gtk+` and `glib`. Detect
cross-compile version of `pkg-config`. Use detected `pkg-config` in
Makefiles for protobuf.
Replace NIH `{tcl,tk}Config.sh` detection with m4 macros.

Because macros shipped with Wheezy are broken, bundle a version from
Ubuntu/tcl8.6 modified to work with 8.5 also, and tell `autoreconf` to
search the `src/m4` directory first.

This macro file may be removed when Debian Bug#777085 is resolved or
Wheezy becomes obsolete.
This workaround for an ancient Ubuntu bug is now obsolete.
These wouldn't normally be needed, except for the wacky
`.rtapi_export` stuff used in RTAPI modules.
At configure time, detect the build-arch C compiler in the
conventional `$(CC_FOR_BUILD)` variable, and pass
`$(CROSS_COMPILING)`.

In the Makefiles, give `TOOBJSDEPS` an optional second argument added
to output filenames to distinguish from host-arch outputs, and add
`CUSERSRCS_BUILD` rules paralleling `CUSERSRCS`.
Build the `pasm` tool twice:  once in build-arch for use during build,
and once in host-arch for inclusion in the `-dev` package.
The included test case shows the wrong active G-Codes (for example, the
work offset will always show G56, even though this is only active for
the last 3rd of the program).
This commit implements state tags at all levels. State tags contain a
snapshot of the interpreter state that rides along with a motion
command. This way, we can easily determine what the interpreter state
was at the time the motion was generated. This tag in principle can be
extended arbitrarily, though the size should be kept to a minimum.

Interp: generate state tags before calling a canon command that produces
a motion. Right now this is done by manually creating a tag before it's
needed.

Canon: Keeps a local copy of the state tag, which is updated by a
dedicated canon command. This tag is added to any outgoing motion, and
it's Interp's responsibility to keep it up to date. Ideally, canon
wouldn't have to deal with this at all, and the tag would be an argument
to canon commands (or packed into an appropriate structure).

Task/NML: State tags are included in the NML messages for motion
commands. HOWEVER, "update" methods are NOT implemented, because motion
messages are never actually transmitted via NML when Task / Motion are
on the same machine. In this case, the NML message is just a holding
tank for motion data, which is eventually copied into motion shared
memory.

Motion / TP: The state tag is included as an additional argument, but is
otherwise unused currently. Pretty much all that happens here is that
the tag is copied into the TC_STRUCT, and the currently executing
segment's tag is copied into motion's status output.

Status: If motion is running, it reports a state tag through
EMC_TRAJ_STAT. Task unpacks this into the appropriate active_g/m_codes
in emcStatus, so that UI's see the active state corresponding to the
motion. If motion is not running, then the active state shown is copied
directly from interp, as before.
Since G-Codes are represented internally as 10*N (N=0-99), one of these
codes can fit in a 16 bit int, and save a few bytes. Since the line
number needs to be a 32 bit int, this is broken out as a separate field.
I ended up here because clang warned about 'strncat(cmd, buf, sizeof(buf))'
-- strncat is notoriously difficult to use.  This usage is wrong, and
related code must be prepared to deal with a non-NULL-terminated character
array (which related code was not).

Use C++ strings instead, until it becomes inconvenient to (the place
where the string needs to be split at newlines)

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
The state tag changes show the "current" state according to motion.
However, an early abort will cause the displayed modes to suddenly
switch to the actual interpreter state. This could be confusing to a
user, so we call a restore method on abort that pulls the latest state
tag from motion and unpacks it into a usable state.
This reverts commit 4e9c4820faa3bd54cc1b9f93d5164adca45052ae.
Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
…ed vs. trapezoidal acceleration

Signed-off-by: Robert W. Ellenberg <rwe24g@gmail.com>
@SebKuzminsky

Copy link
Copy Markdown
Collaborator

PRs for linuxcnc are welcome, just please make sure they're based on some reasonable commit in our repo.

@robEllenberg

Copy link
Copy Markdown
Collaborator Author

Sorry! That PR was meant to be for the machinekit repo (so I closed it
without merging). I pushed a branch to the official repo with this fix
(based on a recent 2.7).

-Rob

On Mon, Feb 9, 2015 at 5:49 PM, Sebastian Kuzminsky <
notifications@github.com> wrote:

PRs for linuxcnc are welcome, just please make sure they're based on some
reasonable commit in our repo.


Reply to this email directly or view it on GitHub
#8 (comment).

@robEllenberg robEllenberg deleted the hotfix/final-velocity-estimation-mk branch June 14, 2019 13:20
hansu added a commit that referenced this pull request Oct 30, 2022
Move icon_theme related stuff in separate file
@pcw-mesa pcw-mesa mentioned this pull request Nov 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.