Auto-generated API documentation

As part of a recent effort to update the KnowRob documentation, we have included auto-generated API documentation into the KnowRob wiki and increased the documentation coverage to all exported predicates of all modules in the core KnowRob stack and several packages in knowrob_addons and knowrob_dev.

The documentation is generated automatically from structured comments in the source code using the pldoc system, similar to the well-known javadoc or doxygen systems. It is re-generated at every commit by our Jenkins server.

By the way, KnowRob includes a wrapper for pldoc that facilitates the generation of API documentation for KnowRob packages. You can call it for the existing packages or your own packages using

rosrun rosprolog rosprolog-doc <pkgname>
2015/02/12 20:44 · admin

Catkinized version of KnowRob available

After a lot of refactoring during the summer, we are proud to announce the beta version of the catkinized KnowRob that has further been updated in many aspects. Some highlights:

  • Fully catkinized (including additional repositories such as knowrob_addons)
  • Converted all Java code from the deprecated 'rosjava_jni' to the newer 'rosjava'
  • A web-based visualization module instead of the slow Java-based mod_vis
  • Removed code that is now available as Ubuntu system package (e.g. the Java-Prolog interface JPL)
  • Tidied up the package structure

With these changes, we adapt the system to the state of the art in the ROS community and base it as much as possible on developed third-party libraries. From my point of view, not everything has become better with the switch to catkin and rosjava, which is based on 'gradle', yet another buildsystem. However, both rosbuild and rosjava_jni are deprecated, so we decided to do the transition even if the newer tools have their shortcomings.

The source code can be found in the 'indigo-devel' branch at GitHub. It is feature-complete with respect to the old version and actively in use by the IAI group in Bremen. Despite the name, the code also works in ROS Hydro. The documentation in the wiki is being adapted, but not all pages have already been updated. We have documented the changes made in Github issues and have created a migration guide to help to adapt existing packages.

We'd be glad if you could try the new version and give us feedback! We will also further test the system and work on updating the documentation.

2014/11/08 10:32 · admin

Improved segmentation methods for 3D CAD models

A part of KnowRob that is gaining increasing importance are methods for reasoning about 3D object models. A few months ago, we have presented a method for the automatic semantic analysis of object components based on common surface meshes that can easily be downloaded from the Internet. Using an initial geometric analysis, followed by the identification of relevant object parts, this module is able to segment a common CAD model into a set of functional object parts. These parts are very important for robots that interact with these objects because they bridge the gap between symbols (e.g. words such as 'handle') and geometry (the coordinates of the handle w.r.t. the object).

During his Summer of Code project, Andrei Stoica worked on improvements of the algorithms for segmenting the surface meshes. He implemented a method proposed by Lavou'e et al. that detects sharp edges in the models and uses them for improving the segmentation. This helped to greatly reduce the number of erroneous annotations and to come up with a much better summarization of the models by their main components as needed by our robots. The pictures on the right side show the segmentation obtained using the old method on the left and the results of the new method on the right. The code is available in the knowrob_dev repository at GitHub.

2014/09/05 09:39 · admin

Application of KnowRob: Tidying up a kitchen

In a recent demonstration, the bachelor project SUTURO of the Institute for Artificial Intelligence at the University of Bremen presented its results. The project, partly self-organized by 14 Bachelor students, aims at teaching a PR2 robot to tidy up a kitchen. This involves very challenging tasks in robot perception, manipulation and grasping, task-level coordination and knowledge representation to recognize objects, infer where they shall be put, and interact with them in the appropriate way. The PR2 is able to recognize objects of different kinds and sort them into a box (for non-edible items) or bring them to the opposite counter (in case they are edible). If an object is unknown, it tries to scan the barcode and retrieve semantic information about this object from the Web. More information can be found in the video on the right and on the SUTURO homepage.

KnowRob has been used as a semantic layer for integrating information from perception (such as the object's position and attributes) with background knowledge about typical attributes of object classes and their storage locations. It was also used to interface the barcode scanning module and the module for retrieving product information from the Web.

2014/06/05 08:48 · admin

Modeling and generating constraint-based movement descriptions

In many cases, the success of a manipulation action performed by a robot is determined by how it is executed and by how the robot moves during the action. Examples are tasks such as unscrewing a bolt, pouring liquids and flipping a pancake. This aspect is often abstracted away in AI planning and action languages that assume that an action is successful as long as all preconditions are fulfilled. In a paper that will be presented at the European Conference on Artificial Intelligence, we investigate how constraint-based motion representations used in robot control can be combined with a semantic knowledge base in order to let a robot reason about movements and to automatically generate executable motion descriptions that can be adapted to different robots, objects and tools.

The system uses KnowRob as knowledge base for representing and reasoning about the motion descriptions and for analyzing geometric object models. The execution components have been implemented as part of the CRAM robot control framework.

2014/05/27 13:25 · admin

<< Newer entries | Older entries >>