This is an old revision of the document!


The answer depends on which kind of package you would like to create:

(1) If the package implements new Prolog functionality or contains custom OWL files, you should create a package similar to e.g. comp_spatial. It should be a normal ROS package that, in addition, contains the following files:

  |- owl
  |  \- your_file.owl
  |- prolog
     |- init.pl
     \- your_module.pl

The init.pl should initialize the package, which may include loading dependencies, parsing OWL files, and registering RDF namespaces. Have a look at e.g. comp_spatial for an example. The owl.in or pl.in files you will find in some packages are required since the RDF parser needs global paths for loading files referenced by an OWL file. owl.in files therefore contain a placeholder that is replaced during compilation as specified in your CMakeLists.txt. Once you have set up your package like this, you can launch the system using

  rosrun rosprolog rosprolog your_package

(2) If you would just like to use existing packages in your program, e.g. to send queries via jpl or to call Java methods in one of the packages, it's enough to just depend on the KnowRob package.

Regarding which package to depend on, this depends on which functionality you would like to use. You just need to list the direct dependencies in your manifest, their dependencies are automatically included as well. Common candidates could be to depend on mod_vis (if you would like to use the visualization somewhere) or on ias_semantic_map (if you would like to use that map).