Code Monkey home page Code Monkey logo

universal_robots_ros2_driver's Introduction

Universal Robots ROS2 Driver

Universal Robots has become a dominant supplier of lightweight, robotic manipulators for industry, as well as for scientific research and education.

Universal Robot e-Series family

This is one of the very first ROS2 manipulator drivers. Some of the new features are enabled by ROS2 and include decreased latency, improved security, and more flexibility regarding middleware configuration. The package contains launch files to quickly get started using the driver as a standalone version or in combination with MoveIt2

This driver is developed on top of Universal_Robots_Client_Library and support some key cobot functionalities like; pause at emergency stop, safeguard stop, automatic speed scaling to avoid violate the safety setting and manually speed scaling from the teach pendant. In addition the externalControl URCap makes it possible to include ROS2 behaviors in the robot program.

The driver is compatible across the entire line of UR robots -- from 3 kg payload to 16 kg payload and includes both the CB3 and the E-series.

Check also presentations and videos about this driver.

Release Status

ROS2 Distro Foxy (EOL) Galactic (EOL) Humble Iron Rolling
Branch foxy galactic humble iron main
Release status Foxy Binary Build
Galactic Binary Build



The table above shows the build status for each package of this repo from the ROS buildfarm. For end-of-life (EOL) distributions the nightly binary builds from our CI are shown. EOL distributions will receive no more updates and may be lacking features.

A more detailed build status shows the state of all CI workflows inside this repo. Please note that the detailed view is intended for developers, while the one here should give end users an overview of the current released state.

Packages in the Repository:

  • ur - Meta-package that provides a single point of installation for the released packages.
  • ur_calibration - tool for extracting calibration information from a real robot.
  • ur_controllers - implementations of controllers specific for UR robots.
  • ur_dashboard_msgs - package defining messages used by dashboard node.
  • ur_moveit_config - example MoveIt configuration for UR robots.
  • ur_robot_driver - driver / hardware interface for communication with UR robots.

System Requirements

Please see the requirements for the Universal_Robots_Client_Library, as this driver is build on top of Universal_Robots_Client_Library.

Getting Started

For getting started, you'll basically need three steps:

  1. Install the driver

    sudo apt-get install ros-rolling-ur

    See the installation instructions for more details and source-build instructions.

  2. Start & Setup the robot. Once you've installed the driver, setup the robot and create a program for external control.

    Please do this step carefully and extract the calibration as explained here. Otherwise the TCP's pose will not be correct inside the ROS ecosystem.

    If no real robot is required, you can use a simulated robot that will behave almost exactly like the real robot.

  3. Start the driver. See the usage documentation for details.

    # Replace ur5e with one of ur3, ur3e, ur5, ur5e, ur10, ur10e, ur16e, ur20, ur30
    # Replace the IP address with the IP address of your actual robot / URSim
    ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur5e robot_ip:=192.168.56.101
  4. Unless started in headless mode: Run the external_control program by pressing play on the teach pendant.

MoveIt! support

MoveIt! support is built-in into this driver already. Watch MoveIt in action with the Universal Robots ROS2 driver:

Video: MoveIt2 Demo

The video shows free-space trajectory planning around a modeled collision scene object using the MoveIt2 MotionPlanning widget for Rviz2.

See the MoveIt! section of the Usage guide for details.

Expected Changes in the Near Future

  • Trajectory control currently only supports position commands. In the future, velocity control will be added.

Contributor Guidelines

Code is auto-formatted with clang-format 14 whenever a git commit is made. Please ensure these dependencies are installed:

pip3 install pre-commit
sudo apt install clang-format-14

Prepare the pre-commit formatting to run like this:

pre-commit install

universal_robots_ros2_driver's People

Contributors

abishalini avatar adverley avatar andyze avatar calaw avatar christophfroehlich avatar davetcoleman avatar dependabot[bot] avatar destogl avatar fdurchdewald avatar firesurfer avatar fmauch avatar github-actions[bot] avatar jaykoby avatar jrgnicho avatar kbogert avatar livanov93 avatar maltergate avatar matthijsburgh avatar mgbla avatar nbbrooks avatar relffok avatar robertwilbrandt avatar shonigmann avatar skolk avatar stefanscherzinger avatar tungbq avatar urmahp avatar urrsk avatar yadunund avatar zultron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

universal_robots_ros2_driver's Issues

Move CI to GH-Actions

Hi,

