vide mechanisms for communication between differ-
ent modules in a robot. YARP focuses on providing
high level access to OS functionality, and while it ad-
dresses communication and uniform access for indi-
vidual sensors, it does not provide external control
and requires a custom YARP layer for each applica-
tion. Hive is a generic system with drones that are
connected by applications, giving greater flexibility
and control over pipeline creation. Player provides
a multi-threaded framework that facilitates commu-
nication between multiple devices. Player’s architec-
ture supports robotic based networks however it does
not provide the flexibility and control requirements in
creating diverse vision systems.
Various interfaces have been developed to ac-
cess data from input devices, from OS specific ex-
amples such as DirectShow on Windows, Quick-
time and Video4Linux (Schimek et al., 2008), to
cross-platform libraries such as OpenCV (Bradski
and Kaehler, 2008). These systems are generally lim-
ited to capturing data from devices physically con-
nected to the machine the software runs on. One of
our goals with Hive is to develop a generic camera
framework so that data can be captured from a vari-
ety of devices and delivered to any machine on the
network. This involves writing a hive drone for each
capture API, which could be for a specific camera, a
range of cameras (from the same manufacturer), or a
particular platform (e.g. Quicktime). Once all these
drones are created, it is possible to capture data with
very little development effort on any platform.
2 HIVE
Hive is a middleware platform which abstracts sys-
tem specifics and allows communication between ar-
bitrary reusable modules called drones. The plat-
form is based on a layered architecture that provides a
plug-in interface over an event system and a transport
layer that allow for distributed processing. The Hive
architecture and framework is explained in detail in
(Afrah et al., 2008), while the following presents a
brief overview of the important components.
Hive systems are built from drones: reusable mod-
ules which perform a specific task (e.g. capture im-
ages from a camera), and have well-defined inputs
and outputs. Applications are the command-and-
control centres for drones, configuring and connect-
ing sets of drones into processing structures called
swarms to perform a sequence of tasks. Applica-
tions can collate the output from drones to construct a
larger more sophisticated system.
Applications may construct multiple swarms, ei-
ther to distribute processing of a computationally in-
tensive task or to perform various tasks simultane-
ously, and later combine the results. There may also
be multiple applications using the same drones to re-
ceive and process information.
3 DRONES
Hive drones form the basis of vision systems, per-
forming data capture and processing. Drones are cre-
ated by registering functions as handlers for incom-
ing data, and registering a main method which runs
once per drone cycle. The expected type of input and
output are also specified in the drone definition. The
system specifics issues and communication methods
are taken care of by Hive, making the construction of
new drones a trivial task.
The following sections present an overview of the
drones currently operational in our systems.
3.1 Data Capture
All vision algorithms work on input from sensors,
from digital cameras to laser range scanners. Sensors
are abstracted as drones in Hive, exposing their ser-
vices across a network to other processing drones and
applications. The data capture drones we currently
have are as follows:
AXIS Camera. Data is captured from an AXIS
network camera over TCP/IP using the AXIS API
(VAPIX, 2008). The drone is executed from any
computer with access to the network and retrieves
the JPEG compressed image from the camera. The
image is then sent to other Hive modules in either
JPEG or decompressed format.
Inputs: None
Outputs: Colour image
Configuration: Camera settings;
Output format (JPEG or raw)
Image Sequence. When testing algorithms often
the same sequence needs to be used for evaluation
purposes, or the data for a particular application was
pre-recorded. This drone loads an image sequence
from disk and allows seamless switching of data
sources, e.g. from a live camera to an image sequence
stored on any computer on the network. The drone
itself can load any image sequence stored on its local
machine. The root name of the sequence and the
frame rate to supply data are given as configuration
parameters. The Image Sequence drone also supports
video files. Counterparts for storing image sequences
VISAPP 2009 - International Conference on Computer Vision Theory and Applications
102