mpc_python_learn/notebooks/3.1-better-track.ipynb

331 lines
77 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"thanks to -> https://stackoverflow.com/questions/49558464/shrink-polygon-using-corner-coordinates"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-0.8500000000000001, 6.85, -1.3744678440936948, 11.065450849718747)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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SJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASJxwAwAASFxb3hsAoP7+9t/+Nh5c92De29gv7ZPbY3hkOO9tNKWz/uCsOHvB2XlvA4D9INwAJoBVj62K57c8HwdPPTjvreyz1tbWGBsby3sbTWfd0LpYv2W9cAMoGOEGMEH0zO+Jle9cmfc29lm5XI5KpZL3NprOB773gby3AEANPMcNAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgccINAAAgcQccbuPj43HNNdfE0qVLs9gPAAAAr3DA4fb9738/5s2bl8VeAAAA2IMDCrcNGzbEww8/HKeffnpW+wEAAOAV2g7kf77rrrviQx/6UGzdujWr/QBQILMuvzzannqqLmu3tbVFeXS0LmsXxcgJJ8TgF76Q9zYASEDN4bZ27dro7OyMBQsWxBNPPPGq79fb2xu9vb0REbF06dIol8u1fsim1NbW5jYpGGdWH52dpRf/7IxyuZrZui3Tp0dExOzZsyMyPLeOjo4olUqF+VxobW2N9sntme938ne+E9XDD4/qm96U6boREaVSKdqq2X0uFE3p8cdj0ve/H5NXrsx03UmTJkVLqaUun7tZ3z9OHp4cERHTpk/LdN3SrFkRETFz5syoZrjujBk7HsjU1dWV5d1NXfmaVjzOrJiyOLeaw+3JJ5+MX/7yl/HII4/EyMhIbN26NW655Za44oorXvZ+PT090dPTs/PtSqVS+26bULlcdpsUjDOrj4GByRFRjoGBgahURjJbd+rQUMyKiL6+vhhvb89s3a1bt0a1Wi3M58LY2FgMjwxnvt+5ETH0nvfEpk9/OtN1I1xrnddcE1N6ezO/DbZv3x6lUqkut23WZ7ZpZFNERGwe2pzpupM2bow5ETE4OBjDWe53U0dEdEV/f39UKmOZrVtPE/06KyJnVky7ntvcuXNrWqPmcLvwwgvjwgsvjIiIJ554Ir73ve/tFm0AAAAcOL/HDQAAIHEH9OIkLznmmGPimGOOyWIpAAAAXsHEDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHHCDQAAIHFteW8AAHY1OFiKM86YE/39rVGtHpL3dvbJ/Plj8aMfvRBtvqoCUCe+xACQlBdeaInf/a4t3vWu8XjDG7bkvZ29+tWvJsXPftYe27aVYvr0at7bAaBJCTcAknTBBePR0zOY9zb2atWqafGzn7XnvQ0AmpznuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACROuAEAACSurdb/sVKpxK233hobN26MUqkUPT09cdZZZ2W5NwAAAOIAwq21tTU+/OEPx4IFC2Lr1q1x7bXXxpvf/OZ4/etfn+X+AAAAJryaHyrZ1dUVCxYsiIiIjo6OmDdvXvT19WW2MQAAAHbI5Dlu69evj2ef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Z1Y8zqyYsjg3L04CAACQOBM3AACAxLXlvYGJ5lvf+lb85Cc/iZkzZ0ZExAUXXBALFy7c7f0effTRuPPOO2N8fDxOP/30OOeccxq8U15yzz33xNq1a6OtrS0OPvjgWLJkSUybNm239/v4xz8eU6ZMiZaWlmhtbY2lS5fmsNuJbW/XTbVajTvvvDMeeeSRaG9vjyVLlsSCBQvy2SxRqVTi1ltvjY0bN0apVIqenp4466yzXvY+TzzxRHz1q1+Ngw46KCIiTjjhhDj33HPz2C672Nv9nWstLevWrYvly5fvfHv9+vVx3nnnxbvf/e6df+day9/KlSvj4Ycfjs7Ozli2bFlERAwNDcXy5cvjhRdeiDlz5sRVV10V06dP3+3/9X1jfvZ0bnX73rFKQ917773V7373u6/5PmNjY9VPfOIT1d///vfV7du3Vz/96U9Xf/vb3zZoh7zSo48+Wh0dHa1Wq9XqPffcU73nnnv2+H5LliypDgwMNHJr7GJfrpu1a9dWb7rppur4+Hj1ySefrF533XU57ZZqtVrt6+urPvPMM9VqtVrdsmVL9YorrtjtzP7lX/6l+uUvfzmP7fEa9nZ/51pL19jYWPWjH/1odf369S/7e9da/p544onqM888U7366qt3/t0999xTve+++6rVarV633337fF7EN835mtP51av7x09VDJBTz/9dBxyyCFx8MEHR1tbW5x00kmxZs2avLc1Yb3lLW+J1tbWiIg48sgjo6+vL+cdsSf7ct388pe/jFNOOSVKpVIceeSRsXnz5ujv789px3R1de2cwnR0dMS8efNcX03CtZauxx9/PA455JCYM2dO3lvhFY4++ujdpmlr1qyJU089NSIiTj311D1+P+j7xnzt6dzq9b2jh0rm4Ec/+lE88MADsWDBgrjooot2O+y+vr7o7u7e+XZ3d3f85je/afQ22YOf/vSncdJJJ73qv990000REXHGGWd41acG25frpq+vL8rl8svep6+vL7q6uhq2T/Zs/fr18eyzz8bhhx++27899dRT8ZnPfCa6urriwx/+cBx66KE57JBXeq37O9dauh588MF429vetsd/c62lZ2BgYOd109XVFYODg7u9j+8b05bl947CrQ6++MUvxsaNG3f7+/PPPz/OPPPMnY8Zv/fee+Nv/uZvYsmSJS97v+oeXuizVCrVZa/s8Fpndvzxx0dExHe+851obW2Nk08++VXXmD17dgwMDMSXvvSlmDt3bhx99NH13Da72JfrxrWVpm3btsWyZcti8eLFMXXq1Jf92xvf+MZYuXJlTJkyJR5++OH42te+FrfccktOO+Ule7u/c62laXR0NNauXRsXXnjhbv/mWisu11u6sv7eUbjVwZ//+Z/v0/udfvrp8ZWvfGW3v+/u7o4NGzbsfHvDhg1+Sllnezuzf/zHf4y1a9fGjTfe+Kp3hrNnz46IiM7Ozjj++OPj6aefFm4NtC/XTXd3d1Qqldd8HxprdHQ0li1bFieffHKccMIJu/37riG3cOHCuOOOO2JwcHDnCzyRj73d37nW0vTII4/EG9/4xpg1a9Zu/+ZaS1NnZ2f09/dHV1dX9Pf37/E8fN+Ypnp87+g5bg2262P8f/GLX+zxYQiHHXZYPPfcc7F+/foYHR2Nhx56KBYtWtTIbbKLRx99NL773e/GZz/72Whvb9/j+2zbti22bt26878fe+yxmD9/fiO3OeHty3WzaNGieOCBB6JarcZTTz0VU6dO9cUtR9VqNVatWhXz5s2Ls88+e4/vs3Hjxp0/TX766adjfHw8ZsyY0cht8gr7cn/nWkvTaz1M0rWWpkWLFsX9998fERH333//zkcB7cr3jemp1/eOfgF3g/3lX/5l/Md//EeUSqWYM2dOXHLJJdHV1RV9fX1x++23x3XXXRcREQ8//HDcfffdMT4+Hu94xzvi/e9/f847n7guv/zyGB0d3flcxCOOOCIuueSSl53Z888/H3/xF38RERFjY2Px9re/3ZnlYE/XzY9//OOIiDjzzDOjWq3GHXfcEb/61a9i8uTJsWTJkjjssMNy3vXE9W//9m9x4403xvz583f+NPKCCy7YOak588wz44c//GH8+Mc/jtbW1pg8eXJcdNFF8aY3vSnPbU94r3Z/51pL2/DwcFx22WXxjW98Y+d0bdczc63lb8WKFfHrX/86Nm3aFJ2dnXHeeefF8ccfH8uXL49KpRLlcjmuvvrqmD59uu8bE7Knc7vvvvvq8r2jcAMAAEich0oCAAAkTrgBAAAkTrgBAAAkTrgBAAAkTrgBAAAkTrgBAAAkTrgBAAAkTrgBAAAk7v8BuCVRRvzTTNsAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1080x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.style.use(\"ggplot\")\n",
"\n",
"\n",
"def shrink_polygon(coords, shrink_value_x, shrink_value_y):\n",
" \"\"\" \"\"\"\n",
"\n",
" def det(a, b):\n",
" return a[0] * b[1] - a[1] * b[0]\n",
"\n",
" def line_intersection(line1, line2):\n",
" xdiff = (line1[0][0] - line1[1][0], line2[0][0] - line2[1][0])\n",
" ydiff = (line1[0][1] - line1[1][1], line2[0][1] - line2[1][1]) # Typo was here\n",
"\n",
" div = det(xdiff, ydiff)\n",
" if div == 0:\n",
" raise Exception(\"lines do not intersect\")\n",
"\n",
" d = (det(*line1), det(*line2))\n",
" x = det(d, xdiff) / div\n",
" y = det(d, ydiff) / div\n",
" return x, y\n",
"\n",
" # how much the coordinates are moved as an absolute value\n",
" # shrink_value_x = 2\n",
" # shrink_value_y = 2\n",
"\n",
" # coords must be clockwise\n",
" # coords = [(0, 0), (0, 100), (20, 100), (30, 60), (40, 100), (60, 100), (60, 0), (40, 10), (40, 40), (20, 40), (20, 10)]\n",
"\n",
" lines = [[coords[i - 1], coords[i]] for i in range(len(coords))]\n",
"\n",
" new_lines = []\n",
" for i in lines:\n",
" dx = i[1][0] - i[0][0]\n",
" dy = i[1][1] - i[0][1]\n",
"\n",
" # this is to take into account slopes\n",
" factor = 1 / (dx * dx + dy * dy) ** 0.5\n",
" new_dx = dy * shrink_value_x * factor\n",
" new_dy = dx * shrink_value_y * factor\n",
"\n",
" new_lines.append(\n",
" [(i[0][0] + new_dx, i[0][1] - new_dy), (i[1][0] + new_dx, i[1][1] - new_dy)]\n",
" )\n",
"\n",
" # find position of intersection of all the lines\n",
" new_coords = []\n",
" for i in range(len(new_lines)):\n",
" new_coords.append((line_intersection(new_lines[i - 1], new_lines[i])))\n",
"\n",
" return new_coords\n",
"\n",
"\n",
"# must be clockwise!\n",
"coords = [\n",
" (0, 0),\n",
" (0, 10),\n",
" (2, 10),\n",
" (3, 8),\n",
" (4, 10),\n",
" (6, 10),\n",
" (6, 0),\n",
" (4, 1),\n",
" (4, 4),\n",
" (2, 4),\n",
" (2, 1),\n",
"]\n",
"\n",
"# how much the coordinates are moved as an absolute value\n",
"SHIFT = 0.5 # [m]\n",
"\n",
"up = shrink_polygon(coords, -SHIFT, -SHIFT)\n",
"lo = shrink_polygon(coords, SHIFT, SHIFT)\n",
"\n",
"\"\"\"\n",
"the last point is out of order for my needs\n",
"\"\"\"\n",
"\n",
"\n",
"def rotate(l, n):\n",
" return l[n:] + l[:n]\n",
"\n",
"\n",
"up = rotate(up, 1)\n",
"lo = rotate(lo, 1)\n",
"\n",
"a = np.array(up)\n",
"b = np.array(coords)\n",
"c = np.array(lo)\n",
"\n",
"plt.figure(figsize=(15, 10))\n",
"plt.plot(a[:, 0], a[:, 1], \"b-\")\n",
"plt.plot(b[:, 0], b[:, 1], \"r-\")\n",
"plt.plot(c[:, 0], c[:, 1], \"g-\")\n",
"plt.axis(\"equal\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"now these edges can be used to compute the path as before! Plus outer and inner track"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from scipy.interpolate import interp1d\n",
"from scipy.signal import savgol_filter\n",
"\n",
"\n",
"def compute_path_from_wp(start_xp, start_yp, step=0.1, smooth_factor=7):\n",
" \"\"\"\n",
" Computes a reference path given a set of waypoints\n",
" \"\"\"\n",
"\n",
" final_xp = []\n",
" final_yp = []\n",
" delta = step # [m]\n",
"\n",
" for idx in range(len(start_xp) - 1):\n",
" section_len = np.sum(\n",
" np.sqrt(\n",
" np.power(np.diff(start_xp[idx : idx + 2]), 2)\n",
" + np.power(np.diff(start_yp[idx : idx + 2]), 2)\n",
" )\n",
" )\n",
"\n",
" interp_range = np.linspace(0, 1, np.floor(section_len / delta).astype(int))\n",
"\n",
" fx = interp1d(np.linspace(0, 1, 2), start_xp[idx : idx + 2], kind=1)\n",
" fy = interp1d(np.linspace(0, 1, 2), start_yp[idx : idx + 2], kind=1)\n",
"\n",
" # watch out to duplicate points!\n",
" final_xp = np.append(final_xp, fx(interp_range)[1:])\n",
" final_yp = np.append(final_yp, fy(interp_range)[1:])\n",
"\n",
" \"\"\"this smoothens up corners\"\"\"\n",
" window_size = smooth_factor # Smoothening filter window\n",
" final_xp = savgol_filter(final_xp, window_size, 1)\n",
" final_yp = savgol_filter(final_yp, window_size, 1)\n",
"\n",
" dx = np.append(0, np.diff(final_xp))\n",
" dy = np.append(0, np.diff(final_yp))\n",
" theta = np.arctan2(dy, dx)\n",
"\n",
" return np.vstack((final_xp, final_yp, theta))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'x')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"track = compute_path_from_wp(b[:, 0], b[:, 1])\n",
"track_lower = compute_path_from_wp(c[:, 0], c[:, 1])\n",
"track_upper = compute_path_from_wp(a[:, 0], a[:, 1])\n",
"\n",
"plt.figure(figsize=(15, 10))\n",
"\n",
"plt.plot(track[0, :], track[1, :], \"b+\")\n",
"plt.plot(track_lower[0, :], track_lower[1, :], \"g-\")\n",
"plt.plot(track_upper[0, :], track_upper[1, :], \"r-\")\n",
"plt.axis(\"equal\")\n",
"plt.ylabel(\"y\")\n",
"plt.xlabel(\"x\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fc509665310>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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f/M3q84tlV3BYFA/ceKEruu6vrCwoH/2s5/VT58+ve73K5Nd632/NE3TQ6GQruu6Ho1G9f/+3/+7/t577637/cpk13rfrwQ/+MEP9EceeUT/2te+put6aT6PmzbsMzg4SFtbG62trdhsNvbu3cvRo0fX26xlHD16lGuuuQaAa665pmT27dy5c9UvjEy2HD16lL1792K322lpaaGtrY3BwcGS2ZWJUtnV1NRET08PADU1NWzdupVgMLju9yuTXZkolV2SJOFwOABQVRVVVZEkad3vVya7MlHK930gEOD111/nuuuuWza/1fdr04p/MBjE7XYn/3a73Wt+OErBV77yFf7bf/tvDAwMADA9PU1TUxNgfJhnZmbWzbZMtqy8j83NzSW/jz/60Y+45557eOKJJ5ibm1s3u8bHxxkaGmL79u0b6n6l2gXrf780TeNzn/sct912G5dccgl9fX0b4n6lswvW/3795V/+JR//+MeXfRmV4n5t2pi/niaDda1vequ5//77aW5uZnp6mi9/+cu0t7evmy25kO4+lpLrr7+eG2+8EYCnn36ab3/729xxxx0ltyscDnPo0CE++clP4nQ6M5633nZthPslyzIPPPAA8/PzPPjgg5w6dSrjuett13rfr9dee42GhgZ6enp4++23s55fTLs2refvdrsJBALJvwOBQPKbdD1obm4GoKGhgT179jA4OEhDQwOTk5MATE5OJhed1oNMtqy8j8FgMPlcSkFjYyOyLCPLMtdddx0nTpwouV2xWIxDhw7xwQ9+kPe///3Axrhf6ezaCPcrQW1tLTt37uTNN9/cEPcrnV3rfb/ee+89/vVf/5U777yTRx55hJ///Oc89thjJblfm1b8e3t7GR0dZXx8nFgsxpEjR9i9e/e62BIOhwmFQsn/v/XWW2zbto3du3dz+PBhAA4fPsyePXvWxT4goy27d+/myJEjRKNRxsfHGR0dTYYXSkHiAwDw6quv0tnZWVK7dF3nySefZOvWrfz6r/968vh6369Mdq33/ZqZmWF+fh4wMmx+9rOfsXXr1nW/X5nsWu/79Ru/8Rs8+eSTPP7449x1111cfPHFfPazny3J/drUFb6vv/463/rWt9A0jQ996EPs27dvXew4f/48Dz74IGAsNl111VXs27eP2dlZHn74Yfx+Px6PhwMHDpQk1fORRx7hnXfeYXZ2loaGBm666Sb27NmT0Zbvf//7/PjHP0aWZT75yU9y2WWXlcyut99+m+HhYSRJwuv1cvvttyd/wZXCrnfffZcvfvGLbNu2LRk2vOWWW+jr61vX+5XJrpdffnld79fIyAiPP/44mqah6zpXXnklN95445rv9fW06+tf//q63q9U3n77bX7wgx9w7733luR+bWrxFwgEAkF6Nm3YRyAQCASZEeIvEAgEFYgQf4FAIKhAhPgLBAJBBSLEXyAQCCoQIf4CgUBQgQjxFwgEggrk/wcLDvX+x7OyrAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.degrees(track[2, :]), \"b-\")\n",
"plt.plot(np.degrees(track_lower[2, :]), \"g-\")\n",
"plt.plot(np.degrees(track_upper[2, :]), \"r-\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"probably smarter to to save this in a file and load it in a notebook, so I dont have to carry over the code..."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"with open(\"tracks/test.npy\", \"wb\") as f:\n",
" np.save(f, track)\n",
" np.save(f, track_lower)\n",
" np.save(f, track_upper)\n",
"\n",
"with open(\"tracks/test.npy\", \"rb\") as f:\n",
" a = np.load(f)\n",
" b = np.load(f)\n",
" c = np.load(f)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# matches perfectly!\n",
"# plt.plot(np.degrees(a[2,:]),\"b-\")\n",
"# plt.plot(np.degrees(b[2,:]),\"g-\")\n",
"# plt.plot(np.degrees(c[2,:]),\"r-\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:.conda-jupyter] *",
"language": "python",
"name": "conda-env-.conda-jupyter-py"
},
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}