Using IKFast to generate kinematics modules
03 Jan 2020 10:00 #153877
by ross_dev
Using IKFast to generate kinematics modules was created by ross_dev
Hi
I have been looking at OpenRAVE and ikfast and wondered if it could be used to generate kinematics for LinuxCNC, and then noticed that some work was done on this a few years back. It is appealing because of IKFast's ability to detect singularities and instabilities and account for them.
However on the documentation page it mentions a specific build of LCNC that must be used, which includes the ikfastkins.c module. We have created our build thus far with 2.8 pre, does this mean it is not possible to use IKFast?
Thanks as usual
I have been looking at OpenRAVE and ikfast and wondered if it could be used to generate kinematics for LinuxCNC, and then noticed that some work was done on this a few years back. It is appealing because of IKFast's ability to detect singularities and instabilities and account for them.
However on the documentation page it mentions a specific build of LCNC that must be used, which includes the ikfastkins.c module. We have created our build thus far with 2.8 pre, does this mean it is not possible to use IKFast?
Thanks as usual
Please Log in or Create an account to join the conversation.
07 Jan 2020 15:09 #154215
by andypugh
Replied by andypugh on topic Using IKFast to generate kinematics modules
ikfastkins is here:
github.com/ftkalcevic/LinuxCNC/blob/ikfa...ematics/ikfastkins.c
There is info in the LinuxCNC wiki here:
wiki.linuxcnc.org/cgi-bin/wiki.pl?Ikfast
It should be possible to compile and install the ikfastkins kinematics module without recompiling all of LinuxCNC as kinematics files are pluggable components of LinuxCNC.
github.com/ftkalcevic/LinuxCNC/blob/ikfa...ematics/ikfastkins.c
There is info in the LinuxCNC wiki here:
wiki.linuxcnc.org/cgi-bin/wiki.pl?Ikfast
It should be possible to compile and install the ikfastkins kinematics module without recompiling all of LinuxCNC as kinematics files are pluggable components of LinuxCNC.
Please Log in or Create an account to join the conversation.
10 Jan 2020 10:59 #154533
by ross_dev
Replied by ross_dev on topic Using IKFast to generate kinematics modules
Cheers Andy, I will be looking into this next week. Sounds encouraging though!
Please Log in or Create an account to join the conversation.
14 Jan 2020 15:23 - 14 Jan 2020 16:30 #154827
by ross_dev
Replied by ross_dev on topic Using IKFast to generate kinematics modules
Hi
Do you know if there is an updated version of the modified openrave module? The one pointed to by the wiki (github.com/ftkalcevic/openrave/tree/linuxcnc_gen_c) is 7 years old, and I have been firefighting build errors with it for a while (see issues submission here github.com/rdiankov/openrave/issues/724).
These were apparently fixed in later versions of openrave, but as far as I can see they never officially added C output.
I'm on Ubuntu 16.04 by the way.
Do you know if there is an updated version of the modified openrave module? The one pointed to by the wiki (github.com/ftkalcevic/openrave/tree/linuxcnc_gen_c) is 7 years old, and I have been firefighting build errors with it for a while (see issues submission here github.com/rdiankov/openrave/issues/724).
These were apparently fixed in later versions of openrave, but as far as I can see they never officially added C output.
I'm on Ubuntu 16.04 by the way.
Last edit: 14 Jan 2020 16:30 by ross_dev.
Please Log in or Create an account to join the conversation.
14 Jan 2020 16:34 - 14 Jan 2020 16:34 #154830
by andypugh
Replied by andypugh on topic Using IKFast to generate kinematics modules
Frank Tkacevic is still active on the LinuxCNC mailing list, you could try asking there.
Last edit: 14 Jan 2020 16:34 by andypugh.
The following user(s) said Thank You: ross_dev
Please Log in or Create an account to join the conversation.
14 Jan 2020 16:57 #154831
by ross_dev
Replied by ross_dev on topic Using IKFast to generate kinematics modules
Thanks Andy I will check it out
Please Log in or Create an account to join the conversation.
15 Jan 2020 09:51 #154902
by ross_dev
Replied by ross_dev on topic Using IKFast to generate kinematics modules
Hi Andy, is that the mailing list on sourceforge? I am having difficulty finding his user page or some means of messaging him. Would it be best to just make a topic on there and hope he picks it up?
Please Log in or Create an account to join the conversation.
- ftkalcevic
- Offline
- Junior Member
Less
More
- Posts: 33
- Thank you received: 4
15 Jan 2020 11:28 #154907
by ftkalcevic
Replied by ftkalcevic on topic Using IKFast to generate kinematics modules
I struggled to build it against an up to date ubuntu. There is a web page that explains how to build openrave against ubuntu16 scaron.info/teaching/installing-openrave-on-ubuntu-16.04.html. I could build the version from the openrave repository, but when I ran it, it failed with python numpy errors.
So, I ended up using ubuntu 12.04 - I have a VMWare VM that I used to just generate the c code and test in the simulator.
I could share that - compressed it is 11GB - it will take about 7hrs to upload.
So, I ended up using ubuntu 12.04 - I have a VMWare VM that I used to just generate the c code and test in the simulator.
I could share that - compressed it is 11GB - it will take about 7hrs to upload.
The following user(s) said Thank You: ross_dev
Please Log in or Create an account to join the conversation.
15 Jan 2020 14:32 #154922
by ross_dev
Replied by ross_dev on topic Using IKFast to generate kinematics modules
Hi Frank!
Firstly, thank you so much for the ikfast / openrave conversion, and for replying here!
I had a feeling something like using an older ubuntu might be needed. If you are happy to upload the VM that would be of enormous help, a known-good install will provide a great headstart.
Ross
Firstly, thank you so much for the ikfast / openrave conversion, and for replying here!
I had a feeling something like using an older ubuntu might be needed. If you are happy to upload the VM that would be of enormous help, a known-good install will provide a great headstart.
Ross
Please Log in or Create an account to join the conversation.
- ftkalcevic
- Offline
- Junior Member
Less
More
- Posts: 33
- Thank you received: 4
16 Jan 2020 01:55 #154990
by ftkalcevic
Replied by ftkalcevic on topic Using IKFast to generate kinematics modules
The VM can be downloaded here...
drive.google.com/open?id=1uMP1gTU6BwfQiRmfRrmuRrUNVr5kQZ7-
This is a development VM so it is quite large. Hopefully there is nothing sensitive or embarassing.
You can login as frankt/password.
There is a version of linuxcnc in ~/linuxcnc-dev.
openrave is in ~/openrave/openrave, but I compile it and install it when I make changes (make; make install)
In ~/linuxcnc/configs/sim_arm are some samples - only ./robotarm.wam seems to work.
In ~/linuxcnc/configs/sim_arm/moveolike2 is a sim version of my robot arm (./moveolike2), but it is configured to run with a USB pendant - you'll need to remove those hal references.
There is a script in that directory make_ikfast, which runs the command to build the ikfast solvers. If you build the c language version, you can't run the tests - this has to be c++. Running the tests gives performance numbers. I think my arm has the same kinematics as a PUMA arm - the timings are great - mean: 0.000005s, median: 0.000005s, min: 0.000005s, max: 0.000011s
Openrave output is in ~/.openrave
Other points.
* I'm not a robotics expert, but as I understand it, ikfast only provides forward and inverse kinematics code - you still get singularities. To avoid singularities you are supposed to use openrave's path planning.
* the ikfastkins.c is a wrapper to call the ikfast code generated by openrave. It may need work. The inverse kinematics function can return multiple solutions - ikfastkins.c is supposed to pick the best, but I had problems at times either returning no solution, or no close solution - I haven't looked into this - I just hacked the tolerances in ikfastkins.c and the error/ferror in my ini files to avoid problems.
* The ikfastkins.c on the VM may be out of date. The linuxcnc is from master a couple of months ago. Unfortunately, it isn't linked directly to the github version (I have a machinekit fork which blocks me from having a linuxcnc fork)
drive.google.com/open?id=1uMP1gTU6BwfQiRmfRrmuRrUNVr5kQZ7-
This is a development VM so it is quite large. Hopefully there is nothing sensitive or embarassing.
You can login as frankt/password.
There is a version of linuxcnc in ~/linuxcnc-dev.
openrave is in ~/openrave/openrave, but I compile it and install it when I make changes (make; make install)
In ~/linuxcnc/configs/sim_arm are some samples - only ./robotarm.wam seems to work.
In ~/linuxcnc/configs/sim_arm/moveolike2 is a sim version of my robot arm (./moveolike2), but it is configured to run with a USB pendant - you'll need to remove those hal references.
There is a script in that directory make_ikfast, which runs the command to build the ikfast solvers. If you build the c language version, you can't run the tests - this has to be c++. Running the tests gives performance numbers. I think my arm has the same kinematics as a PUMA arm - the timings are great - mean: 0.000005s, median: 0.000005s, min: 0.000005s, max: 0.000011s
Openrave output is in ~/.openrave
Other points.
* I'm not a robotics expert, but as I understand it, ikfast only provides forward and inverse kinematics code - you still get singularities. To avoid singularities you are supposed to use openrave's path planning.
* the ikfastkins.c is a wrapper to call the ikfast code generated by openrave. It may need work. The inverse kinematics function can return multiple solutions - ikfastkins.c is supposed to pick the best, but I had problems at times either returning no solution, or no close solution - I haven't looked into this - I just hacked the tolerances in ikfastkins.c and the error/ferror in my ini files to avoid problems.
* The ikfastkins.c on the VM may be out of date. The linuxcnc is from master a couple of months ago. Unfortunately, it isn't linked directly to the github version (I have a machinekit fork which blocks me from having a linuxcnc fork)
The following user(s) said Thank You: ross_dev
Please Log in or Create an account to join the conversation.
Time to create page: 0.101 seconds