From b2e20e8fdf01b5e24ba69e55a1e3bb2dbe2e44a4 Mon Sep 17 00:00:00 2001
From: Huynh Duc <huynhnduc100@gmail.com>
Date: Tue, 24 Jun 2014 15:14:39 +0200
Subject: [PATCH] Clean code 24/06/2014

---
 ...dRightFootTrajectoryGenerationMultiple.cpp | 22 +------
 src/StepStackHandler.cpp                      |  7 ---
 src/StepStackHandler.hh                       |  1 -
 .../AnalyticalMorisawaCompact.cpp             | 61 +++++--------------
 .../AnalyticalMorisawaCompact.hh              |  3 +-
 tests/TestMorisawa2007.cpp                    |  7 +++
 6 files changed, 25 insertions(+), 76 deletions(-)

diff --git a/src/FootTrajectoryGeneration/LeftAndRightFootTrajectoryGenerationMultiple.cpp b/src/FootTrajectoryGeneration/LeftAndRightFootTrajectoryGenerationMultiple.cpp
index 44f7d482..3d9b9fff 100644
--- a/src/FootTrajectoryGeneration/LeftAndRightFootTrajectoryGenerationMultiple.cpp
+++ b/src/FootTrajectoryGeneration/LeftAndRightFootTrajectoryGenerationMultiple.cpp
@@ -125,21 +125,12 @@ void LeftAndRightFootTrajectoryGenerationMultiple::SetAnInterval(unsigned int In
 					   FootInitialPosition.y,
 					   FootInitialPosition.dy);
 
- if (FootFinalPosition.z < FootInitialPosition.z )
   aFTGM->SetParametersWithInitPosInitSpeed(IntervalIndex,
                            FootTrajectoryGenerationStandard::Z_AXIS,
                            m_DeltaTj[IntervalIndex],
                            FootFinalPosition.z,
                            FootInitialPosition.z,
                            FootInitialPosition.dz);
