{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from scipy.optimize import fsolve\n", "import matplotlib.pyplot as plt\n", "import math\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def cartesian_to_polar(x, y):\n", " r = np.sqrt(x**2 + y**2)\n", " theta = np.arctan2(y, x)\n", " return r, theta\n", "\n", "def polar_to_cartesian(r, theta):\n", " x = r * np.cos(theta)\n", " y = r * np.sin(theta)\n", " return x, y" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[45.0, 90.70951422006029, 110.71500355039022, -20.005489330329944]\n", "[45.0, -90.70951422006029, 110.71500355039022, -110.00548933032994]\n" ] } ], "source": [ "def normalize_degree(theta):\n", " # Normalizes degree theta from -1.5pi to 1.5pi\n", " multiplier = 1.5\n", " normalized_theta = theta % (math.pi * multiplier)\n", " \n", " # Maintain the negative sign if the original angle is negative\n", " if theta < 0:\n", " normalized_theta -= math.pi * multiplier\n", "\n", " # Return angle\n", " return normalized_theta\n", "\n", "def get_joints_from_xyz_rel(x, y, z, initial_guess = (math.pi/2, math.pi/2, 0), limbs=(.422864, .359041, .092124)):\n", " # Get polar coordinates of x,y pair\n", " r, theta = cartesian_to_polar(x, y)\n", " \n", " # Get length of each limb\n", " l1, l2, l3 = limbs\n", " \n", " # Formulas to find out joint positions for (r, z)\n", " def inv_kin_r_z(p):\n", " 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, # z\n", " a-b-c) # wrist angle\n", "\n", "\n", " # Normalize angles\n", " base, shoulder, elbow, wrist = [normalize_degree(deg) for deg in [theta, *fsolve(inv_kin_r_z, initial_guess)]]\n", "\n", " # Return result\n", " return base, shoulder, elbow, wrist\n", "\n", "def get_joints_from_xyz_abs(x, y, z):\n", " joints = get_joints_from_xyz_rel(x, y, z)\n", "\n", " # Joint offsets\n", " # Base, Shoulder, Elbow, Wrist\n", " inverse = [1, -1, 1, 1]\n", " offsets = [0, 0, 0, -math.pi/2]\n", "\n", " # Return adjusted joint positions\n", " return [o+j*i for j, o, i in zip(joints, offsets, inverse)]\n", "\n", "print([math.degrees(deg) for deg in get_joints_from_xyz_rel(0.3, 0.3, 0.3)])\n", "print([math.degrees(deg) for deg in get_joints_from_xyz_abs(0.3, 0.3, 0.3)])" ] }, { "cell_type": "code", "execution_count": 142, "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): [45.0, 90.7095, 110.715, -20.0055]\n", "Robot Angles: [45.0, -90.7095, 110.715, -110.0055]\n", "elbow (x,y): -0.005 0.423\n", "wrist (x,y): 0.332 0.3\n", "tool (x,y): 0.424 0.3\n" ] }, { "data": { "image/png": "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VBORWqUwB4IaQUA9b1fiM/75z38yefJkSkvt/5TbuHEjXbp08XJV1uKR1TTiGRoZEZFLVq+lgsh5CgsLmTFjBv369QOgTZs2TJs2zctVWY/CiIVoNY2ISM2aM2cOx44d46abbgLggQce4IMPPmDTpk1ersxaFEYsRKtpRERqTllZGTNmzCA5OZmmTe3POh8+fDjt2rVj+vTpXq7OWhRGLES3aUREao7NZmPChAnlbssEBATw2muvMWDAAC9WZj0ur6YR36UwIiJSc2w2G0888cQFx3v27EnPnj29UJF1aWTEQhRGRETEjBRGLERhREREzEhhxEK0mkZERMxIYcRCtJpGRETMSGHEQnSbRkREzEhhxEIURkRExIwURixEYURERMxIYcRCFEZERMSMFEYsRKtpRETEjBRGLESraURExIwURixEt2lERMSMFEYsRGFERETMSGHEQhRGRETEjBRGLEQTWEVExIwURixEIyMiImJGCiMWotU0IiJiRgojFqKRERERMSOFEQtRGBERETNSGLEQhRERETEjhREL0WoaERExI4URC9EEVhERMSOFEQvRbRoRETEjhRELURgREREzUhixEIURERExI4URC1EYERERM1IYsRCtphERETNSGLEQraYREREzUhixEN2mERERM1IYsRCFERERMSOFEQtRGBERETNSGLEQhRERETEjhREL0WoaERExI4URC9FqGhERMSOFEQvRbRoRETEjhRELURgREREzUhixEGf/MBVGRETElyiMWIwzoyMKIyIi4ksURizGmTCi1TQiIuJLFEYsxpkVNRoZERERX6IwYjG6TSMiImajMGIxCiMiImI2CiMWozAiIiJmozBiMQojIiJiNgojFqPVNCIiYjYKIxaj1TQiImI2CiMWo9s0IiJiNgojFqMwIiIiZqMwYjEKIyIiYjYKIxajMCIiImajMGIxWk0jIiJmozBiMVpNIyIiZqMwYjG6TSMiImajMGIxCiMiImI2CiMWozAiIiJmozBiMQojIiJiNgojFqPVNCIiYjYKIxaj1TQiImI2CiMW48zIiHHuJSIi4gsURizGmTACGh0RERHfoTBiMQojIiJiNgojFuNsGNEkVhER8RUKIxajkRERETEbhRGLcWY1DSiMiIiI76hWGJk9ezYxMTEEBwfTo0cP1q9fX2nbuXPn0qtXLxo2bEjD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C9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSCtphERETNRGLEg3aYREREzURixIIURERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0moaERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSBnVtMAlLm1ChEREecojFiQMyMjoFs1IiLiGxRGLEhhREREzERhxIIURkRExEwURixIYURERMykWmFk9uzZxMTEEBwcTI8ePVi/fn2lbbdt28bw4cOJiYnBZrMxa9as6tYqTnI2jGhFjYiI+AKXw8iSJUtISUkhNTWVjRs30rlzZwYOHMihQ4cqbH/69Gkuv/xypk+fTlRU1CUXLFVzdjWNRkZERMQXuBxGnn76aSZMmEBycjIdO3Zkzpw51K1bl3nz5lXYvlu3bjz11FPccsstBAUFXXLBUjXdphERETNxKYwUFxeTmZlJUlLSLyfw8yMpKYmMjIwaK6qoqIiCgoJyL3GewoiIiJiJS2HkyJEjlJaWEhkZWe54ZGQkubm5NVZUWloa4eHhjld0dHSNnbs2UBgREREz8cnVNFOmTCE/P9/x2rt3r7dLMhWFERERMRNn5zoC0LhxY/z9/cnLyyt3PC8vr0YnpwYFBWl+ySXQahoRETETl0ZGAgMDiY+PJz093XGsrKyM9PR0EhMTa7w4qR6tphERETNxaWQEICUlhXHjxpGQkED37t2ZNWsWhYWFJCcnAzB27FhatGhBWloaYJ/0un37dsf/3r9/P5s3b6Z+/fq0bdu2Br+K/Ey3aURExExcDiMjR47k8OHDTJ06ldzcXOLi4li+fLljUmtOTg5+fr8MuBw4cIAuXbo4fp45cyYzZ86kT58+rF69+tK/gVxAYURERMzE5TACMGnSJCZNmlThe78OGDExMRiGUZ1upJoURkRExEx8cjWNXBpNYBURETNRGLEgjYyIiIiZKIxYkFbTiIiImSiMWJBGRkRExEwURixIYURERMxEYcSCFEZERMRMFEYsSKtpRETETBRGLEgjIyIiYiYKIxak1TQiImImCiMWpJERERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0gRWERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSCtphERETNRGLEg3aYREREzURixIIURERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0moaERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSCtphERETNRGLEg3aYREREzURixIIURERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0moaERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSAbzv3BamRERER8gcKIRTkzOqIwIiIivkBhxKIURkRExCwURixKYURERMxCYcSiLhpGTp6E++4js1UrQkJC6NmzJxs2bHC8bRgGU6dOpVmzZoSEhJCUlMT3339/0f5iYmKw2WwXvCZOnOho88orr9C3b1/CwsKw2WycOHHigvNkZGQQFxdHTEwMr776qovfWkREzEhhxKIuGkZuvx1WrqTVggVs2bKFAQMGkJSUxP79+wGYMWMGzz33HHPmzGHdunXUq1ePgQMHcubMmUpPuWHDBg4ePOh4rVy5EoDf//73jjanT59m0KBBPPTQQ5WeZ/z48fztb39j0aJFpKWlsXfvXpe+t4iImI+zjzERk6n0D/ann+C99+CDD6jbuzdtgUcffZSPPvqIl156iccff5xZs2bxyCOPMHToUADeeOMNIiMjWbZsGbfcckuFp23SpEm5n6dPn06bNm3o06eP49h9990HwOrVqyutu7CwkK5du9K0aVMaNmzIyZMnnfzGIiJiVhoZsahKR0bOnoXSUggOLjdnJCQkhLVr15KVlUVubi5JSUmO98LDw+nRowcZGRlO9V1cXMzChQu57bbbsNlsLtU9depUOnToQHh4OFdffTUdO3Z06fMiImI+GhmxqErDSGgoJCbC449zpkMHSiMjeeutt8jIyKBt27bk5uYCEBkZWe5jkZGRjveqsmzZMk6cOMEf//hHl+seP348t9xyC8XFxTRs2NDlz4uIiPloZMSiLjpnZMECMAx2t2hBUFAQzz33HKNGjcLPr2Z+HV599VWuu+46mjdvXq3P16tXT0FERKQWURixqIuGkTZt4MsviTl1ir1797J+/XpKSkq4/PLLiYqKAiAvL6/cR/Ly8hzvXcyPP/7I559/zu23334J1YuISG2iMGJRzuwzYtSrR7NmzTh+/DgrVqxg6NChtG7dmqioKNLT0x3tCgoKWLduHYmJiVWec/78+TRt2pTBgwdfQvUiIlKbKIxY1EUnA61YAcuXU5SVxcqVK+nXrx+xsbEkJydjs9m47777eOKJJ/jwww/ZsmULY8eOpXnz5gwbNsxximuvvZYXXnih3GnLysqYP38+48aNIyDgwgpyc3PZvHkzu3fvBmDLli1s3ryZY8eO1cA39o7vvvuOXr16ERwcTHR0NDNmzHD6s0ePHuWyyy67YM+VpUuX0r9/f5o0aUJYWBiJiYmsWLGi0vNMnz7d8ed2vjvvvJM2bdoQEhJCkyZNGDp0KDt37nT1K4qIuJ3CiEVddGQkPx8mTiQ3NpaxY8dyzTXXsGLFCurUqQPAX//6V+6++27uuOMOunXrxqlTp1i+fDnBwcGOU+zZs4cjR46UO+3nn39OTk4Ot912W4Xdzpkzhy5dujBhwgQAevfuTZcuXfjwww8v6bvWlOLiYpfaFxQUMGDAAFq1akVmZiZPPfUUjz76KK+88opTnx8/fjydOnW64PhXX31F//79+fTTT8nMzKRfv37ccMMNbNq06YK2GzZs4OWXX67wPPHx8cyfP58dO3awYsUKDMNgwIABlJZq710R8TGGCeTn5xuAkZ+f7+1STKOTYRhU8Wrqtep8Q58+fYyJEyca9957r9GoUSOjb9++Ln3+xRdfNBo2bGgUFRU5jk2ePNlo3769U5/t06ePkZ6ebgDG8ePHL9q+Y8eOxrRp08odO3nypNGuXTtj5cqVRp8+fYx77733ouf473//awDG7t27q6xPRMp79913DcA4duyYt0uxJI2MWJSeTeOc119/ncDAQL7++mvmzJnDddddR/369St9XXHFFY7PZmRk0Lt3bwIDAx3HBg4cyK5duzh+/HilfW7fvp3HHnuMN954w6kVTGVlZZw8eZKIiIhyxydOnMjgwYPL7QlTmcLCQubPn0/r1q2Jjo6usr2IiCdpnxGLciaMnHV7Fb6vXbt25eZ5/Otf/+Knn36qtP3Pt7LAPgemdevW5d7/eX+W3NzcCpcnFxUVMWrUKJ566ilatmzJDz/8UGWNM2fO5NSpU9x8882OY4sXL2bjxo3lnilUkRdffJG//vWvFBYW0r59e1auXFkuPImI+AKFEYty5g9WIyP2eRXna9GihVv7mzJlCh06dOAPf/iDU+0XLVrEtGnT+OCDD2jatCkAe/fu5d5772XlypXl5vFUZPTo0fTv35+DBw8yc+ZMbr75Zr7++usqPyci4km6TWNRuk3jnHr16pX72ZXbNFFRURXux/LzexX54osveOeddwgICCAgIIBrr70WgMaNG5Oamlqu7eLFi7n99tt5++23y92KyczM5NChQ3Tt2tVxni+//JLnnnuOgICAchNUw8PDadeuHb179+bdd99l586dvP/++9W4UiK1U0lJyQXHDMOo8LhUn0ZGLEphpHpcuU2TmJjIww8/TElJieP4ypUrad++faU7yL733nvlzr9hwwZuu+021qxZQ5s2bRzH33rrLW677TYWL158wZ4t1157LVu2bCl3LDk5mdjYWCZPnoy/f8V/+sa5uctFRUWVfj8R+UVZWRlNmjRhwYIF5Y7/9a9/ZceOHXz88cdeqsx6FEYsSmGkely5TXPrrbcybdo0xo8fz+TJk9m6dSvPPvsszzzzjKPN+++/z5QpUxz7e5wfOADH8ugOHTrQoEEDwH5rZty4cTz77LP06NHD8UygkJAQwsPDCQ0N5corryx3nnr16tGoUSPH8R9++IElS5YwYMAAmjRpwr59+5g+fTohISFcf/31rl0UkVrKz8+Pbt268fDDD/O3v/0NgH379vHcc88xbdo0L1dnLbpNY1HOhhHD3YVYWHh4OJ999hlZWVnEx8dz//33M3XqVO644w5Hm/z8fHbt2uXSeV955RXOnj3LxIkTadasmeN17733On2O4OBg1qxZw/XXX0/btm0ZOXIkoaGhfPPNN465JyJStdTUVLZs2cL69esBePbZZwkNDWXixIlersxabIZh+Px/jwoKCggPDyc/P5+wsDBvl2MKg4DK9+z8xVmcCy4iIrVV//79+d///kdOTg6BgYFMmzaNBx980NtlWYpGRizK2ftvulUjInJxqamp5OTkAFC/fn2NiriBwohFOTvaoTAiInJx11xzjeORC5MmTSI0NNTLFVlPtcLI7NmziYmJITg4mB49ejjupVXmnXfeITY2luDgYK666io+/fTTahUrzlMYERGpOY8//jjNmze/4IGUUjNcDiNLliwhJSWF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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def draw_arm(x, y, z):\n", " #(.422864, .359041, .092124)\n", " l1, l2, l3 = (.422864, .359041, .092124)\n", " r, theta = cartesian_to_polar(x, y)\n", " base, shoulder, elbow, wrist = get_joints_from_xyz_rel(x, y, z, limbs=(l1, l2, l3))\n", " print('Target position (x,y,z):', x, y, z)\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", " x1, y1 = polar_to_cartesian(l1, shoulder)\n", " x2, y2 = polar_to_cartesian(l2, shoulder-elbow)\n", " x2 += x1\n", " y2 += y1\n", " x3, y3 = polar_to_cartesian(l3, shoulder-elbow-wrist)\n", " x3 += x2\n", " y3 += y2\n", "\n", " print('elbow (x,y):', round(x1,3), round(y1,3))\n", " print('wrist (x,y):', round(x2,3), round(y2,3))\n", " print('tool (x,y):', round(x3,3), round(y3,3))\n", "\n", " # Draw limbs\n", " plt.plot([0, x1], [0, y1], color='cyan', linewidth=7)\n", " plt.plot([x1, x2], [y1, y2], color='orange', linewidth=7)\n", " plt.plot([x2, x2+l3], [y2, y2], color='red', linewidth=7)\n", "\n", " # angles\n", " plt.text(0, 0.02, f'{round(math.degrees(shoulder), 2)}°')\n", " plt.text(x1, y1+0.02, f'{round(math.degrees(elbow), 2)}°')\n", " plt.text(x2, y2+0.02, f'{round(math.degrees(wrist), 2)}°')\n", "\n", " # r arrow\n", " plt.annotate(f'', xy=(0, 0), xycoords='data', xytext=(x3, 0), textcoords='data', arrowprops={'arrowstyle': '<->'})\n", " plt.annotate(f'r={round(r,4)}', xy=(x2/4, 0.01), xycoords='data', xytext=(x2/2, 0), textcoords='offset points')\n", "\n", " # z arrow\n", " plt.annotate(f'', xy=(x3, 0), xycoords='data', xytext=(x3, y3), textcoords='data', arrowprops={'arrowstyle': '<->'})\n", " plt.annotate(f'z={round(y2,4)}', xy=(x3+0.01, y2/2), xycoords='data', xytext=(x3/2, 0), textcoords='offset points')\n", " \n", " # Display\n", " ax = plt.subplot(111)\n", " ax.spines[['right', 'top']].set_visible(False)\n", " plt.axis('equal')\n", " plt.show()\n", "\n", "draw_arm(0.3, 0.3, 0.3)" ] }, { "cell_type": "code", "execution_count": 144, "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): [45.0, 90.7095, 110.715, -20.0055]\n", "Robot Angles: [45.0, -90.7095, 110.715, -110.0055]\n", "elbow (x,y): -0.005 0.423\n", "wrist (x,y): 0.332 0.3\n", "tool (x,y): 0.424 0.3\n" ] }, { "data": { "image/png": "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VBORWqUwB4IaQUA9b1fiM/75z38yefJkSkvt/5TbuHEjXbp08XJV1uKR1TTiGRoZEZFLVq+lgsh5CgsLmTFjBv369QOgTZs2TJs2zctVWY/CiIVoNY2ISM2aM2cOx44d46abbgLggQce4IMPPmDTpk1ersxaFEYsRKtpRERqTllZGTNmzCA5OZmmTe3POh8+fDjt2rVj+vTpXq7OWhRGLES3aUREao7NZmPChAnlbssEBATw2muvMWDAAC9WZj0ur6YR36UwIiJSc2w2G0888cQFx3v27EnPnj29UJF1aWTEQhRGRETEjBRGLERhREREzEhhxEK0mkZERMxIYcRCtJpGRETMSGHEQnSbRkREzEhhxEIURkRExIwURixEYURERMxIYcRCFEZERMSMFEYsRKtpRETEjBRGLESraURExIwURixEt2lERMSMFEYsRGFERETMSGHEQhRGRETEjBRGLEQTWEVExIwURixEIyMiImJGCiMWotU0IiJiRgojFqKRERERMSOFEQtRGBERETNSGLEQhRERETEjhREL0WoaERExI4URC9EEVhERMSOFEQvRbRoRETEjhRELURgREREzUhixEIURERExI4URC1EYERERM1IYsRCtphERETNSGLEQraYREREzUhixEN2mERERM1IYsRCFERERMSOFEQtRGBERETNSGLEQhRERETEjhREL0WoaERExI4URC9FqGhERMSOFEQvRbRoRETEjhRELURgREREzUhixEGf/MBVGRETElyiMWIwzoyMKIyIi4ksURizGmTCi1TQiIuJLFEYsxpkVNRoZERERX6IwYjG6TSMiImajMGIxCiMiImI2CiMWozAiIiJmozBiMQojIiJiNgojFqPVNCIiYjYKIxaj1TQiImI2CiMWo9s0IiJiNgojFqMwIiIiZqMwYjEKIyIiYjYKIxajMCIiImajMGIxWk0jIiJmozBiMVpNIyIiZqMwYjG6TSMiImajMGIxCiMiImI2CiMWozAiIiJmozBiMQojIiJiNgojFqPVNCIiYjYKIxaj1TQiImI2CiMW48zIiHHuJSIi4gsURizGmTACGh0RERHfoTBiMQojIiJiNgojFuNsGNEkVhER8RUKIxajkRERETEbhRGLcWY1DSiMiIiI76hWGJk9ezYxMTEEBwfTo0cP1q9fX2nbuXPn0qtXLxo2bEjD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C9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSCtphERETNRGLEg3aYREREzURixIIURERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0moaERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSBnVtMAlLm1ChEREecojFiQMyMjoFs1IiLiGxRGLEhhREREzERhxIIURkRExEwURixIYURERMykWmFk9uzZxMTEEBwcTI8ePVi/fn2lbbdt28bw4cOJiYnBZrMxa9as6tYqTnI2jGhFjYiI+AKXw8iSJUtISUkhNTWVjRs30rlzZwYOHMihQ4cqbH/69Gkuv/xypk+fTlRU1CUXLFVzdjWNRkZERMQXuBxGnn76aSZMmEBycjIdO3Zkzpw51K1bl3nz5lXYvlu3bjz11FPccsstBAUFXXLBUjXdphERETNxKYwUFxeTmZlJUlLSLyfw8yMpKYmMjIwaK6qoqIiCgoJyL3GewoiIiJiJS2HkyJEjlJaWEhkZWe54ZGQkubm5NVZUWloa4eHhjld0dHSNnbs2UBgREREz8cnVNFOmTCE/P9/x2rt3r7dLMhWFERERMRNn5zoC0LhxY/z9/cnLyyt3PC8vr0YnpwYFBWl+ySXQahoRETETl0ZGAgMDiY+PJz093XGsrKyM9PR0EhMTa7w4qR6tphERETNxaWQEICUlhXHjxpGQkED37t2ZNWsWhYWFJCcnAzB27FhatGhBWloaYJ/0un37dsf/3r9/P5s3b6Z+/fq0bdu2Br+K/Ey3aURExExcDiMjR47k8OHDTJ06ldzcXOLi4li+fLljUmtOTg5+fr8MuBw4cIAuXbo4fp45cyYzZ86kT58+rF69+tK/gVxAYURERMzE5TACMGnSJCZNmlThe78OGDExMRiGUZ1upJoURkRExEx8cjWNXBpNYBURETNRGLEgjYyIiIiZKIxYkFbTiIiImSiMWJBGRkRExEwURixIYURERMxEYcSCFEZERMRMFEYsSKtpRETETBRGLEgjIyIiYiYKIxak1TQiImImCiMWpJERERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0gRWERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSCtphERETNRGLEg3aYREREzURixIIURERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0moaERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSCtphERETNRGLEg3aYREREzURixIIURERExE4URC1IYERERM1EYsSCFERERMROFEQvSahoRETEThREL0moaERExE4URC9JtGhERMROFEQtSGBERETNRGLEghRERETEThRELUhgREREzURixIK2mERERM1EYsSAbzv3BamRERER8gcKIRTkzOqIwIiIivkBhxKIURkRExCwURixKYURERMxCYcSiLhpGTp6E++4js1UrQkJC6NmzJxs2bHC8bRgGU6dOpVmzZoSEhJCUlMT3339/0f5iYmKw2WwXvCZOnOho88orr9C3b1/CwsKw2WycOHHigvNkZGQQFxdHTEwMr776qovfWkREzEhhxKIuGkZuvx1WrqTVggVs2bKFAQMGkJSUxP79+wGYMWMGzz33HHPmzGHdunXUq1ePgQMHcubMmUpPuWHDBg4ePOh4rVy5EoDf//73jjanT59m0KBBPPTQQ5WeZ/z48fztb39j0aJFpKWlsXfvXpe+t4iImI+zjzERk6n0D/ann+C99+CDD6jbuzdtgUcffZSPPvqIl156iccff5xZs2bxyCOPMHToUADeeOMNIiMjWbZsGbfcckuFp23SpEm5n6dPn06bNm3o06eP49h9990HwOrVqyutu7CwkK5du9K0aVMaNmzIyZMnnfzGIiJiVhoZsahKR0bOnoXSUggOLjdnJCQkhLVr15KVlUVubi5JSUmO98LDw+nRowcZGRlO9V1cXMzChQu57bbbsNlsLtU9depUOnToQHh4OFdffTUdO3Z06fMiImI+GhmxqErDSGgoJCbC449zpkMHSiMjeeutt8jIyKBt27bk5uYCEBkZWe5jkZGRjveqsmzZMk6cOMEf//hHl+seP348t9xyC8XFxTRs2NDlz4uIiPloZMSiLjpnZMECMAx2t2hBUFAQzz33HKNGjcLPr2Z+HV599VWuu+46mjdvXq3P16tXT0FERKQWURixqIuGkTZt4MsviTl1ir1797J+/XpKSkq4/PLLiYqKAiAvL6/cR/Ly8hzvXcyPP/7I559/zu23334J1YuISG2iMGJRzuwzYtSrR7NmzTh+/DgrVqxg6NChtG7dmqioKNLT0x3tCgoKWLduHYmJiVWec/78+TRt2pTBgwdfQvUiIlKbKIxY1EUnA61YAcuXU5SVxcqVK+nXrx+xsbEkJydjs9m47777eOKJJ/jwww/ZsmULY8eOpXnz5gwbNsxximuvvZYXXnih3GnLysqYP38+48aNIyDgwgpyc3PZvHkzu3fvBmDLli1s3ryZY8eO1cA39o7vvvuOXr16ERwcTHR0NDNmzHD6s0ePHuWyyy67YM+VpUuX0r9/f5o0aUJYWBiJiYmsWLGi0vNMnz7d8ed2vjvvvJM2bdoQEhJCkyZNGDp0KDt37nT1K4qIuJ3CiEVddGQkPx8mTiQ3NpaxY8dyzTXXsGLFCurUqQPAX//6V+6++27uuOMOunXrxqlTp1i+fDnBwcGOU+zZs4cjR46UO+3nn39OTk4Ot912W4Xdzpkzhy5dujBhwgQAevfuTZcuXfjwww8v6bvWlOLiYpfaFxQUMGDAAFq1akVmZiZPPfUUjz76KK+88opTnx8/fjydOnW64PhXX31F//79+fTTT8nMzKRfv37ccMMNbNq06YK2GzZs4OWXX67wPPHx8cyfP58dO3awYsUKDMNgwIABlJZq710R8TGGCeTn5xuAkZ+f7+1STKOTYRhU8Wrqtep8Q58+fYyJEyca9957r9GoUSOjb9++Ln3+xRdfNBo2bGgUFRU5jk2ePNlo3769U5/t06ePkZ6ebgDG8ePHL9q+Y8eOxrRp08odO3nypNGuXTtj5cqVRp8+fYx77733ouf473//awDG7t27q6xPRMp79913DcA4duyYt0uxJI2MWJSeTeOc119/ncDAQL7++mvmzJnDddddR/369St9XXHFFY7PZmRk0Lt3bwIDAx3HBg4cyK5duzh+/HilfW7fvp3HHnuMN954w6kVTGVlZZw8eZKIiIhyxydOnMjgwYPL7QlTmcLCQubPn0/r1q2Jjo6usr2IiCdpnxGLciaMnHV7Fb6vXbt25eZ5/Otf/+Knn36qtP3Pt7LAPgemdevW5d7/eX+W3NzcCpcnFxUVMWrUKJ566ilatmzJDz/8UGWNM2fO5NSpU9x8882OY4sXL2bjxo3lnilUkRdffJG//vWvFBYW0r59e1auXFkuPImI+AKFEYty5g9WIyP2eRXna9GihVv7mzJlCh06dOAPf/iDU+0XLVrEtGnT+OCDD2jatCkAe/fu5d5772XlypXl5vFUZPTo0fTv35+DBw8yc+ZMbr75Zr7++usqPyci4km6TWNRuk3jnHr16pX72ZXbNFFRURXux/LzexX54osveOeddwgICCAgIIBrr70WgMaNG5Oamlqu7eLFi7n99tt5++23y92KyczM5NChQ3Tt2tVxni+//JLnnnuOgICAchNUw8PDadeuHb179+bdd99l586dvP/++9W4UiK1U0lJyQXHDMOo8LhUn0ZGLEphpHpcuU2TmJjIww8/TElJieP4ypUrad++faU7yL733nvlzr9hwwZuu+021qxZQ5s2bRzH33rrLW677TYWL158wZ4t1157LVu2bCl3LDk5mdjYWCZPnoy/f8V/+sa5uctFRUWVfj8R+UVZWRlNmjRhwYIF5Y7/9a9/ZceOHXz88cdeqsx6FEYsSmGkely5TXPrrbcybdo0xo8fz+TJk9m6dSvPPvsszzzzjKPN+++/z5QpUxz7e5wfOADH8ugOHTrQoEEDwH5rZty4cTz77LP06NHD8UygkJAQwsPDCQ0N5corryx3nnr16tGoUSPH8R9++IElS5YwYMAAmjRpwr59+5g+fTohISFcf/31rl0UkVrKz8+Pbt268fDDD/O3v/0NgH379vHcc88xbdo0L1dnLbpNY1HOhhHD3YVYWHh4OJ999hlZWVnEx8dz//33M3XqVO644w5Hm/z8fHbt2uXSeV955RXOnj3LxIkTadasmeN17733On2O4OBg1qxZw/XXX0/btm0ZOXIkoaGhfPPNN465JyJStdTUVLZs2cL69esBePbZZwkNDWXixIlersxabIZh+Px/jwoKCggPDyc/P5+wsDBvl2MKg4DK9+z8xVmcCy4iIrVV//79+d///kdOTg6BgYFMmzaNBx980NtlWYpGRizK2ftvulUjInJxqamp5OTkAFC/fn2NiriBwohFOTvaoTAiInJx11xzjeORC5MmTSI0NNTLFVlPtcLI7NmziYmJITg4mB49ejjupVXmnXfeITY2luDgYK666io+/fTTahUrzlMYERGpOY8//jjNmze/4IGUUjNcDiNLliwhJSWF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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): [-135.0, 71.7346, 15.5104, 56.2242]\n", "Robot Angles: [-135.0, -71.7346, 15.5104, -33.7758]\n", "elbow (x,y): 0.133 0.402\n", "wrist (x,y): 0.332 0.7\n", "tool (x,y): 0.424 0.7\n" ] }, { "data": { "image/png": "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H10ZEa9w3rNoKioqw8ioUeB/LpPfDBTabOTk5LB7924Atm3bRk5ODsePn4sz119/PbNnz/7VKStYuHAho0aNwt+/as7fu3cvGRkZZGdnk5eXx4YNG7jjjjto2rQpN95443n9vv766wQEBPDZZ58xd+5cbrjhBvtck+q2Sy+91H5sVlYWffv2rTIXZdCgQezatYsffvihxs/o66+/5plnnuEf//gHvr61/2moqKjgxIkThIWFVdk/YcIEhgwZQmpq7TNvqpvIK85z5swZh/aLNBRdGRGPd5Zqhmg++QTy8ipX0fzCb4G5c+fy9NNP2/f17dsXqLzq8fOk1D179lBQUPCrU35CXl4eY351ToCgoCD++9//MmvWLH744QciIiLo27cvGzZsIDw8/Lz6zp07V5nn8dprr3H69Oka32OTJufuFWuz2bjkkkuqfD8iIsL+vVatWp13fGlpKcOHD+eFF16gXbt27N27t8bX+tmMGTM4efIkd955p33f4sWL2bp1K1u2bLngsS+99BKPPPIIJSUlxMXFnTeRV5zjmmuu4fbbb2fo0KH2fYsWLeLpp59m3759zmtMPJ7CiHi8tUDBr3cOHAiGUWVXC2AQMHTKFKZMmXLBc+7fv/+8fQMHDsT41Tl/Fh0dzfLly012XDmv4pfatm1r+ti6mDhxIt26dePuu+82Vf/mm2/y9NNP8/7779vD1MGDB3nooYdYtWoVQUFBFzx+xIgRDBgwgMOHDzNjxgzuvPNOPvvss1qPE2tdffXVTJs2jeuuuw6onK80adIk+vTp4+TOxNNpmEY8ntln0fwGaGplIw5o3rx5la8dGaaJjIwkPz+/yvE/fx0ZGVnt63366acsXboUf39//P39uf766wFo3bo1kydPrlK7ePFi7r33Xt56660qQzHZ2dkcOXKEK664wn6etWvX8ve//x1/f/8qE1TrMpFXrPfII49QWlrK66+/DsCKFSs4dOgQTz31lJM7E0+nKyPi0cqBd0zW1mcVjdUcGaZJSUnhiSee4MyZM/b9q1atIi4urtohGoB///vfVc6/ZcsWxowZw3//+98qk0r/7//+jzFjxrB48eLzJulef/31bNu2rcq+tLQ0unbtyqOPPoqfn1+1r13TRF5pfJGRkYwfP57XXnsNgH/+858MHz6crl27Orkz8XiGGygqKjIAo6ioyNmtiJtZbfz0/3S1bM0MwyhxTovn6devn/HQQw/V+fjCwkIjIiLCuOeee4zt27cbixcvNpo1a2a88sor9pp33nnHiIuLq/Ecq1evNgDjhx9+sO/717/+Zfj7+xtz5swxDh8+bN8KCwtNv5c9e/YY06ZNMz7//HPjwIEDxmeffWbcdNNNRlhYmJGfn1/n9ywN5/Dhw0ZgYKABGD4+PsbOnTud3ZJ4AQ3TiEc7bxVNDX4DNLOykUYUGhrKxx9/zL59+0hMTORPf/oTkyZNqrKktqioiF27djl03ldffZWzZ88yYcIEoqKi7NtDDz1k+hw/T+S98cYb6dSpE8OGDSM4OLjGibzS+CIjIxk+fDhQebVLV0WkMfgYRg0z7i5gzpw5vPDCC9hsNuLj43nxxRdJSkqqsX7p0qU89dRT7N+/n86dO/PXv/612uWMNSkuLiY0NJSioiJCQkIcbVe8VDlwMWAzUfsWrj1MI9KY9u7dy1VXXcX7779PcnKys9sRL+DwlZElS5aQnp7O5MmT2bp1K/Hx8QwaNIgjR45UW79hwwaGDx/O2LFj+eKLLxg6dChDhw5l+/bt9W5e5EI+w1wQaQrcCJw+fZr//d//pVOnTixbtsza5kScwDAMrrjiCoYNG8aOHTtqrOvQoQM2m01BRBqPo+M6SUlJxoQJE+xfl5eXG9HR0UZGRka19XfeeacxZMiQKvuSk5ON+++/3/Rras6I1MWDhrn5IkNPnTJmzZplREZGGn5+fkZaWppx7NgxZ7UtYqk333zTaN++veHj42Pceeedxvbt253dkojh0GqasrIysrOzmThxon2fr68vqampZGVlVXtMVlYW6enpVfYNGjSI9957r8bXKS0trTKzvri42JE2RagA/l1bUWkpPP44n7z+Ov8pLOSGG25g9OjRXHzxxXz77beN0KVI4+vQoQNvvPEGH374IYsWLaJHjx5cd911TJkyhWuuucbZ7YmXciiMFBQUUF5ebr+b488iIiJqfOqmzWartt5mq/kCekZGRpU7YIo4Kgv4vraip56CmTM5+dOXH3zwAR988IG1jYm4oMzMTDZv3qx/+InTuOR9RiZOnFjlakpxcbGeWyEOMbWK5rnn6BYSQvHcuXz33XcMGDCA3/3ud3Tp0sXq9kSc6vTp0yxdupQFCxZQWFjILbfcwqRJk5zdlngxh8JI69at8fPzq/bujjXd2bGmu0HWVA8QGBhIYGCgI62J2JkaogFo0oQnn3ySOx59lH/84x9MnTqV22+/nd/+9rfMmTNHS03FI7322ms8+eSTFBQUMHr0aB5//HE6dOjg7LbEyzm0miYgIIDExEQyMzPt+yoqKsjMzCQlJaXaY1JSUqrUQ+XdIGuqF6mvfCCs1ioIpPL+Ik2aNGHs2LHk5uby2muv8e2339b6oDcRd2QYBosWLeI3v/mN/eddQURcgcP3GVmyZAmjRo3ilVdeISkpiVmzZvHWW2/xzTffEBERwciRI2nbti0ZGRlA5dLefv36MX36dIYMGcLixYuZNm0aW7du5bLLLjP1mrrPiNRFLpVXSJYCX1Tz/ZuB9xu1IxERqY7Dc0aGDRvG0aNHmTRpEjabjYSEBFauXGmfpJqXl4ev77kLLldddRVvvvkmTz75JI8//jidO3fmvffeMx1EROqqCzDxp20PlQ/Mexv4/Kfv6yZnIiKuoU53YG1sujIiDWkflaHkPiDUyb2IiIiLrqYRsdIlwF+c3YSIiNjpQXkiIiLiVAojIiIi4lQKIyIiIuJUCiMiIiLiVAojIiIi4lQKIyIiIuJUCiMiIiLiVAojIiIi4lRucdOzn28SW1xc7ORORERExFHBwcH4+PjU+H23CCMnTpwAICYmxsmdiIiIiKNqe5yLWzybpqKigu+//77WZOXqiouLiYmJ4eDBg3rGjhPo83cuff7Opc/fubz98/eIKyO+vr5cfPHFzm6jwYSEhHjlD6Or0OfvXPr8nUufv3Pp86+eJrCKiIiIUymMiIiIiFMpjDSiwMBAJk+eTGBgoLNb8Ur6/J1Ln79z6fN3Ln3+F+YWE1hFRETEc+nKiIiIiDiVwoiIiIg4lcKIiIiIOJXCiIiIiDiVwojFjh8/zogRIwgJCaFly5aMHTuWkydPXrD+wQcfJC4ujqZNm9KuXTv+8Ic/UFRU1Ihdu685c+YQGxtLUFAQycnJbN68+YL1S5cupWvXrgQFBdGjRw+WL1/eSJ16Jkc+/3nz5tGnTx9atWpFq1atSE1NrfV/L7kwR3/+f7Z48WJ8fHwYOnSotQ16OEc//8LCQiZMmEBUVBSBgYF06dLFe/8GGWKpwYMHG/Hx8cbGjRuN//73v0anTp2M4cOH11i/bds247bbbjOWLVtm7N6928jMzDQ6d+5s3H777Y3YtXtavHixERAQYCxYsMDYsWOHMW7cOKNly5ZGfn5+tfWfffaZ4efnZzz//PPG119/bTz55JNGkyZNjG3btjVy557B0c//f/7nf4w5c+YYX3zxhbFz505j9OjRRmhoqHHo0KFG7twzOPr5/2zfvn1G27ZtjT59+hi33HJL4zTrgRz9/EtLS41evXoZN954o7F+/Xpj3759xpo1a4ycnJxG7tw1KIxY6OuvvzYAY8uWLfZ9K1asMHx8fIzvvvvO9HneeustIyAgwDhz5owVbXqMpKQkY8KECfavy8vLjejoaCMjI6Pa+jvvvNMYMmRIlX3JycnG/fffb2mfnsrRz//Xzp49awQHBxuvv/66VS16tLp8/mfPnjWuuuoq47XXXjNGjRqlMFIPjn7+L7/8stGhQwejrKyssVp0aRqmsVBWVhYtW7akV69e9n2pqan4+vqyadMm0+f5+WmH/v5u8SghpygrKyM7O5vU1FT7Pl9fX1JTU8nKyqr2mKysrCr1AIMGDaqxXmpWl8//106dOsWZM2cICwuzqk2PVdfP/5lnniE8PJyxY8c2Rpseqy6f/7Jly0hJSWHChAlERERw2WWXMW3aNMrLyxurbZei/3ezkM1mIzw8vMo+f39/wsLCsNlsps5RUFDAs88+y3333WdFix6joKCA8vJyIiIiquyPiIjgm2++qfYYm81Wbb3Z/23knLp8/r/26KOPEh0dfV5AlNrV5fNfv3498+fPJycnpxE69Gx1+fz37t3Lp59+yogRI1i+fDm7d+/m97//PWfOnGHy5MmN0bZL0ZWROnjsscfw8fG54Gb2D/CFFBcXM2TIELp3786UKVPq37iIi5o+fTqLFy/m3XffJSgoyNnteLwTJ05wzz33MG/ePFq3bu3sdrxSRUUF4eHhvPrqqyQmJjJs2DCeeOIJ5s6d6+zWnEJXRurgT3/6E6NHj75gTYcOHYiMjOTIkSNV9p89e5bjx48TGRl5weNPnDjB4MGDCQ4O5t1336VJkyb1bdujtW7dGj8/P/Lz86vsz8/Pr/GzjoyMdKhealaXz/9nM2bMYPr06XzyySf07NnTyjY9lqOf/549e9i/fz833XSTfV9FRQVQefV2165ddOzY0dqmPUhdfv6joqJo0qQJfn5+9n3dunXDZrNRVlZGQECApT27Gl0ZqYM2bdrQtWvXC24BAQGkpKRQWFhIdna2/dhPP/2UiooKkpOTazx/cXExAwcOJCAggGXLlulfiiYEBASQmJhIZmamfV9FRQWZmZmkpKRUe0xKSkqVeoBVq1bVWC81q8vnD/D888/z7LPPsnLlyipzq8Qxjn7+Xbt2Zdu2beTk5Ni3m2++mWuvvZacnBxiYmIas323V5ef/6uvvprdu3fbQyBAbm4uUVFRXhdEAC3ttdrgwYONyy+/3Ni0aZOxfv16o3PnzlWW9h46dMiIi4szNm3aZBiGYRQVFRnJyclGjx49jN27dxuHDx+2b2fPnnXW23ALixcvNgIDA41FixYZX3/9tXHfffcZLVu2NGw2m2EYhnHPPfcYjz32mL3+s88+M/z9/Y0ZM2YYO3fuNCZPnqylvfXg6Oc/ffp0IyAgwHj77ber/JyfOHHCWW/BrTn6+f+aVtPUj6Off15enhEcHGw88MADxq5du4wPPvjACA8PN6ZOneqst+BUCiMWO3bsmDF8+HCjRYsWRkhIiJGWllblj+2+ffsMwFi9erVhGIaxevVqA6h227dvn3PehBt58cUXjXbt2hkBAQFGUlKSsXHjRvv3+vXrZ4waNapK/VtvvWV06dLFCAgIMC699FLjww8/bOSOPYsjn3/79u2r/TmfPHly4zfuIRz9+f8lhZH6c/Tz37Bhg5GcnGwEBgYaHTp0MJ577jmv/Uenj2EYhnOuyYiIiIhozoiIiIg4mcKIiIiIOJXCiIiIiDiVwoiIiIg4lcKIiIiIOJXCiIiIiDiVwoiIiIg4lcKIiIiIOJXCiIiIiDiVwoiIiIg4lcKIiIiIOJXCiIiIiDjV/weavtqGgu11FgAAAABJRU5ErkJggg==", "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): [126.8699, 74.2826, 109.5002, -35.2176]\n", "Robot Angles: [126.8699, -74.2826, 109.5002, -125.2176]\n", "elbow (x,y): 0.115 0.407\n", "wrist (x,y): 0.408 0.2\n", "tool (x,y): 0.5 0.2\n" ] }, { "data": { "image/png": "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ukJztgt+vDXmhAkTKCsrc267d+/26LsD1TfAThNxMUAfSzMRERHxD24VNBEREfTq1cvl6X11T/PLzMz0KAFPxoyMjKRt27YuWygxe3VmEAF6CU5ERMRNbv++a2zBz08X+1RXV7Np0ybnn/fu3UtJSQmtW7d2LjQys4hITtH6GREREVduFzQjRozg4MGDTJw4EbvdTnp6usuCn127dhEWdurCz759+7j00lPPqZ0+fTrTp0/niiuucM6jNTamnPI9sNxkbLaFeYiIiPgTm2EYhq+TOFvl5eVER0dTVlYW9NNP+Zhb6Nud2tYIIiISmlJTU7nhhhucMybBTk/EDzCabhIRETmdCpoAo4JGRETkdCpoAsgOYIuJuFbA5RbnIiIi4k9U0ASQxSbjrgIirUxERETEz6igCSCabhIREamfCpoAUQ0UNBpVSwWNiIiEGhU0AWIlUGEi7kKgk8W5iIiI+BsVNAFC000iIiINU0ETIFTQiIiINEwFTQDYB3xlIi4SuMLiXERERPyRCpoAsMRk3ABqn0EjIiISalTQBABNN4mIiJyZCho/V4P5KzQqaEREJFSpoPFzXwLfmYhLBi62OBcRERF/pYLGz7kz3WSzMhERERE/poLGz2n9jIiISONU0Pixw8AqE3HNgKstzkVERMSfqaDxY0sBw0RcXyDa4lxERET8mQoaP6bpJhEREXNU0PgpBypoREREzFJB46fWAaUm4uKBNItzERER8XcqaPyU2asz2eh/ooiIiH4X+qmPTMZpuklEREQFjV8qA1aaiLMBgyzORUREJBCooPFDnwAnTcRdBsRZnIuIiEggUEHjh3R3k4iIiHtU0PgZAxU0IiIi7lJB42e+BnaZiIuldspJREREVND4HbNXZwZR28NJREREVND4HU03iYiIuE8FjR85BqwwGZttZSIiIiIBxqOCZtasWaSkpBAVFUVGRgarVq06Y/xbb71Fly5diIqKonv37nz44Ycu799yyy3YbDaXbciQ0LsGsQKoMhHXA0iyOBcREZFA4nZBs3DhQnJycsjNzaW4uJi0tDSys7M5cOBAvfErV67kxhtv5LbbbmPt2rUMHz6c4cOHs2HDBpe4IUOGsH//fuf25ptvenZEAUzTTSIiIp5xu6B59tlnuf322xkzZgyXXHIJs2fPpmXLlsybN6/e+L/85S8MGTKEBx98kIsv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JZvNxqRJkzhx4gStWrUKmXV9HhU0s2bNIiUlhaioKDIyMli1atUZ49966y26dOlCVFQU3bt358MPP3R53zAMJk6cSGJiIi1atCArK4utW83cF+T/VNCIiEhTy8rKIi0tjXvvvTckrs6ABwXNwoULycnJITc3l+LiYtLS0sjOzubAgQP1xq9cuZIbb7yR2267jbVr1zJ8+HCGDx/Ohg0bnDHTpk3j+eefZ/bs2RQVFdGqVSuys7M5fvy450fmB/YAGxqNgihgAOBwOHj77bfp2bMnkydPtjY5EREJSA888AAZGRn861//arB3nM1mo6SkhD//+c9NnJ0PGW7q06ePcddddzlf19TUGElJSUZeXl698b/+9a+Na665xmVfRkaGcccddxiGYRgOh8NISEgwnn76aef7R44cMSIjI40333zTVE5lZWUGYJSVlbl7OJaaaxgGJrbsmhrjrbfeMrp162YAxuDBg43Nmzf7Km0REfFja9euNQYMGGAARs+ePY3333/fcDgcvk7L59x6Dk11dTVr1qxhwoQJzn1hYWFkZWVRWFhY72cKCwtdHk4GtV2MFy1aBMCOHTuw2+1kZWU534+OjiYjI4PCwkJGjhx52phVVVUuj5YvLy935zCajKnppuefZ/Xzz7N4+3YyMjL4+9//To8ePSgrK6OoqMjqFEVEJAA99dRTFBcXM3fuXK677jo6d+7M/fffHzLrZerjVkFz6NAhampqnF2I68THx/P111/X+xm73V5vvN1ud75ft6+hmJ/Ky8vz+ymZk8DSxoK++AL+8AcO//CyqKhIRYyIiLhty5YtjB07lquuuooLLrjA1+n4REA+KXjChAkuV33Ky8tJTk72YUanKwLKGgv6+c855+WXSXr2WdavW0daWhp33nknmZmZ2Gy2JshSREQCkWEYrFixghdeeIHNmzfTq1cvHn744ZAtZsDNgiYuLo7w8PB6uxI31JG4oS7GdfF1/y0tLSUxMdElJj09vd4xIyMj/b75n9m7m24YPZoXRo1i8eLFTJo0iTvuuIPMzExefPFF0tLSLM1RREQCT1FREXfeeSfFxcUMGDCAF154gYEDB/o6LZ9z6y6niIgIevXqRUFBgXOfw+GgoKCAzMz62ypmZma6xEPtUwzr4jt27EhCQoJLTHl5OUVFRQ2OGQg+Mxk3hNrV6EOGDKGwsJCPPvqI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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "draw_arm(0.3, 0.3, 0.3)\n", "draw_arm(-0.3, -0.3, 0.7)\n", "draw_arm(-0.3, 0.4, 0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interactive Arm" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "846c528ad814490d90a400348b6ae20c", "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": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from ipywidgets import interact, FloatSlider\n", "\n", "# Interactive slider for z coordinate\n", "interact(draw_arm, x=FloatSlider(min=0, max=1, step=0.01, value=0.3),\n", " y=FloatSlider(min=0, max=1, step=0.01, value=0.3),\n", " z=FloatSlider(min=0, max=1, step=0.01, value=0.3))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.4" } }, "nbformat": 4, "nbformat_minor": 2 }