Giter Club home page Giter Club logo

openrobotdatabase's Introduction

Open Robot Database (ORD)

The Open Robot Database - short "ORD" - essentially is a collection of yaml files listing properties of robots that you typially find in robot datasheets. There are plenty of great resources listing different robots along with their payload capacity, maximum reachability, Cartesian velocity or repeatability. However, I wanted to add also other information and wanted to query, filter and visualize such information. So I sat down and created these yaml files, which I wish to share with the community through this repository for journalistic purpose in the hope this data will be helpful to someone.

Repository Organization

The yaml files are organized in two directories. The script test_yaml.py checks whether the data in all files is formatted correctly. It uses Rx and points to possible schema violations, so that they can be corrected easily.

The manufacturers Directory

The manufacturers directory lists all the yaml files containing data about robot manufacturers. It has two special files. The yaml files follow a data schema defined in ./manufacturers/manufacturer_schema.yaml. A template for manufacturer yaml files is given in ./manufacturers/manufacturer_template.yaml.

The cobots Directory

The cobots directory lists all the yaml files containing data about collaborative robots (so-called cobots). It is where everything originally started, as I was looking into Cobots. Hopefully, there will be other types of robots in the future as well. The directory has two special yaml files. The yaml files follow a data schema defined in ./cobots/cobot_schema.yaml. A template for robot yaml files is given in ./cobots/cobot_template.yaml.

The figures Directory

This directory is for figures that have been created using the data in the repository.

OcdCore Class

OcdCore is the Python class, which allows to collect the information in the yaml files and to convert it into a SQLite3 database. The cobot_config.yaml and manufacturer_config.yaml define which fields of the yaml files in the corresponding directories shall be ported into the database file.

OrdSqlInterface

OrdSqlInterface is a Python class providing convenience functions for SQLite3 to OcdCore.

Disclaimer

If you make decisions based on the data provided in the Open Robot Database including any of its files, you do so at your own risk and it is strongly recommended to verify the information contained in this file through other channels such as the robot manufacturer's original site.

A Quick Example

In the example below, we instantiate an OrdCore class and visualize the payload capacity versus the maximum reach for all robots in the database using Matplotlib.

from ord_core import OrdCore
import matplotlib.pyplot as plt

# The name of our database will be:
database = "ord_database.db"
    
# Initialize the ORD core:
core = OrdCore(db_filename=database)

# Convert .yamls into a SQLite database
core.create_db()        

# Next we are going to plot the payload mass capacity for each robot 
# versus the robot's maximum reach.

# Extract and organize desired columns from the database
data = core.get_data('cobots', ['payload mass', 'max reach'])
payloads, reaches = zip(*data)

# Plotting
plt.plot(reaches, payloads,'o')
ax = plt.gca()
ax.set_xlim([0,1800])
ax.set_ylim([0,26])
ax.set_xlabel("Max. Reach [mm]")
ax.set_ylabel("Payload Mass [kg]")
plt.title("Number of Cobots: %d" % len(reaches))
plt.show()

data = core.get_data('manufacturers')
print(data)

The result should look somehow like this: a_quick_example.svg

Call for Contributions

Keeping the database up-to-date is hard and time consuming work. Any support, contribution and help is grately appreciated and of course credited.

Even if you don't feel to have enough knowldege about GitHub, pushes, commits, pull requests, YAML and databases, programming or open source in general, you can still contribute and be part of creating something great! While this holds for any open source project, the Open Robot Database in particular will benefit from:

  • sharing the knowledge about the existence of the Open Robot Database mouth-to-mouth or on social networks
  • notifications about new robots to add
  • new robot data
  • corrections of erroneous data
  • providers of missing data
  • feedback on how to improve the database
  • some visualisations of the data
  • participate in the discussion and provide some hints for listed issues

If you are comfortable with GitHub and can carve out some time to support this project, please feel free to create a pull request with additions, corrections, suggested modifications. If you are a first time user, you can drop a message in the discussions section.

Looking forward and thanks a lot in advance!

License Information

Creative Commons License
Open Robot Database by Jörn Malzahn is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on the work at https://github.com/joernmalzahn/OpenRobotDatabase.

openrobotdatabase's People

Contributors

joernmalzahn avatar norro avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

robotexplore

openrobotdatabase's Issues

Set up unit testing

