Difference between UR ROS driver and ROS Industrial

Hi,

Excuse me for this stupid question but I’m a bit confuse with Universal Robots ROS driver and ROS Industrial Universal Robot. Do I need both? What are they used for?

What I understand is (correct me if I’m wrong) :

  • I need Universal Robots ROS driver to interact with my real UR robot with Python
  • I need ROS Industrial Universal Robot if I want to simulate a UR robot with Gazebo or if I want to use MoveIt!. But in this Git repo, there’s a ur_driver folder. What is the difference with the previous UR ROS driver?

My needs are :

  • ROS Noetic, Ubuntu 20.04, Python 3, UR CB3
  • I want to get and set the tool pose with Python program on a real robot (MoveIt necessary or simpler solution using UR own controller?)
  • At home, I don’t have a real UR robot to test my program so, what is the good solution? Should I use Gazebo? Or UR Sim (but is URSim compatible with Noetic and CB3?)

If you have information about all this points, I’ll appreciate.

Best regards,

Philippe

The short answer: Yes, you need both.

As described in the driver’s build section you’ll need to use another branch (currently from my fork until things are merged).

There, you will notice that there doesn’t exist a ur_driver anymore. The old ur_driver is not supported anymore and should no longer be used (and probably won’t even work with robots above CB2).

The main reason you will need the universal_robot repository is that ur_description lives in there, which is a requirement for the ur_robot_driver to run, no matter whether there’s a real robot, gazebo or URSim involved.

  • I want to get and set the tool pose with Python program on a real robot (MoveIt necessary or simpler solution using UR own controller?)

MoveIt is not necessary to achieve this, but it has its advantages in real-world applications, as it will also respect the robot’s environments such as a table (as long as it’s modeled inside the description) to avoid collisions.

If you don’t want to use MoveIt, depending on how you want to command your target poses (joint space / Cartesian space) you have different choices on how to command the robot. See the controller description and the example python script.

  • At home, I don’t have a real UR robot to test my program so, what is the good solution? Should I use Gazebo? Or UR Sim (but is URSim compatible with Noetic and CB3?)

Depending on what you would like to do, both have its advantages and disadvantages. While gazebo allows you to also simulate other components such as cameras and much more, it (by default) has only one controller, and does not provide the same interfaces as the driver (No driver involved when using gazebo). If you use URSim, you can use the real driver to connect to it which will behave almost exactly the same as a real robot. So if you develop your application based on URSim, you can simply “replace” the URSim by a real robot without changing anything in your ROS system (maybe the robot’s IP address and its correct calibration parameters). So, in a nutshell, I would recommend using URSim (Download the 3.xx versions for CB3 robots) unless you really want to simulate other environment components, as well.

I hope, this explanation helped. If not, please let us know.