ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

FollowJointTrajectoryAction feasibility checking

asked 2018-10-16 16:42:12 -0500

BrettHemes gravatar image

updated 2018-10-17 06:58:26 -0500

MoveIt seems to do some sanity checking before executing trajectories and I was wondering if using the follow_joint_trajectory action gets you those same checks. I sent a bad trajectory that didn't start from the current pose today in simulation and expected an error but instead I got a instantaneous jump in the robots simulated state (very bad). I was expecting an error such as this but just got straight up execution.

1) Is this expected behavior?

2) Should I perhaps wrap my trajectory with a MoveGroup::Plan and then execute via MoveGroup::execute(const Plan &plan) call? Do I get other checks this way as well like collisions, joint limits, etc.?

Edit: In this particular case I am using a move group on top of industrial_robot_simulator

edit retag flag offensive close merge delete

Comments

1

Just to post a follow-up here... I switched from using control_msgs/FollowJointTrajectory Action (provided by drivers) directly to moveit_msgs/ExecuteTrajectory Action provided by the move group. This gets me checks from both MoveIt and the driver

BrettHemes gravatar image BrettHemes  ( 2018-10-18 11:12:10 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2018-10-17 02:09:24 -0500

gvdhoorn gravatar image

updated 2018-10-17 07:59:29 -0500

I was wondering if using the follow_joint_trajectory action gets you those same checks

Who is providing that action server? That is going to be the answer here.

If the server does not implement those checks, nothing will be checked.


I found this check in the ur_modern_driver here. So my problem is that industrial_robot_simulator doesn't have the equivalent? And the checks are then driver-dependent?

Yes. That is why I asked whether you could clarify what you were doing.

Specific drivers implement specific checks, but MoveIt also has some checks.

The industrial_robot_simulator does not do any checking and just executes whatever it receives.

It's also not a simulator: it's more a visualiser for trajectories with a similar interface to a nr of ROS-I robot drivers.

edit flag offensive delete link more

Comments

So I'm using MoveIt on top of ros_industrial_simulator. In this case would I expect to find the checks in JointTrajectoryAction::goalCB(JointTractoryActionServer::GoalHandle gh)? I guess I am confused because I thought I have gotten errors in the past but didn't this time.

BrettHemes gravatar image BrettHemes  ( 2018-10-17 07:01:39 -0500 )edit

I found this check in the ur_modern_driverhere. So my problem is that industrial_robot_simulator doesn't have the equivalent? And the checks are then driver-dependent?

BrettHemes gravatar image BrettHemes  ( 2018-10-17 07:14:13 -0500 )edit

I have also just discovered MoveIt's TrajectoryExecutionManager::validate that produces the "Invalid Trajectory: start point deviates from current robot state..." error. This might be what I was looking for. This gets called when using moveit but not the joint trajectory action directly.

BrettHemes gravatar image BrettHemes  ( 2018-10-17 07:21:10 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2018-10-16 16:42:12 -0500

Seen: 656 times

Last updated: Oct 17 '18