Re: [Machinekit] switching between kinematics modes in G code

2018-04-12 Thread 'schoone...@btinternet.com' via Machinekit

  
  
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.00 and $2 as -1.00 (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.


Re: [Machinekit] switching between kinematics modes in G code

2018-04-12 Thread 'schoone...@btinternet.com' via Machinekit

  
  

On 12/04/18 09:29,
  'schoone...@btinternet.com' via Machinekit wrote:


  
  
  
  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
  
  


Just re-read and that gives the impression you need to use a case /
esac switch

All you need of course is a single call in place of the switch, as P
contains the value to pass

eg.    halcmd setp combokins.state $int


  
  
  
  
  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.


  




-- 
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.


Re: [Machinekit] switching between kinematics modes in G code

2018-04-12 Thread john
Thanks for the advice!

I started implementing this the other day and am running into follow errors 
when switching between modes using a hal pin. I found this thread on the 
LinuxCNC forums which discusses the same desired behavior and the same 
errors I'm encountering. It seems like they were able to resolve the 
issues, so I'll give what they tried a 
shot: 
https://forum.linuxcnc.org/10-advanced-configuration/31813-tcp-5-axis-kinematics?limitstart=0

On Thursday, April 12, 2018 at 2:48:29 AM UTC-6, Schooner wrote:
>
>
> On 12/04/18 09:29, 'schoo...@btinternet.com ' via Machinekit 
> wrote:
>
>
>
> 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
>
>
>
> Just re-read and that gives the impression you need to use a case / esac 
> switch
>
> All you need of course is a single call in place of the switch, as P 
> contains the value to pass
>
> eg.halcmd setp combokins.state $int
>
>
>
>
>
> On 11/04/18 21:30, jo...@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+...@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+...@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.


Re: [Machinekit] switching between kinematics modes in G code

2018-04-12 Thread 'schoone...@btinternet.com' via Machinekit

  
  

On 12/04/18 14:59,
  j...@allwinedesigns.com wrote:


  Thanks for the advice!


I started implementing this the other day and am running
  into follow errors when switching between modes using a hal
  pin. 
  


Yes I did predict that it would likely cause problems

  "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."
  
You might be able to get around it by forcing the
position_fb to whatever the actual position changes to, perhaps by
unlinking position_fb at the right point then re-linking,
with it set to the same as the actual position after the move.


  
I found this thread on the LinuxCNC forums which discusses
  the same desired behavior and the same errors I'm
  encountering. It seems like they were able to resolve the
  issues, so I'll give what they tried a
shot: https://forum.linuxcnc.org/10-advanced-configuration/31813-tcp-5-axis-kinematics?limitstart=0

  


We don't have the joints / axes work backported into Machinekit, it
caused a lot of problems in Linuxcnc initially, so interesting that
it seems to help this succeed.

Hopefully it will work for you too.


  

  On Thursday, April 12, 2018 at 2:48:29 AM UTC-6, Schooner
  wrote:
  
 
  On 12/04/18 09:29, 'schoo...@btinternet.com'
via Machinekit wrote:
  
   

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


  
  
  Just re-read and that gives the impression you need to use
  a case / esac switch
  
  All you need of course is a single call in place of the
  switch, as P contains the value to pass
  
  eg.    halcmd setp combokins.state $int
  
   



On 11/04/18 21:30, jo...@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+...@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+...@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.

Re: [Machinekit] switching between kinematics modes in G code

2018-04-12 Thread john
I definitely have to stick with Machinekit as I'm running the machine with 
a Beaglebone. What is the nature of the changes made to LinuxCNC that 
allowed this to work? Do you think I could get this going on Machinekit?

On Thursday, April 12, 2018 at 8:28:29 AM UTC-6, Schooner wrote:
>
>
> On 12/04/18 14:59, jo...@allwinedesigns.com  wrote:
>
> Thanks for the advice! 
>
> I started implementing this the other day and am running into follow 
> errors when switching between modes using a hal pin. 
>
>
> Yes I did predict that it would likely cause problems
>
> * "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." *You might be able to get around 
> it by forcing the position_fb to whatever the actual position changes to, 
> perhaps by unlinking position_fb at the right point then re-linking,
> with it set to the same as the actual position after the move.
>
> I found this thread on the LinuxCNC forums which discusses the same 
> desired behavior and the same errors I'm encountering. It seems like they 
> were able to resolve the issues, so I'll give what they tried a shot: 
> https://forum.linuxcnc.org/10-advanced-configuration/31813-tcp-5-axis-kinematics?limitstart=0
>
>
> We don't have the joints / axes work backported into Machinekit, it caused 
> a lot of problems in Linuxcnc initially, so interesting that it seems to 
> help this succeed.
>
> Hopefully it will work for you too.
>
>
> On Thursday, April 12, 2018 at 2:48:29 AM UTC-6, Schooner wrote: 
>>
>>
>> On 12/04/18 09:29, 'schoo...@btinternet.com' via Machinekit wrote:
>>
>>
>>
>> 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
>>
>>
>>
>> Just re-read and that gives the impression you need to use a case / esac 
>> switch
>>
>> All you need of course is a single call in place of the switch, as P 
>> contains the value to pass
>>
>> eg.halcmd setp combokins.state $int
>>
>>
>>
>>
>>
>> On 11/04/18 21:30, jo...@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+...@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+...@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+...@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.


Re: [Machinekit] switching between kinematics modes in G code

2018-04-12 Thread 'schoone...@btinternet.com' via Machinekit

  
  

On 12/04/18 16:00,
  j...@allwinedesigns.com wrote:


  I definitely have to stick with Machinekit as I'm
running the machine with a Beaglebone. What is the nature of the
changes made to LinuxCNC that allowed this to work? Do you think
I could get this going on Machinekit?
  


It is completely non-trivial and I am far from sure if it exists as
a series of commits which are easily accessible.
Linuxcnc did not have a Github repo until recently and I don't know
how they converted across.

These are just the commits that actually specify 'JA' in the title
(238 of them)
https://github.com/LinuxCNC/linuxcnc/search?q=JA&type=Commits

If the commit was relevant but did not have that tag in the commit
text, the search would not find it.
It may also have picked up 'jam' and the likes, Github
searches are not very good.

You are welcome to try cherry-picking the commits and resolving all
the major conflicts occurring because machinekit has completely
diverged from linuxcnc in many respects.  I would not recommend it.

If I were you I would get an old computer with a parport, install
Linuxcnc from a rtai kernel distro.
Then you can find out if it actually works as you want.

If it does, why do you need to use a BBB?

I don't have an axe to grind either way, whatever works best IS
best.


  
On Thursday, April 12, 2018 at 8:28:29 AM UTC-6, Schooner wrote:

   
On 12/04/18 14:59, jo...@allwinedesigns.com
  wrote:


  Thanks for the advice!


I started implementing this the other day and am
  running into follow errors when switching between
  modes using a hal pin. 
  


Yes I did predict that it would likely cause problems

  "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."
  
You might be able to get around it by forcing
the position_fb to whatever the actual position changes to,
perhaps by unlinking position_fb at the right point
then re-linking,
with it set to the same as the actual position after the
move.


  
I found this thread on the LinuxCNC forums which
  discusses the same desired behavior and the same
  errors I'm encountering. It seems like they were able
  to resolve the issues, so I'll give what they tried a
  shot: https://forum.linuxcnc.org/10-advanced-configuration/31813-tcp-5-axis-kinematics?limitstart=0

  


We don't have the joints / axes work backported into
Machinekit, it caused a lot of problems in Linuxcnc
initially, so interesting that it seems to help this
succeed.

Hopefully it will work for you too.


  

  On Thursday, April 12, 2018 at 2:48:29 AM UTC-6,
  Schooner wrote:
  
 
  On 12/04/18 09:29, 'schoo...@btinternet.com'
via Machinekit wrote:
  
   

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


  
  
  Just re-read and that gives the impression you
  need to use a case / esac switch
  
  All you need of course is a single call in place
  of the switch, as P contains the value to pass
  
  eg.    halcmd setp combokins.state $int
  
   



On 11/04/18 21:30, jo...@allwinedesigns.com
  wrote:


  Is there a way to switch
between kinematics modules using G code in