Visual Odometry Bundle Adjustment With Register-Based Matrix Updates

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional bundle adjustment processes for determining camera poses and feature locations in visual odometry systems are computationally intensive, making them challenging for real-time applications due to high resource consumption and slow processing speeds.

Innovation Solution

Implementing parallel processing architectures to perform bundle adjustment on multiple processors, updating bundle adjustment matrices on a per-image-pair basis, and optimizing memory access through coalesced read and write operations, allowing for efficient processing of camera poses and feature spatial locations in real-time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If conventional bundle adjustment processes are used to determine camera poses and feature locations, then measurement precision is achieved, but processing time increases significantly and real-time performance cannot be achieved

Engineering Contradiction:
Improvecamera pose and feature location accuracyVSAvoidbundle adjustment processing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The bundle adjustment process is divided into multiple independent parallel threads, each processing a specific portion of the bundle adjustment matrices. This segmentation allows simultaneous processing of different matrix blocks across multiple CPU cores, dramatically reducing overall computation time while maintaining complete processing coverage for accurate camera pose and feature location determination.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system pre-identifies and stores feature points across multiple images before performing bundle adjustment. By having feature data ready in advance and organizing it in a structured format, the actual bundle adjustment computation can proceed efficiently without data preparation delays, enabling real-time processing while maintaining precision.

Inventive Principle:
Principle #10Preliminary action

2Measurement precision

If conventional bundle adjustment processes are used, then accurate camera poses are determined, but computing resource consumption including power and processing cycles increases

Engineering Contradiction:
Improvecamera pose accuracyVSAvoidprocessing resource consumption
Core Design Contradiction:
Measurement precisionVSUse of energy by moving object

Solution Approach 1:

The bundle adjustment computation is segmented into independent blocks that can be processed in parallel across multiple CPU cores. This distribution of computational workload prevents any single core from being overburdened, reducing overall processing time and energy consumption while still achieving complete processing necessary for accurate camera pose determination.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system processes bundle adjustment matrices in smaller blocks with controlled dimensions. By adjusting the block size parameters, the system optimizes the balance between computation depth and memory usage, reducing the energy required for each processing step while maintaining the mathematical completeness needed for accurate results.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If bundle adjustment matrices are updated frequently during processing, then real-time updates are achieved, but memory write operations increase and processing speed decreases

Engineering Contradiction:
Improvereal-time processing capabilityVSAvoidmemory access time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

Multiple matrix update operations are merged into single batched write operations. Instead of writing to memory after each individual update, the system accumulates changes in register memory and performs consolidated writes to the bundle adjustment matrices, dramatically reducing memory access frequency and time while maintaining real-time processing capability through efficient in-register computation.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

Register memory serves as an intermediary buffer between computation and main memory. By holding intermediate bundle adjustment matrix values in fast register memory during processing, the system avoids frequent accesses to slower main memory, reducing processing time penalties while still enabling real-time updates through controlled batch writes.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Loss of time

If parallel processing is implemented to speed up bundle adjustment, then processing time is reduced, but device complexity increases

Engineering Contradiction:
Improvebundle adjustment processing timeVSAvoidprocessor architecture complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The bundle adjustment computation is divided into independent parallel threads that each process specific matrix blocks. This segmentation enables straightforward parallelization using standard multi-threading techniques available in modern CPUs, achieving speedup without requiring complex custom hardware architectures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The parallel processing implementation uses general-purpose CPU cores with standard threading capabilities rather than specialized hardware. This universal approach leverages existing multi-core processor functionality to achieve parallel bundle adjustment, avoiding the need for complex dedicated hardware while still obtaining significant processing time reductions.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS11803192B2Visual odometry in autonomous machine applications
Publication Date: 2023.10.31 NVIDIA CORP
  • US11803192B2 patent drawing
  • US11803192B2 patent drawing
  • US11803192B2 patent drawing

AI summary

Systems and methods for performing visual odometry more rapidly. Pairs of representations from sensor data (such as images from one or more cameras) are selected, and features common to both representations of the pair are identified. Portions of bundle adjustment matrices that correspond to the pair are updated using the common features. These updates are maintained in register memory until all portions of the matrices that correspond to the pair are updated. By selecting only common features of one particular pair of representations, updated matrix values may be kept in registers. Accordingly, matrix updates for each common feature may be collectively saved with a single write of the registers to other memory. In this manner, fewer write operations are performed from register memory to other memory, thus reducing the time required to update bundle adjustment matrices and thus speeding the bundle adjustment process.