You are here: Wiki>SensorWeb Web>SensorPlanningService>SPSv10000>AxisSystem (04 Apr 2011, HenningBredel)Edit Attach

AXIS213PTZ System plugin


This site describes the plugin for an AXIS(tm) System. The plugin has been developed as a wrapper plugin for the AxisCameraPlugin. Both are plugins to run in a 52°North SensorPlanningService (SPS).


Based on the application scenario a sensor could be considered as autonomous or the contrary: as part of an application system (e.g. a mobile sensor platform). The idea of an autonomous sensor and a sensor which is part of a more complex system does not bar from the fact that these sensors can be the same. Considering the intended context the sensor is applied to a user maybe wants to task the sensor in a different way, than in an other context.

The AxisCameraPlugin was developed as an autonomous plugin. Its InputParameters are pan/tilt/zoom values, which the client have to submit to task the camera. The plugin then »talks« directly to the AXIS213PTZ network camera, which updates its gimbal to point at where the user wants to.

The AxisSystem is a wrapper plugin to the AxisCameraPlugin. As part of a more complex application system, the AxisSystem plugin offers a new taskable input interface to the user which is more adaptable to the application scenario. The conversions are done via sensorML processing which is described below in detail.

Application scenario

On a mobile sensor platform (e.g. the MobileSensorPlatform2) several sensors are installed, including the AXIS213PTZ network camera. The camera is connected to a network via WLAN router on the platform. An SPS runs in the background with both installed and registered, the AxisCameraPlugin and the AxisSystem.

The sensor platform is free to move at any point where necessary, so a GPS sensor is installed to retrieve the current position of the platform. In addition to the position, an other sensor measures the azimuth angle, elevation angle and roll angle of the platform. Position coordinates and measured variance values will be written into a SOS continuesly.

Via SPS the AxisSystem plugin receives Submit commands from a user client to task the camera where to look at. The plugin then processes the input parameters (having regard to the current position and correction parameters which can be accessed from the SOS) to task the AxisCameraPlugin accordingly.

Current development

The current development do not deal with communication between the MSP2 or similar mobile platform for now. The camera is fixed to a position and therefore it is not moveable. There is no MSP2 which wirtes new parameters into a SOS. The scenario is not fully realized, however. Nevertheless, the principle of parameter processing is the same, as if the camera were movable.

The system plugin

As mentioned above the plugin serves as wrapper plugin for the AxisCameraPlugin. Nevertheless, the AxisSystem is a full plugin itself with the camera plugin as sensor backend instead of a real sensor. Both plugins implement the SPSSensor interface of the 52°North SensorPlanningService.

The systems logic primarily bears on to convert the input parameter vales into absolute gimbal values and send a new Submit request to the SPS where the AxisCameraPlugin is installed at.

SensorML description

The SensorML description used for the camera and the system is located at For reusability reasons you will find several files each describing a part of the camera and its context (main file is ifgicam_Axis213PTZ.xml).

