From 42bc1ee834b8e7cbb75eba7eca52156cd0ef7cf4 Mon Sep 17 00:00:00 2001 From: Resethel Date: Sun, 22 Oct 2017 04:11:10 +0200 Subject: [PATCH] v0.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + ajout de la fonction oscillate pour le développement de gaits, etc --- Kubot.cpp | 25 ++++++++++++++----------- Kubot.hpp | 9 +++++++-- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/Kubot.cpp b/Kubot.cpp index 16d5559..0eaa057 100644 --- a/Kubot.cpp +++ b/Kubot.cpp @@ -139,6 +139,8 @@ void Kubot::moveServos(int duration, int servo_target[]) servo_position[i] = servo_target[i]; } + + void Kubot::oscillateServos(int A[4], int O[4], int T, double Ph[4], float cycle) { for (int i(0); i<4; i++) @@ -167,23 +169,24 @@ void Kubot::oscillateServos(int A[4], int O[4], int T, double Ph[4], float cycle } } - void Kubot::Oscillate(int A[4], int O[4], int T, double phase_diff[4], float steps) - { - attachServos(); - setRestState(false); - float cycles = trunc(steps); - if(steps >= 1) - { +void Kubot::oscillate(int A[4], int O[4], int T, double phase_diff[4], float steps) +{ + attachServos(); + setRestState(false); - for(int i(0) ; i < cycles; ++i) + float cycles = trunc(steps); + + if(steps >= 1) + { + for(int i(0) ; i < cycles; ++i) oscillateServos(A,O,T,phase_diff); - } + } - oscillateServos(A,O,T,phase_diff,steps-cycles); + oscillateServos(A,O,T,phase_diff,steps-cycles); - } +} diff --git a/Kubot.hpp b/Kubot.hpp index fb34032..62c9932 100644 --- a/Kubot.hpp +++ b/Kubot.hpp @@ -49,7 +49,7 @@ class Kubot //-- Contrôle basique des servos void moveServos(int duration, int servo_target[]); void oscillateServos(int A[4], int O[4], int T, double phase_diff[4], float cycle = 1.0); - void oscillate(int A[4], int O[4], int T, double phase_diff[4], float steps = 1.0); + //-- HOME = Kubot à sa position de repos void home(); bool getRestState(); @@ -64,7 +64,12 @@ class Kubot void _tone(float frequency, long noteDuration, long silenceDuration = 1); void bendTones(float initFrequency, float finalFrequency, float _step); + private: + // Cette fonction est utilisé seulement pour les mouvements pré-programmés... + // Elle permet de raisonner en terme de pas et définir l'état du Kubot. + // TODO: Peut-être mergé cette fonction avec oscillateServos + void oscillate(int A[4], int O[4], int T, double phase_diff[4], float steps = 1.0); private: @@ -82,7 +87,7 @@ class Kubot bool isResting; -// void _execute(int A[4], int O[4], int T, double phase_diff[4], float steps); + };