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.
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:Expected behaviour
When I use the same command run on another urdf file, it end up with success. The log like below:
I wonder know what cause the different result of running the same command to generate IKFast MoveIt plugin. Thanks.