{
"cells": [
{
"cell_type": "markdown",
"id": "0415cb1c",
"metadata": {},
"source": [
"# Hard Target Mapping (HTM) for elevation offset determination\n",
"\n",
"To determine the elevation offset (and external misalignment = pitch/roll), we need to scan at least three distinct hard targets around the lidar with varying azimuth angles. \n",
"\n",
"For each hard target, the polar coordinates are required from:\n",
"- lidar \n",
"- reference measurements (e.g., theodolite)\n",
"\n",
"Positions of the hard targets in the lidar polar coordinate frame will be determined by the carrier to noise ratio (CNR) of the radial measurements. High CNR (>0dB) means a hard target is in the probe volume, whereas moderate CNR means that aerosols were detected in the probe volume. \n"
]
},
{
"cell_type": "markdown",
"id": "3f9afdcf",
"metadata": {},
"source": [
"The actual Hard Target, measured with the Theodolite (foto taken through the theodolite lense):\n",
"\n",
"
\n",
"\n",
"The same Hard Target, measured with the Lidar (yellow means high CNR >0dB, blue is low CNR of <-25dB>):\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"id": "ab17c9b1",
"metadata": {},
"source": [
"For a general overview about the hard target mapping (CNR mapper), see the initial description by [Vasiljevic 2014](https://backend.orbit.dtu.dk/ws/portalfiles/portal/102963702/NVasiljevic_Thesis.pdf). "
]
},
{
"cell_type": "markdown",
"id": "64c4722f",
"metadata": {},
"source": [
"## Examplary demonstration\n",
"Let us imagine one example of a lidar installation, where multiple hard targets have been measured around the lidar.\n",
"\n",
"First we import required packages."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "af138cd5",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import plotly.graph_objects as go\n",
"from lidalign.hard_target_elevation_mapping import HardTargetMappingElevation\n"
]
},
{
"cell_type": "markdown",
"id": "947942c8",
"metadata": {},
"source": [
"#### Coordinate list\n",
"Imagine, we have performed multiple maps of hard targets and obtained reference coordinates using a theodolit:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "b0aeae0b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
| \n", " | Pt name | \n", "Theo_Azimuth | \n", "Theo_ElevationVert | \n", "Lidar_azim | \n", "Lidar_ele | \n", "Unc_ele | \n", "Unc_azi | \n", "Theo_Elevation | \n", "Delta Ele | \n", "
|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "RADTOP | \n", "123.6162 | \n", "89.2637 | \n", "123.960 | \n", "0.685 | \n", "0.02 | \n", "0.02 | \n", "0.7363 | \n", "-0.0513 | \n", "
| 1 | \n", "ELECTROTOWER | \n", "159.9877 | \n", "89.6018 | \n", "160.285 | \n", "0.340 | \n", "0.02 | \n", "0.02 | \n", "0.3982 | \n", "-0.0582 | \n", "
| 2 | \n", "MAST L11 | \n", "247.1387 | \n", "87.0018 | \n", "247.430 | \n", "2.880 | \n", "0.02 | \n", "0.02 | \n", "2.9982 | \n", "-0.1182 | \n", "
| 4 | \n", "P1 HOUSE | \n", "210.3619 | \n", "90.1346 | \n", "210.600 | \n", "-0.235 | \n", "0.03 | \n", "0.03 | \n", "-0.1346 | \n", "-0.1004 | \n", "
| 5 | \n", "MAST L2 | \n", "247.1331 | \n", "87.5357 | \n", "247.430 | \n", "2.345 | \n", "0.03 | \n", "0.03 | \n", "2.4643 | \n", "-0.1193 | \n", "