Getting started with real Universal Robots hardware and ROS-I

After testing our control algorithms in simulation using Gazebo, we can start to perform manipulation tasks with a real Universal Robots arm. The main difference between performing a trajectory simulating the robot and using real hardware, is that we need to start the driver that will contact the arm controller to set the desired joint positions.

The default driver of Universal Robot arms is released with the ur_driver package of ROS-I. This driver has been successfully tested with system versions ranging from v1.5.7 to v1.8.2. The last version of Universal Robot controllers is v3.2, so the default version of the ROS-I driver could be not fully compatible. For the newer versions of these systems (v3.x and up), it is recommended to use the unofficial ur_modern_driver package.

To download ur_modern_driver, use the following Git repository:

$ git clone ur10_moveit_config ur10_moveit_planning_execution.launch sim:=true

After downloading this package, we need to compile the workspace to be able to use the driver.

The next step is to configure Universal Robots hardware to control it from our computer. Firstly, we must enable the networking capabilities of the Universal Robot, using its teach-pendant. Navigate into the Robot -> Setup Network Menu in order to select a proper configuration compatible with our network. If you prefer to have a fixed internet address for the robot, you must select the Static Address option and manually input the desired address information. Anyway, select the DHCP option, and then apply the configuration. After setting the IP address, it could be useful to check the connection status by pinging the robot controller:

$ ping IP_OF_THE_ROBOT

If the controller replies to the ping command, the connection is successfully established, and we can start to control the manipulator.

If your Universal Robots system has a version lower than v3.x, we can bring it up by running the following command:

$ roslaunch ur_bringup ur10_bringup.launch robot_ip:=IP_OF_THE_ROBOT [reverse_port:=REVERSE_PORT]

Replace the IP_OF_THE_ROBOT with the IP address assigned to the robot controller. Then, we can test the motion of the robot by using the following script:

$ rosrun ur_driver IP_OF_THE_ROBOT [reverse_port:=REVERSE_PORT]

To operate with systems greater than v3.x, we can use launch files provided by the ur_modern_driver package:

$ roslaunch ur_modern_driver ur10_bringup.launch robot_ip:=IP_OF_THE_ROBOT [reverse_port:=REVERSE_PORT]

The next step is to use MoveIt! to control the robot:

$ roslaunch ur10_moveit_config ur5_moveit_planning_execution.launch
$ roslaunch ur10_moveit_config moveit_rviz.launch config:=true

Note that for some desired robot configurations, MoveIt! could have difficulties with finding plans with full joint limits. There is another version with lower restrictions of the joint limits. This operative mode can be started simply by using the argument limited in the launch command:

$ roslaunch ur10_moveit_config ur5_moveit_planning_execution.launch limited:=true

We have seen how to simulate and control a Universal Robot. In the next section, we will work with ABB robots.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.225.57.67