From 06d42530e2eb3811213038a009f229b31e7f0168 Mon Sep 17 00:00:00 2001
From: Andrei <andrei@checkmoruk.(none)>
Date: Mon, 11 Jul 2011 18:24:19 +0200
Subject: [PATCH] Add computation of second derivative

---
 .../FootTrajectoryGenerationStandard.cpp      | 38 +++++++++++++++++++
 .../FootTrajectoryGenerationStandard.h        |  5 ++-
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.cpp b/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.cpp
index 23219c1d..f6e43424 100644
--- a/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.cpp
+++ b/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.cpp
@@ -325,6 +325,44 @@ double FootTrajectoryGenerationStandard::Compute(unsigned int PolynomeIndex, dou
  return r;
 }
 
+double FootTrajectoryGenerationStandard::ComputeSecDerivative(unsigned int PolynomeIndex, double Time)
+{
+  double r=0.0;
+
+  switch (PolynomeIndex)
+   {
+
+   case X_AXIS:
+     r=m_PolynomeX->ComputeSecDerivative(Time);
+     break;
+
+   case Y_AXIS:
+     r=m_PolynomeY->ComputeSecDerivative(Time);
+     break;
+
+   case Z_AXIS:
+     r=m_PolynomeZ->ComputeSecDerivative(Time);
+     break;
+
+   case THETA_AXIS:
+     r=m_PolynomeTheta->ComputeSecDerivative(Time);
+     break;
+
+   case OMEGA_AXIS:
+     r=m_PolynomeOmega->ComputeSecDerivative(Time);
+     break;
+
+   case OMEGA2_AXIS:
+     r=m_PolynomeOmega2->ComputeSecDerivative(Time);
+     break;
+
+   default:
+     return -1.0;
+     break;
+   }
+ return r;
+}
+
 void FootTrajectoryGenerationStandard::UpdateFootPosition(deque<FootAbsolutePosition> &SupportFootAbsolutePositions,
 							  deque<FootAbsolutePosition> &NoneSupportFootAbsolutePositions,
 							  int CurrentAbsoluteIndex,  
diff --git a/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.h b/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.h
index 36b46acc..2a895f4c 100644
--- a/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.h
+++ b/src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.h
@@ -52,7 +52,7 @@ namespace PatternGeneratorJRL
       @{ */
     
     /*! \brief along the frontal direction */
-    const static unsigned int X_AXIS =0;
+    const static unsigned int X_AXIS = 0;
     /*! \brief along the left of the robot */
     const static unsigned int Y_AXIS = 1;
     /*! \brief along the vertical axis of the robot. */
@@ -155,6 +155,9 @@ namespace PatternGeneratorJRL
    /*! Compute the value for a given polynome. */
    double Compute(unsigned int PolynomeIndex, double Time);
 
+   /*! Compute the value for a given polynome's second derivative. */
+   double ComputeSecDerivative(unsigned int PolynomeIndex, double Time);
+
    /*! Compute the absolute foot position from the queue of relative positions. 
      There is not direct dependency with time.
     */
-- 
GitLab