test

Dependencies:   mbed ros_lib_kinetic nhk19mr2_can_info splitData SerialHalfDuplex_HM

Revision:
35:b4e1b8f25cd7
Child:
39:87dcdff27797
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Walk/orbit/triangle/triangle.h	Mon Mar 04 09:54:47 2019 +0000
@@ -0,0 +1,40 @@
+#ifndef INCLUDED_TRIANGLE_H
+#define INCLUDED_TRIANGLE_H
+#include "OneLeg.h"
+enum TriangleParams
+{
+    OFFSET_X_M,
+    OFFSET_Y_M,
+    STRIDE_M,
+    HEIGHT_M,
+    BUFFER_HEIGHT_M,
+};
+//下記の論文を参照
+//https://static1.squarespace.com/static/542ddec8e4b0158794bd1036/t/5a861d1cc83025f3d460dfc3/1518738728029/gait-design-optimization-Final.pdf
+class Triangle
+{
+    float reverse_tanbeta_; //論文のβのtan
+    float offset_x_m_;
+    float offset_y_m_;
+    float stride_m_;
+    float height_m_;        //足上げ幅
+    float buffer_height_m_; //着地直前で止める高さ
+    float stridetime_s_;
+    float toptime_s_;     //頂点に行くまでの時間
+    float buffer_time_s_; //一時停止点から着地するまでの時間.
+
+    float top_x_m_, top_y_m_, buffer_x_m_, buffer_y_m_;   //事前に計算して保存しておく
+    int StrideLine_(OneLeg &leg, float phasetime_s);      //着地している間の軌道
+    int StrideLineAccel_(OneLeg &leg, float phasetime_s); //着地中に慣性力を考慮して加減速
+
+  public:
+    void CalOtherParam();
+    void SetTriangleParam(float offset_x_m, float offset_y_m, float stride_m, float height_m, float buffer_height_m,
+                          float stridetime_s, float toptime_s, float buffer_time_s);
+    int GetOrbit(OneLeg &leg, float phasetime_s);
+    float GetOneWalkTime(); //足一周の時間
+    void ChangeOneParam(TriangleParams param, float val);
+    void Copy(const Triangle &origin);
+};
+
+#endif
\ No newline at end of file