## Technology

### Open

Open source community provides stability and no vendor lock-in

### Robust

Fewer statistical assumptions eliminates traditional limitations

### Distributed

Real-time speed without sacrificing scalability

## Open

### Outlast

The benefits of open platform technologies – such as community-driven design and public issue resolution – far outweigh the closed-source, vendor lock-in alternatives. Black box solutions carry a myriad of support and trust risks. With NavAbility, you can see and validate the underlying code as you develop your products. Our open, trusted framework ensures that the underlying technology you use is validated by leading experts, incorporates the latest research, and includes important features selected by users such as yourself.

### Stable

Technology that is developed out in the open is scrutinized by more experts. Poor quality code cannot be hidden behind company marketing. Therefore, open source code will always end up more stable and reliable that proprietary black box solutions. You can also count on the cost to remain in check as the community owns the technology rather than a single profit focused company.

### Ecosystem

Navigation software applies to almost every industry and a single company cannot possibly support every use case. NavAbility recognizes this and has designed the core technology to be extensible. NavAbility in order to do this we will always have to focus on a subset of the available applications. However, by working in the open, anyone can contribute and we build an ecosystem of application examples and extensions to solve any problem even if they aren’t yet fully supported by NavAbility products.

## Robust

### Non-Gaussian

Most navigation technologies leverage a Gaussian assumption to make the mathematics easy and compute quickly. Unfortunately, the downside is loss of information anytime you run an optimization solve. This has a number of consequences including limiting the amount of noise you can accept in your sensors, the types of sensors, the ways to combine different sensor data or even non-sensor data. It also filters out some very real probablistic information about uncertainty as it assumes the result will only have a single mode. Multi-modal solutions open the doors for a multitude of improves compared to the state-of-the-art.

Learn more about the value of non-Gaussian methods.

### Multi-sensor

Sensor data fusion is a difficult problem in it’s own right. By leveraging Bayes Trees, our technology supports a wide range of sensor error distributions and build specifically for fusing differing probability distributions into a single belief during our solve phase. This enables significant improvements in the ability for redundancy and robustness as adding a sensor to the system is trivial and if a sensor fails the navigation software will do it’s best without it.

Learn more about how Bayes trees make this all possible.

### Factor graph

The factor graph improves upon other methods such as Kalman filters and particle filters. Whereas these other methods require some understanding of the dynamic system to which they are applied, factor graphs allow for a generic representation of the state and constraints. Mathematically, the factor graph is a bipartite graph which encourages such constructs as loop closures. By choosing this construct, our technology can better reduce temporal probability explosion and improve on robustness.

Deep dive into the fundamentals of graph construction.

Learn more about why graphs instead of filters.

## Distributed

### Edge Intelligence

Running navigation intelligence as close as possible to the machine reduces latency and allows for maximal realtime responses. Therefore, our technology is build on Julia language with precompile options in order to achieve performance on the order of C. Our technology also fully supports x86 and ARM out of the box for fully Edge computing capability.

### Cloud Sync

Even though all of the code can be run on the edge, often the computation power can be limited (ie Raspberry PI). For larger jobs, our technology supports one and two way cloud sync. This allows real time processing on the most recent or relevant data while the cloud can process a larger history and update the edge real time. If connectivity is poor or unavailable, our technology supports delayed sync whenever connectivity is re-established. In applications where multiple machines need to run navigation together, the cloud can be leveraged as a swarm system. Lastly, as data becomes available in the cloud, a multitude of post-processing and developer workflows can be enabled even if the edge machines do not require real time communication or are offline.

### Analysis Anywhere

Developing an application on-machine or on-site can be difficult. Our technology has been designed to decouple data collection from analysis. After syncing data to the cloud, you can rerun your on-machine events to experiment with different settings, visualize your current data, and persist data long term for production monitoring and maintenance.

## How it works

### Assemble

Machines generate all sorts of data from odometry, to video, to radar scanning. The first step is to collect and model that data in a way that is reusable and contextual. Our technology leverages the factor graph for this.

The factor graph allows a model of the system to be generated such that state probabilities can be stored long term without losing temporal or spatial context. The two main concepts are the variable and the factor. The variables store the state and the factors the constraints to that state. For example, the state might be the position of a car at 10:00am and at time 11:00am. This requires two variables one for each time. The constraint might be that we believe the car moved 25 km down the road. That would require one factor that is dependent on the two variables. You can continue to develop this for as many variables and constraints as you want to generate the factor graph. Mathematically this type of graph is a bipartite graph which allows, and in fact encourages, loop closures.

### Solve

After assembling the factor graph, a solver must review the graph and determine the optimized values for the variables to most accurately represent the constraints. Typical naive methods use least squares optimization based on Gaussian probabilities for the variables and factors. Our technology leverages multimodal incremental smoothing and mapping (MM-iSAMv2). The solver algorithm can leverage all or some of the information available to make its best guess of the variable values, however the more information you use the more accurate the result, but the more compute it requires. This is why our solver is designed in such a way to encourage running only the most recent and relevant parts of the graph on the edge but a more expansive portion in the cloud. When we want to update the cloud, we can summarize the effects of the parts of the graph the edge is not using by passing back a marginal from the more comprehensive cloud solve. Current methods for generating this marginal summarize via a Gaussian assumption which eliminates significant information from the summary. Our technology does not make this assumption so our summary is more valid than other methods.

Learn more about MM-iSAMv2.

Learn more about how Bayes trees make this all possible.

### Analyze

After all is said and done the information is stored incrementally in the factor graph. This allows you to analyze the state of all the variables and their optimizations at any point in time of the factor graph assembly or solve cycles. Likewise, data can be added to the graph while solving so you can track all the updates after the fact by rerunning and analyzing the results. NavAbility has built an intuitive app on top of the core technology to surface this capability for you easily on the web or on mobile. By storing data in the cloud, you have long term persistence which can be use forever, wherever for post-processing or development workflows.