0
$\begingroup$

Rosanswers logo

Hi,

Imagine that we have to create a package where we develop simple motion planning for UR5 robotic arm.

Since, we have repositories available, downloaded from this link . Thus, in our catkin workspace, we have ~/catkin_ws/src/universal_robot/ which includes ur5_moveit_config as well as ur_description folders, containing necessary configs and launch files.

In this case, is it necessary to create a MoveIt configuration package using the MoveIt Setup Assistant (MSA) again?. From the tutorial on using MoveIt Setup Assistant, we read

Additionally, it generates other necessary configuration files for use with the MoveIt pipeline.

Suppose, we write motion planning code using move_group_interface. Then, we can simply test the planning for pose and joint-space goals using the following sequence of commands.

roslaunch ur5_moveit_config demo.launch
roslaunch p4_moveit_pkg smp_basic.launch option:="1"

First one refers to the launch file from the downloaded repositories, and the second launch file includes the motion planning node that we created.

Is this the correct way to develop motion planning code, or do we need to create MoveIt configurations under our package and use those launch files?

Edit:

thanks @gvdhoorn,

This can work, but what about the parts the robot is mounted on? Do you also insert that as collision objects?

That could work, but seems unnecessary to me: I doubt the robot changes its mounting at runtime? It would make sense to me to add a priori known static obstacles to a URDF describing your workcell (or whatever equivalent you have).

This is indeed a useful suggestion that I did not know before. There are some parts, such as walls, and the mounting surface, or the table in front of the robot that will remain static. Currently, on the Teach Pendant, we set some safety thresholds for some surfaces, namely, the table and the walls, such that our robotic arm will not hit these when in motion. However, since the computed motion plans are agnostic to these set safety limits, its not an ideal situation at runtime. How do we add these in the URDF file ?

Concerning your other comment,

Unless I'm mistaken, the .launch files provided by UniversalRobots/Universal_Robots_ROS_Driver are not started by the MoveIt configuration packages. You have to do that yourself. So that doesn't seem to be any different from what the result would be from running the MSA yourself again, would it?

You are right about the drivers. These need to be started when we test on real robotic arms, and we use the launch files given under UniversalRobots/Universal_Robots_ROS_Driver. Probably, I was making some mistake when writing my launch files. So, the correct way to test is to start demo.launch either from roslaunch ur5_moveit_config demo.launch which is from the repositories, or roslaunch p4_moveit_pkg demo.launch if locally generated MSA configuration under p4_moveit_pkg. and then start the launch file, which contains user developed motion_planning node only roslaunch p4_moveit_pkg smp_basic.launch option:="1". And, our launch file, needs to contain only the nodes that we want to run?

    <launch>
     <arg
        name="option"
        default="1"
      />
    
    
      <node
        name="motion_node"
        pkg="p4_moveit_pkg"
        type="motion_node"
        respawn="false"
        output="screen"
        args="$(arg option)"
      />
</launch>

thanks,

Zahid


Originally posted by zahid990170 on ROS Answers with karma: 135 on 2021-09-14

Post score: 1

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

In this case, is it necessary to create a MoveIt configuration package using the MoveIt Setup Assistant (MSA) again?

it's almost always better to create your own MoveIt configuration package rather than reusing a "standard" one from somewhere else.

Main reason: MoveIt only really works well when it has up-to-date and correct information about your robot, its environment, any attached end-effectors, (changed) joint limits, etc, etc.

A standard MoveIt configuration package (or one created by someone else) cannot contain that information, as your robot workcell and/or environment will be unique to your application.

So although a lot of settings will probably end up being identical to those in the "standard" package, enough will be different and by creating your own package you are sure it will be compatible with your robot and its workcell.

You can (and probably should) of course look at the existing configuration package to make sure you're using the same settings for key parts.


Edit:

Even though that we use MSA, the input urdf will be the one taken from the repositories. The idea being that it would be complete and correctly developed. As for the environment, we have a separate system that using cameras, calculates bounding boxes of environment obstacles (humans and others), and can send us their key dimensions necessary to formulate obstacles within MoveIt / ROS.

This can work, but what about the parts the robot is mounted on? Do you also insert that as collision objects?

That could work, but seems unnecessary to me: I doubt the robot changes its mounting at runtime? It would make sense to me to add a priori known static obstacles to a URDF describing your workcell (or whatever equivalent you have).

Besides whether it's necessary or not: adding static objects to your URDF will allow MoveIt to incorporate them into its pre-calculated collision matrix, which will result in fewer collision checks to run when planning. That seems like a worthwhile optimisation to make.

Secondly, if we did use locally created MoveIt configs, then, in the launch file, in addition to our developed motion planning node, we must replicate all those nodes/launch files that are included in the standard launch files (planning context, joint_state_publisher, robot_state_publisher, move_group etc). ? Is there a list of nodes/launch files that must be present in our launch file. ? and the order in which these appear does not matter? thanks,

Unless I'm mistaken, the .launch files provided by UniversalRobots/Universal_Robots_ROS_Driver are not started by the MoveIt configuration packages. You have to do that yourself. So that doesn't seem to be any different from what the result would be from running the MSA yourself again, would it?


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

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by zahid990170 on 2021-09-15:
thanks @gvdhoorn. Even though that we use MSA, the input urdf will be the one taken from the repositories. The idea being that it would be complete and correctly developed. As for the environment, we have a separate system that using cameras, calculates bounding boxes of environment obstacles (humans and others), and can send us their key dimensions necessary to formulate obstacles within MoveIt / ROS. With this information, the task is only to plan around these. Secondly, if we did use locally created MoveIt configs, then, in the launch file, in addition to our developed motion planning node, we must replicate all those nodes/launch files that are included in the standard launch files (planning context, joint_state_publisher, robot_state_publisher, move_group etc). ? Is there a list of nodes/launch files that must be present in our launch file. ? and the order in which these appear does not matter? thanks,

$\endgroup$

Your Answer

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