From 3d3a5fe8379af8e53ee57ccd07079a9885abea95 Mon Sep 17 00:00:00 2001
From: Mansard <nmansard@laas.fr>
Date: Fri, 15 Feb 2019 11:43:03 +0100
Subject: [PATCH] [example] final version of the jump sequence. Run python
 jump.py ; python salto.py and have fun.

---
 examples/jump.py                     | 184 +++++++++++++--------------
 examples/npydata/jump.frontal.us.npy | Bin 0 -> 4258 bytes
 examples/npydata/jump.frontal.xs.npy | Bin 0 -> 10192 bytes
 examples/npydata/jump.initial.us.npy | Bin 0 -> 2336 bytes
 examples/npydata/jump.initial.xs.npy | Bin 0 -> 7232 bytes
 examples/npydata/jump.landing.us.npy | Bin 0 -> 4258 bytes
 examples/npydata/jump.landing.xs.npy | Bin 0 -> 10192 bytes
 examples/npydata/jump.lateral.us.npy | Bin 0 -> 4258 bytes
 examples/npydata/jump.lateral.xs.npy | Bin 0 -> 10192 bytes
 examples/npydata/jump.twist.us.npy   | Bin 0 -> 4258 bytes
 examples/npydata/jump.twist.xs.npy   | Bin 0 -> 10192 bytes
 examples/salto.py                    |   4 +-
 12 files changed, 89 insertions(+), 99 deletions(-)
 create mode 100644 examples/npydata/jump.frontal.us.npy
 create mode 100644 examples/npydata/jump.frontal.xs.npy
 create mode 100644 examples/npydata/jump.initial.us.npy
 create mode 100644 examples/npydata/jump.initial.xs.npy
 create mode 100644 examples/npydata/jump.landing.us.npy
 create mode 100644 examples/npydata/jump.landing.xs.npy
 create mode 100644 examples/npydata/jump.lateral.us.npy
 create mode 100644 examples/npydata/jump.lateral.xs.npy
 create mode 100644 examples/npydata/jump.twist.us.npy
 create mode 100644 examples/npydata/jump.twist.xs.npy

diff --git a/examples/jump.py b/examples/jump.py
index b34d2f90..da3f5d8d 100644
--- a/examples/jump.py
+++ b/examples/jump.py
@@ -35,6 +35,25 @@ import pinocchio
 from pinocchio.utils import *
 from numpy.linalg import norm,inv,pinv,eig,svd
 
+# Number of iterations in each phase. If 0, try to load.
+PHASE_ITERATIONS = { \
+                     "initial": 100,
+                     "landing": 100,
+                     "frontal": 100,
+                     "lateral": 100,
+                     "twist"  : 100
+                     }
+PHASE_ITERATIONS = { k: 0 for k in PHASE_ITERATIONS }
+PHASE_BACKUP = { \
+                     "initial": True,
+                     "landing": True,
+                     "frontal": True,
+                     "lateral": True,
+                     "twist"  : True
+               }
+BACKUP_PATH = "npydata/jump."
+DISPLAY = True
+
 robot = loadTalosLegs()
 robot.model.armature[6:] = .3
 robot.initDisplay(loadModel=True)
@@ -195,6 +214,8 @@ models[-1].differential.costs['xreg'].cost.activation.weights[:] = 1
 # ---------------------------------------------------------------------------------------------
 # Solve both take-off and landing.
 # Solve the initial phase (take-off).
+PHASE_NAME = "initial"
+
 problem = ShootingProblem(initialState=x0,runningModels=models[:imp],terminalModel=models[imp])
 ddp = SolverDDP(problem)
 ddp.callback = [ CallbackDDPLogger(), CallbackDDPVerbose() ]#, CallbackSolverDisplay(robot,rate=5) ]
