These are embedded systems that are constrained in size, memory, processing resources and usually run on a very low power budget. These can be sensing elements of the "IoT" that are low cost, small, smart devices with efficient sensors that collect, process and relay data to larger systems nodes for the smart-house).
These are devices that can run operating systems, where space/consumption are not constrained, but more performance and features are required.: Home Management Systems, Surveiance devices, Programable logic controllers, Measurements systems for industry, specialized gateways.
The software applications are often dedicated GUIs for interaction with an embedded system. These include new software or migration of old applications to modern GUI with drag&drop and multitouch interractivity.
Another category of applications are engineering support tools for desktop or for embedded systems, like custom bootloader interfaces, transpilers, diassemblers, etc.
For high level applications, our programming languages of choice are C# and Python, although we have build applications using various other languages and frameworks:
We use the following cross-platform tools to develop mobile applications of high level of nativity (that run on both Android and iOS):
Unity3D is used for graphic heavy 3D or 2D applications like games or presentations. Xamarin is used when it is reasonable to reuse C# libraries from the desktop environment. Cordova is used when the application requires the use of web technologies.
Server-side development: cloud based applications or integration with corporate information systems;
Interfacing the mobile app with other hardware peripherals like input devices, printers, etc;
Native Java application development for Android OS (full applications, services or plugins);
We are involved in scientific research in the domains of control theory, image processing, signal processing, communication protocols and autonomous robotic systems. We apply the research results and novel algorithms to solve particular customer problems.
The signal processing methods are developed using specialized high level tools centered around Matlab and Python. Sometimes the algorithms we develop are running on a computer, processing externally collected data, other times they are ported and optimized in C to run in real-time inside one of our embedded systems.