Aller au contenu


Photo

Glenn Robot Humanoide


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

#1 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 05 juillet 2016 - 06:11

Bonjour, (si si je suis passé par la case présentation ^^ )

 

alors voilà, j'aimerais construire (sans grande prétention)  un robot humanoïde , mais sans partir d'un kit ( Ou comment choisir le chemin difficile ! x) ).
Dans un premier temps je vais d'abord me contenter de construire tout ce qui se trouve au dessus du bassin, (colonne, bras et tête) :

 

- Langage : Python 3.x  Changement de langage, j'apprend C++ et je reprend tout depuis le début.

 

- Raspberry pi 3 : système Raspbian

 

- Arduino Mega

 

- LoLin 32D Pro (ESP32) : remplace l'Arduino Mega

 

Convertisseur de niveau logique 3.3V 5V

 

- Camera : actuellement pour test la Pi camera IR.

Datasheet : -

 

- Contrôleur servomoteurs Pololuhttp://www.robotshop.com/eu/fr/controleur-servomoteurs-usb-24-canaux-mini-maestro.html

 

- Ecran E-paper 1.54"https://fr.aliexpres...2311.0.0.HlZ2d3

 

- Ecran Oled 1.3" I2Chttps://fr.aliexpres....3ab76c37z6A22A

 

- 2 Micros MAX9814https://www.aliexpre...37-29773cb153c8

Datasheet : https://datasheets.m.../ds/MAX9814.pdf

 

- Capteur de distanceVL53L0X V2

Datasheet : http://www.st.com/content/ccc/resource/technical/document/datasheet/group3/b2/1e/33/77/c6/92/47/6b/DM00279086/files/DM00279086.pdf/jcr:content/translations/en.DM00279086.pdf

 

- Capteur de temperature : DHT22

Datasheet : https://www.sparkfun...ature/DHT22.pdf

 

- 3 Capteurs ultrason HC-SR04

Datasheet : http://www.micropik.com/PDF/HCSR04.pdf

 

- 3 Capteurs optique infrarouge TCRT5000 (à voir si je m'en sors avec ça) : http://fr.aliexpress.com/item/1PCS-TCRT5000-Reflective-Optical-Sensor-Infrared-Switch-Light-emitting-Diode/32628770929.html?spm=2114.13010608.0.139.nY26hR

Datasheet : http://pdf1.alldatasheet.com/datasheet-pdf/view/252412/VISHAY/TCRT5000L.html

 

- IMU 9 axes MPU9250 6500 : 

Datasheet : https://www.invensen...-axis/mpu-9250/

 

- 1 RTC

Datasheet : https://datasheets.m...n/ds/DS3231.pdf

 

- Imprimante 3D : Tevo Tarantula

                             Creality CR10S

 

- Logiciel de modélisation : Fusion 360

 

- Liens utiles : 

 

https://www.mcmaster.com/

 

 

Le but en quelques lignes et d'apprendre le monde de la robotique (sans prétention) et de me faire plaisir avec cette apprentissage, et donc, le robot pourra interagir avec son environnement via les capteurs et pourquoi pas placer une petite IA, mais bon, je ne suis pas encore à l'étape de l'IA (même loin), déjà pouvoir assembler tous ces capteurs et que tout "communique" ensemble. :)

 

Merci :)

Image(s) jointe(s)

  • signature_01.png

signature_01.png -->

 

Mon Tipeee
 


#2 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 570 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 05 juillet 2016 - 07:19

Si je comprends bien tu voudrais faire comme sur la vidéo mais avec le RPI 3  à la place de l'arduino, c'est ça ?

Je ne vois pas pourquoi ça ne fonctionnerait pas, vu que le PCA9685 se connecte en I2C, il y a juste à écrire le bon programme en python :D


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#3 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 05 juillet 2016 - 07:39

Oui en gros c'est ça, en revanche j'ai testé pas mal de code et bidouillé d'autres je ne trouve pas ça terrible.


signature_01.png -->

 

Mon Tipeee
 


#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 924 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é 05 juillet 2016 - 09:20

Et si tu postais ton code et ton résultat peut être qu'on pourrait plus facilement t'aider ! =)


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 ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#5 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 05 juillet 2016 - 10:23

