loading

Extending RoboRealm

Overview

RoboRealm Plugins allow you to create custom filters/algorithms that can be added into the RoboRealm image processing pipeline. Currently there 4 types of ways to extend the main RoboRealm application. The techniques are ordered mainly in terms of increasing complexity but also in increasing capability. If you have questions or problems with these plugins please be sure to send us a message

RoboRealm Plugins are different from the API as the plugins are used to add new image processing modules into RoboRealm for use in any application/project. They also guarantee that each frame is processed by the plugin before execution is passed back to the image processing pipeline. The API is used for external applications to query the data within RoboRealm and/or manage the RoboRealm application remotely.

Download our example plugin programs to get your started on creating your own plugin. The examples include Java, CSharp, Visual Basic, C++ and Python versions.

Types of plugins

VBScript & Python programs offer a basic numerical comparison capability that reacts to variables created in RoboRealm. For example, the mapping of visual coordinates to servo intensities can be accomplished within the script. However, while direct pixel comparisons are possible the speed restrictions imposed based the interpreted language can become unacceptible for use.

Pipes are a simple way to extend the processing capability of RoboRealm. Using windows Pipes the image data and variables are passed to an external program outside of RoboRealm. The pipe method is simple to use and provides the quickest way to extend RoboRealm.

Sockets are a similar communication technique that allows one to extend the RoboRealm program using external programs. The advantage of the socket communication is in providing a more standardized communication protocol that can be accepted by many different programming platforms.

DLL plugins are the most sophisticated mechanisms to extend RoboRealm but offer the createst possibility in terms of user interface and processing performance.

Variables and pixels

There are two forms of data that are passed through the RoboRealm processing pipeline. The first and most relevant are the actual image pixels. Pixels are provided in BGR (Red and Blue are switched from the normal RGB) arrays that can be processed as needed by external programs. Pixels values range from 0 to 255 are are represented as 3 unsigned bytes.

Variables are more global image attributes that typically represent results from more detail image calculations. For example, variables can be used to store the average image intensity, image Center of Gravity, min and max pixel values, etc. Variables are passed and received from each plugin to allow modification and creation of variables.

When to use what?

VBScript / Python / CScript - You have a simple need to perform a simple calculation on one or more of the variables created within RoboRealm.

Pipes - You need to extend RoboRealm by a custom processing routine that alters pixels directly. You are comfortable with the Windows operating system but don’t have a need to create GUI interfaces for your plugin.

Sockets - need to extend RoboRealm by a custom processing routine that alters pixels directly. You wish to utilize another machine to perform your processing to improve performance. Or you have an alternate programming platform (such as Java) that you would like to use to process image pixels and RoboRealm variables.

Windows DLL - you need to create the fastest possible processing of image pixels that will require some configuration that needs to be stored with the RoboRealm program. You are also very comfortable with the Windows GUI programming and compilers such as VC++ 6.0 and above.

Examples in Languages

C++ - Pipe, Socket, Windows DLL

CSharp - Socket

Java - Socket (Thanks to Janahan Thevaseelan for the original version)

Python - Script, Socket

Visual Basic - Script, Pipe

Visual Basic.Net - Pipe


 New Post 

plugins Related Forum PostsLast postPostsViews
None