#pragma section-numbers 2 || {{attachment:oro-server.png}}|| = Introducing ORO, the OpenRobots Ontology cognitive kernel = ''oro-server'' (or, in short, '''ORO''') is a Java-based knowledge base for cognitive robotic applications. It is developped at the LAAS-CNRS, France and IAS-Technische Universität München, Germany by Séverin Lemaignan ([[mailto:severin.lemaignan@laas.fr|severin.lemaignan@laas.fr]]) ''This page introduces the !OpenRobots Ontology server ideas and features. The complete, up-to-date developers' documentation of oro-server can be found [[https://www.openrobots.org/oro-server/api|here]]. Informations on this page are based on `oro-server 0.7.99`, as of June 2011.'' == Summary == <> == What is ORO == Robots interacting with complex, human-inhabited, environments are expected to exhibit advanced cognitive skills: objects recognition, natural language interactions, task planning with possible dynamic replanning, ability to cooperate with other robots or humans, etc. These functions, while being scientific challenges partially independent from each other, need to communicate, and thus ''to share a common representation of concepts of the world'', to be effectively combined in a complete, autonomous, robotic system. The `oro-server` project focuses precisely on the implementation of such a common description framework, along with a library of basic, reusable cognitive functions. This '''cognitive kernel''' is actually build as a ''server'' that maps cognitive service to a ontology-based backend. || {{attachment:laas_example_semantic_scenarii.png}}|| Amongst other features, these base cognitive functions include: * Easy expression of statements on the world (ie, truths for the robot's model): `add [aibo sees green_bottle]` * Arbitrary complex queries, based on [[http://www.w3.org/TR/rdf-sparql-query/|SPARQL]]: `find robots [?robots sees ?object, ?object hasShape cylinder] [?robot hasWeight > 100]` * ''Per agent'' knowledge models, allowing the robot to reason with different ''perspectives'' on the world, * Fast knowledge classification (including SWRL rules) on a subset of the first logic order (Description Logics), and in the '''Open World Assumption''' thanks to the [[http://clarkparsia.com/pellet|Pellet]] library. * Possibility to assign to statements ''memory profiles'' that cause the robot to forget such facts after a predefinied amount of time, * Event system that triggers subscribed listeners, for instance when a fact becomes a true or a new object is discovered, * and much more! [[oro-features | Learn more on ORO and its features]]. == Installation == === Via robotpkg === The supported way to install `oro-server` is through '''robotpkg''': Robotpkg is a package management system for robotics module we use at the LAAS. It handles dependencies and compilation automatically. If you don't know it, [[http://www.laas.fr/~mallet/robotpkg|have a look here]]. Once installed, you can add the `oro-server` package very easily: {{{ > cd $ROBOTPKG_BASE/knowledge/oro-server > make update }}} You're done! === From the sources === You can grab a snapshot of the sources on the public FTP: ftp://ftp.openrobots.org/pub/openrobots/oro-server/ Or, to get the latest version of `oro-server`, you can check-out the sources with GIT: {{{ > git clone git://trac.laas.fr/robots/oro-server }}} To run the ontology server, you'll need Java JRE >= 1.6. The two only dependencies of `oro-server` are on [[http://jena.sourceforge.net/|Jena]] >= 2.6.4 and [[http://clarkparsia.com/pellet|Pellet]] >=2.3. By default, the Makefile expect following paths for these library: {{{ $PREFIX/java/jena/lib $PREFIX/java/pellet/lib }}} You can override these defaults by setting the `$JENA_LIBS` and `$PELLET_LIBS` with your custom paths. You can then compile it with: {{{ > cd oro-server > make PREFIX=[your prefix] install > make PREFIX=[your prefix] install-doc }}} If everything went fine, a executable script called `oro-server` should have been created in `$PREFIX/bin`. Before starting the server, you can tune the options in `$PREFIX/etc/oro-server/oro.conf`. In particular, check the path to the ontology you want to load is correctly set up. If you don't have yet any ontology to play with, grab a [[http://www.laas.fr/~slemaign/oro/oro-20100112.tar.gz|fresh (January 2010) snapshot here]] or check the [[http://www.laas.fr/~slemaign/wiki/doku.php?id=openrobotsontology|OpenRobotsOntology]] page on my Wiki. === Bindings === You can also install bindings for several languages (including C++ and Python). Instructions are available [[oro-server-bindings| on this page]]. == The OpenRobots Common Sense ontology == The knowledge that the robot acquires need to be somehow connected to other chunks of knowledge to become actually useful (enabling inference, contextualisation, efficient querying, etc.). This requires a common-denominator for the overall knowledge structure: users of the knowledge base must agree on common identifiers to symbolize identical concepts. This is provided by a "upper" ''common-sense'' ontology that can be loaded at the server startup. The common-sense ontology has its own page: '''[[oro-ontology|OpenRobots Common Sense ontology]]'''. == Using ORO in your architecture == ORO offers numerous way to interface, either through direct socket connection, language-specific bindings or robotics middleware abstractions. The documentation is available on this page: '''[[oro-server-bindings| ORO bindings]]'''. == Extending ORO == Since version 0.7.2, it's very easy to extend ORO with you own plugins. A complete tutorial is available on this page: '''[[oro-server-plugins| Writing plugins for ORO]]'''. == Resources == === Tutorials === * [[attachment:intro-knowledge-and-robotics.pdf| Introductory Course: Knowledge and Robotics with ORO]] === Publications === * [[http://homepages.laas.fr/slemaign/publis/Lemaignan2010.pdf | ORO, a knowledge management module for cognitive architectures in robotics]], IROS2010 '''(paper to cite if you wish to mention ORO)''' {{{ @inproceedings{lemaignan2010oro, author = {Lemaignan, S. and Ros R. and M\"osenlechner L. and Alami R. and Beetz, M.}, title = {ORO, a knowledge management module for cognitive architectures in robotics}, booktitle = {Proceedings of the 2010 IEEE/RSJ International Conference on Intelligent Robots and Systems}, year = {2010} } }}} * [[http://homepages.laas.fr/slemaign/publis/Ros2010b.pdf | Which One? Grounding the Referent Based on Efficient Human-Robot Interaction]], ROMAN 2010 {{{ @inproceedings{ros2010which, author = {Raquel Ros and S\'everin Lemaignan and E. Akin Sisbot and Rachid Alami and Jasmin Steinwender and Katharina Hamann and Felix Warneken}, title = {Which One? Grounding the Referent Based on Efficient Human-Robot Interaction}, booktitle = {19th IEEE International Symposium in Robot and Human Interactive Communication}, year = {2010} } }}}