> A few questions about a possible scurve lcnc integration :
> 1. Has someone already code a sample motion component to use
> with lcnc, so we can take a look how it's done?
> ...
Not sure what is meant by 'motion component' as the phrase
could be interpreted in several ways. Perhaps you could
use ini file terminology described in the 'Terminology
Summary' (below) to clarify.
> 4. My original idea was to write a motion component, this
> includes gcode reader etc. How do you think about this
> option?
LinuxCNC supplies a default userspace gcode interpreter as
part of the userspace 'milltask' program with a provision to
specify an alternative gcode interpeter (see [TASK]TASK
below). Reading gcode in a realtime motion context would be
a different design architecture than that used by the
existing LinuxCNC design.
> Personally i don't like the idea to rely on Python and the
> Python opengl graphics that are buried in lcnc so deep no
> one is able to get a hand on it.
No use of python or OpenGL is required anywhere but many
of the available display interfaces use these common software
tools (see [DISPLAY]DISPLAY below).
A==========================================================
Terminology Summary
Some [SECTION]VARIABLE nomenclature used throughout LinuxCNC
as based on ini configuration file settings
B==========================================================
Userspace programs ini file settings
[TASK]TASK=milltask
Specifies a primary userspace program. The program named
'milltask' is the default LinuxCNC userspace program that
includes a gcode interpreter and interfaces to other
userspace programs (typ: io, display), and the realtime
motion module and HAL (the Hardware Abstraction Layer). The
'milltask' program can optionally invoke an alternative
interpreter using the ini file setting: [TASK]INTERPRETER.
A skeleton example interpreter is provided (canterp).
[DISPLAY]DISPLAY=display_program_name
Specifes a program that typically provides a user interface
(ui,gui). There is no default but numerous programs are
available within the LinuxCNC tree and some written by other
developers. A DISPLAY program may use graphics without
OpenGL (example touchy, tklinuxcnc) or graphics with OpenGL
(examples: axis, gmoccapy, qtvcp). A DISPLAY program can be
an executable or script. No use of graphics is required
(see: halui) and remote DISPLAY interfaces are possible
(see: linuxcncrsh). The DISPLAY program can interact with
other LinuxCNC programs (typ: io, milltask) and with the
realtime motion module and HAL .
C)==========================================================
Realtime modules ini file settings:
[EMCMOT]EMCMOT=motmod [parameters ...]
Specifes the realtime motion module. The module named
'motmod' is the default LinuxCNC motion module. The motmod
module calls other realtime modules that must be loaded
prior to its loading:
a) homing (default=homemod)
b) trajectory planning (default=tpmod)
c) kinematics (no default)
In addition to its interfaces with the above modules, the
default 'motmod' module receives messages from the userspace
task program (typ: [TASK]TASK=milltask) and interacts
with HAL (Hardware-Abstraction-Layer).
[TRAJ]TPMOD=custom_trajectory_planner [optional_parameters ...]
Specifies a trajectory planning module. If omitted (the
usual case), the default module 'tpmod' is used. A custom
module can be built with halcompile. A skeleton example is
provided (tpcomp.comp).
[EMCMOT]HOMEMOD=custom_homing_module [optional_parameters ...]
Specifies a homing module. If omitted (the usual case), the
default module 'homemod' is used. A custom module can be
built with halcompile. A skeleton example is provided
(homecomp.comp).
[KINEMATICS]KINS=module_name [optional_parameters ...]
[KINS]JOINTS=number_of_joints
A kinematics module (no default) is specified according to
the machine configuration. A kinematics module may be
designed to support a discretionary numbers of joints so it
is necessary to also specify the number_of_joints. Many
common machines use identity kinematics and invoke the
provided trivkins module. The trivkins name is short for
trivial (identity) kinematics.

==========================================================
Notes:
1) The loading of the default trajectory planning module
(tpmod) and the default homing module (homemod) are handled
by the linuxcnc script with no need for the ini file
settings [TRAJ]TPMOD, [EMCMOT]HOMEMOD.
2) The homing and trajectory planner modules can also be
specified with command line options for the linuxcnc script
(see $ linuxcnc -h)
3) The kinematics module specified with ini file setting
[KINS]KINEMATICS and the motion module specified by
[EMCMOT]EMCMOT are typically loaded in the required order
by an ini file specified [HAL]HALFILE that includes lines
like:
...
loadrt [KINS]KINEMATICS ...
loadrt [EMCMOT]EMCMOT num_joints=[KINS]JOINTS ...
...
4===========================================================
Refs:
4) ini file configuration:
linuxcnc.org/docs/devel/html/config/ini-config.html
5) custom trajectory planning module skeleton:
github.com/LinuxCNC/linuxcnc/blob/master...mponents/tpcomp.comp
6) custom homing module skeleton:
github.com/LinuxCNC/linuxcnc/blob/master...onents/homecomp.comp
7) motmod objects:
github.com/LinuxCNC/linuxcnc/blob/master/src/Makefile#L1192

canterp alternative interpeter:
github.com/LinuxCNC/linuxcnc/blob/master...c/canterp/canterp.cc
9) halui
github.com/LinuxCNC/linuxcnc/blob/master...mc/usr_intf/halui.cc
10) linuxcncrsh (naming reflects emc legacy):
github.com/LinuxCNC/linuxcnc/blob/master...c/usr_intf/emcrsh.cc