Go Down

Topic: Plateforme stabilisée avec un IMU 6 DoF (Read 3201 times) previous topic - next topic

cherault

Aug 15, 2013, 11:52 am Last Edit: Aug 15, 2013, 08:07 pm by Jean-François Reason: 1
Bonjour,

Je vous présente un petit sketch basé sur la centrale inertielle que j'avais présenté auparavant.
Le code de cette centrale inertielle consistait à voir les paramètres X,Y,Z ainsi que d'autres paramètres provenant de la centrale.
Vous pouvez voir le code ici: http://forum.arduino.cc/index.php?topic=181653.0

J'ai donc fait une petite vidéo que vous pouvez voir, qui illustre le fonctionnement de la plateforme:

www.youtube.com/watch?v=EgdUB15jqTY

Pour la partie code, elle se décompose en deux parties.

Le code principal, responsable du fonctionnement de la plateforme:

Code: [Select]
#include <FreeSixIMU.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <Wire.h>
#include <Servo.h>

float angles[3];

Servo servo_x;  
Servo servo_y;
Servo servo_z;

int pos_x = 0;  
int pos_y = 0;  
int pos_z = 0;

FreeSixIMU sixDOF = FreeSixIMU();

void setup()
{
 Serial.begin(9600);
 
 Wire.begin();
 
 servo_z.attach(10);
 servo_z.write(90);
 
 servo_x.attach(11);
 servo_y.attach(12);
 
 sixDOF.init();
 
 delay(5);
}

void loop()
{  
 sixDOF.getYawPitchRoll(angles);
 
 pos_x = (1570-angles[1]*9.55);
 servo_x.writeMicroseconds(pos_x);

 pos_y = (1400+angles[2]*9.55);
 servo_y.writeMicroseconds(pos_y);

 //pos_z = (1500+angles[0]*9.55);
 //servo_z.writeMicroseconds(pos_z);
 
 //printData();
}


Et le second, lié à l'affichage des paramètre des servos, afin de pouvoir les étalonner que j'ai nommé "printData"

Code: [Select]
void printData()
{
 Serial.print("X:");
 Serial.print(angles[1]);
 Serial.print("   ");
 
 Serial.print("Pos_X:");
 Serial.print(pos_x);
 Serial.print(" ||  ");
 
 Serial.print("Y:");
 Serial.print(angles[2]);
 Serial.print("   ");
 
 Serial.print("Pos_Y:");
 Serial.print(pos_y);
 Serial.print(" ||  ");
 
 Serial.print("Z:");
 Serial.print(angles[0]);
 Serial.print("   ");
 
 Serial.print("Pos_Z:");
 Serial.print(pos_z);
 Serial.print("   ");
 
 Serial.println("   ");
 delay(5);
}


Je vous conseil donc de désactiver la partie "printData" durant le fonctionnement de la plateforme, c'est beaucoup plus fluide.

Amitiés,
50% homme + 50% machine = 100% linux

Artouste


Bonjour,

Je vous présente un petit sketch basé sur la centrale inertielle que j'avais présenté auparavant.
Le code de cette centrale inertielle consistait à voir les paramètres X,Y,Z ainsi que d'autres paramètres provenant de la centrale.
Vous pouvez voir le code ici: http://forum.arduino.cc/index.php?topic=181653.0

J'ai donc fait une petite vidéo que vous pouvez voir, qui illustre le fonctionnement de la plateforme:

https://www.youtube.com/watch?v=EgdUB15jqTY


bonsoir
jolie réalisation
tu tiens la stabilisation jusqu'à quel facteur de g ?

cherault

Bonjour Artouste,

Merci pour le compliment, ca fait plaisir !

Concernant le fonctionnement à la valeur maximale d'accélération, je ne peux pas te répondre puisque je n'ai pas de quoi mesurer avec précision.
De plus, le système fonctionne par valeur angulaire et non pas par la mesure de l'accélération directe, donc difficile de te répondre.

Amitiés,
50% homme + 50% machine = 100% linux

Jean-François

Et avec un verre d'eau ça donne quoi ?   XD
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

cherault

Bonjour Jean-François,

Maintenant que j'ai un peu bidouillé l'algo, la stabilité est meilleure et non seulement ca marche avec un verre d'eau, mais encore plus fort, dans une flute de champagne !
Plus de problème de vibration due aux bruits de l'accel. Le filtrage est optimale.
Je vais remettre une vidéo avec la flute de champagne et le nouvel algo dès que possible.

Amitiés,
50% homme + 50% machine = 100% linux

Jean-François

En fait ce qui m'intéresse c'est de voir la surface de l'eau, c'est ce qui permet de démontrer si la stabilité est "uniforme" et "linéaire".
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

cherault

Uniforme, oui, linéaire...j'en doute !

La stabilité est une sorte d'équilibre, et l'équilibre peut-être passif ou dynamique  ;)
Dans notre cas, l'équilibre est dynamique et ne suis pas une réponse linéaire puisque les mouvements sont dits stochastiques (Pseudo aléatoires).

Amitiés,
50% homme + 50% machine = 100% linux

Jean-François

Ce que je voulais exprimer est la "platitude" de la surface de l'eau... si elle reste stable en formant une petite onde régulière ou si de temps en temps elle produit une vague.... ou reste t-elle parfaitement plate (sans les bulles  XD ).
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

cherault

AAAhhhhhhh...les bubulles...que du bonheur !  :D

En fait, ca bouge à la surface libre...même pas mal, mais le verre lui ne bouge pas (trop).

Je vais également changer les servos pour des plus puissants, car l'ensemble pèse assez lourd.
Donc, une fois les modifications dans l'Arduino et le changement des servos fait, je ferai une petite vidéo pour que tu puisses voir par toi même la surface libre bouger alors qu'en dessous, je le bouge dans tous les sens.

Amitiés,
50% homme + 50% machine = 100% linux

cherault

Salut Jean-François,

Si la robotique t'intéresse, jette un oeil à mes vidéos (Pas forcément ce qu'il y a de mieux, je l'admets volontiers)...ca peut t'inspirer pour tes futurs projets.

https://www.youtube.com/my_videos?o=U

Amitiés,
50% homme + 50% machine = 100% linux

Jean-François

Tu n'as pas mis le bon lien pour consulter ta chaine  :smiley-mr-green:

Avec ce lien je tombe sur la mienne   XD
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

cherault

Waooooo...tu as raison, je suis fatigué !  :smiley-red:

Ok, j'essaye de rectifier le tir: https://www.youtube.com/user/heraultc/videos?view_as=public

Dis moi si cela fonctionne stp.

Amitiés,
50% homme + 50% machine = 100% linux

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up