diff --git a/crocoddyl/__init__.py b/crocoddyl/__init__.py index ecca59a228e0eca8b602c8cb1b3442cc7442c218..7483b5aaa5c3760bc8a71e8892d68b8b334cb12b 100644 --- a/crocoddyl/__init__.py +++ b/crocoddyl/__init__.py @@ -35,3 +35,4 @@ from .solver import SolverAbstract from .state import StateAbstract, StateNumDiff, StatePinocchio, StateVector from .unicycle import ActionModelUnicycle, ActionModelUnicycleVar, StateUnicycle from .utils import a2m, absmax, absmin, m2a +from .plots import * diff --git a/crocoddyl/plots.py b/crocoddyl/plots.py new file mode 100644 index 0000000000000000000000000000000000000000..bf821b95d5918426790dd70b899d02418ab23621 --- /dev/null +++ b/crocoddyl/plots.py @@ -0,0 +1,56 @@ +import numpy as np +import matplotlib.pyplot as plt + +class PlotUAM: + def __init__(self, stateTraj, controlTraj, knots, dt, d, cf, cm): + self.stateTraj = stateTraj + self.controlTraj = controlTraj + self.knots = knots + self.dt = dt + self.d = d + self.cf = cf + self.cm = cm + self.PlotDataType = PlotDataUAM(self) + + def plotMotorForces(self): + fig, axs = plt.subplots(2,2, figsize=(15,10)) + fig.suptitle('Motor forces') + t = self.PlotDataType.t + axs[0, 0].plot(t,self.PlotDataType.control[:,0]) + axs[0, 0].set_title('Motor 1') + axs[0, 1].plot(t,self.PlotDataType.control[:,1]) + axs[0, 1].set_title('Motor 2') + axs[1, 0].plot(t,self.PlotDataType.control[:,2]) + axs[1, 0].set_title('Motor 3') + axs[1, 1].plot(t,self.PlotDataType.control[:,3]) + axs[1, 1].set_title('Motor 4') + + return fig,axs + + def plotActuation(self): + fig, axs = plt.subplots(1,2, figsize=(15,10)) + fig.suptitle('Motor forces') + t = self.PlotDataType.t + axs[0].plot(t,self.PlotDataType.M[:,0], t,self.PlotDataType.M[:,1], t,self.PlotDataType.M[:,2]) + axs[0].set_title('Moments') + axs[0].legend(['Mx','My','Mz']) + axs[1].plot(t,self.PlotDataType.thrust) + axs[1].set_title('Motor 2') + + + return fig,axs + +class PlotDataUAM(): + def __init__(self, model): + self.t = np.arange(0, model.knots*model.dt, model.dt) + self.t_state = np.append(self.t, self.t[-1]+model.dt) + self.control = np.vstack(model.controlTraj) + self.thrust = self.control[:,0]+self.control[:,1]+self.control[:,2]+self.control[:,3] + Mx = model.d*(-self.control[:,0]+self.control[:,1]+self.control[:,2]-self.control[:,3]) + My = model.d*(-self.control[:,0]+self.control[:,1]-self.control[:,2]+self.control[:,3]) + Mz = model.cm/model.cf*(-self.control[:,0]-self.control[:,1]+self.control[:,2]+self.control[:,3]) + + self.M = np.zeros([np.size(self.control,1), 3]) + self.M[:, 0] = Mx + self.M[:, 1] = My + self.M[:, 2] = Mz diff --git a/crocoddyl/robots.py b/crocoddyl/robots.py index 00d0e0c23aa07e04446fdb522b51d5be62881fea..802d504bb03d5263deba23015da79d310330df9f 100644 --- a/crocoddyl/robots.py +++ b/crocoddyl/robots.py @@ -132,6 +132,8 @@ def loadKinton(modelPath='/opt/openrobots/share/example-robot-data'): robot = RobotWrapper.BuildFromURDF(modelPath + URDF_SUBPATH, [modelPath], pinocchio.JointModelFreeFlyer()) robot.q0.flat[7:] = [0, 0, 0, 0, 0, 0] robot.model.referenceConfigurations["initial_pose"] = robot.q0 + robot.q0.flat[7:] = [0, 0.2, 1.7, 2, 0, 0] + robot.model.referenceConfigurations["centered"] = robot.q0 return robot def loadKintonArm(modelPath='/opt/openrobots/share/example-robot-data'): diff --git a/examples/notebooks/kinton_fixed_base.ipynb b/examples/notebooks/kinton_fixed_base.ipynb index dad285041ad10db2eaef228e0e630ec32cc823bb..df79af6a9602d6fb0a9628cd187e9db746229e4c 100644 --- a/examples/notebooks/kinton_fixed_base.ipynb +++ b/examples/notebooks/kinton_fixed_base.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -11,8 +11,8 @@ "import numpy as np\n", "\n", "robot = loadKintonArm()\n", - "#robot.initDisplay(loadModel=True)\n", - "#robot.display(robot.q0)\n", + "robot.initViewer(loadModel=True)\n", + "robot.display(robot.q0)\n", "\n", "robot.framesForwardKinematics(robot.q0)\n", "\n", @@ -23,22 +23,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'viewer'", - "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-cd53aa81cd48>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# Plot goal frame\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mrobot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviewer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maddXYZaxis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'world/framegoal'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m.015\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0mrobot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviewer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapplyConfiguration\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'world/framegoal'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_pos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mtarget_quat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_quat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_quat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_quat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\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 8\u001b[0m \u001b[0mrobot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviewer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrefresh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/opt/openrobots/lib/python2.7/site-packages/pinocchio/robot_wrapper.pyc\u001b[0m in \u001b[0;36mviewer\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mviewer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviz\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mviewer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msetVisualizer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvisualizer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minit\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy_models\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mFalse\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: 'NoneType' object has no attribute 'viewer'" - ] - } - ], + "outputs": [], "source": [ "target_pos = np.array([-0.1,-0.05,-0.15])\n", "target_quat = pin.Quaternion(.4, .02, -.5, .7)\n", @@ -64,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -92,1269 +79,25 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "([array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n", - " array([-8.56312177e-04, 1.89532152e-03, 2.73421184e-03, 1.40535055e-04,\n", - " -6.80910601e-03, -1.47306350e-02, -8.56312177e-01, 1.89532152e+00,\n", - " 2.73421184e+00, 1.40535055e-01, -6.80910601e+00, -1.47306350e+01]),\n", - " array([-2.54926553e-03, 5.12874409e-03, 7.81062478e-03, -3.01186931e-05,\n", - " -1.90322663e-02, -4.14852078e-02, -1.69295335e+00, 3.23342257e+00,\n", - " 5.07641293e+00, -1.70653748e-01, -1.22231603e+01, -2.67545728e+01]),\n", - " array([-5.08231018e-03, 9.22720244e-03, 1.48413991e-02, -8.04175234e-04,\n", - " -3.54988967e-02, -7.79179637e-02, -2.53304466e+00, 4.09845835e+00,\n", - " 7.03077430e+00, -7.74056541e-01, -1.64666304e+01, -3.64327559e+01]),\n", - " array([-8.46800128e-03, 1.37903845e-02, 2.34569133e-02, -2.35975061e-03,\n", - " -5.52243122e-02, -1.22000964e-01, -3.38569110e+00, 4.56318206e+00,\n", - " 8.61551424e+00, -1.55557537e+00, -1.97254155e+01, -4.40830008e+01]),\n", - " array([-1.27186474e-02, 1.84809680e-02, 3.33145786e-02, -4.79397616e-03,\n", - " -7.73790286e-02, -1.71986456e-01, -4.25064615e+00, 4.69058353e+00,\n", - " 9.85766525e+00, -2.43422556e+00, -2.21547164e+01, -4.99854912e+01]),\n", - " array([-1.78404033e-02, 2.30163561e-02, 4.41040294e-02, -8.14709277e-03,\n", - " -1.01264181e-01, -2.26373762e-01, -5.12175590e+00, 4.53538811e+00,\n", - " 1.07894509e+01, -3.35311661e+00, -2.38851526e+01, -5.43873060e+01]),\n", - " array([-2.38298841e-02, 2.71617013e-02, 5.55497401e-02, -1.24199321e-02,\n", - " -1.26291684e-01, -2.83879975e-01, -5.98948076e+00, 4.14534516e+00,\n", - " 1.14457107e+01, -4.27283935e+00, -2.50275032e+01, -5.75062132e+01]),\n", - " array([-3.06726033e-02, 3.07239957e-02, 6.74117742e-02, -1.75865554e-02,\n", - " -1.51968056e-01, -3.43413880e-01, -6.84271922e+00, 3.56229443e+00,\n", - " 1.18620341e+01, -5.16662324e+00, -2.56763713e+01, -5.95339055e+01]),\n", - " array([-3.83427059e-02, 3.35470230e-02, 7.94851689e-02, -2.36033530e-02,\n", - " -1.77881070e-01, -4.04052690e-01, -7.67010261e+00, 2.82302730e+00,\n", - " 1.20733947e+01, -6.01679762e+00, -2.59130143e+01, -6.06388091e+01]),\n", - " array([-4.68035939e-02, 3.55069954e-02, 9.15983289e-02, -3.04155662e-02,\n", - " -2.03688603e-01, -4.65021251e-01, -8.46088799e+00, 1.95997236e+00,\n", - " 1.21131600e+01, -6.81221321e+00, -2.58075331e+01, -6.09685612e+01]),\n", - " array([-5.60091391e-02, 3.65087333e-02, 1.03610720e-01, -3.79619363e-02,\n", - " -2.29109180e-01, -5.25673474e-01, -9.20554513e+00, 1.00173792e+00,\n", - " 1.20123911e+01, -7.54637012e+00, -2.54205768e+01, -6.06522231e+01]),\n", - " array([-6.59052492e-02, 3.64822755e-02, 1.15410099e-01, -4.61780004e-02,\n", - " -2.53913861e-01, -5.85475750e-01, -9.89611015e+00, -2.64577972e-02,\n", - " 1.17993788e+01, -8.21606409e+00, -2.48046815e+01, -5.98022757e+01]),\n", - " array([-7.64316113e-02, 3.53798340e-02, 1.26909472e-01, -5.49984119e-02,\n", - " -2.77919200e-01, -6.43992178e-01, -1.05263621e+01, -1.10244147e+00,\n", - " 1.14993727e+01, -8.82041147e+00, -2.40053389e+01, -5.85164289e+01]),\n", - " array([-8.75234771e-02, 3.31730321e-02, 1.38043940e-01, -6.43585617e-02,\n", - " -3.00981066e-01, -7.00871445e-01, -1.10918658e+01, -2.20680192e+00,\n", - " 1.11344687e+01, -9.36014983e+00, -2.30618659e+01, -5.68792667e+01]),\n", - " array([-9.91133938e-02, 2.98503805e-02, 1.48767566e-01, -7.41956993e-02,\n", - " -3.22989193e-01, -7.55835190e-01, -1.15899167e+01, -3.32265166e+00,\n", - " 1.07236258e+01, -9.83713756e+00, -2.20081270e+01, -5.49637450e+01]),\n", - " array([-1.11132809e-01, 2.54149615e-02, 1.59050350e-01, -8.44496956e-02,\n", - " -3.43862344e-01, -8.08667742e-01, -1.20194151e+01, -4.43541893e+00,\n", - " 1.02827840e+01, -1.02539963e+01, -2.08731508e+01, -5.28325516e+01]),\n", - " array([-1.23513502e-01, 1.98823017e-02, 1.68875407e-01, -9.50635507e-02,\n", - " -3.63544010e-01, -8.59207080e-01, -1.23806934e+01, -5.53265979e+00,\n", - " 9.82505690e+00, -1.06138552e+01, -1.96816663e+01, -5.05393383e+01]),\n", - " array([-1.36188819e-01, 1.32784184e-02, 1.78236385e-01, -1.05983717e-01,\n", - " -3.81998590e-01, -9.07336913e-01, -1.26753164e+01, -6.60388340e+00,\n", - " 9.36097833e+00, -1.09201664e+01, -1.84545794e+01, -4.81298329e+01]),\n", - " array([-1.49094686e-01, 5.63803259e-03, 1.87135165e-01, -1.17160289e-01,\n", - " -3.99207991e-01, -9.52979751e-01, -1.29058673e+01, -7.64038576e+00,\n", - " 8.89877975e+00, -1.11765718e+01, -1.72094018e+01, -4.56428385e+01]),\n", - " array([-1.62170422e-01, -2.99705683e-03, 1.95579848e-01, -1.28547092e-01,\n", - " -4.15168633e-01, -9.96090877e-01, -1.30757358e+01, -8.63508942e+00,\n", - " 8.44468278e+00, -1.13868033e+01, -1.59606421e+01, -4.31111258e+01]),\n", - " array([-1.75359335e-01, -1.25794448e-02, 2.03583039e-01, -1.40101702e-01,\n", - " -4.29888797e-01, -1.03665310e+00, -1.31889131e+01, -9.58238800e+00,\n", - " 8.00319163e+00, -1.15546094e+01, -1.47201632e+01, -4.05622272e+01]),\n", - " array([-1.88609140e-01, -2.30574403e-02, 2.11160414e-01, -1.51785399e-01,\n", - " -4.43386307e-01, -1.07467224e+00, -1.32498049e+01, -1.04779954e+01,\n", - " 7.57737427e+00, -1.16836977e+01, -1.34975104e+01, -3.80191388e+01]),\n", - " array([-2.01872203e-01, -3.43762410e-02, 2.18329538e-01, -1.63563090e-01,\n", - " -4.55686519e-01, -1.11017318e+00, -1.32630632e+01, -1.13188007e+01,\n", - " 7.16912438e+00, -1.17776903e+01, -1.23002120e+01, -3.55009380e+01]),\n", - " array([ -0.21510564, -0.04647897, 0.22510894, -0.17540318,\n", - " -0.46682057, -1.14319651, -13.23344193, -12.10272852,\n", - " 6.77939849, -11.84008895, -11.13405288, -33.02332443]),\n", - " array([ -0.22827132, -0.05930758, 0.23151736, -0.18727743,\n", - " -0.4768239 , -1.1737956 , -13.16567615, -12.82860748,\n", - " 6.40842551, -11.87424711, -10.00332469, -30.59909137]),\n", - " array([ -0.24133571, -0.07280362, 0.23757325, -0.19916077,\n", - " -0.48573495, -1.20203413, -13.06438462, -13.4960463 ,\n", - " 6.0558876 , -11.8833484 , -8.91105036, -28.23853502]),\n", - " array([ -0.2542697 , -0.08690894, 0.24329432, -0.21103116,\n", - " -0.49359413, -1.22798394, -12.93399439, -14.10531885,\n", - " 5.72107287, -11.87039025, -7.85918639, -25.94980885]),\n", - " array([ -0.26704839, -0.1015662 , 0.24869732, -0.22286934,\n", - " -0.50044294, -1.25172317, -12.77868549, -14.65725873,\n", - " 5.40300168, -11.83817235, -6.84880291, -23.73922952]),\n", - " array([ -0.27965074, -0.11671936, 0.25379785, -0.23465863,\n", - " -0.50632318, -1.27333471, -12.6023533 , -15.15316343,\n", - " 5.10052876, -11.78928931, -5.88024295, -21.61154057]),\n", - " array([ -0.29205932, -0.13231407, 0.25861028, -0.24638475,\n", - " -0.51127644, -1.29290485, -12.40858594, -15.59470826,\n", - " 4.81242403, -11.72612727, -4.95326222, -19.57013972]),\n", - " array([ -0.30425998, -0.14829794, 0.26314771, -0.25803562,\n", - " -0.51534359, -1.31052213, -12.20065427, -15.98386974,\n", - " 4.53743491, -11.65086397, -4.06715096, -17.61727455]),\n", - " array([ -0.31624149, -0.1646208 , 0.26742205, -0.26960109,\n", - " -0.51856443, -1.32627634, -11.98151204, -16.32285807,\n", - " 4.27433311, -11.56547179, -3.22083904, -15.75421143]),\n", - " array([ -0.32799529, -0.18123486, 0.27144399, -0.28107281,\n", - " -0.52097742, -1.34025772, -11.7538038 , -16.61405829,\n", - " 4.02194851, -11.47172349, -2.4129861 , -13.98138136]),\n", - " array([ -0.33951517, -0.19809484, 0.27522319, -0.29244401,\n", - " -0.52261948, -1.35255622, -11.51987881, -16.85997941,\n", - " 3.77919261, -11.37120003, -1.6420579 , -12.29850626]),\n", - " array([ -0.35079698, -0.21515805, 0.27876826, -0.30370931,\n", - " -0.52352587, -1.36326093, -11.28180904, -17.06321082,\n", - " 3.54507366, -11.26530018, -0.90639058, -10.70470859]),\n", - " array([ -0.36183839, -0.23238443, 0.28208697, -0.31486456,\n", - " -0.52373011, -1.37245954, -11.04140998, -17.22638542,\n", - " 3.31870542, -11.15525131, -0.20424393, -9.19860674]),\n", - " array([ -0.37263866, -0.24973658, 0.28518628, -0.32590669,\n", - " -0.52326396, -1.38023794, -10.80026286, -17.35214865,\n", - " 3.09931088, -11.04212114, 0.46615488, -7.77839827]),\n", - " array([ -0.38319839, -0.26717972, 0.2880725 , -0.33683352,\n", - " -0.52215738, -1.38667987, -10.55973759, -17.44313278,\n", - " 2.88622244, -10.92682999, 1.10657594, -6.44193265]),\n", - " array([ -0.39351941, -0.28468165, 0.29075138, -0.34764368,\n", - " -0.52043862, -1.39186665, -10.32101545, -17.50193583,\n", - " 2.67887935, -10.81016323, 1.71875861, -5.18677509]),\n", - " array([ -0.40360452, -0.30221276, 0.2932282 , -0.35833646,\n", - " -0.51813423, -1.39587691, -10.08511111, -17.53110454,\n", - " 2.4768233 , -10.69278365, 2.30438977, -4.01026241]),\n", - " array([ -0.41345741, -0.31974588, 0.29550789, -0.36891171,\n", - " -0.51526914, -1.39878646, -9.85289355, -17.53312077,\n", - " 2.27969282, -10.57524351, 2.86508752, -2.90955215]),\n", - " array([ -0.42308252, -0.33725627, 0.29759511, -0.3793697 ,\n", - " -0.51186675, -1.40066813, -9.62510553, -17.51039097,\n", - " 2.08721677, -10.45799618, 3.40238942, -1.88166562]),\n", - " array([ -0.4324849 , -0.35472151, 0.29949432, -0.38971111,\n", - " -0.50794901, -1.40159165, -9.40238156, -17.46523805,\n", - " 1.8992075 , -10.34140712, 3.9177446 , -0.92352558]),\n", - " array([ -0.44167016, -0.3721214 , 0.30120987, -0.39993687,\n", - " -0.5035365 , -1.40162364, -9.18526418, -17.39989559,\n", - " 1.71555366, -10.22576415, 4.41250911, -0.03198926]),\n", - " array([ -0.45064438, -0.38943791, 0.30274609, -0.41004816,\n", - " -0.49864856, -1.40082752, -8.97421853, -17.31650363,\n", - " 1.53621308, -10.11128696, 4.88794389, 0.79612301]),\n", - " array([ -0.45941403, -0.40665501, 0.30410729, -0.4200463 ,\n", - " -0.49330334, -1.39926351, -8.76964528, -17.21710619,\n", - " 1.36120565, -9.99813587, 5.3452149 , 1.56400283]),\n", - " array([ -0.46798592, -0.42375866, 0.3052979 , -0.42993272,\n", - " -0.48751795, -1.39698868, -8.57189195, -17.10364986,\n", - " 1.19060638, -9.88641969, 5.785395 , 2.27483231]),\n", - " array([ -0.47636718, -0.44073664, 0.30632244, -0.43970892,\n", - " -0.48130848, -1.39405692, -8.3812626 , -16.9779835 ,\n", - " 1.02453858, -9.7762029 , 6.20946714, 2.93176567]),\n", - " array([ -0.48456521, -0.4575785 , 0.3071856 , -0.44937643,\n", - " -0.47469015, -1.390519 , -8.19802619, -16.84185876,\n", - " 0.86316738, -9.66751201, 6.61832861, 3.5379136 ]),\n", - " array([ -0.49258763, -0.47427543, 0.3078923 , -0.45893677,\n", - " -0.46767735, -1.38642267, -8.02242347, -16.69693127,\n", - " 0.70669335, -9.56034122, 7.01279599, 4.09633016]),\n", - " array([ -0.50044231, -0.4908202 , 0.30844764, -0.46839143,\n", - " -0.46028374, -1.38181267, -7.85467273, -16.54476232,\n", - " 0.55534643, -9.45465741, 7.39361069, 4.61000189]),\n", - " array([ -0.50813728, -0.50720702, 0.30885702, -0.47774183,\n", - " -0.4525223 , -1.37673083, -7.6949744 , -16.38682098,\n", - " 0.40938011, -9.35040457, 7.76144476, 5.08183887]),\n", - " array([ -0.51568079, -0.5234315 , 0.30912609, -0.48698934,\n", - " -0.44440539, -1.37121616, -7.54351458, -16.22448659,\n", - " 0.26906582, -9.24750761, 8.11690684, 5.5146676 ]),\n", - " array([ -0.52308126, -0.53949056, 0.30926078, -0.49613522,\n", - " -0.43594484, -1.36530494, -7.40046775, -16.05905138,\n", - " 0.13468759, -9.14587574, 8.46054817, 5.91122542]),\n", - " array([-5.30347261e-01, -5.55382279e-01, 3.09267313e-01, -5.05180622e-01,\n", - " -4.27151976e-01, -1.35903078e+00, -7.26599866e+00, -1.58917233e+01,\n", - " 6.53699818e-03, -9.04540539e+00, 8.79286848e+00, 6.27415632e+00]),\n", - " array([ -0.53748752, -0.57110591, 0.30915222, -0.51412661,\n", - " -0.41803765, -1.35242478, -7.14026352, -15.72362899,\n", - " -0.11509169, -8.94598278, 9.1143217 , 6.60600793]),\n", - " array([ -0.54451093, -0.58666173, 0.30892232, -0.52297409,\n", - " -0.40861233, -1.34551555, -7.02341061, -15.55581677,\n", - " -0.22990601, -8.84748612, 9.4253214 , 6.90922956]),\n", - " array([ -0.55142652, -0.60205098, 0.3085847 , -0.53172388,\n", - " -0.39888609, -1.33832937, -6.91558037, -15.38925966,\n", - " -0.33761958, -8.7497876 , 9.72624596, 7.18617115]),\n", - " array([ -0.55824342, -0.61727584, 0.30814674, -0.54037663,\n", - " -0.38886864, -1.33089029, -6.81690514, -15.22485838,\n", - " -0.43795602, -8.65275509, 10.01744331, 7.439083 ]),\n", - " array([ -0.56497093, -0.63233929, 0.30761609, -0.54893289,\n", - " -0.37856941, -1.32322018, -6.72750852, -15.06344434,\n", - " -0.53065258, -8.55625368, 10.29923541, 7.67011608]),\n", - " array([ -0.57161843, -0.64724507, 0.30700062, -0.55739303,\n", - " -0.36799749, -1.31533885, -6.64750444, -14.90578262,\n", - " -0.61546344, -8.46014706, 10.57192223, 7.88132295]),\n", - " array([ -0.57819543, -0.66199764, 0.30630846, -0.56575733,\n", - " -0.3571617 , -1.30726419, -6.57699617, -14.75257477,\n", - " -0.69216269, -8.36429872, 10.83578536, 8.07465908]),\n", - " array([ -0.5847115 , -0.67660211, 0.30554791, -0.57402591,\n", - " -0.34607061, -1.29901221, -6.51607506, -14.60446164,\n", - " -0.76054691, -8.26857311, 11.09109123, 8.25198457]),\n", - " array([ -0.59117632, -0.69106413, 0.30472748, -0.58219874,\n", - " -0.33473252, -1.29059714, -6.46481929, -14.46202614,\n", - " -0.82043742, -8.1728367 , 11.33809393, 8.4150661 ]),\n", - " array([ -0.59759962, -0.70538993, 0.30385579, -0.5902757 ,\n", - " -0.32315548, -1.28203156, -6.42329262, -14.32579581,\n", - " -0.8716822 , -8.07695892, 11.57703762, 8.56557919]),\n", - " array([ -0.60399116, -0.71958617, 0.30294164, -0.59825652,\n", - " -0.31134732, -1.27332645, -6.39154306, -14.19624542,\n", - " -0.91415738, -7.98081308, 11.80815858, 8.70511053]),\n", - " array([ -0.61036076, -0.73365997, 0.30199387, -0.60614079,\n", - " -0.29931563, -1.26449129, -6.36960168, -14.07379943,\n", - " -0.94776843, -7.88427728, 12.03168691, 8.83516047]),\n", - " array([ -0.61671824, -0.74761881, 0.30102142, -0.61392803,\n", - " -0.28706778, -1.25553415, -6.3574815 , -13.95883437,\n", - " -0.97245098, -7.78723516, 12.24784788, 8.95714568]),\n", - " array([ -0.62307342, -0.76147049, 0.30003325, -0.6216176 ,\n", - " -0.27461092, -1.24646175, -6.3551764 , -13.85168117,\n", - " -0.98817127, -7.6895768 , 12.45686299, 9.07240169]),\n", - " array([ -0.62943608, -0.77522312, 0.29903832, -0.6292088 ,\n", - " -0.26195197, -1.23727956, -6.36266027, -13.75262739,\n", - " -0.99492633, -7.59119936, 12.65895071, 9.18218558]),\n", - " array([ -0.63581597, -0.78888504, 0.29804558, -0.63670081,\n", - " -0.24909764, -1.22799188, -6.37988614, -13.66191935,\n", - " -0.99274382, -7.49200791, 12.85432699, 9.28767864]),\n", - " array([ -0.64222275, -0.8024648 , 0.2970639 , -0.64409273,\n", - " -0.23605444, -1.21860189, -6.40678561, -13.57976429,\n", - " -0.98168158, -7.39191608, 13.04320548, 9.38998897]),\n", - " array([ -0.64866602, -0.81597113, 0.29610207, -0.65138357,\n", - " -0.22282864, -1.20911174, -6.44326823, -13.50633234,\n", - " -0.96182695, -7.29084673, 13.22579764, 9.49015406]),\n", - " array([ -0.65515524, -0.82941289, 0.29516877, -0.65857231,\n", - " -0.20942633, -1.19952259, -6.48922118, -13.44175848,\n", - " -0.93329584, -7.18873261, 13.40231249, 9.58914333]),\n", - " array([ -0.66169975, -0.84279904, 0.29427254, -0.66565782,\n", - " -0.19585337, -1.18983473, -6.54450888, -13.38614451,\n", - " -0.89623163, -7.08551695, 13.57295639, 9.68786058]),\n", - " array([ -0.66830872, -0.8561386 , 0.29342174, -0.67263898,\n", - " -0.18211544, -1.18004759, -6.60897287, -13.33956084,\n", - " -0.8508039 , -6.98115404, 13.73793249, 9.78714635]),\n", - " array([ -0.67499115, -0.86944064, 0.29262453, -0.67951459,\n", - " -0.168218 , -1.17015981, -6.68243165, -13.30204826,\n", - " -0.79720702, -6.87560983, 13.8974402 , 9.88778023]),\n", - " array([ -0.68175583, -0.88271426, 0.29188887, -0.68628345,\n", - " -0.15416632, -1.16016932, -6.76468059, -13.27361976,\n", - " -0.73565866, -6.76886237, 14.05167446, 9.990483 ]),\n", - " array([ -0.68861133, -0.89596853, 0.29122247, -0.69294435,\n", - " -0.1399655 , -1.15007341, -6.85549197, -13.25426213,\n", - " -0.66639828, -6.66090239, 14.20082496, 10.09591868]),\n", - " array([ -0.69556594, -0.90921246, 0.29063279, -0.69949609,\n", - " -0.12562042, -1.13986871, -6.95461487, -13.24393758,\n", - " -0.58968554, -6.5517337 , 14.34507534, 10.20469651]),\n", - " array([ -0.70262772, -0.92245505, 0.29012699, -0.70593746,\n", - " -0.11113582, -1.12955134, -7.06177522, -13.24258537,\n", - " -0.50579883, -6.44137369, 14.48460221, 10.31737269]),\n", - " array([ -0.70980439, -0.93570517, 0.28971195, -0.71226731,\n", - " -0.09651625, -1.11911688, -7.17667564, -13.25012325,\n", - " -0.41503378, -6.32985377, 14.61957428, 10.434452 ]),\n", - " array([ -0.71710339, -0.94897162, 0.28939425, -0.71848453,\n", - " -0.0817661 , -1.1085605 , -7.29899532, -13.2664489 ,\n", - " -0.3177019 , -6.21721975, 14.75015135, 10.5563893 ]),\n", - " array([ -0.72453178, -0.96226306, 0.28918012, -0.72458807,\n", - " -0.06688961, -1.0978769 , -7.42838975, -13.29144137,\n", - " -0.21412938, -6.10353226, 14.87648338, 10.68359081]),\n", - " array([ -0.73209627, -0.97558802, 0.28907547, -0.73057693,\n", - " -0.0518909 , -1.08706049, -7.5644903 , -13.32496232,\n", - " -0.10465604, -5.98886722, 14.99870949, 10.81641516]),\n", - " array([-7.39803171e-01, -9.88954882e-01, 2.89085833e-01, -7.36450249e-01,\n", - " -3.67739462e-02, -1.07610531e+00, -7.70690368e+00, -1.33668573e+01,\n", - " 1.03654748e-02, -5.87331615e+00, 1.51169570e+01, 1.09551743e+01]),\n", - " array([ -0.74765838, -1.00237184, 0.2892164 , -0.74220724,\n", - " -0.02154261, -1.06500518, -7.85521117, -13.41695703,\n", - " 0.13057031, -5.75698669, 15.23134061, 11.10013423]),\n", - " array([-7.55667350e-01, -1.01584692e+00, 2.89471985e-01, -7.47847239e-01,\n", - " -6.20064425e-03, -1.05375367e+00, -8.00896769e+00, -1.34750782e+01,\n", - " 2.55581661e-01, -5.64000293e+00, 1.53419613e+01, 1.12515153e+01]),\n", - " array([-7.63835051e-01, -1.02938794e+00, 2.89856995e-01, -7.53369745e-01,\n", - " 9.24826154e-03, -1.04234417e+00, -8.16770052e+00, -1.35410248e+01,\n", - " 3.85010746e-01, -5.52250593e+00, 1.54489058e+01, 1.14094924e+01]),\n", - " array([ -0.77216596, -1.04300253, 0.29037545, -0.7587744 ,\n", - " 0.02480051, -1.03076998, -8.33090785, -13.61458907,\n", - " 0.51845642, -5.40465411, 15.5522455 , 11.57419512]),\n", - " array([ -0.78066402, -1.05669808, 0.29103096, -0.76406102,\n", - " 0.04045254, -1.01902427, -8.49805702, -13.69555202,\n", - " 0.65550439, -5.28662374, 15.65203609, 11.74570724]),\n", - " array([ -0.7893326 , -1.07048177, 0.29182668, -0.76922963,\n", - " 0.05620086, -1.0071002 , -8.6685824 , -13.78368461,\n", - " 0.79572601, -5.16860944, 15.74831676, 11.92406621]),\n", - " array([ -0.79817448, -1.08436052, 0.29276536, -0.77428046,\n", - " 0.07204197, -0.99499094, -8.84188304, -13.87874825,\n", - " 0.93867661, -5.05082459, 15.84110985, 12.1092623 ]),\n", - " array([ -0.8071918 , -1.09834101, 0.29384925, -0.77921396,\n", - " 0.08797239, -0.9826897 , -9.01731994, -13.98049544,\n", - " 1.08389336, -4.93350187, 15.93042051, 12.30123763]),\n", - " array([ -0.81638601, -1.11242968, 0.29508014, -0.78403085,\n", - " 0.10398863, -0.97018982, -9.19421298, -14.08867029,\n", - " 1.23089264, -4.81689369, 16.0162365 , 12.49988475]),\n", - " array([ -0.82575785, -1.12663269, 0.29645931, -0.78873212,\n", - " 0.12008715, -0.95748477, -9.37183768, -14.20300897,\n", - " 1.37916686, -4.70127256, 16.09852823, 12.70504523]),\n", - " array([ -0.83530727, -1.14095593, 0.29798749, -0.79331906,\n", - " 0.1362644 , -0.94456827, -9.54942153, -14.32323999,\n", - " 1.52818082, -4.58693149, 16.17724894, 12.91650789]),\n", - " array([ -0.84503341, -1.15540502, 0.29966486, -0.79779324,\n", - " 0.15251674, -0.93143426, -9.72614024, -14.44908447,\n", - " 1.67736753, -4.4741842 , 16.25233514, 13.13400702]),\n", - " array([ -0.85493453, -1.16998527, 0.30149098, -0.80215661,\n", - " 0.16884045, -0.91807704, -9.9011138 , -14.58025626,\n", - " 1.82612363, -4.36336523, 16.32370724, 13.35722043]),\n", - " array([ -0.86500793, -1.18470173, 0.30346479, -0.80641144,\n", - " 0.18523172, -0.90449127, -10.07340252, -14.71646196,\n", - " 1.97380437, -4.25482988, 16.39127052, 13.58576756]),\n", - " array([ -0.87524993, -1.19955913, 0.30558451, -0.81056039,\n", - " 0.20168663, -0.89067206, -10.24200319, -14.85740083,\n", - " 2.11971834, -4.14895382, 16.45491622, 13.8192076 ]),\n", - " array([ -0.88565578, -1.2145619 , 0.30784763, -0.81460652,\n", - " 0.21820116, -0.87661503, -10.40584554, -15.00276464,\n", - " 2.26312208, -4.04613254, 16.51452315, 14.05703782]),\n", - " array([ -0.89621957, -1.22971414, 0.31025084, -0.8185533 ,\n", - " 0.23477112, -0.86231633, -10.56378922, -15.15223736,\n", - " 2.4032147 , -3.9467803 , 16.56995935, 14.29869225]),\n", - " array([ -0.90693419, -1.24501963, 0.31278998, -0.82240463,\n", - " 0.2513922 , -0.84777279, -10.71462159, -15.30549477,\n", - " 2.53913287, -3.85132866, 16.62108426, 14.5435408 ]),\n", - " array([ -0.91779125, -1.26048184, 0.31545992, -0.82616486,\n", - " 0.26805995, -0.8329819 , -10.85705664, -15.46220406,\n", - " 2.66994647, -3.76022451, 16.66775103, 14.79088897]),\n", - " array([ -0.92878098, -1.27610386, 0.31825458, -0.82983878,\n", - " 0.28476976, -0.81794193, -10.98973552, -15.62202322,\n", - " 2.79465524, -3.67392749, 16.70980925, 15.03997855]),\n", - " array([ -0.93989221, -1.29188846, 0.32116676, -0.83343169,\n", - " 0.30151687, -0.80265194, -11.11122896, -15.78460053,\n", - " 2.91218705, -3.59290666, 16.74710782, 15.28998925]),\n", - " array([ -0.95111225, -1.30783803, 0.32418816, -0.83694933,\n", - " 0.31829637, -0.78711189, -11.22004232, -15.94957391,\n", - " 3.02139823, -3.51763649, 16.77949816, 15.54004168]),\n", - " array([ -0.96242688, -1.3239546 , 0.32730924, -0.84039792,\n", - " 0.3351032 , -0.77132269, -11.31462365, -16.1165704 ,\n", - " 3.12107664, -3.44859198, 16.8068375 , 15.78920187]),\n", - " array([ -0.97382025, -1.34023981, 0.33051919, -0.84378416,\n", - " 0.3519322 , -0.75528621, -11.39337534, -16.28520561,\n", - " 3.20994822, -3.38624303, 16.82899234, 16.03648757]),\n", - " array([ -0.98527492, -1.35669489, 0.33380588, -0.84711521,\n", - " 0.36877804, -0.73900533, -11.45467004, -16.45508338,\n", - " 3.2866876 , -3.33104788, 16.84584196, 16.28087642]),\n", - " array([ -0.99677179, -1.37332069, 0.33715581, -0.85039865,\n", - " 0.38563532, -0.72248401, -11.49687118, -16.62579552,\n", - " 3.34993357, -3.28344581, 16.85728188, 16.52131626]),\n", - " array([ -1.00829015, -1.39011761, 0.34055412, -0.8536425 ,\n", - " 0.40249855, -0.70572728, -11.51835857, -16.79692187,\n", - " 3.39830993, -3.24384918, 16.86322715, 16.75673763]),\n", - " array([ -1.01980771, -1.40708564, 0.34398457, -0.85685514,\n", - " 0.41936216, -0.68874121, -11.51755923, -16.96803066,\n", - " 3.43045216, -3.21263479, 16.86361551, 16.9860682 ]),\n", - " array([ -1.03130069, -1.42422432, 0.34742961, -0.86004527,\n", - " 0.43622057, -0.67153296, -11.49298346, -17.13867923,\n", - " 3.4450402 , -3.19013505, 16.85841006, 17.20824929]),\n", - " array([ -1.04274396, -1.44153273, 0.35087045, -0.8632219 ,\n", - " 0.45306817, -0.6541107 , -11.44326564, -17.30841513,\n", - " 3.44083697, -3.17662891, 16.84760165, 17.42225374]),\n", - " array([ -1.05411117, -1.45900951, 0.35428718, -0.86639424,\n", - " 0.46989938, -0.6364836 , -11.36720908, -17.47677782,\n", - " 3.41673229, -3.17233319, 16.83121066, 17.62710492]),\n", - " array([ -1.065375 , -1.47665281, 0.35765897, -0.86957163,\n", - " 0.48670867, -0.6186617 , -11.26383348, -17.64330072,\n", - " 3.37179088, -3.17739441, 16.80928813, 17.82189591]),\n", - " array([ -1.07650743, -1.49446033, 0.36096427, -0.87276351,\n", - " 0.50349059, -0.60065589, -11.13242342, -17.80751385,\n", - " 3.30530282, -3.19188172, 16.78191635, 18.00580825]),\n", - " array([ -1.08748 , -1.51242927, 0.36418111, -0.87597929,\n", - " 0.5202398 , -0.58247777, -10.97257543, -17.9689469 ,\n", - " 3.21683423, -3.21578135, 16.74920855, 18.17812899]),\n", - " array([ -1.09826424, -1.53055641, 0.36728738, -0.87922829,\n", - " 0.53695111, -0.5641395 , -10.78424102, -18.12713283,\n", - " 3.10627521, -3.24899287, 16.71130802, 18.33826537]),\n", - " array([ -1.108832 , -1.54883802, 0.37026127, -0.88251961,\n", - " 0.55361949, -0.54565374, -10.56776264, -18.28161168,\n", - " 2.97388186, -3.29132773, 16.66838638, 18.48575592]),\n", - " array([ -1.1191559 , -1.56726995, 0.37308157, -0.88586212,\n", - " 0.57024013, -0.52703347, -10.32389935, -18.43193482,\n", - " 2.8203087 , -3.34251034, 16.62064121, 18.62027732]),\n", - " array([ -1.12920974, -1.58584762, 0.3757282 , -0.88926431,\n", - " 0.58680843, -0.50829182, -10.05383925, -18.57766927,\n", - " 2.64662803, -3.4021817 , 16.568293 , 18.74164654]),\n", - " array([ -1.13896894, -1.60456602, 0.37818254, -0.89273421,\n", - " 0.60332001, -0.489442 , -9.75919604, -18.71840214,\n", - " 2.45433279, -3.4699056 , 16.51158156, 18.84981797]),\n", - " array([ -1.14841093, -1.62341977, 0.38042786, -0.89627939,\n", - " 0.61977077, -0.47049713, -9.44198757, -18.85374498,\n", - " 2.24532042, -3.54517708, 16.45076195, 18.94487593]),\n", - " array([ -1.15751552, -1.64240311, 0.38244971, -0.89990682,\n", - " 0.63615687, -0.4514701 , -9.1045957 , -18.98333792,\n", - " 2.02185592, -3.62743262, 16.38610011, 19.02702317]),\n", - " array([ -1.16626523, -1.66150996, 0.38423623, -0.90362288,\n", - " 0.65247474, -0.43237354, -8.74970755, -19.10685358,\n", - " 1.78651381, -3.71606143, 16.31786815, 19.09656648]),\n", - " array([ -1.17464547, -1.68073396, 0.38577833, -0.9074333 ,\n", - " 0.66872108, -0.41321964, -8.38023998, -19.22400046,\n", - " 1.54210032, -3.810417 , 16.24633974, 19.15390072]),\n", - " array([ -1.18264472, -1.70006849, 0.38706988, -0.91134313,\n", - " 0.68489286, -0.39402014, -7.99925041, -19.33452593,\n", - " 1.29155856, -3.90982793, 16.1717854 , 19.19949292]),\n", - " array([ -1.19025456, -1.71950671, 0.38810775, -0.91535674,\n", - " 0.70098733, -0.37478628, -7.60983853, -19.43821861,\n", - " 1.0378616 , -4.01360743, 16.09446813, 19.23386774]),\n", - " array([ -1.1974696 , -1.73904162, 0.38889165, -0.9194778 ,\n", - " 0.71700197, -0.35552868, -7.21504457, -19.5349101 ,\n", - " 0.78389951, -4.12106075, 16.01463933, 19.25759585]),\n", - " array([ -1.20428735, -1.75866609, 0.38942401, -0.92370929,\n", - " 0.73293451, -0.33625739, -6.81775056, -19.62447611,\n", - " 0.53236778, -4.23149029, 15.93253531, 19.2712858 ]),\n", - " array([ -1.21070795, -1.77837293, 0.38970968, -0.92805348,\n", - " 0.74878288, -0.31698181, -6.42059105, -19.706837 ,\n", - " 0.28566501, -4.34419857, 15.84837446, 19.27558001]),\n", - " array([ -1.21673382, -1.79815489, 0.38975549, -0.93251197,\n", - " 0.76454524, -0.29771066, -6.02587943, -19.78195756,\n", - " 0.04580761, -4.45848952, 15.76235521, 19.27115448]),\n", - " array([ -1.22236938, -1.81800473, 0.38956985, -0.93708564,\n", - " 0.78021989, -0.27845194, -5.63555483, -19.84984636,\n", - " -0.1856317 , -4.57366904, 15.67465492, 19.25872159]),\n", - " array([ -1.22762053, -1.83791529, 0.3891623 , -0.94177469,\n", - " 0.79580532, -0.2592129 , -5.25115301, -19.91055441,\n", - " -0.40755674, -4.68904599, 15.58542974, 19.23903459]),\n", - " array([ -1.23249434, -1.85787946, 0.38854295, -0.94657862,\n", - " 0.81130014, -0.24000001, -4.87380241, -19.96417331,\n", - " -0.61934952, -4.80393471, 15.49481548, 19.21289229]),\n", - " array([ -1.23699858, -1.87789029, 0.38772211, -0.95149628,\n", - " 0.82670307, -0.22081887, -4.5042444 , -20.01083296,\n", - " -0.82084119, -4.91766001, 15.40292944, 19.18114228]),\n", - " array([ -1.24114145, -1.89794099, 0.38670985, -0.95652585,\n", - " 0.84201294, -0.20167419, -4.14287467, -20.05069859,\n", - " -1.01225547, -5.02956527, 15.30987311, 19.14468112]),\n", - " array([ -1.24493125, -1.91802496, 0.38551572, -0.96166487,\n", - " 0.85722867, -0.18256974, -3.78980067, -20.0839675 ,\n", - " -1.19413068, -5.1390233 , 15.21573544, 19.1044503 ]),\n", - " array([ -1.24837616, -1.93813583, 0.38414849, -0.96691032,\n", - " 0.87234927, -0.16350831, -3.44490913, -20.11086514,\n", - " -1.36722804, -5.24544971, 15.12059665, 19.06142734]),\n", - " array([ -1.2514841 , -1.95826747, 0.38261606, -0.97225864,\n", - " 0.8873738 , -0.1444917 , -3.10793712, -20.13164088,\n", - " -1.53243505, -5.34831717, 15.02453213, 19.0166119 ]),\n", - " array([ -1.25426264, -1.97841403, 0.38092538, -0.97770581,\n", - " 0.90230142, -0.12552069, -2.77854031, -20.14656341,\n", - " -1.69067268, -5.44716933, 14.92761622, 18.97100742]),\n", - " array([ -1.25671899, -1.99856995, 0.37908257, -0.98324744,\n", - " 0.91713134, -0.10659509, -2.45635351, -20.1559159 ,\n", - " -1.84281361, -5.54163269, 14.82992569, 18.92559948]),\n", - " array([ -1.25886003, -2.01872994, 0.37709295, -0.98887887,\n", - " 0.93186289, -0.08771376, -2.14103949, -20.15999097,\n", - " -1.9896174 , -5.63142495, 14.73154248, 18.8813322 ]),\n", - " array([ -1.26069236, -2.03888902, 0.37496127, -0.99459523,\n", - " 0.94649544, -0.06887467, -1.83232414, -20.15908584,\n", - " -2.13168562, -5.71635894, 14.63255587, 18.83908447]),\n", - " array([ -1.26222238, -2.05904252, 0.37269183, -1.00039157,\n", - " 0.96102851, -0.05007503, -1.53001768, -20.15349756,\n", - " -2.26943774, -5.7963416 , 14.53306378, 18.79964764]),\n", - " array([ -1.2634564 , -2.07918604, 0.37028872, -1.00626294,\n", - " 0.97546168, -0.03131132, -1.23402265, -20.14351867,\n", - " -2.40310664, -5.87136831, 14.43317325, 18.76370626]),\n", - " array([-1.26440073e+00, -2.09931547e+00, 3.67755973e-01, -1.01220445e+00,\n", - " 9.89794680e-01, -1.25794977e-02, -9.44331072e-01, -2.01294334e+01,\n", - " -2.53275045e+00, -5.94151295e+00, 1.43330003e+01, 1.87318229e+01]),\n", - " array([-1.26506174e+00, -2.11942699e+00, 3.65097696e-01, -1.01821136e+00,\n", - " 1.00402735e+00, 6.12493056e-03, -6.61013126e-01, -2.01115143e+01,\n", - " -2.65827691e+00, -6.00691509e+00, 1.42326691e+01, 1.87044283e+01]),\n", - " array([ -1.26544594, -2.13951701, 0.36231822, -1.02427913,\n", - " 1.01815966, 0.02480675, -0.38420035, -20.09001993,\n", - " -2.77947572, -6.06776526, 14.13231072, 18.68181609]),\n", - " array([ -1.26556001, -2.1595822 , 0.35942217, -1.03040342,\n", - " 1.03219172, 0.04347089, -0.11406597, -20.06519276,\n", - " -2.89605471, -6.12428974, 14.03206177, 18.66414403]),\n", - " array([ -1.26541081, -2.17961946, 0.35641449, -1.03658015,\n", - " 1.04612378, 0.06212233, 0.14919527, -20.03725823,\n", - " -3.00767606, -6.1767359 , 13.93206243, 18.65143881]),\n", - " array([ -1.26500543, -2.19962588, 0.3533005 , -1.04280551,\n", - " 1.05995624, 0.08076594, 0.40538612, -20.00642415,\n", - " -3.11398983, -6.22535906, 13.83245488, 18.64360584]),\n", - " array([ -1.2643511 , -2.21959876, 0.35008584, -1.04907592,\n", - " 1.07368962, 0.09940638, 0.65432327, -19.97288092,\n", - " -3.21466262, -6.27041147, 13.73338158, 18.64044195]),\n", - " array([ -1.26345525, -2.23953556, 0.34677644, -1.05538806,\n", - " 1.0873246 , 0.11804803, 0.89585072, -19.93680205,\n", - " -3.3094005 , -6.31213366, 13.63498368, 18.6416506 ]),\n", - " array([ -1.2623254 , -2.25943391, 0.34337847, -1.06173881,\n", - " 1.100862 , 0.13669489, 1.12984965, -19.8983452 ,\n", - " -3.39796566, -6.35074834, 13.53739967, 18.64685834]),\n", - " array([ -1.26096916, -2.27929156, 0.33989828, -1.06812526,\n", - " 1.11430277, 0.15535052, 1.3562449 , -19.85765344,\n", - " -3.48018701, -6.38645661, 13.44076412, 18.65563192]),\n", - " array([ -1.25939415, -2.29910642, 0.33634232, -1.0745447 ,\n", - " 1.12764797, 0.17401801, 1.57500838, -19.81485677,\n", - " -3.5559654 , -6.41943623, 13.3452067 , 18.66749508]),\n", - " array([ -1.25760799, -2.31887649, 0.33271704, -1.08099454,\n", - " 1.14089883, 0.19269996, 1.78615991, -19.77007365,\n", - " -3.62527424, -6.44984163, 13.25085141, 18.68194461]),\n", - " array([ -1.25561823, -2.33859991, 0.32902889, -1.08747235,\n", - " 1.15405664, 0.21139842, 1.98976583, -19.72341265,\n", - " -3.6881565 , -6.47780513, 13.1578159 , 18.698465 ]),\n", - " array([ -1.25343229, -2.35827488, 0.32528417, -1.09397579,\n", - " 1.16712285, 0.23011496, 2.18593611, -19.674974 ,\n", - " -3.74471902, -6.50343914, 13.06621108, 18.71654157]),\n", - " array([ -1.25105747, -2.37789973, 0.32148904, -1.10050262,\n", - " 1.18009899, 0.24885064, 2.37482023, -19.62485108,\n", - " -3.79512507, -6.52683884, 12.97614085, 18.73567178]),\n", - " array([ -1.24850087, -2.39747286, 0.31764946, -1.10705071,\n", - " 1.1929867 , 0.26760601, 2.55660244, -19.57313177,\n", - " -3.83958583, -6.54808516, 12.88770189, 18.75537462]),\n", - " array([ -1.24576937, -2.41699276, 0.31377111, -1.11361796,\n", - " 1.20578768, 0.28638121, 2.73149658, -19.51989969,\n", - " -3.87835145, -6.56724772, 12.80098371, 18.77519819]),\n", - " array([ -1.24286963, -2.436458 , 0.3098594 , -1.12020234,\n", - " 1.21850375, 0.30517593, 2.89974092, -19.46523526,\n", - " -3.91170226, -6.58438765, 12.71606873, 18.79472548]),\n", - " array([ -1.23980804, -2.45586721, 0.30591946, -1.12680191,\n", - " 1.23113678, 0.32398951, 3.06159304, -19.40921658,\n", - " -3.93994035, -6.5995601 , 12.6330324 , 18.81357849]),\n", - " array([ -1.23659071, -2.47521913, 0.30195608, -1.13341472,\n", - " 1.24368872, 0.34282093, 3.21732509, -19.35192021,\n", - " -3.96338187, -6.61281643, 12.5519435 , 18.83142087]),\n", - " array([ -1.23322349, -2.49451256, 0.29797373, -1.14003893,\n", - " 1.25616159, 0.36166889, 3.36721935, -19.29342174,\n", - " -3.98235019, -6.62420597, 12.47286442, 18.84795923]),\n", - " array([ -1.22971193, -2.51374635, 0.29397656, -1.1466727 ,\n", - " 1.26855744, 0.38053184, 3.5115643 , -19.23379624,\n", - " -3.9971699 , -6.63377742, 12.39585149, 18.86294337]),\n", - " array([ -1.22606128, -2.53291947, 0.2899684 , -1.15331428,\n", - " 1.2808784 , 0.399408 , 3.65065117, -19.1731186 ,\n", - " -4.00816184, -6.64157989, 12.32095538, 18.87616553]),\n", - " array([ -1.22227651, -2.55203093, 0.28595276, -1.15996195,\n", - " 1.29312662, 0.41829546, 3.78477093, -19.11146372,\n", - " -4.01563895, -6.64766359, 12.24822142, 18.88745888]),\n", - " array([ -1.21836229, -2.57107984, 0.28193286, -1.16661403,\n", - " 1.30530431, 0.43719216, 3.91421178, -19.04890664,\n", - " -4.01990294, -6.65208027, 12.17769006, 18.89669544]),\n", - " array([ -1.21432304, -2.59006536, 0.27791162, -1.17326891,\n", - " 1.3174137 , 0.45609594, 4.03925703, -18.98552259,\n", - " -4.02124183, -6.65488332, 12.10939719, 18.9037835 ]),\n", - " array([ -1.21016285, -2.60898675, 0.27389169, -1.17992504,\n", - " 1.32945708, 0.4750046 , 4.16018341, -18.9213869 ,\n", - " -4.01992803, -6.65612782, 12.0433745 , 18.90866477]),\n", - " array([ -1.20588559, -2.62784333, 0.26987547, -1.18658091,\n", - " 1.34143673, 0.49391592, 4.27725975, -18.85657495,\n", - " -4.01621711, -6.65587029, 11.97964984, 18.91131125]),\n", - " array([ -1.20149485, -2.64663449, 0.26586512, -1.19323508,\n", - " 1.35335498, 0.51282764, 4.39074595, -18.79116201,\n", - " -4.01034702, -6.65416841, 11.91824749, 18.91172209]),\n", - " array([ -1.19699395, -2.66535971, 0.26186259, -1.19988616,\n", - " 1.36521416, 0.53173756, 4.50089224, -18.72522307,\n", - " -4.00253776, -6.65108065, 11.85918848, 18.90992031]),\n", - " array([ -1.19238602, -2.68401854, 0.2578696 , -1.20653282,\n", - " 1.37701666, 0.55064351, 4.6079387 , -18.65883264,\n", - " -3.99299133, -6.64666583, 11.80249073, 18.90594966]),\n", - " array([ -1.1876739 , -2.70261061, 0.2538877 , -1.21317381,\n", - " 1.38876482, 0.56954338, 4.71211493, -18.59206458,\n", - " -3.981892 , -6.6409827 , 11.74816933, 18.89987148]),\n", - " array([ -1.18286026, -2.7211356 , 0.2499183 , -1.2198079 ,\n", - " 1.40046106, 0.58843514, 4.81363995, -18.52499181,\n", - " -3.96940678, -6.63408944, 11.69623664, 18.8917618 ]),\n", - " array([ -1.17794754, -2.73959329, 0.24596261, -1.22643394,\n", - " 1.41210776, 0.60731685, 4.91272219, -18.45768616,\n", - " -3.95568604, -6.62604325, 11.64670241, 18.8817085 ]),\n", - " array([ -1.17293798, -2.7579835 , 0.24202175, -1.23305084,\n", - " 1.42370734, 0.62618666, 5.00955965, -18.39021811,\n", - " -3.94086424, -6.61689993, 11.59957387, 18.86980877]),\n", - " array([ -1.16783364, -2.77630616, 0.23809669, -1.23965755,\n", - " 1.43526219, 0.64504283, 5.10434009, -18.32265663,\n", - " -3.92506073, -6.60671355, 11.55485574, 18.85616668]),\n", - " array([ -1.1626364 , -2.79456123, 0.2341883 , -1.24625309,\n", - " 1.44677474, 0.66388372, 5.19724136, -18.25506895,\n", - " -3.90838059, -6.59553602, 11.5125503 , 18.84089104]),\n", - " array([ -1.15734797, -2.81274875, 0.23029739, -1.25283651,\n", - " 1.4582474 , 0.68270781, 5.28843167, -18.18752042,\n", - " -3.89091552, -6.58341689, 11.47265732, 18.82409345]),\n", - " array([ -1.1519699 , -2.83086882, 0.22642464, -1.25940691,\n", - " 1.46968258, 0.7015137 , 5.37807002, -18.1200743 ,\n", - " -3.87274469, -6.57040307, 11.43517406, 18.80588657]),\n", - " array([ -1.14650359, -2.84892162, 0.22257071, -1.26596345,\n", - " 1.48108267, 0.72030008, 5.46630662, -18.0527917 ,\n", - " -3.85393559, -6.55653861, 11.40009521, 18.78638261]),\n", - " array([ -1.14095031, -2.86690735, 0.21873616, -1.27250531,\n", - " 1.49245008, 0.73906577, 5.55328326, -17.98573138,\n", - " -3.83454486, -6.54186459, 11.36741283, 18.76569202]),\n", - " array([ -1.13531117, -2.8848263 , 0.21492155, -1.27903173,\n", - " 1.5037872 , 0.75780969, 5.63913374, -17.91894971,\n", - " -3.81461906, -6.52641898, 11.33711629, 18.74392241]),\n", - " array([ -1.12958719, -2.9026788 , 0.21112735, -1.28554197,\n", - " 1.51509639, 0.77653087, 5.72398434, -17.85250058,\n", - " -3.79419544, -6.51023656, 11.3091922 , 18.7211776 ]),\n", - " array([ -1.12377923, -2.92046523, 0.20735405, -1.29203532,\n", - " 1.52638002, 0.79522843, 5.80795417, -17.78643535,\n", - " -3.77330263, -6.49334892, 11.28362432, 18.69755689]),\n", - " array([ -1.11788808, -2.93818604, 0.20360209, -1.2985111 ,\n", - " 1.53764041, 0.81390158, 5.89115562, -17.72080278,\n", - " -3.75196134, -6.47578441, 11.26039356, 18.67315448]),\n", - " array([ -1.11191438, -2.95584169, 0.1998719 , -1.30496867,\n", - " 1.54887989, 0.83254964, 5.97369474, -17.65564908,\n", - " -3.73018491, -6.45756819, 11.23947785, 18.64805907]),\n", - " array([ -1.10585871, -2.9734327 , 0.19616392, -1.31140739,\n", - " 1.56010074, 0.85117199, 6.05567159, -17.59101786,\n", - " -3.70797996, -6.43872226, 11.22085217, 18.62235351]),\n", - " array([ -1.09972153, -2.99095965, 0.19247857, -1.31782666,\n", - " 1.57130523, 0.86976811, 6.13718062, -17.52695019,\n", - " -3.6853469 , -6.41926552, 11.2044885 , 18.59611466]),\n", - " array([ -1.09350322, -3.00842314, 0.18881629, -1.32422587,\n", - " 1.58249558, 0.88833752, 6.21831098, -17.46348462,\n", - " -3.66228045, -6.39921388, 11.19035585, 18.56941335]),\n", - " array([ -1.08720407, -3.0258238 , 0.18517752, -1.33060445,\n", - " 1.593674 , 0.90687984, 6.29914682, -17.40065727,\n", - " -3.6387701 , -6.37858033, 11.17842023, 18.5423144 ]),\n", - " array([ -1.08082431, -3.0431623 , 0.18156272, -1.33696183,\n", - " 1.60484265, 0.92539471, 6.37976763, -17.33850185,\n", - " -3.61480056, -6.35737503, 11.16864477, 18.51487679]),\n", - " array([ -1.07436406, -3.06043935, 0.17797237, -1.34329743,\n", - " 1.61600364, 0.94388187, 6.46024845, -17.27704981,\n", - " -3.59035221, -6.33560544, 11.1609897 , 18.48715385]),\n", - " array([ -1.0678234 , -3.07765568, 0.17440697, -1.34961071,\n", - " 1.62715905, 0.96234106, 6.54066014, -17.21633042,\n", - " -3.56540147, -6.31327642, 11.15541256, 18.45919359]),\n", - " array([ -1.06120233, -3.09481205, 0.17086705, -1.3559011 ,\n", - " 1.63831092, 0.9807721 , 6.62106961, -17.15637088,\n", - " -3.5399212 , -6.29039036, 11.15186821, 18.43103903]),\n", - " array([ -1.05450079, -3.11190924, 0.16735317, -1.36216805,\n", - " 1.64946123, 0.99917483, 6.70154 , -17.09719645,\n", - " -3.51388106, -6.26694726, 11.15030906, 18.40272869]),\n", - " array([ -1.04771866, -3.12894808, 0.16386592, -1.36841099,\n", - " 1.66061191, 1.01754913, 6.78213092, -17.03883061,\n", - " -3.48724788, -6.24294485, 11.15068521, 18.37429703]),\n", - " array([ -1.04085576, -3.14592937, 0.16040593, -1.37462937,\n", - " 1.67176486, 1.0358949 , 6.86289857, -16.98129521,\n", - " -3.45998602, -6.21837871, 11.15294467, 18.34577503]),\n", - " array([ -1.03391186, -3.16285398, 0.15697388, -1.38082261,\n", - " 1.68292189, 1.05421209, 6.94389588, -16.92461062,\n", - " -3.43205769, -6.19324235, 11.1570336 , 18.31719076]),\n", - " array([ -1.02688669, -3.17972278, 0.15357045, -1.38699014,\n", - " 1.69408479, 1.07250066, 7.02517272, -16.86879592,\n", - " -3.40342332, -6.16752728, 11.16289653, 18.2885701 ]),\n", - " array([ -1.01977991, -3.19653665, 0.15019641, -1.39313136,\n", - " 1.70525526, 1.0907606 , 7.10677596, -16.8138691 ,\n", - " -3.37404187, -6.14122316, 11.17047667, 18.25993737]),\n", - " array([ -1.01259116, -3.21329649, 0.14685254, -1.39924568,\n", - " 1.71643498, 1.10899192, 7.18874958, -16.75984723,\n", - " -3.34387118, -6.11431781, 11.17971622, 18.23131618]),\n", - " array([ -1.00532003, -3.23000324, 0.14353967, -1.40533248,\n", - " 1.72762554, 1.12719465, 7.27113481, -16.70674672,\n", - " -3.31286833, -6.08679731, 11.19055668, 18.2027302 ]),\n", - " array([ -0.99796606, -3.24665782, 0.14025868, -1.41139112,\n", - " 1.73882848, 1.14536885, 7.35397018, -16.6545835 ,\n", - " -3.28098991, -6.05864606, 11.20293923, 18.17420408]),\n", - " array([ -0.99052877, -3.2632612 , 0.13701049, -1.41742097,\n", - " 1.75004528, 1.16351461, 7.43729159, -16.6033733 ,\n", - " -3.24819243, -6.02984688, 11.21680509, 18.14576441]),\n", - " array([ -0.98300764, -3.27981433, 0.13379606, -1.42342135,\n", - " 1.76127738, 1.18163206, 7.52113242, -16.55313187,\n", - " -3.21443259, -6.00038103, 11.23209592, 18.11744073]),\n", - " array([ -0.97540211, -3.2963182 , 0.13061639, -1.42939158,\n", - " 1.77252613, 1.19972132, 7.60552354, -16.50387529,\n", - " -3.17966763, -5.97022829, 11.24875428, 18.08926667]),\n", - " array([ -0.96771162, -3.31277382, 0.12747253, -1.43533095,\n", - " 1.78379286, 1.2177826 , 7.69049341, -16.45562022,\n", - " -3.14385564, -5.93936709, 11.26672403, 18.06128114]),\n", - " array([ -0.95993555, -3.32918221, 0.12436558, -1.44123872,\n", - " 1.79507881, 1.23581613, 7.77606807, -16.40838423,\n", - " -3.10695584, -5.90777456, 11.28595087, 18.03352962]),\n", - " array([ -0.95207328, -3.34554439, 0.12129665, -1.44711415,\n", - " 1.80638519, 1.2538222 , 7.86227126, -16.36218613,\n", - " -3.06892885, -5.87542671, 11.30638281, 18.00606558]),\n", - " array([ -0.94412415, -3.36186144, 0.11826691, -1.45295645,\n", - " 1.81771316, 1.27180115, 7.94912436, -16.31704629,\n", - " -3.02973695, -5.84229863, 11.3279708 , 17.97895201]),\n", - " array([ -0.93608751, -3.37813443, 0.11527757, -1.45876481,\n", - " 1.82906383, 1.28975341, 8.03664652, -16.27298705,\n", - " -2.98934424, -5.80836474, 11.35066929, 17.95226302]),\n", - " array([ -0.92796265, -3.39436446, 0.11232985, -1.46453841,\n", - " 1.84043827, 1.3076795 , 8.12485463, -16.23003307,\n", - " -2.94771675, -5.7735992 , 11.37443694, 17.9260857 ]),\n", - " array([ -0.91974889, -3.41055267, 0.10942503, -1.47027639,\n", - " 1.8518375 , 1.32558002, 8.21376336, -16.18821182,\n", - " -2.90482249, -5.73797646, 11.39923741, 17.90052201]),\n", - " array([ -0.91144551, -3.42670023, 0.1065644 , -1.47597786,\n", - " 1.86326254, 1.34345571, 8.30338521, -16.14755395,\n", - " -2.86063128, -5.70147199, 11.42504029, 17.8756909 ]),\n", - " array([ -0.90305177, -3.44280832, 0.10374928, -1.48164192,\n", - " 1.87471437, 1.36130744, 8.39373051, -16.10809382,\n", - " -2.8151145 , -5.66406342, 11.45182213, 17.85173058]),\n", - " array([ -0.89456697, -3.45887819, 0.10098104, -1.48726766,\n", - " 1.88619393, 1.37913624, 8.48480745, -16.06987003,\n", - " -2.76824449, -5.62573198, 11.47956782, 17.82880102]),\n", - " array([ -0.88599034, -3.47491112, 0.09826104, -1.49285412,\n", - " 1.89770221, 1.39694333, 8.57662212, -16.03292592,\n", - " -2.7199937 , -5.58646462, 11.50827215, 17.80708664]),\n", - " array([ -0.87732117, -3.49090843, 0.09559071, -1.49840038,\n", - " 1.90924015, 1.41473013, 8.6691785 , -15.9973102 ,\n", - " -2.67033329, -5.54625688, 11.53794192, 17.7867992 ]),\n", - " array([ -0.86855869, -3.5068715 , 0.09297148, -1.50390549,\n", - " 1.92080875, 1.43249831, 8.76247853, -15.96307757,\n", - " -2.61923116, -5.5051169 , 11.56859856, 17.76818098]),\n", - " array([ -0.85970217, -3.52280179, 0.09040483, -1.50936856,\n", - " 1.93240903, 1.45024982, 8.85652211, -15.93028941,\n", - " -2.56664909, -5.46307088, 11.6002816 , 17.75150821]),\n", - " array([ -0.85075086, -3.53870081, 0.08789229, -1.51478874,\n", - " 1.94404208, 1.46798691, 8.95130716, -15.89901454,\n", - " -2.51253873, -5.42017068, 11.63305319, 17.73709481]),\n", - " array([ -0.84170403, -3.55457014, 0.08543546, -1.52016524,\n", - " 1.95570909, 1.48571221, 9.04682971, -15.86933005,\n", - " -2.45683595, -5.3765041 , 11.66700415, 17.72529648]),\n", - " array([ -0.83256094, -3.57041146, 0.083036 , -1.52549745,\n", - " 1.96741135, 1.50342872, 9.14308404, -15.84132222,\n", - " -2.39945305, -5.3322091 , 11.70226202, 17.71651514]),\n", - " array([ -0.82332088, -3.58622655, 0.08069573, -1.53078494,\n", - " 1.97915035, 1.52113993, 9.24006289, -15.81508767,\n", - " -2.34026801, -5.28749312, 11.73900192, 17.71120395]),\n", - " array([ -0.81398312, -3.60201728, 0.07841662, -1.5360276 ,\n", - " 1.99092781, 1.5388498 , 9.33775791, -15.79073465,\n", - " -2.27910963, -5.24265947, 11.77746107, 17.7098728 ]),\n", - " array([ -0.80454696, -3.61778567, 0.07620089, -1.54122574,\n", - " 2.00274577, 1.5565629 , 9.43616034, -15.76838471,\n", - " -2.21573713, -5.19814334, 11.81795841, 17.71309463]),\n", - " array([ -0.7950117 , -3.63353384, 0.07405108, -1.5463803 ,\n", - " 2.01460669, 1.57428441, 9.53526215, -15.74817491,\n", - " -2.14981217, -5.15456068, 11.86092106, 17.72151277]),\n", - " array([ -0.78537664, -3.6492641 , 0.07197021, -1.55149308,\n", - " 2.02651361, 1.59202026, 9.63505797, -15.73026065,\n", - " -2.08086044, -5.11277477, 11.90692001, 17.73584957]),\n", - " array([ -0.7756411 , -3.66497892, 0.069962 , -1.55656707,\n", - " 2.03847033, 1.60977718, 9.73554816, -15.71481977,\n", - " -2.00821903, -5.07398638, 11.95671807, 17.75691702]),\n", - " array([ -0.76580435, -3.68068098, 0.06803103, -1.56160692,\n", - " 2.05048166, 1.62756281, 9.83674367, -15.70205807,\n", - " -1.93096444, -5.03985592, 12.01133467, 17.78562993]),\n", - " array([ -0.75586568, -3.6963732 , 0.06618322, -1.56661959,\n", - " 2.0625538 , 1.64538583, 9.93867362, -15.69221705,\n", - " -1.84781445, -5.01266849, 12.07213285, 17.82302266]),\n", - " array([ -0.74582428, -3.71205878, 0.06442622, -1.57161515,\n", - " 2.07469473, 1.6632561 , 10.04139669, -15.68558442,\n", - " -1.75699514, -4.99555599, 12.14093657, 17.87027064]),\n", - " array([ -0.73567926, -3.72774129, 0.06277016, -1.57660794,\n", - " 2.08691492, 1.68118482, 10.14501794, -15.68250784,\n", - " -1.65606265, -4.99279451, 12.22018868, 17.928718 ]),\n", - " array([ -0.72542955, -3.7434247 , 0.06122849, -1.58161814,\n", - " 2.09922809, 1.69918473, 10.24971283, -15.68341159,\n", - " -1.54166879, -5.01019887, 12.31316445, 17.99991234]),\n", - " array([ -0.71507379, -3.75911352, 0.05981923, -1.58667378,\n", - " 2.11165235, 1.71727038, 10.35576069, -15.68881446,\n", - " -1.40926265, -5.05563633, 12.42425945, 18.08564747]),\n", - " array([ -0.7046102 , -3.77481286, 0.0585665 , -1.59181345,\n", - " 2.12421172, 1.73545839, 10.46359109, -15.69934335,\n", - " -1.25273017, -5.1396722 , 12.55937331, 18.18801368]),\n", - " array([ -0.69403635, -3.79052859, 0.0575025 , -1.59708977,\n", - " 2.13693812, 1.75376785, 10.57385272, -15.71573049,\n", - " -1.06399374, -5.27632381, 12.72640075, 18.30945497]),\n", - " array([ -0.6833488 , -3.80626735, 0.0566699 , -1.60257361,\n", - " 2.14987393, 1.77222068, 10.6875413 , -15.73876472,\n", - " -0.83260015, -5.48383705, 12.93581111, 18.4528369 ]),\n", - " array([ -0.67254248, -3.82203647, 0.0561248 , -1.60835918,\n", - " 2.1630753 , 1.79084223, 10.80632893, -15.76911665,\n", - " -0.54510808, -5.78557097, 13.20136469, 18.62154833]),\n", - " array([ -0.66160891, -3.8378433 , 0.05594214, -1.61457256,\n", - " 2.17661774, 1.80966195, 10.933567 , -15.80682908,\n", - " -0.18265352, -6.21337902, 13.5424454 , 18.81972159]),\n", - " array([ -0.65053258, -3.85369364, 0.05622943, -1.62139983,\n", - " 2.1906196 , 1.82871416, 11.07632757, -15.8503412 ,\n", - " 0.28729204, -6.82727353, 14.00185471, 19.05221265])],\n", - " [array([ -52.33562191, -66.65932781, -26.90708972, -54.25815874,\n", - " -83.01253149, -142.47197924]),\n", - " array([ -49.86179662, -65.06231854, -27.64420269, -51.10486444,\n", - " -71.45190134, -118.53929599]),\n", - " array([-47.64325056, -63.10105583, -28.06060798, -47.70654668,\n", - " -61.31702629, -97.58708553]),\n", - " array([-45.56654598, -60.85340585, -28.16723897, -44.19986009,\n", - " -52.41615179, -79.28037558]),\n", - " array([-43.5533942 , -58.38464846, -27.98535504, -40.68187455,\n", - " -44.5910181 , -63.32305895]),\n", - " array([-41.55253999, -55.74874417, -27.54244134, -37.22064912,\n", - " -37.70931187, -49.4521516 ]),\n", - " array([-39.53326917, -52.98995659, -26.8694662 , -33.86302897,\n", - " -31.65893967, -37.43323756]),\n", - " array([-37.48021354, -50.14452614, -25.99898374, -30.64038825,\n", - " -26.34370869, -27.05682698]),\n", - " array([-35.38919921, -47.24222532, -24.96377625, -27.57285112,\n", - " -21.68008726, -18.13540619]),\n", - " array([-33.26394021, -44.3077121 , -23.79585628, -24.67238537,\n", - " -17.59478591, -10.50100696]),\n", - " array([-31.11342238, -41.36165172, -22.52572398, -21.94506203,\n", - " -14.02295518, -4.00316399]),\n", - " array([-28.94985488, -38.42160913, -21.18181895, -19.39270023,\n", - " -10.90684046, 1.49283681]),\n", - " array([-26.78709075, -35.50273314, -19.79013033, -17.0140609 ,\n", - " -8.19477088, 6.10748969]),\n", - " array([-24.6394361 , -32.61826193, -18.37394185, -14.80571151,\n", - " -5.84038873, 9.94843066]),\n", - " array([-22.52078023, -29.77988263, -16.95369419, -12.76265275,\n", - " -3.80204939, 13.11166458]),\n", - " array([-20.44398951, -26.9979774 , -15.54694908, -10.87877448,\n", - " -2.04234062, 15.68268195]),\n", - " array([-18.4205151 , -24.28178479, -14.16844005, -9.14719019,\n", - " -0.52768431, 17.73748202]),\n", - " array([-16.46017149, -21.63950173, -12.83019387, -7.56048578,\n", - " 0.77200481, 19.3435133 ]),\n", - " array([-14.57104783, -19.0783465 , -11.54170724, -6.11090824,\n", - " 1.88362105, 20.5605387 ]),\n", - " array([-12.75951961, -16.60459861, -10.31016309, -4.7905123 ,\n", - " 2.8311416 , 21.4414305 ]),\n", - " array([-11.03033258, -14.22362748, -9.14067205, -3.59127709,\n", - " 3.63587957, 22.03289885]),\n", - " array([ -9.38673544, -11.93991811, -8.03652625, -2.50520137,\n", - " 4.31672034, 22.37615666]),\n", - " array([-7.83064227, -9.75709893, -6.99945418, -1.52438245, 4.89034364,\n", - " 22.50752391]),\n", - " array([-6.3628091 , -7.67797481, -6.02986803, -0.64108225, 5.37143238,\n", - " 22.45897404]),\n", - " array([-4.98301325, -5.70456636, -5.12709645, 0.15221735, 5.77286871,\n", - " 22.25862563]),\n", - " array([-3.69022646, -3.83815544, -4.28959828, 0.86276875, 6.10591744,\n", - " 21.93118274]),\n", - " array([-2.48277623, -2.07933617, -3.5151544 , 1.49752152, 6.38039668,\n", - " 21.49832753]),\n", - " array([-1.35849143, -0.42807007, -2.8010364 , 2.06309341, 6.60483582,\n", - " 20.97906899]),\n", - " array([-0.31483034, 1.11625604, -2.14415207, 2.56574884, 6.78662097,\n", - " 20.39005174]),\n", - " array([ 0.65100957, 2.55477087, -1.54116861, 3.01138451, 6.93212802,\n", - " 19.74582872]),\n", - " array([ 1.54199953, 3.88905959, -0.98861517, 3.4055213 , 7.04684374,\n", - " 19.05910174]),\n", - " array([ 2.36120424, 5.12110591, -0.48296658, 3.75330205, 7.13547542,\n", - " 18.34093334]),\n", - " array([ 3.11172176, 6.25323631, -0.02071061, 4.05949428, 7.20204958,\n", - " 17.60093346]),\n", - " array([ 3.79663696, 7.28806726, 0.40159934, 4.32849729, 7.25000052,\n", - " 16.84742402]),\n", - " array([ 4.4189866 , 8.22845579, 0.78730369, 4.5643528 , 7.28224917,\n", - " 16.08758417]),\n", - " array([ 4.98173437, 9.07745379, 1.13960644, 4.77075851, 7.30127324,\n", - " 15.32757869]),\n", - " array([ 5.48775411, 9.83826632, 1.4615535 , 4.95108379, 7.30916915,\n", - " 14.57267175]),\n", - " array([ 5.93981979, 10.51421394, 1.75601782, 5.1083869 , 7.30770656,\n", - " 13.82732793]),\n", - " array([ 6.34060067, 11.10869891, 2.02569021, 5.24543335, 7.29837613,\n", - " 13.09530212]),\n", - " array([ 6.69266075, 11.62517528, 2.27307448, 5.36471461, 7.28243126,\n", - " 12.37971969]),\n", - " array([ 6.99846117, 12.06712268, 2.50048601, 5.46846703, 7.26092422,\n", - " 11.68314815]),\n", - " array([ 7.26036495, 12.43802341, 2.71005309, 5.55869048, 7.23473748,\n", - " 11.00766133]),\n", - " array([ 7.48064319, 12.74134284, 2.90372017, 5.63716654, 7.2046106 ,\n", - " 10.35489687]),\n", - " array([ 7.66148224, 12.98051268, 3.08325269, 5.70547593, 7.17116326,\n", - " 9.72610785]),\n", - " array([ 7.80499133, 13.15891688, 3.25024301, 5.76501508, 7.13491483,\n", - " 9.12220918]),\n", - " array([ 7.91321031, 13.27988003, 3.40611719, 5.81701182, 7.09630093,\n", - " 8.54381922]),\n", - " array([ 7.98811719, 13.34665779, 3.5521423 , 5.86253999, 7.05568739,\n", - " 7.99129718]),\n", - " array([ 8.03163528, 13.36242931, 3.68943415, 5.90253304, 7.01338186,\n", - " 7.46477671]),\n", - " array([ 8.04563976, 13.33029133, 3.81896535, 5.93779668, 6.96964341,\n", - " 6.96419602]),\n", - " array([ 8.03196357, 13.25325369, 3.94157341, 5.96902045, 6.92469051,\n", - " 6.48932488]),\n", - " array([ 7.9924025 , 13.13423616, 4.0579691 , 5.99678842, 6.87870749,\n", - " 6.03978875]),\n", - " array([ 7.92871958, 12.97606636, 4.16874473, 6.02158903, 6.83184975,\n", - " 5.61509041]),\n", - " array([ 7.84264851, 12.78147854, 4.27438249, 6.04382405, 6.78424799,\n", - " 5.21462918]),\n", - " array([ 7.73589637, 12.55311324, 4.37526282, 6.0638169 , 6.73601154,\n", - " 4.83771816]),\n", - " array([ 7.61014546, 12.29351747, 4.47167264, 6.08182024, 6.68723103,\n", - " 4.4835994 ]),\n", - " array([ 7.46705445, 12.00514545, 4.56381362, 6.09802302, 6.63798043,\n", - " 4.15145759]),\n", - " array([ 7.30825872, 11.69035982, 4.65181027, 6.11255694, 6.58831875,\n", - " 3.84043199]),\n", - " array([ 7.13537007, 11.35143303, 4.73571802, 6.12550256, 6.53829127,\n", - " 3.54962717]),\n", - " array([ 6.9499758 , 10.99054909, 4.81553115, 6.13689489, 6.48793059,\n", - " 3.2781224 ]),\n", - " array([ 6.75363732, 10.60980538, 4.89119051, 6.14672866, 6.43725748,\n", - " 3.02498004]),\n", - " array([ 6.54788813, 10.21121463, 4.96259118, 6.15496333, 6.38628163,\n", - " 2.78925294]),\n", - " array([6.3342316 , 9.79670696, 5.02958987, 6.16152774, 6.33500222,\n", - " 2.56999094]),\n", - " array([6.11413827, 9.36813186, 5.09201213, 6.16632454, 6.28340854,\n", - " 2.36624668]),\n", - " array([5.88904299, 8.92726026, 5.14965924, 6.16923438, 6.23148063,\n", - " 2.17708075]),\n", - " array([5.6603419 , 8.47578651, 5.20231494, 6.17011992, 6.17918975,\n", - " 2.00156622]),\n", - " array([5.42938926, 8.01533035, 5.24975175, 6.16882955, 6.12649907,\n", - " 1.83879274]),\n", - " array([5.19749431, 7.54743885, 5.29173699, 6.16520097, 6.07336427,\n", - " 1.68787012]),\n", - " array([4.96591821, 7.07358822, 5.32803847, 6.15906455, 6.01973415,\n", - " 1.54793161]),\n", - " array([4.73587101, 6.59518573, 5.35842971, 6.15024646, 5.96555132,\n", - " 1.4181368 ]),\n", - " array([4.50850887, 6.11357145, 5.38269484, 6.13857161, 5.91075284,\n", - " 1.29767421]),\n", - " array([4.28493147, 5.63002003, 5.40063304, 6.12386633, 5.85527093,\n", - " 1.18576374]),\n", - " array([4.06617971, 5.1457425 , 5.4120625 , 6.10596088, 5.79903357,\n", - " 1.08165873]),\n", - " array([3.85323366, 4.66188801, 5.41682403, 6.08469166, 5.74196516,\n", - " 0.98464792]),\n", - " array([3.64701095, 4.17954563, 5.41478413, 6.05990319, 5.68398705,\n", - " 0.89405723]),\n", - " array([3.44836539, 3.69974607, 5.40583761, 6.03144986, 5.62501811,\n", - " 0.80925126]),\n", - " array([3.25808605, 3.22346359, 5.38990983, 5.99919739, 5.5649751 ,\n", - " 0.72963479]),\n", - " array([3.07689666, 2.75161777, 5.36695843, 5.963024 , 5.50377309,\n", - " 0.65465391]),\n", - " array([2.90545542, 2.28507539, 5.33697462, 5.92282138, 5.44132566,\n", - " 0.58379718]),\n", - " array([2.74435512, 1.82465233, 5.29998414, 5.87849529, 5.37754504,\n", - " 0.51659649]),\n", - " array([2.59412369, 1.37111547, 5.25604769, 5.82996596, 5.31234215,\n", - " 0.45262783]),\n", - " array([2.455225 , 0.92518457, 5.20526106, 5.7771682 , 5.24562645,\n", - " 0.39151182]),\n", - " array([2.32806001, 0.48753425, 5.1477549 , 5.72005122, 5.17730577,\n", - " 0.33291412]),\n", - " array([2.21296823, 0.05879575, 5.08369405, 5.6585782 , 5.10728585,\n", - " 0.27654558]),\n", - " array([ 2.11022937, -0.36044114, 5.01327666, 5.59272568, 5.03546994,\n", - " 0.22216224]),\n", - " array([ 2.02006529, -0.76962634, 4.93673287, 5.52248256, 4.96175816,\n", - " 0.1695651 ]),\n", - " array([ 1.9426421 , -1.16824779, 4.85432333, 5.44784904, 4.8860468 ,\n", - " 0.11859959]),\n", - " array([ 1.87807247, -1.55582988, 4.76633734, 5.36883526, 4.80822753,\n", - " 0.06915493]),\n", - " array([ 1.82641807, -1.93193194, 4.67309075, 5.28545979, 4.7281866 ,\n", - " 0.02116307]),\n", - " array([ 1.78769208, -2.2961469 , 4.57492363, 5.19774795, 4.64580389,\n", - " -0.02540251]),\n", - " array([ 1.76186189, -2.64810013, 4.47219767, 5.10573001, 4.5609521 ,\n", - " -0.07052837]),\n", - " array([ 1.74885176, -2.98744831, 4.36529337, 5.00943931, 4.47349586,\n", - " -0.11416299]),\n", - " array([ 1.74854557, -3.31387854, 4.25460703, 4.90891029, 4.38329101,\n", - " -0.15621897]),\n", - " array([ 1.76078957, -3.62710753, 4.14054746, 4.80417657, 4.29018395,\n", - " -0.19657552]),\n", - " array([ 1.78539513, -3.92688085, 4.02353256, 4.69526902, 4.19401125,\n", - " -0.23508148]),\n", - " array([ 1.82214137, -4.21297232, 3.90398574, 4.58221402, 4.09459948,\n", - " -0.27155856]),\n", - " array([ 1.87077783, -4.48518333, 3.78233212, 4.46503185, 3.99176538,\n", - " -0.30580508]),\n", - " array([ 1.93102694, -4.74334218, 3.65899463, 4.34373536, 3.88531646,\n", - " -0.33760019]),\n", - " array([ 2.0025863 , -4.98730328, 3.53439006, 4.21832906, 3.77505213,\n", - " -0.36670842]),\n", - " array([ 2.0851309 , -5.21694618, 3.40892502, 4.08880864, 3.66076534,\n", - " -0.39288483]),\n", - " array([ 2.17831489, -5.43217434, 3.28299196, 3.9551611 , 3.54224502,\n", - " -0.41588051]),\n", - " array([ 2.28177313, -5.63291357, 3.15696529, 3.81736561, 3.41927926,\n", - " -0.43544873]),\n", - " array([ 2.39512225, -5.81911007, 3.03119767, 3.67539521, 3.29165931,\n", - " -0.45135138]),\n", - " array([ 2.51796124, -5.99072798, 2.90601666, 3.52921956, 3.15918463,\n", - " -0.463366 ]),\n", - " array([ 2.64987133, -6.14774646, 2.78172186, 3.37880871, 3.02166895,\n", - " -0.47129322]),\n", - " array([ 2.79041519, -6.29015628, 2.65858257, 3.22413823, 2.87894737,\n", - " -0.47496445]),\n", - " array([ 2.93913519, -6.4179559 , 2.53683639, 3.06519564, 2.73088464,\n", - " -0.47425003]),\n", - " array([ 3.09555063, -6.53114718, 2.41668874, 2.90198828, 2.57738443,\n", - " -0.46906734]),\n", - " array([ 3.25915386, -6.6297309 , 2.29831367, 2.73455263, 2.41839969,\n", - " -0.45938907]),\n", - " array([ 3.4294051 , -6.71370216, 2.18185605, 2.56296509, 2.25394385,\n", - " -0.44525122]),\n", - " array([ 3.60572597, -6.78304607, 2.06743549, 2.38735399, 2.08410272,\n", - " -0.4267606 ]),\n", - " array([ 3.78749167, -6.83773403, 1.95515193, 2.20791269, 1.90904669,\n", - " -0.40410168]),\n", - " array([ 3.97402193, -6.87772092, 1.84509329, 2.02491349, 1.72904296,\n", - " -0.37754224]),\n", - " array([ 4.16457088, -6.90294374, 1.73734487, 1.8387216 , 1.54446718,\n", - " -0.34743757]),\n", - " array([ 4.35831631, -6.91332201, 1.63200064, 1.64980888, 1.35581392,\n", - " -0.31423263]),\n", - " array([ 4.55434867, -6.90876048, 1.52917599, 1.45876616, 1.16370522,\n", - " -0.27846184]),\n", - " array([ 4.75166081, -6.88915435, 1.42902147, 1.26631351, 0.96889646,\n", - " -0.24074598]),\n", - " array([ 4.94913916, -6.85439735, 1.33173685, 1.07330712, 0.77227859,\n", - " -0.2017856 ]),\n", - " array([ 5.14555779, -6.80439259, 1.23758446, 0.88074165, 0.57487576,\n", - " -0.16235082]),\n", - " array([ 5.33957662, -6.73906614, 1.14690061, 0.6897469 , 0.3778377 ,\n", - " -0.12326703]),\n", - " array([ 5.52974541, -6.65838282, 1.06010364, 0.50157746, 0.18242577,\n", - " -0.08539643]),\n", - " array([ 5.71451513, -6.56236356, 0.97769687, 0.31759443, -0.01000771,\n", - " -0.04961559]),\n", - " array([ 5.89225835, -6.45110321, 0.90026481, 0.13923841, -0.19804715,\n", - " -0.01678936]),\n", - " array([ 6.06130005, -6.32478781, 0.82846078, -0.03200656, -0.38024844,\n", - " 0.01225827]),\n", - " array([ 6.21995978, -6.18370961, 0.76298449, -0.19465785, -0.55518021,\n", - " 0.03677506]),\n", - " array([ 6.3666056 , -6.02827873, 0.70454855, -0.34728707, -0.72147039,\n", - " 0.05611212]),\n", - " array([ 6.49971915, -5.85902974, 0.65383341, -0.48857901, -0.87785669,\n", - " 0.06975437]),\n", - " array([ 6.61797022, -5.67662234, 0.61143158, -0.61739433, -1.02323851,\n", - " 0.07734801]),\n", - " array([ 6.72029774, -5.48183525, 0.57778294, -0.73283268, -1.15672779,\n", - " 0.07872325]),\n", - " array([ 6.80599254, -5.27555318, 0.55310472, -0.83429208, -1.27769542,\n", - " 0.0739103 ]),\n", - " array([ 6.87477581, -5.05874743, 0.53732127, -0.92152034, -1.38581001,\n", - " 0.0631472 ]),\n", - " array([ 6.92686606, -4.8324514 , 0.5300001 , -0.9946536 , -1.48106546,\n", - " 0.04687834]),\n", - " array([ 6.96302632, -4.59773271, 0.53030213, -1.0542378 , -1.56379424,\n", - " 0.02574323]),\n", - " array([ 6.98458379e+00, -4.35566458e+00, 5.36954030e-01, -1.10122923e+00,\n", - " -1.63466406e+00, 5.55777308e-04]),\n", - " array([ 6.99341481, -4.10729885, 0.54825028, -1.13697179, -1.69465618,\n", - " -0.0277251 ]),\n", - " array([ 6.9918907 , -3.85364338, 0.56209038, -1.16315014, -1.7450254 ,\n", - " -0.0580318 ]),\n", - " array([ 6.98278309, -3.59564593, 0.57605378, -1.18172008, -1.78724302,\n", - " -0.08922936]),\n", - " array([ 6.96913209, -3.334186 , 0.58751072, -1.1948195 , -1.82292561,\n", - " -0.12015933]),\n", - " array([ 6.95408484, -3.07007503, 0.59376269, -1.20466555, -1.85375422,\n", - " -0.14968391]),\n", - " array([ 6.94071673, -2.80406442, 0.59220157, -1.21344511, -1.88138957,\n", - " -0.17672812]),\n", - " array([ 6.93185053, -2.53685974, 0.58047294, -1.22320684, -1.90738942,\n", - " -0.20031814]),\n", - " array([ 6.92989007, -2.26913873, 0.55662783, -1.23576312, -1.93313458,\n", - " -0.21961442]),\n", - " array([ 6.93668419, -2.00157024, 0.51924695, -1.25260927, -1.95976886,\n", - " -0.23393853]),\n", - " array([ 6.95343388, -1.73483135, 0.46752496, -1.27486597, -1.98815736,\n", - " -0.24279306]),\n", - " array([ 6.98065011, -1.46962003, 0.4013067 , -1.30324835, -2.01886515,\n", - " -0.24587415]),\n", - " array([ 7.01816458, -1.2066619 , 0.32107317, -1.33806248, -2.05215693,\n", - " -0.24307645]),\n", - " array([ 7.06518905, -0.94670995, 0.22788113, -1.37922765, -2.08801567,\n", - " -0.23449049]),\n", - " array([ 7.12041449, -0.69053767, 0.12326497, -1.42632031, -2.12617722,\n", - " -0.22039253]),\n", - " array([ 7.1821374 , -0.43892647, 0.00911335, -1.47863432, -2.16617627,\n", - " -0.20122747]),\n", - " array([ 7.24839949, -0.19264898, -0.11246603, -1.53525094, -2.20739892,\n", - " -0.17758551]),\n", - " array([ 7.31712741, 0.04754974, -0.23928018, -1.59511251, -2.24913712,\n", - " -0.15017381]),\n", - " array([ 7.38626102, 0.28097116, -0.36917222, -1.65709394, -2.29064067,\n", - " -0.11978457]),\n", - " array([ 7.45386196, 0.50698071, -0.50012241, -1.7200674 , -2.33116375,\n", - " -0.08726132]),\n", - " array([ 7.51819755, 0.72502225, -0.63032438, -1.78295708, -2.37000356,\n", - " -0.05346534]),\n", - " array([ 7.57779833, 0.93462871, -0.75823523, -1.84478211, -2.4065301 ,\n", - " -0.01924376]),\n", - " array([ 7.63149017, 1.13542865, -0.882601 , -1.90468702, -2.4402067 ,\n", - " 0.01459886]),\n", - " array([ 7.67840396, 1.32714856, -1.00246077, -1.96196028, -2.47060205,\n", - " 0.04732453]),\n", - " array([ 7.71796697, 1.50961148, -1.1171336 , -2.01604208, -2.49739449,\n", - " 0.07828052]),\n", - " array([ 7.74988042, 1.68273238, -1.22619326, -2.06652322, -2.52037009,\n", - " 0.10691244]),\n", - " array([ 7.77408785, 1.84651103, -1.32943503, -2.11313677, -2.53941586,\n", - " 0.13277187]),\n", - " array([ 7.79073818, 2.00102316, -1.4268386 , -2.15574481, -2.55450954,\n", - " 0.1555189 ]),\n", - " array([ 7.80014695, 2.1464105 , -1.5185303 , -2.19432179, -2.56570724,\n", - " 0.17492016]),\n", - " array([ 7.8027582 , 2.28287039, -1.60474691, -2.22893615, -2.57313002,\n", - " 0.1908433 ]),\n", - " array([ 7.79910886, 2.41064538, -1.68580281, -2.25973165, -2.57695032,\n", - " 0.20324858]),\n", - " array([ 7.78979686, 2.53001328, -1.76206127, -2.28690918, -2.57737892,\n", - " 0.21217853]),\n", - " array([ 7.77545352, 2.64127789, -1.83391036, -2.31070997, -2.57465291,\n", - " 0.21774645]),\n", - " array([ 7.75672042, 2.7447606 , -1.90174354, -2.33140053, -2.56902489,\n", - " 0.22012428]),\n", - " array([ 7.73423073, 2.84079302, -1.96594454, -2.34925967, -2.56075374,\n", - " 0.21953063]),\n", - " array([ 7.70859457, 2.92971056, -2.02687623, -2.36456763, -2.55009688,\n", - " 0.21621917]),\n", - " array([ 7.68038806, 3.01184708, -2.08487291, -2.37759735, -2.53730403,\n", - " 0.21046789]),\n", - " array([ 7.65014557, 3.08753046, -2.14023544, -2.38860775, -2.52261241,\n", - " 0.20256934]),\n", - " array([ 7.61835462, 3.15707908, -2.19322873, -2.39783872, -2.50624323,\n", - " 0.19282203]),\n", - " array([ 7.585453 , 3.22079917, -2.24408111, -2.40550785, -2.48839933,\n", - " 0.18152297]),\n", - " array([ 7.55182771, 3.27898277, -2.29298504, -2.41180844, -2.46926384,\n", - " 0.16896155]),\n", - " array([ 7.51781523, 3.33190642, -2.34009894, -2.41690868, -2.44899961,\n", - " 0.15541443]),\n", - " array([ 7.48370293, 3.37983037, -2.38554968, -2.42095179, -2.42774946,\n", - " 0.14114163]),\n", - " array([ 7.44973117, 3.42299822, -2.42943559, -2.42405688, -2.40563681,\n", - " 0.12638359]),\n", - " array([ 7.41609605, 3.46163697, -2.47182966, -2.42632033, -2.38276689,\n", - " 0.11135912]),\n", - " array([ 7.38295241, 3.49595737, -2.51278289, -2.42781766, -2.35922815,\n", - " 0.09626413]),\n", - " array([ 7.35041715, 3.52615445, -2.55232757, -2.42860559, -2.33509393,\n", - " 0.08127107]),\n", - " array([ 7.31857256, 3.55240836, -2.59048052, -2.42872426, -2.3104242 ,\n", - " 0.06652895]),\n", - " array([ 7.28746963, 3.57488518, -2.62724598, -2.42819957, -2.28526743,\n", - " 0.05216377]),\n", - " array([ 7.25713136, 3.59373796, -2.66261848, -2.42704538, -2.25966237,\n", - " 0.03827945]),\n", - " array([ 7.22755588, 3.60910765, -2.69658527, -2.4252658 , -2.2336398 ,\n", - " 0.0249589 ]),\n", - " array([ 7.1987194 , 3.6211242 , -2.72912859, -2.42285721, -2.20722423,\n", - " 0.01226551]),\n", - " array([ 7.17057903e+00, 3.62990755e+00, -2.76022761e+00, -2.41981019e+00,\n", - " -2.18043539e+00, 2.44639452e-04]),\n", - " array([ 7.14307531, 3.63556857, -2.78986012, -2.41611129, -2.15328967,\n", - " -0.01107473]),\n", - " array([ 7.11613457, 3.63821002, -2.81800395, -2.41174457, -2.12580133,\n", - " -0.02167824]),\n", - " array([ 7.08967107, 3.63792742, -2.84463815, -2.40669295, -2.0979836 ,\n", - " -0.03156447]),\n", - " array([ 7.06358894, 3.6348098 , -2.86974393, -2.40093938, -2.06984958,\n", - " -0.0407432 ]),\n", - " array([ 7.03778386, 3.62894043, -2.8933054 , -2.39446783, -2.041413 ,\n", - " -0.04923377]),\n", - " array([ 7.01214456, 3.62039744, -2.91531013, -2.38726401, -2.01268885,\n", - " -0.05706344]),\n", - " array([ 6.98655419, 3.6092544 , -2.93574946, -2.37931603, -1.98369376,\n", - " -0.06426588]),\n", - " array([ 6.96089142, 3.59558075, -2.95461882, -2.37061484, -1.95444638,\n", - " -0.07087977]),\n", - " array([ 6.93503142, 3.57944223, -2.97191772, -2.36115447, -1.92496753,\n", - " -0.0769474 ]),\n", - " array([ 6.9088467 , 3.56090119, -2.98764979, -2.35093227, -1.89528025,\n", - " -0.08251349]),\n", - " array([ 6.88220779, 3.54001688, -3.00182265, -2.33994887, -1.86540979,\n", - " -0.08762401]),\n", - " array([ 6.85498381, 3.51684565, -3.01444772, -2.32820818, -1.83538349,\n", - " -0.09232516]),\n", - " array([ 6.82704292, 3.49144108, -3.02553994, -2.31571721, -1.80523053,\n", - " -0.0966624 ]),\n", - " array([ 6.79825267, 3.46385414, -3.0351175 , -2.30248584, -1.7749817 ,\n", - " -0.10067963]),\n", - " array([ 6.76848026, 3.43413325, -3.04320144, -2.28852653, -1.74466904,\n", - " -0.10441836]),\n", - " array([ 6.73759276, 3.40232429, -3.04981537, -2.27385399, -1.71432547,\n", - " -0.10791702]),\n", - " array([ 6.70545722, 3.36847069, -3.05498498, -2.25848479, -1.68398443,\n", - " -0.11121028]),\n", - " array([ 6.67194076, 3.33261338, -3.05873774, -2.24243694, -1.65367936,\n", - " -0.11432853]),\n", - " array([ 6.63691056, 3.29479078, -3.06110243, -2.22572949, -1.62344332,\n", - " -0.1172972 ]),\n", - " array([ 6.60023387, 3.25503878, -3.06210881, -2.20838207, -1.59330853,\n", - " -0.12013634]),\n", - " array([ 6.56177796, 3.21339071, -3.0617872 , -2.19041444, -1.56330586,\n", - " -0.12286004]),\n", - " array([ 6.52141004, 3.16987732, -3.06016812, -2.17184608, -1.53346441,\n", - " -0.12547599]),\n", - " array([ 6.47899715, 3.12452669, -3.05728193, -2.1526957 , -1.50381106,\n", - " -0.12798491]),\n", - " array([ 6.43440602, 3.07736426, -3.05315853, -2.13298089, -1.47437 ,\n", - " -0.13038011]),\n", - " array([ 6.38750293, 3.02841274, -3.04782698, -2.11271766, -1.44516235,\n", - " -0.13264689]),\n", - " array([ 6.33815354, 2.9776921 , -3.04131523, -2.09192006, -1.4162057 ,\n", - " -0.13476202]),\n", - " array([ 6.28622267, 2.92521956, -3.03364984, -2.07059983, -1.38751375,\n", - " -0.13669314]),\n", - " array([ 6.2315741 , 2.87100953, -3.02485566, -2.04876608, -1.35909593,\n", - " -0.13839805]),\n", - " array([ 6.1740703 , 2.81507362, -3.01495558, -2.02642492, -1.33095701,\n", - " -0.13982403]),\n", - " array([ 6.11357212, 2.7574206 , -3.00397025, -2.00357923, -1.3030968 ,\n", - " -0.14090704]),\n", - " array([ 6.0499385 , 2.69805643, -2.99191782, -1.98022842, -1.27550979,\n", - " -0.14157084]),\n", - " array([ 5.98302601, 2.6369842 , -2.9788136 , -1.95636817, -1.2481848 ,\n", - " -0.14172605]),\n", - " array([ 5.91268841, 2.57420417, -2.96466977, -1.93199036, -1.2211047 ,\n", - " -0.14126906]),\n", - " array([ 5.83877612, 2.50971375, -2.94949495, -1.9070829 , -1.194246 ,\n", - " -0.14008089]),\n", - " array([ 5.76113551, 2.44350746, -2.93329382, -1.88162977, -1.16757857,\n", - " -0.13802588]),\n", - " array([ 5.67960814, 2.375577 , -2.9160665 , -1.85561107, -1.14106512,\n", - " -0.13495032]),\n", - " array([ 5.59402975, 2.30591118, -2.89780788, -1.82900322, -1.11466083,\n", - " -0.13068087]),\n", - " array([ 5.50422913, 2.23449589, -2.87850674, -1.80177934, -1.08831271,\n", - " -0.12502289]),\n", - " array([ 5.41002664, 2.16131412, -2.85814457, -1.77390989, -1.06195892,\n", - " -0.11775858]),\n", - " array([ 5.31123248, 2.0863458 , -2.83669407, -1.7453635 , -1.03552781,\n", - " -0.10864502]),\n", - " array([ 5.20764456, 2.00956776, -2.81411711, -1.71610838, -1.00893678,\n", - " -0.09741197]),\n", - " array([ 5.0990458 , 1.9309534 , -2.79036211, -1.68611415, -0.98209066,\n", - " -0.08375949]),\n", - " array([ 4.98520101, 1.85047235, -2.76536047, -1.65535454, -0.95487959,\n", - " -0.06735541]),\n", - " array([ 4.86585291, 1.76808977, -2.73902177, -1.62381106, -0.92717618,\n", - " -0.04783259]),\n", - " array([ 4.74071739, 1.68376521, -2.71122737, -1.59147818, -0.89883163,\n", - " -0.02478587]),\n", - " array([ 4.60947781e+00, 1.59745075e+00, -2.68182175e+00, -1.55837035e+00,\n", - " -8.69670515e-01, 2.23110239e-03]),\n", - " array([ 4.47177814, 1.50908799, -2.65060074, -1.52453167, -0.83948367,\n", - " 0.0337094 ]),\n", - " array([ 4.32721496, 1.41860308, -2.61729554, -1.49004898, -0.80801854,\n", - " 0.07018862]),\n", - " array([ 4.1753282 , 1.325899 , -2.58155094, -1.45506975, -0.7749661 ,\n", - " 0.11226097]),\n", - " array([ 4.01559077, 1.2308432 , -2.5428955 , -1.41982605, -0.73994301,\n", - " 0.16057584]),\n", - " array([ 3.8473974 , 1.13324856, -2.50070069, -1.38466702, -0.70246751,\n", - " 0.2158447 ]),\n", - " array([ 3.67005332, 1.03284432, -2.45412485, -1.35010217, -0.66192663,\n", - " 0.27884666]),\n", - " array([ 3.48276368, 0.92923281, -2.40203646, -1.3168596 , -0.61753192,\n", - " 0.35043464]),\n", - " array([ 3.28462528, 0.82182713, -2.34291 , -1.28596362, -0.56825955,\n", - " 0.43154267]),\n", - " array([ 3.07462255, 0.70976532, -2.27468664, -1.25883928, -0.51276978,\n", - " 0.52319461]),\n", - " array([ 2.85163103, 0.59180017, -2.19459421, -1.237454 , -0.44929893,\n", - " 0.62651555]),\n", - " array([ 2.61443471, 0.46617382, -2.09892828, -1.22451277, -0.37551555,\n", - " 0.74274775]),\n", - " array([ 2.36177336, 0.33050882, -1.98281654, -1.22373052, -0.2883301 ,\n", - " 0.87327516]),\n", - " array([ 2.0924633 , 0.18179214, -1.84002523, -1.24020707, -0.18364463,\n", - " 1.01966444]),\n", - " array([ 1.80570754, 0.01661621, -1.66290677, -1.28089393, -0.05602076,\n", - " 1.18373752]),\n", - " array([ 1.50191892, -0.16796766, -1.44255224, -1.35498021, 0.10178605,\n", - " 1.36770709]),\n", - " array([ 1.18503942, -0.37207516, -1.16881095, -1.4736232 , 0.29960962,\n", - " 1.57444144]),\n", - " array([ 0.86953931, -0.58633231, -0.82798614, -1.64831962, 0.55190896,\n", - " 1.80801137]),\n", - " array([ 0.60030872, -0.77390263, -0.38975414, -1.89159215, 0.88828811,\n", - " 2.07472138]),\n", - " array([ 0.4764655 , -0.84946206, 0.22134384, -2.23923687, 1.44338066,\n", - " 2.37952862])],\n", - " True)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-4-f74b548defae>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# Solving it with the DDP algorithm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mddp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msolve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/ddp.pyc\u001b[0m in \u001b[0;36msolve\u001b[0;34m(self, maxiter, init_xs, init_us, isFeasible, regInit)\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 104\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomputeDirection\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecalc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrecalc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 105\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mArithmeticError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0mrecalc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/ddp.pyc\u001b[0m in \u001b[0;36mcomputeDirection\u001b[0;34m(self, recalc)\u001b[0m\n\u001b[1;32m 59\u001b[0m \"\"\"\n\u001b[1;32m 60\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrecalc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalc\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 62\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackwardPass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mproblem\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mVx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/ddp.pyc\u001b[0m in \u001b[0;36mcalc\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 41\u001b[0m \"\"\" Compute the tangent (LQR) model.\n\u001b[1;32m 42\u001b[0m \"\"\"\n\u001b[0;32m---> 43\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcost\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mproblem\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mus\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 44\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0misFeasible\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0;31m# Gap store the state defect from the guess to feasible (rollout) trajectory, i.e.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/shooting.pyc\u001b[0m in \u001b[0;36mcalcDiff\u001b[0;34m(self, xs, us)\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mus\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrunningModels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrunningDatas\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxs\u001b[0m\u001b[0;34m[\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[0mus\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 33\u001b[0;31m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 34\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mterminalModel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mterminalData\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxs\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[1;32m 35\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcost\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrunningDatas\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mterminalData\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/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/integrated_action.pyc\u001b[0m in \u001b[0;36mcalcDiff\u001b[0;34m(self, data, x, u, recalc)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrecalc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 41\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdifferential\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdifferential\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecalc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 42\u001b[0m \u001b[0mdxnext_dx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdxnext_ddx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mState\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mJintegrate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0mda_dx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mda_du\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdifferential\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdifferential\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFu\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/differential_action.pyc\u001b[0m in \u001b[0;36mcalcDiff\u001b[0;34m(self, data, x, u, recalc)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFu\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[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMinv\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomputeRNEADerivatives\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0mnv\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMinv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtau_dq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnv\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMinv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtau_dv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] } ], "source": [ @@ -1388,16 +131,7 @@ "cell_type": "code", "execution_count": 9, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/diagnostic.py:75: DeprecatedWarning: Call to deprecated function initDisplay. Use initViewer\n", - " robot.initDisplay(loadModel=True)\n" - ] - } - ], + "outputs": [], "source": [ "from crocoddyl.diagnostic import displayTrajectory\n", "\n", @@ -1435,7 +169,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.16" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/examples/notebooks/kinton_flying_base.ipynb b/examples/notebooks/kinton_flying_base.ipynb index c37bf320d9121f118a33155357499842492c37e0..ce686bdafb8a3e44c36a45a8a2ac07b3b93b4187 100644 --- a/examples/notebooks/kinton_flying_base.ipynb +++ b/examples/notebooks/kinton_flying_base.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -112,11 +112,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-10-b175ebf9a54b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdifferential\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquasiStatic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdifferential\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefaultState\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mIntegratedActionModelEuler\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m for m, d in zip(fddp.problem.runningModels, fddp.problem.runningDatas)]\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mxs0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mproblem\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialState\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfddp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodels\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 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/flying.pyc\u001b[0m in \u001b[0;36mquasiStatic\u001b[0;34m(self, data, x)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnq\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 73\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnu\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 74\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mactuation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mAu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mnu\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/flying.pyc\u001b[0m in \u001b[0;36mcalcDiff\u001b[0;34m(self, data, x, u, recalc)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomputeJointJacobians\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdateFramePlacements\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 64\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcosts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcosts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecalc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 65\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcost\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/cost.pyc\u001b[0m in \u001b[0;36mcalcDiff\u001b[0;34m(self, data, x, u, recalc)\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0mnr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 187\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcosts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcosts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\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[0;32m--> 188\u001b[0;31m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcost\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcDiff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecalc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 189\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mweight\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLu\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mweight\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLu\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/cost.pyc\u001b[0m in \u001b[0;36mcalcDiff\u001b[0;34m(self, data, x, u, recalc)\u001b[0m\n\u001b[1;32m 383\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 384\u001b[0m \u001b[0mnq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnq\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 385\u001b[0;31m \u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdateFramePlacements\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpinocchio\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 386\u001b[0m J = np.dot(\n\u001b[1;32m 387\u001b[0m \u001b[0mpinocchio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mJlog6\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrMf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], "source": [ "# DEFINING THE SHOOTING PROBLEM & SOLVING\n", "\n", @@ -152,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -161,7 +177,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -197,56 +213,9 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.text.Text at 0x7fd690bfa590>" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<matplotlib.figure.Figure at 0x7fd6c852a150>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<matplotlib.figure.Figure at 0x7fd698f71090>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<matplotlib.figure.Figure at 0x7fd690bb2e50>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "t = np.arange(0., 1, dt)\n", @@ -302,7 +271,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.16" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/examples/notebooks/kinton_flying_ee.ipynb b/examples/notebooks/kinton_flying_ee.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..5bc2d31dc01a91b333e4c15a004f0c338824f149 --- /dev/null +++ b/examples/notebooks/kinton_flying_ee.ipynb @@ -0,0 +1,523 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "from crocoddyl import *\n", + "import pinocchio as pin\n", + "import numpy as np\n", + "from crocoddyl.diagnostic import displayTrajectory" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# LOAD ROBOT\n", + "robot = loadKinton()\n", + "robot.initViewer(loadModel=True)\n", + "rmodel = robot.model\n", + "\n", + "q0 = rmodel.referenceConfigurations[\"centered\"]\n", + "robot.display(q0)\n", + "robot.framesForwardKinematics(q0)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# DEFINE TARGET POSITION\n", + "target_pos = np.array([0,0,1])\n", + "[ -0.7071068, 0, 0.7071068, 0 ]\n", + "target_quat = pin.Quaternion(-1, 0, 1, 0)\n", + "target_quat.normalize()\n", + "\n", + "# Plot goal frame\n", + "robot.viewer.gui.addXYZaxis('world/framegoal', [1., 0., 0., 1.], .015, 4)\n", + "robot.viewer.gui.applyConfiguration('world/framegoal', target_pos.tolist() + [target_quat[0], target_quat[1], target_quat[2], target_quat[3]])\n", + "robot.viewer.gui.refresh()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# ACTUATION MODEL\n", + "distanceRotorCOG = 0.1525\n", + "cf = 6.6e-5\n", + "cm = 1e-6\n", + "actModel = ActuationModelUAM(robot.model, distanceRotorCOG, cf, cm)\n", + "\n", + "# COST MODEL\n", + "# Create a cost model per the running and terminal action model.\n", + "runningCostModel = CostModelSum(robot.model, actModel.nu)\n", + "terminalCostModel = CostModelSum(robot.model, actModel.nu)\n", + "\n", + "frameName = 'link6'\n", + "state = StatePinocchio(robot.model)\n", + "SE3ref = pin.SE3()\n", + "SE3ref.translation = target_pos.reshape(3,1)\n", + "SE3ref.rotation = target_quat.matrix()\n", + "\n", + "\n", + "wBasePos = [1]\n", + "wBaseOri = [5]\n", + "wArmPos = [1]\n", + "wBaseVel = [10]\n", + "wBaseRate = [10]\n", + "wArmVel = [10] \n", + "stateWeights = np.array(wBasePos * 3 + wBaseOri * 3 + wArmPos * (robot.model.nv - 6) + wBaseVel * robot.model.nv)\n", + "controlWeights = np.array([0.1]*4 + [100]*6)\n", + "\n", + "goalTrackingCost = CostModelFramePlacement(rmodel,\n", + " frame=rmodel.getFrameId(frameName),\n", + " ref=SE3ref,\n", + " nu =actModel.nu)\n", + "\n", + "xRegCost = CostModelState(rmodel, \n", + " state, \n", + " ref=state.zero(), \n", + " nu=actModel.nu,\n", + " activation=ActivationModelWeightedQuad(stateWeights))\n", + "uRegCost = CostModelControl(rmodel, \n", + " nu=robot.\n", + " model.nv-2,\n", + " activation = ActivationModelWeightedQuad(controlWeights))\n", + "uLimCost = CostModelControl(rmodel, \n", + " nu=robot.\n", + " model.nv-2,\n", + " activation = ActivationModelInequality(np.array([0.1, 0.1, 0.1, 0.1, -1, -1, -1, -1, -1, -1]), \n", + " np.array([5, 5, 5, 5, 1, 1, 1, 1, 1, 1])))\n", + "\n", + "# Then let's add the running and terminal cost functions\n", + "runningCostModel.addCost(name=\"pos\", weight=0.1, cost=goalTrackingCost)\n", + "runningCostModel.addCost(name=\"regx\", weight=1e-4, cost=xRegCost)\n", + "runningCostModel.addCost(name=\"regu\", weight=1e-6, cost=uRegCost)\n", + "# runningCostModel.addCost(name=\"limu\", weight=1e-3, cost=uLimCost)\n", + "terminalCostModel.addCost(name=\"pos\", weight=0, cost=goalTrackingCost)\n", + "\n", + "# DIFFERENTIAL ACTION MODEL\n", + "runningModel = IntegratedActionModelEuler(DifferentialActionModelUAM(robot.model, actModel, runningCostModel))\n", + "terminalModel = IntegratedActionModelEuler(DifferentialActionModelUAM(robot.model, actModel, terminalCostModel))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter \t cost \t stop \t grad \t xreg \t ureg \t step \t feas\n", + " 0 9.08198e+00 4.56473e-01 1.97554e+01 1.00000e-09 1.00000e-09 0.5000 0\n", + " 1 4.04502e+00 2.73160e-01 1.52749e+01 1.00000e-09 1.00000e-09 0.5000 0\n", + " 2 2.95386e+00 9.48071e-02 4.97010e+00 1.00000e-09 1.00000e-09 0.2500 0\n", + " 3 2.46366e+00 5.13997e-02 2.99065e+00 1.00000e-09 1.00000e-09 0.5000 0\n", + " 4 1.82967e+00 4.92640e-02 1.93473e+00 1.00000e-09 1.00000e-09 0.5000 0\n", + " 5 1.76305e+00 1.16694e-02 6.93346e-01 1.00000e-09 1.00000e-09 0.5000 0\n", + " 6 1.56127e+00 1.93517e-02 5.77282e-01 1.00000e-09 1.00000e-09 0.5000 0\n", + " 7 1.51972e+00 4.57215e-03 2.26322e-01 1.00000e-09 1.00000e-09 0.5000 0\n", + " 8 1.47284e+00 6.55408e-03 1.88064e-01 1.00000e-09 1.00000e-09 0.5000 0\n", + " 9 1.42210e+00 3.88011e-03 1.41680e-01 1.00000e-09 1.00000e-09 0.5000 0\n", + "iter \t cost \t stop \t grad \t xreg \t ureg \t step \t feas\n", + " 10 1.39035e+00 7.66291e-04 7.05487e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 11 1.36621e+00 5.54061e-04 4.43489e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 12 1.35191e+00 6.60168e-04 2.63324e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 13 1.33763e+00 6.67983e-04 3.33965e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 14 1.31112e+00 1.07201e-03 5.27193e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 15 1.28462e+00 7.90939e-04 4.01468e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 16 1.27488e+00 1.77533e-04 1.22286e-02 1.00000e-09 1.00000e-09 1.0000 1\n", + " 17 1.27045e+00 9.30922e-05 5.35113e-03 1.00000e-09 1.00000e-09 1.0000 1\n", + " 18 1.26834e+00 4.14692e-05 2.48093e-03 1.00000e-09 1.00000e-09 1.0000 1\n", + " 19 1.26725e+00 1.98810e-05 1.26676e-03 1.00000e-09 1.00000e-09 1.0000 1\n", + "iter \t cost \t stop \t grad \t xreg \t ureg \t step \t feas\n", + " 20 1.26666e+00 1.03064e-05 6.83409e-04 1.00000e-09 1.00000e-09 1.0000 1\n", + " 21 1.26632e+00 5.53840e-06 3.87870e-04 1.00000e-09 1.00000e-09 1.0000 1\n", + " 22 1.26611e+00 3.14271e-06 2.30334e-04 1.00000e-09 1.00000e-09 1.0000 1\n", + " 23 1.26598e+00 1.84439e-06 1.42197e-04 1.00000e-09 1.00000e-09 1.0000 1\n", + " 24 1.26590e+00 1.12726e-06 9.06540e-05 1.00000e-09 1.00000e-09 1.0000 1\n", + " 25 1.26585e+00 7.07977e-07 5.93357e-05 1.00000e-09 1.00000e-09 1.0000 1\n", + " 26 1.26581e+00 4.57519e-07 3.96762e-05 1.00000e-09 1.00000e-09 1.0000 1\n", + " 27 1.26579e+00 3.01730e-07 2.69959e-05 1.00000e-09 1.00000e-09 1.0000 1\n", + " 28 1.26577e+00 2.02930e-07 1.86307e-05 1.00000e-09 1.00000e-09 1.0000 1\n", + " 29 1.26576e+00 1.38494e-07 1.30080e-05 1.00000e-09 1.00000e-09 1.0000 1\n", + "iter \t cost \t stop \t grad \t xreg \t ureg \t step \t feas\n", + " 30 1.26575e+00 9.57989e-08 9.16982e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 31 1.26574e+00 6.69611e-08 6.51573e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 32 1.26574e+00 4.72426e-08 4.66059e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 33 1.26574e+00 3.35797e-08 3.35217e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 34 1.26573e+00 2.40247e-08 2.42232e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 35 1.26573e+00 1.72804e-08 1.75728e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 36 1.26573e+00 1.24872e-08 1.27906e-06 1.00000e-09 1.00000e-09 1.0000 1\n", + " 37 1.26573e+00 9.05825e-09 9.33607e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 38 1.26573e+00 6.59276e-09 6.83084e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 39 1.26573e+00 4.81171e-09 5.00804e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + "iter \t cost \t stop \t grad \t xreg \t ureg \t step \t feas\n", + " 40 1.26573e+00 3.52026e-09 3.67802e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 41 1.26573e+00 2.58066e-09 2.70523e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 42 1.26573e+00 1.89516e-09 1.99225e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 43 1.26573e+00 1.39382e-09 1.46878e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 44 1.26573e+00 1.02641e-09 1.08385e-07 1.00000e-09 1.00000e-09 1.0000 1\n", + " 45 1.26573e+00 7.56671e-10 8.00443e-08 1.00000e-09 1.00000e-09 1.0000 1\n" + ] + }, + { + "data": { + "text/plain": [ + "([array([0. , 0. , 0. , 0. , 0. , 0. , 1. , 0. , 0.2, 1.7, 2. , 0. , 0. ,\n", + " 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]),\n", + " array([-3.57544605e-03, -7.44668560e-03, 4.49365233e-01, 1.79681024e-02,\n", + " -4.45620815e-03, -3.01835956e-01, 9.53180122e-01, 6.46208456e-01,\n", + " -1.27364727e-02, 1.70866626e+00, 1.99610746e+00, -4.22029271e-02,\n", + " -1.35228129e-01, 2.31269481e-04, 2.09342835e-03, 8.98934560e+00,\n", + " 7.30155326e-01, -1.81083347e-01, -1.22654650e+01, 1.29241691e+01,\n", + " -4.25472945e+00, 1.73325174e-01, -7.78508082e-02, -8.44058542e-01,\n", + " -2.70456257e+00]),\n", + " array([-2.75335078e-03, -9.70018618e-03, 7.05702573e-01, 3.82496094e-02,\n", + " -2.73270534e-02, -4.96030274e-01, 8.67031814e-01, 1.10225357e+00,\n", + " -1.21343614e-01, 1.66622939e+00, 1.95528582e+00, -9.22865263e-02,\n", + " -1.87437132e-01, 8.35589340e-02, 3.11522254e-01, 5.11765173e+00,\n", + " 1.08505275e+00, -7.88122271e-01, -8.49670771e+00, 9.12090236e+00,\n", + " -2.17214283e+00, -8.48737383e-01, -8.16432846e-01, -1.00167198e+00,\n", + " -1.04418008e+00]),\n", + " array([ 0.00867059, -0.01026122, 0.86379338, 0.05346953, -0.04894238,\n", + " -0.59018798, 0.80400485, 1.3562344 , -0.1672647 , 1.64197677,\n", + " 1.93034605, -0.12060296, -0.20747621, 0.14870916, 0.57758495,\n", + " 3.11393475, 0.95237829, -0.66211333, -4.50978504, 5.07961652,\n", + " -0.91842167, -0.48505247, -0.49879536, -0.56632861, -0.40078151]),\n", + " array([ 0.02667635, -0.00959095, 0.97004453, 0.06238672, -0.06374218,\n", + " -0.63236449, 0.76951932, 1.48897156, -0.18960439, 1.63060646,\n", + " 1.91606496, -0.13475645, -0.21443472, 0.11379098, 0.68812144,\n", + " 2.03954383, 0.62769501, -0.42340064, -2.15750089, 2.65474331,\n", + " -0.44679381, -0.22740607, -0.28562172, -0.28306985, -0.1391703 ]),\n", + " array([ 0.04727513, -0.00825965, 1.04394351, 0.06682622, -0.07184675,\n", + " -0.65037789, 0.75324691, 1.55886051, -0.20070219, 1.62457616,\n", + " 1.90587799, -0.14200632, -0.21653065, 0.07310845, 0.67733473,\n", + " 1.37507282, 0.33636966, -0.22363634, -0.95727276, 1.39777882,\n", + " -0.22195598, -0.12060601, -0.2037394 , -0.14499747, -0.04191861]),\n", + " array([ 0.06792217, -0.00662292, 1.095446 , 0.06809064, -0.07493078,\n", + " -0.65739137, 0.74671656, 1.59761569, -0.20620774, 1.62068612,\n", + " 1.89713287, -0.14600968, -0.21679865, 0.04545764, 0.60847568,\n", + " 0.92752 , 0.11563035, -0.09754393, -0.37659948, 0.7751036 ,\n", + " -0.11011114, -0.07780085, -0.1749025 , -0.08006722, -0.00535991]),\n", + " array([ 0.08700481, -0.0048637 , 1.13083636, 0.06701783, -0.07445228,\n", + " -0.65948193, 0.74501614, 1.62108627, -0.20907217, 1.61746549,\n", + " 1.88876294, -0.1486948 , -0.21635773, 0.02745424, 0.51631686,\n", + " 0.61688863, -0.04626031, -0.02470843, -0.10524384, 0.46941177,\n", + " -0.05728854, -0.06441265, -0.16739864, -0.05370228, 0.00881837]),\n", + " array([ 0.10353608, -0.00306959, 1.15441798, 0.06430428, -0.07155822,\n", + " -0.65944463, 0.7455717 , 1.63693813, -0.21074387, 1.61423813,\n", + " 1.88042852, -0.15102388, -0.21565606, 0.01439063, 0.4177697 ,\n", + " 0.39787037, -0.15858766, 0.01641798, 0.01608986, 0.31703701,\n", + " -0.03343394, -0.06454713, -0.16668827, -0.0465817 , 0.0140334 ]),\n", + " array([ 1.16954483e-01, -1.28567219e-03, 1.16934941e+00, 6.05718981e-02,\n", + " -6.71807434e-02, -6.58547408e-01, 7.47083064e-01, 1.64880892e+00,\n", + " -2.11886693e-01, 1.61077683e+00, 1.87217494e+00, -1.53369531e-01,\n", + " -2.14890762e-01, 3.63424959e-03, 3.21207460e-01, 2.43490883e-01,\n", + " -2.28099133e-01, 3.87308923e-02, 6.60483401e-02, 2.37415891e-01,\n", + " -2.28565069e-02, -6.92260615e-02, -1.65071707e-01, -4.69129804e-02,\n", + " 1.53059754e-02]),\n", + " array([ 1.26986888e-01, 4.58431246e-04, 1.17809203e+00, 5.63680622e-02,\n", + " -6.20924176e-02, -6.57348708e-01, 7.48905768e-01, 1.65839249e+00,\n", + " -2.12781717e-01, 1.60711309e+00, 1.86423796e+00, -1.55762190e-01,\n", + " -2.14156997e-01, -5.89297752e-03, 2.30591438e-01, 1.37272305e-01,\n", + " -2.60857839e-01, 4.91217964e-02, 8.28035861e-02, 1.91671490e-01,\n", + " -1.79004723e-02, -7.32747013e-02, -1.58739549e-01, -4.78531746e-02,\n", + " 1.46752893e-02]),\n", + " array([ 0.13355502, 0.0021378 , 1.1826134 , 0.05215715, -0.05692673,\n", + " -0.65608376, 0.75072837, 1.6664573 , -0.21353399, 1.60340835,\n", + " 1.85691585, -0.15806263, -0.21350386, -0.01454619, 0.14736974,\n", + " 0.06806132, -0.26293908, 0.05140241, 0.08462864, 0.16129607,\n", + " -0.01504551, -0.07409485, -0.14644219, -0.04600889, 0.01306268]),\n", + " array([ 0.13670671, 0.00372954, 1.18445944, 0.04830977, -0.05217919,\n", + " -0.65484719, 0.75240857, 1.6733396 , -0.21417456, 1.5998651 ,\n", + " 1.85048588, -0.16007884, -0.21295589, -0.02244883, 0.07150725,\n", + " 0.02706784, -0.24081629, 0.04800245, 0.08008366, 0.137646 ,\n", + " -0.01281129, -0.07086501, -0.12859949, -0.04032421, 0.01095954]),\n", + " array([ 0.13656066, 0.00521332, 1.1847744 , 0.04509179, -0.04820081,\n", + " -0.65367786, 0.75388903, 1.67918183, -0.21470878, 1.5966692 ,\n", + " 1.8451536 , -0.16164123, -0.21252175, -0.02969929, 0.00213193,\n", + " 0.00650072, -0.20147978, 0.04079307, 0.07300044, 0.11684456,\n", + " -0.01068453, -0.06391793, -0.10664555, -0.03124761, 0.00868266]),\n", + " array([ 1.33261617e-01, 6.57268152e-03, 1.18431879e+00, 4.26573791e-02,\n", + " -4.51936195e-02, -6.52596567e-01, 7.55152703e-01, 1.68404751e+00,\n", + " -2.15137662e-01, 1.59395651e+00, 1.84102603e+00, -1.62646965e-01,\n", + " -2.12198654e-01, -3.64270077e-02, -6.20337654e-02, -7.48049971e-04,\n", + " -1.52235463e-01, 3.14174343e-02, 6.49184637e-02, 9.73136577e-02,\n", + " -8.57757754e-03, -5.42539498e-02, -8.25513641e-02, -2.01147889e-02,\n", + " 6.46196784e-03]),\n", + " array([ 1.26946539e-01, 7.79584497e-03, 1.18351162e+00, 4.10491231e-02,\n", + " -4.32139920e-02, -6.51621714e-01, 7.56198824e-01, 1.68797592e+00,\n", + " -2.15465646e-01, 1.59179834e+00, 1.83810212e+00, -1.63081266e-01,\n", + " -2.11975356e-01, -4.27872828e-02, -1.22391810e-01, -8.28652967e-04,\n", + " -1.00277930e-01, 2.13696868e-02, 5.62838741e-02, 7.85682039e-02,\n", + " -6.55968935e-03, -4.31633282e-02, -5.84782951e-02, -8.68602060e-03,\n", + " 4.46596916e-03]),\n", + " array([ 1.17722827e-01, 8.87571018e-03, 1.18250364e+00, 4.02058296e-02,\n", + " -4.21850196e-02, -6.50775349e-01, 7.57030621e-01, 1.69100668e+00,\n", + " -2.15702127e-01, 1.59020162e+00, 1.83627589e+00, -1.63021020e-01,\n", + " -2.11834966e-01, -4.89384333e-02, -1.80295055e-01, 1.53459755e-03,\n", + " -5.22307437e-02, 1.19714922e-02, 4.70496601e-02, 6.06152679e-02,\n", + " -4.72961508e-03, -3.19343115e-02, -3.65245204e-02, 1.20492609e-03,\n", + " 2.80779397e-03]),\n", + " array([ 1.05658110e-01, 9.80915041e-03, 1.18127340e+00, 3.99756448e-02,\n", + " -4.19152213e-02, -6.50085191e-01, 7.57650517e-01, 1.69318865e+00,\n", + " -2.15860164e-01, 1.58911994e+00, 1.83534887e+00, -1.62625163e-01,\n", + " -2.11757587e-01, -5.50165280e-02, -2.36935657e-01, 3.40162411e-03,\n", + " -1.38257695e-02, 4.33382818e-03, 3.69898731e-02, 4.36394039e-02,\n", + " -3.16074149e-03, -2.16336105e-02, -1.85404038e-02, 7.91713829e-03,\n", + " 1.54758211e-03]),\n", + " array([ 9.07808811e-02, 1.05959671e-02, 1.17972046e+00, 4.01319669e-02,\n", + " -4.21203818e-02, -6.49584562e-01, 7.58060153e-01, 1.69457923e+00,\n", + " -2.15954388e-01, 1.58846990e+00, 1.83504695e+00, -1.62116325e-01,\n", + " -2.11722816e-01, -6.11103545e-02, -2.93254824e-01, 3.49340094e-03,\n", + " 1.02567166e-02, -6.65371462e-04, 2.58899977e-02, 2.78115449e-02,\n", + " -1.88447013e-03, -1.30008275e-02, -6.03832220e-03, 1.01767567e-02,\n", + " 6.95429553e-04]),\n", + " array([ 7.31458905e-02, 1.12407397e-02, 1.17726313e+00, 4.03944572e-02,\n", + " -4.24518001e-02, -6.49310750e-01, 7.58262278e-01, 1.69523882e+00,\n", + " -2.16000820e-01, 1.58812739e+00, 1.83502165e+00, -1.61768016e-01,\n", + " -2.11711788e-01, -6.72373983e-02, -3.49852351e-01, -7.83018584e-03,\n", + " 1.67075601e-02, -2.44892537e-03, 1.36442919e-02, 1.31917639e-02,\n", + " -9.28638165e-04, -6.85029201e-03, -5.06103278e-04, 6.96617765e-03,\n", + " 2.20553509e-04]),\n", + " array([ 5.55212934e-02, 1.18846337e-02, 1.15028081e+00, 4.06569360e-02,\n", + " -4.27832013e-02, -6.49036746e-01, 7.58464181e-01, 1.69589838e+00,\n", + " -2.16047785e-01, 1.58778488e+00, 1.83499634e+00, -1.61419707e-01,\n", + " -2.11700732e-01, -7.33248265e-02, -4.06901338e-01, -4.94661057e-01,\n", + " 1.67074566e-02, -2.44877678e-03, 1.36443350e-02, 1.31912728e-02,\n", + " -9.39314827e-04, -6.85020031e-03, -5.06135132e-04, 6.96617262e-03,\n", + " 2.21115902e-04])],\n", + " [array([73.31311221, 89.54317897, 70.15035367, 53.01906275, 31.14853182,\n", + " -4.58457632, -4.21939376, -3.28976583, -2.34912815, -2.56993469]),\n", + " array([-20.96677807, -36.10120937, -22.93535653, -22.02546588,\n", + " -9.48365654, 1.02099415, 2.08063019, 1.27029142,\n", + " 0.60629532, 1.09480525]),\n", + " array([-10.80616632, -18.15177961, -10.29394147, -5.86507128,\n", + " -10.02351238, 0.18575567, 0.8500055 , 0.6871426 ,\n", + " 0.46018017, 0.98905117]),\n", + " array([-5.01555855, -7.11863201, -5.13583246, 0.47347274, -5.83432046,\n", + " 0.48719645, 0.16921048, 0.17903738, 0.14619236, 0.34068169]),\n", + " array([-1.81014129, -2.47911897, -2.29206602, 1.8203355 , -2.98200078,\n", + " 0.40003903, 0.06784759, 0.07606747, 0.06794457, 0.09823517]),\n", + " array([ 0.11711936, -0.35938356, -0.47384594, 2.09523737, -1.4594199 ,\n", + " 0.22774331, 0.06770523, 0.06199525, 0.0504948 , 0.03012877]),\n", + " array([ 1.30710893, 0.86576737, 0.75227682, 2.31136296, -0.70185548,\n", + " 0.11365101, 0.06389094, 0.05220085, 0.03891677, 0.01056189]),\n", + " array([ 2.03895858, 1.68096641, 1.60426154, 2.53503256, -0.33489837,\n", + " 0.05336425, 0.04969197, 0.03850675, 0.02702695, 0.00418002]),\n", + " array([ 2.51484327e+00, 2.27159472e+00, 2.22803779e+00, 2.75271176e+00,\n", + " -1.59529705e-01, 2.36580357e-02, 3.25558285e-02, 2.49294003e-02,\n", + " 1.67789483e-02, 1.81628741e-03]),\n", + " array([ 2.85205435e+00, 2.72460004e+00, 2.70833754e+00, 2.95657219e+00,\n", + " -7.65895065e-02, 9.26047902e-03, 1.70949941e-02, 1.38942310e-02,\n", + " 9.18632238e-03, 8.81109096e-04]),\n", + " array([ 3.10628901e+00, 3.08044883e+00, 3.08649201e+00, 3.13933946e+00,\n", + " -3.78231053e-02, 2.30284847e-03, 4.73602411e-03, 5.74320084e-03,\n", + " 4.01681500e-03, 5.04632008e-04]),\n", + " array([ 3.30030921e+00, 3.35560879e+00, 3.37899729e+00, 3.29372262e+00,\n", + " -1.99673011e-02, -9.78743151e-04, -4.41252105e-03, 6.52372659e-05,\n", + " 6.73281570e-04, 3.45843215e-04]),\n", + " array([ 3.44286515e+00, 3.55602919e+00, 3.59137528e+00, 3.41443206e+00,\n", + " -1.18464317e-02, -2.36620225e-03, -1.05369585e-02, -3.58955146e-03,\n", + " -1.35469871e-03, 2.63248796e-04]),\n", + " array([ 3.53923346e+00, 3.68593872e+00, 3.72753548e+00, 3.50010801e+00,\n", + " -8.10061953e-03, -2.73350220e-03, -1.38496532e-02, -5.55479744e-03,\n", + " -2.41455568e-03, 2.01267280e-04]),\n", + " array([ 3.59638169e+00, 3.75281537e+00, 3.79502924e+00, 3.55432316e+00,\n", + " -6.16948792e-03, -2.54176492e-03, -1.45963111e-02, -6.08896092e-03,\n", + " -2.73982835e-03, 1.42173280e-04]),\n", + " array([ 3.62463136e+00, 3.76885637e+00, 3.80653123e+00, 3.58537452e+00,\n", + " -4.84931732e-03, -2.05220340e-03, -1.30584497e-02, -5.40276388e-03,\n", + " -2.48406254e-03, 8.31367175e-05]),\n", + " array([ 3.63705735e+00, 3.74976681e+00, 3.77846186e+00, 3.60497454e+00,\n", + " -3.61759997e-03, -1.41116157e-03, -9.48261424e-03, -3.62488965e-03,\n", + " -1.70907553e-03, 2.46370804e-05]),\n", + " array([ 3.64592489e+00, 3.71082244e+00, 3.72695008e+00, 3.62443823e+00,\n", + " -2.36944256e-03, -6.90309154e-04, -4.09873764e-03, -8.39841467e-04,\n", + " -4.23017391e-04, -3.35345754e-05]),\n", + " array([ 3.58659503e+00, 3.59345573e+00, 3.59509465e+00, 3.57778944e+00,\n", + " -1.35828234e-03, 2.09598015e-05, 1.98145545e-03, 2.13912798e-03,\n", + " 8.59804174e-04, -8.04109323e-05]),\n", + " array([ 8.76869348e-08, -1.06208173e-07, -4.56167150e-08, 5.66103164e-08,\n", + " 1.22935923e-10, 6.21020052e-10, 1.49192224e-10, -7.99966095e-10,\n", + " -4.29309670e-11, 1.17057616e-09])],\n", + " True)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# DEFINING THE SHOOTING PROBLEM & SOLVING\n", + "\n", + "# Defining the time duration for running action models and the terminal one\n", + "dt = 5e-2\n", + "runningModel.timeStep = dt\n", + "\n", + "# For this optimal control problem, we define 250 knots (or running action\n", + "# models) plus a terminal knot\n", + "T = 20\n", + "q0 = rmodel.referenceConfigurations[\"centered\"].copy()\n", + "v0 = pin.utils.zero(rmodel.nv)\n", + "x0 = m2a(np.concatenate([q0, v0]))\n", + "rmodel.defaultState = x0.copy()\n", + "\n", + "problem = ShootingProblem(x0, [runningModel] * T, terminalModel)\n", + "\n", + "# Creating the DDP solver for this OC problem, defining a logger\n", + "fddp = SolverFDDP(problem)\n", + "fddp.callback = [CallbackDDPVerbose()]\n", + "fddp.callback.append(CallbackDDPLogger())\n", + "\n", + "us0 = [\n", + " m.differential.quasiStatic(d.differential, rmodel.defaultState)\n", + " if isinstance(m, IntegratedActionModelEuler) else np.zeros(0)\n", + " for m, d in zip(fddp.problem.runningModels, fddp.problem.runningDatas)]\n", + "xs0 = [problem.initialState]*len(fddp.models())\n", + "\n", + "# Solving it with the DDP algorithm\n", + "#fddp.solve(init_xs=xs0, init_us=us0)\n", + "fddp.solve()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "displayTrajectory(robot, fddp.xs, runningModel.timeStep)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "could not broadcast input array from shape (20) into shape (10)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-27-83867ff4d1ba>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpltUAM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPlotUAM\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfddp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfddp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mT\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdistanceRotorCOG\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcm\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[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpltUAM\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotMotorForces\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/plots.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, stateTraj, controlTraj, knots, dt, d, cf, cm)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcf\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPlotDataType\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPlotDataUAM\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mplotMotorForces\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/home/jmarti/robotics/toolboxes/crocoddyl/crocoddyl/plots.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, model)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontrol\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m[\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[0mMx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 55\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m[\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[0mMy\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMz\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: could not broadcast input array from shape (20) into shape (10)" + ] + } + ], + "source": [ + "pltUAM = PlotUAM(fddp.xs, fddp.us, T, dt, distanceRotorCOG, cf, cm)\n", + "\n", + "fig, axs = pltUAM.plotMotorForces()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "fig,axs = pltUAM.plotActuation()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "t = np.arange(0., 1, dt)\n", + "\n", + "fig, axs = plt.subplots(2,2, figsize=(15,10))\n", + "fig.suptitle('Motor forces')\n", + "axs[0, 0].plot(t,f1)\n", + "axs[0, 0].set_title('Motor 1')\n", + "axs[0, 1].plot(t,f2)\n", + "axs[0, 1].set_title('Motor 2')\n", + "axs[1, 0].plot(t,f3)\n", + "axs[1, 0].set_title('Motor 3')\n", + "axs[1, 1].plot(t,f4)\n", + "axs[1, 1].set_title('Motor 4')\n", + "\n", + "plt.figure()\n", + "t = np.append(t, 1)\n", + "plt.plot(t,Xx,t,Xy,t,Xz)\n", + "plt.legend(['x','y','z'])\n", + "plt.title('State - Position')\n", + "plt.ylabel('Position, [m]')\n", + "plt.xlabel('[s]')\n", + "\n", + "plt.figure()\n", + "plt.plot(t,Vx,t,Vy,t,Vz)\n", + "plt.legend(['x','y','z'])\n", + "plt.title('State - Velocity')\n", + "plt.ylabel('Velocity, [m/s]')\n", + "plt.xlabel('[s]')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t = np.arange(0,T*dt,dt)\n", + "t_state = np.append(t, t[-1]+dt)\n", + "t_state" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/kinton_flying_mission.ipynb b/examples/notebooks/kinton_flying_mission.ipynb index e86064df1cdeeb1a6ee4384f70c5fd94648c6261..733826adb45f3fab52447136e25e7186c8dda164 100644 --- a/examples/notebooks/kinton_flying_mission.ipynb +++ b/examples/notebooks/kinton_flying_mission.ipynb @@ -1347,7 +1347,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.16" + "version": "2.7.12" } }, "nbformat": 4,