Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HW1,3,6,7 Submission// Taehwan Seo #3

Open
wants to merge 60 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
fe9cb80
test commit
jjffkkgg Aug 25, 2019
4c62995
Merge branch 'master' of github.com:jgoppert/aae497-f19
jjffkkgg Aug 26, 2019
b7d014b
commit test number 2.
jjffkkgg Aug 27, 2019
a55a8da
Changed VT and psi dot with desired number
jjffkkgg Aug 30, 2019
78c8e7c
Fixed u0 erro
jjffkkgg Aug 30, 2019
22173d9
change TF to right code
jjffkkgg Aug 30, 2019
cdc3711
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Aug 30, 2019
8743c36
Remove merge folder.
jjffkkgg Aug 30, 2019
10c0008
modified VT and psi with new file
jjffkkgg Aug 30, 2019
b6c054a
Changed gains, preliminary changes in class
jjffkkgg Aug 30, 2019
5e9744d
First edit on HW file
jjffkkgg Sep 1, 2019
d421d78
Final commit for HW1
jjffkkgg Sep 1, 2019
ff10543
change in assignment question
jjffkkgg Sep 1, 2019
864939d
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 11, 2019
94d6790
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 11, 2019
6cb3360
written on 9/11 lecture
jjffkkgg Sep 11, 2019
1895dcd
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 11, 2019
b6a1ee1
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 13, 2019
e495f14
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 16, 2019
2d6f26e
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 16, 2019
0951576
pull before class
jjffkkgg Sep 16, 2019
72697b3
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 16, 2019
63e6f59
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 17, 2019
c012d63
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 18, 2019
c79b65c
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 18, 2019
4e80e3a
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 19, 2019
5ecba09
First draft of the HW
jjffkkgg Sep 20, 2019
20e351f
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 20, 2019
99029c8
HW 3 fix
jjffkkgg Sep 20, 2019
9c377c4
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 23, 2019
bbf01cf
commit before class
jjffkkgg Sep 23, 2019
1fd90d7
changed README
jjffkkgg Sep 23, 2019
2e166e4
changed readme again
jjffkkgg Sep 23, 2019
166224f
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 23, 2019
3b38050
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 23, 2019
952766a
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 27, 2019
384c200
Merging before friday airport lecture
jjffkkgg Sep 27, 2019
0cdb53b
commit before pull
jjffkkgg Sep 30, 2019
0620398
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 30, 2019
87b0c76
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Sep 30, 2019
d162d99
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 2, 2019
c16703b
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 4, 2019
f642398
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 14, 2019
c2d536a
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 14, 2019
1959ee6
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 14, 2019
d2027ce
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 15, 2019
cfba33e
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 18, 2019
ab50966
Completed the HW#6
jjffkkgg Oct 23, 2019
463ae3e
wrote quadtree cpp and setup compliers
jjffkkgg Oct 24, 2019
de0785c
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Oct 24, 2019
38cc0fa
Finished the code of hw 7
jjffkkgg Oct 29, 2019
fa9c41e
Add hw_7 plot with hw7_plot.ipynb. Finished the HW7.
jjffkkgg Oct 29, 2019
88f80fa
changed resolution to 1 again
jjffkkgg Oct 29, 2019
8e4e8b1
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Nov 7, 2019
240f4dd
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Nov 11, 2019
2230da6
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Nov 11, 2019
d81b237
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Dec 8, 2019
575dfc9
Before removing up
jjffkkgg Feb 5, 2020
200d1c1
Merge branch 'master' of https://github.com/jgoppert/aae497-f19
jjffkkgg Aug 26, 2020
28e42c8
accepted all incoming changes
jjffkkgg Aug 26, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Changed VT and psi dot with desired number
jjffkkgg committed Aug 30, 2019
commit a55a8da91e04a7c239702cd29da17ef418862686
103 changes: 51 additions & 52 deletions python/lectures/2-F16-Intro.ipynb
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -17,14 +17,14 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: casadi in /home/jgoppert/anaconda3/envs/aae497-f19/lib/python3.7/site-packages (3.4.5)\n"
"Requirement already satisfied: casadi in /home/taehwan/anaconda3/envs/aae497-f19/lib/python3.7/site-packages (3.4.5)\n"
]
}
],
@@ -44,28 +44,47 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 4,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"******************************************************************************\n",
"This program contains Ipopt, a library for large-scale nonlinear optimization.\n",
" Ipopt is released as open source code under the Eclipse Public License (EPL).\n",
" For more information visit http://projects.coin-or.org/Ipopt\n",
"******************************************************************************\n",
"\n",
" t_proc [s] t_wall [s] n_eval\n",
" S 0.0586 0.0632 1\n",
" nlp_f 0.00562 0.00557 157\n",
" nlp_grad_f 0.00523 0.00522 58\n",
" nlp_hess_l 0.0189 0.0189 56\n"
]
}
],
"source": [
"p = f16.Parameters()\n",
"x0, u0 = f16.trim(s0=[0, 0, 0, 0, 0, 0], x=f16.State(\n",
" VT=502), p=p,\n",
" phi_dot=0, theta_dot=0, psi_dot=0.0, gam=0)"
" VT=550), p=p,\n",
" phi_dot=0, theta_dot=0, psi_dot=3.0, gam=0)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Control(thtl=DM(0.138556), ail_deg=DM(0), elv_deg=DM(-0.75878), rdr_deg=DM(0))"
"Control(thtl=DM(22.0367), ail_deg=DM(-3.93766), elv_deg=DM(32.8209), rdr_deg=DM(-9.49423))"
]
},
"execution_count": 4,
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -77,30 +96,20 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'angle of attack')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
"ename": "AttributeError",
"evalue": "'function' object has no attribute 'to_casadi'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-6-4342a71d32c5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf16\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimulate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf_control\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m20\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.01\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mres\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m't'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrad2deg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mres\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf16\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mState\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname_to_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'alpha'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m't ,sec'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$\\alpha$, deg'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Downloads/a497/aae497-f19/python/casadi_f16/f16.py\u001b[0m in \u001b[0;36msimulate\u001b[0;34m(x0, u0, p, t0, tf, dt)\u001b[0m\n\u001b[1;32m 723\u001b[0m \u001b[0mF\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mca\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mintegrator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'F'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'idas'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdae\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m't0'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'tf'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'jit'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_casadi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 725\u001b[0;31m \u001b[0mu\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_casadi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 726\u001b[0m data = {\n\u001b[1;32m 727\u001b[0m \u001b[0;34m't'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'function' object has no attribute 'to_casadi'"
]
}
],
"source": [
@@ -114,30 +123,20 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'trajectory')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
"ename": "AttributeError",
"evalue": "'function' object has no attribute 'to_casadi'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-7-65d3a01ac4bf>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf16\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimulate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf_control\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m20\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.01\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mres\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf16\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mState\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname_to_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'p_E'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf16\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mState\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname_to_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'p_N'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'equal'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'East, ft'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Downloads/a497/aae497-f19/python/casadi_f16/f16.py\u001b[0m in \u001b[0;36msimulate\u001b[0;34m(x0, u0, p, t0, tf, dt)\u001b[0m\n\u001b[1;32m 723\u001b[0m \u001b[0mF\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mca\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mintegrator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'F'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'idas'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdae\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m't0'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'tf'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'jit'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_casadi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 725\u001b[0;31m \u001b[0mu\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_casadi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 726\u001b[0m data = {\n\u001b[1;32m 727\u001b[0m \u001b[0;34m't'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'function' object has no attribute 'to_casadi'"
]
}
],
"source": [