From 35943286776ea4d1edb1d6997ce2a78d104ef5ca Mon Sep 17 00:00:00 2001
From: mnaveau <maximilien.naveau@laas.fr>
Date: Sun, 7 Sep 2014 14:26:04 +0200
Subject: [PATCH] some debugging tools

---
 .../AnalyticalMorisawaCompact.cpp             |   2 +-
 .../OrientationsPreview.cpp                   |   6 +
 .../ZMPVelocityReferencedQP.cpp               |  72 +++++++++++-
 .../generator-vel-ref.cpp                     |  39 +++---
 tests/CommonTools.cpp                         |   4 +-
 tests/TestHerdt2010DynamicFilter.cpp          | 111 +++++++++---------
 tests/TestMorisawa2007.cpp                    |  51 ++++++--
 7 files changed, 192 insertions(+), 93 deletions(-)

diff --git a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
index 9a53b81c..c135903d 100644
--- a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
+++ b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
@@ -803,7 +803,7 @@ computing the analytical trajectories. */
     static int iteration = 0;
     /// \brief Debug Purpose
     /// --------------------
-    oss.str("ZMPDiscretisationBuffer.dat");
+    oss.str("/home/mnaveau/Desktop/mehdi_data/walkstraight20cmperstep.dat");
     aFileName = oss.str();
     aof.open(aFileName.c_str(),ofstream::out);
     aof.close();
diff --git a/src/ZMPRefTrajectoryGeneration/OrientationsPreview.cpp b/src/ZMPRefTrajectoryGeneration/OrientationsPreview.cpp
index f9c8f396..efd8302b 100644
--- a/src/ZMPRefTrajectoryGeneration/OrientationsPreview.cpp
+++ b/src/ZMPRefTrajectoryGeneration/OrientationsPreview.cpp
@@ -62,9 +62,15 @@ OrientationsPreview::OrientationsPreview(CjrlHumanoidDynamicRobot *aHS)
     uLimitRightHipYaw_ = 45.0/180.0*M_PI;
   }
 
+  cout << "lLimitLeftHipYaw_ = " << lLimitLeftHipYaw_ * 180/M_PI << endl
+       << "uLimitLeftHipYaw_ = " << uLimitLeftHipYaw_ * 180/M_PI << endl
+       << "lLimitRightHipYaw_ = " << lLimitRightHipYaw_ * 180/M_PI << endl
+       << "uLimitRightHipYaw_ = " << uLimitRightHipYaw_ * 180/M_PI << endl ;
 
   uvLimitFoot_ = fabs(leftHip->upperVelocityBound(0));
 
+  cout << "upper velocity Limit Foot_ = " << uvLimitFoot_ << endl ;
+
   //Acceleration limit not given by HRP2JRLmain.wrl
   uaLimitHipYaw_ = 0.1;
   //Maximal cross angle between the feet
diff --git a/src/ZMPRefTrajectoryGeneration/ZMPVelocityReferencedQP.cpp b/src/ZMPRefTrajectoryGeneration/ZMPVelocityReferencedQP.cpp
index 64bdabc1..183d3912 100644
--- a/src/ZMPRefTrajectoryGeneration/ZMPVelocityReferencedQP.cpp
+++ b/src/ZMPRefTrajectoryGeneration/ZMPVelocityReferencedQP.cpp
@@ -526,6 +526,31 @@ void
     }
     VRQPGenerator_->LastFootSol(Solution_);
 
+
+//    Problem_.dump(MATRIX_Q,"/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/Q.dat");
+//    Problem_.dump(VECTOR_D,"/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/P.dat");
+//
+//    Problem_.dump(MATRIX_DU,"/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/A.dat");
+//    Problem_.dump(VECTOR_DS,"/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/lbA.dat");
+//
+//    Problem_.dump(VECTOR_XL,"/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/LB.dat");
+//    Problem_.dump(VECTOR_XU,"/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/UB.dat");
+//
+//    Problem_.dump(MATRIX_Q,cout);
+//    Problem_.dump(VECTOR_D,cout);
+//
+//    Problem_.dump(MATRIX_DU,cout);
+//    Problem_.dump(VECTOR_DS,cout);
+//
+//    Problem_.dump(VECTOR_XL,cout);
+//    Problem_.dump(VECTOR_XU,cout);
+
+    static int patate = 0 ;
+    if (patate == 50)
+      int stop = 0 ;
+
+    ++patate;
+
     // INITIALIZE INTERPOLATION:
     // ------------------------
     CurrentIndex_ = FinalCOMTraj_deq.size();