To read and parse the sensorML description, the plugin uses the [[][sensorml-data-processing API] and swe-common-data-framework API. Both projects were initiated by the VAST Team at the University of Huntsville, Alabama (UAH).

Process models

Currently, the Axis system offers the user an interface a user can submit two parameters to:

  1. A position where the camera shall look at.
  2. An angle which defines the horizontal field of view.

These two parameters must be converted to absolute pan, tilt and zoom values to set the gimbal of the camera. A ProcessModel describes a method to process a given input to a defined output and the parameters needed to do that.

The sensorML document describes some more processes like an AxisVideoConverter, but these are not implemented, yet.


The angle of view (AOV) describes the recorded extent of the camera. Here, we mean the horizontal AOV. It is a value to express zoom levels. In collaboration with University of Huntsville, Alabama, the zooming capabilities of the Axis PTZ213 camera were surveyed to describe a value array to do further interpolation operations (the measured values are given as parameter in the process model of the zoomCalculator to calibrate the process).

Fig. 1: Illustrates the horizontal angle of view (as well as diagonal and vertical AOV).

However, the process itself reads the calibration values and interpolates a cubic spline function to calculate an absolute zoom value from a given AOV angle.

tip The plugin uses the CubicSpline function of Dr. Michael Thomas Flanagan's Java Scientific Library. You can download it from The complete library can be downloaded, too (check license before downloading).

The process model can be reviewed at AxisAOVToZoomCalculator.xml.

  Name sweType UOM Limits Description
Input horizontalAngleOfView QuantityRange deg 2.7--56.3 The horizontal angle of view that the camera records with.
Output absoluteZoom Quantity Steps 1--9999 Zooms the camera to a designated level.
Parameters calibration DataArray NA NA Maps predefined AOV values to their corresponding absZoom values.


The cameras reference system is a left rotated engineering coordinate system with the cameras gimbal position as origin. The user inputs a geodetic WGS84 coordinate (described in EPSG 4979 CRF, that is (lat,lon,alt) on WGS84 ellipsoid -- for more details query the with EPSG code 4979) where the camera shall look at.

Fig. 2: Compares EPSG4978 (left) and EPSG4879 (right) .

The sensorML document describes the coordinate reference frames (CRF) we have to consider in more detail:

  1. The CRF of the camera (left rotated). See Axis213PTZ.xml#AXIS_SYSTEM_CRS
  2. The CRF of the cameras gimbal (coincident with 1., but Gimbal origin is slightly higher than of the whole camera system). See Axis213PTZ_gimbal.xml#GIMBAL_CRS and the positions section in Axis213PTZ.xml#AXIS_SYSTEM_CRS for the relationship. warning Recheck, if description is covering complete description, referring to a camera which is hanging upside-down.
  3. The CRF of the world (right rotated), wherein the target points are referenced in. See positions list of ifgicam_Axis213PTZ.xml to get the relationship between the CRFs in detail.

Fig. 3: The relationship of camera CRF and its gimbal CRF.

The gimbal values must be calculated with respect to the gimbals coordinate system: The target coordinate will be transformed into the gimbals reference frame. With the cameras position as origin and the orientation of the local CRF within the WGS84 CRF the gimbal angles can be processed.

Fig. 4: Position and orientation of the local frame within the WGS84 CRF.

  Name sweType UOM Limits Description
Input positionToPointAt Position WGS84 coordinate (EPSG:4979) NA Position (location) the camera shall be pointed at.
Output absolutePan Quantity deg -160--169 Pans the device relative to the (0,0) position.
absoluteTilt Quantity deg -10--90 Tilts the device relative to the (0,0) position.
Parameters cameraSystemPosition Position WGS84 coordinate (EPSG:4979) + orientation NA Position (location + orientation) of the station the camera is attached to.

Download and SVN

Currently the AxisSystem is only available from scratch together with the AxisCameraPlugin. Check out the code from

svn co

Install instructions

Note that the AxisSystem has not a release status yet. So you have to check out the project in your eclipse workspace side by side with an SPS. To let them run together, add the plugin project as webapplication module so the SPS can use the plugin without having it as jar file in its library folder. In addition to that, the plugin project must offer the libraries it needs to be run (`Offer and export' in `Java Build Path' -- these libraries have to be added to the `J2EE Module Dependencies' of the SPS, too).

Install both AxisCameraPlugin and AxisSystem at the SPS: Open AM administration interface and copy/paste the updateAMConfiguration.xml documents laying in xml/examples/axis-{camera,system} and send each to the SPS. Both plugins are known to the SPS now.

Now install an AXIS camera sensor instance by sending the registerAxisCamera.xml to the SPS (Adapt it to your camera .. there is a detailed documentation on doing this in the doc folder). Note the responded sensorId and put it into the registerAxisSystem.xml (at the moment the AxisSystem delegates the Submit request with processed parameters). Send it to the SPS.

Test the plugin by submitting the submit.xml example request. Observe the cameras movement where you can access your camera stream.

Planned development

  • Merge functionality into one AXIS system plugin (no plugin chaining)
  • Create release

-- HenningBredel - 12 Oct 2008
I Attachment Action Size Date Who Comment
Angle_of_view.pngpng Angle_of_view.png manage 9 K 02 Oct 2008 - 16:21 HenningBredel Illustrates the angle of view
EPSG4978.pngpng EPSG4978.png manage 48 K 12 Oct 2008 - 12:20 HenningBredel Illustrates WGS84 coordinate in an EPSG4978 coordinate reference frame
EPSG4978_4979.pngpng EPSG4978_4979.png manage 91 K 12 Oct 2008 - 13:23 HenningBredel Compares EPSG4978 (left) and EPSG4879 (right)
EPSG4979.pngpng EPSG4979.png manage 48 K 12 Oct 2008 - 12:29 HenningBredel Illustrates WGS84 coordinate in an EPSG4979 coordinate reference frame
EngCRFinLocalCRF.pngpng EngCRFinLocalCRF.png manage 53 K 08 Oct 2008 - 15:36 HenningBredel Shows the gimbals CRS in relationship to the local CRF of the camera
SML_AXIS_213_PTZ.pngpng SML_AXIS_213_PTZ.png manage 55 K 03 Oct 2008 - 10:49 HenningBredel Illustrates sensorML components of the Axis PTZ213 network camera
SML_Enhanced_System.pngpng SML_Enhanced_System.png manage 91 K 03 Oct 2008 - 10:50 HenningBredel Illustrates the Axis system and relationships between its components
transEngCRSAsLocalCRFtoGlobalCRF.pngpng transEngCRSAsLocalCRFtoGlobalCRF.png manage 110 K 08 Oct 2008 - 15:36 HenningBredel Illustrates the tranformation from the local CRF of the camera into the global CRF
Topic revision: r10 - 04 Apr 2011, HenningBredel
Legal Notice | Privacy Statement

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki? Send feedback