@@ -204,13 +225,20 @@ us0 = [ m.differential.quasiStatic(d.differential,rmodel.defaultState) \
             +[np.zeros(0)]+[ m.differential.quasiStatic(d.differential,rmodel.defaultState) \
                              for m,d in zip(ddp.models(),ddp.datas())[imp+1:-1] ]
 
-ddp.solve(maxiter=20,regInit=.1,
+ddp.solve(maxiter=PHASE_ITERATIONS[PHASE_NAME],regInit=.1,
           init_xs=[rmodel.defaultState]*len(ddp.models()),
           init_us=us0[:imp])
-disp(ddp.xs)
+
+if PHASE_ITERATIONS[PHASE_NAME] == 0:
+    ddp.xs = [ x for x in np.load(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME)]
+    ddp.us = [ u for u in np.load(BACKUP_PATH+'%s.us.npy' % PHASE_NAME)]
+elif PHASE_BACKUP[PHASE_NAME]:
+    np.save(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME,ddp.xs)
+    np.save(BACKUP_PATH+'%s.us.npy' % PHASE_NAME,ddp.us)
 
 # ---------------------------------------------------------------------------------------------
 # Solve both take-off and landing.
+PHASE_NAME = "landing"
 xsddp = ddp.xs
 usddp = ddp.us
 
@@ -223,22 +251,31 @@ ddp.us = usddp + [ np.zeros(0) if isinstance(m,ActionModelImpact) else \
                m.differential.quasiStatic(d.differential,rmodel.defaultState) \
                                for m,d in zip(ddp.models(),ddp.datas())[len(usddp):-1] ]
 
-ddp.th_stop = 1e-1
-ddp.solve(init_xs=ddp.xs,init_us=ddp.us)
-
+#ddp.th_stop = 1e-1
+#ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=)
 
 ddp.th_stop = 5e-4
 impact.costs['track30'].weight = 1e6
 impact.costs['track16'].weight = 1e6
-ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=100,isFeasible=True)
-disp(ddp.xs)
+ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=PHASE_ITERATIONS[PHASE_NAME],isFeasible=True)
+
+if PHASE_ITERATIONS[PHASE_NAME] == 0:
+    ddp.xs = [ x for x in np.load(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME)]
+    ddp.us = [ u for u in np.load(BACKUP_PATH+'%s.us.npy' % PHASE_NAME)]
+elif PHASE_BACKUP[PHASE_NAME]:
+    np.save(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME,ddp.xs)
+    np.save(BACKUP_PATH+'%s.us.npy' % PHASE_NAME,ddp.us)
 
+if DISPLAY: disp(ddp.xs)
 
+# Save for future use in initialization of advanced jumps
 xjump0 = [ x.copy() for x in ddp.xs ]
 ujump0 = [ u.copy() for u in ddp.us ]
 
-'''
+# ---------------------------------------------------------------------------------------------
 ### Jump with frontal scissors.
+PHASE_NAME = "frontal"
+
 fig = high+2
 x = x0.copy()
 x[9 ] =  1.
@@ -250,15 +287,24 @@ for i in range(6,9):
     impact.costs['track30'].weight = 10**i
     impact.costs['track16'].weight = 10**i
     models[fig].differential.costs.costs['xreg'].weight  = 10**i
-    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=100,isFeasible=True)
-    disp(ddp.xs)
+    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=PHASE_ITERATIONS[PHASE_NAME],isFeasible=True)
+
+if PHASE_ITERATIONS[PHASE_NAME] == 0:
+    ddp.xs = [ x for x in np.load(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME)]
+    ddp.us = [ u for u in np.load(BACKUP_PATH+'%s.us.npy' % PHASE_NAME)]
+elif PHASE_BACKUP[PHASE_NAME]:
+    np.save(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME,ddp.xs)
+    np.save(BACKUP_PATH+'%s.us.npy' % PHASE_NAME,ddp.us)
+
+if DISPLAY: disp(ddp.xs)
+
+# ---------------------------------------------------------------------------------------------
+### Jump with lateral scissors.
+PHASE_NAME = "lateral"
 
-xjump1 = [ x.copy() for x in ddp.xs ]
-ujump1 = [ u.copy() for u in ddp.us ]
 ddp.xs = xjump0
 ddp.us = ujump0
 
-### Jump with lateral scissors.
 fig = high+2
 x = x0.copy()
 x[8 ] =  .8
@@ -266,100 +312,44 @@ x[14] = -.8
 models[fig].differential.costs.costs['xreg'].cost.ref=x.copy()
 models[fig].differential.costs.costs['xreg'].cost.activation.weights[rmodel.nv:] = 0
 
-for i in range(6,9):
-    impact.costs['track30'].weight = 10**i
-    impact.costs['track16'].weight = 10**i
-    models[fig].differential.costs.costs['xreg'].weight  = 10**i
-    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=100,isFeasible=True)
-    disp(ddp.xs)
-    
-xjump2 = [ x.copy() for x in ddp.xs ]
-ujump2 = [ u.copy() for u in ddp.us ]
-ddp.xs = xjump0
-ddp.us = ujump0
+impact.costs['track30'].weight = 10**6
+impact.costs['track16'].weight = 10**6
+models[fig].differential.costs.costs['xreg'].weight  = 10**6
+ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=PHASE_ITERATIONS[PHASE_NAME],isFeasible=True)
+
+if PHASE_ITERATIONS[PHASE_NAME] == 0:
+    ddp.xs = [ x for x in np.load(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME)]
+    ddp.us = [ u for u in np.load(BACKUP_PATH+'%s.us.npy' % PHASE_NAME)]
+elif PHASE_BACKUP[PHASE_NAME]:
+    np.save(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME,ddp.xs)
+    np.save(BACKUP_PATH+'%s.us.npy' % PHASE_NAME,ddp.us)
+if DISPLAY: disp(ddp.xs)
 
-models[fig].differential.costs.costs['xreg'].weight  = 100
+models[fig].differential.costs.costs['xreg'].weight  = 0.1
 models[fig].differential.costs.costs['xreg'].cost.ref=x0.copy()
 models[fig].differential.costs.costs['xreg'].cost.activation.weights[rmodel.nv:] = 10
-'''
 
