Checking kinematically feasible movement

asked 2020-04-22 18:54:36 -0500

xman236 gravatar image

updated 2020-04-23 06:43:28 -0500

Hi community,

I am playing around with my custom 5 DoF robot and the "move_group_python_interface". Basically, I am just changing the pose_goal.position in the go_to_pose_goal() function like this:

current_pose = self.move_group.get_current_pose().pose
pose_goal = geometry_msgs.msg.Pose()
pose_goal.orientation.w = 1.0
pose_goal.position.x = current_pose.position.x-0.1
pose_goal.position.y = current_pose.position.y
pose_goal.position.z = current_pose.position.z

As you can see, I am just trying to move my EE to -0.1 along the x-axis. Then I get this error

ABORTED: No motion plan found. No execution attempted.

What I can think of is that my EE tries to move in - x_axis direction without changing the orientation and since the robot only has 5 DoF, it fails. Currently, I am using the KDL solver (it is known that this solver only works when the robot has >= 6 DoF but when I tested it in RViz with this gumball it somehow manages to find ik solutions, so I am just using it.... ).

My question is since the reachability of my robot is very limited I would like to move the EE to the nearest point when the given pose_goal.position is not kinematically reachable. How could I do this? Is it even possible with this iterative KDL solver?

edit retag flag offensive close merge delete

Comments

it is known that this solver only works when the robot has > 7 DoF

that's not quite correct: KDL works best for serial kinematic configurations with at least 6 dof. Where did you read that it requires > 7?

gvdhoorn gravatar image gvdhoorn  ( 2020-04-23 05:38:41 -0500 )edit

My mistake, 6 is the recommended minimum number of DoF.

xman236 gravatar image xman236  ( 2020-04-23 06:00:53 -0500 )edit