Pour avoir essayé au début d'utiliser un driver clone adafruit j'ai eu beaucoup de problème pour passer la puissance.....Le régulateur du driver ne supportait pas la puissance n'y les pistes :
 
Voici la réponse d'adafruit :
 

by adafruit_support_bill on Tue Apr 26, 2016 12:42 pm
With all moving at the same time, that is over 10A. If they are heavily loaded, it could be considerably more.

At that point, you are pushing the limits of not only the reverse polarity MOSFET, but the traces on the board. I'd consider connecting servo power & GND directly to the servo headers via the 4 un-used servo positions.

 
Le fil : controleur-maestro-24-ch-vs-adafruit-16-ch
 
Je me suis donc orienté vers une carte pololu maestro 24ch.....La encore il est recommandé de brancher ton alimentation directement sur les broches +/- des servomoteurs non utilisés.
 
Avec un driver adafruit c'est ton programme qui devra gérer toutes les commandes aux servomoteurs....Le programme est donc plus lourd.
 
Avec une carte maestro, tu pourras enregistrer des skectch directement dans celle-ci est envoyer une commande pour exécuter le sketch que tu souhaites. Le programme est donc plus léger. Mais il est aussi possible d'envoyer des commandes à un servomoteur individuellement......De plus, l'interface pololu est vraiment très bien pour piloter les servomoteurs, trouver le min/max pulse de chaque servomoteur et pour programmer/enregistrer les sketch......Je ne connaissais pas ce produit mais j'en suis très content.....
 
Dans un premier temps il faut vraiment vérifier que tu arrives à passer la puissance sinon tu auras des servomoteurs aux comportements aléatoires......
 
Par contre, tu devrais réussir à faire exactement les même mouvements avec l'une ou l'autre carte.....A voir quand même en terme de temps de réponse et précision.
 
La grosse différence sera la complexité du code ....



#6 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 06 juillet 2016 - 10:33

Bonjour :)

 

Donc niveau code j'ai voulu tester des choses toutes simple en essayant de comprendre le datasheet

Fichier joint  PCA9685.pdf   399,2 Ko   612 téléchargement(s)

from Adafruit_PWM_Servo_Driver import PWM
import time

pwm = PWM(0x40, debug=False)
pwm.setPWMFreq(50)

while True :

  pwm.setPWM(2, 0, 100)  # ici je suis à -90°
  time.sleep(1.5) #1.5 seconde
  pwm.setPWM(2, 0, 300)  # ici je suis à 0°
  time.sleep(1.5)# pareil
  pwm.setPWM(2, 0, 600)  #ici je suis à 90°
  time.sleep(1.5)

Donc avec ça les servo bougent sans problème à vitesse maxi, mais si j'essaye de suivre ce que j'ai cru comprendre sur le datasheet autour de la page 16

 

from Adafruit_PWM_Servo_Driver import PWM
import time

pwm = PWM(0x40, debug=False)
pwm.setPWMFreq(50)

while True :

  pwm.setPWM(2, 100, 300)  # je cherche à créer une impulsion qui part de 100 pour arriver à 300
  time.sleep(1.5) #1.5 seconde
  pwm.setPWM(2, 0, 300)  # ici je bloque le servo à 300 pour qu'il reste toujours actif
  time.sleep(1.5)# pareil
  pwm.setPWM(2, 300, 600)  #ici une impulsion jusqu'à 600
  time.sleep(1.5)
  pwm.setPWM(2, 600, 100) #ici de retour à 100
  time.sleep(1.5)

