Aller au contenu


Photo
* * * * * 2 note(s)

Glenn Robot Humanoide


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

#1 Oliver17

Oliver17

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

Posté 05 juillet 2016 - 06:11

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

 

alors voilà, j'aimerais construire un humanoïde (sans grande prétention.), mais 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 : Raspbian

 

- Arduino uno (au cas ou et j'ai commencer à apprendre dessus, à voir si je m'en sers pour mon projet)

 

- 13 servomoteurs HD-1501MG analogique, 60g, 6v, couple 17 kg/cm, vitesse 0.14sec/60° (je vais surement commander d'autres servo plus léger)

Datasheet : https://www.pololu.c...f?file_id=0J729

 

- 2 servomoteurs JX Servo PDI-6225MG-300° , 60g, 6v, couple 25.3 kg/cm, vitesse 0.21/60° (pour l'axe X des épaules)

 

- 3 servomoteurs JX Servo PDI-HV5932MG-180° , 59.3g, 6v, couple 25.2 kg/cm, vitesse 0.12/85° (et bim j'avais pas fais gaffe, pour du 32.3 kg/cm il faut les brancher en 8.4v)

 

- Des pièces type lynxmotion pour mes tests, plus tard je modéliserai une structure plus sympathique :)

 

- Camera : actuellement pour test la Pi camera IR (et ouais :( )

Datasheet : -

 

- 2x PCA9685 16 channels : http://fr.aliexpress...08.0.134.nY26hR
Datasheet : https://cdn-shop.ada...ets/PCA9685.pdf

 

- Contrôleur servomoteurs Pololuhttp://www.robotshop...ni-maestro.html

 

- Ecran Nextion 3.2 "http://fr.aliexpress...608.0.51.nY26hR ou https://nextion.itead.cc/

Datasheet : -

 

- Ecran 1.8 " (à voir quel écran je vais utiliser) : http://fr.aliexpress...608.0.59.nY26hR

Datasheet : (j'ai un doute) https://cdn-shop.ada...T7735R_V0.2.pdf

 

- Module ADS115 ADC 4 canaux (ou dois je me prendre le MPU3008 ?) : http://fr.aliexpress...608.0.79.nY26hR

Datasheet : https://cdn-shop.ada...ets/ads1115.pdf

 

- 2 Capteurs micro MAX9814https://www.aliexpre...37-29773cb153c8

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

 

- 3 Capteurs ultrason HC-SR04http://fr.aliexpress...08.0.149.nY26hR

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

 

- 3 Capteurs optique infrarouge TCRT5000 (à voir si je m'en sors avec ça) : http://fr.aliexpress...08.0.139.nY26hR

Datasheet : http://pdf1.alldatas.../TCRT5000L.html

 

- MPU 6050http://fr.aliexpress...08.0.144.nY26hR

Datasheet : https://www.invensen...-Datasheet1.pdf

 

- 1 RTChttp://fr.aliexpress...08.0.159.nY26hR

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

 

- et quelques capteurs qui étaient fournit avec l'arduino que je compte utiliser pour mon projet, tel que le détecteur de lumière par exemple...

 

- Imprimante 3D : Tevo Tarantula

 

- 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 intéragir 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 tout ces capteurs et que tout "communique" ensemble. :)

 

Je trouve cette vidéo très intéressante pour le mouvement des servomoteurs :  

 

 

 

 

Merci :)


Modifié par Oliver17, 05 septembre 2017 - 02:43 .


#2 levend

levend

    Bon à rien

  • Modérateur
  • PipPipPipPipPip
  • 2 919 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture...

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


Combats de robots : stratégie avant tout, le Combat des makers
Participer au financement de mes robots : https://www.leetchi....manuel-22554469


#3 Oliver17

Oliver17

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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.



#4 Mike118

Mike118

    Pilier du forum

  • Administrateur
  • PipPipPipPipPip
  • 5 608 messages
  • Gender:Male

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 ! =)


Robot-Maker ne se résume pas que au forum !
Jetez un oeil au blog, aux tutoriels, aux ouvrages, au robotscope  et à la  boutique : le shop des makers   !
N'hésitez pas à contribuer à la communauté et à partager vos trucs et astuces : Ensemble nous irons plus loin ! =)
 

Robot-Maker a pour vocation de :

  • Permettre à des hobbyistes passionnés de s'entraider pour qu'ils puissent mener à bien leurs créations.
  • Permettre à des projets innovants de voir le jour dans le domaine de la robotique et des nouvelles technologies.

à très bientôt ! 


#5 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 914 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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   74 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-mak...de-intelligent/

 

Merci



#7 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 914 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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 :)



#9 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 914 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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.



#11 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 914 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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

 

 

 


 



#13 Path

Path

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 457 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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



#15 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 914 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
  • 153 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
  • 914 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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 ^^



#19 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 914 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

  • Membres
  • PipPipPipPipPip
  • 1 215 messages
  • Gender:Male
  • Location:LR

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 ^^






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

0 members, 0 guests, 0 anonymous users