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

IKFast plugin generate Fail #1375

Open
zhouyongyi opened this issue Apr 18, 2024 · 0 comments
Open

IKFast plugin generate Fail #1375

zhouyongyi opened this issue Apr 18, 2024 · 0 comments

Comments

@zhouyongyi
Copy link

Description

I want to generate the IKFast MoveIt plugin for my new robot arm. I followed the steps in ikfast_tutorial. I used the docker image based on Ubuntu 14.04 with OpenRAVE 0.9.0 and ROS Indigo installed provided by personalrobotics. But when I run auto_create_ikfast_moveit_plugin.sh (which will run the docker image and generate IKFAST plugin), it ended up with failure. I want to know what lead to the failure.

Your environment

  • ROS Distro: Noetic
  • OS Version: Ubuntu 20.04

Steps to reproduce

I followed the steps in ikfast_tutorial
When I run rosrun moveit_kinematics auto_create_ikfast_moveit_plugin.sh --iktype Transform6D /tmp/$MYROBOT_NAME.urdf <planning_group_name> <base_link> <eef_link>. It end up with failure.
The docker image is from here: docker image
The error log like below:

openravepy.databases.inversekinematics: generate, successfully generated c++ ik in 1548.005663s, file=/input/.openrave/kinematics.7b5e4b1e8e3a709e2b81fbc031bc32b7/ikfast0x10000049.Transform6D.0_1_2_3_4_5.cpp
openravepy.databases.inversekinematics: generate, compiling ik file to /input/.openrave/kinematics.7b5e4b1e8e3a709e2b81fbc031bc32b7/ikfast0x10000049.Transform6D.x86_64.0_1_2_3_4_5.so
/input/.openrave/kinematics.7b5e4b1e8e3a709e2b81fbc031bc32b7/ikfast0x10000049.Transform6D.x86_64.0_1_2_3_4_5.cpp: In member function ‘void IKSolver::innerfn(ikfast::IkSolutionListBase<double>&)’:
/input/.openrave/kinematics.7b5e4b1e8e3a709e2b81fbc031bc32b7/ikfast0x10000049.Transform6D.x86_64.0_1_2_3_4_5.cpp:6128:14: error: ‘x1611’ was not declared in this scope
 IkReal x1664=x1611;
              ^
......
/input/.openrave/kinematics.7b5e4b1e8e3a709e2b81fbc031bc32b7/ikfast0x10000049.Transform6D.x86_64.0_1_2_3_4_5.cpp:39631:14: error: ‘x8574’ was not declared in this scope
 IkReal x8617=x8574;
              ^
Traceback (most recent call last):
  File "/usr/bin/openrave0.9.py", line 126, in <module>
    database.run(args=args)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_9/databases/inversekinematics.py", line 1123, in run
    InverseKinematicsModel.RunFromParser(*args,**kwargs)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_9/databases/inversekinematics.py", line 1088, in RunFromParser
    model = DatabaseGenerator.RunFromParser(Model=Model,parser=parser,robotatts=robotatts,args=args,**kwargs)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_9/databases/__init__.py", line 262, in RunFromParser
    model.autogenerate(options=options)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_9/databases/inversekinematics.py", line 653, in autogenerate
    self.generate(iktype=iktype,freejoints=freejoints,precision=precision,forceikbuild=forceikbuild,outputlang=outputlang,ipython=ipython,ikfastmaxcasedepth=ikfastmaxcasedepth)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_9/databases/inversekinematics.py", line 918, in generate
    objectfiles = compiler.compile(sources=[platformsourcefilename],macros=[('IKFAST_CLIBRARY',1),('IKFAST_NO_MAIN',1)],extra_postargs=compile_flags,output_dir=output_dir)
  File "/usr/lib/python2.7/distutils/ccompiler.py", line 574, in compile
    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  File "/usr/lib/python2.7/distutils/unixccompiler.py", line 122, in _compile
    raise CompileError, msg
