Skip to content

Trajectory start position doesnt match current robot position on CSDA10F dual arm robot #217

Description

@Danfoa

Good day,

We have been operating the CSDA10F robot with Moveit GUI interface, and it works properly. Nevertheless when we use the MoveGroupInterface on a c++ Node, we are getting the error:

[ERROR] [1527599320.788737189]: Aborting Trajectory.  Failed to send point (#0): Invalid message (3) : Trajectory start position doesn't match current robot position (3011)

It seems that on-the-fly point streaming (#88 and #215 )is a known solution to this problem (synchronization problem as far as I understand) but as mention in PR #88 this solution does not work for dual arm systems.

What seems odd to me is that, while performing planning and motion with Moveit and Rviz GUI, this problem seems not present. Cloud it be possible that we are generating malformed motion request? The file with which we are testing it is this (which by the way works perfectly on a simulated robot, with the demo.launch of our robot's Moveit's package) and basically follows the guidelines from Moveit MoveGroupInterface tutorial.

So the question will be Is it a drivers problem, or syncronization issue ? or are we doing something wrong wuile using the MoveGroupInterface class ?, in order to help clarify the second I am attaching how move below.

On our test Node we defined the move groups:

// Set up move group objects 
  moveit::planning_interface::MoveGroupInterface arm_left_move_group("arm_left");
  arm_left_move_group.allowReplanning(true);    
  moveit::planning_interface::MoveGroupInterface csda10f_move_group("csda10f");
  csda10f_move_group.allowReplanning(true);     

  const robot_state::JointModelGroup *csda10f_joint_model_group = csda10f_move_group.getCurrentState()->getJointModelGroup("csda10f");
  const robot_state::JointModelGroup *arm_left_joint_model_group = arm_left_move_group.getCurrentState()->getJointModelGroup("arm_left");

Set a given pose as target and execute

arm_left_move_group.setPoseTarget(approach_pose);
bool success = (arm_left_move_group.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
arm_left_move_group.execute(my_plan);

Shall we somehow hardcode into the Motion Plan the current robot state? robot_state::RobotState start_state(*arm_left_move_group.getCurrentState());

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions