Software Development

We offer software development services mainly in the context of computer vision and embedded systems.

  • Concept development and software design
  • Embedded firmware development
  • Software test development
  • Software integration and debugging
  • GUI and HMI

Software for embedded vision

Since we offer complete embedded vision solutions to our customers, we also provide the full software stack which is necessary for such systems.

To be able to efficiently build uppon a large and powerfull base functionality and infrastructure, we typically use Linux as the operating systems. The Linux we customize for the embedded compute platform including device driver development, device trees, board support package (BSP), etc. Using an operating system has several advantage over bare metal applications. This includes features like a file system, networking support, remote management., graphics, etc. These are all features not that easily available in bare metal applications. Development itself is  also much more efficient when using an operation system as a basis. It can be a very painful experience to develop applications with a large team with only a microcontroller development infrastructure and no OS. Unfortunately this inefficient way of development is still applied quite often. Nevertheless, of course we also offer bare metal software development. In very resource critical situations or for applications with limited complexity this can make sense.

As a basis for our applications we use C or better C++ which is somehow the default for embedded systems. For image processing we regularily use OpenCV with which we have many years of experience. Or software stack for DC-SVP is also build upon OpenCV.

Not all applications require the highest performance levels only reachable with custom ASIC or FPGA development. For realtime image processing of non-trivial tasks we consider a GPU based embedded compute platform as very well applicable.

Areas of competence

  • Embedded software design
  • Algorithm development
    • Image processing
    • Computer vision
    • AI
  • GPU development
  • Linux and OS customization
    • Device drivers/device trees
    • Image customization, rollout
  • GUI
  • IoT
    • Remote management
    • Security
  • Tools and methodology

Software development tools

  • Programming languages
    • C/C++
    • Perl, Python
  • Libraries
    • STL, Boost
    • OpenCV
    • OpenMP, MPI (Message Passing Interface)
    • VTK (Visualisation Toolkit)
    • Windows programming (MFC, SDK)
    • OpenGL, CUDA