m-thesis-introduction/simulations/05_recover_time_from_multiple_antennae.ipynb

400 lines
101 KiB
Text
Raw Permalink Normal View History

{
"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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
"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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
"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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
"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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
"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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
"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
}