1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Module kinematics

Discussion dans 'EMC2 / LinuxCNC' créé par jeremie73, 7 Août 2011.

  1. jeremie73

    jeremie73 Nouveau

    Messages:
    6
    Inscrit:
    14 Juillet 2011
    Module kinematics
    Bonjour!
    J'aurais besoin d'aide pour faire fonctionner le module kinematics de EMC2.
    Voilà le problème:

    [​IMG]


    Lorsque la broche (segment rouge) va pivoter par rapport à B, le point I va se déplacer en I', or je voudrais qu'il reste en I. :mrgreen:
    Pour cela EMC2 devrait déplacer la broche par rapport à X de sin(α) x LB et par rapport à Z de -LB + (cos(α) x LB)... Mais comment lui dire? Il faut lui écrire dans un fichier texte?
    Je sais qu'il y a un rapport avec le fichier HAL mais j'en sais pas plus...

    Je vous remercie d'avance! :wink:
     
  2. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Module kinematics
    Bonjour Jérémie,

    As tu lu la doc? : http://linuxcnc.org/docs/html/motion_kinematics.html

    Il faut différentier les "joints" (liaison cinématique entraînée par un moteur) et les coordonnées cartésiennes (XYZABC...) du bout de l'outil appelé "axis". Le G-code est écrit pour les coordonnées "axis" c'est à EMC2 de se débrouiller pour faire bouger les moteurs.

    Pour cela, Il faut écrire 2 fonctions en C décrivent la cinématique, ie le passe d'un système de coordonnée à un autre :
    Le "Forward" : Transformation des coordonnées "joints" en coordonnées "axis"
    Le "Inverse" : Transformation des coordonnées "axis" en coordonnées "joints"

    Pour ton problème inspire toi de la doc et de la cinématique 5 axes donnée en exemple (5axiskins.c) : http://git.linuxcnc.org/gitweb?p=em...2088875f6fcf7f5c67a6ce88ea6b4eda531e5;hb=HEAD

    Ce n'est pas très dur tu verras, c'est juste un coup à prendre. Bon courage.

    Xavier
     
  3. jeremie73

    jeremie73 Nouveau

    Messages:
    6
    Inscrit:
    14 Juillet 2011
    Module kinematics
    Oui je l'ai lu, j'avais à peu près compris le système des joints et des axes par contre je n'avais pas vu le fichier exemple de la cinématique 5 axes!

    Je vais essayer de le déchiffrer et de le modifier, parceque je ne sais pas programmer. :lol:

    Une fois modifier je dois le mettre avec le fichier HAL dans le dossier config de ma machine ?

    En tout cas merci beaucoup pour ton aide! :wink:
     
  4. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Module kinematics
    Avec plaisir!

    Ok ça risque d'être un peu tendu sans connaissance en C. C'est le moment de t'y mettre! :wink:

    De mémoire, pour compiler et installer le module kinematic "totokin.c" tu ouvres un terminal et tu fais :
    Code:
    sudo comp --install totokin.c
    Il me semble qu'il te faut "emc2-dev" pour faire ça, donc il te faut installer le dit paquet dans ubuntu (apt-get ou synaptic).

    Bonne continuation

    Xavier
     
  5. Wolfuss

    Wolfuss Nouveau

    Messages:
    42
    Inscrit:
    24 Novembre 2011
    Dernière édition par un modérateur: 16 Avril 2015
  6. jeremie73

    jeremie73 Nouveau

    Messages:
    6
    Inscrit:
    14 Juillet 2011
    Module kinematics
    Bonsoir!

    Alors j'ai commencé à apprendre les bases du langage C mais je n'ai toujours pas réussi a comprendre le fonctionnement de kinematics...

    Mais j'arrive a contourner le problème: (l'histoire est longue mais je vous la raconte depuis le début...)

    La machine qui est en cours de réalisation est une 5 axes que je conçoit sous Catia V5. Les programmes 5 axes seront également réalisé sous Catia, le problème, c'est que je n'ai pas les postprocesseurs pour convertir le programme en fichier lisible par EMC2. Malgré cela, ont peut enregistrer le programme sous un format propre à Catia (exemple d'une ligne : "GOTO / 8.41245, 1.39812, -6.07797,-0.073444,-0.950235, 0.302754"), on a les coordonnées de X, Y, Z et trois coordonnées qui définissent l'angle de la fraise par rapport à la pièce. Donc j'ai créer un programme qui lit chacune des lignes et les convertit dans un format compréhensible par EMC2, il recopie les coordonnées X, Y, Z, en rajoutant chacune des lettres devant, puis il convertit les trois coordonnées angulaire en deux coordonnées B et C (ce qui donne ceci : "G1 X8.412450 Y1.398120 Z-6.077970 B-72.376910 C-94.419624").

    Donc finalement, je suis en train de modifier ce programme pour qu'il me demande la longueur de l'outil, et qu'il reconvertisse encore une fois les coordonnées en fonctions de cette valeur...

    En plus de ça la 5 axes n'est plus ce qu'elle devait être, je souhaitais au départ que la broche soit rotative et au final ce sera aura un plateau tilting.

    Voilà une photo de la conception actuelle si ça intéresse quelqu'un...

    [​IMG]


    C'est pas terminé mais j'y ai déjà passé quelques heures :lol:, pour l'instant la bête pèse 600Kg...
     
  7. Wolfuss

    Wolfuss Nouveau

    Messages:
    42
    Inscrit:
    24 Novembre 2011
    Module kinematics
    Salut

    Vraiment pas bête ton astuce je n'y avait pas pensé merci

    Pour la conversion des données angulaire en axes B et C, tu fais ça avec excel?

    pourquoi tu apprend le language C pour la kinematics c'est du python.

    Beaux boulot tu t'ai bien amusé pour faire la modélisation de la machine, mais tu as raison de la faire moi j'aurais bien fait de la faire, parce que après je t'explique pas les couilles que tu peut rencontrer.



    Tchao
     
  8. jeremie73

    jeremie73 Nouveau

    Messages:
    6
    Inscrit:
    14 Juillet 2011
    Module kinematics
    Non, c'est mon programme qui fait les calculs, en faite il lit les trois valeurs angulaire qu'il nomme "DistanceI", "DistanceJ" et "DistanceK", et ensuite il calcul les nouveaux angles avec ces lignes de codes:
    Code:
            if(DistanceJ < 0)
            {
                AngleB = -90+((asin(DistanceK))*360)/(2*3.141592654);
                AngleC = -90-((atan(DistanceI/DistanceJ))*360)/(2*3.141592654);
            }
            else
            {
                AngleB = -90+((asin(DistanceK))*360)/(2*3.141592654);
                AngleC = 90-((atan(DistanceI/DistanceJ))*360)/(2*3.141592654);
            }
    Et après j’obtiens les nouveaux angles "AngleB" et "AngleC" qu'il m'écrit dans le nouveau programme.

    Ah merde, je croyais que c'était du C... Ça expliquerais pourquoi je ne comprend toujours rien à ce module. :lol:

    Ouai c'est sur que ça aide, ça donne un bon aperçu!
     
  9. Wolfuss

    Wolfuss Nouveau

    Messages:
    42
    Inscrit:
    24 Novembre 2011
Chargement...
Articles en relation
  1. telson
    Réponses:
    10
    Affichages:
    1 181
  2. laidfroid
    Réponses:
    3
    Affichages:
    1 034

Partager cette page