since this is the repository with OSS GH-Actions can be used for free. They are somewhat more responsive and industrial_ci and ros-tooling WG provide configurations for it. The benefits are additional checks, e.g., linters, uncrustify, etc.

I have have also a "standard" setup used across ros-control WG. Should I add this here?

Scaled joint trajectory controller: `rt_active_goal_` is not declared

On develop branch I get a bunch of build errors related to rt_active_goal_. It looks like it is not declared anywhere.

Some of the errors are:

scaled_joint_trajectory_controller.cpp:153:11: error: could not convert ‘((ur_controllers::ScaledJointTrajectoryController*)this)->ur_controllers::ScaledJointTrajectoryController::<anonymous>.joint_trajectory_controller::JointTrajectoryController::rt_active_goal_’ from ‘joint_trajectory_controller::JointTrajectoryController::RealtimeGoalHandleBuffer’ {aka ‘realtime_tools::RealtimeBuffer<std::shared_ptr<realtime_tools::RealtimeServerGoalHandle<control_msgs::action::FollowJointTrajectory> > >’} to ‘bool’
  153 |       if (rt_active_goal_)
scaled_joint_trajectory_controller.cpp:181:27: error: ‘using RealtimeGoalHandleBuffer = class realtime_tools::RealtimeBuffer<std::shared_ptr<realtime_tools::RealtimeServerGoalHandle<control_msgs::action::FollowJointTrajectory> > >’ {aka ‘class realtime_tools::RealtimeBuffer<std::shared_ptr<realtime_tools::RealtimeServerGoalHandle<control_msgs::action::FollowJointTrajectory> > >’} has no member named ‘reset’
  181 |           rt_active_goal_.reset();

IO Controller: Setting speed slider to 1.0

Currently the speed slider cannot be set to 100%. The controller seems to accept the input but on the call to the hardware interface something seems to go wrong. Thus the request is ignored

Build instructions and missing .repos.yaml file

I am trying to build the driver per the instructions, but the vcs step fails because .repos.yaml does not exist in the src directory.

vcs import --skip-existing --input src/Universal_Robots_ROS2_Driver/.repos.yaml src
usage: vcs import [-h] [--input FILE_OR_URL] [--force] [--shallow]
[--recursive] [--retry N] [--skip-existing] [--debug] [-w N]
[--repos]
[path]
vcs import: error: argument --input: can't open 'src/Universal_Robots_ROS2_Driver/.repos.yaml': [Errno 2] No such file or directory: 'src/Universal_Robots_ROS2_Driver/.repos.yaml'


Thanks,

bb

Add installation instructions to Readme

We need to make this easy for other people to use, so let's add installation instructions to the README. It should include a link to MoveIt2 installation instructions, at least.

documentation...

These may be things you already know, but as someone trying this out, here are somethings that I encountered... Good news: I was able to successfully get things running. I was building within a docker container based on ros:foxy

  1. I had to do a git clone https://... instead of the command in the doc (artifact of being in a docker environment?)
  2. I needed to do an apt update before the rosdep
  3. I need to build the client library. Initially, I cloned the official client library from UR, but that did not work at runtime (I can send a log file, but I suspect you know this already). I then tried the version of the client library on your site and everything worked.
  4. In hardware setup, I think you mean to say that you can either switch to remote mode, or use an external node. As it is you say to switch to remote mode and then describe how to use the external node.
  5. I manually had to start the controllers as was indicated in the doc. but then it all worked.
    bb

robot state helper node

FZI will provide input on milestone.

Joint position/velocity/acceleration will already be published on the joint_states topic, so we may not need this

Goal_time_tolerance in ScaledJointTrajectoryController

We should discuss how to handle the goal_time_tolerance when the robot is scaled down.
Right now the scaling factor is not applied to the time tolerance, which will be a problem if a rather small tolerance is chosen and the robot scales its movement down. However from my point of view this is the desired behavior since the action fails if the user specified time tolerance is violated. But on the other hand the user might not be aware that the speed scaling will kick in which would lead to confusions why the action will return unsuccessful.

Is ur_robot_driver RobotStateHelper necessary?

As we work toward a minimal demonstration, it would help us to know if the RobotStateHelper is necessary. It looks like there are hardly any references to it in the package.

The reason it's somewhat difficult to port is a simple action client doesn't exist for ROS2 yet.

@fmauch @gavanderhoorn do you have any input?

Use Client Library of the Universal Robots Github

Currently we are working on a fork of the Client Library repo with additional ROS2 changes. However, since the Client Library is plain c++ it should support both the ROS1 and ROS2 driver without additional branches.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.