What we've done

A collection of the projects we've been involved in so far.

Industrial Vibration Monitoring Tool

2014-present

A configuration and monitoring platform for vibration sensors, targeting the industrial equipment’s physical integrity level. We helped our client integrate some of th technologies previously requested to and developed by our company into a fully functional product.

Technologies used:C++, Qt 5.4

Target platforms:Windows (XP, Vista, 7, 8), targeting UNIX based platforms in the future.

Main challenges:

  • Killer deadlines
  • Big amount of feature requests
  • Extensive software re-­‐design sessions in order to make it all happen.

See more

Wellbeingcart

2015-present

A system that is able to plot several types of XY and Bar graphs onto a 2D surface, customized for our client’s need to display live or historical data from various vibration sensors installed on mainly industrial mechanical components.

Technologies used: C++, Qt 5.2

Target platforms: Windows (XP, Vista, 7, 8), targeting UNIX based platforms in the future.

Main challenges:

  • The library was designed and completed on a really short period of time, the client having the need to integrate it with other components on the run.
  • Performance optimizations for lower speed computers, while not using OpenGL technologies.

See more

GraphDraw Advanced Plotting Library

2013-2014

A system that is able to plot several types of XY and Bar graphs onto a 2D surface, customized for our client’s need to display live or historical data from various vibration sensors installed on mainly industrial mechanical components.

Technologies used: C++, Qt 5.2

Target platforms: Windows (XP, Vista, 7, 8), targeting UNIX based platforms in the future.

Main challenges:

  • The library was designed and completed on a really short period of time, the client having the need to integrate it with other components on the run.
  • Performance optimizations for lower speed computers, while not using OpenGL technologies.

See more

Custom Application Styling Icons and Styling Specification

2014-2015

The project was about creating comprehensive application styling both dark and light flavors as well as the full icon set and C++/QSS implementation. The style was showcased by a test application containing most Qt widgets.

Technologies used: C++, QSS, Qt 5.2

Target platforms: Windows (XP, Vista, 7, 8), targeting UNIX based platforms in the future.

Main challenges:

  • Implement custom application title bar, custom widget shadows, custom MDI controls and behavior.
  • Develop a strong application identity that is pleasant to the eye and relaxing from the end-user point of view.

See more

TV Screener, Cutting and Tagging Interface Application

2012-present

A system that is able to monitor several TV channels streamed through the local network for advertisement clips and report their occurrences into a specialized database. The clips are being inserted in the database by using a custom-built Adobe-Premiere-like application that is able to cut and tag sequences out of 30-minutes pre-recorded TV chunks.

The system makes extensive use of pluggable interfaces and of GPU-accelerated frame search. Using a single NVidia Tesla GPU accelerator and a single server blade, the system is able to compare 17 live video channels against a 1000 ads database in real-time mode.

Technologies used: C++, Qt, VLC Framework, ArrayFire GPU library, MySQL

Target platforms: Linux

Main challenges:

  • The client having a low budget, we had to pick the right tools in order to meet all the requirements, yet keep the costs as low as possible.
  • Being a research project as well, prototyping before everything was chosen as a method to scale the HW and SW costs for the final product.
  • The target hardware was made available quite late, thus e.g. we had to improvise using GPUs installed on development computers.
  • Had to benchmark raw CUDA code against Thrust Template Library and Accelereyes ArrayFire GPU implementations.

See more

Seat Diagnostics Tool (CAN-bus testing framework)

2011 - 2012

A completely scriptable plug-in-based framework for testing CAN-bus devices, and not only. Specialized for testing active seats used in trucks and agricultural machinery.

The system is composed of a core application and a set of separate plug-ins, which have a C++ part (the CAN-bus driver) and a list of JavaScript easily editable testing scripts to be run by the core.

After a fault was detected in the tested seat, a manual entry would be automatically opened guiding the service technician through the repair process.

Technologies used: C++ Qt, JavaScript for plug-ins, Sontheim CAN Bus driver

Target platforms: Windows