distutils.errors.CompileError: command 'cc' failed with exit status 1
'docker run --rm --user 1000:1000 -v /tmp/ikfast.u2KRtc:/input --workdir /input -e HOME=/input fixed-openrave:latest openrave0.9.py --database inversekinematics --robot=/input/wrapper.xml --iktype=Transform6D --iktests=1000' failed with exec code 1:

Expected behaviour

When I use the same command run on another urdf file, it end up with success.
The log like below:

openravepy.databases.inversekinematics: generate, successfully generated c++ ik in 28.336720s, file=/input/.openrave/kinematics.2115fea2a4e2836beeb737417f96bfd9/ikfast0x10000049.Transform6D.0_1_2_3_4_5.cpp
openravepy.databases.inversekinematics: generate, compiling ik file to /input/.openrave/kinematics.2115fea2a4e2836beeb737417f96bfd9/ikfast0x10000049.Transform6D.x86_64.0_1_2_3_4_5.so
openravepy.databases.inversekinematics: save, inversekinematics generation is done, compiled shared object: /input/.openrave/kinematics.2115fea2a4e2836beeb737417f96bfd9/ikfast0x10000049.Transform6D.x86_64.0_1_2_3_4_5.so
openravepy.databases.inversekinematics: RunFromParser, testing the success rate of robot /input/wrapper.xml 

openravepy.databases.inversekinematics: testik, success rate: 0.957000, wrong solutions: 0.000000, no solutions: 0.043000, missing solution: 0.445000
Created /tmp/ikfast.1nWXMY/.openrave/kinematics.2115fea2a4e2836beeb737417f96bfd9/ikfast0x10000049.Transform6D.0_1_2_3_4_5.cpp

Running /opt/ros/noetic/lib/moveit_kinematics/create_ikfast_moveit_plugin.py "rm_65_with_hand" "Arm" "rm_65_with_hand_Arm_ikfast_plugin" "arm_base_link" "Link00" "/tmp/ikfast.1nWXMY/.openrave/kinematics.2115fea2a4e2836beeb737417f96bfd9/ikfast0x10000049.Transform6D.0_1_2_3_4_5.cpp"
Creating IKFastKinematicsPlugin with parameters: 
 robot_name:           rm_65_with_hand
 base_link_name:       arm_base_link
 eef_link_name:        Link00
 planning_group_name:  Arm
 ikfast_plugin_pkg:    rm_65_with_hand_Arm_ikfast_plugin
 ikfast_output_path:   /tmp/ikfast.1nWXMY/.openrave/kinematics.2115fea2a4e2836beeb737417f96bfd9/ikfast0x10000049.Transform6D.0_1_2_3_4_5.cpp
 search_mode:          OPTIMIZE_MAX_JOINT
 srdf_filename:        rm_65_with_hand.srdf
 robot_name_in_srdf:   rm_65_with_hand
 moveit_config_pkg:    rm_65_with_hand_moveit_config

Found source code generated by IKFast version 73
Createing new package rm_65_with_hand_Arm_ikfast_plugin it in /home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin.
Created package.xml at: '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/package.xml'
Created ikfast header file at '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/include/ikfast.h'
Created ikfast plugin file at '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/src/rm_65_with_hand_Arm_ikfast_moveit_plugin.cpp'
Created plugin definition at  '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/rm_65_with_hand_Arm_moveit_ikfast_plugin_description.xml'
Created cmake file at '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/CMakeLists.txt'
Wrote package.xml at  '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/package.xml'
Created update plugin script at '/home/robot/Robot-Arm/ws_rm65_robot_copy/rm_65_with_hand_Arm_ikfast_plugin/update_ikfast_plugin.sh'
Failed to update MoveIt package:
Failed to find package: rm_65_with_hand_moveit_config
Update your kinematics.yaml manually to include the following configuration:
Arm:
  kinematics_solver: rm_65_with_hand_Arm/IKFastKinematicsPlugin

I wonder know what cause the different result of running the same command to generate IKFast MoveIt plugin. Thanks.

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

1 participant