Using Web Technologies to Efficiently Develop Navigation Systems


Using Web Technologies to Efficiently Develop Navigation Systems

The development of advanced navigation systems is of growing interest due to exciting new markets such as self-driving cars, drones, robots, and even advanced augmented reality displays. While the development flow of an embedded real-time systems is well understood, navigation system development presents additional challenges. Navigation system design places significant emphasis on simulation and in-field testing along with extensive data-collection and data-management required as part of the validation process.

The design cycle of a typical navigation system is shown below:

Typical Navigation System Design Cycle

In a typical design, a dynamic trajectory and modeled sensor readings with errors are simulated to design and optimize a navigation algorithm such as an Extended Kalman Filter or Particle Filter. Once simulation shows promising results, this complex algorithm is implemented with real-time code on embedded hardware. The resulting prototype is taken into the field where data is logged (often into the terabytes), and then analyzed against predicted results. The more CPU/memory constrained (i.e., cost-optimized) the target hardware platform is, then the more tedious and detailed iterating this design cycle becomes.

To facilitate this process, companies involved in the development of navigation systems typically select and use different software for each step in this process — a “software stack”. Surprisingly open-source “web technologies” can form the basis of a highly-efficient software stack for the development of navigation systems. This approach, however, is quite contrary to current navigation industry practice.

As a real world example, Aceinna, a manufacturer of low-cost high-accuracy inertial measurement units and GPS/INS modules has traditionally used a stack with many “classic” proprietary embedded programming and simulation tools. These tools include Matlab for simulation, IAR Systems for compiling embedded C/C++ code, and a combination of C# with National Instruments tools to build configuration, graphing and data logging graphical user-interfaces. Finally to manage all the data collected, large data files are stored on in-house servers. At Aceinna, a developer who has access to the full suite of tools will typically require more than $10K/year in license fees just to get started. Furthermore the developer finds the number of open-source libraries for math, analysis, and visualization compatible with this “classic” stack to be extremely limited. Aceinna decided it was time to break with tradition and consider a new approach based on “web technologies”.

A “web technologies” centric stack, uses Python for simulation, Microsoft’s open-source VS-Code or GitHub’s Atom with arm-gcc for an IDE, and builds user-interface and logging engines with JavaScript using a combination of Node.JS and React libraries. Internally at Aceinna, this new stack is called JPC for Javascript, Python and C/C++. Native user-interfaces for Desktop and Mobile can even be deployed with compatible projects such as Electron and ReactNative.

Cloud services such as Azure or AWS make it trivial to catalog and manage large datasets collected from the field, as well as share those datasets both internally and externally to the organization. Both JavaScript and Python are extremely well supported by cloud vendors allowing trivial integration of their compute and storage services into the stack. The license fees per developer are zero, and the libraries from numerical analysis in Python to JavaScript based graphing libraries are endless.

Old vs New: A Navigation Software Stack

So what is the catch?

The catch is primarily the upfront work required to make the embedded tool chain work. Professionally licensed tools can, at times, be more user-friendly and out-of-the-box. However, the large number of web developers and forums largely negate this advantage. With many specialized libraries targeted to help embedded developers use open-source tools, the path is rapidly becoming far easier to implement.

Look for updates on our GitHub account as we push some of our developments to open-source: https://github.com/Aceinna