Hi I managed to create a file in which I set a end-effector message, in this case, the "wrist_3_link" of the ur10 arm and it solves the IK and the I publish the joint states in order for the robot to move to that position in gazebo. However, I'm having problems with calculating the IK. Sometimes it works, but then sometimes I set one pose and it comes as "solution not found" even though I know that pose exists in the robot workspace. This is how I'm calculating the IK. Don't know if something is wrong. I'm unexperienced with this.

end_target.position.x = 0.5;
end_target.position.y = 0.5;
end_target.position.z = 0.0;
end_target.orientation.w = 0.0;

Eigen::Affine3d end_effector_state;
tf::poseMsgToEigen(end_target, end_effector_state);
bool found_ik = kinematic_state->setFromIK(joint_model_group, end_effector_state,"wrist_3_link", 4, 1.0);

if (found_ik)
{
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
for(std::size_t i=0; i < joint_names.size(); ++i)
{
ROS_INFO("Joint %s: %f", joint_names[i].c_str(), joint_values[i]);
}
}
else
{
ROS_INFO("Did not find IK solution");
}


And here is my kinematics.yaml file

manipulator:
kinematics_solver: ur_kinematics/UR10KinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005
kinematics_solver_attempts: 4

edit retag close merge delete