diff --git a/inv_kin_testing.ipynb b/inv_kin_testing.ipynb index 82ca540..8e75bae 100644 --- a/inv_kin_testing.ipynb +++ b/inv_kin_testing.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -28,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -52,15 +52,14 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "flip\n", - "[62.18186071534606, -126.63734509021032, 142.6959710408549, -106.0586259506446]\n" + "[-243.619306486927, -123.2097721836616, 140.34764917140853, -107.13787698774695, -90.0, 90.0]\n" ] } ], @@ -77,28 +76,29 @@ " # Return angle\n", " return normalized_theta\n", "\n", - "def get_joints_from_xyz_rel(x, y, z, rx=0, ry=0, rz=0, tool_offset=(0.145, 0, 0.14), initial_guess = (math.pi/2, math.pi/2, 0)):\n", + "def get_joints_from_xyz_rel(x, y, z, rx=0, ry=-math.pi/2, rz=0, initial_guess = (math.pi/2, math.pi/2, 0)):\n", " # Get limbs and offsets\n", - " offset_x, offset_y, offset_z = tool_offset\n", - " l_bs, l1, l2, l3 = (0.14, .422864, .359041, .15)\n", - "\n", + " offset_x, offset_y, offset_z = (0, 0, 0.14) # Tool offset\n", + " l_bs, l1, l2, l3, l_wt = (0.1333, .425, .39225, .1267, .0997) # Limb lengths\n", + " #l3=0.15\n", + " \n", " # Calculate base angle and r relative to shoulder joint\n", " def calculate_theta(x, y, a):\n", " # Calculate if we need the + or - in our equations\n", - " if (x>-a and y>=0) or (x>a and y<0):\n", - " print('no flip')\n", + " if (x>a and y>=0) or (x>-a and y<0):\n", " flip = 1\n", - " elif (x<-a and y>=0) or (x=0) or (x<-a and y<0):\n", " flip = -1\n", " else: \n", - " print('critical')\n", " # Critical section (x=a, or x=-a). Infinite slope\n", " # Return 0 or 180 depending on sign\n", - " return math.atan2(y, 0)\n", + " return math.atan2(y, 0) - math.pi/2\n", " \n", " # Calculate tangent line y = mx + b\n", - " m = (x*y - math.sqrt(x*x*y*y-(x*x-a*a)*(y*y-a*a)))/(x*x-a*a)\n", + " if abs(a) != abs(x): # If there is no division by 0\n", + " m = (x*y + math.sqrt(x*x*y*y-(x*x-a*a)*(y*y-a*a)))/(x*x-a*a)\n", + " else: # Deal with edge case when x^2=a^2\n", + " m = flip*(-a*a+y*y)/(a*y-flip*abs(a*y))\n", " b = flip * a * math.sqrt(1+m*m)\n", "\n", " # Calculate equivalent tangent point on circle\n", @@ -108,11 +108,11 @@ " # Calculate base angle, make angle negative if flip=1\n", " theta = math.atan2(cy, cx) + (-math.pi if flip==1 else 0)\n", "\n", - " return theta\n", + " return theta \n", " \n", " base_theta = calculate_theta(x, y, l_bs)\n", - " cx, cy = l_bs*math.cos(base_theta), l_bs*math.sin(l_bs)\n", - " r = math.sqrt((x-cx)**2 + (y-cy)**2) - 0.1\n", + " cx, cy = l_bs*math.cos(base_theta), l_bs*math.sin(base_theta)\n", + " r = math.sqrt((x-cx)**2 + (y-cy)**2) \n", "\n", "\n", " # Formulas to find out joint positions for (r, z)\n", @@ -120,7 +120,7 @@ " a, b, c = p \n", "\n", " return (l1*math.cos(a) + l2*math.cos(a-b) + l3*math.cos(a-b-c) - r, # r\n", - " l1*math.sin(a) + l2*math.sin(a-b) - l3*math.sin(a-b-c) - (z+offset_z), # z\n", + " l1*math.sin(a) + l2*math.sin(a-b) - l3*math.sin(a-b-c) - (l3*math.sin(a-b-c)) - (z + offset_z), # z\n", " a-b-c) # wrist angle\n", "\n", "\n", @@ -130,13 +130,13 @@ " # Return result\n", " return base, shoulder, elbow, wrist1, ry, rz\n", "\n", - "def get_joints_from_xyz_abs(x, y, z):\n", - " joints = get_joints_from_xyz_rel(x, y, z)\n", + "def get_joints_from_xyz_abs(x, y, z, rx=0, ry=-math.pi/2, rz=math.pi/2):\n", + " joints = get_joints_from_xyz_rel(x, y, z, rx, ry, rz)\n", "\n", " # Joint offsets\n", " # Base, Shoulder, Elbow, Wrist\n", " inverse = [1, -1, 1, 1, 1, 1]\n", - " offsets = [-math.pi/2, 0, 0, -math.pi/2, -math.pi/2, 0]\n", + " offsets = [-math.pi/2, 0, 0, -math.pi/2, 0, 0]\n", "\n", " # Return adjusted joint positions\n", " return [o+j*i for j, o, i in zip(joints, offsets, inverse)]\n", @@ -147,23 +147,24 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "no flip\n" + "flip\n", + "m: -0.9031146536634159\n" ] }, { "data": { "text/plain": [ - "-126.86989764584402" + "47.914345304219715" ] }, - "execution_count": 64, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -181,10 +182,15 @@ " print('critical')\n", " # Critical section (x=a, or x=-a). Infinite slope\n", " # Return 0 or 180 depending on sign\n", - " return math.atan2(y, 0)\n", + " return math.degrees(math.atan2(y, 0)-math.pi/2)\n", " \n", " # Calculate tangent line y = mx + b\n", - " m = (x*y + math.sqrt(x*x*y*y-(x*x-a*a)*(y*y-a*a)))/(x*x-a*a)\n", + " if abs(a) != abs(x): # If there is no division by 0\n", + " m = (x*y + math.sqrt(x*x*y*y-(x*x-a*a)*(y*y-a*a)))/(x*x-a*a)\n", + " else: # Deal with edge case when x^2=a^2\n", + " m = flip*(-a*a+y*y)/(a*y-flip*abs(a*y))\n", + " \n", + " print('m:',m)\n", " b = flip * a * math.sqrt(1+m*m)\n", "\n", " # Calculate equivalent tangent point on circle\n", @@ -194,9 +200,9 @@ " # Calculate base angle\n", " theta = math.atan2(cy, cx) + (-math.pi if flip==1 else 0)\n", "\n", - " return theta\n", + " return math.degrees(theta)\n", "\n", - "calculate_theta(5,-5,1)" + "calculate_theta(-0.1333,0.3,0.1333)" ] }, { @@ -208,26 +214,25 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "no flip\n", "Target position (x,y,z): 0.3 0.3 0.3\n", - "Angles (base, shoulder, elbow, wrist): [-25.7322, 113.4225, 127.6133, -14.1908]\n", - "no flip\n", - "Robot Angles: [-115.7322, -113.4225, 127.6133, -104.1908]\n", - "elbow (x,y): -0.168 0.388\n", - "wrist (x,y): 0.18 0.3\n", - "tool (x,y): 0.33 0.3\n" + "R: 0.4243\n", + "Angles (base, shoulder, elbow, wrist): [-26.688, 105.6932, 101.1834, 4.5098]\n", + "Robot Angles: [-116.688, -105.6932, 101.1834, -85.4902, -90.0, 90.0]\n", + "elbow (x,y): -0.114 0.407\n", + "wrist (x,y): 0.244 0.435\n", + "tool (x,y): 0.394 0.435\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAGxCAYAAABRB6M1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABV60lEQVR4nO3deVxVBfrH8c8FBNxAFAVRFHet3HIhzFwmEqtfZVOTmpNKlo3t0aLWJDY2YeWUpqblpNlUozWTTqvloNgiLqmMVmpqGmkCboBigsL5/XH14lWWc4HD5V6+79frvCbOfc65z702+eUsz7EZhmEgIiIiIlXKx90NiIiIiHgjhSwRERERCyhkiYiIiFhAIUtERETEAgpZIiIiIhZQyBIRERGxgEKWiIiIiAUUskREREQsoJAlIiIiYgGFLBERERELKGS54Msvv+SGG24gIiICm83G8uXLHa+dPn2aiRMn0rVrV+rXr09ERASjR4/m119/ddSkpKRgs9lKXDZu3Fjme6empvK73/2O+vXrExQUxIABA/jtt98cr//1r3+lX79+1KtXj0aNGpW4jw8//JCOHTvSqVMnPv7440p9FyIiIlI2hSwX5OXl0b17d+bOnXvRaydPnmTz5s08/fTTbN68mQ8++ICdO3dy4403Omr69evHwYMHnZa77rqLNm3a0Lt371LfNzU1laFDhzJkyBA2bNjAxo0buf/++/HxKf7jKygo4A9/+AMTJkwocR/5+fncd999vPrqq8yZM4cJEyZQUFBQiW9DREREymLTA6IrxmazsWzZMoYNG1ZqzcaNG+nbty8///wzrVq1uuj106dP06JFCx544AGefvrpUvdzxRVXcM011zBt2rRy+3rzzTd5+OGHyc7Odlqfm5tLt27d+PbbbwHo06cPW7dupWHDhuXuU0RERFynI1kWysnJwWazlXn67siRI8THx5e6j6ysLNavX0+zZs3o168fYWFhDBw4kK+//tqlXoKCgoiPj6d58+ZEREQwYcIEBSwRERELKWRZ5NSpU0ycOJGRI0cSFBRUYs0bb7xBXFwcLVu2LHU/P/30EwBTp07l7rvvZsWKFVx++eVcffXV7Nq1y6WeEhMTOXz4MEeOHOGJJ55waVsRERFxjUKWBU6fPs1tt92GYRjMmzevxJr9+/fz+eefM27cuDL3VVRUBMA999xDfHw8PXv25OWXX6ZTp04sXLjQ5d6Cg4N1BEtERKQa+Lm7AW9zLmD9/PPPrFq1qtSjWIsWLaJJkyZOF8aXpHnz5gBccsklTuu7dOlCenp61TQtIiIiVU5HsqrQuYC1a9cu/vvf/9KkSZMS6wzDYNGiRYwePZo6deqUuc+oqCgiIiLYuXOn0/off/yR1q1bV1nvIiIiUrV0JMsFJ06cYPfu3Y6f9+7dS1paGo0bN6Z58+bceuutbN68mY8//pjCwkIyMjIAaNy4Mf7+/o7tVq1axd69e7nrrrsueo8DBw5w9dVX89Zbb9G3b19sNhuPP/44iYmJdO/enR49erB48WJ27NjBv/71L8d26enpHD16lPT0dAoLC0lLSwOgffv2NGjQwKJvREREREqjEQ4uSElJYfDgwRetHzNmDFOnTqVNmzYlbrd69WoGDRrk+Pn222/n559/5ptvvrmodt++fbRp0+aibaZPn87cuXM5evQo3bt354UXXqB///6O18eOHcvixYvLfW8RERGpHgpZIiIiIhbQNVkiIiIiFlDIEhEREbGAQpaIiIiIBRSyRERERCygkCUiIiJiAYUsEREREQsoZImIiIhYwCtClmEY5ObmopFfIiIiUlN4Rcg6fvw4wcHBHD9+3N2tiIiIiABeErJEREREahqFrJIUFV60Kh34sPo7EREREQ/l5+4GaqR1YyD7O4ywwWwPG8zzzQbwjn8j6gIHgCB39yciIiI1nlc8IDo3N5fg4GBycnIICqpkBDIMjGUR2E5lOFYVYWNLSE9Whw2mQ9hgbmraH/yDK9m1iIiIeDOFrPNkAP/K2cH9n3Qps86w+WAL6QVhg+1L0yuhTsMKv6+IiIh4H50uPCsN6AvcmZVSbq3NKIKjG+3L9hfA5guN+5wXuvqBX32LOxYREZGaTCHrrG5AK2Bw5mrXNzYK4cg6+/JDEvjUgSZ9odlgCBsEof3Ar24VdywiIiI1mU4XnmeWYTBiWThhp7KqsDvAxx9CrzgvdF0BvoFV+x4iIiJSoyhknedE9vc0+PSyKuysFL6BEBpTHLqaRIOvv/XvKyIiItVGpwvP08DE9VhVovAUZK62L9sA37r2i+fDBkOzQdCkj/2Uo4iIiHgshazzVeR6rKpQ+Btk/Ne+gP2i+ab97YErbDA07gU++qMSERHxJPqb+3zhsXAmj98OfUXdM3nu6+NMHhz83L4A+DWEZlcVh66QnuDj677+REREpFy6JqsEyUWneeroJgZnrmZw5mquPPQN9QtPVkGnVaROMDQbcF7o6g42PSFJRESkJlHIKoEBdAW+P/tzncIC+hzd6Ahd/Q6vpW7hqUq/T5XxD4FmA4tDV6PLFLpERETcTCGrFK8D95Tymn9hPtFH1jtC14DDqfgUFVTJ+1aJgCb2wHUudAVfAjabu7sSERGpVRSySnESaAkcM1F755nfeOPIurN3DKbYh5IWna6SPqpEQFP7qIiwwfaxEUGdFLpEREQsppBVhonACybq6gDpQPi5FWdOwuG154WuDWCcqbK+Ki0w3Dl0NWyv0CUiIlLFFLLKkA60BQpN1CYCU0t78fQJOPQNZJ0NXUe/tT+Kp6ao26I4dIUNhvptFLpEREQqSSGrHH8A/mWirhn2UBZgZqencyHr6+LQdWwzGEWV6LKK1Wt1Qehq7e6OREREPI5CVjm+Bq4yWbsYGF2RNynIhqyv7KcXs1LgWBr2exxriPptnENXvZbu7khERKTGU8gqhwH0BjabqL0c+Bao9Im2/KOQ9aU9cGWuhuytld1j1WrQrjhwNRsE9SLc3ZGIiEiNo5BlwlvAGJO1XwH9q7qBU4cha01x6Mr5vtxNqlXDjs6hq26YuzsSERFxO4UsE/KB1kCmido/AO9VeQcXOJVlv5brXOjK3WH1O7omqMt5oWsgBDZ1d0ciIiLVTiHLpKnAMybqfIG9QKQlXZTit4POoev4rup89/IFX3Ze6BpgH5YqIiLi5RSyTMoAWgFmRoxOBKZb0oVJJw+cDV2r7aHrxE/u7OYCNmjU7bzQdZX9sUAiIiJeRiHLBXcAb5uoCwH2A/Us68RFeenOoSvvZ3d3dB4bhPQ8G7oGQdOrwD/Y3U2JiIhUmkKWC74F+pisfQ0Yb1knlXRirz10Za62B6+T+93dUTGbD4T0Kj7S1fRKqNPQ3V2JiIi4TCHLRVcCa03UXQpsowrGOVjNMODEHufQ9dtBd3dVzOYLjfucd6TrSvCr7+6uREREyqWQ5aL3gOEma1cCsRb2YgnDgOM/nhe6UuCUmfsqq4lPHWjS1/7MxbBBENoP/Oq6uysREZGLKGS56DT25xmaOcH2f8BHlnZTDQzDPiIic3Vx6Mo/7O6uivn4Q+gV54WuK8A30N1diYiIKGRVxHRgsok6G/Aj0N7adqqXUQQ5P5wXutZAwVF3d1XMJwCa9rMPRQ0bDE2iwdff3V2JiEgtpJBVAUewz8H6zUTtg8Asa9txL6MIsrc5h67TOe7uqphvXft1XI7Q1cd+ylFERMRiClkVNB5YYKKuIfZTi9XTVQ1QVAjZ/zsvdH0JZ467u6tifvWhaf/i0NW4F/j4ubsrERHxQgpZFfQd0NVk7SzsR7RqpaIzcGxLceg69BWcyXN3V8X8GtoHop4LXSE9wcfX3V2JiIgXUMiqhFgg2URde2An4GNtO56h6DQc3XRe6PoGCk+6u6tidYKg6YDiOV0h3e2zu0RERFykkFUJHwI3maz9CPvdhnKBwgI4urE4dB1eC4Wn3N1VMf8Q+/MWm50NXY0uU+gSERFTFLIqoRDoCJh5MmAs9rlZUo7CfDiy/mzoSoHDqVCU7+6uigU0gWYDi0NX8CVgq/EjZ0VExA0UsippJvCIydrvsE+CFxec+Q2OrCsOXUfW2U851hQBTe3zucIG24NXUCeFLhERASp4mdDcuXOJiooiMDCQ6OhoNmzYUGrtBx98QO/evWnUqBH169enR48e/OMf/3CqGTt2LDabzWkZOnRoRVqrdvFAA5O1r1jZiLfyq2sPMN3+Atd8Cbdmw+9WwqVP2qe929x8Z2D+IUh/HzbeC590gWUR8M1I2P065O6yD3MVEZFayeUjWUuXLmX06NHMnz+f6OhoZs6cyfvvv8/OnTtp1qzZRfUpKSkcO3aMzp074+/vz8cff8yjjz7KJ598QlxcHGAPWZmZmSxatMixXUBAACEhIaZ6cueRLLDfOTjbRF1d7OMcGlvbTu1y+oT94vmsFPvRrqPfglHo7q6K1W1RfKQrbDDUb6MjXSIitYTLISs6Opo+ffowZ84cAIqKioiMjOSBBx5g0qRJpvZx+eWXc/311zNt2jTAHrKys7NZvny5a92f5e6QtQvoBJj5IqcDE61tp3Y7nQtZX9sfdJ2ZAsc22wem1hT1Wl0Qulq7uyMREbGIS6cLCwoK2LRpE7GxxY899vHxITY2ltTU1HK3NwyD5ORkdu7cyYABA5xeS0lJoVmzZnTq1IkJEyZw5MiRUveTn59Pbm6u0+JOHYDrTNbOBc5Y2EutVycIWlwHPV+EoRvhliMw4EPonGCfgYWbjyKdTIe9b8G6ePhPFPynDay7E/b+A06aeSKmiIh4CpcuaDl8+DCFhYWEhYU5rQ8LC2PHjh2lbpeTk0OLFi3Iz8/H19eXV199lWuuucbx+tChQ/n9739PmzZt2LNnD08++STXXnstqamp+PpePBgyKSmJZ555xpXWLfcQ8ImJul+A5cCtlnYjDv6NoOUN9gUg/6h9Cv2504vZW93ZHeTtg58W2ReABu2Kj3I1GwT1ItzZnYiIVIJLpwt//fVXWrRowdq1a4mJiXGsf+KJJ1izZg3r168vcbuioiJ++uknTpw4QXJyMtOmTWP58uUMGjSoxPqffvqJdu3a8d///perr776otfz8/PJzy++rT83N5fIyEi3nS4E+6nCy4AfTNT2B76yth0x69RhOPRl8ZyunO/d3ZGzhh2dQ1fdsHI3ERGRmsGlI1mhoaH4+vqSmZnptD4zM5Pw8PBSt/Px8aF9+/YA9OjRg+3bt5OUlFRqyGrbti2hoaHs3r27xJAVEBBAQECAK61bzob9Avg/maj9GtgMXG5pR2JKYChE/t6+AJzKsj/k+lzoyi39CG21OP6jfdn9mv3noC7nha6BENjUvf2JiEipXLomy9/fn169epGcXPwwmaKiIpKTk52ObJWnqKjI6UjUhfbv38+RI0do3ry5K+253R+BRiZrZ1nYh1RCYDNo9Qfo8yr833a4+Vfo909oPx4adnB3d5C7HXa9Cl//AT5oBp90hW8fhF+WQX7p1zGKiEj1q9AIhzFjxvDaa6/Rt29fZs6cyXvvvceOHTsICwtj9OjRtGjRgqSkJMB+/VTv3r1p164d+fn5fPrpp0yaNIl58+Zx1113ceLECZ555hluueUWwsPD2bNnD0888QTHjx9n27Ztpo5YufvuwvM9Abxoos4fSAd08sfDnDxgv2sx6+yRrhNm5v1XFxs06nb2SNcg++OA/M2NQRERkarn8iTH4cOHc+jQIaZMmUJGRgY9evRgxYoVjovh09PT8fEpPkCWl5fHvffey/79+6lbty6dO3fm7bffZvjw4QD4+vqydetWFi9eTHZ2NhEREQwZMoRp06bVuFOCZtwH/A0ob2hAATAfSLS8I6lS9VpAm1H2BSAv3Tl05f3sxuYMyP6ffdk5E7DZ76g8F7qaXgX+wW7sT0SkdtFjdSxwK/BvE3VhwM+A50VJKdWJvfbQlbnaHrxq0lgGmw+E9DovdPWHOg3d3ZWIiNdSyLLAV8CAcqvs3gLusLAXcSPDsJ9OPHcRfdZq+O2gu7sqZvOFxn3OC11Xgl99d3clIuI1FLIsYAC9gC0mansBG3H7iEypDoYBx3edF7pS4FRmuZtVG5860KSvfVRE2GD7syH96rq7KxERj6WQZZHFwFiTtV8DV1rXitRUhmEfEXF+6Mo/7O6uivn4Q+gV54WuK8A30N1diYh4DIUsi+QDrYAsE7W3AUutbUc8gVEEOT+cF7rWQMFRd3dVzCcAmvYrDl1N+oKvrigUESmNQpaFEoG/mKjzBfYCkda2I57GKILsbc6h63SOu7sq5lvXfkrx3HDUJn3spxxFRARQyLLUQaA1cNpE7SQgydp2xNMVFdrHMzhC15dw5ri7uyrmVx9CrywOXY17gY/LU2JERLyGQpbF/gi8Y6KuMfaHR9ezth3xJkVn4NiW4tB16Cs4k+furor5NbDP5joXukJ6gs/FD3wXEfFWClkW2wj0NVn7OnC3hb2Ilys6DUc3nQ1dKXDoayg86e6uitUJgqYDzgtd3e2zu0REvJRCVjXoB6SaqLsU2IbGOUgVKSyAoxuLQ9fhb6DwlLu7KuYfYn/0T7OzoavRZQpdIuJVFLKqwVJghMna/wJXW9iL1GKF+XBk/XmhKxWKSn9Qe7ULaALNBhaHruBLwKZfOUTEcylkVYPTQBvggInaG4APrW1HxO7Mb3BkXfFjgI6ss59yrCkCmton0YcNtgevoE4KXSLiUXRsvhrUwf7gaDM+BvZY2IuIg19de4Dp9gxc8yXcmg2/WwmXPmUfzWBz852B+Ycg/X3YeC980gWWRcA3I2H365C7yz7MVarFBx98wJAhQ2jSpAk2m420tLRSaw3D4Nprr8Vms7F8+fJK73fPnj3cfPPNNG3alKCgIG677TYyM52flJCamkqPHj2IiorijTfeqMAnFLGGQlY1GQ+YmZVtALMt7kWkRH71IDwWuj8LQ76BW4/BoBVwySRoEm1/1qE7ncqAn5fAhnvg446wPBLW/hH2vAHH9yh0WSgvL4/+/fvz/PPPl1s7c+ZMbCaPOJa337y8PIYMGYLNZmPVqlV88803FBQUcMMNN1BUVOSoGzduHE8//TTvvvsuSUlJ/PLLL+Y+mIjFNMSmmjTBPs7h7yZqFwLTgIaWdiRSjjoNICLOvgCczoWsr+2P/8lcDcc22wemustvB2DfO/YFoF5k8Z2LYYOhfmv39eZl7rjD/hj7ffv2lVmXlpbG3/72N7799luaN29e6f1+88037Nu3jy1btjguBVm8eDEhISGsWrWK2NhYwB7GLr/8cpo1a0ZISAjHj9eg+XFSqylkVaMHMReyjgNvAg9Y2o2Ii+oEQYvr7AtAQTZkfXVe6ErDfizWTU7+Anvfsi8A9aOKA1ezQVBfz1Sw0smTJ7n99tuZO3cu4eHhVbLP/Px8bDYbAQHFj28KDAzEx8eHr7/+2hGypkyZQpcuXThz5gwTJkzgkksuqZL3F6kshaxq1BX4HbDKRO1s7Ndx6Xyu1Fj+jaDlDfYFIP+ofSDqueGo2Vvd2h55++CnRfYFoEE759BVL8Kd3XmdRx55hH79+nHTTTdV2T6vuOIK6tevz8SJE3nuuecwDINJkyZRWFjIwYMHHXXjxo1jxIgRFBQUEBISUmXvL1JZ+ju8mj1osm4X8JmVjYhUtYDG0PIm6DUTrvsf/P4QXPVv6Hg/BF/q7u7gxB7Y83dYOwqWt4CPOsGGP8G+JfBbhru7qzHeeecdGjRo4Fi++uqrcrf58MMPWbVqFTNnzqzSXpo2bcr777/PRx99RIMGDQgODiY7O5vLL78cHx/nv77q16+vgCU1jo5kVbP/wz7OYa+J2lnA9da2I2KdwFCI/L19ATiVZX/I9bkjXbk73Nvf8R/ty+7X7D8HdTl7pGuQ/UhXYFN3duc2N954I9HR0Y6fW7RoUe42q1atYs+ePTRq1Mhp/S233MJVV11FSkpKhfsZMmQIe/bs4fDhw/j5+dGoUSPCw8Np27ZthfcpUl0UsqqZL/ZrrRJM1K4EfgB0dYF4hcBm0OoP9gXgt4OQuQayzoau47vc21/udvuy61X7z8GXnRe6BtqHpdYCDRs2pGFD1267mTRpEnfddZfTuq5du/Lyyy9zww03VElfoaGhgD3QZWVlceONN1bJfkWspJDlBncCU4ATJmpfAeZb246Ie9RtDlEj7AvAyQP2wajnQteJn9zaHjnf2ZcfZwM2aNTtvNA1wP5YoFri6NGjpKen8+uvvwKwc+dOAMLDw52WC7Vq1Yo2bdo4fu7cuTNJSUncfPPNpvYLsGjRIrp06ULTpk1JTU3loYce4pFHHqFTp07WfWCRKqKQ5QbBwFhgjonat4DngMZWNiRSE9RrAW1G2ReAvHTn0JX3sxubMyD7f/Zl50zABiE9iyfSN70K/IPd2J+1PvzwQ+Lj4x0/jxhhD8aJiYlMnTrV9H527txJTk6OS/vduXMnkydP5ujRo0RFRfHUU0/xyCOPVOLTiFQfPVbHTX4EzP4e9jzwhIW9iHiEE/uKr+fKWg0n97u7o2I2HwjpdV7o6g91NOlOpLZTyHKj64FPTdRFAj+hw44iDoZhP514fuj67WD521UXmy807nNe6LoS/Oq7uysRqWYKWW70BRBnsvZfwC0W9iLi0QzDfuG8I3SlwKnMcjerNj51oElf+12LYYPtz4b0q+vurkTEYgpZbmQAlwLbTdReBXxpbTsi3sMw7CMizg9d+Yfd3VUxH38IveK80HUF+Jp5uqmIeBKFLDebD0wwWbsZ6GlhLyJeyyiCnB+KA1dmChQcdXdXxXwCIDSmeCJ9k77gG1D+diJSoylkuVke0BLINlE7BvszDUWkkowiyN52XuhaA6ez3d1VMd+69lOKjtDVx37KUUQ8ikJWDfA4MMNEnT+QDoRZ245I7VNUaB/PkLnafpTr0JdwOtfdXRXzqw+hVxaHrsa9wEe3wojUdApZNcDPQFugyETtM9gHmYqIhYrOwLEt54Wur+CMmfHB1cSvgX0217nQFdITfHzd3ZWIXEAhq4a4BfjARF049lDmb207InK+otNwdNN5oetrKDzp7q6K1QmCpgOKQ1ejbgpdIjWAQlYN8SUw0GTtP4A/WtiLiJSjsACObiwOXYe/gcJT7u6qmH+I/dE/zc6FrsvsA1NFpFopZNUQBnA5kGaitjewAbBZ2ZCImFeYD0fW2wNX5mo4nApF+e7uqlhAE/tDrs+FruBLwKb/gohYTSGrBnkTiC+v6KxvgH7WtSIilVF4yh60zoWuI+vspxxrioCmxdPomw2CoM4KXSIWUMiqQU4BrYBDJmqHA0usbUdEqsqZk3B47XmhawMYZ9zdVbHAcOfQ1bCDQpdIFahQyJo7dy4vvvgiGRkZdO/endmzZ9O3b98Saz/44AOee+45du/ezenTp+nQoQOPPvood9xxh6PGMAwSExNZsGAB2dnZXHnllcybN48OHTqY6sdbQhbY7xycZqLOF9iHfcaWiHiY0yfOhq6zE+mPfgtGYfX28FfgSCmv2Xzts7rOLZrRVev87sAB0s+U/YtAqwYNWHXsWDV15JlcDllLly5l9OjRzJ8/n+joaGbOnMn777/Pzp07adas2UX1KSkpHDt2jM6dO+Pv78/HH3/Mo48+yieffEJcnP3Jfc8//zxJSUksXryYNm3a8PTTT7Nt2zZ++OEHAgPLf9SEN4Wsg9iPZpn5HXcy8Jy17YhIdTidC4e+KQ5dxzbbB6ZaKQGoQY93lJqlPbCnnJp2fn7sPl2DToPXQC6HrOjoaPr06cOcOXMAKCoqIjIykgceeIBJkyaZ2sfll1/O9ddfz7Rp0zAMg4iICB599FEee+wxAHJycggLC+PNN99kxIgR5e7Pm0IWwCjgXRN1TYBfAD1mVsTLFGTbx0Q4Qlca9ttjqpBClpRBIatquHRPb0FBAZs2bSI2NrZ4Bz4+xMbGkpqaWu72hmGQnJzMzp07GTBgAAB79+4lIyPDaZ/BwcFER0eb2qc3eshk3RHgHSsbERH38G8ELf4PLv8bXLsZbjkMA5ZDp4fsM7BExCO49FyGw4cPU1hYSFiY84NdwsLC2LFjR6nb5eTk0KJFC/Lz8/H19eXVV1/lmmuuASAjI8Oxjwv3ee61C+Xn55OfX3x7dG5uDXr8RRXoC1wBrDNROwsYh8Y5iHi1gMbQ8ib7AnDqsP3RP+eOdOV8797+RKRE1fLwq4YNG5KWlsaJEydITk4mISGBtm3bMmjQoArtLykpiWeeeaZqm6xhHsJcyPoOWA38ztp2RKQmCQyFyN/bF4BTWZC1pjh05Zb+S6+IVB+XQlZoaCi+vr5kZjqfyM/MzCQ8PLzU7Xx8fGjfvj0APXr0YPv27SQlJTFo0CDHdpmZmTRv3txpnz169Chxf5MnTyYhIcHxc25uLpGRka58lBrvFqAFcMBE7SwUskRqtcBm0OoP9gXgtwz7uIiss6Hr+C63tidSW7l0TZa/vz+9evUiOTnZsa6oqIjk5GRiYmJM76eoqMhxuq9NmzaEh4c77TM3N5f169eXus+AgACCgoKcFm9TB7jXZO1HlH+BoojUInXDIWoE9H0NbvgRhu2HmLeh3Tho0M7d3YnUGi6fLkxISGDMmDH07t2bvn37MnPmTPLy8oiPt88qHz16NC1atCApKQmwn9rr3bs37dq1Iz8/n08//ZR//OMfzJs3DwCbzcbDDz/Ms88+S4cOHRwjHCIiIhg2bFjVfVIPNB77zKzynohmAHOAly3vSEQ8Ur0W0GaUfQHIS4fJfYAst7Yl4u1cDlnDhw/n0KFDTJkyhYyMDHr06MGKFSscF66np6fj41N8gCwvL497772X/fv3U7duXTp37szbb7/N8OHDHTVPPPEEeXl5jB8/nuzsbPr378+KFStMzcjyZqHYxzm8YaJ2IfAXoKGlHYmIV6jfCtpdCnXO/hfDOANnfoPC36DwpH0wqs0X6ke5tU1xo59/hnKGkVJHQ2rLo8fq1HDbALM3bM8G7rewFxGpBQwDTvwEJ3+xP2pHaqX27duzZ0/ZF6K0a9eO3bt3V1NHnsmla7Kk+nUFBpusfQWweEa0iHg7mw0atlPAEqkCClke4EGTdbuAFVY2IiIiIqYpZHmAG4A2JmtnWdmIiIiImKaQ5QF8MX+t1RfAdgt7EREREXMUsjzEnUB9k7WvWNmIiIiImKKQ5SEaAWNN1r4FHLOsExERETFDIcuDPGCy7iTwdysbERERkXIpZHmQTsC1JmvnAOWMkRMRERELKWR5mIdM1qUDH1rZiIiIiJRJIcvDDAE6m6zVOAcRERH3UcjyMDbMDyf9EkizrhUREREpg0KWB7oDCDZZq6NZIiIi7qGQ5YEaAHeZrH0XyLKwFxERESmZQpaHuh9zf3gFwGsW9yIiIiIXU8jyUFHATSZrX8UetkRERKT6KGR5MLPjHDKA961sRERERC6ikOXBBgDdTdbOAgwLexERERFnClkezIb5o1kbgXUW9iIiIiLOFLI83EigqcnaV6xsRERERJwoZHm4QOAek7X/Ag5Y2IuIiIgUU8jyAhMAPxN1Z7DfaSgiIiLWU8jyAhHAH0zWvgb8ZmEvIiIiYqeQ5SXMXgB/BPsUeBEREbGWQpaXiD67mKFxDiIiItZTyPIiZo9mbQNSLOxDREREFLK8yq3Yr88yY5aVjYiIiIhCljepA9xrsvZD4CcLexEREantFLK8zHggwESdAcyxuBcREZHaTCHLyzQFRpmsfQM4YWEvIiIitZlClhcyewF8LrDYykZERERqMYUsL9QNGGSy9hWgyLpWREREai2FLC/1oMm6H4HPrWxERESkllLI8lI3AlEmazXOQUREpOopZHkpX+B+k7WfAzss7EVERKQ2UsjyYuOA+iZrX7GyERERkVqoQiFr7ty5REVFERgYSHR0NBs2bCi1dsGCBVx11VWEhIQQEhJCbGzsRfVjx47FZrM5LUOHDq1Ia3KeRsAYk7WLgWPWtSIiIlLruByyli5dSkJCAomJiWzevJnu3bsTFxdHVlZWifUpKSmMHDmS1atXk5qaSmRkJEOGDOHAgQNOdUOHDuXgwYOO5Z///GfFPpE4MXsB/Ensc7NERESkatgMwzBc2SA6Opo+ffowZ459XnhRURGRkZE88MADTJo0qdztCwsLCQkJYc6cOYwePRqwH8nKzs5m+fLlrn8CIDc3l+DgYHJycggKCqrQPrzZtcAKE3WtgT3Yr+cSEZHaq3379uzZs6fMmnbt2rF79+5q6sgzuXQkq6CggE2bNhEbG1u8Ax8fYmNjSU1NNbWPkydPcvr0aRo3buy0PiUlhWbNmtGpUycmTJjAkSNHSt1Hfn4+ubm5TouUzuxw0p+xP9NQREREKs+lkHX48GEKCwsJCwtzWh8WFkZGRoapfUycOJGIiAinoDZ06FDeeustkpOTef7551mzZg3XXnsthYWFJe4jKSmJ4OBgxxIZGenKx6h1hgCdTNZqnIOIiEjV8KvON5s+fTpLliwhJSWFwMBAx/oRI0Y4/rlr165069aNdu3akZKSwtVXX33RfiZPnkxCQoLj59zcXAWtMvhgvzbrPhO1a4A0oIeF/YiIiNQGLh3JCg0NxdfXl8zMTKf1mZmZhIeHl7ntjBkzmD59Ol988QXdunUrs7Zt27aEhoaWeq43ICCAoKAgp0XKNhoINlmrcQ4iIiKV51LI8vf3p1evXiQnJzvWFRUVkZycTExMTKnbvfDCC0ybNo0VK1bQu3fvct9n//79HDlyhObNm7vSnpShAfa5WWa8CxyysBcREZHawOURDgkJCSxYsIDFixezfft2JkyYQF5eHvHx8QCMHj2ayZMnO+qff/55nn76aRYuXEhUVBQZGRlkZGRw4sQJAE6cOMHjjz/OunXr2LdvH8nJydx00020b9+euLi4KvqYAvYJ8Gb+wPOB1yzuRURExNu5fE3W8OHDOXToEFOmTCEjI4MePXqwYsUKx8Xw6enp+PgU/1U+b948CgoKuPXWW532k5iYyNSpU/H19WXr1q0sXryY7OxsIiIiGDJkCNOmTSMgIKCSH0/O1wb7Mw2Xm6h9FXgC8LeyIRERES/m8pysmkhzssxLAQabrH0HuN26VkREpIbSnKyqoWcX1jIDgbJvOyimcQ4iIiIVp5BVy9gwP5x0A7Dewl5ERES8mUJWLXQ7EGqyVkezREREKkYhqxYKBO4xWfs+cKDcKhEREbmQQlYtNQFzt5aeAeZZ3IuIiIg3UsiqpVoAt5ZbZfcacMrCXkRERLyRQlYtZvYC+MPYp8CLiIiIeQpZtdgVQF+TtbMAjx+oJiIiUo0Usmo5s0eztgJrrGxERETEyyhk1XK3AmYfw61xDiIiIuYpZNVy/sC9Jmv/A+y1sBcRERFvopAl3AOYeRS3Acy1uBcRERFvoZAlNMX8g6D/DpywsBcRERFvoZAlgPkL4HOAt6xsRERExEsoZAkA3YGBJmtfAYos7EVERMQbKGSJw4Mm63YCX1jZiIiIiBdQyBKHm4DWJms1zkFERKRsClni4Avcb7J2BbDDwl5EREQ8nUKWOBkH1DNZO9vKRkRERDycQpY4CQHGmKxdDGRb14qIiIhHU8iSi5i9AD4PeMPKRkRERDyYQpZcpDMQZ7J2DlBoYS8iIiKeSiFLSmR2OOk+4CML+xAREfFUCllSojigo8lajXMQERG5mEKWlMgH89dmpQBbrWtFRETEIylkSanGAEEma3U0S0RExJlClpSqAfa5WWa8AxyysBcRERFPo5AlZbofsJmoywdet7gXERERT6KQJWVqC9xosvZV4LSFvYiIiHgShSwpl9lxDr8C/7KyEREREQ+ikCXlGgR0M1mrC+BFRETsFLKkXDbMj3NYf3YRERGp7RSyxJTbgSYma1+xshEREREPoZAlptQF7jFZ+x7267NERERqswqFrLlz5xIVFUVgYCDR0dFs2LCh1NoFCxZw1VVXERISQkhICLGxsRfVG4bBlClTaN68OXXr1iU2NpZdu3ZVpDWx0L2An4m6M8A8i3sRERGp6VwOWUuXLiUhIYHExEQ2b95M9+7diYuLIysrq8T6lJQURo4cyerVq0lNTSUyMpIhQ4Zw4MABR80LL7zAK6+8wvz581m/fj3169cnLi6OU6dOVfyTSZVrAdxqsvY1QH96IiJSm9kMwzBc2SA6Opo+ffowZ84cAIqKioiMjOSBBx5g0qRJ5W5fWFhISEgIc+bMYfTo0RiGQUREBI8++iiPPfYYADk5OYSFhfHmm28yYsSIcveZm5tLcHAwOTk5BAWZfRCMVEQq0M9k7UIg3sJeRETEGu3bt2fPnj1l1rRr147du3dXU0eeyaUjWQUFBWzatInY2NjiHfj4EBsbS2pqqql9nDx5ktOnT9O4cWMA9u7dS0ZGhtM+g4ODiY6OLnWf+fn55ObmOi1SPa4A+pisnQW4lOBFRES8iEsh6/DhwxQWFhIWFua0PiwsjIyMDFP7mDhxIhEREY5QdW47V/aZlJREcHCwY4mMjHTlY0gl2DA/nPR/wJcW9iIiIlKTVevdhdOnT2fJkiUsW7aMwMDACu9n8uTJ5OTkOJZffvmlCruU8vwBaG6yVsNJRUSktnIpZIWGhuLr60tmZqbT+szMTMLDw8vcdsaMGUyfPp0vvviCbt2K54ef286VfQYEBBAUFOS0SPXxByaYrP0PsM+6VkRERGosl0KWv78/vXr1Ijk52bGuqKiI5ORkYmJiSt3uhRdeYNq0aaxYsYLevXs7vdamTRvCw8Od9pmbm8v69evL3Ke41z3Yw1Z5ioC5FvciIiJSE7l8ujAhIYEFCxawePFitm/fzoQJE8jLyyM+3n4f2ejRo5k8ebKj/vnnn+fpp59m4cKFREVFkZGRQUZGBidOnADAZrPx8MMP8+yzz/Lhhx+ybds2Ro8eTUREBMOGDauaTylVrhn2KfBm/B3Is7AXERGRmsjMbEknw4cP59ChQ0yZMoWMjAx69OjBihUrHBeup6en4+NTnN3mzZtHQUEBt97qPGEpMTGRqVOnAvDEE0+Ql5fH+PHjyc7Opn///qxYsaJS122J9R4C3jRRlw28hflTjCIiIt7A5TlZNZHmZLnPQMzdQdgZ+B49x0lExBNoTlbV0N95UilmxznsAFZa2YiIiEgNo5AllXIj0MpkrcY5iIhIbaKQJZXiB9xvsvYzYKeFvYiIiNQkCllSaXcB9UzWzrayERERkRpEIUsqLQQYbbL2Tex3G4qIiHg7hSypEg+arMsDFlrZiIiISA2hkCVVogswxGTtHKDQwl5ERERqAoUsqTJmxznsBT62shEREZEaQCFLqsxQoKPJWo1zEBERb6eQJVXGB3jAZO1qYKuFvYiIiLibQpZUqTGA2QcbvWJlIyIiIm6mkCVVqiFwp8nad4DDFvYiIiLiTgpZUuUeAGwm6k4Br1vci4iIiLsoZEmVawvcYLL2VeC0hb2IiIi4i0KWWMLsOIcDwL+tbERERMRNFLLEEoOBy0zWapyDiIh4I4UssYQN80ez1gEbLOxFRETEHRSyxDKjgCYmazXOQUREvI1CllimLjDeZO17wEELexEREaluClliqXsBXxN1p4F5FvciIiJSnRSyxFItgVtN1s7HPjtLRETEGyhkieUeNFl3CFhiZSMiIiLVSCFLLBcD9DZZOwswLOxFRESkuihkieVcGeeQBnxlXSsiIiLVRiFLqsVtQLjJWg0nFRERb6CQJdXCH5hgsnY5sM+yTkRERKqHQpZUm3uwh63yFGF/cLSIiIgnU8iSahMGjDRZuwDIs7AXERERqylkSbUyewF8NvAPC/sQERGxmkKWVKuewFUma19B4xxERGq7uXPnEhUVRWBgINHR0WzYsKHM+u+//55bbrmFqKgobDYbM2fOrNB+Bw0ahM1mc1r+9Kc/udS7QpZUO7NHs7YDK61sREREarSlS5eSkJBAYmIimzdvpnv37sTFxZGVlVXqNidPnqRt27ZMnz6d8PCS72s3u9+7776bgwcPOpYXXnjBpf4VsqTa3QS0MlmrcQ4iIp5l3759Fx0BstlsDBo0yOV9vfTSS9x9993Ex8dzySWXMH/+fOrVq8fChQtL3aZPnz68+OKLjBgxgoCAgErtt169eoSHhzuWoKAgl/pXyJJq5wfcZ7L2U+BHC3sREZGqFRkZ6XT0Z8uWLTRp0oQBAwaQnp5OgwYNylyee+45AAoKCti0aROxsbGOffv4+BAbG0tqamqF+3Nlv++88w6hoaFcdtllTJ48mZMnT7r0Xn4V7lKkEu4CpgK/maidfXYREZGaz9fX13Ga7tSpUwwbNoyYmBimTp1KUVERaWlpZW7fuHFjAA4fPkxhYSFhYWFOr4eFhbFjx44K92d2v7fffjutW7cmIiKCrVu3MnHiRHbu3MkHH3xg+r0qdCTLlYvQzFyANnXq1IsOK3bu3LkirYmHaAyMNln7JpBjXSsiImKRO++8k+PHj/Puu+/i4+ODn58f7du3L3M5F7Lcbfz48cTFxdG1a1dGjRrFW2+9xbJly9izZ4/pfbgcsly9CM3MBWgAl156qdPhxa+//trV1sTDPGiy7gRQ+tl3ERGpiZ599lk+//xzPvzwQxo2bAjg0unC0NBQfH19yczMdNpvZmZmmXmiPBXdb3R0NAC7d+82/V4uny48/2IxgPnz5/PJJ5+wcOFCJk2adFF9nz596NOnD0CJrzsa8fOr1JcmnucS4BrM3UE4B3so87W0IxERqQr//ve/+ctf/sJnn31Gu3btHOsjIiJMny709/enV69eJCcnM2zYMACKiopITk7m/vvvr3BvFd3vub6bN29u+r1cClnnLhabPHmyY11VXIQGsGvXLiIiIggMDCQmJoakpCRatSr5HrT8/Hzy8/MdP+fm5lbqvcV9HsJcyPoJ+AS40dp2RESkkr777jtGjx7NxIkTufTSS8nIyADs4aZx48a0b9/e9L4SEhIYM2YMvXv3pm/fvsycOZO8vDzHgR6A0aNH06JFC5KSkgB7Vvnhhx8c/3zgwAHS0tJo0KCB473L2++ePXt49913ue6662jSpAlbt27lkUceYcCAAXTr1s38l2G44MCBAwZgrF271mn9448/bvTt27fc7Vu3bm28/PLLF63/9NNPjffee8/43//+Z6xYscKIiYkxWrVqZeTm5pa4n8TERAP7nEqnJScnx5WPIzVAoWEYHQzDwMTyOzf1KCJS27Rr167Ev2fPX9q1a1fitosWLSqxfuDAgRXqZfbs2UarVq0Mf39/o2/fvsa6deucXh84cKAxZswYx8979+419f5l7Tc9Pd0YMGCA0bhxYyMgIMBo37698fjjj7ucM2yGYZgeqv3rr7/SokUL1q5dS0xMjGP9E088wZo1a1i/fn2Z20dFRfHwww/z8MMPl1mXnZ1N69ateemllxg3btxFr5d0JCsyMpKcnByXZ1iI+83G/PVZW4GuFvYiIiLQvn37ci/wbteunUvXJ9VGLl34btVFaBdq1KgRHTt2LPUPLyAggKCgIKdFPNdYoKHJ2lcs7ENERKQquRSyzr9Y7JxzF4udf2Srsk6cOMGePXtcurhMPFdD4E6TtW8Dhy3sRUREpKq4PMIhISGBBQsWsHjxYrZv386ECROcLhYbPXq004XxBQUFpKWlkZaW5nQB2vlHqR577DHWrFnDvn37WLt2LTfffDO+vr6MHDmyCj6ieIIHAJuJulPAAot7ERERqQouj3AYPnw4hw4dYsqUKWRkZNCjRw9WrFjhmJyanp6Oj09xdvv111/p2bOn4+cZM2YwY8YMBg4cSEpKCgD79+9n5MiRHDlyhKZNm9K/f3/WrVtH06ZNK/nxxFO0A/4P+MhE7VzgMaCOpR2JiIhUjksXvtdUubm5BAcH68J3D5cMxJZbZbcEGG5hLyIitZkufK8aekC01Bi/Ay4zWTvLykZERESqgEKW1Bg2zI9ySAU2WtiLiIhIZSlkSY0yCvvDo83QOAcREanJFLKkRqkHjDdZuxQ4aGEvIiIilaGQJTXOvZh7EPRpYL7FvYiIiFSUQpbUOJHALSZr5wP55VaJiIhUP4UsqZHMXgCfhX2cg4iISE2jkCU1Uj+gl8naWdgfsS4iIlKTKGRJjWQDHjJZuwX42sJeREREKkIhS2qs24Awk7UaTioiIjWNQpbUWAHABJO1y4CfLexFRETEVQpZUqP9CfA3UVcEvGpxLyIiIq5QyJIaLQwYYbJ2AZBnYS8iIiKuUMiSGs/sBfDHgLetbERERMQFCllS410O9DdZ+woa5yAiIjWDQpZ4BLNHs34A/mtlIyIiIiYpZIlHGIb9cTtmaJyDiIjUBApZ4hH8gPtM1n4C7LKwFxERETMUssRj3A3UNVk728pGRERETFDIEo/RGLjDZO0iIMfCXkRERMqjkCUe5UGTdSewBy0RERF3UcgSj3IpEGuydjZQaGEvIiIiZVHIEo9jdpzDT8CnVjYiIiJSBoUs8TjXAe1N1mqcg4iIuItClngcH+ABk7XJwHcW9iIiIlIahSzxSGOBhiZrX7GwDxERkdIoZIlHCgLiTdb+AzhiYS8iIiIlUcgSj/UAYDNRdwpYYHEvIiIiF1LIEo/VHrjeZO1c4LSFvYiIiFxIIUs8mtlxDvuBZVY2IiIicgGFLPFoV2MfUGqGxjmIiEh1UsgSj2bD/KN21gLfWtiLiIjI+RSyxOP9EfvDo83QOAcREakuClni8eoBd5usXQJkWNiLiIjIORUKWXPnziUqKorAwECio6PZsGFDqbXff/89t9xyC1FRUdhsNmbOnFnpfYpc6D7A10TdaWC+xb2IiIhABULW0qVLSUhIIDExkc2bN9O9e3fi4uLIysoqsf7kyZO0bduW6dOnEx4eXiX7FLlQJPB7k7XzgHwLexEREYEKhKyXXnqJu+++m/j4eC655BLmz59PvXr1WLhwYYn1ffr04cUXX2TEiBEEBARUyT5FSmL2AvgsYKmVjYiIiOBiyCooKGDTpk3ExsYW78DHh9jYWFJTUyvUgBX7lNrpSuByk7WzAMPCXkRERPxcKT58+DCFhYWEhYU5rQ8LC2PHjh0VaqAi+8zPzyc/v/iET25uboXeW7yLDftw0jEmajcD3wD9Le1IRMQztWrVyvHPhmGwd+9efHx8aN26NTab7aIaKZlH3l2YlJREcHCwY4mMjHR3S1JDDAfCyq2y03BSEZGSrVq1it27d7N7924ee+wxDMOgsLCQBQsWONavWrXK3W3WeC6FrNDQUHx9fcnMzHRan5mZWepF7Vbsc/LkyeTk5DiWX375pULvLd4nAPiTydplQLqFvYiIeLr8/Hyee+45QkNDadKkCVOnTsUwdLGFWS6FLH9/f3r16kVycrJjXVFREcnJycTExFSogYrsMyAggKCgIKdF5Jw/AXVM1BUCr1rci4iIJ1u4cCEHDhygZcuW9OjRg6+++orVq1e7uy2P4fLpwoSEBBYsWMDixYvZvn07EyZMIC8vj/j4eABGjx7N5MmTHfUFBQWkpaWRlpZGQUEBBw4cIC0tjd27d5vep4grwoERJmtfB05a2IuIiKc6dxRr5MiR1KtXj5YtW9KrVy8dzXKFUQGzZ882WrVqZfj7+xt9+/Y11q1b53ht4MCBxpgxYxw/792718B+I5fTMnDgQNP7LE9OTo4BGDk5ORX5OOKFvjUMA5PLa27qUUSkJnvzzTcNm81mbN++3ejXr58xduxY46OPPjIAY+3ate5uzyPYDMPz42hubi7BwcHk5OTo1KE49Md+B2F5LgW2Yb87UURE7LZs2cLmzZsZN24cV155JR07dmThwoXMmDGD4cOH6+5CE1wa4SDiSR7CXMj6HkgGYssrFBGpRXr27EnPnj2d1tlsNh5//HE3deR5PHKEg4gZw4CWJms1zkFERKqaQpZ4rTrYHxxtxifA7nKrREREzFPIEq92N1DXRJ0BzLa4FxERqV0UssSrNQH+aLJ2EaAHNImISFVRyBKv96DJuuPYg5aIiEhVUMgSr3cZcLXJ2tlAkYW9iIhI7aGQJbXCQybr9gCfWtmIiIjUGgpZUitcD7QzWatxDiIiUhUUsqRW8AEeMFn7X+wDSkVERCpDIUtqjXiggcnaV6xsREREagWFLKk1grAHLTP+ARy1sBcREfF+CllSqzyAuQdB/wYssLgXERHxbgpZUqt0AK4zWTsXOGNhLyIi4t0UsqTWMTvO4RdgmZWNiIiIV1PIklonFrjEZK0ugBcRkYpSyJJax4b5R+18DWy2sBcREfFeCllSK90BhJis1XBSERGpCIUsqZXqAXebrF0CZFrYi4iIeCeFLKm17gN8TdQVAPMt7kVERLyPQpbUWq2Am03WzgPyLexFRES8j0KW1GpmL4DPBN6zshEREfE6CllSq/UHepqsnQUYFvYiIiLeRSFLajUb5oeTbgLWWtiLiIh4F4UsqfVGAM1M1mqcg4iImKWQJbVeAPAnk7UfYH/cjoiISHkUskSACUAdE3WFwKsW9yIiIt5BIUsECAeGm6x9HThpYS8iIuIdFLJEzjJ7AfxR4B0rGxEREa+gkCVyVm+gn8lajXMQEZHyKGSJnMfs0azvgVVWNiIiIh5PIUvkPDcDLUzWapyDiIiURSFL5Dx1sD842oyPgT0W9iIiIp5NIUvkAuOBQBN1BjDb4l5ERMRzKWSJXKAJ8EeTtQuBXAt7ERERz1WhkDV37lyioqIIDAwkOjqaDRs2lFn//vvv07lzZwIDA+natSuffvqp0+tjx47FZrM5LUOHDq1IayJV4kGTdceBxVY2IiIiHsvlkLV06VISEhJITExk8+bNdO/enbi4OLKyskqsX7t2LSNHjmTcuHFs2bKFYcOGMWzYML777junuqFDh3Lw4EHH8s9//rNin0ikCnQFfmeydjZQZGEvIiLimVwOWS+99BJ333038fHxXHLJJcyfP5969eqxcOHCEutnzZrF0KFDefzxx+nSpQvTpk3j8ssvZ86cOU51AQEBhIeHO5aQkJCKfSKRKmJ2nMMu4DMrGxEREY/kUsgqKChg06ZNxMbGFu/Ax4fY2FhSU1NL3CY1NdWpHiAuLu6i+pSUFJo1a0anTp2YMGECR44cKbWP/Px8cnNznRaRqnY90NZkrcY5iIjIhVwKWYcPH6awsJCwsDCn9WFhYWRkZJS4TUZGRrn1Q4cO5a233iI5OZnnn3+eNWvWcO2111JYWFjiPpOSkggODnYskZGRrnwMEVN8gQdM1q4EfrCwFxER8Tw14u7CESNGcOONN9K1a1eGDRvGxx9/zMaNG0lJSSmxfvLkyeTk5DiWX375pXobllojHmhgsvYVKxsRERGP41LICg0NxdfXl8zMTKf1mZmZhIeHl7hNeHi4S/UAbdu2JTQ0lN27d5f4ekBAAEFBQU6LiBWCgbEma9/C/vBoERERcDFk+fv706tXL5KTkx3rioqKSE5OJiYmpsRtYmJinOoBVq5cWWo9wP79+zly5AjNmzd3pT0RS5g9Zfgb8HcrGxEREY/i8unChIQEFixYwOLFi9m+fTsTJkwgLy+P+Ph4AEaPHs3kyZMd9Q899BArVqzgb3/7Gzt27GDq1Kl8++233H///QCcOHGCxx9/nHXr1rFv3z6Sk5O56aabaN++PXFxcVX0MUUqriNwncnaOcAZC3sRERHP4efqBsOHD+fQoUNMmTKFjIwMevTowYoVKxwXt6enp+PjU5zd+vXrx7vvvsuf//xnnnzySTp06MDy5cu57LLLAPD19WXr1q0sXryY7OxsIiIiGDJkCNOmTSMgIKCKPqZI5TwEfFpuFfwCLAdutbQbERHxBDbDMAx3N1FZubm5BAcHk5OTo+uzxBIGcCmw3UTtVcCX1rYjIlKtrrzySjp27MiiRYvc3YpHqRF3F4rUdDbMP2rnK2CLhb2IiIhnUMgSMekOoJHJWg0nFRERhSwRk+oDd5us/SeQWW6ViIh4M4UsERfch7n/0xQAr1nci4iI1GwKWSIuaA3cbLJ2HvawJSIitZNCloiLzF4AnwG8Z2UjIiJSoylkibjoKqCHydpZ2Mc/iIhI7aOQJeIiG/bhpGZ8C6Ra2IuIiNRcClkiFTACaGqyVuMcRERqJ4UskQoIBP5ksvbfwH4LexERkZpJIUukgiYAdUzUFQKvmqj78ssvueGGG4iIiMBms7F8+XKn1z/44AOGDBlCkyZNsNlspKWlXbSPe+65h3bt2lG3bl2aNm3KTTfdxI4dO0y8u92f/vQnbDYbM2fOdKzbt28f48aNo02bNtStW5d27dqRmJhIQYHzvZMLFiygdevW9OzZk/Xr15t+TxERb6WQJVJBzYHbTNa+DvxWTk1eXh7du3dn7ty5pb7ev39/nn/++VL30atXLxYtWsT27dv5/PPPMQyDIUOGUFhYWG6Py5YtY926dURERDit37FjB0VFRbz22mt8//33vPzyy8yfP58nn3zSUZOens4LL7zAkiVLeOqpp4iPjy/3/UREvJ2fuxsQ8WQPAe+YqDtytu6uMmquvfZarr322lJfv+OOOwD7kaXSjB8/3vHPUVFRPPvss3Tv3p19+/bRrl27Urc7cOAADzzwAJ9//jnXX3+902tDhw5l6NChjp/btm3Lzp07mTdvHjNmzADsD2lv1KgR3bp1Izw8nN9+Ky9Sioh4P4UskUroA8Rg7g7CWcA47HcnVoe8vDwWLVpEmzZtiIyMLLWuqKiIO+64g8cff5xLL73U1L5zcnJo3Lix4+fLLruMbt26ERwcjL+/PwsWLKh0/yIink6nC0Uqyew4h++A1VY2ctarr75KgwYNaNCgAZ999hkrV67E39+/1Prnn38ePz8/HnzQ3JjV3bt3M3v2bO655x6n9W+88QaZmZkcOXKEUaNGVeoziIh4A4UskUr6PdDCZG11jHMYNWoUW7ZsYc2aNXTs2JHbbruNU6dOlVi7adMmZs2axZtvvonNVv4xtgMHDjB06FD+8Ic/cPfdFz8uu0mTJtStW7fSn0FExBsoZIlUUh3gXpO1HwF7LOwFIDg4mA4dOjBgwAD+9a9/sWPHDpYtW1Zi7VdffUVWVhatWrXCz88PPz8/fv75Zx599FGioqKcan/99VcGDx5Mv379eP311y3+FCIink8hS6QKjMc+O6s8BjDH4l6c3s8wMAyD/Pz8El+/44472Lp1K2lpaY4lIiKCxx9/nM8//9xRd+DAAQYNGuS4e9HHR//pEBEpjy58F6kCocAo4A0TtQuBvwANL1h/4sQJdu/e7fh57969pKWl0bhxY1q1asXRo0dJT0/n119/BWDnzp0AhIeHEx4ezk8//cTSpUsZMmQITZs2Zf/+/UyfPp26dety3XXXOfbbuXNnkpKSuPnmm2nSpAlNmjRx6qNOnTqEh4fTqVMnoDhgtW7dmhkzZnDo0CFHbXh4uMlvSESk9tGvoyJVxOwF8LnA4hLWf/vtt/Ts2ZOePXsCkJCQQM+ePZkyZQoAH374IT179nSMWBgxYgQ9e/Zk/vz5AAQGBvLVV19x3XXX0b59e4YPH07Dhg1Zu3YtzZo1c7zPzp07ycnJMf25Vq5cye7du0lOTqZly5Y0b97csXijrVu3ctVVVxEYGEhkZCQvvPCC6W2PHDlCy5YtsdlsZGdnO9Z/8MEHXHPNNTRt2pSgoCBiYmKcjhReaPr06dhsNh5++GGn9ZUdNisi1ctmGIbh7iYqKzc3l+DgYHJycggKCnJ3O1KL/Q5zdxB2AHag33KsVlBQUOadlRfKzc2lY8eOxMbGMnnyZLZt28add97JzJkznWaQlWbYsGEUFBTw2WefcezYMRo1agTAww8/TEREBIMHD6ZRo0YsWrSIGTNmsH79ekeoPmfjxo3cdtttBAUFMXjwYKfp+6+//jqdO3d2HNmcOnUqaWlp7N27F19fX9OfU8RVV155JR07dmTRokXubsWj6HShSBV6CHMhaxewAriuvEJxyaBBg7jsssvw8/Pj7bffpmvXrqxebX5wxjvvvENBQQELFy7E39+fSy+9lLS0NF566aVyQ9a8efPIzs5mypQpfPbZZ06vnR+UAJ577jn+85//8NFHHzmFrBMnTjBq1CgWLFjAs88+e9F7VHTYrIi4h36RFqlC/we0MVlbHeMcaqPFixfj7+/PN998w/z587n22msdc8NKWs4fwJqamsqAAQOcjn7FxcWxc+dOjh07Vup7/vDDD/zlL3/hrbfeMnVTQFFREcePH3ca6Apw3333cf311xMbG1vuPswOmxUR99GRLJEq5As8ACSYqP0C2A50sbSj2qdDhw5O11H9/e9/L/MxP3XqFD/mOyMjgzZtnGNyWFiY47WQkJCLts/Pz2fkyJG8+OKLtGrVip9++qncHmfMmMGJEye47bbip18uWbKEzZs3s3HjxjK3ffXVV3niiSfIy8ujU6dO5Q6bFRH3UcgSqWJ3AlOAEyZqXwHmWdtOrdOrVy+nn1u0MDsqtmImT55Mly5d+OMf/2iq/t133+WZZ57hP//5j+OGhF9++YWHHnqIlStXEhhY9jCQUaNGcc0113Dw4EFmzJjBbbfdxjfffFPudiJS/XS6UKSKBQNjTda+BZR+Ekoqon79+k4/u3K6MDw8nMzMTKftz/1c2riKVatW8f777zuGuV599dUAhIaGkpiY6FS7ZMkS7rrrLt577z2nU4KbNm0iKyuLyy+/3LGfNWvW8Morr+Dn50dhYaGj1pVhsyLiXjqSJWKB+zE3dPQk8HfgcWvbqdVcOV0YExPDU089xenTpx3rV65cSadOnUo8VQjw73//22n/Gzdu5M477+Srr75yuhj9n//8J3feeSdLlixxjOE45+qrr2bbtm1O6+Lj4+ncuTMTJ04s9c7B8obNioh7KWSJWKATcC3wWXmF2MPYI+j/jFZx5XTh7bffzjPPPMO4ceOYOHEi3333HbNmzeLll1921CxbtozJkyc75lNdeFff4cOHAejSpYtjhMO7777LmDFjmDVrFtHR0WRkZABQt25dgoODadiwIZdddpnTfurXr0+TJk0c680OmxWpKunp6ezdu5eBAwc6rf/444/p16/fRTduyMV0ulDEImaHk6YD/7GyETEtODiYL774gr1799KrVy8effRRpkyZ4jQ6IScnxzFt36zXX3+dM2fOcN999zkNc33oIbP/lpgf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oUbPnj2N9evXG19//bXRoUMHY+TIkY7X9+/fb3Tq1MlYv369Y93BgweNLVu2GAsWLDAA48svvzS2bNliHDlyxB0foUZasmSJERAQYLz55pvGDz/8YIwfP95o1KiRkZGRYRiGYdxxxx3GpEmTHPXffPON4efnZ8yYMcPYvn27kZiYaNSpU8fYtm2buz6Cx3D1u87Pzze2bNlibNmyxWjevLnx2GOPGVu2bDF27drlro/gEVz9nqdPn274+/sb//rXv4yDBw86luPHj7vrI3gMV7/r5557zvjiiy+MPXv2GD/88IMxY8YMw8/Pz1iwYIG7PkKtp5AlhmEYxpEjR4yRI0caDRo0MIKCgoz4+Hin/wju3bvXAIzVq1c71iUmJhrARcuiRYuq/wPUYLNnzzZatWpl+Pv7G3379jXWrVvneG3gwIHGmDFjnOrfe+89o2PHjoa/v79x6aWXGp988kk1d+y5XPmuz/07feEycODA6m/cw7jyPbdu3brE7zkxMbH6G/dArnzXTz31lNG+fXsjMDDQCAkJMWJiYowlS5a4oWs5x2YYhlHth89EREREvJyuyRIRERGxgEKWiIiIiAUUskREREQsoJAlIiIiYgGFLBERERELKGSJiIiIWEAhS0RERMQCClkiIiIiFlDIEhEREbGAQpaIiIiIBRSyRERERCygkCUiIiJigf8H3bEjLSAArhsAAAAASUVORK5CYII=", + "image/png": "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K0m64447lJmZqQEDBuipp55S7969tWTJEknSpZdeqqVLl+qPf/yj2rZtq9jYWPXs2VMxMTFOV3mkuqtMXMkBgOYh6MBrpJuse19S/RHE2dk5NyUlJU77S0pKGp2Pk5KSourqau3bt6/e17t27SpJ6tevn9P+vn37qri42PHzz3/+c9ntdh04cEBHjhzRQw89pMOHD+viiy820T0AwAyCDrxGD0l9TdSdkvRhk1VSz549FRsbq/z87599Xl5ero0bNyo1NbXB44qKihQQEKAuXbrU+3pCQoLi4uK0a9cup/2ff/65evTocV59TEyM2rVrp+XLlyssLEzXX3+9ie4BAGYQdOBVXL3N/OTJkyoqKlJRUZGkugnIRUVFKi4uls1m029/+1s98sgjeuutt7Rt2zZlZGQoLi5OY8aMkVR3m/iCBQv0ySef6Msvv9Srr76qu+++W7/4xS/UsWNHSdKBAwfUp08fbdq0SZJks9n0hz/8QU8//bT+8Y9/aPfu3XrwwQe1c+dOTZo0ydHjs88+qy1btujzzz/XwoULNX36dOXk5KhDhw4XfqK83H//+18NHTpUYWFhio+P1+OPP2762CNHjqh79+6y2Ww6fvy4Y/8bb7yh66+/Xp07d1ZERIRSU1O1cmXDA525ubmO35EfuuOOO9SrVy+1adNGnTt31s0336ydO3e6+hUBtBbDC5SVlRmSjLKyMne3AjdbaRiGTGyXfVe/Zs0aQ3UPNnfaJk6caBiGYdTW1hoPPvigERMTY4SGhhojRowwdu3a5fi8wsJCIyUlxYiMjDTCwsKMvn37GvPmzTNOnz7tqNm7d68hyVizZo1Trzk5OUb37t2Ntm3bGqmpqcb69eudXp8wYYLRqVMnIyQkxEhKSjJefvnlljtRHqSystKl+rKyMiMmJsYYP368sX37duNvf/ub0aZNG+OFF14wdfzNN99s3HDDDYYk49ixY479M2bMMB577DFj06ZNxueff27MmjXLCA4ONrZs2XLee2zatMlISEgwkpKSjBkzZji99sILLxgffPCBsXfvXqOwsNC46aabjPj4eKO6utql7wnUp23btsaCBQvc3YZPIejAq3xrGEYbw1zY2e+mHv3dsGHDjGnTphkzZswwoqKijOHDh7t0/HPPPWd07NjRKSDNnDnT6N27t6ljhw0bZuTn558XdOrTr18/Y86cOU77Tpw4YVxyySXG6tWrjWHDhp0XdM71ySefGJKM3bt3N9kf0BSCTstj6ApeJUzScJO1LX33FcxbunSpQkJC9NFHH2nRokW64YYb1K5duwa3Sy+91HFsQUGBrrnmGqeFEdPT07Vr1y4dO3aswc/89NNPNXfuXL388svn3blWn9raWp04cUKdOnVy2j9t2jSNHj3aaX2lhlRUVOivf/2revbsqfj4+CbrAbQ+VkaG1xkl6V0TdXmSJjVZBStccsklTvNqXnzxRafnfJ0rODjY8We73a6ePXs6vX52rSO73e6YG/VDlZWVGjdunJ544glddNFFjrWMGjN//nydPHlSt956q2PfsmXLtGXLFm3evLnRY5977jndc889qqioUO/evbV69WpWrAY8FEEHXsfshOTVkqrFL7k7DBw40Onnbt26Wfp5s2bNUt++ffWLX/zCVP1rr72mOXPm6F//+pfj7rn9+/drxowZWr16tcLCwho9fvz48br++ut18OBBzZ8/X7feeqs++uijJo8D6lNTUyNJCgwMdNp/5swZp38EoHkYuoLXuURSzyarpDJJGy3uBfULDw93+tmVoavY2Nh61zY6+1p93n//ff39739XUFCQgoKCNGLECElSdHS0srOznWqXLVumX/3qV3r99dedhqcKCwt16NAhXXHFFY73+eCDD/T0008rKCjI8R8jqW4Rx0suuUTXXHON/vGPf2jnzp168803m3GmgLrh0vHjxzvt27hxo6Kjo51WaUfz8I9deB2b6q7qPG+iNk/SVda2AxNcGbpKTU3V/fff7/Sv2dWrV6t37971DltJ0j//+U+n99+8ebNuv/12rV+/Xr169XLs/9vf/qbbb79dy5Yt0+jRo53eY8SIEdq2bZvTvszMTPXp00czZ84871/bZxnfzX9vaKVsoClXXXWVMjIynB7zkp2dre7duze4XhfMI+jAK6XLfNB52OJe0DRXhq5+/vOfa86cOZo0aZJmzpyp7du3609/+pOeeuopR82bb76pWbNmOdav+WGYkaTS0lJJdatRn12X6LXXXtPEiRP1pz/9SSkpKY5/Kbdp08bxmI3LLrvM6X3Cw8MVFRXl2P/ll19q+fLlGjlypDp37qyvv/5aubm5atOmjW688UbXTgrwnXHjxunhhx/WnDlzJNWt97Vy5UotX77c1MR6NI4zCK90ncyl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", "text/plain": [ "
" ] @@ -243,10 +248,11 @@ " l1, l2, l3 = (.422864, .359041, .15)\n", " offset_x, offset_y, offset_z = (0.145, 0, 0.195)\n", " r, theta = cartesian_to_polar(x, y)\n", - " base, shoulder, elbow, wrist = get_joints_from_xyz_rel(x, y, z)\n", + " base, shoulder, elbow, wrist, _, _ = get_joints_from_xyz_rel(x, y, z)\n", "\n", " # Print angles\n", " print('Target position (x,y,z):', x, y, z)\n", + " print('R: ', round(math.sqrt(x**2+y**2),4))\n", " print('Angles (base, shoulder, elbow, wrist):', [round(math.degrees(i), 4) for i in [base, shoulder, elbow, wrist]])\n", " print('Robot Angles:', [round(math.degrees(i), 4) for i in get_joints_from_xyz_abs(x, y, z)])\n", "\n", @@ -287,7 +293,7 @@ "\n", " # Display z arrow\n", " plt.annotate(f'', xy=(x3, 0), xycoords='data', xytext=(tx, ty), textcoords='data', arrowprops={'arrowstyle': '<->'})\n", - " plt.annotate(f'z={round(ty,4)}', xy=(x3+0.01, y2/2), xycoords='data', xytext=(x3/2, 0), textcoords='offset points')\n", + " plt.annotate(f'z={round(ty,4)}', xy=(tx+0.01, ty/2), xycoords='data', xytext=(x3/2, 0), textcoords='offset points')\n", " \n", " # Display plot\n", " ax = plt.subplot(111)\n", @@ -300,85 +306,9 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Target position (x,y,z): 0.3 0.3 0.3\n", - "Angles (base, shoulder, elbow, wrist): [33.9862, 85.2162, 73.3858, 11.8304]\n", - "Robot Angles: [33.9862, -85.2162, 73.3858, -78.1696]\n", - "elbow (x,y): 0.035 0.421\n", - "wrist (x,y): 0.387 0.495\n", - "tool (x,y): 0.537 0.495\n" - ] - }, - { - "data": { - "image/png": "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AAA3IIyYAPvSAAD8GWHExxliXxoAgH8jjPi4Wkk/ONGOwasAALMijPg4Bq8CAPwdYcTHMa0XAODvCCM+jp4RAIC/I4z4uEbDSH299Mgj0mWXSZGRUmqq/jV3rgzDsDf55S9/qaCgIIfX9ddff8HPKiws1MCBAxUdHa327dtr/Pjx2r59u/3nR44c0X333acePXooMjJSXbt21W9/+1tVV1c7XOf999/XFVdcoR49euiDDz64lK8PAAgAod4uABfW6GOaJ56QFi+WXn1V6tNH+vJLrc7L059jY/Xb3/7W3uz666/XsmXL7O/Dw8Mv+Fn/+Mc/NGXKFA0cOFCnT5/Wgw8+qBEjRmjr1q1q06aNvv/+e33//fdasGCBevfurT179ujXv/61vv/+e7399tuSJKvVqilTpmjZsmUyDEN33nmnRowYobCwsJa4HQAAP0QY8XGN9oysXy+NGyeNGdPwPiVF2W+8oZKSEodm4eHh6tChg9OftXr1aof3r7zyitq3b6/S0lINGTJEffv21V/+8hf7z1NTU/XYY4/p9ttv1+nTpxUaGiqr1aqQkBClp6dLkv0YYQQA0BQe0/i4RntGBg2Sioqk//yn4f2//63Nn32mUaNGOTRbt26d2rdvrx49eujee+/V4cOHXfrsHx+/JCQkXLBNTEyMQkMbcm1MTIzy8vLUsWNHderUSffee6+io6Nd+lwAQGChZ8THNdozMmOGZLFIPXtKISFSfb3ue+wx3XbbbfYm119/vf77v/9bl112mXbu3KkHH3xQo0aNUnFxsUJCQi76uTabTdOnT9fVV1+tvn37Ntrm0KFDmjt3ru6++26H4wUFBZo+fbqCg4MJIgCAiyKM+LhGe0befFP6f/9PWr5c6tNHYeXl+r/p05XSqZMmTZokSbr55pvtza+88kr169dPqampWrduna677rqLfu6UKVP01Vdf6bPPPmv05xaLRWPGjFHv3r01e/bs834eGxvrzNcDAIDHNL6u0Z6R++9v6B25+WbpyivV8Y479Lvf/U6FhYVNXqd79+5KTEzUjh07LvqZU6dO1QcffKBPPvlEXbp0Oe/nNTU1uv766xUdHa133nlHrVq1cuEbAQDgiDDiw5rcl+bECSn47C9dO0khISGy2WxNXmvv3r06fPiwOnbs2PTnGYamTp2qd955R3//+9912WWXndfGYrHY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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Target position (x,y,z): -0.3 -0.3 0.7\n", - "Angles (base, shoulder, elbow, wrist): [-117.3239, 78.0693, 0.0255, 79.0945]\n", - "Robot Angles: [-117.3239, -78.0693, 0.0255, -10.9055]\n", - "elbow (x,y): 0.087 0.414\n", - "wrist (x,y): 0.162 0.765\n", - "tool (x,y): 0.312 0.762\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\nadee\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\scipy\\optimize\\_minpack_py.py:178: RuntimeWarning: The iteration is not making good progress, as measured by the \n", - " improvement from the last ten iterations.\n", - " warnings.warn(msg, RuntimeWarning)\n" - ] - }, - { - "data": { - "image/png": "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WnUICQkJYsaMGYafdTqdCA8P73AC63/9138ZrUtKSuIEVhMsPb5CCPHmm28KX19fUVpaao0WHZolx/fatWttPmcnTJggHnzwQXH48GHR1NRkzdYdgqV/f7OyskS/fv2ETqczrMvLyxNhYWGy92ptdh9GhGi99PTuu+8We/bsETt37hSDBg0yuvT0p59+EkOGDBF79uwxuQ/wahqTLD2+Wq1WJCYmirvuukucOnVKXLx40bDcuHHDVm/DLqxdu1ao1Wrx0UcfiWPHjokXXnhB+Pv7C41GI4QQYurUqWL27NmG+l27dgk3NzexdOlScfz4cZGTk8NLeztg6fFdsmSJ8PDwEJ988onR39P6+npbvQW7Zunx/TVeTdMxS49veXm56Nmzp5gxY4Y4efKk+OKLL0RwcLBYuHChrd6CbBwijFy+fFlMmTJF+Pj4CF9fX5Genm70YXL27FkBQHz99dcm98EwYpqlx/frr78WANpdzp49a5s3YUdWrFgh+vbtKzw8PERCQoL49ttvDb8bOXKkSEtLM6r/+OOPxeDBg4WHh4e44447xKZNm6zcsWOx5Pj269ev3b+nOTk51m/cQVj69/eXGEbMs/T47t69WyQmJgq1Wi369+8vFi1a5JRf+hRCCGHtU0NEREREN9n9fUaIiIjIuTGMEBERkU0xjBAREZFNMYwQERGRTTGMEBERkU0xjBAREZFNMYwQERGRTTGMEBERkU0xjBAREZFNMYwQERGRTTGMEBERkU0xjBAREZFN/X/QN2IC9dzhWwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Target position (x,y,z): -0.3 0.4 0.2\n", - "Angles (base, shoulder, elbow, wrist): [111.1813, 100.8341, 104.0795, -3.2455]\n", - "Robot Angles: [111.1813, -100.8341, 104.0795, -93.2455]\n", - "elbow (x,y): -0.079 0.415\n", - "wrist (x,y): 0.279 0.395\n", - "tool (x,y): 0.429 0.395\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGnCAYAAACZ9nwoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7Y0lEQVR4nO3dfXQU9b3H8c9uQhIgDxAiCdAAStSoCOESEuMtiDU13nqxVHuLlCM0ctBW4Lbm2ipFQS0YiqhUpXJF1KpQ0Fq0UkUxwFVsGhATeZJUKBhENjw1CQRIQnbuHyurK3mYTTLZ2d3365w5sLPf2f3OiOHD/H4z4zAMwxAAAIANOQPdAAAAQHMIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKhZ57733NGbMGPXt21cOh0Ovvfaaz/uGYWjWrFnq06ePunbtqtzcXH366adNflZdXZ0yMjLkcDhUVlbW4veePn1aU6dOVa9evRQbG6ubbrpJlZWVPjWbN2/WNddcox49eqhnz57Ky8vTxx9/7FOzZMkSDRgwQMOGDVNJSYnf+w8AQEcgqFiktrZWQ4cO1aJFi5p8f/78+Xr88ce1ePFilZSUqHv37srLy9Pp06fPqf3Vr36lvn37mvreO++8U2+88YZeeeUV/d///Z+++OIL3Xjjjd73T5w4oeuuu079+/dXSUmJNm7cqLi4OOXl5amhoUGSVFFRofnz52vFihWaOXOm8vPz23AEAADoAAYsJ8lYtWqV97Xb7TZSUlKMhx9+2LuuqqrKiI6ONv74xz/6bPvmm28a6enpxo4dOwxJRmlpabPfU1VVZXTp0sV45ZVXvOs++eQTQ5JRXFxsGIZhbN682ZBkVFRUeGu2bt1qSDI+/fRTwzAMY9u2bUZmZqZx4sQJ45///KcxcODA9uw+AABtxhmVANi7d69cLpdyc3O96xISEpSdna3i4mLvusrKSk2ZMkUvvviiunXr1urnbtmyRQ0NDT6fm56erv79+3s/9+KLL1avXr20dOlS1dfX69SpU1q6dKkuueQSDRw4UJI0ePBgDRkyRAkJCbrssss0Z86cDtpzAAD8Q1AJAJfLJUlKTk72WZ+cnOx9zzAM/eQnP9FPf/pTZWZmmv7cqKgo9ejRo9nPjYuL04YNG/TSSy+pa9euio2N1Zo1a/TWW28pMjLSu83SpUtVWVmpo0ePasKECW3dVQAA2oWgYlNPPPGEjh8/rhkzZnTo5546dUqTJ0/Wv//7v+vvf/+7PvjgAw0ePFjXX3+9Tp065VPbq1cvde3atUO/HwAAfxBUAiAlJUWSzrkap7Ky0vveunXrVFxcrOjoaEVGRiotLU2SlJmZqUmTJjX7ufX19aqqqmr2c5cvX659+/bpueee04gRI3TFFVdo+fLl2rt3r15//fWO3E0AANqNoBIA559/vlJSUlRUVORdV1NTo5KSEuXk5EiSHn/8cX388ccqKytTWVmZ3nzzTUnSypUrNXfu3CY/d/jw4erSpYvP55aXl6uiosL7uSdPnpTT6ZTD4fDWnH3tdrs7fF8BAGiPyNZLAs8wDB0/flxxcXE+f8Ha2YkTJ7R7927v671796qsrEyJiYnq37+/fvGLX2jOnDm68MILdf755+u+++5T3759NXbsWElS//79fT4vNjZWkjRo0CB961vfkiQdOHBA11xzjV544QVlZWUpISFBkydPVkFBgRITExUfH6/p06crJydHV1xxhSTpu9/9rn75y19q6tSpmj59utxut+bNm6fIyEhdffXVnXBkAAAwLyiCyvHjx5WQkKDq6mrFx8cHuh1TPvzwQ5+/+AsKCiRJkyZN0vPPP69f/epXqq2t1W233aaqqip9+9vf1po1axQTE2P6OxoaGlReXq6TJ0961z322GNyOp266aabVFdXp7y8PP3+97/3vp+enq433nhDDzzwgHJycuR0OjVs2DCtWbNGffr06YA9BwCg4zgMwzAC3URrampqgi6oAACA9mOOCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgCEifvvv1/p6enq3r27evbsqdzcXJWUlLS4TWFhoUaMGKG4uDj17t1bY8eOVXl5uU/N6NGj5XA4fJaf/vSnPjV/+ctfdNFFF+niiy/W6tWrO3zfELq4PBkAwsTy5cvVu3dvXXDBBTp16pQee+wxvfLKK9q9e7fOO++8Jre57rrrdPPNN2vEiBE6c+aMfv3rX2v79u3auXOnunfvLskTVC666CI9+OCD3u26devm/XldV1entLQ0PffcczIMQ7feeqv27NmjqKgo63caQS8obvgGAGi/H//4xz6vH330US1dulRbt27VNddc0+Q2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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "draw_arm(0.3, 0.3, 0.3)\n", "draw_arm(-0.3, -0.3, 0.7)\n", @@ -394,34 +324,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "30dd696bcdc14aec9a1d4c17fb4787d4", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(FloatSlider(value=0.3, description='x', max=1.0, step=0.01), FloatSlider(value=0.3, desc…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from ipywidgets import interact, FloatSlider\n", "\n", @@ -431,6 +336,142 @@ " z=FloatSlider(min=0, max=1, step=0.01, value=0.3))\n" ] }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Angles: [153.31198894476785, 105.69315886537287, 101.18338602047919, 4.509772844893658, -90.0, 0.0]\n", + "(cx, cy): (-0.11909893611698993, 0.0598693027836566)\n", + "-0.06746836046451549 0.16257881075200548\n", + "-0.24309496877200426 -0.18679793543865197\n", + "-0.29999999999998095 -0.29999999999996196\n" + ] + }, + { + "data": { + "image/png": "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zc7f6tatm2JiYnTnnXd6n2vTpo3i4+PVokULtWjRQsePH5ck/eUvf1GzZs3UrFkz9ejRQ8fOMur+2muvqVmzZmrRooU6duzovfvpsmXLlJCQoNDQUKWkpHj3z8nJUe/evXXjjTfq559/PmuNhw+bAf7zLPwNuIaAsax58+aqW7eu/P561o2vm1NjklT33nynxk6JjQ2s6bJDhgzRhx9+eMbzkydP9i58GhERIUkaOnSoVq9erdWrV6tmzZp65513znhdv379tHr1aq1atUpdunRRcnKyJKlatWoaM2aMevXqlW//mTNnqnXr1ho5cqSGDx9+1hpPXf/ia9PDAYmAsWrp0qXaunWrDh48qKlTp7pdzsXL/FXa+IbZ9oRITc7sXiRzkWUgXfDXpk0b7y0bLuTUaTXHcZSRkXHWc9x5T70dO3bMu89ll12m5s2bKygo//+Oubm5CgoKUkhIiHJzc8/6vgQMfBkBY9Ezzzyj6OholStXTs8884z/djEbX5eyT07yqHefFFnrrLvFxgZWwJxL79691bJlS7322mv5nh88eLCqVaumdevWqX///md97UsvvaRatWrpww8/1FNPPXXe9+nYsaNmzpypBx54QA8//PBZ9znVMRIw8EUEjCVLly7VjBkz1KRJE9WuXVurVq3yzy4m81dzYaUkBYWedezllDp1zLUYgbzw4vjx47V69WrNnTtXU6dO1Weffeb92ptvvqmdO3eqZcuWmjhx4llf/8QTT+jHH3/U/fffr3//+9/nfa/Q0FBNnjxZ8+bN895m4re+/16KifHdC1xRshEwljzzzDNq1KiRatSooXLlyqlt27b+2cVsfPV091L3fimy5jl3veIK8zGQb4BV/eTyxdHR0brrrru0fPnyfF8PCgpSr1699Mknn5z3OHffffcF9ymI1FRzT5iScO8bFL02bdpo7Nix1o5PwFiQmpqqGTNm6Omnn/aeVx86dKhWrVqVb5aQz8s8YBa1lE52L0+ed/c6dcxf04EaMNnZ2dq/f78kKSsrSzNmzPDeZmHz5s3e/aZNm6b4+DNvG513n6lTp551n8JKTZUSEi75MEA+H374oaKiovL9zA4cOFDx8fFnnSF5LgF/R0s3hIWFacCAAbrzzjs1bdo0SdKNN96oxx9/XOXKlXO3uMLY8KqUfcRs1+t33u5FMn9Ft2oVOAHToUMH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2qldu7YjyRk1apSLhQamxx9/3JHktGjRwpkyZYqTm5t71v3S0tIcSU5aWlqBjvvLL784VapUcV544QXvc4sWLXJCQ0Od2bNnX3Ldhw4dckJDQ51JkyZ5n9uwYYMjyVmyZEmBj3Pq+yqKmoDCImBsys11nKuvPh0w//2v4zhnBsudd97prF692uViA9e8efOcdu3anTdoChswjuM4n332mRMaGuosX77cSU9Pd+rWres88sgjjuM4zvz5853IyMjzPsaNG3fOY8+ZM8eR5Bw8eDDf8zVr1nRee+21AtWXmZnpvPzyy050dLSzb9++An9fQFFhmrJNX34pffON2W7SREpM1LfffqvrrrtOx48fV8WKFZWQkKD9+/dr8ODB7tZaArRo0ULbt29Xt27dFBMTo61bt6pcuXIXfbzOnTvrgQceUJ8+fZSQkKDIyEi9+OKLkqSEhAStWrXqvK+vUqXKOb+2Z88ehYWFnVFflSpVtGfPnvMeNyUlRT179tSxY8cUGxurWbNmqWLFigX6noCiRMDYdOpWyJK590tQkKKiohQVFaXjx49LksqUKaOqVavK4/G4VGTJkJubq6ysLOXm5kqSYmJiFFoEdw995ZVX1KRJE02aNEmpqakKDw+XJEVERCguLq5Ax0hOTlZycrL38/Xr119STW3bttWqVau0f/9+vfvuu7rrrru0dOlSVa5c+ZKOCxSa2y1UwFu40HH698839pKbm+vMmDHD+d3vfudIcq699lpn5syZ5xwfwMXLzs52PvroI6dhw4aOJKdTp07ON998c8Z+F3OKzHEcZ82aNU6pUqWc4OBgZ9q0ad7nC3OK7MCBA87mzZu9jxMnThTJKbJT4uLinOTk5EK9BigKBIyLfhs0r7zyitslBZz+/fufN1hOuZiAyczMdJo3b+784Q9/cJKTk53KlSs7e/fudRzHcY4dO5YvNM72SE9PP+exTw3yT5482fvcxo0bCz3I7ziOU7duXWfo0KGFeg1QFLiS3wc4jqP58+erVq1aql27ttvlBJS1a9cqMzNTrVq1Ou9+F3Ml/2OPPabJkyfru+++U1RUlG688UZFR0crJSWlKErXgw8+qM8//1xjx45V2bJl9fDDD0uSFi9e7N0nPj5eL774orp166ajR4/qhRdeUNeuXRUbG6v9+/frrbfe0oQJE5SamqrGjRsXSV1AgbkccIBPKGwH8/XXXzshISHOggULvM9t27bNKVu2rDNixIgiqen48ePOwIEDnZiYGKd06dJOt27dnN27d+fbR5Lz/vvve/fv1q2bU61aNScsLMyJjY11unbt6ixbtqxI6gEKiw4GEGuRATZwJT8AwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBgBQEDALCCgAEAWEHAAACsIGAAAFYQMAAAKwgYAIAVBAwAwAoCBgBghcdxHMftIgC3OY6jw4cPq0yZMvJ4PG6XAwQEAgYAYAWnyAAAVhAwAAArCBgAgBUEDADACgIGAGAFAQMAsIKAAQBY8f+nfkKEagQ73QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Target position (x,y,z): -0.3 -0.3 0.3\n", + "R: 0.4243\n", + "Angles (base, shoulder, elbow, wrist): [153.312, 105.6932, 101.1834, 4.5098]\n", + "Robot Angles: [63.312, -105.6932, 101.1834, -85.4902, -90.0, 90.0]\n", + "elbow (x,y): -0.114 0.407\n", + "wrist (x,y): 0.244 0.435\n", + "tool (x,y): 0.394 0.435\n" + ] + }, + { + "data": { + "image/png": "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K0m64447lJmZqQEDBuipp55S7969tWTJEknSpZdeqqVLl+qPf/yj2rZtq9jYWPXs2VMxMTFOV3mkuqtMXMkBgOYh6MBrpJuse19S/RHE2dk5NyUlJU77S0pKGp2Pk5KSourqau3bt6/e17t27SpJ6tevn9P+vn37qri42PHzz3/+c9ntdh04cEBHjhzRQw89pMOHD+viiy820T0AwAyCDrxGD0l9TdSdkvRhk1VSz549FRsbq/z87599Xl5ero0bNyo1NbXB44qKihQQEKAuXbrU+3pCQoLi4uK0a9cup/2ff/65evTocV59TEyM2rVrp+XLlyssLEzXX3+9ie4BAGYQdOBVXL3N/OTJkyoqKlJRUZGkugnIRUVFKi4uls1m029/+1s98sgjeuutt7Rt2zZlZGQoLi5OY8aMkVR3m/iCBQv0ySef6Msvv9Srr76qu+++W7/4xS/UsWNHSdKBAwfUp08fbdq0SZJks9n0hz/8QU8//bT+8Y9/aPfu3XrwwQe1c+dOTZo0ydHjs88+qy1btujzzz/XwoULNX36dOXk5KhDhw4XfqK83H//+18NHTpUYWFhio+P1+OPP2762CNHjqh79+6y2Ww6fvy4Y/8bb7yh66+/Xp07d1ZERIRSU1O1cmXDA525ubmO35EfuuOOO9SrVy+1adNGnTt31s0336ydO3e6+hUBtBbDC5SVlRmSjLKyMne3AjdbaRiGTGyXfVe/Zs0aQ3UPNnfaJk6caBiGYdTW1hoPPvigERMTY4SGhhojRowwdu3a5fi8wsJCIyUlxYiMjDTCwsKMvn37GvPmzTNOnz7tqNm7d68hyVizZo1Trzk5OUb37t2Ntm3bGqmpqcb69eudXp8wYYLRqVMnIyQkxEhKSjJefvnlljtRHqSystKl+rKyMiMmJsYYP368sX37duNvf/ub0aZNG+OFF14wdfzNN99s3HDDDYYk49ixY479M2bMMB577DFj06ZNxueff27MmjXLCA4ONrZs2XLee2zatMlISEgwkpKSjBkzZji99sILLxgffPCBsXfvXqOwsNC46aabjPj4eKO6utql7wnUp23btsaCBQvc3YZPIejAq3xrGEYbw1zY2e+mHv3dsGHDjGnTphkzZswwoqKijOHDh7t0/HPPPWd07NjRKSDNnDnT6N27t6ljhw0bZuTn558XdOrTr18/Y86cOU77Tpw4YVxyySXG6tWrjWHDhp0XdM71ySefGJKM3bt3N9kf0BSCTstj6ApeJUzScJO1LX33FcxbunSpQkJC9NFHH2nRokW64YYb1K5duwa3Sy+91HFsQUGBrrnmGqeFEdPT07Vr1y4dO3aswc/89NNPNXfuXL388svn3blWn9raWp04cUKdOnVy2j9t2jSNHj3aaX2lhlRUVOivf/2revbsqfj4+CbrAbQ+VkaG1xkl6V0TdXmSJjVZBStccsklTvNqXnzxRafnfJ0rODjY8We73a6ePXs6vX52rSO73e6YG/VDlZWVGjdunJ544glddNFFjrWMGjN//nydPHlSt956q2PfsmXLtGXLFm3evLnRY5977jndc889qqioUO/evbV69WpWrAY8FEEHXsfshOTVkqrFL7k7DBw40Onnbt26Wfp5s2bNUt++ffWLX/zCVP1rr72mOXPm6F//+pfj7rn9+/drxowZWr16tcLCwho9fvz48br++ut18OBBzZ8/X7feeqs++uijJo8D6lNTUyNJCgwMdNp/5swZp38EoHkYuoLXuURSzyarpDJJGy3uBfULDw93+tmVoavY2Nh61zY6+1p93n//ff39739XUFCQgoKCNGLECElSdHS0srOznWqXLVumX/3qV3r99dedhqcKCwt16NAhXXHFFY73+eCDD/T0008rKCjI8R8jqW4Rx0suuUTXXHON/vGPf2jnzp168803m3GmgLrh0vHjxzvt27hxo6Kjo51WaUfz8I9deB2b6q7qPG+iNk/SVda2AxNcGbpKTU3V/fff7/Sv2dWrV6t37971DltJ0j//+U+n99+8ebNuv/12rV+/Xr169XLs/9vf/qbbb79dy5Yt0+jRo53eY8SIEdq2bZvTvszMTPXp00czZ84871/bZxnfzX9vaKVsoClXXXWVMjIynB7zkp2dre7duze4XhfMI+jAK6XLfNB52OJe0DRXhq5+/vOfa86cOZo0aZJmzpyp7du3609/+pOeeuopR82bb76pWbNmOdav+WGYkaTS0lJJdatRn12X6LXXXtPEiRP1pz/9SSkpKY5/Kbdp08bxmI3LLrvM6X3Cw8MVFRXl2P/ll19q+fLlGjlypDp37qyvv/5aubm5atOmjW688UbXTgrwnXHjxunhhx/WnDlzJNWt97Vy5UotX77c1MR6NI4zCK90ncyl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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def display_arm(x, y, z):\n", + " # Get joint and position information\n", + " angles = get_joints_from_xyz_rel(x, y, z)\n", + " print('Angles:', [math.degrees(angle) for angle in angles])\n", + "\n", + " offset_x, offset_y, offset_z = (0, 0, 0.14) # Tool offset\n", + " l_bs, l1, l2, l3, l_wt = (0.1333, .425, .39225, .1267, .0997) # Limb lengths\n", + " cx, cy = l_bs*math.cos(angles[0]), l_bs*math.sin(angles[0]) # Base tangent point\n", + " line_angle = math.pi/2+angles[0]\n", + " print(f'(cx, cy): ({cx}, {cy})')\n", + "\n", + "\n", + " # Plot coordinate system\n", + " fig = plt.figure()\n", + " ax = fig.add_subplot(1, 1, 1)\n", + " ax.spines['left'].set_position('center')\n", + " ax.spines['bottom'].set_position('center')\n", + " ax.spines['right'].set_color('none')\n", + " ax.spines['top'].set_color('none')\n", + " ax.set_yticklabels([])\n", + " ax.set_xticklabels([])\n", + " ax.set_xticks([])\n", + " ax.set_yticks([])\n", + "\n", + " # Target point\n", + " # plt.plot(x, y, 'go')\n", + "\n", + " # Circle\n", + " circle = plt.Circle((0, 0), l_bs, color='b', fill=False, linewidth=1)\n", + " plt.plot([0, cx], [0, cy], color='b', linewidth=1)\n", + " ax.add_patch(circle)\n", + "\n", + " # Draw limbs\n", + " # Shoulder\n", + " x1, y1 = polar_to_cartesian(l1*math.cos(angles[1]), line_angle)\n", + " x1, y1 = cx+x1, cy+y1\n", + " print(x1, y1)\n", + " plt.plot([cx, x1], [cy, y1], color='cyan', linewidth=3)\n", + "\n", + " # Elbow\n", + " x2, y2 = polar_to_cartesian(l2*math.cos(angles[1]-angles[2]), line_angle)\n", + " x2 += x1\n", + " y2 += y1\n", + " print(x2, y2)\n", + " plt.plot([x1, x2], [y1, y2], color='orange', linewidth=2)\n", + "\n", + " # Wrist\n", + " x3, y3 = polar_to_cartesian(l3*math.cos(angles[1]-angles[2]-angles[3]), line_angle)\n", + " x3 += x2\n", + " y3 += y2 \n", + " print(x3, y3)\n", + " plt.plot([x2, x3], [y2, y3], color='red', linewidth=2)\n", + "\n", + " # Display angle\n", + " plt.text(0.01, -0.01-cy/abs(cy+0.00001)*0.02, f'{round(math.degrees(angles[0]), 2)}°', fontsize=7)\n", + "\n", + " # Display x arrow\n", + " sign = x3/abs(x3)\n", + " plt.annotate(f'', xy=(0, y3), xycoords='data', xytext=(x3, y3), textcoords='data', arrowprops={'arrowstyle': '<->'})\n", + " plt.annotate(f'x={round(x3,3)}', xy=(-0.1-sign*0.13, y3-0.015), xycoords='data', xytext=(x2/2, 0), textcoords='offset points')\n", + "\n", + " # Display y arrow\n", + " sign = y3/abs(y3)\n", + " plt.annotate(f'', xy=(x3, 0), xycoords='data', xytext=(x3, y3), textcoords='data', arrowprops={'arrowstyle': '<->'})\n", + " plt.annotate(f'y={round(y3,3)}', xy=((x3-0.1), -0.015-sign*0.03), xycoords='data', xytext=(x3/2, 0), textcoords='offset points')\n", + "\n", + "\n", + " # Set axis limits and labels\n", + " axis_limit = math.hypot(x, y)+.1\n", + " plt.axis('square')\n", + " plt.xlim(-axis_limit, axis_limit)\n", + " plt.ylim(-axis_limit, axis_limit)\n", + "\n", + " # Adjust the position of axis labels\n", + " plt.xlabel('+x', horizontalalignment='right', x=1.05)\n", + " plt.ylabel('+y', verticalalignment='top', rotation=0, y=1.05)\n", + " plt.show()\n", + "\n", + " draw_arm(x,y,z)\n", + "\n", + "display_arm(-0.3,-0.3,0.3)" + ] + }, { "cell_type": "code", "execution_count": null,