Skip to content

Instantly share code, notes, and snippets.

@tsu-nera
Created July 23, 2017 13:19
Show Gist options
  • Save tsu-nera/08093cc38f5a6a40793b3be2a9e4aa1b to your computer and use it in GitHub Desktop.
Save tsu-nera/08093cc38f5a6a40793b3be2a9e4aa1b to your computer and use it in GitHub Desktop.
Afrel 楕円コース PID制御 パラメータチューニング(twiddle)
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Afrel 楕円コース PID制御 パラメータチューニング(twiddle)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from homework5_4.task import robot\n",
"from math import *\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 楕円コース\n",
"\n",
"- [楕円コース | すべての商品 | | 教育版LEGO MINDSTORMS正規代理店 アフレル](http://afrel-shop.com/shopdetail/007001000018/)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"radius = 13.5\n",
"height = 9.0\n",
"width = 29.0\n",
"params = [1.0, 10.0, 0.01]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"x_track = [cos((t * pi / 200) + (pi / 2)) * radius + radius for t in range(100)] + \\\n",
" [cos((t * pi / 200) + pi) * radius + radius for t in range(100)] + \\\n",
" [cos((t * pi / 200) + (3.0 * pi / 2)) * radius + radius + width for t in range(100)] + \\\n",
" [cos((t * pi / 200)) * radius + radius + width for t in range(100)] + \\\n",
" [radius]\n",
"\n",
"y_track = [sin((t * pi / 200) + (pi / 2)) * radius + radius + height for t in range(100)] + \\\n",
" [sin((t * pi / 200) + pi) * radius + radius for t in range(100)] + \\\n",
" [sin((t * pi / 200) + (3.0 * pi / 2)) * radius + radius for t in range(100)] + \\\n",
" [sin((t * pi / 200)) * radius + radius + height for t in range(100)] + \\\n",
" [radius * 2.0 + height]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOXdxvHvj7AFInvYQfZVthpRrFhWwUABlQJW3yKo\nqIhAq29r8VVURNGKWFGwIGvFrVVZVQSKCkghYccSCCKULRCiCAElkDzvHxkoUkhCkpmTM7k/1zVX\nJidn8txPl5uTZ86cY845RETE/4p4HUBERPKHCl1EJEyo0EVEwoQKXUQkTKjQRUTChApdRCRMqNBF\nRMKECl1EJEyo0EVEwkTRUA5WqVIlV6dOnVAOKSLie+vWrTvinIvObr+QFnqdOnWIj48P5ZAiIr5n\nZntysp+WXEREwoQKXUQkTKjQRUTChApdRCRMqNBFRMKECl1EJEyo0EVEwkRIz0OXvDl58iQHDx4k\nKSmJpKQkvv/+e3788Ud+/PFHvv76ayZNmsSAAQNo2LCh11HzjZl5HSEowm1eERERREVF/eRRqVIl\natWqRbVq1YiIiPA6YqGgQi9gnHPs3LmTLVu2sG3btnOPnTt3cuzYsWxf/84774RNWeh+t+EhIiKC\natWqUbt2bZo1a0bLli1p0aIFLVq0oGLFil7HCysqdI+dOnWKNWvW8OWXX557pKSknPt5rVq1aNq0\nKe3ataNGjRpUq1aNqlWrUrVqVcqXL0/JkiXPPYoXLx42ZS7+cubMGU6cOEFqaiqpqakcP36cw4cP\ns3fvXvbu3cu+ffvYvXs3H374IW+88ca511155ZXceOON5x4NGzbU/4bzINtCN7OSwBdAicD+f3fO\njTazJ4F7geTArqOccx8FK2g4OXDgAB999BGLFi1iyZIlnDhxAoAmTZrQu3dv2rVrR+vWrWnSpAlR\nUVEepxXJXtGiRSlbtixly5bNcj/nHElJSWzZsoXNmzezZs0aFi9ezF//+lcAqlatSmxsLH369KFL\nly5ERkaGIn7YsOz+rLXMfy5LO+dSzawYsBIYAXQHUp1zL+Z0sJiYGFdYr+Vy+PBh3nnnHd58803i\n4uIAqF27Nj169ODmm2/m+uuv15+fUig559ixYwdffPEFy5Yt4+OPP+bYsWOUKlWKbt260a9fP/r0\n6UPJkiW9juoZM1vnnIvJdr/LWac0s1JkFvoDwM2o0LOUlpbG3LlzmT17Np988gnp6em0adOGfv36\n0aNHD6666ir9eSlygbS0ND7//HPmzp3LvHnz2L9/P+XKlePXv/41gwcP5mc/+1mh+/9NTgsd51y2\nDyAC2AikAs8Htj0J7AE2A9OB8tn9nquvvtoVBocPH3Zjxoxx1apVc4CrWbOm+8Mf/uC2bt3qdTQR\nX0lPT3dLly51d9xxhytZsqQDXOvWrd3s2bNdWlqa1/FCBoh3OenqnOzk/lPs5YDlwFVAlUDRFwHG\nAtMv8ZohQDwQX7t27ZD9B+CF7du3u7vvvtuVKFHCAa579+7u448/dunp6V5HE/G97777zk2ePNk1\nb9783IHSn/70J/f99997HS3oglLomb+XJ4BHLthWB9ia3WvD9Qh9165d7q677nJFihRxkZGR7v77\n73f/+te/vI4lEpYyMjLcokWLXIcOHRzgypQp48aMGeNSU1O9jhY0OS30bD8pambRZlYu8DwS6Aok\nmFm183a7Bdia7fpOmDlw4AAPPPAAjRo14u2332bkyJHs3r2byZMn07RpU6/jiYQlMyM2Npbly5cT\nFxdHx44defzxx6lfvz6TJk3i9OnTXkf0TE4++l8NWG5mm4E4YIlzbiHwgpltCWzvCPw2iDkLlNOn\nT/Piiy/SuHFjpk2bxpAhQ/j6668ZP348lStX9jqeSKERExPD3LlzWbVqFY0aNeLBBx+kadOmLFq0\nyOto3sjJYXx+PcJhyWXZsmWuadOmDnA9evRwO3fu9DqSiLjMpZiFCxe6Jk2aOMDddtttbt++fV7H\nyhfk15KLZDp69CgDBw6kc+fOnDp1igULFrBw4ULq16/vdTQRIXMppkePHmzatImxY8eyaNEimjRp\nwp///GfS09O9jhcSKvQcWLp0KS1atGDOnDn83//9H1999RU9e/b0OpaIXETx4sUZNWoUX331FTfc\ncAMjR46kS5cu7N271+toQadCz8IPP/zA8OHD6dq1K6VLl2b16tWMGTOmUH9iTcQv6tWrx0cffcT0\n6dOJj4+nZcuWvPfee17HCioV+iV88803XH/99UycOJERI0awYcMGrrnmGq9jichlMDMGDRrEhg0b\naNy4Mf3792fQoEH88MMPXkcLChX6RXzyySdcffXV7N69m4ULF/Lyyy/rIkEiPtagQQNWrFjB448/\nzqxZs2jfvn1YLsGo0M/jnOOZZ54hNjaWWrVqER8fT48ePbyOJSL5oFixYjz99NPMmzePHTt2EBMT\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f1df56d8b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"plt.plot(x_track, y_track, 'k-')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running a robotic car"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"x_path = [0.0, ]\n",
"y_path = [radius, ]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"myrobot = robot()\n",
"myrobot.set(0.0, radius, pi / 2.0)\n",
"speed = 1.0\n",
"err = 0.0\n",
"int_crosstrack_error = 0.0\n",
"N = 100\n",
"\n",
"crosstrack_error = myrobot.cte(radius, width, height)\n",
"\n",
"for i in range(N * 2):\n",
" diff_crosstrack_error = - crosstrack_error\n",
" crosstrack_error = myrobot.cte(radius, width, height)\n",
" diff_crosstrack_error += crosstrack_error\n",
" int_crosstrack_error += crosstrack_error\n",
" steer = - params[0] * crosstrack_error \\\n",
" - params[1] * diff_crosstrack_error \\\n",
" - params[2] * int_crosstrack_error\n",
" myrobot = myrobot.move(steer, speed)\n",
" if i >= N:\n",
" err += crosstrack_error ** 2\n",
" x_path.append(myrobot.x)\n",
" y_path.append(myrobot.y)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAw/IOJe7AtwyAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f1df360d630>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x_track, y_track, 'k-', x_path, y_path, 'bo')\n",
"plt.axis([-radius * 0.1, 2.1 * radius + width, -radius * 0.1, 2.1 * radius + height])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Twiddle\n",
"- [Twiddle - Artificial Intelligence for Robotics - YouTube](https://www.youtube.com/watch?v=2uQ2BSzDvXs)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def run(params, printflag=False):\n",
" myrobot = robot()\n",
" myrobot.set(0.0, 1.0, 0.0)\n",
" speed = 1.0\n",
" err = 0.0\n",
" int_crosstrack_error = 0.0\n",
" N = 100\n",
" # myrobot.set_noise(0.1, 0.0)\n",
" myrobot.set_steering_drift(10.0 / 180.0 * pi) # 10 degree steering error\n",
"\n",
" crosstrack_error = myrobot.y\n",
"\n",
" for i in range(N * 2):\n",
"\n",
" diff_crosstrack_error = myrobot.y - crosstrack_error\n",
" crosstrack_error = myrobot.y\n",
" int_crosstrack_error += crosstrack_error\n",
"\n",
" steer = - params[0] * crosstrack_error \\\n",
" - params[1] * diff_crosstrack_error \\\n",
" - int_crosstrack_error * params[2]\n",
" myrobot = myrobot.move(steer, speed)\n",
" if i >= N:\n",
" err += (crosstrack_error ** 2)\n",
" if printflag:\n",
" print(myrobot, steer)\n",
" return err / float(N)\n",
"\n",
"\n",
"def twiddle(tol=0.001): #Make this tolerance bigger if you are timing out!\n",
" p = [0, 0, 0]\n",
" dp = [1, 1, 1]\n",
"\n",
" best_error = run(p)\n",
" n = 0\n",
" # sum = integral of the cross track error\n",
" while sum(dp) > tol:\n",
" print(\"Iteration {}, best error = {}\".format(n, best_error))\n",
" for i in range(len(p)):\n",
" p[i] += dp[i]\n",
" err = run(p)\n",
" if err < best_error:\n",
" # error is better than our best error\n",
" best_error = err\n",
" dp[i] *= 1.1\n",
" else:\n",
" # error is not better than before\n",
" # try other directions\n",
" p[i] -= 2.0 * dp[i]\n",
" err = run(p)\n",
" if err < best_error:\n",
" best_error = err\n",
" dp[i] *= 1.1\n",
" else:\n",
" # did not succeed - decrease increments\n",
" p[i] += dp[i]\n",
" dp[i] *= 0.9\n",
" n += 1\n",
" return p"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0, best error = 8315.955485215645\nIteration 1, best error = 0.044546416135712856\nIteration 2, best error = 0.030667733375864255\nIteration 3, best error = 0.03046869606124707\nIteration 4, best error = 0.008518880324802245\nIteration 5, best error = 0.008518668206935719\nIteration 6, best error = 0.008518667701338564\nIteration 7, best error = 0.008518667701338564\nIteration 8, best error = 0.008518667701338564\nIteration 9, best error = 0.00851866770043554\nIteration 10, best error = 0.00851866770043554\nIteration 11, best error = 9.36429057863156e-13\nIteration 12, best error = 8.118576224499871e-15\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 13, best error = 8.118576224499871e-15\nIteration 14, best error = 8.118576224499871e-15\nIteration 15, best error = 8.118576224499871e-15\nIteration 16, best error = 8.118576224499871e-15\nIteration 17, best error = 8.118576224499871e-15\nIteration 18, best error = 8.118576224499871e-15\nIteration 19, best error = 5.8949635515091935e-15\nIteration 20, best error = 2.935905344458206e-18\nIteration 21, best error = 2.935905344458206e-18\nIteration 22, best error = 2.935905344458206e-18\nIteration 23, best error = 1.240039961130423e-18\nIteration 24, best error = 1.240039961130423e-18\nIteration 25, best error = 1.240039961130423e-18\nIteration 26, best error = 7.043395458551602e-19\nIteration 27, best error = 6.448015619853438e-20\nIteration 28, best error = 6.448015619853438e-20\nIteration 29, best error = 6.448015619853438e-20\nIteration 30, best error = 6.448015619853438e-20\nIteration 31, best error = 4.91946882072856e-21\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 32, best error = 4.91946882072856e-21\nIteration 33, best error = 9.615713358638735e-23\nIteration 34, best error = 9.615713358638735e-23\nIteration 35, best error = 9.615713358638735e-23\nIteration 36, best error = 9.615713358638735e-23\nIteration 37, best error = 9.615713358638735e-23\nIteration 38, best error = 9.615713358638735e-23\nIteration 39, best error = 9.615713358638735e-23\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 40, best error = 9.615713358638735e-23\nIteration 41, best error = 9.615713358638735e-23\nIteration 42, best error = 9.615713358638735e-23\nIteration 43, best error = 9.615713358638735e-23\nIteration 44, best error = 9.615713358638735e-23\nIteration 45, best error = 9.615713358638735e-23\nIteration 46, best error = 9.615713358638735e-23\nIteration 47, best error = 9.615713358638735e-23\nIteration 48, best error = 9.615713358638735e-23\nIteration 49, best error = 9.615713358638735e-23\nIteration 50, best error = 9.615713358638735e-23\nIteration 51, best error = 9.615713358638735e-23\nIteration 52, best error = 9.615713358638735e-23\nIteration 53, best error = 9.615713358638735e-23\nIteration 54, best error = 9.615713358638735e-23\nIteration 55, best error = 9.615713358638735e-23\nIteration 56, best error = 9.615713358638735e-23\nIteration 57, best error = 9.615713358638735e-23\nIteration 58, best error = 9.615713358638735e-23"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\nIteration 59, best error = 9.615713358638735e-23\nIteration 60, best error = 9.615713358638735e-23\nIteration 61, best error = 9.615713358638735e-23\nIteration 62, best error = 9.615713358638735e-23\nIteration 63, best error = 9.615713358638735e-23\nIteration 64, best error = 9.615713358638735e-23\nIteration 65, best error = 9.615713358638735e-23\nIteration 66, best error = 9.615713358638735e-23\nIteration 67, best error = 9.615713358638735e-23\nIteration 68, best error = 9.615713358638735e-23\nIteration 69, best error = 9.615713358638735e-23\nIteration 70, best error = 8.52429893895755e-23\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 71, best error = 8.52429893895755e-23\nIteration 72, best error = 6.89583556100888e-23\nIteration 73, best error = 6.89583556100888e-23\nIteration 74, best error = 6.89583556100888e-23\nIteration 75, best error = 4.145006145539035e-23\nIteration 76, best error = 4.145006145539035e-23\nIteration 77, best error = 4.145006145539035e-23\nIteration 78, best error = 4.145006145539035e-23\nIteration 79, best error = 2.5204962731676635e-23\nIteration 80, best error = 2.5204962731676635e-23\nIteration 81, best error = 2.5204962731676635e-23\nIteration 82, best error = 2.2815797166143525e-23\nIteration 83, best error = 2.2815797166143525e-23\nIteration 84, best error = 1.8528427475010002e-23\nIteration 85, best error = 1.692511989245343e-23\nIteration 86, best error = 1.4714089527272985e-23\nIteration 87, best error = 1.4714089527272985e-23\nIteration 88, best error = 1.4714089527272985e-23\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 89, best error = 1.0446065646529456e-23\nIteration 90, best error = 1.0446065646529456e-23\nIteration 91, best error = 7.068232261492995e-24\nIteration 92, best error = 6.284762759979449e-24\nIteration 93, best error = 6.284762759979449e-24\nIteration 94, best error = 5.217848562917681e-24\nIteration 95, best error = 4.838097998336666e-24\nIteration 96, best error = 4.352319633069647e-24\nIteration 97, best error = 4.352319633069647e-24\nIteration 98, best error = 4.352319633069647e-24\nIteration 99, best error = 3.25800247296385e-24\nIteration 100, best error = 3.115690350598778e-24\nIteration 101, best error = 1.7799813352217147e-24\nIteration 102, best error = 1.7799813352217147e-24\nIteration 103, best error = 1.7799813352217147e-24\nIteration 104, best error = 1.6110446580330185e-24\nIteration 105, best error = 1.444549485191908e-24\nIteration 106, best error = 1.444549485191908e-24\nIteration 107, best error = 9.355395139345826e-25\nIteration 108, best error = 9.355395139345826e-25\n"
]
},
{
"data": {
"text/plain": [
"[1.666025810674142, 7.575994288835168, 0.1650652674944419]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"params = twiddle()\n",
"params"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2.0
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment