Skip to main content

Evaluation of relative pose measurements.

Project description

cnspy_relative_pose_evaluation

A python3 package for evaluating relative pose measurements between two spatial frames in order to assess the accuracy. The baseline (ground truth) relative pose can be computed from two recorded 3D trajectories of the moving bodies and known extrinsics to the sensors. These can be specified in a single configuration file, see config.yaml

The following evaluations can be conducted:

Describtion Images
Pose Plot (left: measured, right: gt)
Pose Error Plot (left: position, right: orientation, top: meas, middle: error, bottom: nees)
Range (gt vs. measured) outliers removed
Range Sorted (gt vs. measured) outliers removed
Range Error (measured-gt) outliers removed
Range Error Histogram (filtered) and distribution
Angle (gt vs. measured) outliers set to zero
Angle Error (measured-gt) outliers removed
Angle Error Histogram (filtered) and distribution
Statistics statistics.yaml

Installation

Python 3.6 or greater is required. Inside this repo's directory, you may run

pip3 install .

or pip3 install -e . which installs the package in-place, allowing you make changes to the code without having to reinstall every time.

This package is still in development. Once stable it should be sufficient to run:

pip3 install cnspy_relative_pose_evaluation

Run from terminal

  • RelPoseMeasEvaluationTool
  • RelPoseMeasEvaluation
  • RelPose_ROSBag2CSV
  • ROSBag_TrueRelPoses
  • ROSBag_Poses2RelPose

YAML configuration file

YAML configuration file is in the form of:

# relative pose of the moving sensors with respect to the body frame (pose from BODY to SENSOR)
sensor_positions: {0:[0, 0, 0], 1:[0, 0, 0], 2:[0, 0, 0]}
sensor_orientations: {0:[1.0, 0, 0, 0], 1:[1.0, 0, 0, 0], 2:[1.0, 0, 0, 0]}
# true pose of the body
true_pose_topics: {0: "/uav10/vrpn_client/raw_pose", 1: "/uav11/vrpn_client/raw_pose", 2: "/uav12/vrpn_client/raw_pose"}
# topics of the relative pose measurement
relpose_topics: {0: "/uav10/data_handler/uvdar_fcu", 1: "/uav11/data_handler/uvdar_fcu", 2: "/uav12/data_handler/uvdar_fcu"}

Important notes for the NEES computation

The covariance of the measurements are assumed to represent the position uncertainty in meters and in the origin of reference frame of the observer, e.g. the camera. The covariance of the measured orientation is assumed to be in radian representing the uncertainty about the roll-pitch-yaw angles about the x-y-z-axes in zyx order (Rz(y)*Ry(p)*Rx(r)) of the body frame (local), thus EstimationErrorType.type5:

  • TRUE = EST + ERR for positions R(3);
  • TRUE = EST \oplus ERR for rotations SO(3);
  • global position error, local orientation error;.

Please check out: ErrorRepresentationType and EstimationErrorType

Usage

usage: RelPoseMeasEvaluationTool.py [-h] [--result_dir RESULT_DIR] [--bagfile BAGFILE] --cfg CFG [--save_plot] [--show_plot] [--verbose] [--extra_plots] [--keep_outliers] [--filter_histogram] [--max_range MAX_RANGE] [--max_angle MAX_ANGLE]

RelPoseMeasEvaluationTool: evaluation the measured relative poses

optional arguments:
  -h, --help            show this help message and exit
  --result_dir RESULT_DIR
                        directory to store results [otherwise bagfile name will be a directory]
  --bagfile BAGFILE     input bag file
  --cfg CFG             YAML configuration file describing the setup: {sensor_positions:{<id>:[x,y,z], ...}, sensor_orientations:{<id>:[w,x,y,z], ...}, relpose_topics:{<id>:<topic_name>, ...}, true_pose_topics:{<id>:<topic_name>, ...}
  --save_plot           saves all plots in the result_dir
  --show_plot           blocks the evaluation, for inspecting individual plots, continuous after closing
  --verbose
  --extra_plots         plots: timestamps, ranges + angles (sorted + unsorted + error),
  --keep_outliers       do not apply the max. thresholds on the error
  --filter_histogram    filters the error histogram, such that the fitted normal distribution is computed on the best bins only
  --max_range MAX_RANGE
                        max. range that classifies them as outlier
  --max_angle MAX_ANGLE
                        max. range that classifies them as outlier

License

Software License Agreement (GNU GPLv3 License), refer to the LICENSE file.

Sharing is caring! - Roland Jung

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cnspy_relative_pose_evaluation-0.1.13.tar.gz (44.9 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file cnspy_relative_pose_evaluation-0.1.13.tar.gz.

File metadata

File hashes

Hashes for cnspy_relative_pose_evaluation-0.1.13.tar.gz
Algorithm Hash digest
SHA256 468b9c6dd003e22e782beff88adb59d14ee3d9b5d00862e9a59a9ff5be3747db
MD5 d68bdfd05c15fdc49fc14b2813c421a8
BLAKE2b-256 3f5a39f9cda3e73e86c8acc9186f9d621e27d86c5ea3710101bfae2b26593279

See more details on using hashes here.

File details

Details for the file cnspy_relative_pose_evaluation-0.1.13-py3-none-any.whl.

File metadata

File hashes

Hashes for cnspy_relative_pose_evaluation-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 cfb32fce0a9e308ca0c33c8ce43846d8bb7cd203b33d484e6d7572445dbc721f
MD5 b77e4ac71bb9cc15d50739fe6430fecf
BLAKE2b-256 5319f72e1ae3642cbe506b9c64b06d82d902fc8076f2b89aea6dd078dffec49c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page