{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Chapter 7" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from control.matlab import *\n", "import control as ct\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "plt.rcParams['font.family'] ='sans-serif' #使用するフォント\n", "plt.rcParams['xtick.direction'] = 'in' #x軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['ytick.direction'] = 'in' #y軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['xtick.major.width'] = 1.0 #x軸主目盛り線の線幅\n", "plt.rcParams['ytick.major.width'] = 1.0 #y軸主目盛り線の線幅\n", "plt.rcParams['font.size'] = 10 #フォントの大きさ\n", "plt.rcParams['axes.linewidth'] = 1.0 # 軸の線幅edge linewidth。囲みの太さ\n", "plt.rcParams['mathtext.default'] = 'regular'\n", "plt.rcParams['axes.xmargin'] = '0' #'.05'\n", "plt.rcParams['axes.ymargin'] = '0.05'\n", "plt.rcParams['savefig.facecolor'] = 'None'\n", "plt.rcParams['savefig.edgecolor'] = 'None'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def linestyle_generator():\n", " linestyle = ['-', '--', '-.', ':']\n", " lineID = 0\n", " while True:\n", " yield linestyle[lineID]\n", " lineID = (lineID + 1) % len(linestyle)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def plot_set(fig_ax, *args):\n", " fig_ax.set_xlabel(args[0])\n", " fig_ax.set_ylabel(args[1])\n", " fig_ax.grid(ls=':')\n", " if len(args)==3:\n", " fig_ax.legend(loc=args[2])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def bodeplot_set(fig_ax, *args):\n", " fig_ax[0].grid(which=\"both\", ls=':')\n", " fig_ax[0].set_ylabel('Gain [dB]')\n", "\n", " fig_ax[1].grid(which=\"both\", ls=':')\n", " fig_ax[1].set_xlabel('$\\omega$ [rad/s]')\n", " fig_ax[1].set_ylabel('Phase [deg]')\n", " \n", " if len(args) > 0:\n", " fig_ax[1].legend(loc=args[0])\n", " if len(args) > 1:\n", " fig_ax[0].legend(loc=args[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## オブザーバ" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A = [[ 0 1]\n", " [-4 5]]\n", "\n", "B = [[0]\n", " [1]]\n", "\n", "C = [[1 0]]\n", "\n", "D = [[0]]\n", "\n", "A = [[ 0 1]\n", " [-4 5]]\n", "\n", "B = [[0]\n", " [1]]\n", "\n", "C = [[1 0]\n", " [0 1]]\n", "\n", "D = [[0]\n", " [0]]\n", "\n" ] } ], "source": [ "A = '0 1; -4 5'\n", "B = '0; 1'\n", "C = '1 0'\n", "D = '0'\n", "P = ss(A, B, C, D)\n", "print(P)\n", "\n", "A = '0 1; -4 5'\n", "B = '0; 1'\n", "C = '1 0; 0 1'\n", "D = '0; 0'\n", "Ps = ss(A, B, C, D)\n", "print(Ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### オブザーバゲインの設計(極配置)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ -35.]\n", " [-421.]]\n" ] } ], "source": [ "# オブザーバ極\n", "observer_poles=[-15+5j,-15-5j]\n", "\n", "# オブザーバゲインの設計(状態フィードバックの双対) \n", "L = -acker(P.A.T, P.C.T, observer_poles).T\n", "print(L)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-15.+5.j, -15.-5.j])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.eigvals(P.A + L * P.C)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-46. -15.]]\n" ] } ], "source": [ "# レギュレータ極\n", "regulator_poles = [-5+5j, -5-5j]\n", "# 極配置\n", "F = -acker(P.A, P.B, regulator_poles)\n", "print(F)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "Gsf = ss(P.A + P.B*F, P.B, np.eye(2), [[0],[0]])\n", "#Obs = ss(P.A+P.B*F+L*P.C, -L, np.eye(2), [[0],[0]] )\n", "Obs = ss(P.A + L*P.C, np.c_[P.B, -L], np.eye(2), [[0,0],[0,0]] )" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-15.+5.j, -15.-5.j])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pole(Obs)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "\n", "T = np.arange(0, 3, 0.01)\n", "X0 = [-1, 0.5]\n", "x, t = initial(Gsf, T, X0)\n", "ax[0].plot(t, x[:, 0], ls='-.', label='${x}_1$')\n", "ax[1].plot(t, x[:, 1], ls='-.', label='${x}_2$')\n", "\n", "# 入力 u = Fx\n", "u = [ [F[0,0]*x[i,0]+F[0,1]*x[i,1]] for i in range(len(x))]\n", "# 出力 y = Cx\n", "y = x[:, 0]\n", "# オブザーバで推定した状態の振る舞い\n", "xhat, t, x0 = lsim(Obs, np.c_[u, y], T, [0, 0])\n", "ax[0].plot(t, xhat[:, 0], label='$\\hat{x}_1$')\n", "ax[1].plot(t, xhat[:, 1], label='$\\hat{x}_2$')\n", "\n", "for i in [0, 1]:\n", " plot_set(ax[i], 't', '', 'best')\n", " ax[i].set_xlim([0, 3])\n", "\n", "ax[0].set_ylim([-2, 2])\n", "ax[0].set_ylabel('$x_1, \\hat{x}_1$')\n", "ax[1].set_ylabel('$x_2, \\hat{x}_2$')\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"obs.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 出力フィードバック" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K:\n", " A = [[ -35. 1.]\n", " [-471. -10.]]\n", "\n", "B = [[ 35.]\n", " [421.]]\n", "\n", "C = [[-46. -15.]]\n", "\n", "D = [[0]]\n", "\n", "----------------\n", "K(s)= \n", " -7925 s - 9216\n", "----------------\n", "s^2 + 45 s + 821\n", "\n" ] } ], "source": [ "# 出力フィードバック(オブザーバ+状態フィードバック)\n", "K = ss(P.A+P.B*F+L*P.C, -L, F, 0)\n", "print('K:\\n', K)\n", "print('----------------')\n", "print('K(s)=', tf(K))\n", " \n", "# フィードバック系\n", "Gfb = feedback(P, K, sign=1)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.5, 3.5)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "Td = np.arange(0, 3, 0.01)\n", "\n", "y, t = initial(P, Td, [-1, 0.5])\n", "ax.plot(t,y, ls='-.', label='w/o controller')\n", "\n", "y, t = initial(Gfb, Td, [-1, 0.5, 0, 0])\n", "ax.plot(t,y, label='w/ controller')\n", "\n", "plot_set(ax, 't', 'y', 'best')\n", "ax.set_xlim([0, 3])\n", "ax.set_ylim([-1.5, 3.5])\n", "\n", "# fig.savefig(\"obs2.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 外乱オブザーバ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "出力に0.5の定値外乱が加わるとする" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "\n", "Td = np.arange(0, 3, 0.01)\n", "X0 = [-1, 0.5]\n", "d = 0.5*(T>0)\n", "\n", "# 状態フィードバック\n", "regulator_poles = [-5+5j, -5-5j]\n", "F = -acker(P.A, P.B, regulator_poles)\n", "Gsf = ss(P.A + P.B*F, P.B, np.eye(2), [[0],[0]])\n", "\n", "x, t = initial(Gsf, Td, X0)\n", "ax[0].plot(t, x[:, 0], ls='-.', label='${x}_1$')\n", "ax[1].plot(t, x[:, 1], ls='-.', label='${x}_2$')\n", "\n", "# 入力 u = Fx\n", "u = [ [F[0,0]*x[i,0]+F[0,1]*x[i,1]] for i in range(len(x))]\n", "# 出力 y = Cx+d\n", "y = x[:, 0]+d\n", "Obs = ss(P.A + L*P.C, np.c_[P.B, -L], np.eye(2), [[0,0],[0,0]] )\n", "\n", "xhat, t, x0 = lsim(Obs, np.c_[u, y], T, [0, 0])\n", "ax[0].plot(t, xhat[:, 0], label='$\\hat{x}_1$')\n", "ax[1].plot(t, xhat[:, 1], label='$\\hat{x}_2$')\n", "\n", "for i in [0, 1]:\n", " ax[i].grid(ls=':')\n", " ax[i].set_xlim([0, 3])\n", " ax[i].set_xlabel('t')\n", " ax[i].legend()\n", "\n", "ax[0].set_ylim([-2, 2])\n", "ax[0].set_ylabel('$x_1, \\hat{x}_1$')\n", "ax[1].set_ylabel('$x_2, \\hat{x}_2$')\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"dis_obs.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 149.5]\n", " [-526. ]\n", " [-187.5]]\n" ] } ], "source": [ "# オブザーバ極\n", "observer_poles=[-15+5j,-15-5j, -3] \n", "\n", "# オブザーバゲインの設計(状態フィードバックの双対)\n", "E = [[0], [0]]\n", "Abar = np.r_[ np.c_[P.A, E], np.zeros((1,3))] \n", "Bbar = np.c_[ P.B.T, np.zeros((1,1)) ].T\n", "Cbar = np.c_[ P.C, 1 ]\n", "\n", "Lbar = -acker(Abar.T, Cbar.T, observer_poles).T\n", "print(Lbar)\n", "\n", "Fbar = np.c_[ F, 0 ]\n", "\n", "# Obs = ss(Abar+Bbar*Fbar+Lbar*Cbar, -Lbar, np.eye(3), [[0],[0],[0]] )\n", "Aob = Abar + Lbar*Cbar\n", "Bob = np.c_[Bbar, -Lbar]\n", "Obs = ss(Aob, Bob, np.eye(3), [[0,0],[0,0],[0,0]] )" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-15.+5.j, -15.-5.j, -3.+0.j])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pole(Obs)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.5, 1)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "\n", "Td = np.arange(0, 3, 0.01)\n", "X0 = [-1, 0.5]\n", "d = 0.5*(T>0)\n", "x, t = initial(Gsf, Td, X0)\n", "ax[0].plot(t, x[:, 0], ls='-.', label='${x}_1$')\n", "ax[1].plot(t, x[:, 1], ls='-.', label='${x}_2$')\n", "\n", "\n", "# 入力 u = Fx\n", "u = [ [F[0,0]*x[i,0]+F[0,1]*x[i,1]] for i in range(len(x))]\n", "# 出力 y = Cx+d\n", "y = x[:, 0]+d\n", "xhat, t, x0 = lsim(Obs, np.c_[u, y], T, [0, 0, 0])\n", "#xhat, t, x0 = lsim(Obs, x[:, 0]+d, T, [0, 0, 0])\n", "ax[0].plot(t, xhat[:, 0], label='$\\hat{x}_1$')\n", "ax[1].plot(t, xhat[:, 1], label='$\\hat{x}_2$')\n", "\n", "for i in [0, 1]:\n", " ax[i].grid(ls=':')\n", " ax[i].set_xlim([0, 3])\n", " ax[i].set_xlabel('t')\n", " ax[i].legend()\n", "\n", "ax[0].set_ylabel('$x_1, \\hat{x}_1$')\n", "ax[1].set_ylabel('$x_2, \\hat{x}_2$')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"dis_obs2.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "ax.plot(t, xhat[:, 2], label='$\\hat{x}_2$', color='k')\n", "ax.grid(ls=':')\n", "ax.set_xlabel('t')\n", "ax.set_ylabel('$\\hat{d}$')\n", "ax.set_ylim([-0.5, 1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "外乱 0.5 が推定できている" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ロバスト制御" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "g = 9.81 # 重力加速度[m/s^2]\n", "l = 0.2 # アームの長さ[m]\n", "M = 0.5 # アームの質量[kg]\n", "mu = 1.5e-2 # 粘性摩擦係数\n", "J = 1.0e-2 # 慣性モーメント\n", "\n", "P = tf( [0,1], [J, mu, M*g*l] )\n", "\n", "ref = 30 # 目標角度 [deg]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 乗法的不確かさ" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 垂直駆動アームのノミナルモデル\n", "Pn = tf( [0,1], [J, mu, M*g*l] )\n", "\n", "# Pn = tf( [0, 1], [1, 1])\n", "# 不確かさ\n", "delta = np.arange(-1, 1 , 0.1)\n", "WT = tf( [10, 0], [1, 150])\n", "\n", "fig, ax = plt.subplots(1, 2, figsize=(6,2.3))\n", "# fig, ax = plt.subplots(1, 2)\n", "\n", "for i in range(len(delta)):\n", " # 不確かさをもつ制御対象\n", " P = (1 + WT*delta[i])*Pn\n", " gain, _, w = bode(P, logspace(-3,3), Plot=False)\n", "\n", " ax[0].semilogx(w, 20*np.log10(gain), color = 'k', lw = 0.3)\n", " \n", " # 乗法的不確かさ\n", " DT = (P - Pn)/Pn\n", " gain, _, w = bode(DT, logspace(-3,3), Plot=False)\n", "\n", " ax[1].semilogx(w, 20*np.log10(gain), color = 'k', lw = 0.3)\n", "\n", "gain, phase, w = bode(Pn, logspace(-3,3), Plot=False)\n", "ax[0].semilogx(w, 20*np.log10(gain), lw =2, color='k')\n", "\n", "gain, phase, w = bode(WT, logspace(-3,3), Plot=False)\n", "ax[1].semilogx(w, 20*np.log10(gain), lw =2, color='k')\n", "\n", "ax[0].set_ylim(-100, 50)\n", "ax[1].set_ylim(-100, 50)\n", "bodeplot_set(ax)\n", "ax[0].set_xlabel('$\\omega$ [rad/s]')\n", "ax[0].set_ylabel('Gain of $P$ [dB]')\n", "ax[1].set_ylabel('Gain of $\\Delta W_T/P$ [dB]')\n", "#ax.grid(which=\"both\", ls=':')\n", "#ax.set_ylabel('Gain [dB]')\n", "#ax.set_xlabel('$\\omega$ [rad/s]')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"robust_plant.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 混合感度問題" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K= \n", " 7.21 s^4 + 1098 s^3 + 3259 s^2 + 1.081e+05 s + 9.032e+04\n", "---------------------------------------------------------------\n", "s^5 + 165.1 s^4 + 2448 s^3 + 2.449e+04 s^2 + 2.273e+04 s + 5540\n", "\n", "gamma = 0.9527651218302327\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from control import mixsyn\n", "\n", "WS = tf( [0, 1], [1, 1, 0.25]) # 感度関数に対する重み関数 \n", "WU = tf(1, 1)\n", "WT = tf( [10, 0], [1, 150]) # 相補感度関数に対する重み関数\n", "\n", "# 混合感度問題\n", "K, _, gamma = mixsyn(Pn, w1=WS , w2=WU, w3=WT) \n", "\n", "print('K=', ss2tf(K))\n", "print('gamma =', gamma[0])\n", "\n", "fig, ax = plt.subplots(1, 2, figsize=(6,2.3))\n", "\n", "# 感度関数\n", "Ssys = feedback(1, Pn*K)\n", "gain, _, w = bode(Ssys, logspace(-3,3), Plot=False)\n", "ax[0].semilogx(w, 20*np.log10(gain), ls= '-', lw =2, label='$S$', color='k')\n", "\n", "gain, _, w = bode(1/WS, logspace(-3,3), Plot=False)\n", "ax[0].semilogx(w, 20*np.log10(gain), ls= '-.', lw =1, label='$1/W_S$', color='k')\n", "\n", "# 相補感度関数\n", "Tsys = feedback(Pn*K, 1)\n", "gain, _, w = bode(Tsys, logspace(-3,3), Plot=False)\n", "ax[1].semilogx(w, 20*np.log10(gain), ls = '-', lw =2, label='$T$', color='k')\n", "\n", "gain, _, w = bode(1/WT, logspace(-3,3), Plot=False)\n", "ax[1].semilogx(w, 20*np.log10(gain), ls= '--', lw =1, label='$1/W_T$', color='k')\n", "\n", "for i in range(2):\n", " ax[i].set_ylim(-40, 40)\n", " ax[i].legend()\n", " ax[i].grid(which=\"both\", ls=':')\n", " ax[i].set_ylabel('Gain [dB]')\n", " ax[i].set_xlabel('$\\omega$ [rad/s]')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"robust_design.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0, 60)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(len(delta)):\n", " P = (1 + WT*delta[i])*Pn\n", " Gyr = feedback(P*K, 1)\n", " \n", " y, t = step(Gyr, np.arange(0,5,0.01))\n", "\n", " ax.plot(t, y*ref, color ='k', lw =0.3)\n", "\n", "Gyr = feedback(Pn*K, 1)\n", "y, t = step(Gyr, np.arange(0,5,0.01))\n", "ax.plot(t, y*ref, lw =2, color='k')\n", "\n", "plot_set(ax, 't', 'y')\n", "ax.set_xlim(0, 2)\n", "ax.set_ylim(0, 60)\n", "\n", "# fig.savefig(\"robust_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PID制御との比較" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kp = 2\n", "kd = 0.1\n", "ki = 10\n", "\n", "# fig, ax = plt.subplots()\n", "fig, ax = plt.subplots(figsize=(3,2.3))\n", "\n", "for i in range(len(delta)):\n", " Kpid = tf([kd, kp, ki], [1, 0])\n", " \n", " P = (1 + WT*delta[i])*Pn\n", " Gyr = feedback(P*Kpid, 1)\n", " y, t = step(Gyr, np.arange(0,5,0.01))\n", " ax.plot(t, y*ref, color ='k', lw =0.3)\n", " \n", "ax.set_xlim(0, 2)\n", "ax.set_ylim(0, 60)\n", "plot_set(ax, 't', 'y')\n", "\n", "# fig.savefig(\"robust_comp.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ナイキスト線図で不確かさの影響を確認する" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(6, 3))\n", "\n", "for i in range(len(delta)):\n", "# ロバスト制御:閉ループ系が安定になる\n", " \n", " P = (1 + WT*delta[i])*Pn\n", "\n", " x, y, _ = nyquist(P*K, logspace(-3,5,1000), Plot=False)\n", " ax[0].plot(x, y, lw = 0.5, color='k')\n", " #ax[0].plot(x, -y, ls='--', color='k')\n", " ax[0].scatter(-1, 0, color='k')\n", " plot_set(ax[0], 'Re', 'Im')\n", "\n", "# PID制御:閉ループ系が不安定になる\n", " xpid, ypid, _ = nyquist(P*Kpid, logspace(-3,5,1000), Plot=False)\n", " ax[1].plot(xpid, ypid, lw = 0.5, color='k')\n", " #ax[1].plot(xpid, -ypid, ls='--', color='k')\n", " ax[1].scatter(-1, 0, color='k')\n", " plot_set(ax[1], 'Re', 'Im')\n", "\n", "x, y, _ = nyquist(Pn*K, logspace(-3,5,1000), Plot=False)\n", "ax[0].plot(x, y, lw = 2, color='k')\n", "ax[0].set_xlim(-1.2, 1.2)\n", "ax[0].set_ylim(-1.2, 1.2)\n", "\n", "xpid, ypid, _ = nyquist(Pn*Kpid, logspace(-3,5,1000), Plot=False)\n", "ax[1].plot(xpid, ypid, lw = 2, color='k')\n", "ax[1].set_xlim(-1.2, 0.5)\n", "ax[1].set_ylim(-1.2, 0.5)\n", "fig.tight_layout()\n", "\n", "# fig.savefig(\"nyquist_robust.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "左:ロバスト制御,右:PID制御" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### おまけ" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "from control import augw, hinfsyn\n", "G = augw(P, w1=WS, w2=WU, w3=WT)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "k, cl, gam, ro= hinfsyn(G, 1, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ディジタル実装" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "連続時間システム \n", " 1\n", "---------\n", "0.5 s + 1\n", "\n" ] } ], "source": [ "P = tf([0, 1], [0.5, 1])\n", "print('連続時間システム',P)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "離散時間システム(zoh) \n", " 0.3297\n", "----------\n", "z - 0.6703\n", "\n", "dt = 0.2\n", "\n", "離散時間システム(tustin) \n", "0.1667 z + 0.1667\n", "-----------------\n", " z - 0.6667\n", "\n", "dt = 0.2\n", "\n" ] } ], "source": [ "ts = 0.2\n", "\n", "Pd1 = c2d(P, ts, method='zoh')\n", "print('離散時間システム(zoh)', Pd1)\n", "\n", "Pd2 = c2d(P, ts, method='tustin')\n", "print('離散時間システム(tustin)',Pd2)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAACeCAYAAACFOoW9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXl8VNXd/98nIRCCCGFVJJutVEUICIpan6JUBdFabFU2ZbE+aMWFpy7UhuJTaOoCL0UUtyK4JEARfVx/iIpUW3eCxEgSSWIWAikhJBBC9sz390cmMUAmmUnmzp17ct6v131N5s6553y/M+eT7z3nnkWJCAaDwWAwOIkQuw0wGAwGg8FXTPAyGAwGg+MwwctgMBgMjsMEL4PBYDA4DhO8DAaDweA4TPAyGAwGg+PoZrcBnUEpZcb5G4IGEVF229BRjJYMwYQ3WrKs5aWUWqOUKlZKfefhc6WUWqmUylZKfauUOrfFZ7OVUlnuY3Zb5YiIdkdKSortNhjffDusxGjJ1Leu4peI91qystvwRWBSG59fCZzhPuYBzwAopfoBDwLjgPOBB5VSkRbaGXSMGjXKbhMswy7fkpOTiY2NJSQkhNjYWJKTk/2SNkC8iNFSh9BVS3b6FTRasjiCxgLfefjsOWB6i/ffA6cC04HnPKU7Lg/RkV27dtltgmV441tSUpLExMSIUkpiYmIkKSmpU2mTkpIkIiJCgOYjIiKi02lb4q6LRktBhm5a8rc2fE0bTFqyM3i9A1zc4v1WYCxwL7Coxfk/A/d6yKPNL8GpVFZW2m2C3wmUOHr27CnLly+XtLQ02b59u3z22WcyePDgY9I0HTExMfLJJ5/IqlWrmvMcOHBgq2l79+4td955p/z+97+Xu+66qzn9U089JY8++qjdwctoyQNO0ZKdN2Ge0j7++OOSnp4uO3fulK+++kr+/e9/y6BBgzxq6ZlnnpGPP/5YRESqq6ulT58+HrU0f/58ue2222Tjxo0i0vg7TZ8+XbZv3+6I4PVuK4IbA9zXiuDu8ZDHMV/K/fffL9nZ2VJZWSm7du2ShoYGSUlJERGR7du3i4hISkqKNDQ0yK5du6SyslKys7OltLRUCgsLZd++fXLgwAHJzc2VI0eOSEZGhtTV1cnOnTuPyaPp9dtvv5Xq6mrZvXu3HD58WPLz82X//v2yf/9+yc/Pl8OHD8vu3bulurpavv3221bz2Llzp9TV1UlGRoYcOXJEcnNzJTU1Vfbt2yeFhYVSWloatD499NBDxwhu6dKlrfr0+OOPS8+ePY/5rcLDw2XNmjWybds22bhxo3zyySciItKvX79WK3z37t1lxIgRcvrpp8upp54qX375pZx22mmtpvX2UErJvHnzpGfPns0+tZU+MjJSIiMjJSYmRnJzc+XAgQNy6623yowZM+wOXkZLQailhx56SKKjo0UpJVFRUfLEE0+06tOLL74o4eHhJ+gjKSnpGJ+ioqJarZdDhgyRyspKSU5Olg8//FBSUlIkJiam1bQ9evSQ+Ph4OeussyQmJkYmT54sQ4cO9agPX7TUu3dvuf3222X37t1y8ODBNtP369dP+vfvLwsXLpTc3FzJz8+XuLg4Wb9+vSOCl+nq8EBpaaltZXe2hfTYY4/Jo48+Kvfdd5/Mnj1bJk+eLN27d/d4t/baa68J0PwPoK0K/6tf/UqmTp0qc+fOlT179rQprldffVXefPNNee+999q8W6yoqDjm+46OjvaYti1sDl5GSx6wS0u+tHw8BZqBAwfKkiVL5I477pCpU6e2GThERK644go5//zzRUTa1MYVV1wh1157rcycOVMSExM9plVKyfr16+X111+Xd955R95///02ezEOHjwoR48eFRERl8tluZbsDF5XAZsBBVwAfOU+3w/IBSLdRy7Qz0Me7dciB1JYWGhLuZ4Et2rVKvnXv/4la9eulUWLFsns2bM9BoSm8+Hh4RIVFSXnnntum6IrKyuT1NRUqaqqEhHPQm6twnubNpj66Tt6GC11DH9rydubO091c8iQIfLuu+/KihUrZMGCBXL99de328Lp27evDBs2THr06NFmfc/KypKcnJw2y++Mjpr8DxYtWSm29UARUAcUAr8DbgNuc3+ugFVADpAGjG1x7c1AtvuY20YZbX4JTmXfvn1+za+zgmt5hIaGeuy+aApIR44cEZfL1W6+gRSHVQ+6m7AyeBktdRx/asmX+uZNl1uvXr3kzDPP9NhtFxUVJbW1tR0q38ogEyxasix4BeLQVXAHDhzwW16eKuaTTz4pIo3N+wsuuEAefPDBNgW3efNmycrKahaTVQGpKb2V4rACK4NXIA6jpfbxVOejoqJEROS9996T2NhY+eGHHzym7d+/v3z2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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "\n", "Tc = np.arange(0, 3, 0.01)\n", "y, t = step(P, Tc)\n", "ax[0].plot(t, y, ls='-.', label='continuous', color='k')\n", "ax[1].plot(t, y, ls='-.', label='continuous', color='k')\n", "\n", "\n", "Td = np.arange(0, 3, ts)\n", "y, t = step(Pd1, Td)\n", "ax[0].plot(t, y, ls='', marker='o', label='zoh', color='k')\n", "\n", "y, t = step(Pd2, Td)\n", "ax[1].plot(t, y, ls='', marker='o', label='tustin', color='k')\n", "\n", "for i in [0, 1]:\n", " plot_set(ax[i], 't', 'y', 'best')\n", " ax[i].set_xlim([0, 3])\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"c2d_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "\n", "Tc = np.arange(0, 3, 0.01)\n", "Uc = 0.5 * np.sin(6*Tc) + 0.5 * np.cos(8*Tc)\n", "\n", "y, t, x0 = lsim(P, Uc, Tc)\n", "ax[0].plot(t, y, ls='-.', label='continuous', color='k')\n", "ax[1].plot(t, y, ls='-.', label='continuous', color='k')\n", "\n", "\n", "T = np.arange(0, 3, ts)\n", "U = 0.5 * np.sin(6*T) + 0.5 * np.cos(8*T)\n", "\n", "y, t, x0 = lsim(Pd1, U, T)\n", "ax[0].plot(t, y, ls='', marker='o', label='zoh', color='k')\n", "\n", "y, t, x0 = lsim(Pd2, U, T)\n", "ax[1].plot(t, y, ls='', marker='o', label='tustin', color='k')\n", "\n", "for i in [0, 1]:\n", " plot_set(ax[i], 't', 'y', 'best')\n", " ax[i].set_xlim([0, 3])\n", " ax[i].set_ylim([-0.3, 0.3])\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"c2d_time.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(P, np.logspace(-2,2), Plot=False)\n", "pltargs = {'ls': '-.', 'label': 'continuous'}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "gain, phase, w = bode(Pd1, np.logspace(-2,2), Plot=False)\n", "pltargs = {'ls': '--', 'label': 'zoh'}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "\n", "gain, phase, w = bode(Pd2, np.logspace(-2,2), Plot=False)\n", "pltargs = {'ls': '-', 'label': 'tustin'}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].axvline(np.pi/ts, lw = 0.5, c ='k')\n", "ax[1].axvline(np.pi/ts, lw = 0.5, c ='k')\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"c2d_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "離散時間システム(zoh) \n", " 0.09516\n", "----------\n", "z - 0.9048\n", "\n", "dt = 0.05\n", "\n", "離散時間システム(tustin) \n", "0.04762 z + 0.04762\n", "-------------------\n", " z - 0.9048\n", "\n", "dt = 0.05\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ts = 0.05\n", "\n", "Pd1 = c2d(P, ts, method='zoh')\n", "print('離散時間システム(zoh)', Pd1)\n", "\n", "Pd2 = c2d(P, ts, method='tustin')\n", "print('離散時間システム(tustin)',Pd2)\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(P, np.logspace(-2,2), Plot=False)\n", "pltargs = {'ls': '-.', 'label': 'continuous'}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "gain, phase, w = bode(Pd1, np.logspace(-2,2), Plot=False)\n", "pltargs = {'ls': '--', 'label': 'zoh'}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "\n", "gain, phase, w = bode(Pd2, np.logspace(-2,2), Plot=False)\n", "pltargs = {'ls': '-', 'label': 'tustin'}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].axvline(np.pi/ts, lw = 0.5, c ='k')\n", "ax[1].axvline(np.pi/ts, lw = 0.5, c ='k')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"c2d_bode2.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] } ], "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }