H bot Homing questions/issue
28 Aug 2017 17:58 #98100
by calvin.d
H bot Homing questions/issue was created by calvin.d
So I have been trying to figure out what the proper way to home an H bot gantry would be
I am working on the 2.8 branch with JA
I have tried
1. Setting homing sequence for joint 0 and joint 1 to -1. This causes both joint motors to move at the same time but is not completely what I need. I believe the reason for this is, that -1 is really meant for truing a gantry, so it is moving both joints at the same time, till the first one hits a limit switch, then it move just the joint that has not hit a limit switch till it hits. it then bounces both joints off and on again to latch then moves back the set amount.
this kind of works, but on an h bot I get
x axis hits x lim
machine moves y axis till it hits
then it moves the machine x axis to latch
then it moves the y axis to latch
this will home the machine but it really is not the desired behavior
2. using a non negative home sequence for both axis is also not what I am looking for
can someone point me to the code that is actually used for the homing sequence ?
I think the gantry sequence could be slightly change to give the behavior I am looking for
ideally I would get a home sequence = -2 (or some other way to identify it)
also am I correct that homing is joint specific still, so there is no way to set the homing info for the x axis and y axis directly instead of the joint level ?
(FYI, I am read everything I can find on this, so if people even have more links I would be grateful)
Thank You
Calvin Domenico
I am working on the 2.8 branch with JA
I have tried
1. Setting homing sequence for joint 0 and joint 1 to -1. This causes both joint motors to move at the same time but is not completely what I need. I believe the reason for this is, that -1 is really meant for truing a gantry, so it is moving both joints at the same time, till the first one hits a limit switch, then it move just the joint that has not hit a limit switch till it hits. it then bounces both joints off and on again to latch then moves back the set amount.
this kind of works, but on an h bot I get
x axis hits x lim
machine moves y axis till it hits
then it moves the machine x axis to latch
then it moves the y axis to latch
this will home the machine but it really is not the desired behavior
2. using a non negative home sequence for both axis is also not what I am looking for
can someone point me to the code that is actually used for the homing sequence ?
I think the gantry sequence could be slightly change to give the behavior I am looking for
ideally I would get a home sequence = -2 (or some other way to identify it)
also am I correct that homing is joint specific still, so there is no way to set the homing info for the x axis and y axis directly instead of the joint level ?
(FYI, I am read everything I can find on this, so if people even have more links I would be grateful)
Thank You
Calvin Domenico
Please Log in or Create an account to join the conversation.
28 Aug 2017 18:42 - 28 Aug 2017 18:44 #98104
by dgarrett
Negative home sequences synchronize only the *final*
homing move to [JOINT_n]HOME. Negative homing
sequences are not gantry-specific as they are useful on
some parallel kinematics machines like hexabots and
delta robots.
For the master branch, the homing state machine is implemented in:
github.com/LinuxCNC/linuxcnc/blob/master.../emc/motion/homing.c
The motion module interface is contained in:
github.com/LinuxCNC/linuxcnc/blob/master...emc/motion/control.c
github.com/LinuxCNC/linuxcnc/blob/master...emc/motion/command.c
Additional interfaces exist in the interpreter, inifile
processing, and gui interfaces.
The primary document for homing for the master branch is:
linuxcnc.org/docs/devel/html/config/ini-homing.html
Replied by dgarrett on topic H bot Homing questions/issue
... that -1 is really meant for truing a gantry,...
Negative home sequences synchronize only the *final*
homing move to [JOINT_n]HOME. Negative homing
sequences are not gantry-specific as they are useful on
some parallel kinematics machines like hexabots and
delta robots.
can someone point me to the code that is actually used for the homing sequence ?
For the master branch, the homing state machine is implemented in:
github.com/LinuxCNC/linuxcnc/blob/master.../emc/motion/homing.c
The motion module interface is contained in:
github.com/LinuxCNC/linuxcnc/blob/master...emc/motion/control.c
github.com/LinuxCNC/linuxcnc/blob/master...emc/motion/command.c
Additional interfaces exist in the interpreter, inifile
processing, and gui interfaces.
The primary document for homing for the master branch is:
linuxcnc.org/docs/devel/html/config/ini-homing.html
yes homing is a joint activityalso am I correct that homing is joint specific
Last edit: 28 Aug 2017 18:44 by dgarrett.
Please Log in or Create an account to join the conversation.
28 Aug 2017 19:28 #98109
by calvin.d
Replied by calvin.d on topic H bot Homing questions/issue
ok so
because homing is joint specific
by using the homing sequence = -1 I am getting coordinated movement for an H-bot but it is not actually using the corexy kinematics. I think that means I may spend a bunch of time chasing this unless I come up with a different approach.
I think the correct approach in a grander sense of correct would be to expand the homing types
Right now if I under stand it we can make joints home
sequential (0,1,2)
simultaneously (0,0,1)
simultaneously with a synchronized final final homing move (-1,-1,0)
I could use the sequential approach if I could just get 2 joints to move at once
I would need a way to declare the slaved joint and to add a direction to search and latch in (they could differ from the joints normal movement)
so if I am correct that would be changes here
github.com/LinuxCNC/linuxcnc/blob/master.../emc/motion/homing.c
I would have to add these to the ini file
(in the joint section per joint)
Home_Slave_Joint = (slave joint number)
Home_Slave_Joint_search = (salve joint search speed and direction)
Home_Slave_Joint_latch = (salve joint latch speed and direction)
is this actually worth doing ? would anyone beside me find a use for it
I have found there is not a lot of corexy or hbot builds
if I did the work could I get this merged into the main branch, I really dont want to do a full fork and keep having to merge in
Thank you
C
because homing is joint specific
by using the homing sequence = -1 I am getting coordinated movement for an H-bot but it is not actually using the corexy kinematics. I think that means I may spend a bunch of time chasing this unless I come up with a different approach.
I think the correct approach in a grander sense of correct would be to expand the homing types
Right now if I under stand it we can make joints home
sequential (0,1,2)
simultaneously (0,0,1)
simultaneously with a synchronized final final homing move (-1,-1,0)
I could use the sequential approach if I could just get 2 joints to move at once
I would need a way to declare the slaved joint and to add a direction to search and latch in (they could differ from the joints normal movement)
so if I am correct that would be changes here
github.com/LinuxCNC/linuxcnc/blob/master.../emc/motion/homing.c
I would have to add these to the ini file
(in the joint section per joint)
Home_Slave_Joint = (slave joint number)
Home_Slave_Joint_search = (salve joint search speed and direction)
Home_Slave_Joint_latch = (salve joint latch speed and direction)
is this actually worth doing ? would anyone beside me find a use for it
I have found there is not a lot of corexy or hbot builds
if I did the work could I get this merged into the main branch, I really dont want to do a full fork and keep having to merge in
Thank you
C
Please Log in or Create an account to join the conversation.
30 Aug 2017 22:52 #98239
by andypugh
Replied by andypugh on topic H bot Homing questions/issue
Have you tried giving both joints the same positive homing sequence number?
Please Log in or Create an account to join the conversation.
31 Aug 2017 03:28 #98255
by calvin.d
Replied by calvin.d on topic H bot Homing questions/issue
ok I have figured this out and I owe the Linuxcnc staff a big thank you
the changes made for joint axis merge to the homing model does work for this machine as is and there is no need to change it
my problem was simple
For Hbot kinematics (coreXY)
my motors were wired exactly the same, for an Hbot this does not work
to move the Y axis forward and backward the motors must spin opposite to each other
which means 1 joint has inverted motion relative to the other joint.
if you do not do this, then you actually switch you X and Y
so I kept ending up in a state where I could home the machine but the Y always moved in the wrong direction
for anyone working on an Hbot ever again here are some things I found
Joint 0 and joint 1 need to have increased joint travel ranges
MIN_LIMIT= -999
MAX_LIMT = 999
Or linuxCNC will throw an error because the joint may need to move in the negative direction relative to axis movement and the default joint motion does not allow for this
If you can home but then can not jog an axis machine because it instantly throws a joint exceed limit error, this is why
Homing joints
Joint 0 and joint 1 need to be set to home_squence 1 (which will sync them during homing)
OR
Joint 0 and joint 1 need to be set to home_squence -1 (which will sync them during homing but also disable jogging in joint mode)
Motor directions
H bot motors need to be inverted relative to each other to work in terms of rotation
If you wire your motors the exact same way
You need to invert 1 in software
Set the set step_scale = to a negative value
Set the search _vel = to a negative value
Set the latch_vel = to a negative value
If you find a state where you can home but 1 of your axis is always moving in the wrong direction this would be why
Thank you for all of the help
Calvin
the changes made for joint axis merge to the homing model does work for this machine as is and there is no need to change it
my problem was simple
For Hbot kinematics (coreXY)
my motors were wired exactly the same, for an Hbot this does not work
to move the Y axis forward and backward the motors must spin opposite to each other
which means 1 joint has inverted motion relative to the other joint.
if you do not do this, then you actually switch you X and Y
so I kept ending up in a state where I could home the machine but the Y always moved in the wrong direction
for anyone working on an Hbot ever again here are some things I found
Joint 0 and joint 1 need to have increased joint travel ranges
MIN_LIMIT= -999
MAX_LIMT = 999
Or linuxCNC will throw an error because the joint may need to move in the negative direction relative to axis movement and the default joint motion does not allow for this
If you can home but then can not jog an axis machine because it instantly throws a joint exceed limit error, this is why
Homing joints
Joint 0 and joint 1 need to be set to home_squence 1 (which will sync them during homing)
OR
Joint 0 and joint 1 need to be set to home_squence -1 (which will sync them during homing but also disable jogging in joint mode)
Motor directions
H bot motors need to be inverted relative to each other to work in terms of rotation
If you wire your motors the exact same way
You need to invert 1 in software
Set the set step_scale = to a negative value
Set the search _vel = to a negative value
Set the latch_vel = to a negative value
If you find a state where you can home but 1 of your axis is always moving in the wrong direction this would be why
Thank you for all of the help
Calvin
Please Log in or Create an account to join the conversation.
Time to create page: 0.065 seconds