-'''
+# ---------------------------------------------------------------------------------------------
 ### Jump with twist PI/2
+PHASE_NAME = "twist"
+
+ddp.xs = xjump0
+ddp.us = ujump0
+
 impact.costs['track16'].cost.ref = SE3(rotate('z',1.5),zero(3))*impact.costs['track16'].cost.ref
 impact.costs['track30'].cost.ref = SE3(rotate('z',1.5),zero(3))*impact.costs['track30'].cost.ref
 models[-1].differential.costs.costs['xreg'].cost.activation.weights[5] = 0
 
-for i in range(4,9):
+for i in range(6,7):
     impact.costs['track30'].weight = 10**i
     impact.costs['track16'].weight = 10**i
-    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=100,isFeasible=True)
-    disp(ddp.xs)
-    
-xjump3 = [ x.copy() for x in ddp.xs ]
-ujump3 = [ u.copy() for u in ddp.us ]
-#ddp.xs = xjump0
-#ddp.us = ujump0
-
-### Jump with twist PI
-impact.costs['track16'].cost.ref = SE3(rotate('z',3.15),zero(3))*impact.costs['track16'].cost.ref
-impact.costs['track30'].cost.ref = SE3(rotate('z',3.15),zero(3))*impact.costs['track30'].cost.ref
-models[-1].differential.costs.costs['xreg'].cost.activation.weights[5] = 0
+    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=PHASE_ITERATIONS[PHASE_NAME],isFeasible=True)
 
-for i in range(4,9):
-    impact.costs['track30'].weight = 10**i
-    impact.costs['track16'].weight = 10**i
-    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=100,isFeasible=True)
-    disp(ddp.xs)
-    
-xjump4 = [ x.copy() for x in ddp.xs ]
-ujump4 = [ u.copy() for u in ddp.us ]
-ddp.xs = xjump0
-ddp.us = ujump0
+if PHASE_ITERATIONS[PHASE_NAME] == 0:
+    ddp.xs = [ x for x in np.load(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME)]
+    ddp.us = [ u for u in np.load(BACKUP_PATH+'%s.us.npy' % PHASE_NAME)]
+elif PHASE_BACKUP[PHASE_NAME]:
+    np.save(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME,ddp.xs)
+    np.save(BACKUP_PATH+'%s.us.npy' % PHASE_NAME,ddp.us)
+if DISPLAY: disp(ddp.xs)
 
-'''
-
-### Salto!
-impact.costs['track16'].cost.ref = SE3(eye(3),left0)
-impact.costs['track30'].cost.ref = SE3(eye(3),right0)
-models[-1].differential.costs.costs['xreg'].cost.activation.weights[5] = 1
-
-xsalto = models[high].differential.costs.costs['xreg'].cost.ref.copy()
-xsalto[3]=1
-xsalto[6]=0
-models[high].differential.costs.costs['xreg'].cost.ref = xsalto
-models[high].differential.costs.costs['xreg'].cost.activation.weights[3:5] = 100
-
-impact.costs['track30'].weight = 0.1
-impact.costs['track16'].weight = 0.1
-ddp.xs = [x.copy() for x in xjump0]
-ddp.us = [u.copy() for u in ujump0]
-
-# from pinocchio.utils import se3ToXYZQUAT
-# D = 2*np.pi/(imp-9)
-# for i,x in enumerate(ddp.xs[9:imp]):
-#     '''
-#     oM1 1_p
-#     p st [ R p ] 0^c = c = R c + p   => p = c-Rc
-#     '''
-#     q = a2m(x)[:rmodel.nq]
-#     pinocchio.centerOfMass(rmodel,rdata,q)
-#     R = rotate('y',D*i)
-#     c = rdata.com[0].copy()
-#     p = c-R*c
-#     M = SE3(R,p)
-#     x[:7] = se3ToXYZQUAT(M*rdata.oMi[1])
-    
-    
-
-
-for i in range(1,9):
-    # impact.costs['track30'].weight = 10**i
-    # impact.costs['track16'].weight = 10**i
-    models[high].differential.costs.costs['xreg'].weight = 10**i
-    ddp.solve(init_xs=ddp.xs,init_us=ddp.us,maxiter=100,isFeasible=False)
-    disp(ddp.xs)
-    
-xjump5 = [ x.copy() for x in ddp.xs ]
-ujump5 = [ u.copy() for u in ddp.us ]
-ddp.xs = xjump0
-ddp.us = ujump0
diff --git a/examples/npydata/jump.frontal.us.npy b/examples/npydata/jump.frontal.us.npy
new file mode 100644
index 0000000000000000000000000000000000000000..07b4e75a465f286f3b8afa198d1acec4a0abe130
GIT binary patch
literal 4258
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

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.frontal.xs.npy b/examples/npydata/jump.frontal.xs.npy
new file mode 100644
index 0000000000000000000000000000000000000000..fb237217df0b653b7070655ab3848bb5d3884173
GIT binary patch
literal 10192
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
HVh#Tdmz`aL

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.initial.us.npy b/examples/npydata/jump.initial.us.npy
new file mode 100644
index 0000000000000000000000000000000000000000..471a214638ed4b7e459f26819831c3e988d295aa
GIT binary patch
literal 2336
zcmbV}`#%);9>!fZ<dU?BNG4*)r6|d*&zA~im0McZOc|{%X51o|PE-<!mZapC#LmiP
zBsSXbmn5Z>%M1#c8WwZh23tg(&e{LqJik5f*ZcK)et6RNA9Qr`5EVHs5>54|haL@~
znp3Ej0XwMr6lwq?BrJp$beIw1Pya8srJW3=f9IjU(3te^UB`H<KE=pbSDz9~`9C8)
z;LE9MAfvb=D{SdRkOIoQS6$jhRYv<J+RltCZY6j8PYrr{Akvk$!OJ^j8__o9{?D%)
z{Kxn2yZHF?RWXt_;M{X9sS9sjX`<|!vWGMk{NsPk$bMyC*n_>LBSIxLgphFfC(Yw5
zX~MDDR;a09P2^Rpv;MrSOl+%;PMLh9kcEb!KZ033Sg?F^%nmOhbYxT~#n4nqc7*Ed
zWwPdEVYipd&J$XsqT|Eg-eVLZ7PP%Svhxw9ST<Vz?VJIY25pJyY6|4mW3k$tww**)
zebL5?{Rxu0(TW!wapGTg@zkTH@BWQljHUTpxYuD*(w(kIl%DxN+bLs7{Ay$lD7!ty
zE13tn6b0gh>GuAfxnv!z^5q9teSC){;@r1A$z4T?IgF@=Y76qEq{xkTNf{CDX77Q{
z33#CAxwRVC!Ma8RAEA98mfu~_-m#=Wc!!rP-VRz2=DrL&hjeA+=b^t(U1}19F5t5i
z*9l_^B5#u4@bUF!arBF-s|i}XvT0n=oG3RII{f-s6D2-HZEJZlD8AJE99ygl%nH+9
z>P!q_rto}d@~)NS?yY)Xdt^!Cwgs)TplKuXzR4Foy0XZ|TV<7O>ma0XV`3k@AHo^q
z!-bc`6$$&%>FR9z9YiBV#V#*H7ahAWBFj6ij1H=Waf;n|;Hll;d?9fJFV2VFoCaC4
zb-eIpWxOTvm^R7j$uvZqz;%gNUMZu^H%j8<n#MtHWRvJ^+7#|_I8xT5zLq4&Z~5V@
zt|^%{_(4xR$_SlpE((uT*Fvd=><1bjCcr7Xw8#}^@TdO7yjUe!qEo0^c`EYzU&8sK
zYVqwT;O5=-kr*xHzeHuJG>RhTXwTEQb;B@yM}N<;90f8OZ4^Lzs!Pf*G7^J=by3ls
zo@XUvMo4y<>s{SLVrcNk5;r;jE|_YmF~})+2N0DPFW{Mz#A!vJBAy8f8@r(Q(!m%d
zDvLXdDa)b-W>b~^5fP+%)bqEACx%4y@Wk4^iim8i^)C3Z!x0@UT{(YpbPsxAa$aH|
zR}Ou)J5*m)It3EU6C3z9707`6=x?;2oye@KN!G|FH^j=;JfMEc7G2$Fl+mF@MV&2~
zbZLPJxfRoS{E3Ah39d5iY+n{b_OH|r?0X)JBq}0>+qb!+?Z=X41x7l^%C&TPbf78G
zUUZxJ@eePuCAHJEV*D&=E$%9Ai3>&X+S+o3H{H>(;oWxGnMS0bURd;8X$z8@<vBLS
zxFBuQ6oIuF1EE|-?{8Z?NXR@jEEYDB=Boao+lm?}vn!mrRI(8X@>31{mYh-gn#ppS
z9s{*jnHa8@^dQwit>w}iHj-t|;z^Ekvp8u@pV0FMKCoR126u%nN6lXeU3Il8vg=Aa
zcHqZB+|n4cVTEobW+gY#Ha#4L5#R8p*JWK;sUxMIFC&Exbv&dPeNjQXCloI`+<TAz
zCHWWW;9%U=s3gdid5md29~r-Ub>rF!8=r&|y<nZkX${i-3uZ5T`)Sy+5)vOV&0fib
z;1#shlLHIscvwlbnbGhNzMl2S(wXMN%YF`@bzl^fx`I1}FWE4Yef-$@2s%VcU%6s&
z`ysC1NKJ{!;9(Y9g}vC!fnM$F-74%4FeP&`T$@%7p~duc_akwbs+Q&1#V)|_Uir*j
zH}8dl@by9K_YQ(^!+D#*d_J(eou>@~E1_swW=^H|DqK*BOW>Bg#L^OZ8o`Bc!J}|t
z$-qVo{hX&KU$cH5%1#JJqeGg(&sT7w$?+!4Ife-~yl%wJ&%A@86~917gS{Ph=Qmif
z*;2+Jbpe>ceNLK1E$~Tp&TOA?IcUG1?8rZj;WITzzDH*fN7y%8+vtdq*KB&RRrVLS
z!c1+|N~na7seQD}$t-N`m|XaHiVr&3wv>sK-?5d^VTq_14n(iy_jB7tkXxV?P2&^`
zl2~<A+fDIMHj_MeKZ0PE!x_bH4H0xE*S-J7X(<$Sy6Mkrxne{|FqFjQS70&rtUi6B
z0AeXt&-a#&V^5Y{{RPztn7I2n?yR*aNf+i_mHj3~u8yBf)jN0>k8AIej=i4-w+@yq
zk^Fk>cZ$D1(l8fOIqC_!9*luR{fA#Z_5TF{X$s>zGAm#(qh{Bh<*D#urZRrHYCWDB
z3bNUs@h7alH4^&JdH}y6))6hWZ9sKbm9syZ4<66?6?DBcXel=xtvFte9a>PqltCxn
znHQi__^lt@)uy|;_YOnHoLBcVdIfxzRIkvp3k1<mciw5Zu<<}m9vMw*hY=T!WBs!V
zEIlzt=UyKGvlcC>hBy|u$~oWm5Tt@rU7Gwsu|m8mD);%{l5eqA&CDg<@otd4Y%1px
zGz3>7QW^Ja%K`lqa6Xgaj;&(s2gT@YEY*Ac;g(`9gas#+a&1dNC%QaI`XUeHB`jt>
zoVgEABF~uR>Rtn6C9}eCC=|lay&3$sEf1F*(e#>JXa=2oKCh<cKEki@t97}&`#@1M
zC^Kj{i_QFp%5MrQvA4ufg7MQnpk=n7)AwkHpKsTG>qs7gxM?2E!M76XqI|+X)?5R>
zds`oP-N*rk=jQPOl_?zC&d5_V?!!*WyfC}uX&^??m-2Gbpn*G{<6e6aPpp+t&$O)q
z!4vl};rD%&@N?HfO+JCj+X3!m%_3Y{AJThkk`0gd^OMwkv%tC{$(tD`PRt!N8>H^8
zBO!I8BD4xgq;`2&CO>~C3JkRN6J=1y_Wst_)%(A|+~S?DrfZ~8>)3Ul$UTxIO>~W*
f|BwNSI4a%v@5_K{{GHAux>AUS!h-RR=y~`LE=qC!

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.initial.xs.npy b/examples/npydata/jump.initial.xs.npy
new file mode 100644
index 0000000000000000000000000000000000000000..d0b987f2bf3fc78fc6622c1272e3291124398cab
GIT binary patch
literal 7232
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

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.landing.us.npy b/examples/npydata/jump.landing.us.npy
new file mode 100644
index 0000000000000000000000000000000000000000..baedbe399b5c8e8d2c1a20da5f0bd78bf61272ce
GIT binary patch
literal 4258
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
BG5P=i

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.landing.xs.npy b/examples/npydata/jump.landing.xs.npy
new file mode 100644
index 0000000000000000000000000000000000000000..8eaaf9a3a9d5bd41f479b1601541a45e176cc96e
GIT binary patch
literal 10192
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
Y0>6cU%JHgJbFwPBu&-ZyWo`!l1K{FWj{pDw

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.lateral.us.npy b/examples/npydata/jump.lateral.us.npy
new file mode 100644
index 0000000000000000000000000000000000000000..45a861a605868713ce4c62e0cd3dcd5d698177b7
GIT binary patch
literal 4258
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

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.lateral.xs.npy b/examples/npydata/jump.lateral.xs.npy
new file mode 100644
index 0000000000000000000000000000000000000000..bb11d4b5a9b419e11f0c7d0d371883c651d34b1b
GIT binary patch
literal 10192
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

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.twist.us.npy b/examples/npydata/jump.twist.us.npy
new file mode 100644
index 0000000000000000000000000000000000000000..abf49a23a2205a43d25fe58edce2dcffdbe46b0f
GIT binary patch
literal 4258
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%0AS&)w`vQAfjux5@W>=P>`;7zZou
z0nD7gN}A$&3$ypx-SD8|HD)9>-MXi37<ZzSWktBF0MV_<JyBu~f5w{Ge9Yw~E_Dd2
zD#*TsTlH%P`a5)S(h6+!Y$f5rY3?O#aDLq2<asT0rq#7f(NqdX)mvv{d6sb9Pt^Sv
zuGiq7>TSt6jeVGRu#0Mr%{)FBaK2V@feMsR^>8O|aTHb(N;<uD5fjQVk#7wKOn+C0
znNjmAPI@&P&5$~$=BOxy?ih?2Iu@))hjka<EUYKN#6jP4V~>as%D58ycHJ}lN73|X
z_^$U@LVf7S-J60?Zt3#&bBrE{SS1vOHYlJhixeaMI3n5_zv%GAzYX&fC)(LP{o5%;
zk&PB}jC)(9Erv2$@~PKa5EAt_v8B&b;7UxiGeJcF5<{ki#}m46quC;PP0I;vPZ7B-
zeXlfJzd%(vB#$6-(Wt+44+Yf>q__7EtVU<*_Qb@9_F+Ppxb~&UznxN)*yuBg2GV=`
zwP5pMW%9S%E-1G#z(6ok5=61$Bm09r5k(?+yJnsa2#54`wy*t)?M@LdbSotxciper
zM>cMSf$2MPvc2}mwD56fMWq*_&3Rk+d1wODLo9^&lfb!$EB~Uol7g2{q+A?(EQzhE
z=$P%8NwGcr+?V~X+R+{zovD{=9dd#vs?3j#Ex{0vUA42_;e&jbro~V7JVD>Rk+9_t
z8m!XtibG>`bg(&6?i6x?4@%b$>SqT+mn%6fJZC4eZ>QaVb#5zXRb)2$fcZ|U^nFX<
zmdYb|^O&Osm&vNMMQaGiKHO+}!yg!%@_BXyY(oVZPsB#}UBS)xgvIyQ2ux{-OtmQt
zkq@$Js+UVoIXzTt*X{#D;l%<?mLBLQtxW&SE;mkk4IABr<}wevYQU?FCa3zoYM^_i
zQX_LUhQN$)clHzafgokMc1<@|6rNsqH*DAueBaA(Nm^@zn2A+6;hPpB&wgZ8E>DNv
zmy8Va((Uk;KQnZ+nT9m4^3Qx~q;b+JY;?e*%x}LfilC!^rU{*(EnuTUd!0=0N<eX3
zL1pqfFE}Y}RTy;07Liu&wj6!85yC%CRlYJ2MDopEtS<hqST6S%Idx7C?!Vg8P!Z`4
zqwWFM&s15W$+`67>x(yX(yDB9<=Ua=A&t7|-YK_GiHX(lVomXu(&uC(eMeAjA=m?6
zl*zXp^Uy<0ZoUsX->iofLGlJd$+{>rmXB{`I|))28GWsJ3Xt*0Q>iS|2`*2nvC3@7
zXnjoRTh&^9PFjtP4&Hf)QT)yrNga~2=(wl>oi!O{iKA=LiD=Ic1!O1K<3FMjOH&5-
zXx?23L6R_5pesF8X^b2xD+C2BG@*SHlQ2m5fIs3=YC1Dv4Vj4+VtbWT0mi2kUo41l
z(iAp2(wNsL%hwnUt-U`I5~&F_!Z$7%tW-v3_MP*-QWjt;8<DYH7(qa0L^DoSL)yVH
zC0i-RsQZpZ=9OVh@U{IKUXtC8Z5}?bO;Ohj9=0T~Eccs1Y)5&t6;lmyEG{Y=eIl&G
z>Jmc_nO@)zZ|b4IgYr^Mny54+C8g{tntF*fIfT1R?WRLV_rwQ54O3)2aq)2S3O)2@
zChbi?83nq1Hh0<l-~wd5bljUq4}N|yRuEic198{$vfO@}aMJ2*^y5>rp>lB=Xbbnc
z{ON28c%6M_nMBlsh0_XZ<#DDchc}kGX2K2V;d)ZEl{QF9YLFFvLmh29$KpDwLjiEE
l4)f}igg+LES;SgZ2<luMx7k1g*`IMv%LA}XGot)-{snqXGfw~j

literal 0
HcmV?d00001

diff --git a/examples/npydata/jump.twist.xs.npy b/examples/npydata/jump.twist.xs.npy
new file mode 100644
index 0000000000000000000000000000000000000000..2834bae5e9cca61dc175d3efa0df7af0981021f2
GIT binary patch
literal 10192
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

literal 0
HcmV?d00001

diff --git a/examples/salto.py b/examples/salto.py
index 936a31c5..a7a54653 100644
--- a/examples/salto.py
+++ b/examples/salto.py
@@ -35,7 +35,7 @@ from numpy.linalg import norm,inv,pinv,eig,svd
 PHASE_ITERATIONS = { \
                      "initial": 0,
                      "angle":  0,
-                     "landing": 100
+                     "landing": 0
                      }
 PHASE_BACKUP = { "initial": True,
                  "angle":   True,
@@ -222,7 +222,7 @@ ddp.solve(maxiter=PHASE_ITERATIONS[PHASE_NAME],regInit=.1,
 if PHASE_ITERATIONS[PHASE_NAME] == 0:
     ddp.xs = [ x for x in np.load(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME)]
     ddp.us = [ u for u in np.load(BACKUP_PATH+'%s.us.npy' % PHASE_NAME)]
-elif PHASE_BACKUP["initial"]:
+elif PHASE_BACKUP[PHASE_NAME]:
     np.save(BACKUP_PATH+'%s.xs.npy' % PHASE_NAME,ddp.xs)
     np.save(BACKUP_PATH+'%s.us.npy' % PHASE_NAME,ddp.us)
 
-- 
GitLab