Aller au contenu


Photo

Robot Quadrupède intelligent.

robot quadrupède

  • Veuillez vous connecter pour répondre
178 réponses à ce sujet

#41 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 30 août 2015 - 02:21

J'ai vérifié ce que j'obtenais avec le moniteur série en envoyant un exemple de trame à la main. 

 

- La première trame n'est pas prise en compte, la deuxième est bien lu comme il faut, les suivantes sont dans le désordres. -> C'est solutionné en retirant ">19" de "if ( Serial.available>19)".

 

J'obtiens maintenant les bonnes valeurs. J'ai lu mes variables dans le moniteur avec un delay de 500ms entre chaque serie.

 

-Quand le logiciel envoie ces trames rien ne se passe. -> si je laisse un delay, le système fonction.

 

J'observe dans le moniteur serie ce que valent mes variables quand il n'y a pas de delay: elles ne sont quasiment jamais lus, mises à part quelques fois où l'une des variables a sa valeur correctement attribuée.  

 

Est ce que le ReadStringUntil() ne résoudrait pas ce problème?  Serial.readString(!) par exemple avec "!" à la fin de la trame.



#42 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 30 août 2015 - 07:38

Je viens de voir un truc : essaye avec " >18"   ;)  ( mea culpa ^^ )

 

Ensuite en effet cette astuce ne marche que pour les tailles de trame connu (à condition de ne pas se tromper sur la longueur de la trame ;) ) . 

Enfin en effet l'ajout d'un caractère de fin peut résoudre le problème mais comme indiqué plus tôt cela impose, soit de ne plus utiliser le caractère de fin dans le reste de ta trame, soit faire une gestion de trames complexe comme ce que je t'ai aussi indiqué ;) 
 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#43 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 30 août 2015 - 07:59

Même résultat avec">18".

"Ensuite en effet cette astuce ne marche que pour les tailles de trame connu (à condition de ne pas se tromper sur la longueur de la trame ;) ) . "

Ah, tout s'explique! En fait, c'est 19 caractères maximum. Par exemple -120;-103;0;1;27.3;
Or ca peut aussi être 50;-32;0;0;22.2; d'où les décalages.

#44 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 30 août 2015 - 09:18

Ok je viens de comprendre : 

 

Voici un exemple de ce que tu peux faire par exemple pour deux valeurs séparé par des ";" :
 

if(Serial.available())                   // si un quelque chose est disponible sur le port 23;32;
{
  char value1[20]="";         // variable tableau stockant la valeur 1; 20 pouvant être réduit au nombre de caratères max
    char value2[20]="";         // variable tableau stockant la valeur 2 ....
    String val1;                 // variable String stockant la valeur 1
    String val2;                 // variable String stockant la valeur 2
    int valeur1;                                 // variable int stockant la valeur
    int valeur2;                                // variable int stockant la valeur
    Serial.readBytesUntil(';',value1,20);
    Serial.readBytesUntil(';',value2,20); // stockage des données 20 peut être réduit au nombre max de caractères
     
      val1=value1;                       // conversion des données en string
      val2=value2;
     
      valeur1 = val1.toInt();                  // conversion de paramètre et valeur en int
      valeur2 = val2.toInt();
}
 

 

Après si possible mieux vaut ajouter un byte de start ... permettant de vérifier que tu t'apprêtes bien à lire une trame car le readBytesUntil est blocant ... Et si tu commence à recevoir un bout de trame au milieu d'une trame ou autre et que tu ne reçoit plus de data après tu risque d'être bloqué ... le troisième paramètre : " 20 " dans le readBytesUntil fonctionne un peu comme un timeout, mais au lieu que ça soit concernant le temps, ça concerne le nombre maximal de caractère qui seront lu et stocké dans le tableau de char ! 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#45 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 31 août 2015 - 06:06

Merci !

 

Ca fonctionne, mais avec des ratés de temps en temps : quelques fois il part dans une autre direction au lieu de me suivre. Concernant le byte de start, je vais envoyer par exemple "1;" en tête de ma trame, et dans mon programme, si la première valeur lue est 1: je lis les autres. Dans l'idée c'est ça ?



#46 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 01 septembre 2015 - 02:23

oui dans l'idée c'est ça ! Mais vu que tu travail en caractère utilise plutôt quelque chose comme "#"  ou "$" ... en prend garde à bien gérer tes deux caractères de start si tu mets un truc comme " 1;". 

Pour commencer tu peux faire une trame du genre : 

$123,14,-13;   (cas pour 3 valeurs avec  $ start et ; stop )

Typiquement tu peux aussi ajouter le check sum comme une valeur supplémentaire : 

 

$123,14,-13,124;     ( le check sum te permettra de vérifier la validité de tes trames et de les exécuter que si elles sont valide! )


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#47 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 05 septembre 2015 - 06:14

J'ai rajouté le byte de start. Plus de problèmes de réaction bizarre.
J'ai aussi trouvé d'ou venait ce problème, tous les x secondes le logiciel écrit "connecté" dans la fenêtre de dialogue. Les réactions anormales avaient lieu à ce moment là.
Donc maintenant je ne lis que les trames corrects.

Sinon, je suis aussi passé de 30fps à 110 fps en moyenne sur la détection de visage en désactivant des options. Et comme je n'ai plus le fameux délai dans mon programme, l'ensemble est devenue tellement réactif que la régulation que j'avais faite n'est plus suffisante. La tête oscille.

Donc opération réussi, prochaine étape: Refaire une régulation. Je vais poster une vidéo ou on voit la régulation dans les choux :)



#48 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 20 septembre 2015 - 12:02

Pour améliorer la gestions de mes moteurs, et des régulations, je vais modifier mes servomoteurs. J'ai commandé cette carte http://www.gotronic.fr/art-commande-de-moteur-cc-mc33926-2-5a-21714.htm avec une copie d'arduino nano (2€ sur wish, et fonctionne très bien!).

 

Le but c'est de pouvoir contrôler le couple grâce au retour d'info sur le courant du moteur, de contrôler la vitesse avec le pwm, et la position réelle en soudant un fil sur le potard.

 

Je ne sais pas encore si je vais réutiliser l'électronique interne du servo, quels avantages à la garder vu ce que permet de faire cette carte ?

 

Je reçois ça cette semaine, je ferai un retour sur le résultat ;)



#49 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 27 septembre 2015 - 08:07

Des news. La carte pour contrôler les moteurs est faite, je n'utilise plus l'électronique des servomoteurs.

Avec ce nouveau système j'ai un retour de couple, de position, je peux contrôler le couple et la vitesse, et faire un pid totalement personnalisé.

 

https://www.youtube....eature=youtu.be

 

Dans la vidéo on voit le fonctionnement du pid : plus l'écart de position est grand et plus je force dessus, plus il regagne sa position avec force et vitesse.

Une fois tout ca peaufiner, il faudra faire une connexion du même type que les dynamixels, parce que faire ce système sur tous les moteurs mange trop d'e/s sur la arduino méga !



#50 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 28 septembre 2015 - 07:48

Hum... Si j'ai bien compris, tu vires l'électronique du servo moteur ( un bloc d'asservissement + driver de moteur cc )  pour la remplacer par ta propre électronique ( un bloc asservissement "fait main " composé d'une arduino qui se branche sur le potentiomètre des servo  + un driver de moteur cc acheter à part) ? 

ça ne serait pas plus rentable d'adapter l'électronique déjà existante ? Tu déconnectes le potentiomètre de la carte électronique du servo et le remplace par deux résistances, tu ajoutes un capteur de courant ( ou une résistance de shunt genre 1ohm ou 2 ohm en fonction du courant consommé )  et tu te sert du potentiomètre que tu as déconnecté comme "codeur absolue"  .... 
=> 1 sortie pwm pour commander la vitesse du servo 

=> 1 entrée analogique pour la position

=> 1 entrée analogique pour le courant mesuré 

 

Avec cette config ça ne mange pas "trop" d'entrée sortie ... 

Et en plus tu te retrouve avec une jolie double boucle d'asservissement, en vitesse ( interne au servo après modif) et en position contrôlé par la arduino. 

 

Et si tu considères que ça en mange trop, avec une arduino pro mini tu as 8 entrées analogique ( si tu n'utilise pas l'I2C ) sinon tu en as 6 et tu as suffisament de PWM pour gérer 3 ou 4 moteurs. 

Tu peux te faire un " Slave " qui gère 3 ou 4 moteurs qui se contrôle via UARTou SPI , ( controle de 4 moteurs possible ) I2C ( max 3 moteurs ) . 

 

Qu'en penses tu ? 

 

PS: désolé de pas avoir répondu plus tôt j'avais mal lu et pas compris ce que tu souhaitais faire dans ton message précédent... sinon je t'aurais dit ça plus tôt. Après maintenenant tu peux faire les deux et comparer quelle solution est la meilleure, rien ne vaut l'expérience !  :)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#51 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 28 septembre 2015 - 03:36

C'est pas grave mieux vaut tard que jamais

Le problème en gardant l'elec de base c'est le pwm. Sur les petits servo hitec ca va encore ca ne fait pas trop de bruit, mais sur des plus gros (35kg/cm et 60deg/ 0.08s ) leur pwm est trop bas, ca fait un bruit atroce. Avec le driver pour moteur cc, la fréquence de ma pwm est celle de l'arduino (que j'ai modifier dans le registre, 60kHz a la place de 1kHz, donc plus aucun bruit!)

Mais ta proposition est intéressante pour les petits servo, pour faire les doigts par exemple.

Apres pour la communication, je n'ai pas encore réfléchis à comment faire. J'aurai bien aimé faire une sorte de réseau anneau avec des ordres adressées pour chaque moteur. Il y aurait un mode de communication a préférer pour ca? Sans être limité à 3 4 moteurs?

 

Edit: un autre avantage, que je viens de voir : https://www.youtube....h?v=FW9595Sp4BI

ponctuellement et dans certaines conditions, pourquoi pas augmenter la tension d'alimentation. Ce qui me permet de prendre des lipo à 11.1v, d'alimenter les servo avec leur tension nominale, et de les booster de temps en temps à 11.1v sans griller l'lectronique !



#52 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 06 novembre 2015 - 06:11

J'ai une question concernant la résistance de shunt. Comme elle doit etre de faible valeur, admettons que je me fasse un pont en h, est ce que c'est possible d'utiliser la Rds comme résistance de shunt?

Meme si la Rds change avec la température, c'est toujours possible de recalibrer en mesurant la température du mosfet.

Et faire un pont diviseur pour mesurer la tension si nécessaire?

#53 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 06 novembre 2015 - 11:30

Hum pas sûr que ça marche ça ... J'ai peur qu'en essayant de faire ta mesure tu perturbes le MOSFET ... Essaye de faire un schémas de ce que tu veux faire et on en rediscute ! :)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#54 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 06 novembre 2015 - 04:03

Quelque chose de ce genre : pont h intensite.jpg

 

Avec un petit C pour lisser la mesure par rapport au duty cycle.

 

Mais avec un faible Rds + la division d'un pont + les 10 bits de lecture de l'arduino ça risque de faire juste en précision non ?

 

Par exemple, pour un Rds de 0.08 Ohms et un pont qui divise par 2:

 

Résolution de la lecture -> 5v / 1024 = 0.0049v  que je multiplie par 2 = 0.0098v.

 

En suite, I = 0.0098/0.08 = 0.122 A. C'est bien ça ?



#55 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 09 novembre 2015 - 07:53

Ou autre idée, comme j'alimente le moteur avec un pwm, je vais avoir un courant qui varie tout le temps avec ce pwm. Si je mets quelques spires autour d'un fil d'alimentation du moteur et que je réausse le signal optenu ( oscilloscope pour bientot ^^ ) ca peut fonctionner ? Ou le bobinage du moteur va completement lisser son courant ?



#56 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 10 novembre 2015 - 12:16

Si tu regardes le schémas que tu as dessiné tu vas voir que tu vas avoir un soucis en fonction du sens de rotation de ton moteur ... Et ça ce n'est que le début des soucis.  Pourquoi ne veux tu pas simplement mettre une résistance de shunt ou utiliser un pont en H qui intègre la résistance de shunt ou à minima ont laissé la place pour intégrer la dite résistance ?  

Autre idée tu rajoutes séparément un capteur de courant que tu branche en série sur ton fil moteur ... tu en as pour 4 euros ou moins... 

Combien ton moteur va t il consommer environ ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#57 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 10 novembre 2015 - 05:56

Je n'ai dessiné que la partie pour mesurer dans un sens, pour l'autre sens c'est le même schéma sur l'autre mosfet. Avec ce système, quels genres de perturbations au niveaux des mosfets ?

 

Je n'aime pas la resistance de shunt car elle utilise trop d'énergie. 

 

J'aimerai calibrer le pont pour une intesité de 10A maxi. 

 

Ils fonctionnent comment ces petits capteurs de courant ?



#58 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 10 novembre 2015 - 09:01

Exemple de petit capteur de courant tout fait  en 12,5A : 

http://www.gotronic.fr/art-capteur-de-courant-12-5a-mr391-21685.htm


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#59 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 302 messages
  • Gender:Male

Posté 10 novembre 2015 - 10:52

Ok merci! Sur le site c'est marqué dans la description " Plage de mesure: -5 A à +5 A en AC ou DC "  une erreur dans la description peut être.. 

 

Ils utilisent un shunt de 1.2 mOhms, donc pas beaucoup de perte par rapport a 1 ohm :)

 

Pour faire le lien avec le projet, je reste toujours à la recherche de la bonne motorisation pour les bras et jambes.. Ce que j'ai fait avant me suffit pour des petites articulations mais pas pour les épaules ni jambes.  Donc pour l'instant je cherche du coté des moteurs cc car on les contrôle facilement, y'en a des puissants pour pas trop cher et avec des réducteurs précis et solides. Une autre solution qui me fait de l’œil c'est des brushless sensored.

 

Sinon je termine enfin la tête, finalement une 2ème camera sera intégrée pour faire de la stéréo vision. J'ai deja fait quelques testes avec 2 cameras (de mauvaise qualité) et c'est plutôt précis, ça dépend beaucoup de la calibration. 

 



#60 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 176 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 10 novembre 2015 - 11:21

Tu veux quoi comme couple et comme vitesse de rotation ? 
Et quel prix te semble convenable pour un moteur ? 

 

En tout cas sympas ta démonstration pour la mesure par vision stéréoscopique ;) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users