Ask Your Question
0

Moveit execution fails - invalid joints

asked 2016-07-22 00:56:24 -0600

karthikj219 gravatar image

updated 2016-07-22 07:01:40 -0600

Hey guys,

I'm working on a ROS-Industrial package for the ABB-IRB14000, and recently have run into a new problem. Despite connecting to the robot perfectly fine(I'm using a real robot), and being able to plan trajectories, when I give the command to execute, I get the following error:

[ERROR] [1469166414.255451135]: Joint trajectory action failing on invalid joints
[ERROR] [1469166414.255451135]: Joint trajectory action failing on invalid joints
[ WARN] [1469166414.255676736]: Controller left_arm failed with error code INVALID_JOINTS
[ WARN] [1469166414.255676736]: Controller right_arm failed with error code INVALID_JOINTS

Any ideas what is wrong? I'm using ROS-Indigo, with Ubuntu 14.04, with ABB RobotWare 6.03.

EDIT 1:

Here is my controllers.yaml file:

 controller_list:
  - name: "left_arm"
    action_ns: joint_trajectory_action
    type: FollowJointTrajectory
    joints: 
      - gripper_l_joint
      - yumi_joint_1_l
      - yumi_joint_2_l
      - yumi_joint_3_l
      - yumi_joint_4_l
      - yumi_joint_5_l
      - yumi_joint_6_l
      - yumi_joint_7_l    
  - name: "right_arm"
    action_ns: joint_trajectory_action
    type: FollowJointTrajectory
    joints: 
      - gripper_r_joint
      - yumi_joint_1_r
      - yumi_joint_2_r
      - yumi_joint_3_r
      - yumi_joint_4_r
      - yumi_joint_5_r
      - yumi_joint_6_r
      - yumi_joint_7_r

The only other thing I use for the joints is a joint_names_yumi.yaml file, which is pretty basic:

controller_joint_names: ['gripper_l_joint', 'gripper_r_joint', 'yumi_joint_1_l', 'yumi_joint_1_r', 'yumi_joint_2_l', 'yumi_joint_2_r', 'yumi_joint_3_l', 'yumi_joint_3_r', 'yumi_joint_4_l', 'yumi_joint_4_r', 'yumi_joint_5_l', 'yumi_joint_5_r', 'yumi_joint_6_l', 'yumi_joint_6_r', 'yumi_joint_7_l', 'yumi_joint_7_r', ]

EDIT 2: Pastebin of roslaunch --screen : http://pastebin.com/vB0YdYpP

edit retag flag offensive close merge delete

Comments

Could you include the config/controllers.yaml from the MoveIt configuration? And also anything that configures the joints for the driver you are using (which you don't mention).

gvdhoorn gravatar imagegvdhoorn ( 2016-07-22 02:57:54 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2016-07-27 04:27:14 -0600

karthikj219 gravatar image

I fixed it. Turns out it was a simple mistake, the planning group I was using did not contain two of the joints (the 2 gripper joints). Changing that resolved the issue.

edit flag offensive delete link more

Comments

My goals definitely include all the joints required for a trajectory action.

So that comment wasn't entirely correct then ? :)

gvdhoorn gravatar imagegvdhoorn ( 2016-08-13 11:52:44 -0600 )edit

Yeah, my bad. I didn't check it properly.

karthikj219 gravatar imagekarthikj219 ( 2016-08-18 12:20:53 -0600 )edit

HI! karthikj219! I have the same problem like you,can you teach me how to solve this problem?how to find the problem, this is my question:question

Josephlin gravatar imageJosephlin ( 2016-10-13 09:06:53 -0600 )edit

Apologies for digging this back up so long after the original post, but where were the joints found to be missing from, your controller.yaml file?

Is there a reference list of joints stored anywhere, so that I can check for differences against my culprit file? @karthikj219

nisur gravatar imagenisur ( 2018-07-13 02:46:54 -0600 )edit
0

answered 2016-07-22 03:48:21 -0600

gvdhoorn gravatar image

updated 2016-07-22 03:49:44 -0600

You still don't mention which driver / package you are using, so I'm guessing a bit here, but:

I'm not entirely sure, but it's possible that your trajectory is failing to execute because it does not include all the joints that you configured the motion interface with. joint_names_yumi.yaml contains all joints, so any instance of the joint_trajectory_action node (I am using ROS-Industrial abb_driver and industrial_robot_client terminology) will assume it is responsible for all those joints. JointTrajectoryAction::goalCB(..) checks incoming goals to make sure they contain the joints it has been configured for, using industrial_utils::isSimilar(..) here, and it will reject goals for which that function returns false.

It's likely that you have either a single instance of joint_trajectory_action, and are sending goals with per-arm trajectories, or have two instances but have set the parameter only once.

edit flag offensive delete link more

Comments

Sorry about that, I'm using the abb_driver and industrial_robot_client. When I run my launch file, and generate the list of running topics, I get separate instances of joint_trajectory_action for both arms. I'm unsure what you mean by "set the parameter only once." Can you elaborate please?

karthikj219 gravatar imagekarthikj219 ( 2016-07-22 04:11:50 -0600 )edit

If the controller_joint_names parameter is present in the global namespace, both instances of joint_trajectory_action will use it. So both instances would then need goals to contain all joints. You could try to namespace your joint_trajectory_action instances, and give them different params.

gvdhoorn gravatar imagegvdhoorn ( 2016-07-22 04:28:49 -0600 )edit

Please also include any files to which you refer in your question and / or comments. It's rather hard to help you without knowing what those files do / contain.

Also: the joint_trajectory_action will probably output some diagnostic info if you run your launch file with roslaunch --screen ...

gvdhoorn gravatar imagegvdhoorn ( 2016-07-22 04:31:29 -0600 )edit

I've put all the files I've used on Github here. The launch file I'm running is execute.launch, and the package name is test1_moveit_config. The urdf and meshes for the robot are in the package testpack.

karthikj219 gravatar imagekarthikj219 ( 2016-07-22 05:56:46 -0600 )edit

Also, on running roslaunch --screen ... the only additional diagnostic info I get is that the joints have been added to list parameter, and user-specified joint names have been found.

karthikj219 gravatar imagekarthikj219 ( 2016-07-22 05:58:33 -0600 )edit

Have you tried namespacing the joint_trajectory_action nodes, and then providing them with their own subset of the joints they should accept goals for?

gvdhoorn gravatar imagegvdhoorn ( 2016-07-22 06:03:18 -0600 )edit

The test1_moveit_config item in your repository appears to be a symlink, or at least not something that can be opened?

gvdhoorn gravatar imagegvdhoorn ( 2016-07-22 06:05:06 -0600 )edit

Hey, sorry. Here is the fixed link, they're in 2 separate repositories now.

karthikj219 gravatar imagekarthikj219 ( 2016-07-22 06:10:47 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2016-07-22 00:56:24 -0600

Seen: 1,333 times

Last updated: Jul 27 '16