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.
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 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 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
.
This directory is for figures that have been created using the data in the repository.
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 is a Python class providing convenience functions for SQLite3 to OcdCore.
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.
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:
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!
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.