Closed kamikat closed 3 weeks ago
Hi @kamikat
Unfortunately, the short answer is that there is no fix. This IKFast library only works for the ideal robot model. In practice, the real robot is imperfect and has some offsets on each joint, so a calibration procedure is required to obtain such values when using the ROS driver library. I don't know if it is possible to generate a custom IKFast dataset for a UR model + calibration data. You can find more info in this thread https://github.com/ros-industrial/universal_robot/issues/564
For millimetric precision, you will need to use a different IK solver, such as Trac-IK, that can account for the model with offsets easily by just loading it from the robot_description parameter.
Thanks for help.
I've tried compiling IKFast with calibrated URDF but the compilation failed (the limitation addressed by @captain-yoshi).
Using trac-ik on my calibrated model cannot always get a solution (solve rate <10%). Then I came up with a combined approach by using ikfast result as search seed of trac-ik and use a bounded search for final result. The combined approach get >90% solve rate on my calibrated model.
That seems odd to me. Do you have a very constrained environment or something like that? I have been using Trac-ik a lot and have not had such issues with low solve rates. In any case, combining IK-FAST with TRAC-IK seems pretty useful.
Thank you for the fantastic library with an out-of-box ikfast integration experience.
I'm using the library with UniversalRobots/Universal_Robots_ROS_Driver and ur5e_moveit_config on UR5e robot.
I use IK result from the library for basic joint-based motion and found there always be some "offset" between target pose and the actual pose after motion execution.
So I checked the forward kinematics result against the one produced by moveit
/compute_fk
interface with the following script:Produces following result:
How can I fix this?