Using IKFast to generate kinematics modules

More
03 Jan 2020 10:00 #153877 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 :)

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

More
07 Jan 2020 15:09 #154215 by andypugh
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.

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

More
10 Jan 2020 10:59 #154533 by ross_dev
Cheers Andy, I will be looking into this next week. Sounds encouraging though!

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

More
14 Jan 2020 15:23 - 14 Jan 2020 16:30 #154827 by ross_dev
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.
Last edit: 14 Jan 2020 16:30 by ross_dev.

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

More
14 Jan 2020 16:34 - 14 Jan 2020 16:34 #154830 by andypugh
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.

More
14 Jan 2020 16:57 #154831 by ross_dev
Thanks Andy I will check it out

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

More
15 Jan 2020 09:51 #154902 by ross_dev
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.

More
15 Jan 2020 11:28 #154907 by ftkalcevic
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.
The following user(s) said Thank You: ross_dev

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

More
15 Jan 2020 14:32 #154922 by ross_dev
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

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

More
16 Jan 2020 01:55 #154990 by ftkalcevic
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)
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.089 seconds
Powered by Kunena Forum