Skip to content

RobotComponents/RobotComponents

Repository files navigation

Light color mode

DOI


Robot Components is a plugin for intuitive robot programming for ABB robots inside Rhinoceros Grasshopper. Robot Components offers a wide set of tools to create toolpaths, simulate robotic motion and generate RAPID code within Grasshopper. Some of the main features include:

  • 40+ predefined ABB robot models
  • Possibility to add your own robot models
  • Support for external axes (both linear and rotational)
  • Possibility to define custom strategies for all external axis values
  • Support for work objects (including movable work objects)
  • Efficient forward and inverse kinematics
  • Possibility to add your own custom code lines
  • Real-time connection with IRC5 and OmniCore controllers
  • Robot Components API to develop your custom components using either Python or C#

Getting Started

Installation

If you are using Rhino 7 or higher, you can install Robot Components via the Package Manager. For other versions, download the latest release directly from the repository's releases page or from Food4Rhino.

After downloading, unzip the archive and copy all files into the Grasshopper Components folder (in Grasshopper, navigate to File > Special Folders > Components Folder). Ensure that all files are unblocked by right-clicking each file, selecting Properties, and clicking Unblock on the General tab. Restart Rhino, and you're ready to go!

Robot Components supports the following Rhino versions:

  • Version 3 (v3): Compatible with Rhino 7 or higher.
  • Version 2 (v2): Compatible with Rhino 6 or higher.
  • Version 1 (v1): Compatible with Rhino 5 or higher.

With each latest release, we aim to support the latest two major Rhino versions.

Example files and documentation

Explore a collection of example files demonstrating Robot Components' main features in the repository's Example Files folder. Comprehensive documentation for Grasshopper is available on our documentation website and API documentation can be found here.

Controller utility components

To use the components in the Controller Utility section, you must also install Robot Studio or the ABB Robot Communication Runtime. You can download the runtime directly from this link.

The latest release of Robot Components is built and tested against ABB PC SDK version 2024.1 (ABB Robot Communication Runtime 2024.1). Compatibility with older versions of the runtime is not guaranteed. Additionally, the Controller Utility components are supported only on Windows operating systems.

If you encounter issues with establishing a real-time connection from Grasshopper, please contact us for assistance.

Quick Links

For easy sharing of the download link and documentation (e.g., with students), you can also use our Linktree.

Credits

Light color mode Light color mode

Robot Components is an open-source project that was initiated by the chair of Experimental and Digital Design and Construction of the University of Kassel. The plugin is currently being actively developed and maintained by Arjen Deetman. A complete list of developers and contributors is available here.

Robot Components integrates the ABB PC SDK for real-time communication with ABB robots. You can access the SDK used in this project here.

Robot Components utilizes the OPW kinematics solver, as described in the paper 'An Analytical Solution of the Inverse Kinematics Problem of Industrial Serial Manipulators with an Ortho-parallel Basis and a Spherical Wrist' by Mathias Brandstötter, Arthur Angerer, and Michael Hofbaur.

We would like to acknowledge Jose Luis Garcia del Castillo and Vicente Soler for their Grasshopper plugins RobotExMachina and Robots. While our approach differs, it was helpful for us to see how they implemented certain functionalities and approached certain issues.

Known Issues

Known issues are listed here. If you find a bug, please help us solve it by filing a report.

Roadmap

Please have a look at the open issues and projects to know what we are currently developing and what we want to add and change in the future.

Contribute

Bug reports: Please report bugs at our issue page.

Feature requests: Feature requests can be proposed on our issue page. Please include how this feature should work by explaining it in detail and if possible by adding relevant documentation (from e.g. ABB).

Code contributions: We accept code contributions through pull requests. For this you have to fork or clone this repository. To compile the code all necessary references are placed in the folder DLLs. We only accept code contributions if they are commented. We use XML comments to auto-generate our API documentation. You can read more about this topic here and here. If you want to make a significant contribution, please let us know what you want to add or change to avoid doing things twice. For questions or if you want to discuss your contribution you can reach out to one of the developers. Feel free to add your name to the list with contributors before you make a pull request.

Adding support for other brands: Robot Components is developed to intuitively program ABB robots inside Grasshopper. At the moment we have no plans to implement the support for other robot brands. However, we have a few ideas about how to implement this and since we want to keep Robot Components as intuitive as possible we kindly ask you to contact one of the developers first in case if you want to implement other robot brands. We are happy to contribute to and support this development.

Cite Robot Components

Robot Components is a free-to-use Grasshopper plugin and does not legally bind you to cite it. However, we have invested time and effort in creating Robot Components, and we would appreciate it if you would cite if you used it. Please use our DOI from Zenodo. To cite all versions of Robot Components in publications use:

Arjen Deetman, Gabriel Rumpf, Benedikt Wannemacher, Mohamed Dawod, Zuardin Akbar, & Andrea Rossi (2018). 
Robot Components: Intuitive Robot Programming for ABB Robots inside of Rhinoceros Grasshopper.
Zenodo. https://doi.org/10.5281/zenodo.5773814

Note that there are two reasons for citing the software used. One is giving recognition to the work done by others which we already addressed. The other is giving details on the system used so that experiments can be replicated. For this, you should cite the version of Robot Components that is used. On our Zenodo page you can find how to cite specific versions. See How to cite and describe software for more details and an in-depth discussion.

Version numbering

Robot Components uses the following Semantic Versioning scheme:

0.x.x ---> MAJOR version when you make incompatible API changes
x.0.x ---> MINOR version when you add functionality in a backward-compatible manner
x.x.0 ---> PATCH version when you make backward-compatible bug fixes

Versions that were not released on Food4Rhino are marked as pre-release.

Used by

An overview of the projects wherein the software is used can be found here.

License

Copyright (c) 2018-2020 EDEK Uni Kassel
Copyright (c) 2020-2025 Arjen Deetman

Robot Components is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation.

Robot Components is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Robot Components; If not, see http://www.gnu.org/licenses/.

@license GPL-3.0 https://www.gnu.org/licenses/gpl-3.0.html