Ask Your Question

Planning Goals For Moveit using TF

asked 2020-05-12 00:42:22 -0500

YaJP gravatar image


I use a system that detects objects (D435) using a depth camera. This is reflected by converting the target object to TF.

In addition, a robot arm model is added to implement the gripping of the detected TF with the arm.

The hint I got is an old tutorial.

Planning Goals For Moveit, item 3 of the tutorial, instructs me to convert the TF coordinates obtained using the depth camera into base_footprit.

I connected the camera_link to the base_link of the robot arm. base_link is linked to the world.

However, the goal of the robot arm has not yet been converted into an object TF.

Please advise any hints, tutorials, or code or messages here.

I am not very familiar with ROS. I just know to install the Package and register it in an environment variable.

Please let me know if you have any detailed advice, or knowledge about it.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-05-12 09:25:33 -0500

fvd gravatar image

The terms you use are a little bit confusing. I am not sure what you mean by "detected TF", or "converting a goal into an object TF". Maybe some general concepts will solve the questions you implied.

First off, TF is how ROS keeps track of transformation trees. PoseStamped objects have a header, in which you define a frame_id, which is the name of the TF frame in which your Pose is defined. If your robot is properly defined in your URDF, then you can convert from any of its frames to another frame on the tree. For example, you can obtain the pose of the object relative to your camera, define a PoseStamped object in your code defined in the camera frame (likely camera_color_optical or similar), transform it to a fixed frame in the world and then publish that pose. This is what the tutorial asks you to do in the first step, because MoveIt cannot plan to pose goals that are defined on moving frames. See here and here for more information on how to use transformPose for this, which is simpler to use than what your tutorial suggests.

Next, there is no "converting a goal into an object TF". What you want to do is to define the goal of your motion planning problem using a PoseStamped object. This PoseStamped defines the pose that you want your robot's end effector to move to. The robot's end effector is defined in the SRDF of your robot's moveit_config package. You can read all about MoveIt and how to set up your robot for it here.

Note that rather than planning directly to a TF frame that you calculate inside your code, you can also publish an object to the MoveIt Planning Scene, which visualizes it in Rviz and lets you attach it to the robot when you pick it up.

By the way, there are some hacky suggestions in the tutorial that I would not recommend (instead of looping through different goals that are close by, you should just increase the tolerance of your planning problem like here). Make sure to read the official documentation and tutorials as well so you get a better overview.

edit flag offensive delete link more

Your Answer

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

Add Answer

Question Tools



Asked: 2020-05-12 00:42:22 -0500

Seen: 498 times

Last updated: May 12 '20