{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "IDgcAzI9mKhY", "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html)", "section": "" } }, "source": [ "\n", "*This notebook contains material from [CBE30338](https://jckantor.github.io/CBE30338);\n", "content is available [on Github](https://github.com/jckantor/CBE30338.git).*\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "7nwy5pUhmKhZ", "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html)", "section": "" } }, "source": [ "\n", "< [7.5 First Order System in Pyomo](https://jckantor.github.io/CBE30338/07.05-First-Order-System-in-Pyomo.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [7.7 Transient Heat Transfer in Various Geometries](https://jckantor.github.io/CBE30338/07.07-Transient-Heat-Transfer-in-Various-Geometries.html) >
"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "TOVhPSfimKha",
"nbpages": {
"level": 1,
"link": "[7.6 Path Planning for a Simple Car](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6-Path-Planning-for-a-Simple-Car)",
"section": "7.6 Path Planning for a Simple Car"
}
},
"source": [
"# 7.6 Path Planning for a Simple Car"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "BayF7dSpnyaO",
"nbpages": {
"level": 2,
"link": "[7.6.1 Required Installations](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.1-Required-Installations)",
"section": "7.6.1 Required Installations"
}
},
"source": [
"## 7.6.1 Required Installations\n",
"\n",
"If run on Google Colab, it is necessary to install any needed solvers for each Colab session. The following cell tests if the notebook is run on Google Colab, then installs Pyomo and Ipopt if not already installed."
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "SCT5AdNQmcx5",
"nbpages": {
"level": 2,
"link": "[7.6.1 Required Installations](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.1-Required-Installations)",
"section": "7.6.1 Required Installations"
}
},
"outputs": [],
"source": [
"try:\n",
" import google.colab\n",
" try:\n",
" from pyomo.environ import *\n",
" except:\n",
" !pip install -q pyomo\n",
" if not 'ipopt_executable' in vars():\n",
" !wget -N -q \"https://ampl.com/dl/open/ipopt/ipopt-linux64.zip\"\n",
" !unzip -o -q ipopt-linux64\n",
" ipopt_executable = '/content/ipopt'\n",
"except:\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "vA9fZ0KepTrI",
"nbpages": {
"level": 2,
"link": "[7.6.2 Kinematic Model](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.2-Kinematic-Model)",
"section": "7.6.2 Kinematic Model"
}
},
"source": [
"## 7.6.2 Kinematic Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "9iuaeJGupKcg",
"nbpages": {
"level": 2,
"link": "[7.6.2 Kinematic Model](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.2-Kinematic-Model)",
"section": "7.6.2 Kinematic Model"
}
},
"source": [
"\n",
"The following equations describe a simple model of a car\n",
"\n",
"\\begin{align}\n",
"\\frac{dx}{dt} & = v \\cos(\\theta) \\\\\n",
"\\frac{dy}{dt} & = v \\sin(\\theta) \\\\\n",
"\\frac{d\\theta}{dt} & = \\frac{v}{L}\\tan(\\phi) \\\\\n",
"\\end{align}\n",
"\n",
"where $x$ and $y$ denote the position of the center of the rear axle, $\\theta$ is the angle of the car axis to the horizontal, $v$ is velocity, and $\\phi$ is the angle of the front steering wheels to the car axis. The length $L$ is the distance from the center of the rear axle to the center of the front axle.\n",
"\n",
"The velocity $v$ is controlled by acceleration of the car, the position of the wheels is controlled by the rate limited steering input $v$.\n",
"\n",
"\\begin{align}\n",
"\\frac{dv}{dt} & = a \\\\\n",
"\\frac{d\\phi}{dt} & = u\n",
"\\end{align}\n",
"\n",
"The state of the car is determined by the value of the five state variables $x$, $y$, $\\theta$, $v$, and $\\phi$.\n",
"\n",
"The path planning problem is to find find values of the manipulable variables $a(t)$ and $u(t)$ on a time interval $0 \\leq t \\leq t_f$ to drive the car from an initial condition $\\left[x(0), y(0), \\theta(0), v(0), \\phi(0)\\right]$ to a specified final condition $\\left[x(t_f), y(t_f), \\theta(t_f), v(t_f), \\phi(t_f)\\right]$ that minimizes an objective function:\n",
"\n",
"\\begin{align}\n",
"J = \\min \\int_0^{t_f} \\left( \\phi(t)^2 + \\alpha a(t)^2 + \\beta u(t)^2\\right)\\,dt\n",
"\\end{align}\n",
"\n",
"and which satisfy operational constraints\n",
"\n",
"\\begin{align*}\n",
"| u | & \\leq u_{max}\n",
"\\end{align*}\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "FLQpW-FnmKhb",
"nbpages": {
"level": 2,
"link": "[7.6.3 Pyomo Model](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.3-Pyomo-Model)",
"section": "7.6.3 Pyomo Model"
}
},
"source": [
"## 7.6.3 Pyomo Model"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 510
},
"colab_type": "code",
"executionInfo": {
"elapsed": 5724,
"status": "ok",
"timestamp": 1554483576630,
"user": {
"displayName": "Jeffrey Kantor",
"photoUrl": "https://lh5.googleusercontent.com/-8zK5aAW5RMQ/AAAAAAAAAAI/AAAAAAAAKB0/kssUQyz8DTQ/s64/photo.jpg",
"userId": "09038942003589296665"
},
"user_tz": 240
},
"id": "q3J2uYaCmKhc",
"nbpages": {
"level": 2,
"link": "[7.6.3 Pyomo Model](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.3-Pyomo-Model)",
"section": "7.6.3 Pyomo Model"
},
"outputId": "481ba5f6-974b-4eaf-9ea8-175275d81613"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# ==========================================================\n",
"# = Solver Results =\n",
"# ==========================================================\n",
"# ----------------------------------------------------------\n",
"# Problem Information\n",
"# ----------------------------------------------------------\n",
"Problem: \n",
"- Lower bound: -inf\n",
" Upper bound: inf\n",
" Number of objectives: 1\n",
" Number of constraints: 449\n",
" Number of variables: 444\n",
" Sense: unknown\n",
"# ----------------------------------------------------------\n",
"# Solver Information\n",
"# ----------------------------------------------------------\n",
"Solver: \n",
"- Status: ok\n",
" Message: Ipopt 3.12.8\\x3a Optimal Solution Found\n",
" Termination condition: optimal\n",
" Id: 0\n",
" Error rc: 0\n",
" Time: 1.1693551540374756\n",
"# ----------------------------------------------------------\n",
"# Solution Information\n",
"# ----------------------------------------------------------\n",
"Solution: \n",
"- number of solutions: 0\n",
" number of solutions displayed: 0\n"
]
}
],
"source": [
"from pyomo.environ import *\n",
"from pyomo.dae import *\n",
"\n",
"L = 2\n",
"tf = 50\n",
"\n",
"# create a model object\n",
"m = ConcreteModel()\n",
"\n",
"# define the independent variable\n",
"m.t = ContinuousSet(bounds=(0, tf))\n",
"\n",
"# define control inputs\n",
"m.a = Var(m.t)\n",
"m.u = Var(m.t, domain=Reals, bounds=(-0.1,0.1))\n",
"\n",
"# define the dependent variables\n",
"m.x = Var(m.t)\n",
"m.y = Var(m.t)\n",
"m.theta = Var(m.t)\n",
"m.v = Var(m.t)\n",
"m.phi = Var(m.t, domain=Reals, bounds=(-0.5,0.5))\n",
"\n",
"m.xdot = DerivativeVar(m.x)\n",
"m.ydot = DerivativeVar(m.y)\n",
"m.thetadot = DerivativeVar(m.theta)\n",
"m.vdot = DerivativeVar(m.v)\n",
"m.phidot = DerivativeVar(m.phi)\n",
"\n",
"# define the differential equation as a constraint\n",
"m.ode_x = Constraint(m.t, rule=lambda m, t: m.xdot[t] == m.v[t]*cos(m.theta[t]))\n",
"m.ode_y = Constraint(m.t, rule=lambda m, t: m.ydot[t] == m.v[t]*sin(m.theta[t]))\n",
"m.ode_t = Constraint(m.t, rule=lambda m, t: m.thetadot[t] == m.v[t]*tan(m.phi[t])/L)\n",
"m.ode_u = Constraint(m.t, rule=lambda m, t: m.vdot[t] == m.a[t])\n",
"m.ode_p = Constraint(m.t, rule=lambda m, t: m.phidot[t] == m.u[t])\n",
"\n",
"# path constraints\n",
"m.path_x1 = Constraint(m.t, rule=lambda m, t: m.x[t] >= 0)\n",
"m.path_y1 = Constraint(m.t, rule=lambda m, t: m.y[t] >= 0)\n",
"\n",
"# initial conditions\n",
"m.ic = ConstraintList()\n",
"m.ic.add(m.x[0]==0)\n",
"m.ic.add(m.y[0]==0)\n",
"m.ic.add(m.theta[0]==0)\n",
"m.ic.add(m.v[0]==0)\n",
"m.ic.add(m.phi[0]==0)\n",
"\n",
"# final conditions\n",
"m.fc = ConstraintList()\n",
"m.fc.add(m.x[tf]==0)\n",
"m.fc.add(m.y[tf]==20)\n",
"m.fc.add(m.theta[tf]==0)\n",
"m.fc.add(m.v[tf]==0)\n",
"m.fc.add(m.phi[tf]==0)\n",
"\n",
"# define the optimization objective\n",
"m.integral = Integral(m.t, wrt=m.t, rule=lambda m, t: 0.2*m.phi[t]**2 + m.a[t]**2 + m.u[t]**2)\n",
"m.obj = Objective(expr=m.integral)\n",
"\n",
"# transform and solve\n",
"TransformationFactory('dae.collocation').apply_to(m, wrt=m.t, nfe=3, ncp=12, method='BACKWARD')\n",
"SolverFactory('ipopt', executable=ipopt_executable).solve(m).write()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "z4Johp-WmKhj",
"nbpages": {
"level": 2,
"link": "[7.6.4 Accessing Solution Data](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.4-Accessing-Solution-Data)",
"section": "7.6.4 Accessing Solution Data"
}
},
"source": [
"## 7.6.4 Accessing Solution Data"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ewbm1c5CmKhk",
"nbpages": {
"level": 2,
"link": "[7.6.4 Accessing Solution Data](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.4-Accessing-Solution-Data)",
"section": "7.6.4 Accessing Solution Data"
}
},
"outputs": [],
"source": [
"# access the results\n",
"t= [t for t in m.t]\n",
"\n",
"a = [m.a[t]() for t in m.t]\n",
"u = [m.u[t]() for t in m.t]\n",
"\n",
"x = [m.x[t]() for t in m.t]\n",
"y = [m.y[t]() for t in m.t]\n",
"theta = [m.theta[t]() for t in m.t]\n",
"v = [m.v[t]() for t in m.t]\n",
"phi = [m.phi[t]() for t in m.t]"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "1818dGFhmKhn",
"nbpages": {
"level": 2,
"link": "[7.6.5 Visualizing Car Path](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.5-Visualizing-Car-Path)",
"section": "7.6.5 Visualizing Car Path"
}
},
"source": [
"## 7.6.5 Visualizing Car Path"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 660
},
"colab_type": "code",
"executionInfo": {
"elapsed": 6545,
"status": "ok",
"timestamp": 1554483577467,
"user": {
"displayName": "Jeffrey Kantor",
"photoUrl": "https://lh5.googleusercontent.com/-8zK5aAW5RMQ/AAAAAAAAAAI/AAAAAAAAKB0/kssUQyz8DTQ/s64/photo.jpg",
"userId": "09038942003589296665"
},
"user_tz": 240
},
"id": "pjlY0m-QmKho",
"nbpages": {
"level": 2,
"link": "[7.6.5 Visualizing Car Path](https://jckantor.github.io/CBE30338/07.06-Path-Planning-for-a-Simple-Car.html#7.6.5-Visualizing-Car-Path)",
"section": "7.6.5 Visualizing Car Path"
},
"outputId": "d93b7750-edf8-481f-9d2f-462eeb132889",
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"(-0.7475794562067691,\n",
" 21.812257339073334,\n",
" -1.3839156648530575,\n",
" 21.175921130427046)"
]
},
"execution_count": 4,
"metadata": {
"tags": []
},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "07.06-Path-Planning-for-a-Simple-Car.ipynb",
"provenance": [],
"toc_visible": true,
"version": "0.3.2"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}