the tool coordinate system of a 6 DOF robot

More
09 Jun 2016 13:26 #75720 by chuchengbing
Hello,yes, I have a G43 in my Gcode. I edit the tool table when set the tool in which the xyz is the position of the tip of tool and abc is just the tool's posture. and when first run a code, I use a command "M61 Q1", which means the current tool is tool1 and read the parameters of this tool. It is correct when I don't change my tool posture(just run in a plane), when I run a gcode using A_ B_C_,it becomes wrong. The reason is parameters in tool table is just used to a offect, not used in forward and inverse kinematics computing of robot. When I run a gcode and want to change to posture, the reference point is also the sixth joint of robot,the position and posture is keeped correct, then the LInuxcnc use the xyzabc value of sixth joint minus the xyzabc values in tool table and let this new xyzabc become the tip of tool. It is wrong, I don't know if you really understand , but also thanks!!!!!!

Please Log in or Create an account to join the conversation.

More
09 Jun 2016 13:42 #75727 by andypugh
Hmm, yes, G43 will offset the tool tip position in cartesian space.

A workaround might be to put the tool length in the W axis of the tool table and leave XYZ set to zero.
Then pass that number into your kinematics setup from HAL.

I think that the tool tip offset needs to be handled in the kinematics.

Please Log in or Create an account to join the conversation.

More
10 Jun 2016 02:06 #75742 by chuchengbing
Yes, I think so too, I think one way to handle this is to make the tool become a part of robot and let it becomes the sixth axis with previous sixth axis, but this way can't handle the radius compensation question; the other way is to change from 6-axis to 7-axis in genserkins, and make tool coordinate system become the seventh axis. Right? thanks!

Please Log in or Create an account to join the conversation.

More
12 Jun 2016 06:57 #75847 by chuchengbing
Hello andypuch:
All joints of my robot are rotated joints, when I want to jog one of my joints to achieve a high precise. I found that the parameter of ENCREMENT in ini file, but the unit of that just inch, mm,when I set a value 1 deg or degree. It is wrong when I jog in AXIS interface. I am not sure that it is just the same when I use 1mm to substitute 1degree in jog mode.
thanks very much!!!

Please Log in or Create an account to join the conversation.

More
13 Jun 2016 10:17 #75905 by andypugh
I am not exactly sure what question you are asking, but I think that angular jogs are interpreted as mm.
You can modify the increments list:
linuxcnc.org/docs/2.7/html/config/ini-co...tml#_display_section

I don't know if that would help you.

Please Log in or Create an account to join the conversation.

More
13 Jun 2016 12:26 - 13 Jun 2016 12:27 #75913 by chuchengbing
Thanks andypugh very much,I am so appreciated.
I found the question when I use the halscope and sample f-errored every 1ms. It is that when I attempt to make a rotated joint's degree become 0degree. I do that through jog before homing and then I just do nothing to let motor keep this degree. Then a following error occurs, in the file of halscope, I found that the degree was jitter dynastic, just had one time that lcec.0.0.Actual_Pos became 65536 which the period before this value was just closed to 0 and it is just the time the following error occurs. I don't know why does the actual position read form driver change so much at this time.
The halscope data is listed bellow. thanks again.

File Attachment:

File Name: 4.log.doc
File Size:535 KB
Attachments:
Last edit: 13 Jun 2016 12:27 by chuchengbing.

Please Log in or Create an account to join the conversation.

More
13 Jun 2016 13:01 #75914 by andypugh

in the file of halscope, I found that the degree was jitter dynastic, just had one time that lcec.0.0.Actual_Pos became 65536 which the period before this value was just closed to 0 and it is just the time the following error occurs.


That's interesting. That rather sounds like the encoder counter is not handling encoder-wrap correctly.

Can you remind me what hardware you are using? What are the encoders? How many counts-per-turn?

It is also possible that 65536 was meant to be zero, but one bit of the data was held high. But this is only a possibility with parallel hardware (which includes PCI but not PCIe)

Please Log in or Create an account to join the conversation.

More
14 Jun 2016 01:42 - 14 Jun 2016 02:51 #75953 by chuchengbing
Yes, I also think this is funny too,drivers are made in myself country and it does not have great reputation. Encoders are absolute value with 17 bits and have 131072 pulse per tun. I am very surprised that it only has faults in zero position and the jitter value is 65536 and a half of 131072. Is there anything relationship with the two things?
BTW, is there anything wrong between lcec and pdo? It means that pdo value is just zero, but when read by lcec.ko ,this value changed to -65536?
Last, do you have some examples about the Ethercat and linuxcnc. I will check carefully for my configuration.
Thanks!!
Last edit: 14 Jun 2016 02:51 by chuchengbing.

Please Log in or Create an account to join the conversation.

More
14 Jun 2016 08:08 #75964 by andypugh
65536 is a number that any programmer will immediately recognise. It is 2^16.
In a 16-bit system you can have 65536 different values (0 to 65535).
The number 65536 is 100000000 in binary.
65535 is 11111111 in 16-bit unsigned. 0-65535 encoding.
0 is 00000000
Perhaps most suspiciously, -1 is 11111111 in 16-bit signed. (-32768 to + 32767 encoding)
The system somewhere probably uses signed representation in a 16-bit accumulator and extends that to 32 or 64 bits to keep track of multiple turns.

We need to work out where this miss-count is taking place. Whether it is in LinuxCNC (where it can be fixed) or in the hardware, where it is more difficult.

Please Log in or Create an account to join the conversation.

More
15 Jun 2016 01:32 #76039 by chuchengbing
Thanks very much, andypugh
I ask this question to my teacher, yes, just as you say, he found that the -65536 was zero too and there is something wrong with the type data of actual positon. And we have a test with another driver. we find that it has the same question in 0 position, then we changed the application program, and it is ok now!! The work now I should do is to find where the question is in Linuxcnc, from the data of halscope, I put my focus on lcec, because it is lcec to get the wrong data first.
Thanks again for all the help. I will tell you my results!!!

Please Log in or Create an account to join the conversation.

Time to create page: 0.109 seconds
Powered by Kunena Forum