orimania

OriMania - Resolve convention for sensor-to-vehicle mounting orientation

https://github.com/stellacore/orimania

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.0%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

OriMania - Resolve convention for sensor-to-vehicle mounting orientation

Basic Info
  • Host: GitHub
  • Owner: Stellacore
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 558 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 2 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

OriMania - Resolve sensor mounting orientations

Keywords: Sensor Calibration, Photogrammetry, Computer Vision, Remote Sensing

Given six parameters comprising three angles and three distances, determine the conventions for combining these parameters that is most consistent with available independent exterior orientation data.

Application

Consider the situation:

  • A software application processes data from multiple sensors mounted onto a rigid assembly (e.g. a vehicle, a robot, a spacecraft, etc).

  • The orientation (offset and attitude) of each sensor is expressed in terms of numeric values for 3 angles and for 3 distances.

  • However the interpretation of the two groups of three parameters is not well known (e.g. they may be the results of a black box calibration process.

  • It is desired to utilize 6 orientation parameters in another application, or to provide other numeric values for these parameters for use by the original application.

  • Independent external orientation data are available for each sensor via an arbitrary but independent means. (E.g for cameras, such information might obtained from independent space resection or relative orientation operations). Here the independent sensor exterior orientation is expressed with respect to some arbitrary "world" frame.

OriMania can be used in this situation to determine the conventions used within the black box for representing the sensor-to-payload mounting transformations - i.e. the offset and attitude with which each sensor is attached to the rigid payload structure within the black box system.

I.e., OriMania allows determining the payload orientation convention that is consistent with the group of 3 attitude parameters, the group of 3 distance parameters and the known independent sensor exterior orientations.

The math model is described further below and in this theory document.

Operation

For each sensor of interest, OriMania expects a data file containing the sensor orientation with respect to an arbitrary external world frame - the "World" system, along with the 3 unknown angle and 3 unknown distance parameters.

This information is provided via simple ASCII files of the form:

# File format: Sensor Wrt World (passive convention)
xlocation ylocation zlocation angle23 angle31 angle12 # Note: exact
offset offset offset  # Note: order arbitrary
angle angle angle # Note: order arbitrary

Given a file like this for two or more sensors, OriMania performs a brute force exploration of all common conventions of the 3 angle and 3 distance values in all combinations that specify a rigid body orientation (e.g. translate then rotate, rotate then translate, roll pitch then yaw, yaw roll then pitch, yaw pitch yaw, and so on, and so on, etc.).

OriMania uses combinations of the 6 unknown parameters to evaluate several thousand permutations of common orientation conventions and determines the specific permutation(s) that is(are) most consistent with the known external relationships.

Software

The OriMania software:

  • Is written in C++ (conforming with standard 17 or later).

OriMania project:

  • The project repository incorporates the CMake cross platform build environment generator system.

  • Developer API documentation is generated using the Doxygen documentation generation utility.

OriMania requirements include:

  • The Engabra geometric algebra package.

  • The Rigibra rigid body transformation package.

Build Process

Use the CMake system to create a build generation environment. E.g. in a *nix environment, build and test commands are similar to,

$ # -- Compile everything (including doxygen documentation)
$ mkdir <someBuildDir> && cd <someBuildDir>
$ cmake  \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/tmpLocal/ \
    -DCMAKE_PREFIX_PATH=/tmpLocal/ \
    /repos/OriMania
$ cmake --build . --target all -j `nproc`
$ # -- Run library unit tests
$ ctest -j `nproc`

Usage

Data File Setup

Create sensor information files as described above. E.g.,

.../data
    SensorInfoFile1.txt
    SensorInfoFile2.txt
    ...

Data File analysis

Run OriMania main program, OriAnalyse with these files as arguments. E.g., in *nix environments,

OriAnalyse .../data/Sensor*.txt

Output

Output is of the form...

TODO/TBD

Theoretical Framework

Coordinate frames

  • BlackBox ("Box") frame - this is a coordinate frame that is implemented but inaccessible for inspection (e.g. such as implemented within a proprietary data processing system).

  • Sensor ("Sen") frame - each sensor is assumed to have its own well defined 3D coordinate frame. (E.g. for cameras, this would be the exterior coordinate frame often attached to the optical system's entrance pupil).

  • Independent Reference ("Ind") frame - some arbitrary frame in which Sensor orientations can be established by a independent means.

Available data

  • Black box parameters - 6 values that specify (in some unknown manner) the offset and attitude of the sensors with respect to the box frame. E.g. these parameters accurately specify the SenWrtBox orientation. However, the convention by which they do so is not known.

    • Three angles: These (in some combination or another) represent the attitude of a sensor with respect to the (arbitrary and unknown) Box frame.
    • Three distances: These (again in some combination or another) represent the offset of a sensor with respect to the origin of the (unspecified) Box coordinate frame.
    • Ideally the numeric values for each of these six parameters are all notably distinct from each other.
  • Independent sensor reference orientations: These data comprise six degrees of measurement representing the position and attitude of each sensor with respect to a common and unique (but otherwise arbitrary and unknown) independent reference frame. I.e.,

    • Six parameter values that specify (in a known manner) the location and attitude of each and all sensors with respect to a single common "Ind" frame. I.e. one SenWrtInd transform for each sensor.

Methodology

The analysis proceeds along the lines of the following.

  • Use the independent sensor orientations orientation SenWrtInd for each sensor to compute relative orientations between all pairwise combinations of sensors.

    • Given 'N' sensors, this produces (N(N-1)/2) pairwise relative orientations of the form Ro2w1, Ro3w1, ... Ro3w2, ..., and so on. In general, the relative orientation of sensor id 'I' with respect to sensor id 'J' that is computed from the independent orientation data may be denoted IndRoIwJ.
  • Generate convention candidate combinations of the 6 input numbers (more on this below). For each convention candidate

    • Compute candidate box orientation transforms for each pair of sensors - i.e., compute SenIwBox and SenJwBox using the current candidate convention.
    • Use these box orientation candidates to compute relative orientation in the box frame. E.g.

      BoxRoIwJ = SenIwBox * inverse(SenJwBox)

    • Compare the candidate BoxRoIwJ with independent reference IndRoIwJ and assign a similarity score to this pair. E.g.,

      DiffScore = functionOf{ Identity - BoxRoIwJ * inverse(IndRoIwJ) };

    • Combine similarity scores for all pairs to assign an overall fitness metric to the current convention candidate being considered.

  • Select the convention candidates with the best overall fitness metric(s) and report details.

Owner

  • Name: Stellacore Organization
  • Login: Stellacore
  • Kind: user
  • Company: Stellacore Corporation

Innovative spatial measurement and analytical modelling

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: OriMania
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - name: Stellacore Corporation
  - given-names: Dave
    family-names: Knopp
repository-code: 'https://github.com/Stellacore/OriMania'
abstract: >-
  Given six parameters comprising three angles and three
  distances, determine the conventions for combining these
  parameters that is most consistent with available
  independent exterior orientation data.
keywords:
  - Sensor Calibration
  - Photogrammetry
  - Computer Vision
  - Remote Sensing
license: MIT

GitHub Events

Total
Last Year