Skip to content

Instantly share code, notes, and snippets.

@kvas7andy
Created March 6, 2017 21:46
Show Gist options
  • Save kvas7andy/176059d6a2d53e3610cd6d56c8c51197 to your computer and use it in GitHub Desktop.
Save kvas7andy/176059d6a2d53e3610cd6d56c8c51197 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 126,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import scipy\n",
"\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"mpl.rcParams['figure.figsize'] = (10, 10)"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def convert2xy(scans):\n",
" angles_loc = np.deg2rad(np.linspace(-120, 120, 682))\n",
" valid_obj = scans > 0.02\n",
" return (np.array([scans*np.cos(angles_loc), scans*np.sin(angles_loc)]).swapaxes(0, 1).swapaxes(1, 2).reshape(-1, 2)\n",
" , valid_obj.ravel())\n",
"\n",
"def rot(points, angle):\n",
" return np.append([np.cos(angle)*points[:, 0]-np.sin(angle)*points[:, 1]], \n",
" [np.sin(angle)*points[:, 0]+np.cos(angle)*points[:, 1]], axis = 0).T\n",
" # pass # rotated_points\n",
"\n",
"def integr(deltas):\n",
" angles = np.cumsum(np.append([0], deltas[:, 2], axis=0), axis=0)\n",
" return np.append(np.cumsum(np.append([[0, 0]], \n",
" rot(deltas[:, :2], angles[1:]), axis = 0), axis=0), \n",
" angles.reshape(-1, 1), axis=-1)#trajectory\n",
"\n",
"def plot_points_cloud(trajectory, scans, valid, verbose=True):\n",
" plt.figure()\n",
" x, y, angles = trajectory[:, 0], trajectory[:, 1], trajectory[:, 2]\n",
" if verbose:\n",
" plt.plot(x, y, lw=3, c='blue')\n",
" clouds = rot(scans[valid], np.repeat(angles, 682)[valid]) + (np.repeat(trajectory[:, :2], 682, axis=0))[valid]\n",
" if verbose:\n",
" plt.scatter(clouds[:, 0], \n",
" clouds[:, 1], s=0.5, c='r')\n",
" # pass # figure"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"scans = np.load(\"scans.npy\")\n",
"deltas = np.load(\"deltas.npy\")"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Past: 0.6774795055389404 sec\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.figure.Figure at 0x7f391a9260f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import time\n",
"tm = time.time()\n",
"trajectory = integr(deltas)\n",
"xy_scans, valid = convert2xy(scans)\n",
"plot_points_cloud(trajectory, xy_scans, valid, verbose=False)\n",
"print(\"Past: {} sec\".format(time.time() - tm))"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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\n8QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f391c60a7b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10, 5))\n",
"plt.plot(deltas[:, 0])\n",
"plt.grid()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"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.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment