Aller au contenu


Hybrid Assistive Limb

Inscrit(e) (le) 14 août 2012
Déconnecté Dernière activité sept. 24 2013 01:32
-----

Messages que j'ai postés

Dans le sujet : Construction d'un hexapod

15 septembre 2013 - 01:39

Bonjour / bonsoir à toutes et à tous,

voilà bien des mois que je n'ai pas donné de nouvelles de mon projet. Aujourd'hui, alors que la rentrée a eu lieu il y a trois semaines et que les dates butoirs de reddition du travail de maturité approche, je voulais actualiser l'avancée de mon hexapod.

Pour résumer, disons que le petit avance bien. J'ai consacré mes vacances à m'occuper de calibrer et de synchroniser ces servomoteurs afin d'avoir un déplacement homogène où les pattes n'entrent pas en conflit les unes avec les autres. Actuellement, outre deux petits servos qui, pour une raison qui m'est inconnue, ne semble pas prêts à faire ce que je leur demande, le tout est assez joli à voir :)/>

L'étape qui me tient à cœur d'accomplir maintenant est de le libérer des câbles qui le contraignent et de modifier le code arduino, afin de pouvoir contrôler à ma guise son déplacement.

1) Pour le premier point, pas de souci particulier, il me suffit d'acheter le matériel nécessaire, c'est-à-dire une batterie pour remplacer l'alimentation secteur que j'ai actuellement et remplacer la connexion câblée qui relie l'arduino à mon PC. Pour ce dernier point, je pense partir sur du bluetooth, avec une clef bluetooth à mettre à l'un des ports bluetooth de mon PC et un adapteur bluetooth pour l'arduino (pour ce dernier, si quelqu'un a des produits avec un bon rapport qualité/prix à me conseiller, je suis preneur).

2) Quant au deuxième point, c'est pour lui que je viens quémander votre aide :P/>. En effet, l'idée que j'ai eue est d'utiliser le moniteur série inclus dans l'IDE d'Arduino afin d'envoyer des messages au microcontrolleur, qui donnera un ordre spécifique aux servos en fonction du message reçu. Par exemple, s'il reçoit un '8', il leur dira d'avancer; s'il reçoit un '6', il leur dira de tourner à droite, etc...). Pour cela, je suis donc parti sur une structure avec des conditions et un message qui s'affiche dans le moniteur pour confirmer que l'action a bien été accomplie. Le problème est que je reçois le message...mais le robot n'a pas bougé d'un pouce.

Afin que vous puissiez jeter un coup d'oeil au code, le voici (j'ai simplement omis la déclaration des variables et les importations, afin de donner la partie où l'anomalie se cache):

ServoConsole console;

void setup(){
  Serial.begin(115200); //For printing out data, or debugging.
  Serial2.begin(115200); // Used for control servos on left side.
  Serial1.begin(115200);// Used for control servos on right side.
  Serial.println("Entrez 5 pour passer en position de mouvement ou 8 pour avancer");
}

void loop(){
  if (Serial.available() > 0)
  {
    code = Serial.read();
    Serial.print(code);
    if (code == '5')
    {
      console.Move(legs, 3, 170, 311); //Legs move to 170 for standing up
      console.Move(legsbas, 3, 50, 311);
      console.Move(hips, 6, 480, 311); // hips move to 480 for standing up
      console.Move(hipsbas, 1, 280, 311);
      console.Move(hipshaut, 1, 580, 311);
      console.Move(axisA, 2, 0, 1); // axis group A move to 130. Prepare for walking
      console.Move(axisC, 1, 0, 1);
      console.Move(axisB, 3, 0, 1); // axis group B move 70. Prepare for walking
      Serial.print("Le robot s'est leve");
    }
 
    if (code == '8')
    {
      Serial.print("Le robot marche");
      while(1){
        walk();
      }}}}
      
void walk(){
  
  console.MoveUp(hipB, 3, 100, 300); //hips group B move up 100
  console.MoveUp(axisB, 3, 60, 100);// axis group B move forward 60
  console.MoveDown(axisA, 2, 60, 100);// axis group A move backward 60
  delay(500);// waits for movement
  console.MoveDown(hipB, 3, 100, 300);//hips group B move down 100
  delay(500);// waits for movement
  console.MoveUp(hipA, 3, 100, 300);//hips group A move up 100
  console.MoveDown(axisB, 3, 60, 100);// axis group B move backward 60
  console.MoveUp(axisA, 2, 60, 100);// axis group A move forward 60
  delay(500);// waits for movement
  console.MoveDown(hipA,3, 100, 300);//hips group A move down 100
        
                }