Main challenges:

  • At the beginning the client did not have this product in mind, a simple testing tool was all that we were required to achieve. We quickly came with the idea of a pluggable all-purpose testing framework, then prototyped it in just 2 weeks. The client then agreed to extend the development costs to 300% understanding that later on it will be worth it.
  • The application had to monitor interruptions in its own usb / serial adapter / CAN bus driver, so that the user would know if the connection between the computer and the diagnosed seat is faulty, also if the CAN bus driver doesn’t work properly.

See more

Industrial Traceability System And Equipment Integration – MES

2006 – 2009

This software is monitoring and integrating equipments in industrial production lines all over the world (SIEMENS VDO, SGS Thomson Microelectronics, various factories in Germany). The core client application processes data from the equipment it is installed on, using a complex, structured, configurable plugins distribution, and stores the results in various databases (different DBMSs supported). The runtime and long time gathered data are accessible via a web interface.

The system makes extensive use of pluggable interfaces and of GPU-accelerated frame search. Using a single NVidia Tesla GPU accelerator and a single server blade, the system is able to compare 17 live video channels against a 1000 ads database in real-time mode.

Technologies used: : C++, Qt, Boost C++ Libaries, Python, Java, Php, SQL (MySQL, Oracle)

Target platforms: Linux, Windows

Main challenges:

  • Industrial production standards often require a 24/7 availability of the software. Maintenance operations become quite time consuming at times and if having the only option of compiling the specific software modules on the production machines, it became of great importance to have these operation last as little as possible. In order to achieve this we’ve updated the traceability framework’s core to have its specific equipment data acquisition components as Python scripts (Remark: If we were to do it again today we would use ECMAScript (JavaScript) scripting tools – meta-­‐programming in such environments becomes much easier with Qt – QtScript).
  • At times specific clients required really old industrial equipment (1980s) integrated with our traceability system. This required spending a lot of time to reverse engineer machinery protocols used by the specific equipments (Original documentation got “lost”).

See more

Automatic Stock Control For Industrial Warehouse

2006 – 2009

The application is controlling the storing, picking and management of containers for electronic equipment components. The "boxes" are stored via conveyor and automatic placement by a robot in a "block of flats" size warehouse. The GUI, accessible through a touch-­‐screen interface, is backed up by a very sophisticated control layer, using complex algorithms optimized for performance to the maximum possible level in months of testing and improvements.

The system makes extensive use of pluggable interfaces and of GPU-accelerated frame search. Using a single NVidia Tesla GPU accelerator and a single server blade, the system is able to compare 17 live video channels against a 1000 ads database in real-time mode.

Technologies used: :

Target platforms: Linux, Windows

Main challenges:

  • Really poor requirements documentation
  • The platform had to meet a minimum number of physical warehouse operations in 60 seconds (had to isolate a lot of issues in the hardware’s drivers, thus wasting time which was meant for the development of our components)

See more

Accounts & SSO Frameworks

2009 – 2012

Two independent open source frameworks for the Linux OS middleware, developed for Nokia's MeeGo OS, delivered on the Nokia N9 model. The Signon Framework resolves pretty much all authentication needs for a seamless number of applications that make use of the system accounts created using the Accounts Framework, the later also using the former for accounts validation purposes.