Le truc c'est que mes tests fonctionnes quand ils veulent, cad, sur la boucle ça tourne en rond pendant 15 mn et le servo va réagir, quoi, 4 ou 5 fois sans faire ce que je lui demande.
Bon il est vrai que je ne suis pas un super codeur, loin de la même, (mais c'est passionnant tout de même :) ) et je rappel que pour l'instant j'essaye de gérer accélération, vitesse et décélération. 
Et donc ce que j'ai pu trouver sur le net et voyant le peu de possibilités qu'offre l'import j'ai tout de même un doute :/

En revanche quand je lis la doc sur le mini maestro cela m'a l'air beaucoup plus complet dans la librairie niveau options (vitesse, accélération etc etc) du moins les exemples de code que j'ai pu lire.

 

Et quand je vois l'exemple sur la vidéo plus haut, ben ça fait envie de faire pareil :)

 

Edit : je précise que la carte PCA est branché sur une alimentation externe et non via la pi.

Et aussi que au final (je ne sais plus sur quel blog du forum j'ai vu ça) le robot réagira avec son environnement et non des animations prévu à l'avance...

... je viens de retrouver le blog :) http://www.robot-maker.com/forum/blog/25/entry-25-robot-quadrupede-intelligent/

 

Merci


signature_01.png -->

 

Mon Tipeee
 


#7 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 06 juillet 2016 - 11:38

La carte maestro est, selon mon avis, plus complète pour gérer des servomoteurs en position, vitesse et accélération mais des pro. pourraient peut être venir me contredire. je suis moi aussi un peu débutant...

 

Avec la carte maestro, il est  tout à fait possible de programmer des sketch qui pourrons prendre en compte des événements extérieurs soit par le bus série soit par lecture d'un canal configuré en entrè.

 

Et il est aussi possible de configurer un canal en sortie.....commande de led, de relais, .....

 

Tu peux donc programmer les mouvements des jambes dans un sketch et dans le cas d'une rencontre d'obstacle faire passer un canal input à l'état haut ce qui pourra être interprété ensuite par ton skecth comme tu l'as prévu...Par exemple le robot arrête de marcher et tourne....

 

Tu peux aussi, comme avec un driver PCA9625 passer les commandes aux servomoteurs individuellement...

 

Au final, tu as les fonctions du driver PCA9685 + l'accélération et la vitesse + plus la possibilité d'exécuter des skecth pour alléger ton programme sur la carte ''mère''

 

Le seul point qui pourrait porter préjudice à la carte maestro c'est le langage moins facile à appréhender mais c'est pas si compliqué que ça.

 

P.S.

 

il ne me semble pas que tu sois obligé de maintenir une commande pour laisser actif un servomoteur à une position donné car l'objectif de ces driver c'est justement de maintenir la dernière position reçue...

 

Enfin, concernant le branchement de l'alimentation voici comment il faut procéder quand il est impératif de passer une forte puissance :

 

maestro.PNG

 

La batterie est directement connecté sur une des broches non utilisé d'un servomoteur.

 

Tu peux/dois faire de même avec une carte PCA9685....Voir carrément déporter l'alimentation de tes servomoteurs à l'extérieure de ta carte PCA si tu ne veux pas risquer de cramer les pistes trop petites pour supporter de forte intensité



#8 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 06 juillet 2016 - 12:59

Tu peux aussi, comme avec un driver PCA9625 passer les commandes aux servomoteurs individuellement...

Au final, tu as les fonctions du driver PCA9685 + l'accélération et la vitesse + plus la possibilité d'exécuter des skecth pour alléger ton programme sur la carte ''mère''

Ben je trouve cela plutôt cool et plus complet :)

 

Le seul point qui pourrait porter préjudice à la carte maestro c'est le langage moins facile à appréhender mais c'est pas si compliqué que ça.

C'est quoi comme langage, j'ai trouvé quelques lignes de code en python, mais bon...

 

P.S.

il ne me semble pas que tu sois obligé de maintenir une commande pour laisser actif un servomoteur à une position donné car l'objectif de ces driver c'est justement de maintenir la dernière position reçue...

Et bien oui lorsque j'écris ça :

pwm.setPWM(2,0,300)

 ça va conserver la position

 

mais si j'envoi une impulsion sur une longueur 

pwm.setPWM(2,100,300)

 l'impulsion part de la position 100 pour arriver en théorie à la position 300 et ensuite y a plus de jus. (mais avec ces valeurs ça ne fonctionne pas hélas, mais ça fonctionne sur du 450, 600) bizarre.

Donc si il y a du poids dessus et que le servo est bien incliner alors ça continue de descendre du au poids :)


signature_01.png -->

 

Mon Tipeee
 


#9 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 06 juillet 2016 - 08:50

Est ce que tu as déjà commencé par rechercher les pulses min et max pour chacun des servomoteurs....
 
