{ "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", "\"Theodolite\n", "\n", "The same Hard Target, measured with the Lidar (yellow means high CNR >0dB, blue is low CNR of <-25dB>):\n", "\n", "\"Theodolite" ] }, { "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", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Pt nameTheo_AzimuthTheo_ElevationVertLidar_azimLidar_eleUnc_eleUnc_aziTheo_ElevationDelta Ele
0RADTOP123.616289.2637123.9600.6850.020.020.7363-0.0513
1ELECTROTOWER159.987789.6018160.2850.3400.020.020.3982-0.0582
2MAST L11247.138787.0018247.4302.8800.020.022.9982-0.1182
4P1 HOUSE210.361990.1346210.600-0.2350.030.03-0.1346-0.1004
5MAST L2247.133187.5357247.4302.3450.030.032.4643-0.1193
\n", "
" ], "text/plain": [ " Pt name Theo_Azimuth Theo_ElevationVert Lidar_azim Lidar_ele \\\n", "0 RADTOP 123.6162 89.2637 123.960 0.685 \n", "1 ELECTROTOWER 159.9877 89.6018 160.285 0.340 \n", "2 MAST L11 247.1387 87.0018 247.430 2.880 \n", "4 P1 HOUSE 210.3619 90.1346 210.600 -0.235 \n", "5 MAST L2 247.1331 87.5357 247.430 2.345 \n", "\n", " Unc_ele Unc_azi Theo_Elevation Delta Ele \n", "0 0.02 0.02 0.7363 -0.0513 \n", "1 0.02 0.02 0.3982 -0.0582 \n", "2 0.02 0.02 2.9982 -0.1182 \n", "4 0.03 0.03 -0.1346 -0.1004 \n", "5 0.03 0.03 2.4643 -0.1193 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {\n", " \"Pt name\": [\n", " \"RADTOP\", \"ELECTROTOWER\", \"MAST L11\",\n", " \"MAST TOP1\", \"P1 HOUSE\", \"MAST L2\"\n", " ],\n", " \"Theo_Azimuth\": [\"123,6162\", \"159,9877\", \"247,1387\", \"247,1376\", \"210,3619\", \"247,1331\"], # azimuth from theodolite\n", " \"Theo_ElevationVert\": [\"89,2637\", \"89,6018\", \"87,0018\", \"87,0143\", \"90,1346\", \"87,5357\"], # Elevation from vertical (vertical = 0°) from theodolit\n", " \"Lidar_azim\": [\"123,96\", \"160,285\", \"247,43\", \"\", \"210,6\", \"247,43\"], # Azimuth of lidar for same hard targets\n", " \"Lidar_ele\": [\"0,685\", \"0,34\", \"2,88\", \"\", \"-0,235\", \"2,345\"], # ELevation of lidar for same hard targets\n", " \"Unc_ele\": [\"0,02\", \"0,02\", \"0,02\", \"\", \"0,03\", \"0,03\"], # uncertainty in Elevation reading\n", " \"Unc_azi\": [\"0,02\", \"0,02\", \"0,02\", \"\", \"0,03\", \"0,03\"], # Uncertainty in azimuth reading\n", "}\n", "\n", "df = pd.DataFrame(data)\n", "\n", "num_cols = [c for c in df.columns if not c in [\"Position\", \"Pt name\"]]\n", "df[num_cols] = df[num_cols].apply(lambda s: pd.to_numeric(s.str.replace(\",\", \".\", regex=False), errors=\"coerce\"))\n", "\n", "df['Theo_Elevation'] = 90- df['Theo_ElevationVert'] \n", "df['Delta Ele'] = df['Lidar_ele']- df['Theo_Elevation'] \n", "df = df.dropna(subset ='Delta Ele')\n", "df" ] }, { "cell_type": "markdown", "id": "be72db5f", "metadata": {}, "source": [ "The columns here mean:\n", "- Pt name = Hard target point name (like an ID)\n", "- Theo_Azimuth/Theo_Elevation: Reference azimuth and elevation as measured with the theodilite in the global coordinate system\n", "- Lidar_azim/Lidar_ele: Polar coordinates to the same hard targets\n", "- Unc_ele/Unc_azi: Uncertainties in the measured azimuth/elevation, caused by uncertainties in the readings of the theodolite and lidar\n", "- Delta Ele: Difference between Lidar and actual elevation" ] }, { "cell_type": "markdown", "id": "e52fbb49", "metadata": {}, "source": [ "So, lets plot the data first:" ] }, { "cell_type": "code", "execution_count": 17, "id": "56195bea", "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from plotly.subplots import make_subplots\n", "fig = make_subplots(rows = 2, cols = 1, shared_xaxes = True)\n", "fig.add_trace(go.Scattergl(x = df['Theo_Azimuth'], y = df['Theo_Elevation'], mode = 'markers', name = 'Theodolite Measurements', showlegend=True, marker = dict(color = 'red')))\n", "\n", "fig.update_layout(xaxis_title = 'Reference Azimuth [deg]', yaxis_title = 'Measured Elevation [deg]')\n", "\n", "\n", "\n", "fig.add_trace(go.Scatter(\n", " x=df['Theo_Azimuth'], y = df['Lidar_ele'],\n", " mode='markers', # markers and optional text labels\n", " error_y=dict(\n", " type='data', # value of error bar\n", " array=df['Unc_ele'], # positive error\n", " arrayminus=df['Unc_ele'], # negative error (symmetric)\n", " visible=True,\n", " color='blue',\n", " thickness=2,\n", " width=5,\n", " ),\n", " marker=dict(size=10, color='darkblue', symbol='circle'),\n", " textposition='top center',\n", " name='Lidar Measurements'\n", "))\n", "\n", "fig.update_layout(title_text = 'Example Coordinates for the Hard Target elevation mapping using a lidar and a theodolite')\n", "# fig.show(renderer = 'notebook')\n", "\n", "\n", "# fig = go.Figure()\n", "\n", "fig.add_trace(go.Scatter(\n", " x=df['Theo_Azimuth'], y = df['Delta Ele'],\n", " mode='markers', # markers and optional text labels\n", " error_y=dict(\n", " type='data', # value of error bar\n", " array=df['Unc_ele'], # positive error\n", " arrayminus=df['Unc_ele'], # negative error (symmetric)\n", " visible=True,\n", " color='orange',\n", " thickness=2,\n", " width=5,\n", " ),\n", " marker=dict(size=10, color='orange', symbol='circle'),\n", " textposition='top center',\n", " name='Delta Elevation'\n", "), row=2, col=1)\n", "\n", "\n", "fig.update_yaxes(title_text=\"Measured Elevation [deg]\", row=1, col=1)\n", "fig.update_yaxes(title_text=\"Delta Elevation=
Lidar_elevation - Theo_elevation [deg]\", row=2, col=1)\n", "fig.update_xaxes(title_text = 'Reference Azimuth [deg]', row = 2, col = 1)\n", "# fig.update_layout(title_text = 'Example Coordinates for the Hard Target elevation mapping using a lidar and a theodolite')\n", "fig.show(renderer = 'notebook')" ] }, { "cell_type": "markdown", "id": "f968c463", "metadata": {}, "source": [ "## Determine misalignments without uncertainties\n", "So basically, the Delta Elevation is caused by two misalignments:\n", "- The **tilting of the device** (also *external misalignment*), describing a sinusoidal-like (for small tilt angles) difference over the azimuth. If the tilt can be reduced, also the amplitude of the sinus curve can be minimized.\n", "- the **static elevation offset** (also *internal misalignment*), caused by inherent scanner motor offsets and misalignments, which is assumed to be constant for all elevations and azimuth angles. This angle is seen to be constant but can change during transport etc. and should be reevaluated regularily." ] }, { "cell_type": "markdown", "id": "ed22e2c9", "metadata": {}, "source": [ "So now lets try to fit a cosine-like function to the actual measures we got:" ] }, { "cell_type": "code", "execution_count": 19, "id": "6cc23195", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pitchroll\n", "[ 0.01545298 0.03869653 -0.09008265]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArIAAAHgCAYAAABZ147hAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAn9lJREFUeJzs3Xd4FPXaxvHv7KZ30kMNPbRA6CBVOopIEUEsIAeFAwoqKtg9esAuHuUINlAUpMWCBfHliBSRntB7D5Dee3bn/SOyEkhgNtnNljyf6+LSnZ2ZfX73TjbPTqYoqqqqCCGEEEII4WB0ti5ACCGEEEKIypBGVgghhBBCOCRpZIUQQgghhEOSRlYIIYQQQjgkaWSFEEIIIYRDkkZWCCGEEEI4JGlkhRBCCCGEQ3KxdQE1ldFopKioyNZlCCfi6uqKXq+3dRlCCCFEtZFG1gaKioo4ffo0RqPR1qUIJxMQEEB4eDiKoti6FCGEEMLqpJGtZqqqcunSJfR6PfXq1UOnk6M7RNWpqkpeXh5JSUkARERE2LgiIYQQwvqkka1mJSUl5OXlUbt2bby8vGxdjnAinp6eACQlJREaGiqHGQghhHB6sjuwmhkMBgDc3NxsXIlwRle+HBUXF9u4EiGEEML6pJG1ETmGUViDbFdCCCFqEmlkhRBCCCGEQ5JGVgghhBBCOCRpZIUQQgghhEOSRtZBGQwGNm7cyPLly9m4caPpJDJrmTBhAoqiMGXKlOuemzZtGoqiMGHCBKvW4OwUReHbb7+1dRlCCCGEw5BG1gHFxsYSGRlJ3759ueeee+jbty+RkZHExsZa9XXr1avH119/TX5+vmlaQUEBy5Yto379+lZ97aqSu6gJIYQQzkcaWQcTGxvL6NGjuXDhQpnpCQkJjB492qrNbPv27alXr16Z14iNjaV+/frExMSYphmNRubNm0fDhg3x9PSkbdu2rF692vS8wWBg0qRJpuebN2/Oe++9V+a1Nm7cSOfOnfH29iYgIIBbbrmFs2fPAqV7h++8884y88+cOZM+ffqYHvfp04fp06czc+ZMgoODGTRoEAAHDhxgyJAh+Pj4EBYWxn333UdKSkqZ5R555BFmzpxJrVq1CAsL4+OPPyY3N5eJEyfi6+tLkyZN+Pnnn8u8vpb1Pvroozz11FMEBgYSHh7OSy+9ZHo+MjISgBEjRqAoiulxfHw8ffv2xdfXFz8/Pzp06MCuXbtu8k4JIYQQNYM0sg7EYDAwY8YMVFW97rkr02bOnGnVwwwefPBBFi9ebHr82WefMXHixDLzzJs3jy+++IKFCxdy8OBBHnvsMe69915+//13oLTRrVu3LqtWreLQoUO88MILPPPMM6xcuRIovWnEnXfeSe/evdm3bx/btm3joYceMvvSUp9//jlubm5s3bqVhQsXkpGRwa233kpMTAy7du1i3bp1JCYmMmbMmOuWCw4OZseOHTzyyCNMnTqVu+66i+7du7Nnzx4GDhzIfffdR15eHoBZ6/X29mb79u288cYb/Otf/+LXX38FYOfOnQAsXryYS5cumR6PHz+eunXrsnPnTnbv3s3s2bNxdXU1KwchhBDCaamiWuXn56uHDh1S8/PzzV72t99+U4Gb/vvtt98sXvcDDzygDh8+XE1KSlLd3d3VM2fOqGfOnFE9PDzU5ORkdfjw4eoDDzygFhQUqF5eXuoff/xRZvlJkyap48aNq3D906ZNU0eNGqWqqqqmpqaqgLpx48Yb1nK1GTNmqL179zY97t27txoTE1NmnldeeUUdOHBgmWnnz59XAfXo0aOm5Xr06GF6vqSkRPX29lbvu+8+07RLly6pgLpt27ZKr1dVVbVTp07q008/bXoMqN98802ZeXx9fdUlS5aUm0N5qrJ9CSGEEI5GblHrQC5dumTR+SojJCSE2267jSVLlqCqKrfddhvBwcGm50+cOEFeXh4DBgwos1xRUVGZww8WLFjAZ599xrlz58jPz6eoqIh27doBEBgYyIQJExg0aBADBgygf//+jBkzhoiICLNq7dChQ5nH8fHx/Pbbb/j4+Fw378mTJ2nWrBkA0dHRpul6vZ6goCDatGljmhYWFgaU3gq2susFiIiIMK2jIo8//jj/+Mc/WLp0Kf379+euu+6icePGN1xGCCGEqCmkkXUgWhs5cxs+cz344INMnz4dKG1Ir5aTkwPAjz/+SJ06dco85+7uDsDXX3/NrFmzePvtt+nWrRu+vr68+eabbN++3TTv4sWLefTRR1m3bh0rVqzgueee49dff6Vr167odLrrDq8o75as3t7e19U2bNgwXn/99evmvTqza/90ryhKmWlXDnEwGo1VXu+VdVTkpZde4p577uHHH3/k559/5sUXX+Trr79mxIgRN1xOCCGEqAmkkXUgPXv2pG7duiQkJJR7nKyiKNStW5eePXtatY7BgwdTVFSEoiimk6iuaNmyJe7u7pw7d47evXuXu/zWrVvp3r07//znP03TTp48ed18MTExxMTEMGfOHLp168ayZcvo2rUrISEhHDhwoMy8cXFxNz12tH379qxZs4bIyEhcXCy36Vtqva6uruUe39ysWTOaNWvGY489xrhx41i8eLE0skIIIQRyspdD0ev1prP7rz3x6crj+fPno9frrV7H4cOHOXTo0HWv5evry6xZs3jsscf4/PPPOXnyJHv27OH999/n888/B6Bp06bs2rWLX375hWPHjvH888+bTm4COH36NHPmzGHbtm2cPXuW9evXc/z4cVq0aAHArbfeyq5du/jiiy84fvw4L7744nWNbXmmTZtGWloa48aNY+fOnZw8eZJffvmFiRMnVukEOUutNzIykg0bNnD58mXS09PJz89n+vTpbNy4kbNnz7J161Z27txpykEIIYSo6aSRdTAjR45k9erV1/3Zvm7duqxevZqRI0dWSx1+fn74+fmV+9wrr7zC888/z7x582jRogWDBw/mxx9/pGHDhgA8/PDDjBw5krvvvpsuXbqQmppaZu+sl5cXR44cYdSoUTRr1oyHHnqIadOm8fDDDwMwaNAgnn/+eZ566ik6depEdnY2999//01rrl27Nlu3bsVgMDBw4EDatGnDzJkzCQgIQKer/I+Cpdb79ttv8+uvv1KvXj1iYmLQ6/WkpqZy//3306xZM8aMGcOQIUN4+eWXK12rEEII4UwUtby/UQurKSgo4PTp0zRs2BAPD49Kr8dgMLB582YuXbpEREQEPXv2tPqeWGH/LLV9CSGEEI5AjpF1UHq9vswNAIQQQgghaho5tEAIIYQQQjgkaWSFEEIIIYRDkkZWCCGEEEI4JGlkhRBCCCGEQ5JGVgghhBBCOCRpZIUQQgghhEOSRlYIIYQQQjgkaWSFEEIIIYRDkkZWCCGEEEI4JGlkhUU9/PDDjB8/vkrrmDVrFnfeeadlChJCCCGE05JGVljUvHnz+Oijj0yPH3vsMUaOHGnWOuLi4oiOjrZ0aWUsWLCAyMhIPDw86NKlCzt27KjyMps2bWLYsGHUrl0bRVH49ttvr1vHSy+9hKIoZf5FRUWVmSc3N5exY8cSERHBuHHjyMvLq9JYhRBCCGcljaywqMDA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521Z8cNeRERERKRJPCNLRERERJrEQpaIiIiINImFLBERERFpEgtZIiIiItIkFrIatnnzZnzjG9/A5MmTkZWVhX//+9+enpLH/exnP4NOp3N53HfffUp7X18fCgsLERERAaPRiO9973toamry4Izd6/Dhw3jkkUcQExMDnU6HDz/80KVdRPDyyy/DYrEgMDAQOTk5uHTpkkuf1tZW5OfnIzQ0FCaTCc8++yy6urrcuBfuMVpWTz/99C1rbdGiRS59fCWrkpIS3H///QgJCUF0dDQeffRR1NTUuPRRc+w1NjZiyZIlCAoKQnR0NIqKinDjxg137sq4U5PVQw89dMvaWrFihUsfX8jqrbfeQnp6unLjfqvVik8++URp55r6f6Nl5c1rioWsRu3atQtr1qxBcXExTp06hYyMDCxcuBDNzc2enprHpaSkwGazKY8jR44obatXr8Y//vEPvP/++ygrK8O1a9fw+OOPe3C27tXd3Y2MjAxs3rx52PZXXnkFb7zxBrZs2YKKigoEBwdj4cKF6OvrU/rk5+fj/Pnz2L9/Pz766CMcPnwYy5cvd9cuuM1oWQHAokWLXNbazp07Xdp9JauysjIUFhbi2LFj2L9/PwYGBpCbm4vu7m6lz2jH3uDgIJYsWYL+/n7861//wvbt27Ft2za8/PLLntilcaMmKwBYtmyZy9p65ZVXlDZfyWr69OnYuHEjTp48iRMnTuDhhx/G0qVLcf78eQBcU183WlaAF68pIU2aN2+eFBYWKr8PDg5KTEyMlJSUeHBWnldcXCwZGRnDtrW3t0tAQIC8//77ynPV1dUCQMrLy900w4kDgOzevVv53el0itlslldffVV5rr29XQwGg+zcuVNERC5cuCAA5Pjx40qfTz75RHQ6nVy9etVtc3e3m7MSESkoKJClS5eO+BpfzUpEpLm5WQBIWVmZiKg79vbu3St+fn5it9uVPm+99ZaEhobK9evX3bsDbnRzViIiCxYskFWrVo34Gl/NSkRkypQp8sc//pFrSoWhrES8e03xjKwG9ff34+TJk8jJyVGe8/PzQ05ODsrLyz04s4nh0qVLiImJQUJCAvLz89HY2AgAOHnyJAYGBlxyu++++xAbG8vcANTX18Nut7vkExYWhqysLCWf8vJymEwmzJ07V+mTk5MDPz8/VFRUuH3OnlZaWoro6GgkJSXhueee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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "HTM = HardTargetMappingElevation(df['Theo_Azimuth'].values, \n", " df['Delta Ele'].values, \n", " )\n", "\n", "\n", "HTM.fit(typ = 'Pitchroll')\n", "print(HTM.params)\n", "fig, ax = plt.subplots(figsize = (7,5))\n", "ax = HTM.plot(ax= ax)\n", "_ = ax.set(title = None)" ] }, { "cell_type": "markdown", "id": "919d9f70", "metadata": {}, "source": [ "Now we see, that the external misalignment ($pitch, roll$) are <0.05°. A better alignment of the lidar could be perfromed by correcting the misalingment. \n", "\n", "The static elevation offset ($\\Delta \\varphi$) has a value of -0.090°, which is considerable and might need to be considered for the stearing of the lidar. A negative $\\Delta \\varphi$ means, the lidar is looking to far up, so if we would command an elevation of 0° with a perfectly aligned lidar, we would actually measure at an elevation of 0.09°. This means a misalignment of 17.5m at 10km range. " ] }, { "cell_type": "markdown", "id": "b69e8c3f", "metadata": {}, "source": [ "## Perform fit with Uncertainties and Monte Carlo Propagation\n", "\n", "However, the actual measures of polar coordinates are prone to uncertainties. \n", "\n", "Uncertainties in the measurement of the elevation and azimuth can be manifold:\n", "- limited discretization of elevation and azimuth for lidar/theodolit\n", "- Uncertainty in reading the \"same\" corner of the hard target scan from lidar\n", "- pointing uncertainty of the thodolite (reference)\n", "- ... and others\n", "\n", "The provided uncertainties just give an approximate indication and we do not claim them to be realistic. \n", "
\n", " 💡 Info: This methodology has not been tested, verified nor published. If used, please cite this documentation.\n", "
\n", "\n", "#### Monte Carlo Uncertainty propagation\n", "To propagate these uncertainties onto the fit results, we perform N_mc = 1000 monte carlo loops, where we sample random errors from a gaussian, defined by the provided uncertainties around their mean. A fit is performed for each of the loops, uncertainties in the resulting parameters $pitch,roll,\\Delta \\varphi$ are obtained as standard deviation from the distribution of the resulting parameters. " ] }, { "cell_type": "code", "execution_count": 29, "id": "d26eebc1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " mean std form\n", "0 123.6162 0.02 normal\n", "1 159.9877 0.02 normal\n", "2 247.1387 0.02 normal\n", "3 210.3619 0.03 normal\n", "4 247.1331 0.03 normal\n", " mean std form\n", "0 -0.0513 0.02 normal\n", "1 -0.0582 0.02 normal\n", "2 -0.1182 0.02 normal\n", "3 -0.1004 0.03 normal\n", "4 -0.1193 0.03 normal\n", "Other\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Performing Monte Carlo Iterations: 0%| | 0/1000 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from lidalign.hard_target_elevation_mapping import HardTargetMappingElevation\n", "\n", "HTM = HardTargetMappingElevation(df['Theo_Azimuth'].values, \n", " df['Delta Ele'].values, \n", " df['Unc_azi'].values, df['Unc_ele'].values\n", " )\n", "\n", "\n", "HTM.fit(typ = 'Other')\n", "print(HTM.params)\n", "fig, ax = plt.subplots(figsize = (4,3), dpi = 300)\n", "ax = HTM.plot(ax= ax)\n", "ax.set(title = None)" ] }, { "cell_type": "markdown", "id": "e2186427", "metadata": {}, "source": [ "We can clearly see, that the elevation difference (between commanded and actual elevation) becomes up to -0.12° for certaint azimuths. The uncertainty of the elelvation difference becomes larger at azimuths, where we cannot verify the pointing accuracy due to missing hard targets for the fit. Thus, the uncertainty becomes smaller in the azimuth range with hard targets to observe.\n", "\n", "An improvement can be obtained with more hard targets at varying azimuth angles ." ] }, { "cell_type": "markdown", "id": "eefd71f3", "metadata": {}, "source": [ "
\n", " 🔔 Important: Note, that errors in the azimuth are considered, but are so small, that they do not appear.\n", "
\n" ] } ], "metadata": { "kernelspec": { "display_name": "lidalign", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }