Skip to content

Instantly share code, notes, and snippets.

@qiaoxu123
Last active March 9, 2022 16:41
Show Gist options
  • Save qiaoxu123/75fec9fab77680966b5629430f0ec2b6 to your computer and use it in GitHub Desktop.
Save qiaoxu123/75fec9fab77680966b5629430f0ec2b6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this notebook, you will implement the kinematic bicycle model. The model accepts velocity and steering rate inputs and steps through the bicycle kinematic equations. Once the model is implemented, you will provide a set of inputs to drive the bicycle in a figure 8 trajectory.\n",
"\n",
"The bicycle kinematics are governed by the following set of equations:\n",
"\n",
"\\begin{align*}\n",
"\\dot{x}_c &= v \\cos{(\\theta + \\beta)} \\\\\n",
"\\dot{y}_c &= v \\sin{(\\theta + \\beta)} \\\\\n",
"\\dot{\\theta} &= \\frac{v \\cos{\\beta} \\tan{\\delta}}{L} \\\\\n",
"\\dot{\\delta} &= \\omega \\\\\n",
"\\beta &= \\tan^{-1}(\\frac{l_r \\tan{\\delta}}{L})\n",
"\\end{align*}\n",
"\n",
"where the inputs are the bicycle speed $v$ and steering angle rate $\\omega$. The input can also directly be the steering angle $\\delta$ rather than its rate in the simplified case. The Python model will allow us both implementations.\n",
"\n",
"In order to create this model, it's a good idea to make use of Python class objects. This allows us to store the state variables as well as make functions for implementing the bicycle kinematics. \n",
"\n",
"The bicycle begins with zero initial conditions, has a maximum turning rate of 1.22 rad/s, a wheelbase length of 2m, and a length of 1.2m to its center of mass from the rear axle.\n",
"\n",
"From these conditions, we initialize the Python class as follows:"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from notebook_grader import BicycleSolution, grade_bicycle\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.image as mpimg\n",
"\n",
"class Bicycle():\n",
" def __init__(self):\n",
" self.xc = 0\n",
" self.yc = 0\n",
" self.theta = 0\n",
" self.delta = 0\n",
" self.beta = 0\n",
" \n",
" self.L = 2\n",
" self.lr = 1.2\n",
" self.w_max = 1.22\n",
" \n",
" self.sample_time = 0.01\n",
" \n",
" def reset(self):\n",
" self.xc = 0\n",
" self.yc = 0\n",
" self.theta = 0\n",
" self.delta = 0\n",
" self.beta = 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A sample time is required for numerical integration when propagating the kinematics through time. This is set to 10 milliseconds. We also have a reset function which sets all the state variables back to 0. \n",
"\n",
"With this sample time, implement the kinematic model using the function $\\textit{step}$ defined in the next cell. The function should take speed + angular rate as inputs and update the state variables. Don't forget about the maximum turn rate on the bicycle!"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class Bicycle(Bicycle):\n",
" def step(self, v, w):\n",
" # ==================================\n",
" # Implement kinematic model here\n",
" # ==================================\n",
" self.xc = self.xc + v * np.cos(self.theta + self.beta) * self.sample_time\n",
" self.yc = self.yc + v * np.sin(self.theta + self.beta) * self.sample_time\n",
" self.theta = self.theta + ((v * np.cos(self.beta) * np.tan(self.delta)/self.L)) * self.sample_time\n",
" self.delta = w * self.sample_time + self.delta\n",
" self.beta = np.arctan((self.lr / self.L) * np.tan(self.delta))\n",
"\n",
" pass\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the model setup, we can now start giving bicycle inputs and producing trajectories. \n",
"\n",
"Suppose we want the model to travel a circle of radius 10 m in 20 seconds. Using the relationship between the radius of curvature and the steering angle, the desired steering angle can be computed.\n",
"\n",
"\\begin{align*}\n",
" \\tan{\\delta} &= \\frac{L}{r} \\\\\n",
" \\delta &= \\tan^{-1}(\\frac{L}{r}) \\\\\n",
" &= \\tan^{-1}(\\frac{2}{10}) \\\\\n",
" &= 0.1974\n",
"\\end{align*}\n",
"\n",
"If the steering angle is directly set to 0.1974 using a simplied bicycled model, then the bicycle will travel in a circle without requiring any additional steering input. \n",
"\n",
"The desired speed can be computed from the circumference of the circle:\n",
"\n",
"\\begin{align*}\n",
" v &= \\frac{d}{t}\\\\\n",
" &= \\frac{2 \\pi 10}{20}\\\\\n",
" &= \\pi\n",
"\\end{align*}\n",
"\n",
"We can now implement this in a loop to step through the model equations. We will also run our bicycle model solution along with your model to show you the expected trajectory. This will help you verify the correctness of your model."
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_time = 0.01\n",
"time_end = 20\n",
"model = Bicycle()\n",
"solution_model = BicycleSolution()\n",
"\n",
"# set delta directly\n",
"model.delta = np.arctan(2/10)\n",
"solution_model.delta = np.arctan(2/10)\n",
"\n",
"t_data = np.arange(0,time_end,sample_time)\n",
"x_data = np.zeros_like(t_data)\n",
"y_data = np.zeros_like(t_data)\n",
"x_solution = np.zeros_like(t_data)\n",
"y_solution = np.zeros_like(t_data)\n",
"\n",
"for i in range(t_data.shape[0]):\n",
" x_data[i] = model.xc\n",
" y_data[i] = model.yc\n",
" model.step(np.pi, 0)\n",
" \n",
" x_solution[i] = solution_model.xc\n",
" y_solution[i] = solution_model.yc\n",
" solution_model.step(np.pi, 0)\n",
"\n",
"# print(\"model.xc = \",model.xc)\n",
"# print(\"model.yc = \",model.yc)\n",
"# print(\"model.theta = \",model.theta)\n",
"# print(\"model.delta = \",model.delta)\n",
"# print(\"model.beta = \",model.beta)\n",
" \n",
"# print(\"------------------------------------\")\n",
" \n",
"# print(\"solution_model.xc = \",solution_model.xc)\n",
"# print(\"solution_model.yc = \",solution_model.xc)\n",
"# print(\"solution_model.theta = \",solution_model.theta)\n",
"# print(\"solution_model.delta = \",solution_model.delta)\n",
"# print(\"solution_model.beta = \",solution_model.beta)\n",
" \n",
"# print(\"---------------------------------------------\")\n",
" \n",
" model.beta = 0\n",
" solution_model.beta=0\n",
" \n",
"plt.axis('equal')\n",
"plt.plot(x_data, y_data,label='Learner Model')\n",
"# plt.plot(x_solution, y_solution,label='Solution Model')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"The plot above shows the desired circle of 10m radius. The path is slightly offset which is caused by the sideslip effects due to $\\beta$. By forcing $\\beta = 0$ through uncommenting the last line in the loop, you can see that the offset disappears and the circle becomes centered at (0,10). \n",
"\n",
"However, in practice the steering angle cannot be directly set and must be changed through angular rate inputs $\\omega$. The cell below corrects for this and sets angular rate inputs to generate the same circle trajectory. The speed $v$ is still maintained at $\\pi$ m/s."
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nwMPOcYYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_time = 0.01\n",
"time_end = 20\n",
"model.reset()\n",
"solution_model.reset()\n",
"\n",
"t_data = np.arange(0,time_end,sample_time)\n",
"x_data = np.zeros_like(t_data)\n",
"y_data = np.zeros_like(t_data)\n",
"x_solution = np.zeros_like(t_data)\n",
"y_solution = np.zeros_like(t_data)\n",
"\n",
"for i in range(t_data.shape[0]):\n",
" x_data[i] = model.xc\n",
" y_data[i] = model.yc\n",
" \n",
" if model.delta < np.arctan(2/10):\n",
" model.step(np.pi, model.w_max)\n",
" else:\n",
" model.step(np.pi, 0)\n",
" \n",
" x_solution[i] = solution_model.xc\n",
" y_solution[i] = solution_model.yc\n",
" \n",
" if solution_model.delta < np.arctan(2/10):\n",
" solution_model.step(np.pi, model.w_max)\n",
" else:\n",
" solution_model.step(np.pi, 0) \n",
"\n",
"plt.axis('equal')\n",
"plt.plot(x_data, y_data,label='Learner Model')\n",
"# plt.plot(x_solution, y_solution,label='Solution Model')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here are some other example trajectories: a square path, a spiral path, and a wave path. Uncomment each section to view."
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD8CAYAAACfF6SlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8VPW9//HXJzPZFyAkrEESdpBV\nI1pAwQUVN7ytVuwiVVtqa72tbW+ttra991etXVxbrz5opXi7uFwshfZaF3CrCNIgqCACERDClrBk\n3yaT7++PGTBiIJCZ5Ewy7+fjkUcyZ87MvDlM3jlzlu8x5xwiIhJfErwOICIinU/lLyISh1T+IiJx\nSOUvIhKHVP4iInFI5S8iEodU/iIicUjlLyISh1T+IiJxyO91AICcnByXn5/vdQwRkS5lzZo1+51z\nue15bJvlb2YLgMuAUufc2KPu+y7wSyDXObffzAx4ELgEqAW+5Jx7q63XyM/Pp6ioqD35RUTilpl9\n2N7Hnshmn4XAxa286CBgJrCjxeRZwPDw1zzgkfYGExGRjtNm+TvnXgMOtnLX/cD3gJYjw80G/seF\nrAJ6mln/qCQVEZGoadcOXzO7AtjlnHv7qLsGAjtb3C4JT2vtOeaZWZGZFZWVlbUnhoiItNNJ7/A1\nszTgB8CFrd3dyrRWx4x2zs0H5gMUFhZqXGmRThYIBCgpKaG+vt7rKNKGlJQU8vLySExMjNpztudo\nn6FAAfB2aP8uecBbZjaZ0Jr+oBbz5gG7Iw0pItFXUlJCZmYm+fn5hH+XJQY55zhw4AAlJSUUFBRE\n7XlPerOPc+5d51wf51y+cy6fUOGf5pzbCywFrrOQs4AK59yeqKUVkaipr6+nd+/eKv4YZ2b07t07\n6p/Q2ix/M3sCWAmMNLMSM7vxOLM/C2wFioHfAl+PSkoR6RAq/q6hI/6f2tzs45y7to3781v87ICb\nI48lItFSHwiybX8NDU3NvLRxH1/8VD65mclexxKPaXgHkW5s3c5ypv38ZWY9+E+ufHgFD71UTFV9\nwOtYR2RkZHgdoU0LFy7EzFi+fPmRaYsXL8bMWLRo0Qk/zyuvvMJll10W8TzRovIX6aacc3z76XUk\n+xP4xVXjj0wflJ3mYaqO1dTU1CHPMW7cOJ544okjt5988kkmTJgQ8Wt5SeUv0k3traxna1kNXzm7\ngM8Whg7Cy0zxk+iL7V/7srIyPvOZz3DGGWdwxhlnsGLFCgBWr17NlClTmDRpElOmTGHTpk1AaM38\n6quv5vLLL+fCCy/klVdeYcaMGVx11VWMGjWKz3/+84S2SMOaNWuYPn06p59+OhdddBF79oSOR5kx\nYwZ33HEH06dP58EHH/xEprPPPpvVq1cTCASorq6muLiYiRMnHrl/+fLlTJo0iXHjxnHDDTfQ0NAA\nwHPPPceoUaOYNm0af/nLX47MX1NTww033MAZZ5zBpEmTWLJkSccszOOIiYHdRCT6fAmhnYTB8Fk0\nq39wPjnprW/r/8+/beC93ZVRff0xA7L48eWnnvTjvvnNb3Lrrbcybdo0duzYwUUXXcTGjRsZNWoU\nr732Gn6/n2XLlnHHHXfwzDPPALBy5UreeecdsrOzeeWVV1i7di0bNmxgwIABTJ06lRUrVnDmmWdy\nyy23sGTJEnJzc3nqqaf4wQ9+wIIFCwAoLy/n1VdfbTWTmXHBBRfw/PPPU1FRwRVXXMG2bduA0FFT\nX/rSl1i+fDkjRozguuuu45FHHuGmm27iK1/5Ci+99BLDhg3jmmuuOfJ8d911F+eddx4LFiygvLyc\nyZMnc8EFF5z0soqEyl+km8rNSKYgJ52/vb2bG6bm0yczxetIJ2TZsmW89957R25XVlZSVVVFRUUF\nc+fOZcuWLZgZgcBH+y5mzpxJdnb2kduTJ08mLy8PgIkTJ7J9+3Z69uzJ+vXrmTlzJgDBYJD+/T8a\nfaZlObdmzpw5PPTQQ1RUVHDvvfdy9913A7Bp0yYKCgoYMWIEAHPnzuXhhx9mxowZFBQUMHz4cAC+\n8IUvMH/+fABeeOEFli5dyq9+9Ssg9Adkx44drbxqx1H5i3RTZsa8c4Zw+1/e5Y+rPuSLn8o/5rzt\nWUPvKM3NzaxcuZLU1NSPTb/llls499xzWbx4Mdu3b2fGjBlH7ktPT//YvMnJH33C8fl8NDU14Zzj\n1FNPZeXKla2+7tHPcbTJkyezfv16UlNTjxQ9cGSTUmuOdYimc45nnnmGkSNHfmz6vn37jpshmmJ7\n45+IRGTOGYOYMTKXn/7fRjbvq/I6zgm58MIL+c1vfnPk9rp16wCoqKhg4MDQUGELFy486ecdOXIk\nZWVlR8o/EAiwYcOGk3qOn/3sZ0fW+A8bNWoU27dvp7i4GIA//OEPTJ8+nVGjRrFt2zY++OADgI/t\nML7ooov49a9/feQPx9q1a0/63xMplb9IN2Zm/PKqCWSm+Pn3J9bS0BT0OtLH1NbWkpeXd+Trvvvu\n46GHHqKoqIjx48czZswYHn30UQC+973vcfvttzN16lSCwZP/dyQlJbFo0SJuu+02JkyYwMSJE3nj\njTdO6jlmzZrFueee+7FpKSkp/P73v+fqq69m3LhxJCQkcNNNN5GSksL8+fO59NJLmTZtGoMHDz7y\nmDvvvJNAIMD48eMZO3Ysd95550n/eyJlx/vI0lkKCwudLuYi0nGWb9zHjY8X8Y1zh/Hdi0KbGjZu\n3Mjo0aM9TiYnqrX/LzNb45wrbM/zac1fJA6cP7ovl08YwIIV26iojZ2TvMQ7Kn+ROHH91HxqG4O8\nXrzf6ygSA1T+InGirjG0nbzlASixsNlX2tYR/0861FOkG3DOseNgLbvL63HOkZmSSHqyj7QkP7WN\nTazaepD7XtxE/x4pTB+RC4R2VB44cEDDOse4w+P5p6RE9zwNlb9IF/f2znJufWodW/fXHHe+sQOz\neOCaiaQnh37t8/LyKCkpQZdRjX2Hr+QVTSp/kS6ssamZeX8owp+QwE+vHMuQnHTMjKr6ALWNQWob\ngyT5ExjVL5NTB2R9bA0/MTExqleGkq5F5S/Shb1dUs6+ygYe/cJpXDy2f9sPEAnTDl+RLqyxqRmA\nzJToXdhb4oPKX6QLG9M/C3+CsWxj540JI92Dyl+kC+uVnsQVEwfwp1U7oj4ks3RvKn+RLu4Hl4ym\nR1oi//7k2iPH8ou0pc3yN7MFZlZqZutbTPulmb1vZu+Y2WIz69nivtvNrNjMNpnZRR0VXERCemck\nc99nJ1BcWs3dz270Oo50ESey5r8QuPioaS8CY51z44HNwO0AZjYGmAOcGn7Mf5uZL2ppRaRVZw/P\n5cZpBfxh1Ye8tlnH7Uvb2ix/59xrwMGjpr3gnDt8leNVwOGzD2YDTzrnGpxz24BiYHIU84rIMfzH\nRSMZ3DuNXzz/voZtkDZFY5v/DcA/wj8PBHa2uK8kPO0TzGyemRWZWZHOMBSJXEqijxunFbB+VyUf\nlB3/bF+RiMrfzH4ANAF/OjypldlaXQVxzs13zhU65wpzc3MjiSEiYT1SQ8f7Vzc0tTGnxLt2n+Fr\nZnOBy4Dz3UefMUuAQS1mywN2tz+eiLTU2NRMeW0jZkZmip9kfwJmRmNTM69uLuOu/9vIKdlpjB2Q\n5XVUiXHtKn8zuxi4DZjunKttcddS4M9mdh8wABgOrI44pUic27C7gv/39/co2n6IpuaPPkz7E4zU\nJB81DU00O8jvncajXzwdv09HccvxtVn+ZvYEMAPIMbMS4MeEju5JBl4MDxS1yjl3k3Nug5k9DbxH\naHPQzc45HXgsEoHK+gDXPbYaX4Lx5bOHMLBXKs45quqbqGloorYxSFaKn7EDezBjZB+S/Cp+aVub\n5e+cu7aVyY8dZ/67gLsiCSUiH3n5/VIO1DSy6KZPUZif7XUc6Sa0iiAS4yrqQtfcHZSd5nES6U5U\n/iIxbkTfTABWbT3gcRLpTlT+IjFucn42Q3LSeWDZFmp0CKdEicpfJMYlJBh3f3oc2w/U8F9/e8/r\nONJNqPxFuoCzhvTma9OH8lTRTv7x7h6v40g3oPIX6SJunTmC8Xk9uH3xu5RW1nsdR7o4lb9IF5Ho\nS+D+ayZS09DEr18q9jqOdHEqf5EuZGhuBldMGMhf3io5cv1ekfZQ+Yt0McP7ZlDTGKSqPuB1FOnC\nVP4iXchbOw6x4PVtjOqXSXZ6ktdxpAtr96ieIhJdxaXV/OalLazZcYhDNQESfUZmSiJpST5Sk3yU\nVjawq7yOflkpPDBnIuFxtUTaReUvEgNKK+u56tE3CDY7zhmRS5/MZALBZqrqQwO31QeCnJKfxlcH\nD+HKSQPJSkn0OrJ0cSp/kRjwzFu7KK8N8OKt5zA8PJyDSEfSNn+RGLC3oo6MZL+KXzqNyl8kBgzu\nnU51QxPb9+vau9I5VP4iMeDS8f1J9BkPLNvsdRSJEyp/kRjQNyuFr88Yxl/X7WbJul1ex5E4oPIX\niRG3nDeM0wf34oeL17PzYG3bDxCJgMpfJEb4fQk8cM1EHPCdp98m2OJC7SLRpvIXiSGDstP48eVj\nWL39IH97e7fXcaQba7P8zWyBmZWa2foW07LN7EUz2xL+3is83czsITMrNrN3zOy0jgwv0h195rQ8\nhvfJ4PGV272OIt3Yiaz5LwQuPmra94HlzrnhwPLwbYBZwPDw1zzgkejEFIkfCQnGGQXZFO+r9jqK\ndGNtlr9z7jXg4FGTZwOPh39+HLiyxfT/cSGrgJ5m1j9aYUXiQXFpFS9s2Mu4vB5eR5FurL3DO/R1\nzu0BcM7tMbM+4ekDgZ0t5isJT/vEdefMbB6hTweccsop7Ywh0rXsKq/jj6s+ZP2uCirrAiQn+shK\n8ZOa5CfJl0DJoVqKPjxEj9REfnLFqV7HlW4s2mP7tDbMYKuHLDjn5gPzAQoLC3VYg3R7Ow/Wcvlv\nXqe6vonR/bPITk+iPhBkd3k9dYHQ4G19slKYd84Qrp+ST5+sFK8jSzfW3vLfZ2b9w2v9/YHS8PQS\nYFCL+fIAHbIgAjz2+jZqG4M8f+s5DM3N8DqOxLn2Huq5FJgb/nkusKTF9OvCR/2cBVQc3jwkEu+2\n7q9hZN9MFb/EhBM51PMJYCUw0sxKzOxG4B5gppltAWaGbwM8C2wFioHfAl/vkNQiXVDfzGR2Hqol\nENS1d8V7bW72cc5de4y7zm9lXgfcHGkoke5o1rh+/O+aEhatKeHayTrIQbylM3xFOsmMEX04syCb\nn/79PQ3dLJ5T+Yt0koQE4/5rJuL3JfDNp9Zp8494SuUv0okG9EzlZ58ex9s7y/n1S8Vex5E4pvIX\n6WSXjOvPp08byMMvF7NNm3/EIyp/EQ98f9Yo/AnGwhXbvI4icUrlL+KBPpkpnHZKL9btLPc6isQp\nlb+IBz48UMP63RWc0jvd6ygSp6I9to9I3DtY08j/vbuHLfuqqK5vIj3ZT0aKn7REHz6f8UFpDf9Y\nvwd/gvGtC4Z7HVfilMpfJIq2llVz1aMrOVjTSFaKn6zURGobg1TVBwgEQ+MX9kpL5OKx/bj1ghEM\nyk7zOLHEK5W/SBTd++JmAsFmln5jKuMG9sDso4FuA8FmAsFm0pL0ayfe07tQJIrW76rgnBG5jM/r\n+Yn7En0JJPq0m01ig96JIlHUIzWR/VUNXscQaZPKXySKZozsw+rtB9m8r8rrKCLHpfIXiaLrPjWY\nnqmJ3PrUOhqagl7HETkmlb9IFOVkJPOLqyawYXcl976w2es4Isek8heJsplj+vL5M09h/mtbeaN4\nv9dxRFql8hfpAD+8dAxDctL5j0Xv0NikoZsl9qj8RTpAapKPH19xKrvK61j69m6v44h8gspfpIOc\nMzyHnIxkbfqRmKTyF+kgJYfqqKwLkJ2e5HUUkU+I6AxfM7sV+DLggHeB64H+wJNANvAW8EXnXGOE\nOUViSn0gyMqtB9hWVkNdIEhmip+MZD9pST4A3ttdyR/f3EFyYgJzp+R7G1akFe0ufzMbCPw7MMY5\nV2dmTwNzgEuA+51zT5rZo8CNwCNRSSsSA4pLq/jiY6vZU1F/3PnOHp7Djy4bo8HbJCZFOraPH0g1\nswCQBuwBzgM+F77/ceAnqPylG/nhX9fT0NTMgi8VMnFQL9KSfFTVN1Hd0ERdY5Bm5xiUnUaP1ESv\no4ocU7vL3zm3y8x+BewA6oAXgDVAuXOuKTxbCTAw4pQiMaK52fGv7Yf48rQCzhvV98j0lEQfuZnJ\nHiYTOTnt3uFrZr2A2UABMABIB2a1Mqs7xuPnmVmRmRWVlZW1N4ZIp0v0GQ06dl+6uEiO9rkA2Oac\nK3POBYC/AFOAnmZ2+BNFHtDqQc7OufnOuULnXGFubm4EMUQ6T0KCcWZBb559dw/1AY3dI11XJOW/\nAzjLzNIsdMWK84H3gJeBq8LzzAWWRBZRJLZ8dfoQSqsauOcf73sdRaTd2l3+zrk3gUWEDud8N/xc\n84HbgG+bWTHQG3gsCjlFYsaUoTlcPzWfhW9s5+X3S72OI9Iu5lyrm+Q7VWFhoSsqKvI6hsgJqw8E\nufLhFeyvbuD5b51D7wzt7JXOZ2ZrnHOF7XmszvAVaYeURB8PzplEZV0TP166wes4IidN5S/STiP7\nZXLT9CH8/Z09bNGVu6SLUfmLROC68NANy7XtX7oYlb9IBMprQ8NW+RPM4yQiJyfS4R1Eui3nHB+U\n1bDzUC1NQUdGsp/MFD+pST4CwWbW7ijnoeVb6JGayBUTBngdV+SkqPxFWrFlXxVf+9NbFJdWH3e+\nUf0y+e11hfTJSumkZCLRofIXOYpzjlueWEt5bSN3/9s4RvbLJMmXQFV9IDR4WyBIghnD+mQwql8m\noXMcRboWlb/IUXaV1/H+3ip+cvkYPnfmKV7HEekQ2uErcpTm8JhtKYk+b4OIdCCVv8hR8nqlkpOR\nxIvv7fM6ikiHUfmLHCUhwZj7qXyWv1/KCxv2eh1HpEOo/EVa8dXpQzl1QBa3PfMO+yqPf7lGka5I\n5S/SiiR/Ag9dO4n6QDPfefptmpu9HwBRJJpU/iLHMDQ3gx9eNprXi/fzxzc/9DqOSFSp/EWO43OT\nT2HK0N48tHyLrtwl3YrKX+Q4zIx55wxhf3UjK7ce8DqOSNSo/EXakBo+3r++UWv+0n3oDF+Je7WN\nTeyvaqTZOTJT/KQn+0n2J1AfaGbV1gP8aOl6stOTmDo8x+uoIlGj8pe49UFZNT9cvJ43tx3g6IN5\nEowj0wb0SOGxuYVkpSR2fkiRDqLyl7gUCDZz/e//RVV9gJvPHcbg3ukYUFkfoLYxSF1jkJTEBEb1\ny+KcEbkk+bWFVLqXiMrfzHoCvwPGAg64AdgEPAXkA9uBzzrnDkWUUiTK3vrwEDsO1vLw507j0vH9\nvY4j0ukiXZ15EHjOOTcKmABsBL4PLHfODQeWh2+LxJTqhiYA+vVI9jiJiDfaXf5mlgWcAzwG4Jxr\ndM6VA7OBx8OzPQ5cGWlIkWgb1T8LgBXFOnxT4lMka/5DgDLg92a21sx+Z2bpQF/n3B6A8Pc+Ucgp\nElUDe6YyfUQuv/vnVnaV13kdR6TTRVL+fuA04BHn3CSghpPYxGNm88ysyMyKysrKIogh0j7/NftU\ngs2OW59aR1Bj90iciaT8S4AS59yb4duLCP0x2Gdm/QHC30tbe7Bzbr5zrtA5V5ibmxtBDJH2Gdw7\nnf+cPZbV2w7y6KsfeB1HpFO1u/ydc3uBnWY2MjzpfOA9YCkwNzxtLrAkooQiHegzpw3k0vH9uf/F\nzazfVeF1HJFOE+nRPrcAfzKzd4CJwN3APcBMM9sCzAzfFolJZsZdV46lR2oiP3/ufa/jiHSaiI7z\nd86tAwpbuev8SJ5XpDP1TEti7pR87ntxM3sr6unXI8XrSCIdTqctigCDe6cBUFbV4HESkc6h8pe4\n4VzrR/S8W1LBfS9upm9WMiP7ZXZyKhFvaGwf6dZ2HKjl3hc38ebWg+yvbiDBjMwUP2nJPtIS/Ryq\nbaS0qoHe6UnMv+50jeEjcUPlL91WdUMTc+avpLK+iQtG92Fgr1SCzVAVHrytpqGJcXk9mJDXgysm\nDKRHmkbtlPih8pdua/nGfeyuqOfPXzmTKUM1Fr9IS/qMK91WaWVo5+2p/Xt4nEQk9qj8pdsqyEkH\nYF1JucdJRGKPyl+6rbNH5JCTkcQDyzbTFGz2Oo5ITFH5S7eV7Pdx52VjWLujnF+/VOx1HJGYovKX\nbm32xIF8etJAfv3SFoq2H/Q6jkjMUPlLt/efs09lYK9Ubn163ZEreInEO5W/dHuZKYnc99mJ7DxY\nx+/+udXrOCIxQeUvceGM/GzOH9WHP67aQbMu3CKi8pf4cdrgXuyvbqBKm35EVP4SHz48UMNT/9rJ\n0Nx0slJ0YruIfguky9tXWc+CFdtYu6OcQzWNJPkTyEzxk57kJyXRx97KetbtLCctycfC6ydjZl5H\nFvGcyl+6tIM1jcz+zQr2VzcwPq8HQ3MzCASbqawPsLeynrpAkJz0ZOadM4QvnjWYAT1TvY4sEhNU\n/tKl/W/RTvZW1vPXm6cycVBPr+OIdBna5i9d2vYDtWSnJ6n4RU6Syl+6tP49UjhY08j+al1+UeRk\nRFz+ZuYzs7Vm9vfw7QIze9PMtpjZU2aWFHlMkdZdMq4fAPNf08lbIicjGmv+3wQ2trj9c+B+59xw\n4BBwYxReQ6RVw/pkMueMQfz2n1tZ+cEBr+OIdBkRlb+Z5QGXAr8L3zbgPGBReJbHgSsjeQ2Rttx5\n2RgKeqfz7afXUV7b6HUckS4h0jX/B4DvAYcHS+8NlDvnDp9CWQIMjPA1RI4rPdnPg3MmUVbVwA//\nuh7nNHyDSFvaXf5mdhlQ6pxb03JyK7O2+ptoZvPMrMjMisrKytobQwSAcXk9uHXmCP7+zh5eL97v\ndRyRmBfJmv9U4Aoz2w48SWhzzwNATzM7fP5AHrC7tQc75+Y75wqdc4W5ubkRxBAJ+fLZBfTLSuGx\n17d5HUUk5rW7/J1ztzvn8pxz+cAc4CXn3OeBl4GrwrPNBZZEnFLkBCT7fUwbnsO7JRVeRxGJeR1x\nnP9twLfNrJjQPoDHOuA1RD5hX2U9K4r3MzQ3w+soIjEvKsM7OOdeAV4J/7wVmByN5xU5rKI2wJK3\nd7F+VwWVdU2kJfnITPGTmuQnyWfsOFjLso2lBJsdj3xhtNdxRWKexvaRmLevsp4rH17Bnop6cjKS\n6JWWRF0gSFV9E3WNQRqDzfTJTObCMX35+rnDGNZHa/4ibVH5S8yb/9pW9lc3sOimT3H64F6fGJK5\nudmRkKBhmkVOhspfYt7GPZWMHdiDwvzsVu9X8YucPA3sJjGvV1oSpZUNOnlLJIpU/hLzzhvVh13l\ndSzbWOp1FJFuQ+UvMe+yCf0Z3ieDOxa/ywEN3SwSFSp/iXnJfh8PXTuJitoAtz3zjjb/iESByl+6\nhNH9s7ht1iiWbSzlz6t3eB1HpMtT+UuXcf2UfKYNy+Gnf99IWZU2/4hEQuUvXUZCgvFfs0+loSnI\nH1Zu9zqOSJem8pcuZUhuBuPzerJq60Gvo4h0aSp/6VLKqhr48EANuVnJXkcR6dJ0hq/EjPpAkBXF\n+9m8r5qahibSkn1kpiSSlujDl2AUl1bzVNFOahuDfG36UK/jinRpKn+JCXsq6pgzfxUfHqgFwAyO\nPqLTDKYM7c3ts0YzdmAPD1KKdB8qf4kJP//H+5RVNfDb6wqZMrQ3aUk+6gPNVDUEqGsMEgg6BvRM\nIS1Jb1mRaNBvksSEf20/xPmj+zJzTN8j01KTfKQm+TxMJdJ9aYevxISUxATqGpu8jiESN1T+EhOm\nDsvhtc372VdZ73UUkbig8peYcMPUAszge4veoblZY/eIdDSVv8SE/Jx0fnjpaF7dXMbCN7Z7HUek\n22t3+ZvZIDN72cw2mtkGM/tmeHq2mb1oZlvC33tFL650Z184azAXjO7DPf94n017q7yOI9KtRbLm\n3wR8xzk3GjgLuNnMxgDfB5Y754YDy8O3RdpkZtzzmfFkpfr5zv+u0+YfkQ7U7vJ3zu1xzr0V/rkK\n2AgMBGYDj4dnexy4MtKQEj9yMpK5fdZo1u+q5OVNunKXSEeJyjZ/M8sHJgFvAn2dc3sg9AcC6BON\n15D4MXviADKT/bz0vspfpKNEXP5mlgE8A3zLOVd5Eo+bZ2ZFZlZUVlYWaQzpRg7WNNIQbCYlUSd4\niXSUiM7wNbNEQsX/J+fcX8KT95lZf+fcHjPrD7S6+uacmw/MBygsLNTG3TjhnGPzvmq27a+hPhAk\nI9lPRoqftCQfzsGG3ZU8+uoHJBhcO3mQ13FFuq12l7+ZGfAYsNE5d1+Lu5YCc4F7wt+XRJRQuo2S\nQ7V8+fEi3m/jSJ7hfTL4441nMqxPZiclE4k/kaz5TwW+CLxrZuvC0+4gVPpPm9mNwA7g6sgiSndx\nx+L17DpUx93/No7xeT1ITfJRXd9EdUMTdY1BHJDfO41hfTIIrVuISEdpd/k7514HjvUben57n1e6\np0CwmX9uKWPeOUP43JmneB1HJO7pDF/pFM6F1hQSE/SWE4kF+k2UTpHkT2B8Xk+e27CXoE7eEvGc\nyl86zZfPLqC4tJpHXin2OopI3FP5S6e5dFx/Lp8wgPuXbWHdznKv44jENZW/dBoz46dXjqVfVgrf\nenIttbp4i4hnVP7SqXqkJnLvZyew/UAtv3x+k9dxROKWyl863VlDenPt5FP446oP2VuhK3eJeEHl\nL574ytkFBIKOF9/b63UUkbik8hdP+BJC5wc2BnXYp4gXIhrYTeRYqhua2HWojoamIIaRkBAqfJ8Z\nJYfquPvZjaQl+bh4bD+vo4rEJZW/RNXu8jr+Y9HbvPHBAdxxVur7ZCbzu+sKGdgztfPCicgRKn+J\nGuccX//TWxSXVnPLucMY0S+TFL8PBwSbHc3O0dTsyErx86mhvUn2a7x+Ea+o/CVqSg7VsW5nOXde\nNoYbpxV4HUdEjkM7fCVqahuDAORkJHmcRETaovKXqBncO42MZD+vbtZlOUVincpfoiYl0cdnCwex\neO0u3vhgv9dxROQ4VP4SVd+9aAT5vdP57tNvU1EX8DqOiByDyl+iKi3JzwPXTGRfVQM/WrLe6zgi\ncgwqf4m6CYN68s3zh7Nk3W6Wxfz2AAAEp0lEQVSeW6/hG0RikcpfOsTXZgxlVL9M7vnHRpp15S6R\nmNNh5W9mF5vZJjMrNrPvd9TrSGxK9CXwtRlD2X6gljU7DnkdR0SO0iHlb2Y+4GFgFjAGuNbMxnTE\na0ns6t8jNHTDwZpGj5OIyNE6as1/MlDsnNvqnGsEngRmd9BrSYxxzrF+VwU/WrKejGQ/ZxZkex1J\nRI7SUcM7DAR2trhdApzZQa8lMWLjnkpueWItB6obOFQbICvFz8OfP42eaTrjVyTWdFT5WyvTPrbX\nz8zmAfMATjnllA6KIZ0pI9nP8D4ZnFmQzZgBWVwytj+90lX8IrGoo8q/BBjU4nYesLvlDM65+cB8\ngMLCQh0O0g0Myk7jkS+c7nUMETkBHbXN/1/AcDMrMLMkYA6wtINeS0RETlKHrPk755rM7BvA84AP\nWOCc29ARryUiIievw8bzd849CzzbUc8vIiLtpzN8RUTikMpfRCQOqfxFROKQyl9EJA6p/EVE4pA5\n5/35VWZWBnzodY4TlAPoGoXHp2V0fFo+bdMyalsOkO6cy23Pg2Oi/LsSMytyzhV6nSOWaRkdn5ZP\n27SM2hbpMtJmHxGROKTyFxGJQyr/kzff6wBdgJbR8Wn5tE3LqG0RLSNt8xcRiUNa8xcRiUMq/xNg\nZj8xs11mti78dUmL+24PX6R+k5ld5GVOr5nZxeHlUGxm3/c6T6wws+1m9m74vVMUnpZtZi+a2Zbw\n915e5+xMZrbAzErNbH2Laa0uEwt5KPy+esfMTvMueec4xvKJag+p/E/c/c65ieGvZwHCF6WfA5wK\nXAz8d/ji9XEn/O9+GJgFjAGuDS8fCTk3/N45fGje94HlzrnhwPLw7XiykNDvTEvHWiazgOHhr3nA\nI52U0UsL+eTygSj2kMo/MrOBJ51zDc65bUAxoYvXx6PJQLFzbqtzrhF4ktDykdbNBh4P//w4cKWH\nWTqdc+414OBRk4+1TGYD/+NCVgE9zax/5yT1xjGWz7G0q4dU/ifuG+GPnAtafERv7UL1Azs/WkzQ\nsjg2B7xgZmvC164G6Ouc2wMQ/t7Hs3Sx41jLRO+tj0Sth1T+YWa2zMzWt/I1m9DHzKHARGAPcO/h\nh7XyVPF6+JSWxbFNdc6dRmjzxc1mdo7XgboYvbdCotpDHXYlr67GOXfBicxnZr8F/h6+2eaF6uOI\nlsUxOOd2h7+XmtliQh/J95lZf+fcnvAmjFJPQ8aGYy0TvbcA59y+wz9Ho4e05n8Cjtq++G/A4T3w\nS4E5ZpZsZgWEdkit7ux8MeJfwHAzKzCzJEI7oJZ6nMlzZpZuZpmHfwYuJPT+WQrMDc82F1jiTcKY\ncqxlshS4LnzUz1lAxeHNQ/Ek2j2kNf8T8wszm0joo9R24KsAzrkNZvY08B7QBNzsnAt6ltJDzrkm\nM/sG8DzgAxY45zZ4HCsW9AUWmxmEft/+7Jx7zsz+BTxtZjcCO4CrPczY6czsCWAGkGNmJcCPgXto\nfZk8C1xCaEdmLXB9pwfuZMdYPjOi2UM6w1dEJA5ps4+ISBxS+YuIxCGVv4hIHFL5i4jEIZW/iEgc\nUvmLiMQhlb+ISBxS+YuIxKH/D7Ccnz2c4Ta+AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_time = 0.01\n",
"time_end = 60\n",
"model.reset()\n",
"solution_model.reset()\n",
"\n",
"t_data = np.arange(0,time_end,sample_time)\n",
"x_data = np.zeros_like(t_data)\n",
"y_data = np.zeros_like(t_data)\n",
"x_solution = np.zeros_like(t_data)\n",
"y_solution = np.zeros_like(t_data)\n",
"\n",
"# maintain velocity at 4 m/s\n",
"v_data = np.zeros_like(t_data)\n",
"v_data[:] = 4 \n",
"\n",
"w_data = np.zeros_like(t_data)\n",
"\n",
"# ==================================\n",
"# Square Path: set w at corners only\n",
"# ==================================\n",
"# w_data[670:670+100] = 0.753\n",
"# w_data[670+100:670+100*2] = -0.753\n",
"# w_data[2210:2210+100] = 0.753\n",
"# w_data[2210+100:2210+100*2] = -0.753\n",
"# w_data[3670:3670+100] = 0.753\n",
"# w_data[3670+100:3670+100*2] = -0.753\n",
"# w_data[5220:5220+100] = 0.753\n",
"# w_data[5220+100:5220+100*2] = -0.753\n",
"\n",
"# ==================================\n",
"# Spiral Path: high positive w, then small negative w\n",
"# ==================================\n",
"# w_data[:] = -1/100\n",
"# w_data[0:100] = 1\n",
"\n",
"# ==================================\n",
"# Wave Path: square wave w input\n",
"# ==================================\n",
"w_data[:] = 0\n",
"w_data[0:100] = 1\n",
"w_data[100:300] = -1\n",
"w_data[300:500] = 1\n",
"w_data[500:5700] = np.tile(w_data[100:500], 13)\n",
"w_data[5700:] = -1\n",
"\n",
"# ==================================\n",
"# Step through bicycle model\n",
"# ==================================\n",
"for i in range(t_data.shape[0]):\n",
" x_data[i] = model.xc\n",
" y_data[i] = model.yc\n",
" model.step(v_data[i], w_data[i])\n",
"\n",
" x_solution[i] = solution_model.xc\n",
" y_solution[i] = solution_model.yc\n",
" solution_model.step(v_data[i], w_data[i])\n",
" \n",
"# print(\"model.xc = \",x_data[i])\n",
"# print(\"model.yc = \",y_data[i])\n",
"# print(\"model.theta = \",model.theta)\n",
"# print(\"model.delta = \",model.delta)\n",
"# print(\"model.beta = \",model.beta)\n",
" \n",
"# print(\"------------------------------------\")\n",
" \n",
"# print(\"solution_model.xc = \",x_solution[i])\n",
"# print(\"solution_model.yc = \",y_solution[i])\n",
"# print(\"solution_model.theta = \",solution_model.theta)\n",
"# print(\"solution_model.delta = \",solution_model.delta)\n",
"# print(\"solution_model.beta = \",solution_model.beta)\n",
" \n",
"# print(\"---------------------------------------------\")\n",
" \n",
"plt.axis('equal')\n",
"plt.plot(x_data, y_data,label='Learner Model')\n",
"# plt.plot(x_solution, y_solution,label='Solution Model')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We would now like the bicycle to travel a figure eight trajectory. Both circles in the figure eight have a radius of 8m and the path should complete in 30 seconds. The path begins at the bottom of the left circle and is shown in the figure below:\n",
"\n",
"![title](figure8.png)\n",
"\n",
"Determine the speed and steering rate inputs required to produce such trajectory and implement in the cell below. Make sure to also save your inputs into the arrays v_data and w_data, these will be used to grade your solution. The cell below also plots the trajectory generated by your own model."
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_time = 0.01\n",
"time_end = 30\n",
"model.reset()\n",
"\n",
"t_data = np.arange(0,time_end,sample_time)\n",
"x_data = np.zeros_like(t_data)\n",
"y_data = np.zeros_like(t_data)\n",
"v_data = np.zeros_like(t_data)\n",
"w_data = np.zeros_like(t_data)\n",
"\n",
"v_data[:] = (16 * np.pi)/15\n",
"\n",
"# ==================================\n",
"# Learner solution begins here\n",
"# ==================================\n",
"model.xc = 0\n",
"model.yc = 0\n",
"\n",
"for i in range(t_data.shape[0]):\n",
" x_data[i] = model.xc \n",
" y_data[i] = model.yc\n",
" \n",
" if i < 352 or i > 1800:\n",
" if model.delta < np.arctan(2/8):\n",
" model.step(v_data[i], model.w_max)\n",
" w_data[i] = model.w_max\n",
" else:\n",
" model.step(v_data[i], 0)\n",
" w_data[i] = 0\n",
" else:\n",
" if model.delta > -np.arctan(2/8):\n",
" model.step(v_data[i],-model.w_max)\n",
" w_data[i] = -model.w_max\n",
" else:\n",
" model.step(v_data[i],0)\n",
" w_data[i] = 0\n",
" \n",
"# print(\"i = \",i)\n",
"# print(\"model.xc = \",x_data[i])\n",
"# print(\"model.yc = \",y_data[i])\n",
" \n",
" model.beta = 0\n",
" \n",
" \n",
"# ==================================\n",
"# Learner solution ends here\n",
"# ==================================\n",
"plt.axis('equal')\n",
"plt.plot(x_data, y_data)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will now run your speed and angular rate inputs through our bicycle model solution. This is to ensure that your trajectory is correct along with your model. The cell below will display the path generated by our model along with some waypoints on a desired figure 8. Surrounding these waypoints are error tolerance circles with radius 1.5m, your solution will pass the grader if the trajectory generated stays within 80% of these circles."
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assessment passed! Your trajectory meets 100.0% of the waypoints.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"grade_bicycle(t_data,v_data,w_data)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"The cell below will save the time and vehicle inputs as text file named $\\textit{figure8.txt}$. To locate the file, change the end of your web directory to $\\textit{/notebooks/Course_1_Module_4/figure8.txt}$\n",
"\n",
"Once you are there, you can download the file and submit to the Coursera grader to complete this assessment."
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = np.vstack([t_data, v_data, w_data]).T\n",
"np.savetxt('figure8.txt', data, delimiter=', ')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Congratulations! You have now completed the assessment! Feel free to test the bicycle model with different inputs in the cell below, and see what trajectories they form. For example, try moving in an equilateral triangle. You'll find that it's rather difficult to generate desired trajectories by pre-setting the inputs. The next module on vehicle control will show you an easier and more accurate method. See you there!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"sample_time = 0.01\n",
"time_end = 30\n",
"model.reset()\n",
"\n",
"t_data = np.arange(0,time_end,sample_time)\n",
"x_data = np.zeros_like(t_data)\n",
"y_data = np.zeros_like(t_data)\n",
"v_data = np.zeros_like(t_data)\n",
"w_data = np.zeros_like(t_data)\n",
"\n",
"# ==================================\n",
"# Test various inputs here\n",
"# ==================================\n",
"for i in range(t_data.shape[0]):\n",
"\n",
" model.step(v_data[i], w_data[i])\n",
" \n",
"plt.axis('equal')\n",
"plt.plot(x_data, y_data)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@uscgongjianxin
Copy link

Hi Qiaoxu, do you have the following error:
ImportError: bad magic number in 'notebook_grader': b'3\r\r\n'
I tried:
find . -name '*.pyc' -delete
And I still have the same problem.

@qiaoxu123
Copy link
Author

qiaoxu123 commented Jul 1, 2019

Please check the issue, from the Coursera forum @uscgongjianxin
qiaoxu123/Self-Driving-Cars#1

@MohamedMa-hmoud
Copy link

Have did you calculate the 352 and 1800 ?

@kvkraju99
Copy link

NameError Traceback (most recent call last)
in
----> 1 class Bicycle(Bicycle):
2 def step(self, v, w):
3 self.xc = self.xc + v * np.cos(self.theta + self.beta) * self.sample_time
4 self.yc = self.yc + v * np.sin(self.theta + self.beta) * self.sample_time
5 self.theta = self.theta + ((v * np.cos(self.beta) * np.tan(self.delta)/self.L)) * self.sample_time

NameError: name 'Bicycle' is not defined

how to remove this error

@sadavarterohit
Copy link

NameError Traceback (most recent call last)
in
----> 1 class Bicycle(Bicycle):
2 def step(self, v, w):
3 self.xc = self.xc + v * np.cos(self.theta + self.beta) * self.sample_time
4 self.yc = self.yc + v * np.sin(self.theta + self.beta) * self.sample_time
5 self.theta = self.theta + ((v * np.cos(self.beta) * np.tan(self.delta)/self.L)) * self.sample_time

NameError: name 'Bicycle' is not defined

how to remove this error

The order of compilation is what decides that part
make sure you compiled the cell above the cell where you're typing

@AhmedSobhyHaggag
Copy link

NameError Traceback (most recent call last)
in
----> 1 class Bicycle(Bicycle):
2 def step(self, v, w):
3 self.xc = self.xc + v * np.cos(self.theta + self.beta) * self.sample_time
4 self.yc = self.yc + v * np.sin(self.theta + self.beta) * self.sample_time
5 self.theta = self.theta + ((v * np.cos(self.beta) * np.tan(self.delta)/self.L)) * self.sample_time

NameError: name 'Bicycle' is not defined

how to remove this error

just run the former cells

@MdAnowarUllahSayed
Copy link

MdAnowarUllahSayed commented Jul 9, 2020

can you help me . i face few problem. i do not get it where this file is saved and i face one problem


NameError Traceback (most recent call last)
in
1 sample_time = 0.01
2 time_end = 30
----> 3 model.reset()
4
5 t_data = np.arange(0,time_end,sample_time)

NameError: name 'model' is not defined

@Madhurock
Copy link

In 121, I am getting this message

File "", line 17
model.xc = 0
^
IndentationError: unexpected indent

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment