rdiankov / openrave

Open Robotics Automation Virtual Environment: An environment for testing, developing, and deploying robotics motion planning algorithms.
http://www.openrave.org
Other
684 stars 339 forks source link

IKFast plugin generate Fail #1375

Open zhouyongyi opened 2 months ago

zhouyongyi commented 2 months ago

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

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.