Pour donner un exemple du résultat obtenu, lorsque j'envoie un '5' à travers le moniteur série, celui-ci affiche "Le robot s'est levé", même si le gredin est resté inerte.

______

Voilà, c'est tout pour l'instant. Je vous remercie d'avance pour vos réponses :)/>

Dans le sujet : Construction d'un hexapod

24 juin 2013 - 04:27

Bonjour/bonsoir à toutes et à tous,

voilà maintenant quatre mois que j'ai disparu des méandres du forum, et pendant ces deux mois, j'ai bien sûr continué à éduquer mon fiston, afin de régler ses problèmes d'alimentation et l'aider à faire ses premiers pas.

Malheureusement, suite à un manque de temps dû aux examens, je n'en suis pas encore arrivé à un stade où le petit sait se déplacer correctement. Disons qu'actuellement, il fait plutôt la majorette :lol:/>/>/>

La bonne nouvelle est que ses pattes sont dorénavant toutes alimentées correctement, ce qui fait qu'elles se mettent en mouvement suivant les deux triangles bien définis (pattes avant et arrière droites avec la patte milieu gauche et l'inverse). La mauvaise nouvelle est que le mouvement est un petit peu boiteux, étant donné que, lorsque je dis au robot de se mettre en position de marche, sa patte arrière droite se met dans une position tout à fait farfelue et handicape ensuite ses voisines.

Pour mieux cibler le problème, j'ai fait un test qui consistait à demander individuellement à chaque servo de se mettre dans sa position initiale, en leur donnant donc le même ordre à chacun. Voici une petite vidéo montrant l'expérience, et où l'on voit très bien le problème que pose cette patte. Mais à ce moment-là, je suis un petit peu bloqué : j'ai essayé, pour régler le problème, de démonter (et débrancher, bien évidemment), la patte qui pose problème, d'envoyer l'ordre de se mettre en position initiale puis replacer la patte à la position qu'elle devrait occuper à ce moment-là. Seulement voilà, même après cet essai mécanique, la patte continue de perturber le tout.
La seule explication que j'y trouve est que le problème provient du fait que la position initiale du servo n'est pas la même que celle de ses consœurs, faisant ainsi qu'elle occupe bien la position que je lui demande, mais que celle-ci est déphasée par rapport à celle des autres. Mais malgré des recherches, je n'ai pas trouvé de code permettant de savoir la position initiale d'un servo ou de la modifier. Si quelqu'un aurait une piste à ce niveau-là, je suis preneur.

Un autre petit souci que j'ai est au niveau des servo intérieurs. Normalement, ceux-ci devraient aussi tourner sur leur axe de rotation, mais au final seul l'un d'eux semble y parvenir. Les autres ont l'air d'être bloqués sur leur position, et il y en a même deux que je n'arrive pas à tourner manuellement lorsque le tout est débranché. Là-aussi, je fais appel à votre érudisme, car j'ai essayé de dévisser les vis pour voir si elles opposaient une trop grande résistance aux servos, mais ça n'a guère changé.

Je vous remercie d'avance pour vos réponses et vous souhaite une bonne soirée :)/>/>/>

Dans le sujet : Construction d'un hexapod

13 février 2013 - 10:19

Bonjour/bonsoir à toutes et à tous,