-  else
-    aFTGM->SetParametersWithInitPosInitSpeed(IntervalIndex,
-                           FootTrajectoryGenerationStandard::Z_AXIS,
-                           m_DeltaTj[IntervalIndex],
-                           FootFinalPosition.z,
-                           FootInitialPosition.z,
-                           FootInitialPosition.dz);
-
 
   // THETA
   aFTGM->SetParametersWithInitPosInitSpeed(IntervalIndex,
@@ -165,7 +156,6 @@ void LeftAndRightFootTrajectoryGenerationMultiple::SetAnInterval(unsigned int In
 					   FootInitialPosition.omega2,
 					   FootInitialPosition.domega2);
 
-    // Init the first interval.
   // X axis.
   if (FootFinalPosition.z <= FootInitialPosition.z )  //down
     aFTGM->SetParametersWithInitPosInitSpeed(IntervalIndex,
@@ -181,13 +171,6 @@ void LeftAndRightFootTrajectoryGenerationMultiple::SetAnInterval(unsigned int In
 					   FootFinalPosition.x,
 					   FootInitialPosition.x,
 					   FootInitialPosition.dx);
- /* else if (FootFinalPosition.z - FootInitialPosition.z  == m_StepHeight) //normal walking
-    aFTGM->SetParametersWithInitPosInitSpeed(IntervalIndex,
-					   FootTrajectoryGenerationStandard::X_AXIS,
-					   m_DeltaTj[IntervalIndex],
-					   FootFinalPosition.x,
-					   FootInitialPosition.x,
-					   FootInitialPosition.dx);*/
 }
 
 void LeftAndRightFootTrajectoryGenerationMultiple::
@@ -966,8 +949,7 @@ InitializeFromRelativeSteps(deque<RelativeFootPosition> &RelativeFootPositions,
 		LeftFootTmpFinalPos.dz = 0;
 		LeftFootTmpFinalPos.stepType = -1;
 
-		//cout << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  " << LeftFootTmpFinalPos.z << endl;
-		SetAnInterval(IntervalIndex,m_LeftFootTrajectory,
+        SetAnInterval(IntervalIndex,m_LeftFootTrajectory,
 			      LeftFootTmpFinalPos,
 			      LeftFootTmpFinalPos);
 		RightFootTmpFinalPos.z = CurrentSupportFootPosition(2,2);
@@ -991,8 +973,6 @@ InitializeFromRelativeSteps(deque<RelativeFootPosition> &RelativeFootPositions,
       SupportFootAbsoluteFootPositions[i].y = CurrentSupportFootPosition(1,2);
       SupportFootAbsoluteFootPositions[i].z = CurrentSupportFootPosition(2,2);
       SupportFootAbsoluteFootPositions[i].theta = CurrentAbsTheta;
-cout << "x "<< SupportFootAbsoluteFootPositions[i].x << "y " << SupportFootAbsoluteFootPositions[i].y << "z " << SupportFootAbsoluteFootPositions[i].z << endl;
-
 
       if ((!IgnoreFirst) || (i>0))
 	SupportFoot=-SupportFoot;
diff --git a/src/StepStackHandler.cpp b/src/StepStackHandler.cpp
index 97f7a2db..225f0184 100644
--- a/src/StepStackHandler.cpp
+++ b/src/StepStackHandler.cpp
@@ -162,13 +162,6 @@ void StepStackHandler::ReadStepStairSequenceAccordingToWalkMode(istringstream &s
 		    aFootPosition.DeviationHipHeight << " " ,
 		    "DebugGMFKW.dat");
 
-        cout << "TESTTTTTTTTTT   "<<aFootPosition.sx << " " <<
-		    aFootPosition.sy << " " <<
-		    aFootPosition.sz << " " <<
-		    aFootPosition.theta << " " <<
-		    aFootPosition.SStime << " " <<
-		    aFootPosition.DStime << " " <<
-		    aFootPosition.DeviationHipHeight << endl;
 	    m_RelativeFootPositions.push_back(aFootPosition);
 	    if (aFootPosition.sy>0)
 	      m_KeepLastCorrectSupportFoot=-1;
diff --git a/src/StepStackHandler.hh b/src/StepStackHandler.hh
index e2317a77..c7071f50 100644
--- a/src/StepStackHandler.hh
+++ b/src/StepStackHandler.hh
@@ -67,7 +67,6 @@ namespace PatternGeneratorJRL
       2: Stepping over.
       3: Read a path.
       4: Freeze the upper body.
-      6: Climbing stairs
     */
     void SetWalkMode(int lWalkMode);
 
diff --git a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
index 80191bb6..98971023 100644
--- a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
+++ b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
@@ -435,18 +435,7 @@ namespace PatternGeneratorJRL
       {
 	m_FeetTrajectoryGenerator->SetDeltaTj(m_DeltaTj);
 
-	int isStepStairOn;
-
-	GetIsStepStairOn(isStepStairOn);
-
-	if (m_isStepStairOn == 1)
-        m_FeetTrajectoryGenerator->InitializeFromRelativeSteps(m_RelativeFootPositions,
-							       LeftFootInitialPosition,
-							       RightFootInitialPosition,
-							       m_AbsoluteSupportFootPositions,
-							       IgnoreFirstRelativeFoot, false);
-    else
-        m_FeetTrajectoryGenerator->InitializeFromRelativeSteps_backup(m_RelativeFootPositions,
+    m_FeetTrajectoryGenerator->InitializeFromRelativeSteps(m_RelativeFootPositions,
 							       LeftFootInitialPosition,
 							       RightFootInitialPosition,
 							       m_AbsoluteSupportFootPositions,
@@ -2250,6 +2239,7 @@ namespace PatternGeneratorJRL
 					     deque<FootAbsolutePosition> & FinalRightFootAbsolutePositions)
   {
     unsigned int lIndexInterval,lPrevIndexInterval;
+    double static preCoMz =0;
     m_AnalyticalZMPCoGTrajectoryX->GetIntervalIndexFromTime(m_AbsoluteTimeReference,lIndexInterval);
     lPrevIndexInterval = lIndexInterval;
 
@@ -2296,23 +2286,15 @@ namespace PatternGeneratorJRL
 	  { LTHROW("COM out of bound along Y axis.");}
 	m_AnalyticalZMPCoGTrajectoryY->ComputeCOMSpeed(t,aCOMPos.y[1],lIndexInterval);
 
+    ComputeCoMz(t,aCOMPos.z[0]);
 
+    aCOMPos.z[1] = (aCOMPos.z[0] - preCoMz) / m_SamplingPeriod;
+    preCoMz = aCOMPos.z[0];
 
-   /* if (RightFootAbsPos.z <= LeftFootAbsPos.z){
-        aCOMPos.z[1] = (m_InitialPoseCoMHeight + RightFootAbsPos.z - aCOMPos.z[0])/m_SamplingPeriod;
-        aCOMPos.z[0] = m_InitialPoseCoMHeight + RightFootAbsPos.z;
-        }
-    else{
-        aCOMPos.z[1] = (m_InitialPoseCoMHeight + LeftFootAbsPos.z - aCOMPos.z[0])/m_SamplingPeriod;
-        aCOMPos.z[0] = m_InitialPoseCoMHeight + LeftFootAbsPos.z;
-    }*/
-
-
-    ComputeCoMz(t,aCOMPos.z[0], aCOMPos.z[1]);
 
     FinalCoMPositions.push_back(aCOMPos);
 	ODEBUG4(aZMPPos.px << " " << aZMPPos.py << " " <<
-		aCOMPos.x[0] << " " << aCOMPos.y[0] << " " <<
+		aCOMPos.x[0] << " " << aCOMPos.y[0] << " " << aCOMPos.z[0] <<" "<<
 		LeftFootAbsPos.x << " " << LeftFootAbsPos.y << " " << LeftFootAbsPos.z << " " <<
 		RightFootAbsPos.x << " " << RightFootAbsPos.y << " " << RightFootAbsPos.z << " " <<
 		m_SamplingPeriod,"Test.dat");
@@ -2320,13 +2302,13 @@ namespace PatternGeneratorJRL
   }
 
 
-    void AnalyticalMorisawaCompact::ComputeCoMz(double t, double &CoMz, double &CoMvelocity)
+    void AnalyticalMorisawaCompact::ComputeCoMz(double t, double &CoMz)
     {
 
     int Index,Index2;
     double moving_time = m_RelativeFootPositions[0].SStime + m_RelativeFootPositions[0].DStime;
     double deltaZ;
-    double CoMzpre = CoMz;
+   // double static CoMzpre = CoMz;
     double variable=0.1,variableright = 0.9 ,variableleft = 0.0;
     double              variableright1 = 0.9 ,variableleft1 = 0.0;
     // put first leg on the stairs with decrease of CoM variable% of step height
@@ -2362,8 +2344,8 @@ namespace PatternGeneratorJRL
                     CoMz = m_InitialPoseCoMHeight + m_AbsoluteSupportFootPositions[Index2].z;
             }
 
-                // going down et normal walk
-            if (m_AbsoluteSupportFootPositions[Index2].z < m_AbsoluteSupportFootPositions[Index2-1].z && m_RelativeFootPositions[Index2].sz < 0)
+                // going down
+            else if (m_AbsoluteSupportFootPositions[Index2].z < m_AbsoluteSupportFootPositions[Index2-1].z && m_RelativeFootPositions[Index2].sz < 0)
             {
                 deltaZ = (m_AbsoluteSupportFootPositions[Index2].z - m_AbsoluteSupportFootPositions[Index2-1].z );
                 if (t <= Index2*moving_time + 0.9*m_RelativeFootPositions[Index2].SStime && t >= Index2*moving_time + 0.0*m_RelativeFootPositions[Index2].SStime)
@@ -2381,30 +2363,19 @@ namespace PatternGeneratorJRL
                 else
                     CoMz = m_InitialPoseCoMHeight + m_AbsoluteSupportFootPositions[Index2].z ;
             }
+            else // normal walking
+                CoMz = m_InitialPoseCoMHeight + m_AbsoluteSupportFootPositions[Index2].z;
         }
 
-        else
+        else //after final step
             CoMz = m_InitialPoseCoMHeight + m_AbsoluteSupportFootPositions.back().z;
         }
-    else
+    else //first step
         CoMz = m_InitialPoseCoMHeight ;
 
-    CoMvelocity = (CoMz -CoMzpre)/m_SamplingPeriod;
+  //  CoMvelocity = (CoMz - CoMzpre)/m_SamplingPeriod;
+   // cout << "v" << CoMz <<" "<<CoMzpre << endl;
 }
 
 }
 
-     /*Index = int((t-moving_time)/(moving_time*2));
-        if (Index < (m_AbsoluteSupportFootPositions.size() - 1)/2){
-                deltaZ = (m_AbsoluteSupportFootPositions[2*Index + 1].z - m_AbsoluteSupportFootPositions[2*Index].z );
-                if (deltaZ > 0 && t>=(2*Index+2)*moving_time && t<=(2*Index+2)*moving_time + m_RelativeFootPositions[2*Index+1].SStime)
-                    CoMz = t*deltaZ/m_RelativeFootPositions[0].SStime +  m_InitialPoseCoMHeight - (2*Index + 2)*moving_time*deltaZ/m_RelativeFootPositions[0].SStime + m_AbsoluteSupportFootPositions[2*Index].z  ;
-                else if (deltaZ > 0  && t>(2*Index+2)*moving_time + m_RelativeFootPositions[2*Index+1].SStime)
-                    CoMz = CoMz + m_AbsoluteSupportFootPositions[2*Index].z;
-                if (deltaZ < 0 && t>=(2*Index+1)*moving_time && t<=(2*Index+2)*moving_time )
-                    CoMz = t*deltaZ/moving_time +  m_InitialPoseCoMHeight - (2*Index + 1)*moving_time*deltaZ/moving_time + m_AbsoluteSupportFootPositions[2*Index].z  ;
-                else if (deltaZ > 0  && t>(2*Index+2)*moving_time + m_RelativeFootPositions[2*Index+1].SStime)
-                    CoMz = CoMz +  m_AbsoluteSupportFootPositions[2*Index].z;
-
-            }*/
-
diff --git a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.hh b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.hh
index a5ced615..534b82c4 100644
--- a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.hh
+++ b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.hh
@@ -555,8 +555,7 @@ namespace PatternGeneratorJRL
 		      deque<FootAbsolutePosition> & FinalLeftFootAbsolutePositions,
 		      deque<FootAbsolutePosition> & FinalRightFootAbsolutePositions);
 
-
-      void ComputeCoMz(double t, double &CoMz, double &CoMvelocity);
+      void ComputeCoMz(double t, double &CoMz);
 
       /*! \brief LU decomposition of the Z matrix. */
       MAL_MATRIX_TYPE(double) m_AF;
diff --git a/tests/TestMorisawa2007.cpp b/tests/TestMorisawa2007.cpp
index 79984529..d03bae40 100644
--- a/tests/TestMorisawa2007.cpp
+++ b/tests/TestMorisawa2007.cpp
@@ -504,6 +504,13 @@ protected:
                                         0.0 -0.19 0.0 0.0\
                                          0.32 0.19 -0.15 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.0 0.19 0.0 0.0\
+                                        0.3 -0.19 0.15 0.0\
+                                        0.0 0.19 0.0 0.0\
+                                        0.3 -0.19 0.15 0.0\
+                                        0.0 0.19 0.0 0.0\
                                         ");
       aPGI.ParseCmd(strm2);
       /*0.0 -0.105 0.0 0.0\
-- 
GitLab