Cartesian control robot cannot reach the pose
Summary
I am using the beta testing branch with UR10e and am trying to send the robot a simple Cartesian trajectory. I am using an action client on /pose_based_cartesian_traj_controller/follow_cartesian_trajectory", and publishing goals cartesian_control_msgs::FollowCartesianTrajectoryGoal. However, the robot moves in unexpected ways and the teach pendant keeps displaying error "pose can't be reach, get_inverse_kin can't find the inverse kinematics". Maybe the problem is that I am using physical units and coordinate systems as defined on the teach pendant (e.g., coordinates in milimetes, coordinate system of TCP oriented with z axis pointing away from the TCP). I am not sure about the physical units in cartesian_control_msgs::FollowCartesianTrajectoryGoal.
Any help is kindly appreciated!
Versions
- ROS Driver version: ROS melodic
- Affected Robot Hardware Version(s): UR10e
@mayday-sauce That sounds interesting.
and the teach pendant keeps displaying error "pose can't be reach, get_inverse_kin can't find the inverse kinematics"
As a first guess, that sounds like a classic problem of singularities and/or impossible requests to inverse kinematics. There is no feasibility check on the ROS-side, so the teach pendant might be the last instance informing you about this during interpolation. Could you use this read-only controller (same action interface) to display your Cartesian trajectory as a moving PoseStamped and check, whether the motion is what you expect?
Maybe the problem is that I am using physical units and coordinate systems as defined on the teach pendant (e.g., coordinates in milimetes, coordinate system of TCP oriented with z axis pointing away from the TCP)
As everything in ROS uses metres for translations, and quaternions for orientations (REP-103), wouldn't this be the problem @stefanscherzinger ?
The interface is not just for URs, it's a generic message, so poses should be specified using ROS standard units (ref REP-103 again).
wouldn't this be the problem
Yes, that is surely part of the problem.
(e.g., coordinates in milimetes, coordinate system of TCP oriented with z axis pointing away from the TCP)
@mayday-sauce The coordinate system for specifying the trajectory waypoints is the robot base. The units are those mentioned by @gavanderhoorn , i.e. meters and radians. If you are not sure what you are sending, take the extra step and visualize your trajectory with the controller I mentioned above.