me revoici, pour vous donner des nouvelles à propos de mon projet, qui avance gentiment.
Tout d'abord, un grand merci à oron, mike118 et F6FCO, dont les réponses concernant mon problème de branchage m'ont beaucoup aidé (bien qu'il me reste encore un petit souci de ce côté-là :D/>/>/>)

Pour commencer, quelques mots sur l'avancement de mon projet : mon hexapode va bien et, malgré quelques petits soucis (notamment des pièces qui m'ont été envoyées qui n'étaient pas les bonnes), mon fiston commence à avoir de la gueule et arrive même à se tenir tout seul sur ses petites pattes. En voici d'ailleurs une photo :

Spoiler


Bon, il souffre encore de quelques problèmes de malformation, entre autre avec des fils qui vont dans tous les sens, mais il est quand même mignon, hein ? :lol:/>/>/>

Maintenant, la prochaine étape est de lui apprendre à marcher, mais avant cela il faut que le gamin puisse être alimenté, et c'est justement le problème que je rencontre aujourd'hui. Comme vous pouvez le voir, il y a une pléthore de cables qui partent dans tous les sens. Pour décrire cela de manière assez concise, il y a la liaison PC <-> Microcontrolleur (+shield), la liaison Shield (qui est un Blindage d'extension Mega E/S pour Arduino mega) <-> Deux servo driver board (avec les liaisons émission (TX), réception (RX) et terre (GND), puis ensuite il y a les nombreuses liaisons entre les servo driver board et les servomoteurs. La dernière liaison concerne bien évidemment l'alimntation et c'est justement celle-ci qui me pose problème. Ayant pour l'instant une alimentation externe, je l'ai branchée à mon microcontrolleur (cf photo ci-dessus), mais il me semble qu'il faudrait aussi que j'alimente les servo driver board, qui ont eux-aussi une prise pour l'alimentation. Pour cela, il me reste encore à disposition un fil assez énigmatique mais qui semble convenir à la situation, étant donné que ses prises sont clairement reliées à des questions d'alimentation. Le problème est que, outre les prises des servo driver board dont je parlais tout à l'heure, ni le microcontrolleur, ni le shield et ni l'alimentation n'a de prises libres pour ce genre de choses. Ma question est donc : est-ce que quelqu'un sait comment terminer ces branchements afin d'alimenter le tout ?

Sinon, étant déjà en train de réfléchir pour la programmation du déplacement, j'avais comme idée de partir sur un contrôle clavier/souris et pour cela, je pensais partir sur un programme élaboré à partir du langage Processing (qui, d'après ce que j'ai lu, peut communiquer avec des composants Arduino). Est-ce que quelqu'un qui a de l'expérience dans ce langage peut me donner des conseils, ou bien me conseiller une autre voie ?

Merci d'avance pour vos réponses (:

Dans le sujet : Construction d'un hexapod

04 janvier 2013 - 02:38

Rebonjour tout le monde et, avant de commencer à vous assaillir avec mes problèmes, je souhaite vous souhaiter une bonne année 2013 à toutes et à tous, riche en robotique et tout ça :P/>/>/>

Bon, une fois l'étape de la politesse passée, passons au vif du sujet.

Comme tu l'as très bien dit mike (et je te remercie d'ailleurs pour ta réponse, la première chose que j'ai essayée de faire est de structurer mon travail. Pendant ces vacances de Noël, j'ai commencé à faire connaissance avec mon Arduino et, maintenant que je la connais suffisamment bien, j'aimerais passer au contrôle des servomoteurs. Mais là, j'ai un petit problème au niveau des branchements : en effet, même après avoir branché les composants comme je pense être juste, le software spécifique du kit (que j'ai pu télécharger sur le site du fabricant) ne détecte pas le servo, et je n'arrive pas non plus à le contrôler via un code lancé sur l'IDE d'Arduino.

Concernant les branchements que j'ai faits, j'ai tout d'abord branché mon Arduino Mega 2560 à mon PC via USB, puis j'ai placé le shield sur la carte, que j'ai branché au servo driver board qui, de son côté, est connecté au servo et à l'alimentation. Vu qu'une image vaut mieux que des mots, voici une photo du tout.

Spoiler


Bref, est-ce que le problème est purement technique (à savoir un mauvais branchement, ou quelque chose qui manque) ou bien est-ce plutôt du côté du software que je dois vérifier ?

Dans le sujet : Construction d'un hexapod

25 décembre 2012 - 03:38

Tout d'abord, un grand merci pour vos réponses encourageantes, qui ne font que de me motiver encore plus à réaliser mon projet !

Concernant les servomoteurs, en fait, les miens ne sont pas des HS422, mais des CDS5516 (je ne sais pas si les messages ci-dessus étaient adressés à moi ou à Ludovic, mais au moins ça évite tout quiproquo x))

Pour ce qui est de la caméra, je n'ai pas encore regardé en détail comment je vais procéder (mes priorités étant déjà d'avoir un robot qui marche et de placer les capteurs à ses pattes), donc je ne pourrai malheureusement pas en discuter :/

mike118 : ne t'inquiètes pas, je ne néglige pas la partie électrique. C'est juste que je la case dans le "Montage" avec la mécanique x). J'ai d'ailleurs commencé à faire connaissance avec mon microcontrôleur (je pense d'ailleurs passer une bonne partie de mes vacances à apprendre à la maîtriser, avant de me lancer dans le vif du sujet en mi-Janvier).

Par contre, étant de nature TRES hésitante, j'ai des doutes concernant la démarche à suivre : à priori, le seul élément auquel je vais devoir implémenter du programme est le microcontrôleur. Mais le problème est que j'ai un peu de mal à structurer mon boulot, à savoir me dire "au départ, je monte ça puis, lorsque ce sera fini, je m'occuperai de programmer cela, etc...". Si quelqu'un aurait quelques conseils à me prodiguer (pas le travail mâché bien sûr, sinon ce ne serait pas drôle pour moi :P/>), je lui en serais reconnaissant.

Ah, et au passage, bonnes fêtes à toutes et à tous ! :)/>