@@ -613,8 +638,8 @@ void
       {
         filteredCoM[i].x[j] += outputDeltaCOMTraj_deq[i].x[j] ;
         filteredCoM[i].y[j] += outputDeltaCOMTraj_deq[i].y[j] ;
-        FinalCOMTraj_deq[i].x[j] += outputDeltaCOMTraj_deq[i].x[j] ;
-        FinalCOMTraj_deq[i].y[j] += outputDeltaCOMTraj_deq[i].y[j] ;
+        //FinalCOMTraj_deq[i].x[j] += outputDeltaCOMTraj_deq[i].x[j] ;
+        //FinalCOMTraj_deq[i].y[j] += outputDeltaCOMTraj_deq[i].y[j] ;
       }
       dynamicFilter_->ComputeZMPMB(m_SamplingPeriod, filteredCoM[i],
                                           FinalLeftFootTraj_deq[i], FinalRightFootTraj_deq[i],
@@ -867,7 +892,48 @@ void
     }
     aof.close();
 
-
+    /// \brief Debug Purpose
+    /// --------------------
+    oss.str("/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/walkSideward2m_s.dat");
+    aFileName = oss.str();
+    if(iteration == 0)
+    {
+      aof.open(aFileName.c_str(),ofstream::out);
+      aof.close();
+    }
+    ///----
+    aof.open(aFileName.c_str(),ofstream::app);
+    aof.precision(8);
+    aof.setf(ios::scientific, ios::floatfield);
+    int nstep = Solution_.SupportStates_deq.back().StepNumber ;
+    for (unsigned int i = 0 ; i < QP_N_ ; ++i )
+    {
+      aof << filterprecision( Solution_.Solution_vec[i] ) << " "      ; // 1
+    }
+    for (unsigned int i = 0 ; i < 2 ; ++i )
+    {
+      if (i >= nstep)
+      {
+        aof << filterprecision( 0.0 ) << " "      ; // 1
+      }else{
+        aof << filterprecision( Solution_.Solution_vec[2*QP_N_+i] ) << " "      ; // 1
+      }
+    }
+    for (unsigned int i = 0 ; i < QP_N_ ; ++i )
+    {
+      aof << filterprecision( Solution_.Solution_vec[QP_N_+i] ) << " "      ; // 1
+    }
+    for (unsigned int i = 0 ; i < 2 ; ++i )
+    {
+      if (i >= nstep)
+      {
+        aof << filterprecision( 0.0 ) << " "      ; // 1
+      }else{
+        aof << filterprecision( Solution_.Solution_vec[2*QP_N_+nstep+i] ) << " "      ; // 1
+      }
+    }
+    aof << endl ;
+    aof.close();
 
 
 