Il faut savoir quelle est exactement la consigne que tu dois envoyer pour atteindre 0° et quelle est exactement la consigne pour atteindre 180°, sans avoir bien sûr le servomoteur qui arrive en butée (l'arrivée en butée s'entend généralement à l'oreille, donc ajuster un peut la consigne).
 

Contrôler la position d'un servomoteur depuis la fenêtre Terminal du logiciel Arduino
 
Si tu utilises une autre carte que arduino, soit tu trouves un exemple sur le net soit tu adaptes le soft ci-dessus.
 
Exemple de résultat que du devras obtenir :
 
pulse_min_S1 = 127
pulse_max_S1 = 426
 
pulse_min_S2 = 136
pulse_max_S2 = 446
 
pulse_min_S3 = 118
pulse_max_S3 = 409

 

ATTENTION, avec certaines bibliothèques tu auras une plage de 0-400 pour les pulses et avec d'autres une plage de 550-2300 : A LIRE

 

 

Concernant le code pour piloter une carte pololu maestro tu trouveras toutes les informations sur le site pololu.....

 

Je te confirme qu'il ne sert à rien d'envoyer une consigne pour maintenir un servo. en position. C'est justement le rôle du driver.

 

Une fois la consigne reçu, le servo. se positionne et n'en bouge plus. Sauf si il n'a pas assez de puissance pour tenir le couple nécessaire ou si bien sûr son couple est inférieur à celui qui est appliqué sur son palonnier.....Dans les deux cas la consommation, en ampère, va très fortement augmenter.

 

Ce qui peut provoquer l'effondrement de ton alimentation ou la mise en sécurité de ton régulateur ou de ton driver pour éviter la surchauffe......



#10 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 07 juillet 2016 - 10:01

Alors, ou j'ai le mini et maxi pour tous, ce sont tous les mêmes servomoteurs.

100 mini

600 maxi

 

J'utilise un raspberry pi 3 avec python 3.

 

Je te confirme qu'il ne sert à rien d'envoyer une consigne pour maintenir un servo. en position. C'est justement le rôle du driver.   

 

Oui je suis tout à fait d'accord avec toi lorsque je fais tout simplement (2, 0, 300) ça me cale le servo au milieu et maintient la position.

 

En revanche lorsque je donne juste une impulsion d'un départ vers une arrivée (2, 100, 500) j'ai une impulsion qui part en théorie de 100 pour arriver à 500 mais qui ne tient pas. 

Puis à chaque boucle ça fonctionne quand ça veut.

 

Et si on lit le mode d'emploi de chez adafruit, ben y a pas grand chose je trouve.

 

Arguments
  • channel: The channel that should be updated with the new values (0..15)
  • on: The tick (between 0..4095) when the signal should transition from low to high
  • off:the tick (between 0..4095) when the signal should transition from high to low

 

https://learn.adafru...brary-reference

 

Alors il est clair que je ne suis pas un programmeur expérimenté mais là, j'ai beau regarder du code, c'est toujours pareil et même lorsque je fais des recherches en vidéos avec le pca ben il n'y a rien de formidable, surtout comparé à la première vidéo que j'avais posté plus haut.


signature_01.png -->

 

Mon Tipeee
 


#11 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 07 juillet 2016 - 11:20

Concernant les serovmoteurs et même si ils sont tous de même marque et du même modèle très peu d'entre eux aurons les mêmes pulsemin et pulsemax.....
 
C'est pour cela qu'il faut rechercher ces valeurs et ce pour chacun des servo......
 
 
Concernant la commande : setPWM(self, channel, on, off) : il est question d'indiquer la valeur 'tick' entre 0..4095 lorsque le signal se met en marche, et lorsqu'il s'arrête...........Ok alors !!??
 
 
Voici ce que l'utilise :

  int pulseLen = map( position-a-atteindre°, 0, 180, PULSEMIN, PULSEMAX );

  pwm.setPWM(broche9, 0, pulseLen);//

Et ça marche.....



#12 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 07 juillet 2016 - 02:27

Décidément c'est d'un complexe pour faire fonctionner quelques pauvres malheureux servo :'(

 

Concernant les serovmoteurs et même si ils sont tous de même marque et du même modèle très peu d'entre eux aurons les mêmes pulsemin et pulsemax.....

 

Ben ceux qui sont en fonction actuellement je les ais tous testé et j'ai le même résultat partout, j'ai du mal m'y prendre des ces cas la.

 

Bon et bien je vais essayer de trouver un équivalent à la fonction map(), car j'ai l'impression que sur python ça ne s'utilise pas pareil, ou j'ai rien pigé...

 

Et je vais faire mes tests sur les servo que j'ai reçu de même marque/modèle.

 

 

Merci

 

 

 


 


signature_01.png -->

 

Mon Tipeee
 


#13 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 07 juillet 2016 - 02:35

Je me suis déjà confronté au pb de traduire de l'arduino en python pour le raspberry.

Dans la doc arduino, ils donnent le code de la fonction map() ;)

 

