m-thesis-introduction/simulations/05_recover_time_from_multip...

400 lines
101 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Recover time information from multiple antennae"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"rng = np.random.default_rng(12345)\n",
"from scipy import signal as sgl\n",
"\n",
"import os\n",
"import sys\n",
"# Append parent directory to import path so lib can be found\n",
"sys.path.append(os.path.dirname(os.path.abspath(os.getcwd())))\n",
"\n",
"from lib import TravelSignal\n",
"from lib.sampling import Digitizer\n",
"from lib.location import Receiver, Emitter\n",
"\n",
"import lib.sampling as smp\n",
"import lib.location as loc\n",
"import lib.util as util\n",
"\n",
"km = 1e3\n",
"ns = 1e9"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Setup emitters and Antenna\n",
"############################\n",
"if True:\n",
" emitter = Emitter([1,1])*km\n",
"else:\n",
" emitter = Emitter([0,0])*km\n",
"\n",
"# reference antenna\n",
"ref_ant = Receiver(np.array([2,2])*km)\n",
"\n",
"# antenna circle\n",
"antennae = [\n",
" Receiver( 5*km * util.rot_vector(np.pi*2/6* n)) for n in range(6)\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"## Show Geometry\n",
"#################\n",
"if True:\n",
" fig, ax = plt.subplots(1,1, figsize=(4,4))\n",
" loc.plot_geometry(ax, [emitter], antennae)\n",
"\n",
" if True:\n",
" ax.plot(*ref_ant.x, \"x\")\n",
" ax.annotate(\"$\\mathrm{A}_\\mathrm{ref}$\", ref_ant.x);"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Setup signal\n",
"########################\n",
"\n",
"fc = 50e6# MHz\n",
"signal_t_length = 200e-9\n",
"signal_pulse_center = 125e-9 # 100 ns\n",
"signal_sample_rate = 5e9 # Hz\n",
"signal_time = util.sampled_time(\n",
" sample_rate=signal_sample_rate,\n",
" start=0,\n",
" end=signal_t_length\n",
")\n",
"\n",
"analog_signal = TravelSignal(\n",
" sgl.gausspulse(signal_time - signal_pulse_center, fc=fc),\n",
" signal_sample_rate,\n",
" t_0 = 0,\n",
" periodic=False\n",
")\n",
"\n",
"del fc, signal_t_length, signal_pulse_center, signal_sample_rate\n",
"\n",
"if True:\n",
" fig, ax = plt.subplots()\n",
" ax.plot(signal_time, analog_signal(signal_time))\n",
" plt.show()\n",
" \n",
" \n",
"## the emitted signal\n",
"emitted = emitter.emit(analog_signal)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Spatial time offset emitter-antenna: 4717.31 ns\n"
]
},
{
"data": {
"image/png": "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nTeiffT09DzXYq6T888/n1e/+tWcf/75I1rewFeSxoH3tUMy8FWH8otB0vjZa6+9uP/++/vH/+Vf/oU99tiDXXfdleOPPx6AD37wg9x1110ccsghnHrqqfz5z3/mb//2b9ljjz3Yfffd+cEPfgAUQeTb3vY2Dj74YA444ICG21uyZAk77bQT73//+9lll1044IADWLFiBQCLFy9mv/32Y7fdduNlL3sZd955Z8PtDJaZXHzxxZx99tlcfvnlrFy5csj9XXzxxcyfP58jjjiCOXPmsGLFCm688UZe85rX8PKXv5wDDzyQBx54AIC9996bz372s+y555686EUv4pe//GX/Mb/lLW/hoIMOYocdduAzn/lMf3k+9KEPMXfuXHbZZZeGZZakjmBV5yFNanYBpGbwBzGpg/z4WPjjLaO7zb94Kbzu5BEt2tvby1VXXcXRRx8NwOWXX86iRYu4/vrryUwOOeQQfvGLX3DGGWfwk5/8hJ/97GdsuummfO5zn2OfffbhrLPO4rHHHmPPPfdkv/32A+Daa6/l5ptvZubMmQ23N3v2bBYtWsT555/PN7/5Td7+9rdzySWX8K53vYsjjjiCY489lje/+c2sXLmSvr6+htv567/+6wHHc80117Dddtux/fbbs/fee3PppZfylre8BaDh/r7+9a9zyimnMHfuXFatWsVHP/pRfvCDH7DZZptx4YUX8vnPf56zzjoLKLLY119/PZdeeilf+tKXuPLKKwFYsGABN910E1OnTmXHHXfkox/9KFtvvTUnnXQSM2fOpLe3l3333Zebb76ZXXfddVT+zJLUWrzBHYqBrzqSnVtJGmsrVqxgzpw5LFmyhJe//OXsv//+QBH4Xn755ey+++4APPXUUyxatGiNAPPyyy9n3rx5nHLKKQCsXLmSe++9F4D999+fmTNnDrm92bNns9122zFnzhwAXv7yl7NkyRKefPJJ7r//ft785jcDMG3atLUq1/nnn8/hhx8OwOGHH865557bH/jW299gd9xxB7feemv/+ejt7WWLLbbon1/b1uD19913XzbccEMAdt55Z+655x623nprLrroIs4880x6enp44IEHWLhwoYGvpM5kxndIBr7qSLXn9/ocX6kDjDAzO9pqbXwff/xx3vjGN3L66afzsY99jMzkuOOO4wMf+MCQ62cml1xyCTvuuOOA6b/5zW9Yb731BixXb3tLlixh6tSp/ePd3d2sWLGiYd8GIylXb28vl1xyCfPmzeOkk04iM3n44Yd58sknAerur95+dtllF6699tq6+6hto7u7e0Ab5sHb7unp4e677+aUU07hhhtuYOONN+aoo47qr3otSR3HjM6QbOOrjmTGV9J42XDDDTnttNM45ZRTWLVqFQceeCBnnXUWTz31FAD3338/Dz300BrrHXjggXzta1/rD1Rvuummutsf6fZqNthgA2bNmsX3v/99AJ555hmefvrpEW3nyiuvZLfdduO+++5jyZIl3HPPPbz1rW/t31YjM2bM6A+Od9xxR5YvX94f+K5atYrbbrttyPUbeeKJJ1hvvfXYcMMNefDBB/nxj3+8TtuRpLbgje2QzPiqI9VuJP16kDQedt99d3bbbTcuuOAC3v3ud3P77bez1157AbD++uvzne98h+c///kD1vmHf/gHPvGJT7DrrruSmWy77bb86Ec/WmPbBxxwQN3tdXd3NyzPueeeywc+8AG++MUvMnnyZL773e823E61XOeff35/Femat771rXzjG9/gr/7qrxru76ijjuKDH/wg06dP59prr+Xiiy/mYx/7GI8//jg9PT184hOfYJdddhnmLK5pt912Y/fdd2eXXXbhBS94Aa961avWehuS1D68sx1KdNLjXObOnZvz589vdjE0AXz/pvv5xIUL2H6z9bjqU3s3uziSRtntt9/OTjvt1OxiaILwepDUEe67Ab5ddILICY83tyxNFBE3ZubcwdObWtU5Ig6KiDsiYnFEHFtn/qkRsaB8/SEiHqvM663Mmze+JVerW93GV5IkSWoDdm41pKZVdY6IbuB0YH9gKXBDRMzLzIW1ZTLzk5XlPwrsXtnEisycM17lVXvpoIoOkiRJ6gje4A6lmRnfPYHFmXlXZj4LXAAcOsTy7wTOH5eSqe3VOreK5hZD0hjqpKY8aszrQFLHMOM7pGYGvlsB91XGl5bT1hAR2wDbAT+tTJ4WEfMj4rqIeNPYFVPtyBshqb1NmzaNhx9+2M96h6s9bqn2rGJJamv+zxtSM3t1rpdsa/TXOhy4ODN7K9NmZ+ayiHgB8NOIuCUz71xjJxHHAMcAzJ49+7mWWW3C7wWpvc2aNYulS5eyfPnyZhdFTTZt2jRmzZrV7GJI0tgz4zukZga+S4GtK+OzgGUNlj0c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\n",
"text/plain": [
"<Figure size 1152x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Show how the signal is emitted\n",
"# and received by a reference antenna\n",
"########################\n",
"\n",
"# analog time corresponds to a very high sampled time range\n",
"# (to fully show the signal)\n",
"# that is sufficiently long to show both the emitted and received signal\n",
"if not True:\n",
" t_start = 0\n",
"else:\n",
" t_start = -50e-8\n",
"\n",
"if not True:\n",
" t_end = 5e-7 # ms\n",
"else:\n",
" t_end = 50e-7 # ms\n",
"t_offset = 0 # 100 ns\n",
"sample_rate = 1e10 # 1/s\n",
"\n",
"analog_time = util.sampled_time(sample_rate=sample_rate, start=t_start, end=t_end, offset=t_offset)\n",
"\n",
"\n",
"if True:\n",
" # Figure\n",
" fig, ax = plt.subplots(1, 1, figsize=(16,4))\n",
" ax.set_title(\"Signal as emitted from the emitter, and received by the reference antenna\")\n",
" ax.set_ylabel(\"Amplitude\")\n",
" ax.set_xlabel(\"Time (ns)\")\n",
"\n",
" ## Emitter\n",
" received = emitter.recv(emitted)\n",
"\n",
" ax.plot(analog_time * ns, received(analog_time), label=\"Emitter\")\n",
"\n",
"\n",
" ## Reference antenna\n",
" received = ref_ant.recv(emitted)\n",
"\n",
" ax.plot(analog_time * ns, received(analog_time), label=\"Reference Antenna\")\n",
" print(\"Spatial time offset emitter-antenna: {:.6g} ns\".format(analog_signal.spatial_time_offset(emitter.x, ref_ant.x)*ns))\n",
"\n",
" ax.legend(loc='upper center')\n",
" plt.show();"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 8 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Show absolute timing over all antennae\n",
"########################################\n",
"\n",
"if True:\n",
" longtime = util.sampled_time(\n",
" sample_rate=sample_rate,\n",
" start=t_start,\n",
" end=5*t_end,\n",
" offset=t_offset\n",
" )\n",
"\n",
" ylabel_kw = {\"rotation\": \"horizontal\", \"va\":\"center\", \"ha\":\"center\", \"labelpad\": 30}\n",
" \n",
" fig, axs = plt.subplots(2+len(antennae), 1, sharex=True, figsize=(12,6), gridspec_kw={\"hspace\":0})\n",
" axs[0].set_title(\"Traces of Emitter and Antennae\")\n",
"\n",
" # Emitter\n",
" i = 0\n",
" axs[i].set_ylabel(\"Emitter\".format(), **ylabel_kw)\n",
" axs[i].set_xlabel(\"Time (ns)\")\n",
" axs[i].plot(longtime * ns, emitted(longtime), label=\"Emitter\")\n",
" axs[i].plot(signal_time * ns, emitted(signal_time), label=\"Signal time\", zorder=2.5)\n",
"\n",
" # Reference Antenna\n",
" i +=1\n",
" axs[i].set_ylabel(\"Ref Antenna\", **ylabel_kw)\n",
" axs[i].plot(longtime * ns, ref_ant.recv(emitted)(longtime), label=\"Ref Antenna\")\n",
" axs[i].set_xlabel(\"Time (ns)\")\n",
"\n",
" # Antenna\n",
" for j, ant in enumerate(antennae):\n",
" i +=1\n",
" axs[i].set_ylabel(\"Antenna {}\".format(j), **ylabel_kw)\n",
" axs[i].plot(longtime * ns, ant.recv(emitted)(longtime), label=\"Antenna {}\".format(j))\n",
" axs[i].set_xlabel(\"Time (ns)\")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Time delay ref ant -- emitter (ns): 9434.617346998737\n",
"T_threshold Emitter (ns): 123.0\n",
"T_threshold Antenna (ns): 9680.617346998737\n",
"Diff thresholds (ns): 9557.617346998737\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Determine time from signal thresholds for emitter and reference receiver\n",
"######################################\n",
"\n",
"threshold = 0.8\n",
"\n",
"if True:\n",
" mysignal = analog_signal\n",
"else:\n",
" mysignal = emitted\n",
" \n",
"received = ref_ant.recv(mysignal)\n",
"#received.periodic=True\n",
"\n",
"## Recover signal time from signal\n",
"signal_time = util.sampled_time(sample_rate=mysignal.sample_rate, start=0, end=mysignal.time_length)\n",
"\n",
"## Find time offset and recover approximate signal time at antenna\n",
"# Note: no idea where 2 comes from right now\n",
"time_offset = -2 * analog_signal.total_time_offset(x_f = ref_ant.x, x_0 = emitter.x, velocity = None)\n",
"ref_ant_signal_time = 2*signal_time + time_offset\n",
"\n",
"\n",
"# Find t_threshold for emitter\n",
"raw_emit = mysignal(signal_time)\n",
"t_thres_emit_idx = util.detect_edges(threshold, raw_emit, rising=True, falling=False)\n",
"\n",
"if t_thres_emit_idx:\n",
" t_thres_emit = signal_time[t_thres_emit_idx[0]]\n",
"else:\n",
" t_thres_emit = None\n",
"del t_thres_emit_idx\n",
" \n",
" \n",
"# Find t_threshold for receiver\n",
"raw_ant = received(ref_ant_signal_time)\n",
"t_thres_ant_idx = util.detect_edges(threshold, raw_emit, rising=True, falling=False)\n",
"\n",
"if t_thres_ant_idx:\n",
" t_thres_ant = ref_ant_signal_time[t_thres_ant_idx[0]]\n",
"else:\n",
" t_thres_ant = None\n",
"del t_thres_ant_idx\n",
"\n",
"print(\"Time delay ref ant -- emitter (ns):\", time_offset*ns)\n",
"print(\"T_threshold Emitter (ns):\", t_thres_emit*ns)\n",
"print(\"T_threshold Antenna (ns):\", t_thres_ant*ns)\n",
"print(\"Diff thresholds (ns):\", (t_thres_ant - t_thres_emit)*ns)\n",
"\n",
"## Make another plot\n",
"fig, ax = plt.subplots()\n",
"axs[i].set_xlabel(\"Time (ns)\")\n",
"# Emitter\n",
"if not True:\n",
" ax.plot(signal_time *ns, raw_emit, label='Emitter')\n",
" ax.plot(t_thres_emit*ns, mysignal(t_thres_emit), '*')\n",
" ax.annotate(\"t_1\", xy=(t_thres_emit*ns, mysignal(t_thres_emit)))\n",
"\n",
"# Antenna\n",
"if True:\n",
" ax.plot(ref_ant_signal_time*ns, raw_ant, label=\"Reference Antenna\")\n",
" ax.plot(t_thres_ant*ns, received(t_thres_ant), '*')\n",
" ax.annotate(\"t_2\", xy=(t_thres_ant*ns, received(t_thres_ant)))\n",
"\n",
"plt.show();"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}