0
$\begingroup$

Rosanswers logo

Hi!

I am relative new to ROS and Moveit. I am using ROS noetic. For a research project, I want to realize automated trajectory planning for an FANUC industrial robot for handling pipes with high variation of geometry. In the last weeks it was possible for me to build up a basic model:

image description

In python I calculate the grasp points and targets for the trajectories based on a bracket, which position the tube on a table. After that I start planning and execution. All this works awesome fine for me. But grasping with pre grasp approach and post grasp retreat is not working. I get the error message "Fail: ABORTED: Must specify group in motion plan request". I think the reason for this is an inelegantly builded model. I am thinking the grasp msg is correct defined.

I think this is the main problem for the grasping error, I modified the fanuc pkg by adding a new link/joint in the cr7ial_macro.xacro to simulate the gripper (distance flange/TCP). I do not need to add the geometry of the gripper to the collision control because a collision is physical impossible. So, (pre) grasp posture is also not nessesary. I tried to modify the xacro-file by creating a new xacro file, but it was not possible for me just with the information of the tutorials.

Main reason is, I do not understand the interaction of the launch files of the fanuc pkg, an own launch file and an addition xacro script:

  • Own launch file to start all the stuff incl RviZ
  • Own xacro script to create gripper
  • Own xacro script to modify robot (add gripper)
  • Moveit launch file of the FANUC robot (moveit_planning_execution.launch)
  • cr7ial_macro.xacro

image description

Can you explain the interaction of the files of an existing industrial robot pkg? Do you need further information? Please feel free to answer. At the moment I am not feeling certain how to move further with the model creation. Thanks and best regards!

nico


Originally posted by nicob on ROS Answers with karma: 37 on 2021-09-27

Post score: 1


Original comments

Comment by gvdhoorn on 2021-09-27:
I understand why you did it, but could you please try to avoid including multiple questions in a single post?

Contrary to a forum, ROS Answers is a Q&A site (similar to Stack Overflow/Exchange) and works best with a 1-to-1 ratio of questions to answers.

Multiple questions in a single post have very poor visibility (as the relation to the question title is limited).

Please identify which question is your main one and update your post to focus on that one. You can use the edit button/link.

Comment by nicob on 2021-09-27:
I understand... I modified my post. The key question at the moment is the interaction between the files.

Comment by gvdhoorn on 2021-09-27:
Could you clarify what you mean by "interaction"? All those files make sense to me, and their interaction can typically be deduced by following the various include statements in them.

What is specifically unclear to you? Could you give an example?

Comment by nicob on 2021-09-28:
I added a picture of the schematic interaction of the mentioned files in my question.

My missunderstanding is marked with flashs:

The cr7ial_macro.xacro would be included by my own xaxro-file for modifing the robot (add a gripper). But the cr7ial_macro.xacro is also referred by moveit_planning_execution.launch file which is included in my own launch file to start everything, but I have to include my own xacro-file also in my launch file, right? So, the definition of the robot is "presented" two times in my launch file?

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

The cr7ial_macro.xacro would be included by my own xaxro-file for modifing the robot (add a gripper). But the cr7ial_macro.xacro is also referred by moveit_planning_execution.launch file which is included in my own launch file to start everything, but I have to include my own xacro-file also in my launch file, right? So, the definition of the robot is "presented" two times in my launch file?

Ah, that clears things up.

It might already be sufficient to tell you "do not reuse the generic MoveIt configuration package with your very specific workcell". See #q386473 for a previous discussion about this.

You will probably find other (MoveIt) devs who don't agree with this, but following that advice has always worked well for me, so I'm sticking to it.

The cr7ial_macro.xacro would be included by my own xaxro-file for modifing the robot (add a gripper)

this will be pedantic, but: you're not "modifying the robot". You're creating a composite object, of which the robot is one part (the other is the gripper). The generic MoveIt configuration does not know about the composite, as it's been created to use the robot model proper. That's probably what you refer to when you say

But the cr7ial_macro.xacro is also referred by moveit_planning_execution.launch file which is included in my own launch file to start everything, but I have to include my own xacro-file also in my launch file, right? So, the definition of the robot is "presented" two times in my launch file?

This is one of those things which will immediately be fixed once you create your own, specialised, MoveIt configuration package. You'd point the MoveIt Setup Assistant at your composite, top-level, .xacro file, instead of the .xacro of the robot model proper.

So the only thing you reuse in this case would be cr7ial_macro.xacro. Everything else is "created by [yourself] and stored in additional pkg" (as you describe it yourself).

(you can of course base your MoveIt package on the provided one, including files like moveit_planning_execution.launch. But you'd still update them to work with your setup)


Edit:

To wrap it up: I should create all the stuff as I mention before, but I have to write only one launch file?

You could write a single .launch file which starts your entire application, yes. That's not a requirement though.

Than, the robot component is included just by the xacro file which combine robot and gripper?

Exactly. Like what is shown in Working with ROS-Industrial Robot Support Packages: Example: adding an end-effector to a robot.

Don't forget to make the _support package an exec_depend of your own package of course.

Is it a good starting point to copy the moveit_planning_execution.launch to my own pkg and modify it as the one and only launch file?

Well, you could do that. I can't give you a simple yes-or-no answer here, as it depends a bit on how extensive your application is. It's a trade-off: at some point it starts to pay off to separate responsibilities a bit more, and using a single giant .launch file just becomes really annoying.


Originally posted by gvdhoorn with karma: 86574 on 2021-09-28

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by nicob on 2021-09-28:
Thanks for your detailed answer!

this will be pedantic, but: you're not "modifying the robot". You're creating a composite object, of which the robot is one part (the other is the gripper).

I understand... It was not possible for me to describe it as clear as you did it.

To wrap it up: I should create all the stuff as I mention before, but I have to write only one launch file? Than, the robot component is included just by the xacro file which combine robot and gripper?

Is it a good starting point to copy the moveit_planning_execution.launch to my own pkg and modify it as the one and only launch file?

Thanks in advance!

nico

Comment by gvdhoorn on 2021-09-28:
Please try to avoid posting answers, unless you are answering your own question. For everything else, use comments or update your original question text.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.