https://www.arduino....n/Reference/Map

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}



#14 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 07 juillet 2016 - 04:34

Merci, j'essaye de comprendre exactement la fonction map() sous python :)

Car sur arduino ça parait simple, surtout lorsque j'avais appris avec le kit, mais là, je sent que la route va être longue, trèèèèèèèssssss tttrrèèèsss longue :)

 

J'en profite aussi pour faire des tests avec ce que j'ai appris en python en me servant des servomoteurs.

 

 

tttrrèèèèèèssssss longue


signature_01.png -->

 

Mon Tipeee
 


#15 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 07 juillet 2016 - 08:13

Pas de fonction map en python..........???? Oh punaise !!!!



#16 Bobox

Bobox

    Habitué

  • Membres
  • PipPip
  • 157 messages
  • Gender:Male
  • Location:Montigny le Bretonneux

Posté 08 juillet 2016 - 07:54

Il y a une fonction map en python. Mais ça ne fait pas du tout ca. C'est plus pour faire de la programmation fonctionnelle.
Mais il n'y a pas de fonction map en C non plus, juste une fonction map fournie avec la librairie Arduino.
Path a retrouvé son code exacte, c'est trivial à porter en python:

#17 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 08 juillet 2016 - 07:56

Dans ce cas il faut coder :

 

resultat = (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;



#18 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 12 juillet 2016 - 04:30

Coucou, (au passage impossible de me connecter via le navigateur de la raspberry, bref je vais taper tout le code), donc j'ai réussi à faire un ptit truc dites moi svp ce que vous en pensez, je peux maintenant gérer la position des servomoteurs en degrés :) (content rosco). :)

 

Bon sinon, mes servos sont tout de même tous à la même position, j'ai pas vraiment réussi à déterminer les valeurs de chacun, si ce n'est que des les avoirs testé un par un aux extrêmes à chaque fois.

 

PCA9685 - Python 3 / Gestion des servomoteurs en degrés.

from Adafruit_PWM_Servo_Driver import PWM
import time

pwm = PWM(0x40, debug = False)
pwm.setPWMFreq(50)

servomin = 100
servomax = 600
sourcemin = 0
sourcemax = 180
degres = 0

def degress():
  result = int((degres - sourcemin) * (servomax - servomin) / (sourcemaxi - sourcemin) + servomin)
  return result

while True : 
  if degres < 180
    pwm.setPWM(0, 0, degress())
    degres += 1
    print (degress(), " : ", degres)

  elif degres == 180:
    degres = 0
    pwm.setPWM(0, 0, degress())
    print (degress(), " : ", degres)
    
    break

Bon suis tout de même assez content de moi, ça me permet aussi de jouer sur la vitesse on va dire, si vous avez suggestions suis preneur :)

 

Etape suivante, accélération et décélération.

 

Merci les gars ^^


signature_01.png -->

 

Mon Tipeee
 


#19 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 12 juillet 2016 - 07:34

N'y aurait'il pas une petite erreur :

 

result = int((degres = sourcemin) * (servomax - servomin) / (sourcemaxi - sourcemin) + servomin)

 

c'est plutôt :

result = int((degres - sourcemin) * (servomax - servomin) / (sourcemaxi - sourcemin) + servomin)

 

++



#20 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 12 juillet 2016 - 07:43

Oui exact une erreur de frappe en le recopiant :)

 

Edit : je ne vois pas de quoi tu parles, lol ^^


signature_01.png -->

 

Mon Tipeee
 





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

0 members, 0 guests, 0 anonymous users