The code that we wrote for this project is now part of Ubuntu (http://en.wikipedia.org/wiki/Accounts_%26_SSO)

Technologies used: C++, Qt, POSIX, LUKS, DBUS, X-Server hooks

Target platforms: Maemo/Meego, Linux

Main challenges:

  • The SSO system was a heavily used middle-ware component and at the same time it had to be developed in parallel with all the client applications that were meant to use it. Having really good client APIs from the beginning and a strong SOA architecture to base everything on were a must.
  • Huge corporative bureaucracy and a highly volatile business/technical direction decision-making environment (e.g. having to lobby for our code to get into the production repositories; or the main concept for the MeeGo OS’ UI changed 6 times in two years).
  • Developing UIs on top of an unfinished UI library installed on very early prototype devices which differed from device to device as they were assembled manually and not always from the same electronic components.
  • Lack of a proper tool-chain forced us to debug and deploy through USB-SSH connections even when the USB drivers on the test devices were not mature enough to maintain a stable connection.

See more

NTranslate

2009

A prototype application built for the Maemo OS which is able to take pictures of text labels, uses OCR to recognize the text, translate the text using Google Translate Service then render the translated text over the original image and display it to the user.

The app had also the planned feature of reading the translated text aloud.

Technologies used: C/C++, GTK, POSIX, Tesseract OCR for ARM, liblomesa, Image Magick library

Target platforms: Maemo/Meego, Linux

Main challenges:

  • The main problem was preparing the image for the OCR step. This involved color correction, luminance correction and using binarisation algorithms.
  • Another problem was optimizing the steps so they run faster on the single-core 600 MHz ARM Cortex-A8 CPU.
  • Even with the above constraints, the application did perform well, processing time being under 10 seconds depending on how good quality the picture taken was.

See more

LumiHUB

2009 - present

An ecosystem for responsive widgets designed to run optimally on any device, regardless of resolution and device capabilities. Patent-based.

Technologies used: Node.JS, HTML5, CSS3

Target platforms: Any web browser

Main challenges:

  • Building a system that works great on all devices ranging from laptops, tablets, handheld, smartphones and down to rudimentary devices that barely have a browser.
  • Having an UI that is consistent and relevant no matter which device/browser combination you use.

See more

Greeting / Business Card Online Designer

2012 - 2013

A JavaScript Port of an in-house tool for online creation of greeting and post cards.

Technologies used: JQuery, Draw2D, Graphiti SVG, Python, MongoDB

Target platforms: Firefox, Google Chrome, Safari, IE

Main challenges:

  • replicating all the Flash functionality and look’n’feel by using JS
  • adding new features compared to the original product such as expandable drawers and drag’n’drop
  • having the zoom in/out functionality for the drawing space which was achieved by using a SVG drawing framework

See more

Contact

2007

A CAD/Cinema production application based on haptic hardware, which simplifies the CAD/Multimedia production workflow. The hardware consists of an in-house built 3D 6DOF robotic "mouse" that is used to translate real-life movement into virtual movement and to manipulate virtual objects.

Technologies used: C++, Qt, Boost-Python, OpenSceneGraph, NI-USB6008 Data Acquisition board drivers, 3DConnexion jog dial drivers.

Target platforms: Linux, BSD, MacOSX, Windows

Main challenges:

  • Creating a software module that computes an inverse-kinematics chain by using the positions of the robotic arm joints thus enabling the computation of the end-effector position in the virtual space. Simply put, it’s how you do so that when you move the 3D mouse tip, this movement reflects in the virtual space by translating the joint positions of the arm into the final tip position.
  • 3D material creation/cutting by using Delauney triangulation and 3D boolean operators.
  • Filtering out all the noise from the joint potentiometer rotary encoders. Was achieved by simulating an electronic capacitor. Just that this capacitor could be software- configured.

See more

IPCam

2006

A Windows/Linux video surveillance IP Camera communication protocol, an SDK and a video surveillance application that was able to receive streaming video from multiple cameras. The system had also AXIS IP cameras compatibility, sending motion JPEG over HTTP to AXIS- compatible DVRs.

Technologies used: C/C++, MFC, ARM cross-compilation, STL

Target platforms: BusyBox Linux on ARM, Windows

Main challenges:

  • implementing a pure C version of a protocol with 60 pages of specification.
  • having that code compile and run without modifications both on Windows and ARM
  • the sdk had to run both on Windows and on the IP camera’s 100Mhz BusyBox Linux ARM SOC.

See more

FTIR Large Multi-touch Display

2007

Large-scale multi-touch display based on the Frustrated Total Internal Reflection phenomenon. The display is composed of a translucent surface, which is lit by IR LEDs under a certain angle.

When the distance between the finger that touches it and the surface is smaller than the wavelength of the IR light, the light is reflected creating IR light blobs. These blobs can be detected using a custom IR camera. Images are then processed and the output is the position and the intensity of the touch on the surface. A projector is used to display images from behind, on the surface.

Technologies used: C/C++, Smoke Framework

Target platforms: Linux

Main challenges:

  • although experimental, we had lots of problems processing the blobs that were captured by the infrared camera.

See more