Skip to content
Permalink
4d079d522f
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
1848 lines (1848 sloc) 147 KB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Computational Mechanics Project #02 - Create specifications for a projectile robot\n",
"\n",
"On the first day of class, we threw $2\"\\times~2\"$ dampened paper (spitballs) at a target on the whiteboard. Now, we are going to analyze the accuracy of the class with some cool Python tools and design a robot that has the same accuracy and precision as the class, but we will have the robot move farther away from the target and use a simpler projectile i.e. a tennis ball so we don't need to worry about knuckle-ball physics. \n",
"\n",
"The goal of this project is to determine the precision of necessary components for a robot that can reproduce the class throwing distibution. We have generated pseudo random numbers using `numpy.random`, but the class target practice is an example of truly random distributions. If we repeated the exercise, there is a vanishingly small probability that we would hit the same points on the target, and there are no deterministic models that could take into account all of the factors that affected each hit on the board. \n",
"\n",
"<img src=\"../images/robot_design.png\" style=\"height: 250px;\"/>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we ask ourselves some questions:\n",
"\n",
"1. How do we quantify the class accuracy and precision?\n",
"\n",
"2. If we design a robot, what design components can we control?\n",
"\n",
"3. How can we relate the controlled components to the class accuracy, and specify the component precision?\n",
"\n",
"The first question, we have some experience from our work in [02_Seeing_Stats](../notebooks/02_Seeing_Stats.ipynb). We can define the mean, standard deviation, measure the first, second, and third quartiles, etc. \n",
"\n",
"The second question is a physical question. We cannot control the placement of the robot or the target those are chosen for us. We cannot control temperature, mechanical vibrations, etc. We *can* control the desired initial velocity. The initial velocity will have some speed and direction, and both will be subject to random noise. Once the speed and direction are set, the location on the target is determined by kinematic equations for an object in freefall, as such\n",
"\n",
"$x_{impact} = \\frac{v_x}{v_y}d + x(0)~~~~~~~~~~~~~~~~~~~~(1.a)$\n",
"\n",
"$z_{impact} = d\\left(\\frac{v_z(0)}{v_y}-\\frac{g}{2v_y^2}d\\right)+ z(0)~~~~~(1.b)$.\n",
"\n",
"Where the location of impact is at a $y$-distance of $d$ at a point on the target with coordinates $(x_{impact},~z_{impact})$, and the initial velocity is $\\bar{v}=v_x\\hat{i}+v_y\\hat{j}+v_z(0)\\hat{k}$, the object is released at an initial location $\\bar{r}(0)=x(0)\\hat{i}+0\\hat{j}+z(0)\\hat{k}$, and the only acceleration is due to gravity, $\\bar{a}=-g\\hat{k}$. Equation (1) becomes much easier to evaluate if we assume that $v_x=0$, resulting in an evalution of the accuracy of the height of the impact, $z_{impact}$, as such\n",
"\n",
"$x_{impact} = x(0)~~~~~~~~~~~~~~~~~~~~(2.a)$\n",
"\n",
"$z_{impact} = \\frac{d}{\\cos{\\theta}}\\left(\\sin{\\theta}-\\frac{g}{2v_0^2\\cos{\\theta}}d\\right)+ z(0)~~~~~(2.b)$.\n",
"\n",
"Where $\\theta$ is the angle of the initial velocity and $v_0$ is the initial speed. Equation (2) restricts the analysis to height accuracy. You can incorporate the 2D impact analysis if you finish the 1D analysis. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The third question, is how we can relate equation (2) to the measured points of impact? For this, we can use Monte Carlo methods *(There are other methods, but Monte Carlo is one of the most straight-forward)*. Our Monte Carlo approach is as such, if we have a desired initial speed, $v_0$, and desired angle, $\\theta$, we can propagate the uncertainty of our actual speeds and angles into the $z_{impact}$ locations. Then, we can choose distributions in speed and angles that match the distributions in $z_{impact}$ locations. Here are the steps:\n",
"\n",
"1. Generate random $\\theta_i$ and $v_{0~i}$ variables\n",
"\n",
"2. Plug into eqn 2 for random $z_{impact~i}$ locations\n",
"\n",
"3. Compare to our measured $z_{impact}$ location statistics\n",
"\n",
"4. Repeat 1-3 until the predicted uncertainty matches the desired uncertainty, we can use a number of comparison metrics:\n",
" \n",
" - standard deviation\n",
" \n",
" - first, second, and third quartiles\n",
" \n",
" - visually, with box plots and histograms"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Project Deliverables\n",
"\n",
"1. Statistical analysis of class accuracy and precision (x- and z-locations) data is in the csv file [../data/target_data.csv](../data/target_data.csv) _Note: if you want to see how I turned the images into data check out the jupyter notebook [process_target_practice](./process_target_practice.ipynb)\n",
"\n",
"2. A Monte Carlo model to generate impact heights based upon uncertainty in $\\theta_0$ and $v_0$. \n",
"\n",
"3. The precision required to recreate the class accuracy and precision with a robot. \n",
"**You must show some validation of your work**\n",
"\n",
"4. [BONUS] Repeat 2-3 taking into account the variation in $x_{impact}$ due to misalignment. \n",
"\n",
"Given constants and constraints:\n",
"\n",
"- $d=$3 m, distance to target\n",
"\n",
"- $g=$9.81 m/s$^2$, acceleration due to gravity\n",
"\n",
"- $z(0)=$0.3 m, the initial height is 0.3 m above the bull's eye\n",
"\n",
"- 4 m/s$<v_0<$12 m/s, the initial velocity is always higher than 9 mph and less than 27 mph"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"#Import rcParams to set font styles\n",
"from matplotlib import rcParams\n",
"\n",
"#Set font style and size \n",
"rcParams['font.family'] = 'sans'\n",
"rcParams['font.size'] = 16\n",
"rcParams['lines.linewidth'] = 3"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"target_data = pd.read_csv(\"../data/target_data.csv\") #interpretting input random data"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"target01 = target_data[target_data[' image #']==1]\n",
"target02 = target_data[target_data[' image #']==2]\n",
"target_01_x_series = target01[' x position (m)'].dropna()\n",
"target_01_y_series = target01[' y position (m)'].dropna()\n",
"target_02_x_series = target02[' x position (m)'].dropna()\n",
"target_02_y_series = target02[' y position (m)'].dropna()\n",
"target01_xpos = target_01_x_series.values\n",
"target01_ypos = target_01_y_series.values\n",
"target02_xpos = target_02_x_series.values\n",
"target02_ypos = target_02_y_series.values\n",
"total_x = target_data[' x position (m)'].dropna().values\n",
"total_y = target_data[' y position (m)'].dropna().values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Deliverable 1__: Providing statistical analyses on the input random data set that was collected"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"xmean_target01 = np.mean(target01_xpos)\n",
"ymean_target01 = np.mean(target01_ypos)\n",
"xmean_target02 = np.mean(target02_xpos)\n",
"ymean_target02 = np.mean(target02_ypos)\n",
"xstd_target01 = np.std(target01_xpos)\n",
"ystd_target01 = np.std(target01_ypos)\n",
"xstd_target02 = np.std(target02_xpos)\n",
"ystd_target02 = np.std(target02_ypos)\n",
"totalx_mean = np.mean(total_x)\n",
"totaly_mean = np.mean(total_y)\n",
"totalx_std = np.std(total_x)\n",
"totaly_std = np.std(total_y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Target 01__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we can observe the mean and standard deviation of each corresponding data sets. "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean (x,z) coordinates for the target 01 data set is\n",
"(x,z): (-0.0070,-0.0716)\n"
]
}
],
"source": [
"print('The mean (x,z) coordinates for the target 01 data set is\\n(x,z): ({:.4f},{:.4f})'.format(xmean_target01, ymean_target01))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The standard deviation for each of these coordinate points is\n",
"x: 0.2708\n",
"z: 0.2710\n"
]
}
],
"source": [
"print('The standard deviation for each of these coordinate points is\\nx: {:.4f}\\nz: {:.4f}'.format(xstd_target01, ystd_target01))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we can observe the quartiles corresponding to the data sets"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The first quartile for Target 1 x-position is -0.16854422326722185\n",
"The second quartile for Target 1 x-position is 0.057252165493682616\n",
"The third quartile for Target 1 x-position is 0.16294409214772285\n"
]
}
],
"source": [
"quartiles_target01_x = np.percentile(target01_xpos, q=[25, 50, 75])\n",
"\n",
"print('The first quartile for Target 1 x-position is {}'.format(quartiles_target01_x[0]))\n",
"print('The second quartile for Target 1 x-position is {}'.format(quartiles_target01_x[1]))\n",
"print('The third quartile for Target 1 x-position is {}'.format(quartiles_target01_x[2]))"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The first quartile for Target 1 z-position is -0.29198984238152825\n",
"The second quartile for Target 1 z-position is -0.06619345362062387\n",
"The third quartile for Target 1 z-position is 0.1535977120349374\n"
]
}
],
"source": [
"quartiles_target01_y = np.percentile(target01_ypos, q=[25, 50, 75])\n",
"\n",
"print('The first quartile for Target 1 z-position is {}'.format(quartiles_target01_y[0]))\n",
"print('The second quartile for Target 1 z-position is {}'.format(quartiles_target01_y[1]))\n",
"print('The third quartile for Target 1 z-position is {}'.format(quartiles_target01_y[2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can visually see the histograms for the points struck."
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"plt.hist(target01_xpos, bins=10, color='b', histtype='bar', edgecolor='w') \n",
"plt.title('X-Position Target 01 \\n')\n",
"plt.xlabel('x_pos')\n",
"plt.ylabel('Frequency');"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"plt.hist(target01_ypos, bins=10, color='b', histtype='bar', edgecolor='w') \n",
"plt.title('Z-Position Target 01 \\n')\n",
"plt.xlabel('z_pos')\n",
"plt.ylabel('Frequency');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Target 02__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we can observe the mean and standard deviation of each corresponding data set, as before. "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean (x,z) coordinates for the target 02 data set is\n",
"(x,z): (0.0359,-0.0171)\n"
]
}
],
"source": [
"print('The mean (x,z) coordinates for the target 02 data set is\\n(x,z): ({:.4f},{:.4f})'.format(xmean_target02, ymean_target02))"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The standard deviation for each of these coordinate points is\n",
"x: 0.2368\n",
"z: 0.2295\n"
]
}
],
"source": [
"print('The standard deviation for each of these coordinate points is\\nx: {:.4f}\\nz: {:.4f}'.format(xstd_target02, ystd_target02))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we can observe the quartiles corresponding to the data sets"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The first quartile for Target 2 x-position is -0.1440741141468536\n",
"The second quartile for Target 2 x-position is 0.014943229821693747\n",
"The third quartile for Target 2 x-position is 0.174942162333257\n"
]
}
],
"source": [
"quartiles_target02_x = np.percentile(target02_xpos, q=[25, 50, 75])\n",
"\n",
"print('The first quartile for Target 2 x-position is {}'.format(quartiles_target02_x[0]))\n",
"print('The second quartile for Target 2 x-position is {}'.format(quartiles_target02_x[1]))\n",
"print('The third quartile for Target 2 x-position is {}'.format(quartiles_target02_x[2]))"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The first quartile for Target 2 z-position is -0.16155346097746204\n",
"The second quartile for Target 2 z-position is -0.07222890356303119\n",
"The third quartile for Target 2 z-position is 0.09169638312059498\n"
]
}
],
"source": [
"quartiles_target02_y = np.percentile(target02_ypos, q=[25, 50, 75])\n",
"\n",
"print('The first quartile for Target 2 z-position is {}'.format(quartiles_target02_y[0]))\n",
"print('The second quartile for Target 2 z-position is {}'.format(quartiles_target02_y[1]))\n",
"print('The third quartile for Target 2 z-position is {}'.format(quartiles_target02_y[2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can visually see the histograms for the points struck."
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"plt.hist(target02_xpos, bins=10, color='b', histtype='bar', edgecolor='w') \n",
"plt.title('X-Position Target 02 \\n')\n",
"plt.xlabel('x_pos')\n",
"plt.ylabel('Frequency');"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"plt.hist(target02_ypos, bins=10, color='b', histtype='bar', edgecolor='w') \n",
"plt.title('Z-Position Target 02 \\n')\n",
"plt.xlabel('z_pos')\n",
"plt.ylabel('Frequency');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Combined Data__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, observing the mean and standard deviation:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean (x,z) coordinates for the total data set is\n",
"(x,z): (0.0121,-0.0474)\n"
]
}
],
"source": [
"print('The mean (x,z) coordinates for the total data set is\\n(x,z): ({:.4f},{:.4f})'.format(totalx_mean, totaly_mean))"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The standard deviation for each of these coordinate points is\n",
"x: 0.2572\n",
"z: 0.2549\n"
]
}
],
"source": [
"print('The standard deviation for each of these coordinate points is\\nx: {:.4f}\\nz: {:.4f}'.format(totalx_std, totaly_std))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, the quartiles:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The first quartile for Combined Targets x-position is -0.16854422326722185\n",
"The second quartile for Combined Targets x-position is 0.028452517775170515\n",
"The third quartile for Combined Targets x-position is 0.1670894539891312\n"
]
}
],
"source": [
"quartiles_total_x = np.percentile(total_x, q=[25, 50, 75])\n",
"\n",
"print('The first quartile for Combined Targets x-position is {}'.format(quartiles_total_x[0]))\n",
"print('The second quartile for Combined Targets x-position is {}'.format(quartiles_total_x[1]))\n",
"print('The third quartile for Combined Targets x-position is {}'.format(quartiles_total_x[2]))"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The first quartile for Combined Targets z-position is -0.21785495681409592\n",
"The second quartile for Combined Targets z-position is -0.070851135369002\n",
"The third quartile for Combined Targets z-position is 0.13222390283592378\n"
]
}
],
"source": [
"quartiles_total_y = np.percentile(total_y, q=[25, 50, 75])\n",
"\n",
"print('The first quartile for Combined Targets z-position is {}'.format(quartiles_total_y[0]))\n",
"print('The second quartile for Combined Targets z-position is {}'.format(quartiles_total_y[1]))\n",
"print('The third quartile for Combined Targets z-position is {}'.format(quartiles_total_y[2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can visually see the histograms for the points struck."
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"plt.hist(total_x, bins=10, color='b', histtype='bar', edgecolor='w') \n",
"plt.title('x-Position Combined\\n')\n",
"plt.xlabel('x_pos')\n",
"plt.ylabel('Frequency');"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"plt.hist(total_y, bins=10, color='b', histtype='bar', edgecolor='w') \n",
"plt.title('Z-Position Combined \\n')\n",
"plt.xlabel('z_pos')\n",
"plt.ylabel('Frequency');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Deliverable 2__: Monte Carlo model to generate impact heights based upon uncertainty in 𝜃_0 and 𝑣_0 ."
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [],
"source": [
"#First defining the constants and restraints:\n",
"d = 3 #m\n",
"g = 9.81 #m/s/s\n",
"z_0 = 0.3 #m\n",
"#v_0 is in range(4,12) m/s"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"def zimpact(d,g,z_0,v_0, theta):\n",
" '''Given the following parameters, this function returns the z impact location for the given kinematic scenario\n",
" related to projectile motion.\n",
" \n",
" Arguments:\n",
" d : distance to target in m\n",
" g : gravitaional aceleration constant\n",
" z_0 : initial z location\n",
" v_0 : initial velocity \n",
" theta : initial projectile angle\n",
" \n",
" Returns:\n",
" z coordinate in meters'''\n",
" z_impact = (d/np.cos(theta))*(np.sin(theta)-((g*d)/(2*(v_0**2)*np.cos(theta))))+z_0\n",
" \n",
" return z_impact"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [],
"source": [
"def montecarlo_zimpact(theta_mean, theta_std, v_0mean, v_0std, N):\n",
" '''Monte Carlo model that generates impact heights based upon uncertainty\n",
" in theta and v_0\n",
" \n",
" Arguments:\n",
" theta_mean : average theta value\n",
" theta_std : standard deviation for theta\n",
" v_0mean : average throw velocity\n",
" v_0std : standard deviation in throw velocity\n",
" N: size of random array\n",
" \n",
" Returns:\n",
" Array of size N random impact values.'''\n",
" \n",
" theta_rand = np.random.normal(theta_mean,theta_std,size=N);\n",
" v_rand = np.random.normal(v_0mean,v_0std,size=N);\n",
" d = 3 #m\n",
" g = 9.81 #m/s/s\n",
" z_0 = 0.3 #m\n",
" z_impacts = zimpact(d,g,z_0,v_rand,theta_rand)\n",
" \n",
" return z_impacts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For our montecarlo model we now have the following process to generate impact heights based on uncertainty in theta_0 and v_0:\n",
"We use montecarlo_zimpact associated to our assigned uncertainty values. From here, we can observe the statistical tendancies of this new data set and compare it to the experimental data to try and find a \"fit\". We will do this by primarily focusing on the mean and standard deviation of the data. By matching the mean and standard deviation for the z impacts to the human trials, we will know the corresponding uncertainty (mean and standard deviation values) for the projectile angle and initial velocity of the robotic launcher. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Deliverable 3__: Required precision of robot to recreate the class accuracy and precision."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As was alluded to in the previous section, the Monte Carlo method will now be used to randomly generate impacts simulating a robotic launcher and we can determine pairs of uncertainties for the velocity and launch angle that will simulate our class uncertainties. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, I will try and observe the relationship on the statistical values of the z impact based upon differing portions of the input paramters theta_mean, theta_std, v0mean and v_0std. "
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of this trial was -0.6883 and the standard deviation is 1.3667\n"
]
}
],
"source": [
"standard = montecarlo_zimpact(0, np.pi/8, 8, 1.75, 54) #Using 54 samples as this is the number of samples from class\n",
"mean_st = np.mean(standard)\n",
"std_st = np.std(standard)\n",
"print('The mean of this trial was {:.4f} and the standard deviation is {:.4f}'.format(mean_st, std_st));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From trial and error, it has become clear that to keep v_o within 4-12 m/s and theta between -45 and 45 degrees for the entirety of the randomizing, the standard deviation must be much closer to the median value than the entirety of the range which was originally used for the standard deviation. We start with this standard set to alter for matching the human mean and standard deviation for each trial and for the complete data set. "
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of this trial was -0.1432 and the standard deviation is 4.9201\n"
]
}
],
"source": [
"change_theta_mean = montecarlo_zimpact(np.pi/8, np.pi/8, 8, 1.75, 54) #Using 54 samples as this is the number of samples from class\n",
"mean_st2 = np.mean(change_theta_mean)\n",
"std_st2 = np.std(change_theta_mean)\n",
"print('The mean of this trial was {:.4f} and the standard deviation is {:.4f}'.format(mean_st2, std_st2));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Much more instability is observed in the model when the mean angle is changed. Using an ideal angle of 45 degrees, we will next focus in our investigation on the velocity by decreasing the std for theta. "
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of this trial was 0.7966 and the standard deviation is 0.5094\n"
]
}
],
"source": [
"change_v_mean = montecarlo_zimpact(np.pi/4, np.pi/32, 6, 0.5, 54) #Using 54 samples as this is the number of samples from class\n",
"mean_st3 = np.mean(change_v_mean)\n",
"std_st3 = np.std(change_v_mean)\n",
"print('The mean of this trial was {:.4f} and the standard deviation is {:.4f}'.format(mean_st3, std_st3));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We require very small standard deviations (tolerances) so as to create replicability in the model. This is visually seen from running the same change models several times and observing the changes to the mean and standard deviation. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The combined target simulations resulted in mean z impact locations of __mean = -0.0474__ with a standard deviation of __std = 0.2549__."
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of this trial was -0.0330 and the standard deviation is 0.3280\n"
]
}
],
"source": [
"discover = montecarlo_zimpact(np.pi/20, np.pi/32, 7.5, 0.5, 54) #Using 54 samples as this is the number of samples from class\n",
"mean_final = np.mean(discover)\n",
"std_final = np.std(discover)\n",
"print('The mean of this trial was {:.4f} and the standard deviation is {:.4f}'.format(mean_final, std_final));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The solution set above, so-called \"discover\" seems to satisfy the condition of matching the combined target criteria above. This will be checked by iterating the solution over a set number of iterations to observe if the average mean and average standard deviation replicates that of the human trials. "
]
},
{
"cell_type": "code",
"execution_count": 288,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iterated mean = -0.1487608265012268\n",
"Iterated std = 0.2619050021663368\n"
]
}
],
"source": [
"avgavg = np.zeros(1000)\n",
"avgstd = np.zeros(1000)\n",
"for i in range(0, len(avgavg)):\n",
" discover = montecarlo_zimpact(np.pi*2, np.pi/36, 10, 0.33, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[i] = np.mean(discover)\n",
" avgstd[i] = np.std(discover)\n",
"print('Iterated mean = ' , np.mean(avgavg))\n",
"print('Iterated std = ' , np.mean(avgstd))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can take this iterative process and move a step further. Recognizing that the average standard deviation is only affected by the standard deviation of each component and the means are only affected by the mean values, we can set up a testing matrix to iteratively change each component independently to find the ideal relationship. "
]
},
{
"cell_type": "code",
"execution_count": 405,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.02741036219391174 0.07139983303613166 0.05\n",
"0.02651375338511916 0.07139983303613166 0.06071428571428572\n",
"0.026370598178023036 0.07139983303613166 0.07142857142857144\n",
"0.02533664881701675 0.07139983303613166 0.09285714285714286\n",
"0.024782014482955417 0.07139983303613166 0.1142857142857143\n",
"0.024245064031422098 0.07139983303613166 0.125\n",
"0.022842077349053747 0.07139983303613166 0.14642857142857146\n",
"0.021378285091359417 0.07139983303613166 0.15714285714285717\n",
"0.02088941258530011 0.07139983303613166 0.16785714285714287\n",
"0.018714970844299544 0.07139983303613166 0.1785714285714286\n",
"0.01835178035545232 0.07139983303613166 0.18928571428571433\n",
"0.017151339675767263 0.07139983303613166 0.2\n",
"0.01643846989794029 0.07331232856388518 0.14642857142857146\n",
"0.015623111301296316 0.07331232856388518 0.15714285714285717\n",
"0.014382400113213262 0.07331232856388518 0.1785714285714286\n",
"0.012147128564858584 0.07331232856388518 0.2\n",
"0.011628165240890526 0.07522482409163872 0.13571428571428573\n",
"0.0106372097892313 0.07522482409163872 0.14642857142857146\n",
"0.010157398221411679 0.07522482409163872 0.15714285714285717\n",
"0.008325566628543751 0.07522482409163872 0.1785714285714286\n",
"0.007183904952975412 0.07522482409163872 0.18928571428571433\n",
"0.006093582314963708 0.07522482409163872 0.2\n",
"0.0034184575207187873 0.07713731961939224 0.15714285714285717\n",
"0.0018003318553418413 0.07713731961939224 0.16785714285714287\n",
"0.0013560358806257722 0.07713731961939224 0.18928571428571433\n",
"0.0006018755898752337 0.07904981514714576 0.125\n",
"0.000561475379465548 0.07904981514714576 0.14642857142857146\n"
]
}
],
"source": [
"\n",
"min_val = 0.2549\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(np.pi/44, np.pi/32, 15):\n",
" for k in np.linspace(0.05, 0.2, 15):\n",
" avgstd = np.zeros(1000)\n",
" for j in range(0, len(avgstd)):\n",
" discover1 = montecarlo_zimpact(np.pi/4, i, 8, k, 54) #Using 54 samples as this is the number of samples from class\n",
" avgstd[j] = np.std(discover1)\n",
" if ((abs(np.mean(avgstd) - 0.2549))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgstd) - 0.2549)\n",
" print(min_val, i , k)\n",
" \n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 412,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.07904981514714576, 0.14642857142857146)"
]
},
"execution_count": 412,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pi_std, vel_std"
]
},
{
"cell_type": "code",
"execution_count": 413,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.027520700367718698 0.07139983303613166 0.05\n",
"0.025548932306386635 0.07139983303613166 0.07142857142857144\n",
"0.02544626543296838 0.07139983303613166 0.09285714285714286\n",
"0.025299406107944705 0.07139983303613166 0.10357142857142859\n",
"0.02420949482550508 0.07139983303613166 0.125\n",
"0.023250173871470436 0.07139983303613166 0.13571428571428573\n",
"0.021806979409927874 0.07139983303613166 0.15714285714285717\n",
"0.021243542462555526 0.07139983303613166 0.16785714285714287\n",
"0.020492314598981903 0.07139983303613166 0.1785714285714286\n",
"0.018988595280602594 0.07139983303613166 0.18928571428571433\n",
"0.017709002534490925 0.07139983303613166 0.2\n",
"0.016690852800307077 0.07331232856388518 0.13571428571428573\n",
"0.01593071188016809 0.07331232856388518 0.14642857142857146\n",
"0.015613204086776633 0.07331232856388518 0.15714285714285717\n",
"0.015292201954929863 0.07331232856388518 0.16785714285714287\n",
"0.014117014852499638 0.07331232856388518 0.1785714285714286\n",
"0.013282002813738841 0.07331232856388518 0.2\n",
"0.013040307965893755 0.07522482409163872 0.08214285714285716\n",
"0.012241059029957618 0.07522482409163872 0.125\n",
"0.0112352106339412 0.07522482409163872 0.13571428571428573\n",
"0.011019562632271718 0.07522482409163872 0.15714285714285717\n",
"0.010526247380836212 0.07522482409163872 0.16785714285714287\n",
"0.009292948765782488 0.07522482409163872 0.1785714285714286\n",
"0.007191712196619987 0.07522482409163872 0.18928571428571433\n",
"0.006916646279202909 0.07522482409163872 0.2\n",
"0.005734252594042727 0.07713731961939224 0.125\n",
"0.005502969939277458 0.07713731961939224 0.13571428571428573\n",
"0.0051744042213042185 0.07713731961939224 0.14642857142857146\n",
"0.0045753596172254385 0.07713731961939224 0.15714285714285717\n",
"0.003082220442612027 0.07713731961939224 0.16785714285714287\n",
"0.0013171908419043477 0.07713731961939224 0.1785714285714286\n",
"0.0010811712610995783 0.07713731961939224 0.18928571428571433\n",
"0.0007400456451312487 0.07713731961939224 0.2\n",
"0.00035313854351931573 0.07904981514714576 0.13571428571428573\n"
]
}
],
"source": [
"min_val = 0.2549\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(np.pi/44, np.pi/32, 15):\n",
" for k in np.linspace(0.05, 0.2, 15):\n",
" avgstd = np.zeros(1000)\n",
" for j in range(0, len(avgstd)):\n",
" discover1 = montecarlo_zimpact(np.pi/4, i, 8, k, 54) #Using 54 samples as this is the number of samples from class\n",
" avgstd[j] = np.std(discover1)\n",
" if ((abs(np.mean(avgstd) - 0.2549))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgstd) - 0.2549)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 414,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.027376182882112382 0.07139983303613166 0.05\n",
"0.02645997447327919 0.07139983303613166 0.07142857142857144\n",
"0.026189230353563908 0.07139983303613166 0.08214285714285716\n",
"0.025379184157777984 0.07139983303613166 0.09285714285714286\n",
"0.02284166701207674 0.07139983303613166 0.125\n",
"0.02262359004767342 0.07139983303613166 0.14642857142857146\n",
"0.02090021509626433 0.07139983303613166 0.16785714285714287\n",
"0.019580410704005374 0.07139983303613166 0.18928571428571433\n",
"0.017740037885251053 0.07139983303613166 0.2\n",
"0.017219196621300198 0.07331232856388518 0.125\n",
"0.016958840449683266 0.07331232856388518 0.14642857142857146\n",
"0.015637296467176653 0.07331232856388518 0.15714285714285717\n",
"0.01525439735831699 0.07331232856388518 0.16785714285714287\n",
"0.014558876304028606 0.07331232856388518 0.1785714285714286\n",
"0.012567954084887312 0.07331232856388518 0.18928571428571433\n",
"0.012550583224874984 0.07522482409163872 0.1142857142857143\n",
"0.01130141437737514 0.07522482409163872 0.125\n",
"0.009922987730556526 0.07522482409163872 0.14642857142857146\n",
"0.009610108501806436 0.07522482409163872 0.15714285714285717\n",
"0.008263007284322638 0.07522482409163872 0.1785714285714286\n",
"0.007374363266322209 0.07522482409163872 0.2\n",
"0.007215163024966276 0.07713731961939224 0.1142857142857143\n",
"0.00529675968432422 0.07713731961939224 0.125\n",
"0.004743418427261559 0.07713731961939224 0.14642857142857146\n",
"0.003788058092453861 0.07713731961939224 0.15714285714285717\n",
"0.0019297618177775422 0.07713731961939224 0.16785714285714287\n",
"0.0005225335119747876 0.07713731961939224 0.2\n",
"0.0003806629486978741 0.07904981514714576 0.125\n",
"6.462605700274793e-05 0.07904981514714576 0.13571428571428573\n"
]
}
],
"source": [
"min_val = 0.2549\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(np.pi/44, np.pi/32, 15):\n",
" for k in np.linspace(0.05, 0.2, 15):\n",
" avgstd = np.zeros(1000)\n",
" for j in range(0, len(avgstd)):\n",
" discover1 = montecarlo_zimpact(np.pi/4, i, 8, k, 54) #Using 54 samples as this is the number of samples from class\n",
" avgstd[j] = np.std(discover1)\n",
" if ((abs(np.mean(avgstd) - 0.2549))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgstd) - 0.2549)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 451,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of this trial was -0.0952 and the standard deviation is 0.2292\n"
]
}
],
"source": [
"discover3 = montecarlo_zimpact(np.pi/20, 0.07904981514714576, 7.5, 0.13571428571428573, 54) #Using 54 samples as this is the number of samples from class\n",
"mean_final33 = np.mean(discover3)\n",
"std_final33 = np.std(discover3)\n",
"print('The mean of this trial was {:.4f} and the standard deviation is {:.4f}'.format(mean_final33, std_final33));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Taking 3 recursive trials of this process, we still see a large variance in the standard deviation, but at least have a set of values in the tolerance that are realistic and workable moving forward __(theta within 0.080 radians and v_0 within 0.14 m/s)__. The same process will now be undertaken to match the mean. "
]
},
{
"cell_type": "code",
"execution_count": 425,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8.38327010063664 -0.7853981633974483 4.0\n",
"7.6602692807771975 -0.7853981633974483 4.275862068965517\n",
"7.077217818561554 -0.7853981633974483 4.551724137931035\n",
"6.591873456669018 -0.7853981633974483 4.827586206896552\n",
"6.186303155383337 -0.7853981633974483 5.103448275862069\n",
"5.832003425168019 -0.7853981633974483 5.379310344827586\n",
"5.528554460912917 -0.7853981633974483 5.655172413793103\n",
"5.2702129040064865 -0.7853981633974483 5.931034482758621\n",
"5.05272643084532 -0.7853981633974483 6.206896551724138\n",
"4.852254194440596 -0.7853981633974483 6.482758620689655\n",
"4.685125751023797 -0.7853981633974483 6.758620689655173\n",
"4.52101829824542 -0.7853981633974483 7.0344827586206895\n",
"4.3899846509677545 -0.7853981633974483 7.310344827586206\n",
"4.267693993436295 -0.7853981633974483 7.586206896551724\n",
"4.159359386752918 -0.7853981633974483 7.862068965517241\n",
"4.06570399633488 -0.7853981633974483 8.137931034482758\n",
"3.9736548177893742 -0.7853981633974483 8.413793103448276\n",
"3.892634877173269 -0.7853981633974483 8.689655172413794\n",
"3.8208818415566426 -0.7853981633974483 8.96551724137931\n",
"3.754990995352536 -0.7853981633974483 9.241379310344827\n",
"3.693060376628168 -0.7853981633974483 9.517241379310345\n",
"3.636087852521297 -0.7853981633974483 9.793103448275861\n",
"3.581957645310004 -0.7853981633974483 10.068965517241379\n",
"3.5402529628154835 -0.7853981633974483 10.344827586206897\n",
"3.495102693500755 -0.7853981633974483 10.620689655172413\n",
"3.4571455030899916 -0.7853981633974483 10.89655172413793\n",
"3.4190261801168527 -0.7853981633974483 11.172413793103448\n",
"3.3830073981769733 -0.7853981633974483 11.448275862068964\n",
"3.346477144545344 -0.7853981633974483 11.724137931034482\n",
"3.324442873603521 -0.7853981633974483 12.0\n",
"3.2765649217706034 -0.7312327728183139 9.517241379310345\n",
"3.2235086479150508 -0.7312327728183139 9.793103448275861\n",
"3.1764974445434384 -0.7312327728183139 10.068965517241379\n",
"3.1428021216606745 -0.7312327728183139 10.344827586206897\n",
"3.100059428993449 -0.7312327728183139 10.620689655172413\n",
"3.062174042032459 -0.7312327728183139 10.89655172413793\n",
"3.031603360926868 -0.7312327728183139 11.172413793103448\n",
"2.9992285446332936 -0.7312327728183139 11.448275862068964\n",
"2.970216568812821 -0.7312327728183139 11.724137931034482\n",
"2.941227515938937 -0.7312327728183139 12.0\n",
"2.905201182314297 -0.6770673822391795 9.517241379310345\n",
"2.863135517902271 -0.6770673822391795 9.793103448275861\n",
"2.8234149360024716 -0.6770673822391795 10.068965517241379\n",
"2.7864501729749382 -0.6770673822391795 10.344827586206897\n",
"2.746417414601643 -0.6770673822391795 10.620689655172413\n",
"2.7169122327707567 -0.6770673822391795 10.89655172413793\n",
"2.6836232148901837 -0.6770673822391795 11.172413793103448\n",
"2.6530821941421125 -0.6770673822391795 11.448275862068964\n",
"2.6295213435047113 -0.6770673822391795 11.724137931034482\n",
"2.602776961572353 -0.6770673822391795 12.0\n",
"2.580070205985898 -0.6229019916600451 9.517241379310345\n",
"2.535389307394687 -0.6229019916600451 9.793103448275861\n",
"2.499304346629637 -0.6229019916600451 10.068965517241379\n",
"2.4660589465899143 -0.6229019916600451 10.344827586206897\n",
"2.4358686160956515 -0.6229019916600451 10.620689655172413\n",
"2.402314293402734 -0.6229019916600451 10.89655172413793\n",
"2.3753623151203063 -0.6229019916600451 11.172413793103448\n",
"2.346599727800412 -0.6229019916600451 11.448275862068964\n",
"2.3211666748919315 -0.6229019916600451 11.724137931034482\n",
"2.299660144470756 -0.6229019916600451 12.0\n",
"2.2911866330515864 -0.5687366010809108 9.517241379310345\n",
"2.2454606456069337 -0.5687366010809108 9.793103448275861\n",
"2.2101644920875483 -0.5687366010809108 10.068965517241379\n",
"2.1784596141742902 -0.5687366010809108 10.344827586206897\n",
"2.147054042069741 -0.5687366010809108 10.620689655172413\n",
"2.116435398529999 -0.5687366010809108 10.89655172413793\n",
"2.093202284798193 -0.5687366010809108 11.172413793103448\n",
"2.0699273823168953 -0.5687366010809108 11.448275862068964\n",
"2.046997734392344 -0.5687366010809108 11.724137931034482\n",
"2.026202419766661 -0.5687366010809108 12.0\n",
"2.017481700025239 -0.5145712105017765 9.517241379310345\n",
"1.9783625151914515 -0.5145712105017765 9.793103448275861\n",
"1.946537956121733 -0.5145712105017765 10.068965517241379\n",
"1.9181451952754598 -0.5145712105017765 10.344827586206897\n",
"1.8888093401047077 -0.5145712105017765 10.620689655172413\n",
"1.8598238308773523 -0.5145712105017765 10.89655172413793\n",
"1.8334276385514325 -0.5145712105017765 11.172413793103448\n",
"1.814417191197478 -0.5145712105017765 11.448275862068964\n",
"1.7932022337152747 -0.5145712105017765 11.724137931034482\n",
"1.772423101972163 -0.5145712105017765 12.0\n",
"1.769079338577468 -0.46040581992264207 9.517241379310345\n",
"1.730443430529315 -0.46040581992264207 9.793103448275861\n",
"1.6999934392426725 -0.46040581992264207 10.068965517241379\n",
"1.6739978124072885 -0.46040581992264207 10.344827586206897\n",
"1.6473313358538686 -0.46040581992264207 10.620689655172413\n",
"1.621327804254281 -0.46040581992264207 10.89655172413793\n",
"1.6005563077785068 -0.46040581992264207 11.172413793103448\n",
"1.5733482523258076 -0.46040581992264207 11.448275862068964\n",
"1.5584200268997948 -0.46040581992264207 11.724137931034482\n",
"1.5392985926565403 -0.46040581992264207 12.0\n",
"1.5348915041156213 -0.40624042934350774 9.517241379310345\n",
"1.5027490794627947 -0.40624042934350774 9.793103448275861\n",
"1.4725836473849268 -0.40624042934350774 10.068965517241379\n",
"1.4481661213475396 -0.40624042934350774 10.344827586206897\n",
"1.4207876252346954 -0.40624042934350774 10.620689655172413\n",
"1.3997742151011217 -0.40624042934350774 10.89655172413793\n",
"1.3762854466063246 -0.40624042934350774 11.172413793103448\n",
"1.3544419271111798 -0.40624042934350774 11.448275862068964\n",
"1.3413802876417122 -0.40624042934350774 11.724137931034482\n",
"1.321522612035813 -0.40624042934350774 12.0\n",
"1.3213687000310124 -0.35207503876437335 9.517241379310345\n",
"1.2905838896338087 -0.35207503876437335 9.793103448275861\n",
"1.2612957042463946 -0.35207503876437335 10.068965517241379\n",
"1.2326007168505946 -0.35207503876437335 10.344827586206897\n",
"1.212422740572055 -0.35207503876437335 10.620689655172413\n",
"1.1868651602198685 -0.35207503876437335 10.89655172413793\n",
"1.1666613721583268 -0.35207503876437335 11.172413793103448\n",
"1.1492448093371164 -0.35207503876437335 11.448275862068964\n",
"1.1293502112403764 -0.35207503876437335 11.724137931034482\n",
"1.1161496401517756 -0.35207503876437335 12.0\n",
"1.0875750618568136 -0.29790964818523896 9.793103448275861\n",
"1.0616706498536446 -0.29790964818523896 10.068965517241379\n",
"1.0356332391034413 -0.29790964818523896 10.344827586206897\n",
"1.0121718412982612 -0.29790964818523896 10.620689655172413\n",
"0.9907145988501461 -0.29790964818523896 10.89655172413793\n",
"0.9719916080535532 -0.29790964818523896 11.172413793103448\n",
"0.9539132917823613 -0.29790964818523896 11.448275862068964\n",
"0.9326985723001702 -0.29790964818523896 11.724137931034482\n",
"0.9192885047901155 -0.29790964818523896 12.0\n",
"0.8965069097182793 -0.24374425760610463 9.793103448275861\n",
"0.8718382529881988 -0.24374425760610463 10.068965517241379\n",
"0.8444376893933894 -0.24374425760610463 10.344827586206897\n",
"0.8233676348596454 -0.24374425760610463 10.620689655172413\n",
"0.8012222866893409 -0.24374425760610463 10.89655172413793\n",
"0.7843507917704677 -0.24374425760610463 11.172413793103448\n",
"0.764257804215595 -0.24374425760610463 11.448275862068964\n",
"0.7469558848701562 -0.24374425760610463 11.724137931034482\n",
"0.7310007023574769 -0.24374425760610463 12.0\n",
"0.7159964306762666 -0.18957886702697024 9.793103448275861\n",
"0.686890359640948 -0.18957886702697024 10.068965517241379\n",
"0.665274806796984 -0.18957886702697024 10.344827586206897\n",
"0.6410579944863931 -0.18957886702697024 10.620689655172413\n",
"0.6212925382981849 -0.18957886702697024 10.89655172413793\n",
"0.6030610867314308 -0.18957886702697024 11.172413793103448\n",
"0.5866485602507455 -0.18957886702697024 11.448275862068964\n",
"0.5674638878188522 -0.18957886702697024 11.724137931034482\n",
"0.5508654179433286 -0.18957886702697024 12.0\n",
"0.5359096799696388 -0.13541347644783586 9.793103448275861\n",
"0.5098222193774709 -0.13541347644783586 10.068965517241379\n",
"0.48912726201254964 -0.13541347644783586 10.344827586206897\n",
"0.463618903805038 -0.13541347644783586 10.620689655172413\n",
"0.44540124654928226 -0.13541347644783586 10.89655172413793\n",
"0.42735505813568514 -0.13541347644783586 11.172413793103448\n",
"0.40906683882405204 -0.13541347644783586 11.448275862068964\n",
"0.39250025087989227 -0.13541347644783586 11.724137931034482\n",
"0.37777653531453464 -0.13541347644783586 12.0\n",
"0.36521835707387174 -0.08124808586870147 9.793103448275861\n",
"0.34073485712706925 -0.08124808586870147 10.068965517241379\n",
"0.31722244142885153 -0.08124808586870147 10.344827586206897\n",
"0.29503801541681707 -0.08124808586870147 10.620689655172413\n",
"0.2761457824704306 -0.08124808586870147 10.89655172413793\n",
"0.2587498506673668 -0.08124808586870147 11.172413793103448\n",
"0.23980599383679518 -0.08124808586870147 11.448275862068964\n",
"0.2235341089566435 -0.08124808586870147 11.724137931034482\n",
"0.20844271183095964 -0.08124808586870147 12.0\n",
"0.19623827906521385 -0.027082695289567194 9.793103448275861\n",
"0.17460016215786348 -0.027082695289567194 10.068965517241379\n",
"0.1481767130051218 -0.027082695289567194 10.344827586206897\n",
"0.12887366399037797 -0.027082695289567194 10.620689655172413\n",
"0.1111624497636872 -0.027082695289567194 10.89655172413793\n",
"0.09083664209114517 -0.027082695289567194 11.172413793103448\n",
"0.07527071959697035 -0.027082695289567194 11.448275862068964\n",
"0.058882991097610846 -0.027082695289567194 11.724137931034482\n",
"0.04215452903631753 -0.027082695289567194 12.0\n",
"0.03285168330248578 0.027082695289567194 9.793103448275861\n",
"0.01176826751262075 0.027082695289567194 10.068965517241379\n",
"0.0011790920614959052 0.08124808586870158 8.689655172413794\n"
]
}
],
"source": [
"min_val = 100\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(-np.pi/4, np.pi/4, 30):\n",
" for k in np.linspace(4,12,30):\n",
" avgavg = np.zeros(1000)\n",
" for j in range(0, len(avgavg)):\n",
" discover0 = montecarlo_zimpact(i, 0.08, k, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[j] = np.mean(discover0)\n",
" if ((abs(np.mean(avgavg) - -0.0474))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgavg) - -0.0474)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 426,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.6597231447316377 -0.1 8.0\n",
"0.6516455864086098 -0.1 8.03448275862069\n",
"0.6452975915811738 -0.1 8.068965517241379\n",
"0.6404263315097295 -0.1 8.10344827586207\n",
"0.6327982645270612 -0.1 8.137931034482758\n",
"0.6276667622596624 -0.1 8.172413793103448\n",
"0.6234787859720103 -0.1 8.206896551724139\n",
"0.6177611850398274 -0.1 8.241379310344827\n",
"0.612067834755188 -0.1 8.275862068965518\n",
"0.6080305428095297 -0.1 8.310344827586206\n",
"0.6024043606160141 -0.1 8.344827586206897\n",
"0.5953568696374203 -0.1 8.379310344827585\n",
"0.5908752406613234 -0.1 8.413793103448276\n",
"0.5839964668763952 -0.1 8.448275862068966\n",
"0.5779018341084067 -0.1 8.482758620689655\n",
"0.5746379647085446 -0.1 8.517241379310345\n",
"0.5711136284422744 -0.1 8.551724137931034\n",
"0.5638092397430098 -0.1 8.586206896551724\n",
"0.5580105440888788 -0.1 8.620689655172415\n",
"0.5545302792147843 -0.1 8.655172413793103\n",
"0.5513249102303193 -0.1 8.689655172413794\n",
"0.5465809145363572 -0.1 8.724137931034482\n",
"0.5415144876707746 -0.1 8.758620689655173\n",
"0.5366484949404622 -0.1 8.793103448275861\n",
"0.5329546428784879 -0.1 8.827586206896552\n",
"0.5269996455915229 -0.1 8.862068965517242\n",
"0.5233908296941284 -0.1 8.89655172413793\n",
"0.5194217515679878 -0.1 8.931034482758621\n",
"0.5143381204226162 -0.1 8.96551724137931\n",
"0.5112318920816888 -0.1 9.0\n",
"0.5088189213221807 -0.09310344827586207 8.827586206896552\n",
"0.5058181677647513 -0.09310344827586207 8.862068965517242\n",
"0.5029162999998054 -0.09310344827586207 8.89655172413793\n",
"0.4953073057180216 -0.09310344827586207 8.931034482758621\n",
"0.49183080361434606 -0.09310344827586207 8.96551724137931\n",
"0.48504704195352366 -0.09310344827586207 9.0\n",
"0.4843003855179876 -0.08620689655172414 8.862068965517242\n",
"0.47821307840367866 -0.08620689655172414 8.89655172413793\n",
"0.47595918610388044 -0.08620689655172414 8.931034482758621\n",
"0.46991411637451175 -0.08620689655172414 8.96551724137931\n",
"0.4671373314388283 -0.08620689655172414 9.0\n",
"0.46661360897661475 -0.07931034482758621 8.827586206896552\n",
"0.4616155303786128 -0.07931034482758621 8.862068965517242\n",
"0.45696888772278343 -0.07931034482758621 8.89655172413793\n",
"0.45296472617524774 -0.07931034482758621 8.931034482758621\n",
"0.4508170521204256 -0.07931034482758621 8.96551724137931\n",
"0.446527200608628 -0.07931034482758621 9.0\n",
"0.4455581091847419 -0.07241379310344828 8.827586206896552\n",
"0.4397228939238323 -0.07241379310344828 8.862068965517242\n",
"0.43617873977202215 -0.07241379310344828 8.89655172413793\n",
"0.4341182290174737 -0.07241379310344828 8.931034482758621\n",
"0.42826337106108847 -0.07241379310344828 8.96551724137931\n",
"0.42231778191413516 -0.07241379310344828 9.0\n",
"0.41721390393379476 -0.06551724137931034 8.862068965517242\n",
"0.4100446951264191 -0.06551724137931034 8.931034482758621\n",
"0.40663469950250003 -0.06551724137931034 8.96551724137931\n",
"0.40191268116519724 -0.06551724137931034 9.0\n",
"0.40115390346579294 -0.05862068965517241 8.827586206896552\n",
"0.3964107399455212 -0.05862068965517241 8.862068965517242\n",
"0.39233179169115107 -0.05862068965517241 8.89655172413793\n",
"0.3897631762474585 -0.05862068965517241 8.931034482758621\n",
"0.3838117431045729 -0.05862068965517241 8.96551724137931\n",
"0.38006450467490854 -0.05862068965517241 9.0\n",
"0.3791229055364922 -0.05172413793103448 8.827586206896552\n",
"0.3775997186228187 -0.05172413793103448 8.862068965517242\n",
"0.3719721670480653 -0.05172413793103448 8.89655172413793\n",
"0.3682172846174807 -0.05172413793103448 8.931034482758621\n",
"0.36254269788088445 -0.05172413793103448 8.96551724137931\n",
"0.35862832475068607 -0.05172413793103448 9.0\n",
"0.35566859100537507 -0.04482758620689655 8.862068965517242\n",
"0.3518160231164346 -0.04482758620689655 8.89655172413793\n",
"0.34740415545956793 -0.04482758620689655 8.931034482758621\n",
"0.3421921362912874 -0.04482758620689655 8.96551724137931\n",
"0.33903160698111334 -0.04482758620689655 9.0\n",
"0.3378983841755459 -0.03793103448275862 8.827586206896552\n",
"0.33322446568188974 -0.03793103448275862 8.862068965517242\n",
"0.3283640367747843 -0.03793103448275862 8.89655172413793\n",
"0.32359781494939427 -0.03793103448275862 8.931034482758621\n",
"0.32126969588710774 -0.03793103448275862 8.96551724137931\n",
"0.31410433691648176 -0.03793103448275862 9.0\n",
"0.3109931227765355 -0.031034482758620682 8.89655172413793\n",
"0.30421448875844104 -0.031034482758620682 8.931034482758621\n",
"0.29839904600641487 -0.031034482758620682 8.96551724137931\n",
"0.29556462132547445 -0.031034482758620682 9.0\n",
"0.2914035703052502 -0.02413793103448275 8.862068965517242\n",
"0.28707392480879124 -0.02413793103448275 8.89655172413793\n",
"0.282599918656562 -0.02413793103448275 8.931034482758621\n",
"0.27901739463362196 -0.02413793103448275 8.96551724137931\n",
"0.274808852093988 -0.02413793103448275 9.0\n",
"0.27164010735404814 -0.01724137931034482 8.862068965517242\n",
"0.26723954326690985 -0.01724137931034482 8.89655172413793\n",
"0.2608685887244351 -0.01724137931034482 8.931034482758621\n",
"0.258272996371381 -0.01724137931034482 8.96551724137931\n",
"0.2545603318374643 -0.01724137931034482 9.0\n",
"0.2538224922563914 -0.01034482758620689 8.827586206896552\n",
"0.25173050010564757 -0.01034482758620689 8.862068965517242\n",
"0.24475723478518074 -0.01034482758620689 8.89655172413793\n",
"0.24011428156875592 -0.01034482758620689 8.931034482758621\n",
"0.23810584502094545 -0.01034482758620689 8.96551724137931\n",
"0.23211672210045242 -0.01034482758620689 9.0\n",
"0.2276713957070573 -0.0034482758620689585 8.862068965517242\n",
"0.22662801082927125 -0.0034482758620689585 8.89655172413793\n",
"0.2193588431573838 -0.0034482758620689585 8.931034482758621\n",
"0.21721681967644063 -0.0034482758620689585 8.96551724137931\n",
"0.21059462659632128 -0.0034482758620689585 9.0\n",
"0.20978606696884444 0.0034482758620689724 8.862068965517242\n",
"0.20325771423725247 0.0034482758620689724 8.89655172413793\n",
"0.19866848470585347 0.0034482758620689724 8.931034482758621\n",
"0.19491791062701902 0.0034482758620689724 8.96551724137931\n",
"0.1907313329885024 0.0034482758620689724 9.0\n",
"0.1868624501252955 0.010344827586206903 8.862068965517242\n",
"0.18490841575824127 0.010344827586206903 8.89655172413793\n",
"0.179729288743628 0.010344827586206903 8.931034482758621\n",
"0.17340832689654365 0.010344827586206903 8.96551724137931\n",
"0.17156156010539778 0.010344827586206903 9.0\n",
"0.16940951553431524 0.017241379310344834 8.827586206896552\n",
"0.16775176470731581 0.017241379310344834 8.862068965517242\n",
"0.16208991817921936 0.017241379310344834 8.89655172413793\n",
"0.15954342258610169 0.017241379310344834 8.931034482758621\n",
"0.15313804566302916 0.017241379310344834 8.96551724137931\n",
"0.14957584704370466 0.017241379310344834 9.0\n",
"0.14569222134671392 0.024137931034482765 8.862068965517242\n",
"0.14138260263368374 0.024137931034482765 8.89655172413793\n",
"0.13591683871525329 0.024137931034482765 8.931034482758621\n",
"0.13347468889290487 0.024137931034482765 8.96551724137931\n",
"0.12864871295072286 0.024137931034482765 9.0\n",
"0.12518712933558754 0.031034482758620696 8.862068965517242\n",
"0.12109263070099113 0.031034482758620696 8.89655172413793\n",
"0.11554999858972895 0.031034482758620696 8.931034482758621\n",
"0.1133691868639718 0.031034482758620696 8.96551724137931\n",
"0.10694789494254586 0.031034482758620696 9.0\n",
"0.10458563574340965 0.03793103448275864 8.862068965517242\n",
"0.1012425753730537 0.03793103448275864 8.89655172413793\n",
"0.09757626045220463 0.03793103448275864 8.931034482758621\n",
"0.08990135460417581 0.03793103448275864 8.96551724137931\n",
"0.08900142473919895 0.03793103448275864 9.0\n",
"0.0879029398318559 0.04482758620689656 8.827586206896552\n",
"0.08215029548922431 0.04482758620689656 8.862068965517242\n",
"0.08042097811359519 0.04482758620689656 8.89655172413793\n",
"0.07385461901925931 0.04482758620689656 8.931034482758621\n",
"0.06910759007953023 0.04482758620689656 8.96551724137931\n",
"0.06800452582395704 0.04482758620689656 9.0\n",
"0.06795988166150692 0.0517241379310345 8.827586206896552\n",
"0.0638514238000616 0.0517241379310345 8.862068965517242\n",
"0.05772904528201536 0.0517241379310345 8.89655172413793\n",
"0.055049669950025054 0.0517241379310345 8.931034482758621\n",
"0.051841181355868265 0.0517241379310345 8.96551724137931\n",
"0.04540455348851982 0.0517241379310345 9.0\n",
"0.04293159624077683 0.05862068965517242 8.862068965517242\n",
"0.0410243356265929 0.05862068965517242 8.89655172413793\n",
"0.03602612306963418 0.05862068965517242 8.931034482758621\n",
"0.03182121910532472 0.05862068965517242 8.96551724137931\n",
"0.02590436392245679 0.05862068965517242 9.0\n",
"0.025687323772554838 0.06551724137931036 8.827586206896552\n",
"0.023419198106676545 0.06551724137931036 8.862068965517242\n",
"0.018040496391151267 0.06551724137931036 8.89655172413793\n",
"0.015557057991111206 0.06551724137931036 8.931034482758621\n",
"0.01094387495350669 0.06551724137931036 8.96551724137931\n",
"0.005833602744134837 0.06551724137931036 9.0\n",
"0.003542398190039313 0.07241379310344828 8.862068965517242\n",
"0.000991670988866336 0.07241379310344828 8.89655172413793\n",
"0.0001988079978386681 0.09310344827586209 8.448275862068966\n"
]
}
],
"source": [
"min_val = 1\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(-0.1, 0.1, 30):\n",
" for k in np.linspace(8,9,30):\n",
" avgavg = np.zeros(1000)\n",
" for j in range(0, len(avgavg)):\n",
" discover0 = montecarlo_zimpact(i, 0.08, k, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[j] = np.mean(discover0)\n",
" if ((abs(np.mean(avgavg) - -0.0474))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgavg) - -0.0474)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 431,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0006195164038403714 0.07275862068965518 8.89655172413793\n",
"0.0005834287579117511 0.07965517241379311 8.724137931034482\n",
"0.00012131808024317542 0.0810344827586207 8.689655172413794\n",
"4.876508560886644e-05 0.1003448275862069 8.310344827586206\n"
]
}
],
"source": [
"min_val = 0.001\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(0.07, 0.11, 30):\n",
" for k in np.linspace(8,9,30):\n",
" avgavg = np.zeros(1000)\n",
" for j in range(0, len(avgavg)):\n",
" discover0 = montecarlo_zimpact(i, 0.08, k, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[j] = np.mean(discover0)\n",
" if ((abs(np.mean(avgavg) - -0.0474))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgavg) - -0.0474)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 433,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.00020638158514214855 0.07965517241379311 8.724137931034482\n",
"2.282176344362702e-05 0.0810344827586207 8.689655172413794\n"
]
}
],
"source": [
"min_val = 0.001\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(0.07, 0.11, 30):\n",
" for k in np.linspace(8,9,30):\n",
" avgavg = np.zeros(1000)\n",
" for j in range(0, len(avgavg)):\n",
" discover0 = montecarlo_zimpact(i, 0.08, k, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[j] = np.mean(discover0)\n",
" if ((abs(np.mean(avgavg) - -0.0474))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgavg) - -0.0474)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 471,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0005059346661650949 0.07 8.931034482758621\n",
"0.0005040594256563447 0.07551724137931035 8.827586206896552\n",
"0.0004269707620206606 0.07827586206896553 8.758620689655173\n",
"0.00022630594297996798 0.09206896551724139 8.448275862068966\n",
"0.00015675545454334888 0.09482758620689656 8.413793103448276\n",
"7.893903503374683e-05 0.09620689655172414 8.379310344827585\n"
]
}
],
"source": [
"min_val = 0.001\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(0.07, 0.11, 30):\n",
" for k in np.linspace(8,9,30):\n",
" avgavg = np.zeros(1000)\n",
" for j in range(0, len(avgavg)):\n",
" discover0 = montecarlo_zimpact(i, 0.08, k, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[j] = np.mean(discover0)\n",
" if ((abs(np.mean(avgavg) - -0.0474))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgavg) - -0.0474)\n",
" print(min_val, i , k)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 631,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0008501845105075359 0.07 8.931034482758621\n",
"3.992161304768732e-05 0.07275862068965518 8.862068965517242\n"
]
}
],
"source": [
"min_val = 0.001\n",
"pi_std = 0\n",
"vel_std = 0\n",
"for i in np.linspace(0.07, 0.11, 30):\n",
" for k in np.linspace(8,9,30):\n",
" avgavg = np.zeros(1000)\n",
" for j in range(0, len(avgavg)):\n",
" discover0 = montecarlo_zimpact(i, 0.08, k, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" avgavg[j] = np.mean(discover0)\n",
" if ((abs(np.mean(avgavg) - -0.0474))<min_val):\n",
" vel_std = k;\n",
" pi_std = i;\n",
" min_val = abs(np.mean(avgavg) - -0.0474)\n",
" print(min_val, i , k)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From this analysis, we observe that we need an __average velocity v_0 of around 8.68 m/s and theta_0 of about 0.081__ to yield the best results compared to our human trials. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After the analysis performed, the robot responsible for recreating the class accuracy and precision would have to have the following rough characteristics:\n",
"\n",
"__Launch angle, \\theta, of 0.081 radians with a standard deviation of 0.080.__\n",
"\n",
"__Initial Velocity of 8.68 m/s with a standard deviation of 0.14 m/s.__\n",
"\n",
"(This answer gets further refined by iterating the next bit of code)"
]
},
{
"cell_type": "code",
"execution_count": 632,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of this trial was -0.0494 and the standard deviation is 0.2426\n"
]
}
],
"source": [
"average_of_mean_final = np.zeros(1000)\n",
"average_of_std_final = np.zeros(1000)\n",
"for i in range(0,len(average_of_mean_final)):\n",
" discover = montecarlo_zimpact(0.081, 0.0835,8.68, 0.14, 54) #Using 54 samples as this is the number of samples from class\n",
" average_of_mean_final[i] = np.mean(discover)\n",
" average_of_std_final[i] = np.std(discover)\n",
"mean_final = np.mean(average_of_mean_final)\n",
"std_final = np.mean(average_of_std_final)\n",
"print('The mean of this trial was {:.4f} and the standard deviation is {:.4f}'.format(mean_final, std_final));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These accuracy and precision metrics are reasonably close to replicating the class precision and accuracy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__FINAL ANSWER__: After some more slight changing of the uncertainties to come closer to the human trial metrics, we come to a robotic control format which matches the human accuracy and precision to within 5 percent for both the mean z-impact and the standard deviation consistently. As a result, we find these inputs to be sufficient in being passed to the robot to successfully simulate the human trials. "
]
},
{
"cell_type": "code",
"execution_count": 635,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>Human Experimental Data</th>\n",
" <th>Robotic Control Input</th>\n",
" <th>Percent Difference</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Mean Z Impact</td>\n",
" <td>-0.0474</td>\n",
" <td>-0.0493999</td>\n",
" <td>4.21911</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Standard Deviation</td>\n",
" <td>0.2549</td>\n",
" <td>0.242637</td>\n",
" <td>-4.81081</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Initial Velocity</td>\n",
" <td></td>\n",
" <td>8.68 m/s</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Velocity Uncertainty</td>\n",
" <td></td>\n",
" <td>0.14 m/s</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Launch Angle</td>\n",
" <td></td>\n",
" <td>0.081 radians</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Angle Uncertainty</td>\n",
" <td></td>\n",
" <td>0.0835 radians</td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Human Experimental Data Robotic Control Input \\\n",
"0 Mean Z Impact -0.0474 -0.0493999 \n",
"1 Standard Deviation 0.2549 0.242637 \n",
"2 Initial Velocity 8.68 m/s \n",
"3 Velocity Uncertainty 0.14 m/s \n",
"4 Launch Angle 0.081 radians \n",
"5 Angle Uncertainty 0.0835 radians \n",
"\n",
" Percent Difference \n",
"0 4.21911 \n",
"1 -4.81081 \n",
"2 \n",
"3 \n",
"4 \n",
"5 "
]
},
"execution_count": 635,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"percent_diff_mean = ((mean_final - -0.0474)/-0.0474)*100\n",
"percent_diff_std = 100*((std_final - 0.2549)/0.2549)\n",
"data = [['Mean Z Impact','-0.0474', mean_final, percent_diff_mean], ['Standard Deviation','0.2549', std_final, percent_diff_std], ['Initial Velocity', '', '8.68 m/s',''], ['Velocity Uncertainty', '', '0.14 m/s', ''],['Launch Angle','','0.081 radians',''],['Angle Uncertainty', '', '0.0835 radians', '']];\n",
"data_table = pd.DataFrame(data, columns = ['', 'Human Experimental Data' , 'Robotic Control Input', 'Percent Difference']);\n",
"data_table"
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}