Just as with the code documention (#9), I have been pretty lazy about setting up unit tests so far. Shame on me. This is to take the time to properly do it.

Maximum Cartesian Velocity is a Mess

It seems that different manufacturers report different maximum velocities. Some report really the physical limit of the robot. Others seem to refer to "safe velocity" limits under certain conditions. This needs to be checked and treated accordingly.

Add pictures for each robot

Many robot manufacturers offer press kits to download. These contain image material that can be used with appropriate attribution to the manufacturer's copyright policy. This means:

  • each robot yaml needs to list the image URL along with the attribution information
  • it would be good to have a link to the press kit in the manufacturer yaml, to quickly find it.

I will need to contact the manufactureres to receive permission though.

Missing Cobots

  • atuomata: eva
  • F&P Robotics: P-Rob 2
  • Rethink Robotics Baxter
  • Aubo OUR
  • MABI SPeedy 10
  • MABI SPeedy 12
  • MABI SPeedy 6
  • Fanuc - CR-35iA
  • Carbon Robotics: KATIA
  • Kawada Nextage
  • Denso WAVE: Cobotta
  • HY Robotics HCR-5
  • Precise Automation
  • Kawasaki Robotics duAro 1
  • Kawasaki Robotics duAro 2
  • Acutronic Robotics Mara
  • Bosch APAS
  • COMAU Aura
  • Comau E.DO 6 AXES
  • DLR Sara
  • DOBOT CR6-5
  • DOBOT M1
  • DOBOT Magician
  • Dobot Magician Lite
  • Elephant Robotics Catbot S3
  • Elephant Robotics Panda 10
  • Elephant Robotics Panda 3
  • Elephant Robotics Panda 5
  • Elephant Robotics S5
  • Elibot EC63
  • Elibot EC66
  • Elibot EC75
  • ESI Canarm 15
  • Esi Canarm 7
  • F*P Personal Robotics Prob 2R24 V
  • F*P Personal Robotics PRob 2R48 V
  • Festo Bioniccobot
  • Flexiv Adaptive Robot
  • Haddington Dynamics Dexter
  • Han#SRbots Elfin 10
  • Han's Robots Elfin 3
  • Han's Robots Elfin 5
  • Hanwha HCR 12
  • Hanwha HCR 3
  • Hanwha HCR 5
  • Hitbot T-Arm 2140C
  • Hitbot Z-Arm mini
  • HRG T5
  • Hyundai Robot YL012
  • Inovo Robotics
  • ISYBOT SYB3
  • JAKA ZU 12
  • JAKA ZU 18
  • JAKA ZU 3
  • KASSOW Robots KR1205
  • KASSOW Robots KR1410
  • KASSOW Robots KR1805
  • KASSOW Robots KR810
  • Kinetic Systems 6 Axes Robot
  • Kinetic Systems Robot Scara
  • KUKA LBR IISY
  • Life Robotics Coro
  • Megarobo MRX-T4
  • MIP Junior 200
  • MIP Junior 300
  • MODBOT 5 DOF-C
  • MODBOT 6 DOF-C
  • MRK System KR 5 SI
  • Nachi CZ 10
  • Neuromeka Indy 10
  • Neuromeka Indy 12
  • Neuromeka Indy 3
  • Neuromeka Indy 5
  • Neuromeka Indy 7
  • Neuromeka Indy RP
  • Neuromeka Indy RPP2
  • Neuromeka OPTI 10
  • Neuromeka OPTI 5
  • Niryo One
  • Pilz Manipulator Module pRBT
  • Precise Automation Direct Drive 6-Axis
  • Precise Automation PAVP6
  • Precise Automation PAVS6
  • Precise Automation PF3400
  • Precise Automation PP100
  • Rainbow Robotics RB10 1300
  • Rainbow Robotics RB3 1200
  • Rainbow Robotics RB5 850
  • Rainbow Robotics RB5 850A
  • Robut Tech ARMOBOT
  • Robut Tech ARmobot Mini
  • Rokae Xmate
  • Rozum Pulse 75
  • Rozum Pulse 90
  • Siasun DSCR3 Duco
  • Siasun DSCR5 Duco
  • Siasun GCR14-1400
  • Siasun GCR20-1100
  • Siasun GCR5-910
  • Siasun SCR 4
  • Siasun SCR 5
  • ST Robotics R12 5-6
  • ST Robotics R17 5-6
  • SVAYA Robotics
  • TATA BRABO Gen-I TR05-10
  • TATA BRABO Gen-I TR05-2
  • TATA BRABO Gen-I TR06-6
  • TOKYO Robotics TOROBO Arm
  • TOKYO Robotics TOROBO Mini
  • UFACTOR UARM Swift Pro
  • UFACTORY XARM 5 Lite
  • UFACTORY XARM 6
  • UFACTORY XARM 7
  • Yuanda Robot

Link Datasheets for each robot

It would be nice to have a link to the official datasheet (and maybe also the product brochure) for each robot for quick access.

Decide about how to integrate other robots

This project started off with a special focus on so-called cobots. Then I realized that it would make a lot of sense to have a complete picutre of existing robots out. Today we still distinguish bettween an industrial robot and a cobot. By "industrial robot" we implicitly refer to a fully position controlled antropomorphic arm that is programmed with a classical teach pendant. By "cobot" we refer to a robot that features some sort of impedance control and collision detection along with a lightweight design to make it safe and enable some physical human-robot interaction or at least human-robot coexistence in the same workspace under some circumstances (safety).

The point is, the boundaries between cobot and industrial robot are already blurry and to my observation both categories continue to blend. Moreover, it might make more sense to distinguish between physical structures of the robot. Not all arms are antropomorphic. There are scaras, deltas, cartesian... And their physical structure has no causal connection to whether they can be considered cobots or not. There can be a cobot scara for example.

So maybe it makes more sense to organize the database by the robot physical structure (antropomorphic, scara, delta, cartesian...). If the robot should be considered a collaborative robot or not should then go into a database field. To me that sounds reasonable as the attribute "cobot" essentially means, the robot is suitable or certified for collaborative applications, but it is the robot applications that are collaborative, not the robots.

This will be quite some structural work to the toolbox.

Improve documentation

I was pretty lazy about this until now. Shame on me. This is to take the time to properly do it.

Take a closer look at flanges

There are two types of flange:

  • the base flange
  • the tool flange

For both different standards are applied. In general the robot flanges follow ISO 9409-1.

The tool flange often also hosts additional power and communication interfaces. Need to find a way to systematically include those.

Currently this is mixed up. In mechanical properties we have has quick connect base, which is true for the Kinova robots only.

the group flange interface should be more precisely named tool flange. This group should hold the mechanical interface specification as well as the power and I/O options available at the flange.

It might be useful to have another group named base flange, which specifies the mechanical interface for mounting the robot in it's workspace plus the electrical connectivity (power, communication).

An reasonable idea could be to make it one group flange with subgroups base and tool.

Add logos of manufacturers to the yamls

This would be good to make the manufacturer recognizable in visualizations of the robot database.
This means each manufacturer needs a dict for the logo with:

  • an URL to the image of the logo
  • a note on the right-of-use policy
  • if possible, a link to the policy and guidelines

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.