PilzDE / pilz_industrial_motion

Industrial trajectory generation for MoveIt!.
https://wiki.ros.org/pilz_industrial_motion
119 stars 37 forks source link

prbt_base is not default reference_frame #102

Closed martiniil closed 1 year ago

martiniil commented 5 years ago

related: #98

Steps to reproduce

  1. Modify urdf such that prbt_base does not match root-link world
  2. Execute a ptp pose command without reference frame

Expected behavior

Robot should move relative to prbt_base frame

Observed behavior

Robot moves relative to world frame

martiniil commented 5 years ago

Is it intended that we require prbt_base and world to be identical? I am not sure if I fully understand the meaning of these frames. At least it should be possible to position the robot by simply altering the transform from world to prbt_base_link? screenshot from 2019-02-22 14-47-53

jschleicher commented 5 years ago

Please see ROS-I wiki: Create URDF for an Industrial Robot for a description of standard frames.

Yes, it is possible to move the robot around / move prbt_base to not match the world coordinate system. If you want to command positions in "world" or "base" coordinates in the API is a question of conventions. I'm not aware of a standard there.

MoveIt commander refers to a group for every motion plan request; I think that sounds like a good default. Maybe you should choose the default reference frame based on the default planning group as well?

gavanderhoorn commented 5 years ago

Please see ROS-I wiki: Create URDF for an Industrial Robot for a description of standard frames

Slightly off-topic: a more up-to-date (but still WIP) reference: Coordinate Frames for Serial Industrial Manipulators (rendered).

Yes, it is possible to move the robot around / move prbt_base to not match the world coordinate system. If you want to command positions in "world" or "base" coordinates in the API is a question of conventions. I'm not aware of a standard there.

Convention would say: Cartesian commands are in the "base frame" of the robot (ie: group).

This would seem to correspond to what industrial robots do.

MoveIt commander refers to a group for every motion plan request; I think that sounds like a good default. Maybe you should choose the default reference frame based on the default planning group as well?

MoveIt follows that convention.

If commanded poses are not relative to the base frame of the group, they are transformed into it.

martiniil commented 5 years ago

Yes, that sounds very reasonable. Thanks for the input. Actually, our Readme states that prbt_base is used as default.

agutenkunst commented 5 years ago

Reminder: Increase ROBOT_API if behaviour change on existing programs can be expected.

martiniil commented 5 years ago

WIP: 7d66d110025c0a768beb7727154fdc70ad957123

hslusarek commented 5 years ago

Wait for backwards compatibility feature.