diff --git a/src/ZMPRefTrajectoryGeneration/generator-vel-ref.cpp b/src/ZMPRefTrajectoryGeneration/generator-vel-ref.cpp
index 38de469a..7a6f6d31 100644
--- a/src/ZMPRefTrajectoryGeneration/generator-vel-ref.cpp
+++ b/src/ZMPRefTrajectoryGeneration/generator-vel-ref.cpp
@@ -299,12 +299,12 @@ GeneratorVelRef::build_inequalities_cop(linear_inequality_t & Inequalities,
     {
     if( prwSS_it->StateChanged ){
         RFI_->set_vertices( CoPHull, *prwSS_it, INEQ_COP );
-      if( prwSS_it->Foot == LEFT )
-        cout << "LEFT \n" ;
-      else
-        cout << "RIGHT \n" ;
-      for(unsigned int k = 0 ; k < CoPHull.X_vec.size() ; ++k)
-        cout << CoPHull.X_vec[k] << " " << CoPHull.Y_vec[k] << endl ;
+//      if( prwSS_it->Foot == LEFT )
+//        cout << "LEFT \n" ;
+//      else
+//        cout << "RIGHT \n" ;
+//      for(unsigned int k = 0 ; k < CoPHull.X_vec.size() ; ++k)
+//        cout << CoPHull.X_vec[k] << " " << CoPHull.Y_vec[k] << endl ;
     }
       RFI_->compute_linear_system( CoPHull, *prwSS_it );
 
@@ -345,12 +345,12 @@ GeneratorVelRef::build_inequalities_feet( linear_inequality_t & Inequalities,
           RFI_->set_vertices( FeetHull, *prwSS_it, INEQ_FEET );
           prwSS_it++;
 
-          if( prwSS_it->Foot == LEFT )
-            cout << "LEFT \n" ;
-          else
-            cout << "RIGHT \n" ;
-          for(unsigned int k = 0 ; k < FeetHull.X_vec.size() ; ++k)
-            cout << FeetHull.X_vec[k] << " " << FeetHull.Y_vec[k] << endl ;
+//          if( prwSS_it->Foot == LEFT )
+//            cout << "LEFT \n" ;
+//          else
+//            cout << "RIGHT \n" ;
+//          for(unsigned int k = 0 ; k < FeetHull.X_vec.size() ; ++k)
+//            cout << FeetHull.X_vec[k] << " " << FeetHull.Y_vec[k] << endl ;
 
           RFI_->compute_linear_system( FeetHull, *prwSS_it );
 
@@ -364,7 +364,7 @@ GeneratorVelRef::build_inequalities_feet( linear_inequality_t & Inequalities,
 
       prwSS_it++;
     }
-  cout << "############################################################\n";
+  //cout << "############################################################\n";
 }
 
 
@@ -417,10 +417,10 @@ GeneratorVelRef::build_constraints_cop(const linear_inequality_t & IneqCoP,
   compute_term  ( MM_, -1.0, IneqCoP.D.Y_mat, Robot_->DynamicsCoPJerk().U       );
   Pb.add_term_to( MATRIX_DU, MM_, NbConstraints, N_                             );
 
-  cout << "IneqCoP.D.X_mat = " << IneqCoP.D.X_mat << endl ;
-  cout << "Robot_->DynamicsCoPJerk().U = " << Robot_->DynamicsCoPJerk().U << endl ;
-  cout << "IneqCoP.D.Y_mat = " << IneqCoP.D.Y_mat << endl ;
-  cout << "Robot_->DynamicsCoPJerk().U = " << Robot_->DynamicsCoPJerk().U << endl ;
+//  cout << "IneqCoP.D.X_mat = " << IneqCoP.D.X_mat << endl ;
+//  cout << "Robot_->DynamicsCoPJerk().U = " << Robot_->DynamicsCoPJerk().U << endl ;
+//  cout << "IneqCoP.D.Y_mat = " << IneqCoP.D.Y_mat << endl ;
+//  cout << "Robot_->DynamicsCoPJerk().U = " << Robot_->DynamicsCoPJerk().U << endl ;
 
 
   // +D*V
@@ -428,7 +428,7 @@ GeneratorVelRef::build_constraints_cop(const linear_inequality_t & IneqCoP,
   // +  Robot_->LeftFoot().Dynamics(COP).U + Robot_->RightFoot().Dynamics(COP).U        );
   Pb.add_term_to( MATRIX_DU, MM_, NbConstraints, 2*N_                                   );
 
-  cout << "IntermedData_->State().V  = " << IntermedData_->State().V  << endl ;
+//  cout << "IntermedData_->State().V  = " << IntermedData_->State().V  << endl ;
   compute_term  ( MM_, 1.0, IneqCoP.D.Y_mat, IntermedData_->State().V  			);
   // +  Robot_->LeftFoot().Dynamics(COP).U + Robot_->RightFoot().Dynamics(COP).U        );
   Pb.add_term_to( MATRIX_DU, MM_, NbConstraints, 2*N_+NbStepsPreviewed                  );
@@ -706,6 +706,8 @@ GeneratorVelRef::update_problem( QPProblem & Pb, const std::deque<support_state_
   compute_term  ( MV_, -InstVel.weight, VelDynamics.UT, State.Ref.Global.Y_vec  );
   Pb.add_term_to( VECTOR_D, MV_, N_                                             );
 
+
+
   // COP - centering terms
   const IntermedQPMat::objective_variant_t & COPCent = IntermedData_->Objective( COP_CENTERING );
   const linear_dynamics_t & CoPDynamics = Robot_->DynamicsCoPJerk( );
@@ -737,7 +739,6 @@ GeneratorVelRef::update_problem( QPProblem & Pb, const std::deque<support_state_
   Pb.add_term_to( VECTOR_D, MV_, 2*N_                       );
   compute_term  ( MV_, COPCent.weight, State.VT, State.VcY  );
   Pb.add_term_to( VECTOR_D, MV_, 2*N_+nbStepsPreviewed      );
-
 }
 
 
diff --git a/tests/CommonTools.cpp b/tests/CommonTools.cpp
index 51f0dd63..3c7e625c 100644
--- a/tests/CommonTools.cpp
+++ b/tests/CommonTools.cpp
@@ -59,8 +59,8 @@ namespace PatternGeneratorJRL {
 	 ":previewcontroltime 1.6",
 	 ":omega 0.0",
 	 ":stepheight 0.07",
-	 ":singlesupporttime 1.56",
-	 ":doublesupporttime 0.04",
+	 ":singlesupporttime 0.78",
+	 ":doublesupporttime 0.02",
 	 ":armparameters 0.5",
 	 ":LimitsFeasibility 0.0",
 	 ":ZMPShiftParameters 0.015 0.015 0.015 0.015",
diff --git a/tests/TestHerdt2010DynamicFilter.cpp b/tests/TestHerdt2010DynamicFilter.cpp
index ace44980..6ac92128 100644
--- a/tests/TestHerdt2010DynamicFilter.cpp
+++ b/tests/TestHerdt2010DynamicFilter.cpp
@@ -269,11 +269,23 @@ protected:
 
   void fillInDebugFiles( )
   {
+    static int cleanFiles = 0 ;
+    if (cleanFiles == 0){
+      ofstream aof;
+      string aFileName;
+      string path = "/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/" ;
+      aFileName = path + m_TestName;
+      aFileName += "TestFGPI.dat";
+      aof.open(aFileName.c_str(),ofstream::out);
+      aof.close();
+    }
+    cleanFiles = 1 ;
     if (m_DebugFGPI)
     {
       ofstream aof;
       string aFileName;
-      aFileName = m_TestName;
+      string path = "/home/mnaveau/devel/Walking-Pattern-Generator-Prototype/tests/data/" ;
+      aFileName = path + m_TestName;
       aFileName += "TestFGPI.dat";
       aof.open(aFileName.c_str(),ofstream::app);
       aof.precision(8);
@@ -286,45 +298,37 @@ protected:
           << filterprecision(m_OneStep.finalCOMPosition.x[1] ) << " "                   // 6
           << filterprecision(m_OneStep.finalCOMPosition.y[1] ) << " "                   // 7
           << filterprecision(m_OneStep.finalCOMPosition.z[1] ) << " "                   // 8
-          << filterprecision(m_OneStep.ZMPTarget(0) ) << " "                            // 9
-          << filterprecision(m_OneStep.ZMPTarget(1) ) << " "                            // 10
-          << filterprecision(m_OneStep.LeftFootPosition.x  ) << " "                     // 11
-          << filterprecision(m_OneStep.LeftFootPosition.y  ) << " "                     // 12
-          << filterprecision(m_OneStep.LeftFootPosition.z  ) << " "                     // 13
-          << filterprecision(m_OneStep.LeftFootPosition.dx  ) << " "                    // 14
-          << filterprecision(m_OneStep.LeftFootPosition.dy  ) << " "                    // 15
-          << filterprecision(m_OneStep.LeftFootPosition.dz  ) << " "                    // 16
-          << filterprecision(m_OneStep.LeftFootPosition.ddx  ) << " "                   // 17
-          << filterprecision(m_OneStep.LeftFootPosition.ddy  ) << " "                   // 18
-          << filterprecision(m_OneStep.LeftFootPosition.ddz  ) << " "                   // 19
-          << filterprecision(m_OneStep.LeftFootPosition.theta*M_PI/180 ) << " "         // 20
-          << filterprecision(m_OneStep.LeftFootPosition.omega  ) << " "                 // 21
-          << filterprecision(m_OneStep.LeftFootPosition.omega2  ) << " "                // 22
-          << filterprecision(m_OneStep.RightFootPosition.x ) << " "                     // 23
-          << filterprecision(m_OneStep.RightFootPosition.y ) << " "                     // 24
-          << filterprecision(m_OneStep.RightFootPosition.z ) << " "                     // 25
-          << filterprecision(m_OneStep.RightFootPosition.dx ) << " "                    // 26
-          << filterprecision(m_OneStep.RightFootPosition.dy ) << " "                    // 27
-          << filterprecision(m_OneStep.RightFootPosition.dz ) << " "                    // 28
-          << filterprecision(m_OneStep.RightFootPosition.ddx ) << " "                   // 29
-          << filterprecision(m_OneStep.RightFootPosition.ddy ) << " "                   // 30
-          << filterprecision(m_OneStep.RightFootPosition.ddz ) << " "                   // 31
-          << filterprecision(m_OneStep.RightFootPosition.theta*M_PI/180 ) << " "     // 32
-          << filterprecision(m_OneStep.RightFootPosition.omega  ) << " "                // 33
-          << filterprecision(m_OneStep.RightFootPosition.omega2  ) << " "               // 34
-          << filterprecision(m_OneStep.ZMPTarget(0)*cos(m_CurrentConfiguration(5)) -
-                             m_OneStep.ZMPTarget(1)*sin(m_CurrentConfiguration(5))
-                             +m_CurrentConfiguration(0) ) << " "                                          // 35
-          << filterprecision(m_OneStep.ZMPTarget(0)*sin(m_CurrentConfiguration(5)) +
-                             m_OneStep.ZMPTarget(1)*cos(m_CurrentConfiguration(5))
-                             +m_CurrentConfiguration(1) ) << " "                                          // 36
-          << filterprecision(m_CurrentConfiguration(0) ) << " "                         // 37
-          << filterprecision(m_CurrentConfiguration(1) ) << " ";                        // 38
-      for (unsigned int i = 0 ; i < m_HDR->currentConfiguration().size() ; i++)
-      {
-        aof << filterprecision(m_HDR->currentConfiguration()(i)) << " " ;                  // 39 - 74
-      }
-
+          << filterprecision(m_OneStep.finalCOMPosition.yaw[1] ) << " "                 // 9
+          << filterprecision(m_OneStep.finalCOMPosition.x[2] ) << " "                   // 10
+          << filterprecision(m_OneStep.finalCOMPosition.y[2] ) << " "                   // 11
+          << filterprecision(m_OneStep.finalCOMPosition.z[2] ) << " "                   // 12
+          << filterprecision(m_OneStep.finalCOMPosition.yaw[2] ) << " "                 // 13
+          << filterprecision(m_OneStep.ZMPTarget(0) ) << " "                            // 14
+          << filterprecision(m_OneStep.ZMPTarget(1) ) << " "                            // 15
+          << filterprecision(m_OneStep.LeftFootPosition.x  ) << " "                     // 16
+          << filterprecision(m_OneStep.LeftFootPosition.y  ) << " "                     // 17
+          << filterprecision(m_OneStep.LeftFootPosition.z  ) << " "                     // 18
+          << filterprecision(m_OneStep.LeftFootPosition.dx  ) << " "                    // 19
+          << filterprecision(m_OneStep.LeftFootPosition.dy  ) << " "                    // 20
+          << filterprecision(m_OneStep.LeftFootPosition.dz  ) << " "                    // 21
+          << filterprecision(m_OneStep.LeftFootPosition.ddx  ) << " "                   // 22
+          << filterprecision(m_OneStep.LeftFootPosition.ddy  ) << " "                   // 23
+          << filterprecision(m_OneStep.LeftFootPosition.ddz  ) << " "                   // 24
+          << filterprecision(m_OneStep.LeftFootPosition.theta*M_PI/180 ) << " "         // 25
+          << filterprecision(m_OneStep.LeftFootPosition.omega  ) << " "                 // 26
+          << filterprecision(m_OneStep.LeftFootPosition.omega2  ) << " "                // 27
+          << filterprecision(m_OneStep.RightFootPosition.x ) << " "                     // 28
+          << filterprecision(m_OneStep.RightFootPosition.y ) << " "                     // 29
+          << filterprecision(m_OneStep.RightFootPosition.z ) << " "                     // 30
+          << filterprecision(m_OneStep.RightFootPosition.dx ) << " "                    // 31
+          << filterprecision(m_OneStep.RightFootPosition.dy ) << " "                    // 32
+          << filterprecision(m_OneStep.RightFootPosition.dz ) << " "                    // 33
+          << filterprecision(m_OneStep.RightFootPosition.ddx ) << " "                   // 34
+          << filterprecision(m_OneStep.RightFootPosition.ddy ) << " "                   // 35
+          << filterprecision(m_OneStep.RightFootPosition.ddz ) << " "                   // 36
+          << filterprecision(m_OneStep.RightFootPosition.theta*M_PI/180 ) << " "        // 37
+          << filterprecision(m_OneStep.RightFootPosition.omega  ) << " "                // 38
+          << filterprecision(m_OneStep.RightFootPosition.omega2  ) << " "              ;// 39
       aof << endl;
       aof.close();
     }
@@ -748,21 +752,12 @@ protected:
       localeventHandler_t Handler ;
     };
 
-#define localNbOfEvents 12
+#define localNbOfEvents 3
     struct localEvent events [localNbOfEvents] =
     {
-            { 5*200,&TestHerdt2010::walkForward},
-            {10*200,&TestHerdt2010::walkSidewards},
-            {25*200,&TestHerdt2010::startTurningRightOnSpot},
-            {35*200,&TestHerdt2010::walkForward},
-            {45*200,&TestHerdt2010::startTurningLeftOnSpot},
-            {55*200,&TestHerdt2010::walkForward},
-            {65*200,&TestHerdt2010::startTurningRightOnSpot},
-            {75*200,&TestHerdt2010::walkForward},
-            {85*200,&TestHerdt2010::startTurningLeft},
-            {95*200,&TestHerdt2010::startTurningRight},
-            {105*200,&TestHerdt2010::stop},
-            {110*200,&TestHerdt2010::stopOnLineWalking}
+       { 5*200,&TestHerdt2010::walkForward},
+       {30*200,&TestHerdt2010::stop},
+       {35*200,&TestHerdt2010::stopOnLineWalking}
     };
 
     // Test when triggering event.
@@ -778,12 +773,12 @@ protected:
   void generateEventEmergencyStop()
   {
 
-#define localNbOfEventsEMS 5
+#define localNbOfEventsEMS 3
     struct localEvent events [localNbOfEventsEMS] =
-    { {5*200,&TestHerdt2010::startTurningLeft2},
-      {10*200,&TestHerdt2010::startTurningRight2},
-      {15.2*200,&TestHerdt2010::stop},
-      {20.8*200,&TestHerdt2010::stopOnLineWalking}
+    {
+      { 5*200,&TestHerdt2010::walkSidewards},
+      {30*200,&TestHerdt2010::stop},
+      {35*200,&TestHerdt2010::stopOnLineWalking}
     };
 
     // Test when triggering event.
diff --git a/tests/TestMorisawa2007.cpp b/tests/TestMorisawa2007.cpp
index 55b0a36a..05b619d9 100644
--- a/tests/TestMorisawa2007.cpp
+++ b/tests/TestMorisawa2007.cpp
@@ -705,18 +705,49 @@ protected:
     {
       istringstream strm2(":stepstairseq\
                           0.0 -0.105 0.0 0.0\
-                          0.0 0.19 0.0 0.0\
-                          0.0 -0.19 0.0 0.0\
-                          0.0 0.19 0.0 0.0\
-                          0.0 -0.19 0.0 0.0\
-                          0.0 0.19 0.0 0.0\
-                          0.0 -0.19 0.0 0.0\
-                          0.0 0.19 0.0 0.0\
-                          0.0 -0.19 0.0 0.0\
-                          0.0 0.19 0.0 0.0\
-                          0.0 -0.19 0.0 0.0\
+                          0.2 0.19 0.0 0.0\
+                          0.2 -0.19 0.0 0.0\
+                          0.2 0.19 0.0 0.0\
+                          0.2 -0.19 0.0 0.0\
+                          0.2 0.19 0.0 0.0\
+                          0.2 -0.19 0.0 0.0\
+                          0.2 0.19 0.0 0.0\
+                          0.2 -0.19 0.0 0.0\
+                          0.2 0.19 0.0 0.0\
+                          0.2 -0.19 0.0 0.0\
                           0.0 0.19 0.0 0.0\
                           ");
+
+//      istringstream strm2(":stepstairseq\
+//                          0.0 -0.105 0.0 0.0\
+//                          0.1 0.19 0.0 0.0\
+//                          0.1 -0.19 0.0 0.0\
+//                          0.1 0.19 0.0 0.0\
+//                          0.1 -0.19 0.0 0.0\
+//                          0.1 0.19 0.0 0.0\
+//                          0.1 -0.19 0.0 0.0\
+//                          0.1 0.19 0.0 0.0\
+//                          0.1 -0.19 0.0 0.0\
+//                          0.1 0.19 0.0 0.0\
+//                          0.1 -0.19 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          ");
+
+//      istringstream strm2(":stepstairseq\
+//                          0.0 -0.105 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          0.0 -0.19 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          0.0 -0.19 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          0.0 -0.19 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          0.0 -0.19 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          0.0 -0.19 0.0 0.0\
+//                          0.0 0.19 0.0 0.0\
+//                          ");
+
       aPGI.ParseCmd(strm2);
     }
 
-- 
GitLab