diff --git a/Assign4_q8.slx b/Assign4_q8.slx new file mode 100644 index 0000000..5e8a561 Binary files /dev/null and b/Assign4_q8.slx differ diff --git a/Assign_4.ipynb b/Assign_4.ipynb new file mode 100644 index 0000000..fe4cb22 --- /dev/null +++ b/Assign_4.ipynb @@ -0,0 +1,773 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q1 - Inverse Kinematics of stanford manipulator" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.5070054663916311, -0.43789010799563355, 0.6255361307144429, 0.6315237641963951], [1.2452165677665659, 0.8774422227801884, 0.1409177561264703, 1.1420907199089083], [-0.4885930992666423, 0.5187467888736881, 0.7673634961210261, 1.2497071518449516], [0, 0, 0, 1]]\n", + "Angle1=-0.494922362024001 Angle2=-0.241997533106244 Linear=1.49351933365457\n", + "Angle4=0 Angle5=0.730256300557661 Angle6=-0.520357861134122\n" + ] + } + ], + "source": [ + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "s1,s2,s3,s4,s5,s6 = sym.symbols('s1,s2,s3,s4,s5,s6')\n", + "c1,c2,c3,c4,c5,c6 = sym.symbols('c1,c2,c3,c4,c5,c6')\n", + "d2,d3,d6 = 1,1,0.5\n", + "q1,q2,q3,q4,q5,q6 = pi/18,3*pi/18,pi/18,pi/18,pi/18,pi/18\n", + "r11,r21,r31,r41 = cos(q1)*(cos(q2)*(cos(q4)*cos(q5)*cos(q6)-sin(q4)*sin(q6))-sin(q2)*sin(q5)*cos(q6))-sin(q1)*(sin(q4)*cos(q5)*cos(q6)+cos(q4)*cos(q6)), sin(q1)*(cos(q2)*(cos(q4)*cos(q5)*cos(q6)-sin(q4)*sin(q6))-sin(q2)*sin(q5)*cos(q6))+cos(q1)*(sin(q4)*cos(q5)*cos(q6)+cos(q4)*cos(q6)), -sin(q2)*(cos(q4)*cos(q5)*cos(q6)-sin(q4)*sin(q6))-cos(q2)*sin(q5)*sin(q6), 0\n", + "r12,r22,r32,r42 = cos(q1)*(-cos(q2)*(cos(q4)*cos(q5)*sin(q6)+sin(q4)*cos(q6))+sin(q2)*sin(q5)*sin(q6))-sin(q1)*(-sin(q4)*cos(q5)*sin(q6)+cos(q4)*cos(q6)), sin(q1)*(-cos(q2)*(cos(q4)*cos(q5)*sin(q6)+sin(q4)*cos(q6))+sin(q2)*sin(q5)*sin(q6))+cos(q1)*(-sin(q4)*cos(q5)*sin(q6)+cos(q4)*cos(q6)), +sin(q2)*(cos(q4)*cos(q5)*cos(q6)+sin(q4)*sin(q6))+cos(q2)*sin(q5)*sin(q6), 0\n", + "r13,r23,r33,r43 = cos(q1)*(cos(q2)*cos(q4)*sin(q5)+sin(q2)*cos(q5))-sin(q1)*sin(q4)*sin(q5), sin(q1)*(cos(q2)*cos(q4)*sin(q5)+sin(q2)*cos(q5))+cos(q1)*sin(q4)*sin(q5), -sin(q2)*cos(q4)*sin(q5)+cos(q2)*cos(q5), 0\n", + "r14,r24,r34,r44 = cos(q1)*sin(q2)*d3-sin(q1)*d2+d6*(cos(q1)*cos(q2)*cos(q4)*sin(q5)+cos(q1)*cos(q5)*sin(q2)-sin(q1)*sin(q4)*sin(q5)), sin(q1)*sin(q2)*d3+cos(q1)*d2+d6*(cos(q1)*sin(q4)*sin(q5)+cos(q2)*cos(q4)*sin(q1)*sin(q5)+cos(q5)*sin(q1)*sin(q2)), cos(q2)*d3+d6*(cos(q2)*cos(q5)-cos(q4)*sin(q2)*sin(q5)),1\n", + "f_mat = [[r11,r12,r13,r14],[r21,r22,r23,r24],[r31,r32,r33,r34],[r41,r42,r43,r44]]\n", + "print(f_mat)\n", + "eq1 = sym.Eq(c1*s2*s3-s1*d2,0.16)#sym.Eq(Function('cos')(s1)*Function('sin')(s2)*s3-Function('sin')(s1)*d2,0.16)#eq1 = sym.Eq((s1**2-1)**0.5*s2*s3-s1*d2,1)\n", + "eq2 = sym.Eq(s1*s2*s3+d2*c1,1.05)#sym.Eq(Function('sin')(s1)*Function('sin')(s2)*s3+Function('cos')(s1)*d2,1.05)\n", + "eq3 = sym.Eq(c2*s3,1.45)#sym.Eq(Function('cos')(s2)*s3,1.45)\n", + "eq4 = sym.Eq(c1**2+s1**2,1)\n", + "eq5 = sym.Eq(c2**2+s2**2,1)\n", + "result = sym.solve([eq1,eq2,eq3,eq4,eq5],s1,s2,s3,c1,c2)\n", + "#print(result[0])\n", + "(s1,s2,s3,c1,c2)=result[0]\n", + "print(\"Angle1=\"+str(atan(s1/c1))+\" Angle2=\"+str(atan(s2/c2))+\" Linear=\"+str(s3))\n", + "rotMat = [[c1*c2,-s1,c1*s2,0],[s1*c2,c1,s1*s2,0],[-s2,0,c2,0],[0,0,0,1]]\n", + "w = np.transpose(rotMat)*(f_mat)\n", + "#print(w)\n", + "iq1 = sym.Eq(c5,w[2][2])\n", + "iq2 = sym.Eq(s4,w[1][2]/w[0][2])\n", + "iq3 = sym.Eq(s6,-w[2][1]/w[2][0])\n", + "result1 = sym.solve([iq1,iq2,iq3],[s4,c5,s6])\n", + "#print(result1)\n", + "print(\"Angle4=\"+str(atan(result1.get(s4)))+\" Angle5=\"+str(acos(result1.get(c5))) +\" Angle6=\"+str(atan(result1.get(s6))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q2 - Inverse Kinematics of SCARA" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Angle1=0.643501108793284 Angle2=0.927295218001612 Linear=0.200000000000000\n", + "Angle4=0.343023940420703\n" + ] + } + ], + "source": [ + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "s1,s2,s3,s4,s5,s6 = sym.symbols('s1,s2,s3,s4,s5,s6')\n", + "c1,c2,c3,c4,c5,c6 = sym.symbols('c1,c2,c3,c4,c5,c6')\n", + "d2,d3,d6 = 1,1,0.5\n", + "eq1 = sym.Eq(d2*c1+d3*c2,1.4)#sym.Eq(Function('cos')(s1)*Function('sin')(s2)*s3-Function('sin')(s1)*d2,0.16)#eq1 = sym.Eq((s1**2-1)**0.5*s2*s3-s1*d2,1)\n", + "eq2 = sym.Eq(d2*s1+d3*s2,1.4)#sym.Eq(Function('sin')(s1)*Function('sin')(s2)*s3+Function('cos')(s1)*d2,1.05)\n", + "eq3 = sym.Eq(s3,0.2)#sym.Eq(Function('cos')(s2)*s3,1.45)\n", + "eq4 = sym.Eq(c1**2+s1**2,1)\n", + "eq5 = sym.Eq(c2**2+s2**2,1)\n", + "result = sym.solve([eq1,eq2,eq3,eq4,eq5],s1,s2,s3,c1,c2)\n", + "#print(result[0])\n", + "(s1,s2,s3,c1,c2)=result[0]\n", + "print(\"Angle1=\"+str(atan(s1/c1))+\" Angle2=\"+str(atan(s2/c2))+\" Linear=\"+str(s3))\n", + "\n", + "iq1 = sym.Eq(s2*c4+c2*s4,0.9)\n", + "iq2 = sym.Eq(c2*c4+s2*s4,0.8)\n", + "result1 = sym.solve([iq1,iq2],[s4,c4])\n", + "#print(result1)\n", + "print(\"Angle4=\"+str(atan(result1.get(s4))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q3 - Joint Velocities using end-effector velocities" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matrix([[211.615809440546, 143.307904720273, -24.9341018000127], [143.307904720273, 100.000000000000, -24.9540099677810], [-24.9341018000127, -24.9540099677810, 25.0000000000000]])\n", + "Matrix([[0.0546875000000000], [0.205078125000000], [0]])\n" + ] + } + ], + "source": [ + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "\n", + "jacob = Matrix([[-11.156448908138957, 9.335387362109374, 0.0], [-8.657598394923445, 5.004596890082059, 0.0], [4.328799197461723, 2.5022984450410295, 0.0]])#, [0, 0, 1], [0, 0, 1], [0, 0, 1]\n", + "#j_in = jacob.inv()\n", + "j_jtrans = jacob*jacob.transpose()\n", + "#assuming 0 acceleration b matrix will be 0\n", + "#print(j_jtrans)\n", + "joint_vel = jacob.transpose()*j_jtrans.inv()*Matrix([1,1,1]) \n", + "print(joint_vel)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q6 - Inverse Kinematics of Spherical wrist" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(-0.316227766016838, -2.84604989415154, 2.84604989415154, 0.900000000000000, -2.84604989415154, 2.84604989415154)\n", + "Angle1=-0.337889611165861 Angle2=0.785398163397448 Angle3=0.785398163397448\n" + ] + } + ], + "source": [ + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "\n", + "[[r11,r12,r13],[r21,r22,r23],[r31,r32,r33]] = [[0.9,0.9,0.9],[0.9,0.9,0.9],[0.9,0.9,0.9]]\n", + "s1,s2,s3 = sym.symbols('s1,s2,s3')\n", + "c1,c2,c3 = sym.symbols('c1,c2,c3')\n", + "eq1 = sym.Eq(c1,r33)\n", + "eq2 = sym.Eq(c2*s1,r13)\n", + "eq3 = sym.Eq(s2*s1,r23)\n", + "eq4 = sym.Eq(-s1*c3,r31)\n", + "eq5 = sym.Eq(-s1*s3,r32)\n", + "eq6 = sym.Eq(c1**1+s1**2,1)\n", + "result = sym.solve([eq1,eq2,eq3,eq4,eq5,eq6],s1,s2,s3,c1,c2,c3)\n", + "#print(result[0])\n", + "(s1,s2,s3,c1,c2,c3)=result[0]\n", + "print(\"Angle1=\"+str(atan(s1/c1))+\" Angle2=\"+str(atan(s2/c2))+\" Angle3=\"+str(atan(s3/c3)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q9 - Dynamics and control of Stanford Manipulator" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(-0.474963330849782, -0.211985631137779, 1.68837199692485, 0.880005587680033, 0.977272782896934)\n", + "(-0.932157359915714, -0.498837519664837, 1.67302121923184, 0.362053388818509, 0.866695522646006)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\ishra\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\control\\timeresp.py:941: UserWarning: Non-zero initial condition given for transfer function system. Internal conversion to state space used; may not be consistent with given X0.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAGgCAYAAAC0SSBAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAgi0lEQVR4nO3de3RU5aH38d8kTCYXSIAQIEAICEVFSoPgspYiYE2pglQqUMh7BBRQa2V1aVvXsl3LJO0ST7WlKrZaj4iIJ77Ipb4WFQgVrRZaOSAIpeKlcivhYkgmMZNMNuR5//DMSJzwMEAyMzv5ftbK0tk8M/s3e5L8si8zj8cYYwQAwBkkxTsAACCxURQAACuKAgBgRVEAAKwoCgCAFUUBALCiKAAAVhQFAMCKogAAWFEUaFMPP/ywLrroIiUnJ6ugoKBN1/XGG2/I4/HojTfeaNP1tKZnn31WHo9H+/bta9P1jBs3TuPGjWvTdaD9oijaiV27dmnq1KnKz89Xamqq+vbtq8LCQi1evLjZuIULF+qll16KSaYNGzbo3nvv1ejRo7V06VItXLgwJus9m9AvZ4/Ho7fffjvi340xysvLk8fj0aRJk+KQMHEEAgGVlJS4qnzR+iiKdmDz5s0aNWqUdu7cqfnz5+vxxx/XvHnzlJSUpEcffbTZ2FgWxeuvv66kpCQtWbJEs2bN0vXXXx+T9UYrNTVVZWVlEcvffPNNHTp0SD6fr80z3Hzzzaqvr1d+fn6br+t8BAIBlZaWUhQdXKd4B8CFe+CBB5SVlaWtW7eqa9euzf7t2LFj8Qn1v+tOS0tTSkpKqzyeMUYNDQ1KS0trlce7/vrrtXLlSj322GPq1OmLH4WysjKNHDlSn376aausxyY5OVnJycltvp5EU1dXp4yMjHjHQJTYo2gHPv74Y1122WURJSFJPXv2DP+/x+NRXV2dli1bFj70MmfOHEnS/v37deedd+riiy9WWlqasrOzNW3atIhj56HDNn/96191zz33KCcnRxkZGZoyZYqOHz/ebF1Lly5VXV1deF3PPvusJOnkyZP65S9/qUGDBsnn82nAgAH62c9+pmAw2GxdAwYM0KRJk7R+/XqNGjVKaWlp+sMf/iBJOnTokG688UZlZGSoZ8+euvvuuyPufzYzZ85UZWWlysvLw8saGxu1atUqFRUVtXifX//61/rGN76h7OxspaWlaeTIkVq1alXEOI/Ho7vuuksvvfSShg0bJp/Pp8suu0zr1q1rcXuevp1Dz3vDhg0qKChQamqqhg4dqjVr1jS7b0lJiTweT8S6oznv0djYqPvvv18jR45UVlaWMjIyNGbMGG3atCk8Zt++fcrJyZEklZaWhl/HkpKS8JjXX39dY8aMUUZGhrp27arvfve7+uc//9lizj179qioqEjdunXTN7/5zTNmQ+KhKNqB/Px8bdu2Tbt377aOW758uXw+n8aMGaPly5dr+fLluv322yVJW7du1ebNmzVjxgw99thjuuOOO/TnP/9Z48aNUyAQiHisBQsWaOfOnSouLtYPfvAD/elPf9Jdd93VbF1jxoyRz+cLr+vqq6+WJM2bN0/333+/Lr/8cv32t7/V2LFj9eCDD2rGjBkR69m7d69mzpypwsJCPfrooyooKFB9fb2+9a1vaf369brrrrv085//XG+99Zbuvffec9puAwYM0FVXXaUXXnghvOy1116T3+9vMYskPfrooxoxYoR+8YtfaOHCherUqZOmTZumV155JWLs22+/rTvvvFMzZszQQw89pIaGBt10002qrKw8a7YPP/xQ3//+93XdddfpwQcfDK/n9FK7EDU1NXr66ac1btw4/epXv1JJSYmOHz+uCRMmaMeOHZKknJwcPfHEE5KkKVOmhF/H733ve5KkjRs3asKECTp27JhKSkp0zz33aPPmzRo9enSLJTVt2jQFAgEtXLhQ8+fPb5XngRgxcL0NGzaY5ORkk5ycbK666ipz7733mvXr15vGxsaIsRkZGWb27NkRywOBQMSyLVu2GEnmueeeCy9bunSpkWSuvfZa09TUFF5+9913m+TkZFNdXR1eNnv2bJORkdHsMXfs2GEkmXnz5jVb/pOf/MRIMq+//np4WX5+vpFk1q1b12zsI488YiSZF198Mbysrq7ODB482EgymzZtingupws9h61bt5rHH3/cdOnSJfz8p02bZsaPHx9e/8SJE63bqbGx0QwbNsxcc801zZZLMikpKeajjz4KL9u5c6eRZBYvXhyR5ZNPPol43qtXrw4v8/v9Jjc314wYMSK8rLi42LT0I9zSY44dO9aMHTs2fPvkyZMmGAw2u19VVZXp1auXufXWW8PLjh8/biSZ4uLiiPUUFBSYnj17msrKymbPMSkpycyaNSsi58yZMyMeA+7AHkU7UFhYqC1btmjy5MnauXOnHnroIU2YMEF9+/bVyy+/HNVjnH7c33EcVVZWavDgweratau2b98eMf62225rdthjzJgxOnXqlPbv329dz6uvvipJuueee5ot//GPfyxJEX+ZDxw4UBMmTIh4jNzcXE2dOjW8LD09Xbfddpt13S2ZPn266uvrtXbtWtXW1mrt2rVnPOwkNd9OVVVV8vv9GjNmTIvb6Nprr9WgQYPCt4cPH67MzEz961//OmuuPn36aMqUKeHbmZmZmjVrlt59910dOXIk2qd3RsnJyeFzR01NTTpx4oROnjypUaNGtfhcvqyiokI7duzQnDlz1L179/Dy4cOHq7CwMPw6n+6OO+644NyID4qinbjiiiu0Zs0aVVVV6Z133tF9992n2tpaTZ06VXv27Dnr/evr63X//fcrLy9PPp9PPXr0UE5Ojqqrq+X3+yPG9+/fv9ntbt26Sfr8l6fN/v37lZSUpMGDBzdb3rt3b3Xt2jWiaAYOHNjiYwwePDji+PzFF19sXXdLcnJydO2116qsrExr1qzRqVOnmhXQl61du1Zf//rXlZqaqu7du4cPz0SzjaTPt9PZtpGkFp/fkCFDJKnV3nOxbNkyDR8+XKmpqcrOzlZOTo5eeeWVFp/Ll4Vep5a2+aWXXqpPP/1UdXV1zZa39FrCHSiKdiYlJUVXXHGFFi5cqCeeeEKO42jlypVnvd+CBQv0wAMPaPr06XrxxRe1YcMGlZeXKzs7W01NTRHjz3SljolyZt2WTsK2pLWucLIpKirSa6+9pieffFLXXXddixcFSNJbb72lyZMnKzU1Vb///e/16quvqry8XEVFRS0+7wvdRmdzpm146tSps973+eef15w5czRo0CAtWbJE69atU3l5ua655poWX+/WEIvXEm2Dy2PbsVGjRkn6/DBByJl+uaxatUqzZ8/Wb37zm/CyhoYGVVdXt2qm/Px8NTU16cMPP9Sll14aXn706FFVV1dH9X6C/Px87d69W8aYZs9n796955VpypQpuv322/W3v/1NK1asOOO41atXKzU1VevXr2/2HoulS5ee13ptPvroo4jn98EHH0j6/CS89MVeXHV1dbNyO9vhP+nz1/uiiy7SmjVrmq2juLi42bgzfb+EXqeWtvn777+vHj16cPlrO8IeRTuwadOmFv9KDR0nPv3w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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import control as ct\n", + "import sympy as sym\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "import matplotlib.animation as animation\n", + "import mpl_toolkits.mplot3d.axes3d as p3\n", + "\n", + "jeff,beff,ks = 5,3,1\n", + "kd,kp = 1,0.3\n", + "dyn = ct.tf([1],[jeff,beff])\n", + "stiff = ct.tf([ks],[1])\n", + "h1 = ct.series(stiff,dyn)\n", + "f1 = ct.tf([kd],[1])\n", + "h2 = ct.feedback(h1,f1,sign=-1)\n", + "feed_kp = ct.tf([kp],[1])\n", + "feed_s = ct.tf([1],[1,0])\n", + "h3 = ct.series(feed_kp,h2,feed_s)\n", + "\n", + "def inv_kin(ox,oy,oz):\n", + " s1,s2,s3,s4,s5,s6 = sym.symbols('s1,s2,s3,s4,s5,s6')\n", + " c1,c2,c3,c4,c5,c6 = sym.symbols('c1,c2,c3,c4,c5,c6')\n", + " d2,d3,d6 = 1,1,0.5\n", + " q1,q2,q3,q4,q5,q6 = pi/18,pi/18,pi/18,pi/18,pi/18,pi/18\n", + " r11,r21,r31,r41 = 0.16,0.16,0.16,ox\n", + " r12,r22,r32,r42 = 1.05,1.05,1.05,oy\n", + " r13,r23,r33,r43 = 1.45,1.45,1.45,oz\n", + " r14,r24,r34,r44 = 0,0,0,1\n", + " f_mat = [[r11,r12,r13,r14],[r21,r22,r23,r24],[r31,r32,r33,r34],[r41,r42,r43,r44]]\n", + " #print(f_mat)\n", + " #s3=0.5\n", + " eq1 = sym.Eq(c1*s2*s3-s1*d2,r41)#sym.Eq(Function('cos')(s1)*Function('sin')(s2)*s3-Function('sin')(s1)*d2,0.16)#eq1 = sym.Eq((s1**2-1)**0.5*s2*s3-s1*d2,1)\n", + " eq2 = sym.Eq(s1*s2*s3+d2*c1,r42)#sym.Eq(Function('sin')(s1)*Function('sin')(s2)*s3+Function('cos')(s1)*d2,1.05)\n", + " eq3 = sym.Eq(c2*s3,r43)#sym.Eq(Function('cos')(s2)*s3,1.45)\n", + " eq4 = sym.Eq(c1**2+s1**2,1)\n", + " eq5 = sym.Eq(c2**2+s2**2,1)\n", + " result = sym.solve([eq1,eq2,eq3,eq4,eq5],s1,s2,s3,c1,c2)#s3,\n", + " print(result[0])\n", + " (s1,s2,s3,c1,c2)=result[0] #s3,\n", + " return (s1,s2,s3,c1,c2)\n", + "\n", + "def get_angles(p1,p2):\n", + " (p1s1,p1s2,p1s3,p1c1,p1c2) = inv_kin(p1[0],p1[1],p1[2])\n", + " (p2s1,p2s2,p2s3,p2c1,p2c2) = inv_kin(p2[0],p2[1],p2[2])\n", + " p1q1, p1q2 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2))\n", + " p2q1, p2q2 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2))\n", + " u = np.linspace(p1q1,p2q1,nt)# u = np.linspace(0,np.pi/6,nt)\n", + " return (p1q1,p1q2,p2q1,p2q2,float(p1s3),float(p2s3))\n", + "# %% Simulation :\n", + "\n", + "t0 = 1\n", + "t1 = 20\n", + "dt = 0.1\n", + "nt = int(t1 / dt ) + 1 # Number of points of sim time\n", + "t = np.linspace( t0 , t1 , nt )\n", + "# u = 3* np.ones( nt )\n", + "#end point 1\n", + "p1 = [0.16,1.05,1.65]\n", + "p2 = [0.63,1.14,1.45]\n", + "(p1q1,p1q2,p2q1,p2q2,p1s3,p2s3) = get_angles(p1,p2)\n", + "# (p1s1,p1s2,p1s3,p1c1,p1c2) = inv_kin(p1[0],p1[1],p1[2])\n", + "# (p2s1,p2s2,p2s3,p2c1,p2c2) = inv_kin(p2[0],p2[1],p2[2])\n", + "# p1q1, p1q2 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2))\n", + "# p2q1, p2q2 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2))\n", + "u = np.linspace(p1q1,p2q1,nt)# u = np.linspace(0,np.pi/6,nt)\n", + "v = np.linspace(p1q2,p2q2,nt)\n", + "w = np.linspace(p1s3,p2s3,nt)\n", + "# %% Simulation :\n", + "(t,x)=ct.forced_response(h3,t,u,X0=p1q1)\n", + "(t,y)=ct.forced_response(h3,t,v,X0=p1q2)\n", + "(t,z)=ct.forced_response(h3,t,w,X0=0)#t, y, x = ct.forced_response(h3 , t , u ,0)\n", + "# %% Plotting :\n", + "plt.close( 'all ')\n", + "fig_width_cm = 24\n", + "fig_height_cm = 18\n", + "plt . figure (1 , figsize =( fig_width_cm /2.54 , fig_height_cm /2.54))\n", + "plt . subplot (3 , 1 , 1)\n", + "plt.plot(t , x , 'blue')\n", + "plt . xlabel ( 't [ s ] ')\n", + "plt.grid()\n", + "plt.legend( labels =( 'q1' ,))\n", + "plt.subplot(3 , 1 , 2)\n", + "plt.plot(t , y , 'blue')\n", + "plt . xlabel ( 't [ s ] ')\n", + "plt.grid()\n", + "plt.legend( labels =( 'q2' ,))\n", + "plt.subplot(3 , 1 , 3)\n", + "plt.plot(t , z , 'blue')\n", + "plt.xlabel( 't [ s ]')\n", + "plt.grid()\n", + "plt.legend( labels =( 'd' ,))\n", + "plt.show()\n", + "#plt . savefig ( ’ sim_tf . pdf ’)\n", + "\n", + "x1_arr,y1_arr = cos(x),-sin(x)\n", + "x2_arr,y2_arr = (cos(x)+cos(y)),-(sin(x)+sin(y))\n", + "x3_arr,y3_arr = np.linspace(p1[0],p2[0],nt),np.linspace(p1[1],p2[1],nt)# cos(x)*sin(y)*z - sin(x),sin(x)*sin(y)*z + cos(x)#cos(z),sin(z)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(\n", + " 111, aspect=\"equal\", autoscale_on=True, xlim=(-2, 2), ylim=(-2, 2)\n", + ")\n", + "# ax = p3.Axes3D(fig)\n", + "ax.grid(alpha=1)\n", + "ax.set_title(\"Stanford Manipulator\")\n", + "ax.set_xticklabels([])\n", + "ax.set_yticklabels([])\n", + "(line, ) = ax.plot(\n", + " [], [], \".-\", lw=1, color=\"#2b8cbe\"\n", + ") \n", + "(line2, ) = ax.plot(\n", + " [], [], \".-\", lw=1, color='green'\n", + ") \n", + "# initialization function\n", + "def init():\n", + " line.set_data([], [])\n", + " return (line,)\n", + "\n", + "def animate(i):\n", + " x_points = [0, x1_arr[i], x3_arr[i]]#,x3_arr[i]\n", + " y_points = [0, y1_arr[i], y3_arr[i]]#,y3_arr[i]\n", + " # path_x.append(x2_arr[i])\n", + " # path_y.append(y2_arr[i])\n", + " line.set_data(x_points, y_points)\n", + " #line2.set_data(path_x,path_y)\n", + " \n", + " return (line,line2,)#line2\n", + "ani = animation.FuncAnimation(\n", + " fig, animate, init_func=init, frames=len(x1_arr)-1, interval=40, blit=True, repeat=False\n", + ")\n", + "## to save animation, uncomment the line below. Ensure ffmpeg is installed:\n", + "ani.save('Trajectory_stanford.mp4', fps=30, extra_args=['-vcodec', 'libx264'])\n", + "\n", + "# show the animation\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q10 - Dynamics and control of SCARA manipulator" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0.397355871000212, 0.652644128999788, 1.65000000000000, 0.917664596561109, -0.757664596561109)\n", + "Angle4=atan(4.0/(25.0*c2 + 25.0*s2))\n", + "(0.202947885659393, 0.937052114340607, 1.45000000000000, 0.979189540235384, -0.349189540235384)\n", + "Angle4=atan(4.0/(25.0*c2 + 25.0*s2))\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\ishra\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\control\\timeresp.py:941: UserWarning: Non-zero initial condition given for transfer function system. Internal conversion to state space used; may not be consistent with given X0.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "image/png": "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3OXKHD4OHBA7m+/cCfzhD0BgIHDHHdZLrnr2dPYncB0MG0REREREzfD1tV5CBQDnzolF5t9/L35evgysWiUaIHY6N8963H67CCMdFe8sTERERETUBt27A7NmAZ99Bly4IGY4/vhHsf7Dyws4fhz45z+BadPE2g7zupCdOwGTydmjdyyGDSIiIiKim6TRiPUbL74IbNoEXLkCrF4N/OY3QO/ewPXr4hKsl14CUlKA0FCxLuTDD8UMiafjZVRERERERO0kIAC4+27RAODECbHO4/vvgQ0bxCVXn38uGgAMHGi95Oq228QlW56EYYOIiIiISCU9ewK//rVoBgOQl2cNHzt3irteFRYCb74pNhG87TZg8mTR+vVz/709eBkVEREREZED6HTAqFHAq6+K0HHpEvDFF8Bjj4l9POrqRBDJyAAGDAB69AB++Utg5UqgosLZo785nNkgIiIiInKC4GDg/vtFk2Xg0CEx47FunVj/ceYM8K9/iabVAmlpwIQJGnTq1NltFpozbBAREREROZkkidmMAQOAp58GamvFZoLmXcyLioCcHCAnRwtgLCoqjHj1VWePumUMG0RERERELsbPz7p2AwBOnhSzHmvXmpCZacTtt7vHYg6u2SAiIiIicnGxscCvfgV8/bURn3zyX6Slyc4eUqswbBARERERuREvLxlarbNH0ToMG0REREREpAqGDSIiIiIiUgXDBhERERERqcLj7kYly2KxTGVlpZNH4lkMBgNqa2tRWVkJnU7n7OF4HNZXPaytulhfdbG+6mFt1cX6qsdVamv+W9v8t3dTPC5sVFVVAQCio6OdPBIiIiIiIs9WVVWFzp07N/m8JLcUR9yMyWTC+fPnERAQAElyj/sPu4PKykpER0fjzJkzCAwMdPZwPA7rqx7WVl2sr7pYX/WwtupifdXjKrWVZRlVVVWIjIyERtP0ygyPm9nQaDSIiopy9jA8VmBgIL80VMT6qoe1VRfrqy7WVz2srbpYX/W4Qm2bm9Ew4wJxIiIiIiJSBcMGERERERGpgmGDWkWv12P+/PnQ6/XOHopHYn3Vw9qqi/VVF+urHtZWXayvetytth63QJyIiIiIiFwDZzaIiIiIiEgVDBtERERERKQKhg0iIiIiIlIFwwYREREREamCYYOIiIiIiFTBsEFYtGgRhg8fjoCAAISGhmLatGkoKipq9jXL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LS3N7mvS0tIU/QEgMzOzyf5EREREROSaVL+MKiMjAzNnzsSwYcOQkpKCJUuWoKamxnJ3qkceeQTdu3fHokWLAABPPvkkxowZg7/85S+488478fnnn2PXrl1477331B4qERERERG1I9XDxvTp03Hx4kW88sorKC0tRVJSEtatW2dZBH769GloNNYJlvT0dKxYsQIvvfQSXnzxRfTp0werVq3y6D02iIiIiIg8kUMWiM+dOxdz5861+1x2drbNsfvuuw/33XffTf0u8518W7tCnlrHYDCgtrYWlZWVXOilAtZXPaytulhfdbG+6mFt1cX6qsdVamv+W7ulXTTc/m5UN6qqqgIAREdHO3kkRERERESeraqqCp07d27yeVU39XMGk8mE8+fPIyAgABJ3vGs35v1Lzpw547T9SzwZ66se1lZdrK+6WF/1sLbqYn3V4yq1lWUZVVVViIyMVCyJuJHHzWxoNBpERUU5exgeKzAwkF8aKmJ91cPaqov1VRfrqx7WVl2sr3pcobbNzWiYqXrrWyIiIiIi6rgYNoiIiIiISBUMG9Qqer0e8+fPh16vd/ZQPBLrqx7WVl2sr7pYX/WwtupifdXjbrX1uAXiRERERETkGjizQUREREREqmDYICIiIiIiVTBsEBERERGRKhg2iIiIiIhIFQwbhEWLFmH48OEICAhAaGgopk2bhqKiomZfs3z5ckiSpGg+Pj4OGrF7WbBggU2t+vXr1+xrvvrqK/Tr1w8+Pj5ISEjA2rVrHTRa9xMbG2tTX0mSMGfOHLv9ee42bfPmzbjrrrsQGRkJSZKwatUqxfOyLOOVV15BREQEfH19MX78eBw9erTF93377bcRGxsLHx8fpKamYseOHSp9AtfWXH0NBgOef/55JCQkoFOnToiMjMQjjzyC8+fPN/ueN/P94olaOndnzZplU6fJkye3+L48d4WW6mvvO1iSJCxevLjJ9+S5K7Tmb7C6ujrMmTMHXbt2hb+/P+69916UlZU1+743+32tBoYNwqZNmzBnzhxs374dmZmZMBgMmDhxImpqapp9XWBgIEpKSizt1KlTDhqx+xk4cKCiVjk5OU323bZtG2bMmIHHHnsMu3fvxrRp0zBt2jQcOHDAgSN2Hzt37lTUNjMzEwBw3333Nfkanrv21dTUIDExEW+//bbd519//XX8/e9/x9KlS5GXl4dO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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAGgCAYAAAC0SSBAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAmXklEQVR4nO3de3hU9aHu8XeSTCaZgQQyCRAgF5mIgEihgmCtCt1G7lgQFFIVBKndrba1re6zPXuXxHO2HrXWY7Xang3iLREOEq1FEeKtWzeo4BU33rgJSLiFMAlMGAay9h+YqXGSHytAZjKZ7+d58jzOym/WvDPEvFlr/dZaDsuyLAEA0IqkWAcAAHRsFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQF0M4ee+wxORwObdu2rV1fZ/To0Ro9enS7vgYSE0WRIDZs2KDp06eroKBAaWlp6tOnj4qLi/Xggw9GjD1+/LgWL16s0aNHKysrSy6XS4WFhbr++uu1fv36Ftf/8MMPy+FwaOTIka1mcDgczb4yMjJ06aWX6oUXXmj1OQcPHlRaWpocDoc++eQT2++36Zezw+HQm2++GfF9y7KUl5cnh8OhSZMm2V5vZxQIBFRaWqrXX3891lHQQVEUCWDNmjUaPny4PvzwQ82fP18PPfSQbrjhBiUlJemBBx5oNrahoUGTJk3S3LlzZVmWbr/9dj3yyCO67rrrtHbtWl1wwQXauXNnxGuUl5ersLBQ77zzjjZt2tRqluLiYj355JN64okndNttt2nTpk2aPHmyVq1a1eL4ZcuWyeFwqFevXiovL2/ze09LS1NFRUXE8r/97W/auXOnXC5Xm9fZVtdee60aGhpUUFDQ7q91KgKBgMrKyigKtM5CpzdhwgQrJyfHqq2tjfjenj17mj3+2c9+Zkmy7r///oixx44ds+69915rx44dzZZv2bLFkmRVVlZaOTk5VmlpaYs5JFk/+9nPmi3buHGjJckaP358i8+55JJLrGnTplm33HKLddZZZxneZXOLFy+2JFnTpk2zsrOzrVAo1Oz78+fPt84//3yroKDAmjhxou31dmSXXnqpdemll7b5efv27bMkWQsWLDijeQ4dOnRG14fYYYsiAWzevFnnnnuuunXrFvG9Hj16hP97586d+vOf/6zi4mL98pe/jBibnJys3/zmN+rbt2+z5eXl5erevbsmTpyo6dOnt+kv/4EDByo7O1ubN2+O+N727dv1xhtvaObMmZo5c6a2bt2qNWvW2F63JM2aNUs1NTWqqqoKLzt69KieeeYZlZSUtPic3/3ud/re974nr9er9PR0nX/++XrmmWcixjkcDt1000167rnnNHjwYLlcLp177rl66aWXmo1r6RhFYWGhJk2apNWrV2vo0KFKS0vToEGDVFlZ2ey5paWlcjgcEa9t57jH0aNH9dvf/lbnn3++MjMz5fF4dPHFF+u1114Lj9m2bZtycnIkSWVlZeHddaWlpeExr776qi6++GJ5PB5169ZNV1xxRcRuwKacGzduVElJibp3767vf//7rWZDfKEoEkBBQYHeffddffzxx8ZxK1eu1LFjx3Tttde2af3l5eWaNm2aUlNTNWvWLH3xxRdat26dref6/X7V1taqe/fuEd97+umn5fF4NGnSJF1wwQXy+Xxt3v1UWFioCy+8UE8//XR42cqVK+X3+zVz5swWn/PAAw9o2LBhuuOOO3TnnXcqJSVFM2bMaPFYyptvvqmf/vSnmjlzpu655x4dOXJEV155pWpqak6a7YsvvtDVV1+t8ePH66677gq/zjdL7XTU1dVp4cKFGj16tO6++26VlpZq3759Gjt2rD744ANJUk5Ojh555BFJ0tSpU/Xkk0/qySef1LRp0yRJL7/8ssaOHau9e/eqtLRUv/rVr7RmzRpddNFFLZbUjBkzFAgEdOedd2r+/Pln5H2gA4j1Jg3a3+rVq63k5GQrOTnZuvDCC63bbrvNWrVqlXX06NFm42655RZLkvX+++/bXvf69estSVZVVZVlWZbV2Nho9e3b1/rFL34RMVaSNW/ePGvfvn3W3r17rfXr11vjxo2zJFn33ntvxPjzzjvP+tGPfhR+fPvtt7e4G6klTbue1q1bZz300ENW165drUAgYFmWZc2YMcMaM2aMZVlWi7uemsY1OXr0qDV48GDrBz/4QcT7SU1NtTZt2hRe9uGHH1qSrAcffDAiy9atW8PLCgoKLEnW8uXLw8v8fr+Vm5trDRs2LLxswYIFVkv/m7a0zm/vejp27JgVDAabPa+2ttbq2bOnNXfu3PAy066noUOHWj169LBqamqavcekpCTruuuui8g5a9asiHUg/rFFkQCKi4u1du1aTZkyRR9++KHuuecejR07Vn369NHzzz8fHldXVydJ6tq1q+11l5eXq2fPnhozZoykE7tjrr76ai1ZskTHjx+PGL9o0SLl5OSoR48eGj58uF555RXddttt+tWvftVs3EcffaQNGzZo1qxZ4WWzZs3S/v37Wz3w3ZqrrrpKDQ0NWrFiherr67VixYpWdztJUnp6evi/a2tr5ff7dfHFF+u9996LGHvZZZfJ5/OFHw8ZMkQZGRnasmXLSXP17t1bU6dODT/OyMjQddddp/fff1+7d++2+/ZalZycrNTUVElSY2OjDhw4oGPHjmn48OEtvpdvq66u1gcffKA5c+YoKysrvHzIkCEqLi7Wiy++GPGcn/zkJ6edGx0PRZEgRowYocrKStXW1uqdd97RP//zP6u+vl7Tp0/Xxo0bJZ34RSVJ9fX1ttZ5/PhxLVmyRGPGjNHWrVu1adMmbdq0SSNHjtSePXv0yiuvRDzniiuuUFVVlV544YXwfu1AIKCkpOY/ik899ZQ8Ho/69esXXm9aWpoKCwvbvPspJydHl112mSoqKlRZWanjx49r+vTprY5fsWKFRo0apbS0NGVlZYV3z/j9/oix+fn5Ecu6d++u2trak+YqKiqKOP7Qv39/STpj51w8/vjjGjJkiNLS0uT1epWTk6MXXnihxffybV9++aUk6Zxzzon43sCBA7V//34dPny42fKzzjrrjORGx5IS6wCIrtTUVI0YMUIjRoxQ//79df3112vZsmVasGCBBgwYIOnEORdDhw496bpeffVVVVdXa8mSJVqyZEnE98vLy3X55Zc3W9a3b19ddtllkqQJEyYoOztbN910k8aMGRPeL25Zlp5++mkdPnxYgwYNiljv3r17dejQIXXp0sX2+y4pKdH8+fO1e/dujR8/vsUD+5L0xhtvaMqUKbrkkkv08MMPKzc3V06nU4sXL25xmm1ycnKL67HO0B2GWzqQLanFrbVve+qppzRnzhz98Ic/1K233qoePXooOTlZd911V4uTB86Eb26NofOgKBLY8OHDJZ3YxSBJ48ePV3Jysp566ilbB7TLy8vVo0cP/fGPf4z4XmVlpZ599ln96U9/Mv7yuPHGG3X//ffrX/7lXzR16lQ5HI7wOQ533HGHBg4c2Gx8bW2tfvzjH+u5557TNddcY/u9Tp06VTfeeKPeeustLV26tNVxy5cvV1pamlatWtXsHIvFixfbfi27Nm3aJMuympXB559/LunEQXhJ4YP8Bw8ebFZuTX/tmzzzzDPq16+fKisrm73GggULmo1rrYyazvv47LPPIr736aefKjs7Wx6P56Q5EP/Y9ZQAXnvttRb/wm3ax9y0ayEvL0/z58/X6tWrWzxju7GxUffdd5927typhoYGVVZWatKkSZo+fXrE10033aT6+vpmx0BakpKSol//+tf65JNP9Je//EXS33c73XrrrRHrnT9/vs4+++w2737q0qWLHnnkEZWWlmry5MmtjktOTpbD4Wj2F/u2bdv03HPPten17Ni1a5eeffbZ8OO6ujo98cQTGjp0qHr16iVJ4eMf//Ef/xEed/jwYT3++OMnXX/T1s43/+3ffvttrV27ttk4t9st6UQZfVNubq6GDh2qxx9/vNn3Pv74Y61evVoTJkyw8S7RGbBFkQBuvvlmBQIBTZ06VQMGDNDRo0e1Zs0aLV26NHxpjib33XefNm/erJ///OfhIujevbu2b9+uZcuW6dNPP9XMmTP1/PPPq76+XlOmTGnxNUeNGqWcnByVl5fr6quvNuabM2eOfvvb3+ruu+/W+PHjtXz5chUXFystLa3F8VOmTNEDDzygvXv3NjsP5GRmz5590jETJ07U73//e40bN04lJSXau3ev/vjHP6qoqEgfffSR7deyo3///po3b57WrVunnj176tFHH9WePXuabb1cfvnlys/P17x583TrrbcqOTlZjz76qHJycrR9+3bj+idNmqTKykpNnTpVEydO1NatW/WnP/1JgwYN0qFDh8Lj0tPTNWjQIC1dulT9+/dXVlaWBg8erMGDB+vee+/V+PHjdeGFF2revHlqaGjQgw8+qMzMzGbnWqCTi+mcK0TFypUrrblz51oDBgywunTpYqWmplpFRUXWzTffHHFmtmWdmFa5cOFC6+KLL7YyMzMtp9NpFRQUWNdff3146uzkyZOttLQ06/Dhw62+7pw5cyyn02nt37/fsqyWz8xuUlpaGp4uKslatGhRq+t9/fXXLUnWAw880OqYb06PNWlpeuyiRYuss88+23K5XNaAAQOsxYsXtzhNtbX3U1BQYM2ePTsiy7enx06cONFatWqVNWTIkPBrLVu2LGJ97777rjVy5EgrNTXVys/Pt37/+9/bmh7b2Nho3XnnnVZBQYHlcrmsYcOGWStWrLBmz55tFRQUNHuNNWvWWOeff76VmpoaMVX25Zdfti666CIrPT3dysjIsCZPnmxt3Lix2fObPp99+/ZF5Ef8c1jWGTrqBsC2wsJCDR48WCtWrIh1FOCkOEYBADCiKAAARhQFAMCIYxQAACO2KAAARhQFAMDI9gl3wWBQwWAw/LjpapRer7fVSwAAADomy7JUX1+v3r17R1yU89tsF8Vdd92lsrKy0w4HAOg4duzYEXHXym+zfTD721sUfr9f+fn5+vzzz5tdq76jC4VCeu211zRmzBg5nc5Yx7GN3NEXr9nJHV3xmvvAgQPq37+/Dh48qMzMTONY21sULper2dU0m2RlZcnr9bY9ZYyEQiG53W55vd64+kcld/TFa3ZyR1e85m5i59ABB7MBAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAAGFEUAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMAoxe7AYDCoYDAYflxXVydJCoVCCoVCZz5ZO2nKGk+ZJXLHQrxmJ3d0xXtuOxyWZVl2BpaWlqqsrCxieUVFhdxut/10AICYCwQCKikpkd/vV0ZGhnGs7aJoaYsiLy9P1dXV8nq9p5c4ikKhkKqqqlRcXCyn0xnrOLaRO/riNTu5oytec9fU1Cg3N9dWUdje9eRyueRyuSKWO53OuPpwmpA7uuI1txS/2ckdXfGWuy1ZOZgNADCiKAAARhQFAMCIogAAGFEUAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAS3O76I3pne6121x+JdRR0UCmxDgAgdpZv2KWyqs/UaElJDmlB8Tm68rzesY6FDoYtCiBB7a4/Ei4JSWq0pLKqz9iyQASKAkhQ22sbwiXRpNGSth9siE0gdFgUBZCg8runK8nRfFmSQ8rvlh6bQOiwKAogQfXqmqYFxeeoqSuajlH06poW01zoeDiYDSSwK8/rrW0HAlr64Vf6y5wLlJvB1gQisUUBJLihvTMVCDUqJYlfB2gZPxlAgvN5PZKkzTWHY5wEHRVFASS4vt3S5Ex2aFNNINZR0EFRFECCS0lK0llZbrYo0CqKAoB8WR5toSjQCooCgIqyPdpUc1iWZZ18MBIORQFA/bwe+Y8cU00gFOso6IAoCgAqYuYTDGyfcBcMBhUMBsOP6+rqJEmhUEihUPz8FdKUNZ4yS+SOhXjNfiq5e3lSlJLk0Od76/Td3C7tFc0okT7vjqAteR2WzZ2SpaWlKisri1heUVEht9ttPx2ADukP2z0qSDuuK3pw9dhEEAgEVFJSIr/fr4yMDONY20XR0hZFXl6eqqur5fV6Ty9xFIVCIVVVVam4uFhOpzPWcWwjd/TFa/ZTzf1PKz/V/sNHtWj6kHZM17pE+7xjraamRrm5ubaKwvauJ5fLJZfLFbHc6XTG1YfThNzRFa+5pfjN3tbcZ+d00bqdX8X8vSbK5x1rbcnKwWwAkk4c0K5tCKkmcDTWUdDBUBQAJJ2YIisx8wmRKAoAkk7csCglyaHN+ykKNEdRAJAkOZOTVNjdrc1cHBDfQlEACPN5T1zKA/gmigJAmM/r5uKAiEBRAAjzeT060BDSAWY+4RsoCgBhRdnMfEIkigJAWHjmEwe08Q0UBYAwZ3KSCrqns0WBZigKAM34vB6KAs1QFACaYYosvo2iANCMz+vRgUBItcx8wtcoCgDN+Lwn7i+z+QAHtHECRQGgmcLubiU7HBynQBhFAaAZZ3KS8pn5hG+gKABEKGLmE76BogAQweflKrL4O4oCQASf16P9h4/K3xCKdRR0ABQFgAg+7naHb6AoAERomvnEiXeQKAoALUhNSVJ+t3SOU0ASRQGgFf28bnY9QRJFAaAVRdlMkcUJFAWAFvmyPNp3+Kj8R5j5lOgoCgAt8nG3O3yNogDQosLu6UpySFs4oJ3wKAoALXKlJCuvWzpTZEFRAGgdd7uDRFEAMKAoIFEUAAyKvB7tPXRUdcx8SmgUBYBWNd3tbgt3u0toFAWAVhV2dyvJIW3az+6nREZRAGhVmjNZfTPTteUARZHIKAoARj6vhy2KBEdRADDibnegKAAY+bwe7TkUVH3wWKyjIEYoCgBGRV/f7W4L51MkLIoCgFFhllsOiUt5JDCKAoBRujNZfbulc3HABEZRADgpXxZ3u0tkFAWAk/Jle9j1lMBS7A4MBoMKBoPhx3V1dZKkUCikUCh+rgPTlDWeMkvkjoV4zd4euQsz07S7PqjaQw3q4rL9a6NN+Lyjqy15HZZlWXYGlpaWqqysLGJ5RUWF3G63/XQA4s5XR5L08M4u+knfw8pLOx7rODgDAoGASkpK5Pf7lZGRYRxruyha2qLIy8tTdXW1vF7v6SWOolAopKqqKhUXF8vpdMY6jm3kjr54zd4euRtCx3XRI2u14LKzdcWgnmdknd/G5x1dNTU1ys3NtVUUtrchXS6XXC5XxHKn0xlXH04TckdXvOaW4jf7mcztdDrVJzNNW2uPtPtnwecdHW3JysFsALb4vB4uDpigKAoAtpy42x3nUiQiigKALT6vR7vqjihwlGs+JRqKAoAtTXe728zd7hIORQHAln5ZXxcF96ZIOBQFAFvcqSnqk5HGpTwSEEUBwLZ+XjeX8khAFAUA24q8Hq4im4AoCgC2+bwefVV3RIEQl/FIJBQFANt82dztLhFRFABsC898YvdTQqEoANjmSU1RblcXM58SDEUBoE2Ksj0URYKhKAC0Sb8siiLRUBQA2qQo26Ov/Mx8SiQUBYA28XndsiRt5ZpPCYOiANAmPu+JKbLsfkocFAWANvGkpqgXM58SCkUBoM18Xg9XkU0gFAWANivyergvRQKhKAC0WT+vWzsPNqiBmU8JgaIA0GZFXo8sSdvYqkgIFAWANuv39cwn7k2RGCgKAG3W1ZWinl2Y+ZQoKAoAp8TndXMTowRBUQA4JT6vh11PCYKiAHBKfF6PdvobdISZT50eRQHglPi8HjVa0rZadj91dhQFgFPi83K3u0RBUQA4JRlpTvXokspxigRAUQA4ZT4vNzFKBBQFgFNGUSQGigLAKSvyerTjYIOCx5j51JlRFABOWT+v++uZTw2xjoJ2RFEAOGXhu91xb4pOjaIAcMoy05zK8aRq8wGKojOjKACcFp/Xo01sUXRqFAWA0+Lzerg4YCdHUQA4LT6vW9sPNujoscZYR0E7oSgAnJYir0fHLYtrPnViFAXQij31QW0JJGtPfTDWUTq0prvdceJd50VRAC1YvmGXJjy2Tot2eTThsXVavmFXrCN1WN3SnfK6UymKTizF7sBgMKhg8O9/WdXV1UmSQqGQQqHQmU/WTpqyxlNmidzRtKc+qLKqz9RonXjcaEllVZ9pZJ8M9ezqim04G2Lxmfuy0vXFvkOn9Zrx+LMixX9uOxyWZVl2BpaWlqqsrCxieUVFhdxut/10QAe3JZCsRbs8Ecvn9T6sfm4uVdGSv+5L0+ZAsn5ZwFZFvAgEAiopKZHf71dGRoZxrO2iaGmLIi8vT9XV1fJ6vaeXOIpCoZCqqqpUXFwsp9MZ6zi2kTt69tQHNeGxdeEtiibXDuutH1+Qry4u2xviMRGLz3zZhmrd/fpmrf3p9+RMPrU92vH4syLFb+6amhrl5ubaKgrbP/Eul0suV+Rmt9PpjKsPpwm5oyuecvfNcmpB8Tnh3U9JDumCvO5a+tFu/eWTvbp+eL5KhvWRJ7VjF0Y0P/P+PTJ03JK+OhTS2dldTmtd8fSz8k3xlrstWTv2TzoQI1ee11sj+2Ro2arXNWPsaPXN6qI99UEteudLPbx2q554d4euH5GvmUP7yO1MjnXcmCsKz3wKnHZRoONh1hPQip5dXernPh4+gN2zq0u3/0N/vTh3lIr75+gPb27RuIVr9cS7O3QklNjHLrqlO5XldnIpj06KogDaKDcjTb+97By9MHekxviydd/fNmvcordU/t7OhL4vg8/r0RYuDtgpURTAKeqTma6yywfor3NH6qLCLN39+heasOhtLfngq4S8nEURd7vrtCgK4DTld0vXv40bqOfnjNTwvG76t1c+18RH39IzH+1S6HjiFIbP69GXtQ0J9Z4TBUUBnCGFWW7dPWGQnptzgb7TO1NlVZ9p8uK39ezH1TrW2Pl/efq8bh1rtLT9IHe762woCuAM83k9+t2kc7X8uhEa2KOr/nXVp5qy+B09v3G3jn/75IxOpOludxzQ7nwoCqCd9M/povunDNYz1w5Xkdej21d+oh8+9o5e/GRPpyyMLHeqstKdHKfohCgKoJ0N6NFVf/jheVp6zXDldU/XbS9u1LQn3tGqz/aq0d6FEeJGPw5od0oUBRAl5/bsqoenDlFFyXfVq2uafr3iv3TlE+v08hf7ZPNKOh2ez+vWZu521+lQFECUDcnN1J+v/I6emDlMXneqfvn8x7rqqfV6ffP+uC+MIq9H22oDzHzqZCgKIEa+26ebFs4YqsVXDZUnNVk3PbdBM8vf1Rtba+K2MHxeDzOfOiGKAoixEXndtfiqYVo0Y6icyQ79Y+VHuubp97Rm24G4Kwxf9omZT1s4TtGpUBRAB+BwODQyv7uenPld/fnK78iS9OPlH2r20vf1zvbaWMezLSvdqW5pTm2iKDoVigLoQBwOhy4qzFL5rO/q4alDdORYo+Yu+0Bz///7enfnwVjHOymHw6GibA5odzYUBdABORwOXdLPq6U/Ol8PXnGe/EeOafbS9zX/mQ/0wS5/rOMZMUW286EogA7M4XBoTFG2ll07XPdPGaz9h4/qmqff0z9WfqgNu+tiHa9FviyPth4IJMRlSxIFRQHEgSSHQ8Vn52j5dSP0u0nn6iv/Ec0qf1c3PfuRPtlTH+t4zRRlfz3zqZaZT50FRQHEkSSHQ+PO6aFnZ1+guycM0rbagGY8tV6/+MsGfbbvUKzjSTpx0p0kbT7AcYrOgluhAnEoOcmhiQN7auw5OXrhk716ZO1WXfnEOo3tn6P5I/rGNJvXnarMtJQTU2TPzolpFpwZFAUQx1KSknTFub00YUAP/XXjHv35rW2aUf6+zuuSroEHAurfMzPqmRwOh3xeD1eR7UTY9QR0As7kJE07L1cr5o7U//xBkb48kqzp5e/pf7y4UV/WRn8XkM/r0WZui9ppsEUBdCLO5CRdObiXnF++pyN5w7Ro/Q6t/HSvJg/qqRtHFSqvW3pUcvi8Hj33Xydu2JSSxN+j8Y5/QaATSnFIVw3J1cp5o3Tr6CK9sfWAJi9+W6WrP9WuuiPt/vpFXrdCxy3tPNj+r4X2R1EAnZgrJVnXfLevXrphlG65uJ9e3bRfExa9pf/18mfaXd9+v8TDd7vjxLtOgaIAEkC6M1mzh+frpfkX6ucXnaVVn+3T+EVv6c5XP9feQ8Ez/nrZnlRluFI4Q7uT4BgFkEDczmTNvaBAVw/to/L3d+qx9Tu0fEO1rv5Ob80dUaBsT+oZeZ2mmU9buOZTp8AWBZCAPKkp+vHIQq264ULNG5Gvyg3VGrdwre772yYdCBw9I6/h87rZ9dRJUBRAAuvqStFPv3eWVs2/ULOH52nph7s0duFb+r9vbNbBhtBprduXfeKaT8cb4+ueGohEUQBQZppTN1/UT6vnX6iSYX1U/v5XGrtwrR76zy3yHzm1wvBleXT0eKN2+rnmU7yjKACEdUt36paLfXrphlGaMaS3Hlu/Q+MWvqVH1m5VffBYm9ZV9PXd7jigHf8oCgARvO5U/ebSIr10wyj98Nxe+ve3t2vswrX6f29v0+Gj9gojx5Oqrq4UjlN0AhQFgFZle1z6pzFn66UbRmnSgJ56ZO02jf33t/ToO18qEDpufK7D4VC/LO521xlQFABOqkcXl27/h/56ce4ojT0nR3/4z60at3CtHl+/XQ2GwijK9py4iiziGkUBwLbcjDT962Xn6MV5o/QDX7buf2OLxi96S0+9t1PBY5GF4fN6tIWZT3GPogDQZr0z0lR6+QD99fqR+n5hlu55/QtNWPS2lnzwlY4e+/stUH1ej4LHGvVVFK4vhfZDUQA4ZXnd0vW/xw3UX68fqRF53XTnq59rwqNvadlHuxQ63hi+293KT/a067Wl0L4oCgCnraC7W/9nwiA9O/sCDeudqTuqPtOkR9/WH97cIkl6cM1WXf7va7V8w64YJ8WpoCgAnDE+r0f3TjpXlbNHyOd16/mNe8Lfa7Sksqr2vWot2gdFAeCMOzu7i+YMz49Y3mhJ2w9ypna8oSgAtIv87ulKcjRfluSQ8qN0lz2cORQFgHbRq2uaFhSfEy6LJIe0oPgc9eqaFttgaDPuRwGg3Vx5Xm9dVJil7QcblN8tnZKIU7aLIhgMKhj8+52w6urqJEmhUEih0OldjjiamrLGU2aJ3LEQr9k7Wm5vWrK8vbpIMmfqaLntivfcdjgsy7J1ymRpaanKysoilldUVMjtdttPBwCIuUAgoJKSEvn9fmVkZBjH2i6KlrYo8vLyVF1dLa/Xe3qJoygUCqmqqkrFxcVyOp2xjmMbuaMvXrOTO7riNXdNTY1yc3NtFYXtXU8ul0sulytiudPpjKsPpwm5oytec0vxm53c0RVvuduSlVlPAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAAGFEUAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBglGJ3YDAYVDAYDD+uq6uTJIVCIYVCoTOfrJ00ZY2nzBK5YyFes5M7uuI9tx0Oy7IsOwNLS0tVVlYWsbyiokJut9t+OgBAzAUCAZWUlMjv9ysjI8M41nZRtLRFkZeXp+rqanm93tNLHEWhUEhVVVUqLi6W0+mMdRzbyB198Zqd3NEVr7lramqUm5trqyhs73pyuVxyuVwRy51OZ1x9OE3IHV3xmluK3+zkjq54y92WrBzMBgAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAAGFEUAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAAGFEUAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAoxS7A4PBoILBYPhxXV2dJCkUCikUCp35ZO2kKWs8ZZbIHQvxmp3c0RXvue1wWJZl2RlYWlqqsrKyiOUVFRVyu9320wEAYi4QCKikpER+v18ZGRnGsbaLoqUtiry8PFVXV8vr9Z5e4igKhUKqqqpScXGxnE5nrOPYRu7oi9fs5I6ueM1dU1Oj3NxcW0Vhe9eTy+WSy+WKWO50OuPqw2lC7uiK19xS/GYnd3TFW+62ZOVgNgDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAAGFEUAAAjigIAYERRAACMKAoAgBFFAQAwoigAAEYUBQDAiKIAABhRFAAAI4oCAGBEUQAAjCgKAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIwoCgCAEUUBADCiKAAARhQFAMCIogAAGKXYHRgMBhUMBsOP/X6/JOnAgQNnPlU7CoVCCgQCqqmpkdPpjHUc28gdffGandzRFa+5m353W5Z18sGWTQsWLLAk8cUXX3zx1Ym+Nm/efNLf/w7LVp1EblEcPHhQBQUF2r59uzIzM+2sokOoq6tTXl6eduzYoYyMjFjHsY3c0Rev2ckdXfGa2+/3Kz8/X7W1terWrZtxrO1dTy6XSy6XK2J5ZmZmXH04TTIyMsgdRfGaW4rf7OSOrnjNnZR08kPVHMwGABhRFAAAo1MuCpfLpQULFrS4O6ojI3d0xWtuKX6zkzu6EiG37YPZAIDExK4nAIARRQEAMKIoAABGFAUAwIiiAAAYURQAACOKAgBgRFEAAIz+G3zViIN1IZzBAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import control as ct\n", + "import sympy as sym\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "import matplotlib.animation as animation\n", + "import mpl_toolkits.mplot3d.axes3d as p3\n", + "\n", + "jeff,beff,ks = 5,3,1\n", + "kd,kp = 1,0.3\n", + "dyn = ct.tf([1],[jeff,beff])\n", + "stiff = ct.tf([ks],[1])\n", + "h1 = ct.series(stiff,dyn)\n", + "f1 = ct.tf([kd],[1])\n", + "h2 = ct.feedback(h1,f1,sign=-1)\n", + "feed_kp = ct.tf([kp],[1])\n", + "feed_s = ct.tf([1],[1,0])\n", + "h3 = ct.series(feed_kp,h2,feed_s)\n", + "\n", + "def inv_kin(ox,oy,oz):\n", + " s1,s2,s3,s4,s5,s6 = sym.symbols('s1,s2,s3,s4,s5,s6')\n", + " c1,c2,c3,c4,c5,c6 = sym.symbols('c1,c2,c3,c4,c5,c6')\n", + " d2,d3,d6 = 1,1,0.5\n", + " q1,q2,q3,q4,q5,q6 = pi/18,pi/18,pi/18,pi/18,pi/18,pi/18\n", + " r11,r21,r31,r41 = 0.16,0.16,0.16,ox\n", + " r12,r22,r32,r42 = 1.05,1.05,1.05,oy\n", + " r13,r23,r33,r43 = 1.45,1.45,1.45,oz\n", + " r14,r24,r34,r44 = 0,0,0,1\n", + " f_mat = [[r11,r12,r13,r14],[r21,r22,r23,r24],[r31,r32,r33,r34],[r41,r42,r43,r44]]\n", + " #print(f_mat)\n", + " #s3=0.5\n", + " eq1 = sym.Eq(d2*c1+d3*c2,ox)#sym.Eq(Function('cos')(s1)*Function('sin')(s2)*s3-Function('sin')(s1)*d2,0.16)#eq1 = sym.Eq((s1**2-1)**0.5*s2*s3-s1*d2,1)\n", + " eq2 = sym.Eq(d2*s1+d3*s2,oy)#sym.Eq(Function('sin')(s1)*Function('sin')(s2)*s3+Function('cos')(s1)*d2,1.05)\n", + " eq3 = sym.Eq(s3,oz)#sym.Eq(Function('cos')(s2)*s3,1.45)\n", + " eq4 = sym.Eq(c1**2+s1**2,1)\n", + " eq5 = sym.Eq(c2**2+s2**2,1)\n", + " result = sym.solve([eq1,eq2,eq3,eq4,eq5],s1,s2,s3,c1,c2)\n", + " print(result[0])\n", + " iq1 = sym.Eq(s2*c4+c2*s4,r21)\n", + " iq2 = sym.Eq(c2*c4+s2*s4,r11)\n", + " result1 = sym.solve([iq1,iq2],[s4,c4])\n", + " #print(result1)\n", + " print(\"Angle4=\"+str(atan(result1.get(s4))))\n", + " (s1,s2,s3,c1,c2)=result[0] #s3,\n", + " return (s1,s2,s3,result1.get(s4),c1,c2,result1.get(c4))\n", + "\n", + "def get_angles(p1,p2):\n", + " (p1s1,p1s2,p1s3,p1s4,p1c1,p1c2,p1c4) = inv_kin(p1[0],p1[1],p1[2])\n", + " (p2s1,p2s2,p2s3,p2s4,p2c1,p2c2,p2c4) = inv_kin(p2[0],p2[1],p2[2])\n", + " p1q1, p1q2 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2))\n", + " p2q1, p2q2 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2))\n", + " u = np.linspace(p1q1,p2q1,nt)# u = np.linspace(0,np.pi/6,nt)\n", + " return (p1q1,p1q2,p2q1,p2q2,float(p1s3),float(p2s3))\n", + "# %% Simulation :\n", + "\n", + "t0 = 1\n", + "t1 = 20\n", + "dt = 0.1\n", + "nt = int(t1 / dt ) + 1 # Number of points of sim time\n", + "t = np.linspace( t0 , t1 , nt )\n", + "# u = 3* np.ones( nt )\n", + "#end point 1\n", + "p1 = [0.16,1.05,1.65]\n", + "p2 = [0.63,1.14,1.45]\n", + "(p1q1,p1q2,p2q1,p2q2,p1s3,p2s3) = get_angles(p1,p2)\n", + "# (p1s1,p1s2,p1s3,p1c1,p1c2) = inv_kin(p1[0],p1[1],p1[2])\n", + "# (p2s1,p2s2,p2s3,p2c1,p2c2) = inv_kin(p2[0],p2[1],p2[2])\n", + "# p1q1, p1q2 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2))\n", + "# p2q1, p2q2 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2))\n", + "u = np.linspace(p1q1,p2q1,nt)# u = np.linspace(0,np.pi/6,nt)\n", + "v = np.linspace(p1q2,p2q2,nt)\n", + "w = np.linspace(p1s3,p2s3,nt)\n", + "# %% Simulation :\n", + "(t,x)=ct.forced_response(h3,t,u,X0=p1q1)\n", + "(t,y)=ct.forced_response(h3,t,v,X0=p1q2)\n", + "(t,z)=ct.forced_response(h3,t,w,X0=0)#t, y, x = ct.forced_response(h3 , t , u ,0)\n", + "# %% Plotting :\n", + "plt.close( 'all ')\n", + "fig_width_cm = 24\n", + "fig_height_cm = 18\n", + "plt . figure (1 , figsize =( fig_width_cm /2.54 , fig_height_cm /2.54))\n", + "plt . subplot (3 , 1 , 1)\n", + "plt.plot(t , x , 'blue')\n", + "plt . xlabel ( 't [ s ] ')\n", + "plt.grid()\n", + "plt.legend( labels =( 'q1' ,))\n", + "plt.subplot(3 , 1 , 2)\n", + "plt.plot(t , y , 'blue')\n", + "plt . xlabel ( 't [ s ] ')\n", + "plt.grid()\n", + "plt.legend( labels =( 'q2' ,))\n", + "plt.subplot(3 , 1 , 3)\n", + "plt.plot(t , z , 'blue')\n", + "plt.xlabel( 't [ s ]')\n", + "plt.grid()\n", + "plt.legend( labels =( 'd' ,))\n", + "plt.show()\n", + "#plt . savefig ( ’ sim_tf . pdf ’)\n", + "\n", + "x1_arr,y1_arr = cos(x),-sin(x)\n", + "x2_arr,y2_arr = (cos(x)+cos(y)),-(sin(x)+sin(y))\n", + "x3_arr,y3_arr = np.linspace(p1[0],p2[0],nt),np.linspace(p1[1],p2[1],nt)# cos(x)*sin(y)*z - sin(x),sin(x)*sin(y)*z + cos(x)#cos(z),sin(z)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(\n", + " 111, aspect=\"equal\", autoscale_on=True, xlim=(-2, 2), ylim=(-2, 2)\n", + ")\n", + "# ax = p3.Axes3D(fig)\n", + "ax.grid(alpha=1)\n", + "ax.set_title(\"SCARA Manipulator\")\n", + "ax.set_xticklabels([])\n", + "ax.set_yticklabels([])\n", + "(line, ) = ax.plot(\n", + " [], [], \".-\", lw=1, color=\"#2b8cbe\"\n", + ") \n", + "(line2, ) = ax.plot(\n", + " [], [], \".-\", lw=1, color='green'\n", + ") \n", + "# initialization function\n", + "def init():\n", + " line.set_data([], [])\n", + " return (line,)\n", + "\n", + "def animate(i):\n", + " x_points = [0, x1_arr[i], x3_arr[i]]#,x3_arr[i]\n", + " y_points = [0, y1_arr[i], y3_arr[i]]#,y3_arr[i]\n", + " # path_x.append(x2_arr[i])\n", + " # path_y.append(y2_arr[i])\n", + " line.set_data(x_points, y_points)\n", + " #line2.set_data(path_x,path_y)\n", + " \n", + " return (line,line2,)#line2\n", + "ani = animation.FuncAnimation(\n", + " fig, animate, init_func=init, frames=len(x1_arr)-1, interval=40, blit=True, repeat=False\n", + ")\n", + "## to save animation, uncomment the line below. Ensure ffmpeg is installed:\n", + "ani.save('Trajectory_SCARA.mp4', fps=30, extra_args=['-vcodec', 'libx264'])\n", + "\n", + "# show the animation\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q11 - Dynamics and Control of PUMA Manipulator" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(-0.474963330849782, -0.887864517260367, -0.936914622305684, 0.880005587680033, 0.460104986921479, -0.349558279132103)\n", + "Angle4=atan(4.0/(25.0*c2 + 25.0*s2))\n", + "(-0.932157359915714, -0.983400457462024, -0.779685316451944, 0.362053388818509, 0.181448450705654, -0.626171547827935)\n", + "Angle4=atan(4.0/(25.0*c2 + 25.0*s2))\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'p2c3' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mc:\\Users\\ishra\\Desktop\\ISHRATH\\IR Workspace\\Workshop Codes\\Assign_4.ipynb Cell 14\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 66\u001b[0m p1 \u001b[39m=\u001b[39m [\u001b[39m0.16\u001b[39m,\u001b[39m1.05\u001b[39m,\u001b[39m1.65\u001b[39m]\n\u001b[0;32m 67\u001b[0m p2 \u001b[39m=\u001b[39m [\u001b[39m0.63\u001b[39m,\u001b[39m1.14\u001b[39m,\u001b[39m1.45\u001b[39m]\n\u001b[1;32m---> 68\u001b[0m (p1q1,p1q2,p2q1,p2q2,p1s3,p2s3) \u001b[39m=\u001b[39m get_angles(p1,p2)\n\u001b[0;32m 69\u001b[0m \u001b[39m# (p1s1,p1s2,p1s3,p1c1,p1c2) = inv_kin(p1[0],p1[1],p1[2])\u001b[39;00m\n\u001b[0;32m 70\u001b[0m \u001b[39m# (p2s1,p2s2,p2s3,p2c1,p2c2) = inv_kin(p2[0],p2[1],p2[2])\u001b[39;00m\n\u001b[0;32m 71\u001b[0m \u001b[39m# p1q1, p1q2 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2))\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[39m# p2q1, p2q2 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2))\u001b[39;00m\n\u001b[0;32m 73\u001b[0m u \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mlinspace(p1q1,p2q1,nt)\u001b[39m# u = np.linspace(0,np.pi/6,nt)\u001b[39;00m\n", + "\u001b[1;32mc:\\Users\\ishra\\Desktop\\ISHRATH\\IR Workspace\\Workshop Codes\\Assign_4.ipynb Cell 14\u001b[0m in \u001b[0;36mget_angles\u001b[1;34m(p1, p2)\u001b[0m\n\u001b[0;32m 52\u001b[0m (p2s1,p2s2,p2s3,p2s4,p2c1,p2c2,p1c3,p2c4) \u001b[39m=\u001b[39m inv_kin(p2[\u001b[39m0\u001b[39m],p2[\u001b[39m1\u001b[39m],p2[\u001b[39m2\u001b[39m])\n\u001b[0;32m 53\u001b[0m p1q1, p1q2,p1q3 \u001b[39m=\u001b[39m \u001b[39mfloat\u001b[39m(atan(p1s1\u001b[39m/\u001b[39mp1c1)),\u001b[39mfloat\u001b[39m(atan(p1s2\u001b[39m/\u001b[39mp1c2)), \u001b[39mfloat\u001b[39m(atan(p1s3\u001b[39m/\u001b[39mp1c3))\n\u001b[1;32m---> 54\u001b[0m p2q1, p2q2,p2q3 \u001b[39m=\u001b[39m \u001b[39mfloat\u001b[39m(atan(p2s1\u001b[39m/\u001b[39mp2c1)),\u001b[39mfloat\u001b[39m(atan(p2s2\u001b[39m/\u001b[39mp2c2)), \u001b[39mfloat\u001b[39m(atan(p2s3\u001b[39m/\u001b[39mp2c3))\n\u001b[0;32m 55\u001b[0m u \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mlinspace(p1q1,p2q1,nt)\u001b[39m# u = np.linspace(0,np.pi/6,nt)\u001b[39;00m\n\u001b[0;32m 56\u001b[0m \u001b[39mreturn\u001b[39;00m (p1q1,p1q2,p2q1,p2q2,p1q3,p2q3)\n", + "\u001b[1;31mNameError\u001b[0m: name 'p2c3' is not defined" + ] + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import control as ct\n", + "import sympy as sym\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "import matplotlib.animation as animation\n", + "import mpl_toolkits.mplot3d.axes3d as p3\n", + "\n", + "jeff,beff,ks = 5,3,1\n", + "kd,kp = 1,0.3\n", + "dyn = ct.tf([1],[jeff,beff])\n", + "stiff = ct.tf([ks],[1])\n", + "h1 = ct.series(stiff,dyn)\n", + "f1 = ct.tf([kd],[1])\n", + "h2 = ct.feedback(h1,f1,sign=-1)\n", + "feed_kp = ct.tf([kp],[1])\n", + "feed_s = ct.tf([1],[1,0])\n", + "h3 = ct.series(feed_kp,h2,feed_s)\n", + "\n", + "def inv_kin(ox,oy,oz):\n", + " s1,s2,s3,s4,s5,s6 = sym.symbols('s1,s2,s3,s4,s5,s6')\n", + " c1,c2,c3,c4,c5,c6 = sym.symbols('c1,c2,c3,c4,c5,c6')\n", + "\n", + " d2,d3,d4 = 1,1,0.5\n", + " q1,q2,q3,q4,q5,q6 = pi/18,pi/18,pi/18,pi/18,pi/18,pi/18\n", + " r11,r21,r31,r41 = 0.16,0.16,0.16,ox\n", + " r12,r22,r32,r42 = 1.05,1.05,1.05,oy\n", + " r13,r23,r33,r43 = 1.45,1.45,1.45,oz\n", + " r14,r24,r34,r44 = 0,0,0,1\n", + " f_mat = [[r11,r12,r13,r14],[r21,r22,r23,r24],[r31,r32,r33,r34],[r41,r42,r43,r44]]\n", + " #print(f_mat)\n", + " #s3=0.5\n", + " eq1 = sym.Eq(c1*(d2*c2+d3*c3 + d4*s3)-d2*s1,ox)#sym.Eq(Function('cos')(s1)*Function('sin')(s2)*s3-Function('sin')(s1)*d2,0.16)#eq1 = sym.Eq((s1**2-1)**0.5*s2*s3-s1*d2,1)\n", + " eq2 = sym.Eq(s1*(d2*c2+d3*c3+d4*s3)+d2*c1,oy)#sym.Eq(Function('sin')(s1)*Function('sin')(s2)*s3+Function('cos')(s1)*d2,1.05)\n", + " eq3 = sym.Eq(d4*c3-d3*s3-d2*s2,oz)#sym.Eq(Function('cos')(s2)*s3,1.45)\n", + " eq4 = sym.Eq(c1**2+s1**2,1)\n", + " eq5 = sym.Eq(c2**2+s2**2,1)\n", + " eq6 = sym.Eq(c3**2+s3**2,1)\n", + " result = sym.solve([eq1,eq2,eq3,eq4,eq5,eq6],s1,s2,s3,c1,c2,c3)\n", + " print(result[0])\n", + " iq1 = sym.Eq(s2*c4+c2*s4,r21)\n", + " iq2 = sym.Eq(c2*c4+s2*s4,r11)\n", + " result1 = sym.solve([iq1,iq2],[s4,c4])\n", + " #print(result1)\n", + " print(\"Angle4=\"+str(atan(result1.get(s4))))\n", + " (s1,s2,s3,c1,c2,c3)=result[0] #s3,\n", + " return (s1,s2,s3,result1.get(s4),c1,c2,c3,result1.get(c4))\n", + "\n", + "def get_angles(p1,p2):\n", + " (p1s1,p1s2,p1s3,p1s4,p1c1,p1c2,p1c3,p1c4) = inv_kin(p1[0],p1[1],p1[2])\n", + " (p2s1,p2s2,p2s3,p2s4,p2c1,p2c2,p2c3,p2c4) = inv_kin(p2[0],p2[1],p2[2])\n", + " p1q1, p1q2,p1q3 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2)), float(atan(p1s3/p1c3))\n", + " p2q1, p2q2,p2q3 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2)), float(atan(p2s3/p2c3))\n", + " u = np.linspace(p1q1,p2q1,nt)# u = np.linspace(0,np.pi/6,nt)\n", + " return (p1q1,p1q2,p2q1,p2q2,p1q3,p2q3)\n", + "# %% Simulation :\n", + "\n", + "t0 = 1\n", + "t1 = 20\n", + "dt = 0.1\n", + "nt = int(t1 / dt ) + 1 # Number of points of sim time\n", + "t = np.linspace( t0 , t1 , nt )\n", + "# u = 3* np.ones( nt )\n", + "#end point 1\n", + "p1 = [0.16,1.05,1.65]\n", + "p2 = [0.63,1.14,1.45]\n", + "(p1q1,p1q2,p2q1,p2q2,p1s3,p2s3) = get_angles(p1,p2)\n", + "# (p1s1,p1s2,p1s3,p1c1,p1c2) = inv_kin(p1[0],p1[1],p1[2])\n", + "# (p2s1,p2s2,p2s3,p2c1,p2c2) = inv_kin(p2[0],p2[1],p2[2])\n", + "# p1q1, p1q2 = float(atan(p1s1/p1c1)),float(atan(p1s2/p1c2))\n", + "# p2q1, p2q2 = float(atan(p2s1/p2c1)),float(atan(p2s2/p2c2))\n", + "u = np.linspace(p1q1,p2q1,nt)# u = np.linspace(0,np.pi/6,nt)\n", + "v = np.linspace(p1q2,p2q2,nt)\n", + "w = np.linspace(p1s3,p2s3,nt)\n", + "# %% Simulation :\n", + "(t,x)=ct.forced_response(h3,t,u,X0=p1q1)\n", + "(t,y)=ct.forced_response(h3,t,v,X0=p1q2)\n", + "(t,z)=ct.forced_response(h3,t,w,X0=0)#t, y, x = ct.forced_response(h3 , t , u ,0)\n", + "# %% Plotting :\n", + "plt.close( 'all ')\n", + "fig_width_cm = 24\n", + "fig_height_cm = 18\n", + "plt . figure (1 , figsize =( fig_width_cm /2.54 , fig_height_cm /2.54))\n", + "plt . subplot (3 , 1 , 1)\n", + "plt.plot(t , x , 'blue')\n", + "plt . xlabel ( 't [ s ] ')\n", + "plt.grid()\n", + "plt.legend( labels =( 'q1' ,))\n", + "plt.subplot(3 , 1 , 2)\n", + "plt.plot(t , y , 'blue')\n", + "plt . xlabel ( 't [ s ] ')\n", + "plt.grid()\n", + "plt.legend( labels =( 'q2' ,))\n", + "plt.subplot(3 , 1 , 3)\n", + "plt.plot(t , z , 'blue')\n", + "plt.xlabel( 't [ s ]')\n", + "plt.grid()\n", + "plt.legend( labels =( 'd' ,))\n", + "plt.show()\n", + "#plt . savefig ( ’ sim_tf . pdf ’)\n", + "\n", + "x1_arr,y1_arr = cos(x),-sin(x)\n", + "x2_arr,y2_arr = (cos(x)+cos(y)),-(sin(x)+sin(y))\n", + "x3_arr,y3_arr = np.linspace(p1[0],p2[0],nt),np.linspace(p1[1],p2[1],nt)# cos(x)*sin(y)*z - sin(x),sin(x)*sin(y)*z + cos(x)#cos(z),sin(z)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(\n", + " 111, aspect=\"equal\", autoscale_on=True, xlim=(-2, 2), ylim=(-2, 2)\n", + ")\n", + "# ax = p3.Axes3D(fig)\n", + "ax.grid(alpha=1)\n", + "ax.set_title(\"PUMA Manipulator\")\n", + "ax.set_xticklabels([])\n", + "ax.set_yticklabels([])\n", + "(line, ) = ax.plot(\n", + " [], [], \".-\", lw=1, color=\"#2b8cbe\"\n", + ") \n", + "(line2, ) = ax.plot(\n", + " [], [], \".-\", lw=1, color='green'\n", + ") \n", + "# initialization function\n", + "def init():\n", + " line.set_data([], [])\n", + " return (line,)\n", + "\n", + "def animate(i):\n", + " x_points = [0, x1_arr[i], x3_arr[i]]#,x3_arr[i]\n", + " y_points = [0, y1_arr[i], y3_arr[i]]#,y3_arr[i]\n", + " # path_x.append(x2_arr[i])\n", + " # path_y.append(y2_arr[i])\n", + " line.set_data(x_points, y_points)\n", + " #line2.set_data(path_x,path_y)\n", + " \n", + " return (line,line2,)#line2\n", + "ani = animation.FuncAnimation(\n", + " fig, animate, init_func=init, frames=len(x1_arr)-1, interval=40, blit=True, repeat=False\n", + ")\n", + "## to save animation, uncomment the line below. Ensure ffmpeg is installed:\n", + "ani.save('Trajectory_PUMA.mp4', fps=30, extra_args=['-vcodec', 'libx264'])\n", + "\n", + "# show the animation\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.1 64-bit", + "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.9.1" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "f5b775166e527c2c4c8c7a313eadde439897f6893f91e429bbc029ec9a09e8d5" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Assign_6.ipynb b/Assign_6.ipynb new file mode 100644 index 0000000..205aa40 --- /dev/null +++ b/Assign_6.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(-0.999959411406060, -0.999959411406060, 0.00900974696901709, 0.00900974696901709)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "import matplotlib.pyplot as plt\n", + "\n", + "l1,l2,l3 = 1,1,1\n", + "r,x,y = 1.5,1.5,0\n", + "q3 = pi/3\n", + "s1,s2= sym.symbols('s1,s2')\n", + "c1,c2 = sym.symbols('c1,c2')\n", + "xw = x - l3*cos(q3)\n", + "yw = y - l3*sin(q3)\n", + "eq1 = sym.Eq((xw-l1*c1)**2 + (yw-l1*s1)**2,l2**2)\n", + "eq2 = sym.Eq((xw-l2*c2)**2 + (yw-l2*s2)**2,l1**2)\n", + "eq3 = sym.Eq(c1**2+s1**2,1)\n", + "eq4 = sym.Eq(c2**2+s2**2,1)\n", + "result = sym.solve([eq1,eq2,eq3,eq4],s1,s2,c1,c2)\n", + "(s1,s2,c1,c2) = result[1]\n", + "print(result[0])\n", + "q1,q2 = float(asin(s1)),float(asin(s2))\n", + "theta = np.linspace(0,2*pi,100)\n", + "thetak = np.append(theta[1:100],2*pi)\n", + "px,py = r*cos(theta), r*sin(theta)\n", + "pxk,pyk = r*cos(thetak), r*sin(thetak)\n", + "del_x,del_y = pxk-px,pyk-py\n", + "J = Matrix([[-l1*sin(q1), -l2*sin(q2), -l3*sin(q3)],[l1*cos(q1), l2*cos(q2), l3*cos(q3)]])\n", + "A = J*np.transpose(J)\n", + "qks = [Matrix([q1,q2])] #q3\n", + "for i in range (0,len(del_x)):\n", + " #print(Matrix.multiply(A.inv(),Matrix([del_x[i],del_y[i]])))\n", + " qk = qks[i] + Matrix.multiply(A.inv(),Matrix([del_x[i],del_y[i]]))\n", + " #print(qk)\n", + " qks.append(qk)\n", + " #print(l1*cos(float(qk[0]))+l2*cos(float(qk[1]))+l3*cos(float(q3)))\n", + " plt.scatter(l1*cos(float(qk[0]))+l2*cos(float(qk[1])),l1*sin(float(qk[0]))+l2*sin(float(qk[1])))#+l3*cos(float(q3))+l3*sin(q3)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q2 - Assuming SCARA Robot" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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o+LiYmVmZurGG2/U0aNHo1y584R6rlsdPHhQP/7xj5WbmxulSh3GgmuUlpZakqxt27a1vffXv/7V8ng81tGjR7vcd8eOHdb5559vlZeXW5Ks1157LcLVOltvzvWZXn75ZSshIcFqbm6ORJmOk5OTY/3Lv/xL29d+v98aPny4lZ+f3+H2d955p3XzzTe3e2/ixInWvffeG9E6nS7U83y2lpYWa8CAAdYf/vCHSJXoGj051y0tLdbkyZOt3/3ud9bdd99t3XbbbVGo1Fm48+IixcXFGjhwoMaPH9/2Xl5enrxer7Zu3drpfvX19fr+97+vp59+WhkZGdEo1fF6eq7PVltbq+TkZMXHu26ZsZA1NTXpo48+Ul5eXtt7Xq9XeXl5Ki4u7nCf4uLidttL0tSpUzvdHj07z2err69Xc3OzUlNTI1WmK/T0XP/85z9XWload2W7wE9MF6moqFBaWlq79+Lj45WamqqKiopO93vggQc0efJk3XbbbZEu0TV6eq7PVF1drcceeyzox3puV11dLb/fr/T09Hbvp6ena9++fR3uU1FR0eH2wf43iEU9Oc9n++lPf6rhw4efExzRXk/O9XvvvafnnntOH3/8cRQqdC7uvDjAQw89JI/H0+Ur2B86Z1u/fr3efvttrVy5MrxFO1Qkz/WZfD6fbr75ZmVnZ2vZsmW9LxyIkscff1xr167Va6+9pqSkJNPluEpdXZ3mzJmjgoICDRkyxHQ5tsadFwd48MEHdc8993S5zejRo5WRkXHOILCWlhbV1NR0+jjo7bff1oEDBzRw4MB2799+++3Kzc3Vu+++24vKnSeS57pVXV2dpk2bpgEDBui1115Tnz59elu2KwwZMkRxcXGqrKxs935lZWWn5zQjIyOk7dGz89xqxYoVevzxx/XWW29p3LhxkSzTFUI91wcOHNDBgwd1yy23tL0XCAQknb6zu3//fl144YWRLdopTA+6Qfi0DiL98MMP29578803uxxEWl5ebu3atavdS5L161//2vr73/8erdIdpyfn2rIsq7a21rrmmmus66+/3jp58mQ0SnWUnJwca9GiRW1f+/1+6/zzz+9ywO53v/vddu9NmjSJAbvdCPU8W5ZlPfHEE1ZycrJVXFwcjRJdI5Rz3dDQcM7P49tuu836zne+Y+3atctqbGyMZum2RnhxmWnTpllXXnmltXXrVuu9996zvvGNb1izZs1q+/sjR45Yl1xyibV169ZOP0PMNgpKqOe6trbWmjhxonXZZZdZn332mVVeXt72amlpMfVt2MratWutxMRE64UXXrBKS0uthQsXWgMHDrQqKiosy7KsOXPmWA899FDb9u+//74VHx9vrVixwtq7d6+1dOlSq0+fPtauXbtMfQuOEOp5fvzxx62EhATr1Vdfbffvtq6uztS34BihnuuzMduoY4QXlzl+/Lg1a9Ysq3///lZycrI1b968dj9gysrKLEnWO++80+lnEF6CE+q5fueddyxJHb7KysrMfBM29Jvf/MYaOXKklZCQYOXk5FgffPBB299df/311t13391u+5dfftm6+OKLrYSEBOvSSy+1/uu//ivKFTtTKOf5ggsu6PDf7dKlS6NfuAOF+m/6TISXjnksy7Ki/agKAACgp5htBAAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHIXwAgAAHOX/B7QXEWtHLXRgAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "import matplotlib.pyplot as plt\n", + "\n", + "l1,l2 = 0.25,0.25\n", + "m,mi = 0.8, 0.005\n", + "(Ax,Ay,Az),(Bx,By,Bz),(Cx,Cy,Cz),(Dx,Dy,Dz) = (0.45,0.075,0.1),(0.45,-0.075,0.1),(0.25,-0.075,0.1),(0.25,0.075,0.1)\n", + "q1 = np.linspace(0,2*pi,100)\n", + "q2 = np.linspace(0,2*pi,100)\n", + "pxs,pys =[],[]\n", + "for i in range(0,100):\n", + " for j in range(0,100):\n", + " px,py = l1*cos(q1[i])+l2*cos(q2[j]),l1*sin(q1[i])+l2*sin(q2[j])\n", + " pxs.append(px)\n", + " pys.append(py)\n", + "plt.scatter(pxs,pys)\n", + "plt.scatter([Ax,Bx,Cx,Dx],[Ay,By,Cy,Dy])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ldZ/F9V4a27ObJMns8mvTbu0I9qa1E/Mzru2G27r20HzIUHkKQwK8mtBBj3mj264qS4y2IBFf+iFsb3at/CoiLSFndnk94Z2bIvrusZgzf4CGHQKugbb8P9G9cfQlGjeAptIAoOCWoXHRnRCtUPgocsSseeHb3BZUhuGBJEkHnqiViE61IhFf+iFhIhgbw+FSHMYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKQqQLbQZrPBZrPV/ttisQAA7HY77Ha76ntrXm+qTms4L+3x17lxXtrj7bk5s11FCCFkCjMyMjB37tx6y7OysmAymeRHR0REXme1WpGeno6ysjKYzWbVWumgaGiPIiEhAUVFRU1uxG63Izs7G2lpaTAYDDKb0wTOS3v8dW6cl/Z4e24WiwVRUVFSQSF96MloNMJoNNZbbjAYpCfpTK2WcF7a469z47y0x1tzc2abPJlNRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoCZAttNhtsNlvtvy0WCwDAbrfDbrervrfm9abqtIbz0h5/nRvnpT3enpsz21WEEEKmMCMjA3Pnzq23PCsrCyaTSX50RETkdVarFenp6SgrK4PZbFatlQ6KhvYoEhISUFRU1ORG7HY7srOzkZaWBoPBILM5TeC8tMdf58Z5aY+352axWBAVFSUVFNKHnoxGI4xGY73lBoNBepLO1GoJ56U9/jo3zkt7vDU3Z7bJk9lERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqgJkC202G2w2W+2/LRYLAMBut8Nut6u+t+b1puq0hvPSHn+dG+elPd6emzPbVYQQQqYwIyMDc+fOrbc8KysLJpNJfnREROR1VqsV6enpKCsrg9lsVq2VDoqG9igSEhJQVFTU5Ebsdjuys7ORlpYGg8EgszlN4Ly0x1/nxnlpj7fnZrFYEBUVJRUU0oeejEYjjEZjveUGg0F6ks7UagnnpT3+OjfOS3u8NTdntsmT2UREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkikFBRESqGBRERKSKQUFERKoYFEREpIpBQUREqhgURESkKkC20GazwWaz1f67rKwMAFBcXAy73a76XrvdDqvVitOnT8NgMLg4VN/DeWmPv86N89Ieb8/tzJkzAAAhRNPFQtKcOXMEAH7xi1/84pcffeXn5zf5918RUnFSf4/C4XCguLgYbdu2haIoqu+1WCxISEhAfn4+zGazzOY0gfPSHn+dG+elPd6emxACZ86cQVxcHHQ69bMQ0oeejEYjjEZjnWURERFODcxsNvvdDxvgvLTIX+fGeWmPN+cWHh4uVceT2UREpIpBQUREqlokKIxGI+bMmVPv0JXWcV7a469z47y0R0tzkz6ZTURErRMPPRERkSoGBRERqWJQEBGRKgYFERGpYlAQEZEqBgUREaliUBARkSoGBRERqfr/4kEVg2PsYTkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.animation as animation\n", + "import sympy as sym\n", + "import numpy as np\n", + "from sympy import *\n", + "from numpy import pi, sin, cos, sqrt, absolute, arccos, arctan, sign\n", + "\n", + "l1,l2 = 0.25,0.25\n", + "m,mi = 0.8, 0.005\n", + "\n", + "def get_Inv(x_arr,y_arr):\n", + " s1,s2,s3 = sym.symbols('s1,s2,s3')\n", + " c1,c2,c3 = sym.symbols('c1,c2,c3')\n", + " q1s,q2s = [],[]\n", + " x1_arr,y1_arr = [],[]\n", + " for i in range(0,len(x_arr)):\n", + " eq1 = sym.Eq(l1*c1+l2*c2,x_arr[i])\n", + " eq2 = sym.Eq(l1*s1+l2*s2,y_arr[i])\n", + " eq3 = sym.Eq(c1**2+s1**2,1)\n", + " eq4 = sym.Eq(c2**2+s2**2,1)\n", + " res = sym.solve([eq1,eq2,eq3,eq4],s1,s2,c1,c2)\n", + " [res1,res2] = res\n", + " (s11,s22,c11,c22) = res1\n", + " q1s.append(atan(s11/c11))\n", + " q2s.append(atan(s22/c22))\n", + " x1_arr.append(l1*cos(float(atan(s11/c11))))\n", + " y1_arr.append(l1*sin(float(atan(s22/c22))))\n", + " return (q1s,q2s)\n", + "\n", + "#Linear interpolation\n", + "side1x = [0.40]*50\n", + "#print(side1x)\n", + "side1y = np.linspace(0.06,0.01,50).tolist()\n", + "#print(side1y)\n", + "side2x = np.linspace(0.40,0.35,50).tolist()\n", + "side2y = [0.01]*50\n", + "side3x = [0.35]*50\n", + "side3y = np.linspace(0.01,0.06,50).tolist()\n", + "side4x = np.linspace(0.35,0.40,50).tolist()\n", + "side4y = [0.06]*50\n", + "sides = [(side1x,side1y),(side2x,side2y),(side3x,side3y),(side4x,side4y)]\n", + "\n", + "x2_arr =[]\n", + "y2_arr = []\n", + "x1_arr,y1_arr =[],[]\n", + "for side in sides:\n", + " x,y = side[0],side[1]\n", + " #print(side[1])\n", + " x2_arr= x2_arr + x\n", + " y2_arr= y2_arr + y\n", + " #Inv Kinematics \n", + " q1s,q2s = get_Inv(x,y)\n", + " x1_arr = x1_arr + q1s\n", + " y1_arr = y1_arr + q2s\n", + "\n", + "# print(x1_arr)\n", + "# print(x2_arr)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(\n", + " 111, aspect=\"equal\", autoscale_on=False, xlim=(-0.8, 0.9), ylim=(-0.8, 0.9)\n", + ")\n", + "ax.grid(alpha=1)\n", + "ax.set_title(\"SCARA Trajectory\")\n", + "ax.set_xticklabels([])\n", + "ax.set_yticklabels([])\n", + "(line, ) = ax.plot(\n", + " [], [], \"o-\", lw=7, color=\"#2b8cbe\"\n", + ") \n", + "(line2, ) = ax.plot(\n", + " [], [], \".\", lw=2, color='green'\n", + ") \n", + "# initialization function\n", + "def init():\n", + " line.set_data([], [])\n", + " return (line,)\n", + "\n", + "path_x,path_y = [x2_arr[1]],[y2_arr[1]]\n", + "\n", + "# animation function\n", + "def animate(i):\n", + " x_points = [0, x1_arr[i], x2_arr[i]]\n", + " y_points = [0, y1_arr[i], y2_arr[i]]\n", + " path_x.append(x2_arr[i])\n", + " path_y.append(y2_arr[i])\n", + " line.set_data(x_points, y_points)\n", + " line2.set_data(path_x,path_y)\n", + " \n", + " return (line,line2,)#line2\n", + "ani = animation.FuncAnimation(\n", + " fig, animate, init_func=init, frames=len(x1_arr)-1, interval=40, blit=True, repeat=False\n", + ")\n", + "## to save animation, uncomment the line below. Ensure ffmpeg is installed:\n", + "ani.save('Trajectory_SCARA.mp4', fps=30, extra_args=['-vcodec', 'libx264'])\n", + "\n", + "# show the animation\n", + "plt.show()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.1 64-bit", + "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.9.1" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "f5b775166e527c2c4c8c7a313eadde439897f6893f91e429bbc029ec9a09e8d5" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Trajectory_PUMA.mp4 b/Trajectory_PUMA.mp4 new file mode 100644 index 0000000..fb6cf9f Binary files /dev/null and b/Trajectory_PUMA.mp4 differ diff --git a/Trajectory_SCARA.mp4 b/Trajectory_SCARA.mp4 new file mode 100644 index 0000000..1a60d7f Binary files /dev/null and b/Trajectory_SCARA.mp4 differ diff --git a/Trajectory_stanford.mp4 b/Trajectory_stanford.mp4 new file mode 100644 index 0000000..6dc439f Binary files /dev/null and b/Trajectory_stanford.mp4 differ