System architecture


This page describes the 'catkinized' version of KnowRob that uses the catkin buildsystem and the pure Java-based rosjava. The older version, which was based on the rosbuild buildsystem and rosjava_jni, used a local visualization canvas implemented in Java.


KnowRob communicates with the browser-based visualizations via ROS topics (e.g. for the visualization_marker messages) and the json_prolog ROS service. The rosbridge node forwards messages from the ROS environment via a WebSocket to the user's browser and thus translates between the “ROS world” and the “Web world”.

Although the visualization appears to be a standard web page, it's important to keep in mind that it is indeed more similar to a web-based rviz. This means that there is only a single ROS graph and a single KnowRob instance in the background that is shared among all website visitors. If this creates a problem for your use case, you may consider setting up the KnowRob/Docker modules described here that allow the creation of one KnowRob instance per website user.