Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault (core dumped) when creating cpp file with IKFast #59

Open
jonarriza96 opened this issue Oct 26, 2019 · 1 comment
Open

Comments

@jonarriza96
Copy link

Hello!

I am trying to get an analytical inverse kinematics solution for my robot. To do so, I followed this tutorial (http://docs.ros.org/melodic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html). I am using Melodic and my robot (I attach the urdf file) has got 3DOF.

As a starting point, in order to choose the baselink and eelink I run:


openrave-robot.py jurp1_1.dae --info links


and I get:


name index parents

base_link 0
Shoulder_Link 1 base_link
Elbow_Link 2 Shoulder_Link
Wrist_Link 3 Elbow_Link
EE_Link 4 Wrist_Link


In order to generate the cpp file with the analytical solution, I chose "Translation3D" as the inverse kinematic type. .

To do so, I run this command:


python openrave-config --python-dir/openravepy/openravepy/ikfast.py --robot=jurp1.dae --iktype=translation3d --baselink=0 --eelink=3 --freeindex=4 --savefile=~/Desktop/ikfast61_jurp_arm.cpp


I get the following:


INFO: moved translation [0, 0, 0] to right end
INFO: moved translation [0, 0, 133/1000] to left end
INFO: [[0, 0, 1, 11367/50000],[0, 1, 0, 0],[-1, 0, 0, 13/10]]
INFO: [[cos(j0), -sin(j0), 0, 0],[sin(j0), cos(j0), 0, 0],[0, 0, 1, 0]]
INFO: [[0, 0, 1, 0],[1, 0, 0, 0],[0, 1, 0, 0]]
INFO: [[cos(j1), -sin(j1), 0, 0],[sin(j1), cos(j1), 0, 0],[0, 0, 1, 0]]
INFO: [[0, 0, -1, 0],[-1, 0, 0, 0],[0, 1, 0, 227/1000]]
INFO: [[cos(j2), -sin(j2), 0, 0],[sin(j2), cos(j2), 0, 0],[0, 0, 1, 0]]
INFO: [[0, 0, 1, 0],[1, 0, 0, 0],[0, 1, 0, 0]]
INFO: ikfast translation3d: [j0, j1, j2]
INFO: depth=0 c=1, [] [j0, j1, j2]: cases=None
INFO: j0 solution: equations used for atan2: [pxsin(j0) - pycos(j0), -pxcos(j0) - pysin(j0) + 227/1000]
INFO: adding atan2(227py, 227px) = 227Abs(px) + 227Abs(py) all zeros check
INFO: adding atan2(227py, 227px) = 227Abs(px) + 227Abs(py) all zeros check
INFO: depth=0 c=3, [j0] [j1, j2]: cases=set([])
INFO: adding atan2(pz, -cj0py + pxsj0) = Abs(pz) + Abs(-cj0py + pxsj0) all zeros check
INFO: adding atan2(pz, -cj0py + pxsj0) = Abs(pz) + Abs(-cj0py + pxsj0) all zeros check
INFO: adding atan2(cj0py - pxsj0, pz) = Abs(pz) + Abs(cj0py - pxsj0) all zeros check
INFO: adding atan2(cj0py - pxsj0, pz) = Abs(pz) + Abs(cj0py - pxsj0) all zeros check
INFO: adding atan2(pz, -cj0py + pxsj0) = Abs(pz) + Abs(-cj0py + pxsj0) all zeros check
INFO: adding atan2(pz, -cj0py + pxsj0) = Abs(pz) + Abs(-cj0py + pxsj0) all zeros check
INFO: adding atan2(cj0py - pxsj0, pz) = Abs(pz) + Abs(cj0py - pxsj0) all zeros check
INFO: adding atan2(cj0py - pxsj0, pz) = Abs(pz) + Abs(cj0py - pxsj0) all zeros check
INFO: depth=0 c=5, [j0, j1] [j2]: cases=set([])
INFO: trying to guess variable from [j2]
INFO: have only one variable left j2 and most likely it is not in equations [-pz, pxsin(j0) - pycos(j0), -pxcos(j0) - pysin(j0) + 227/1000, -px2 - py2 - pz**2 + 51529/1000000, pxsin(j0)sin(j1) - pysin(j1)cos(j0) + pzcos(j1), -pxsin(j0)cos(j1) + pycos(j0)cos(j1) + pzsin(j1)]
INFO: depth=0, c=2, iter=0/2, starting newcases: set([py, px])
INFO: depth=2 c=6, [] [j0, j1, j2]: cases=set([py, px])
INFO: depth=0, c=2, iter=1/2, starting newcases: set([Abs(px) + Abs(py)])
INFO: depth=1 c=7, [] [j0, j1, j2]: cases=set([Abs(px) + Abs(py)])
INFO: generating cpp code...
INFO: c=1 var=j0
INFO: c=2 var=j1
INFO: c=3 var=j2
INFO: c=4, store solution
INFO: c=5 var=j1
INFO: c=6 var=j2
INFO: c=7, store solution
Segmentation fault (core dumped)


Even if it says "INFO: generating cpp code...". The cpp file is never generated. Firstly, I have decrease the amount of decimals in the dae file, so that it would be easier for IKfast to solve. Unfortunately, it did not work. Trying to solve this issue I have played around with the inverse kinematics type and baselink/eelink/freeindex numbers (also with no freeindex at all), but I always end up with "Segmentation fault (core dumped)" message.

If someone could help me, I will be grateful.

Jon

jurp1.zip

@nkhedekar
Copy link

I faced the same issue and using this solution worked for me. The segfault still happens but after the cpp file has been written

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants