Interesting concept.

In theory there should be nothing to prevent the combination of two kinematics types
and a conditional test based upon whether a pin is set, to decide which is used.

Implementation might be a little more complicated. 
The data structures would need combining so that any data storage required was available irrespective of which mode it started in.
The actual instant of changeover could reek havoc if it occurred midway through setting the joints say, so that would need to be catered for with a function
that acted upon the changeover pin changing state, clearing old data and establishing new defaults or whatever.

Regards activating, that is the simple bit.
Create a bit pin, called say combokins.state
Then just create a user M code which is a bash script which calls `setp combokins.state 1` or 0 as required
The 1 or 0 can be passed in the first arg (P) to the M code, just remember it will be passed as fp and needs conversion to an integer.

This code snippet from my lathe pulley speed setting script shows the process to convert and use case / esac to switch the input to the correct call

Like to hear how it goes.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#!/bin/bash

## sets scale gain to make output speed accurate
## for each of 4 pulley settings

if [ ! $# -ge 1 ]; then
  echo "Usage: M101 n - where n is speed range 1 - 4"
  exit 1
fi

echo "param 2 is $2"
## emc takes the M101 P3 for example and passes
## $1 as 3.000000 and $2 as -1.000000 (because Q was not set)
## to this script!!!
## need to convert to int first

float=$1
int=${float/\.*}
# DEBUG    echo "$float converted to $int"


case $int in

    1 ) halcmd setp scale.0.gain 0.595;;
#       accurate at 1200 in M4 for turning

    2 ) halcmd setp scale.0.gain 1.16;;
#       accurate at 600 in M4 for turning

    3 ) halcmd setp scale.0.gain 2.175;;
#       accurate at 300 in M3 for threading

    4 ) halcmd setp scale.0.gain 4.3;;
#       accurate at 150 in M3 for threading
esac

exit 0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


On 11/04/18 21:30, j...@allwinedesigns.com wrote:
Is there a way to switch between kinematics modules using G code in Machinekit? The desired effect is to be able to switch between trivkins and a 5 axis inverse kinematics module that allows for TCPC (Haas uses G234 to enable TCPC, see https://www.youtube.com/watch?v=HxPjH4v5iEg). I've implemented the 5 axis kinematics module for my machine. I was thinking I could incorporate the trivial kinematics into the same module and add a hal pin that would switch between the two. Then I could write a python script that flips the hal pin, and bind that to a custom G code. Would that work? Is there another way to do it?
--
website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit
---
You received this message because you are subscribed to the Google Groups "Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to machinekit+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/machinekit.
For more options, visit https://groups.google.com/d/optout.

--
website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit
---
You received this message because you are subscribed to the Google Groups "Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to machinekit+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/machinekit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to