WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Programmation des robots industriel et application sur le robot manipulateur Algérie machines outil 1

( Télécharger le fichier original )
par Abdelkader BENMISRA
Université de Saad Dahleb de Blida (Algérie) - Magistère en Génie Mécanique 2007
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Appendice B :

Program CALCUL DES ROBOTS INDUSTRIELES MODELISATION GEOMETRIQUE CINEMATIQUE ET DYNAMIQUE ELABORE PAR A. ALLALI , M.M.HATTALI, A.BENMISRA, M.MEGHERBI, N.BEDHIAF, R.MAZARI, K.AIMEUR, N.MOHAMMEDI, K.TOUMADJ, A.BRAHIMI, M.K.HALAIMIA.

En collaboration : Départements d\u8217Informatique, Mathématique, Electronique, Aéronautique et Génie mécanique de l\u8217Université de Saad Dahleb de Blida.

· Bibliothèque de l\u8217Ecole Nationale Polytechnique d\u8217El-Harrache, Alger.

· Département de Génie Mécanique, Laboratoire de Vibroacoustique et Bibliothèque centrale de l\u8217Université de M\u8217hamed Bouguarra de Boumerdès.

· Centre de Développement des Technologies Avancé, C.D.T.A., de Baba Hssene, Alger.

· Le Centre de Recherche sur l\u8217Informatique Scientifique et Technique, C.R.I.S.T., Ben Aknoun, Alger.

Université de Saad Dahleb de Blida
19 Mai 2006 22 :54

Nbre. d\u8217articulations, coord. Point initial, coord. Point final, temps T, \u916ÄT, paramètres de D.H. ; Positions, Vitesses, Accélérations, Forces et Couples, Variable articulaire.

Programme d'un espace de travail.

c PROGRAM: ESPACE DE TRAVAIl.

c PURPOSE: Entry point for the console application.

c program ESPACEDETRAVAIL

c Déclaration des variables

c Variables

integer n,i,j,k

real a,b,c,e,f,d,r,u,q,p,z2,z3,z4,z5,h1 ,h2,h3,h4

real ydmax, ydmin,ymin, ymax,ydmaxi,ydmini, ymini,ymaxi, pi real y1,y2,y6, y3,y4,px,py,pz ,hmin,hmax

real d3,d4

dimension T(3),ymin( 1 ),ymax( 1) ,hmin( 1) ,hmax( 1)

C

c introduction de la dimension des matrices de passages

pi=3. 1415926535897932384626433832795

c déclaration de PI pour la transformation des degrés en radiants

n=5

d3=0.6 d4=0.6 z2=600 z3=635 z4=700 z5=500

c Entrer des paramétres de Dénavit-Hertenberg

c write(*,*)'chargement des limites artiulaires '

! do k=1,n

c incrémentation chaque matrice de passage

write(*,*)'donner les limites angulaires des butées mécaniques

+ de 1 articulation k'

write(*,*)'theta min'

read(*,*) theta min

ymini=(theta min*pi)/1 80
write(*,*)'ymini'

write(*, *)'theta max'

read(*, *)theta max

ymaxi=(theta max*pi)/1 80 write(*,*)'ymaxi'

write(*, *)'theta min','=', ymini, 'theta max','=',ymaxi

c ymin(k)=ymini

ymax(k)=ymaxi

write(*,*)'(ymax(i)* 1 80/pi,i=1 ,5)'

write(*,*)'(ymin(i)* 1 80/pi,i1 ,5)'

do k=1,n

write(*,*)'donner les limites de la distance des butées mécaniques + de K articulation k'

write(*,*)'zmin'

read(*,*) zmin

write(*,*)'zmax'

read(*,*) zmax

write(*, *)'zmin',k,'=', zmin ,'zmax',k,'=',zmax

write(*,*)'hmin' read(*,*) hmin

write(*,*)'hmax' read(*,*) hmax

write(*, *)'hmin',k,'=', hmin , 'hmax',k,'=',hmax

c Entrer des paramétre de Dénavit-Hertenberg

c write(*,*)'chargement des limites artiulaires '

c incrimentation pour chaque matrice de passage

write(*,*)'donner les limites angulaires des butés mécanique

+ de 1 articuiation k'
write(*, *)'theta min'

read(*,*) ydmin

ymini=(ydmin*pi)/1 80

write(*, *)'theta max'

read(*,*) ydmax ymaxi=(ydmax*pi)/1 80

write(* ,*)'theta min',k,'=', ydmin, 'theta max',k,'=',ydmax

c ymin(k)=ymini

ymax(k)=ymaxi end do

write(*, *)'(ymax(i)* 1 80/pi,i= 1,5)'

write(*,*)'(ymin(i)* 1 80/pi,i1 ,5)'

c calcul des matrice de transformation

a=ymin(1)

b=ymax(1)

c=ymin(2)

e=ymax(2)

f=ymin(3)

p=ymax(3)

write(*,*)'calcul du vecteur P(Px,Py,Pz)Position des

+ coordonnées articulaires'

do 11 yl=a,b,0.05

do l1 y2=c,e,1

do 11 y3=f,p,0.1

c calcul des élément de T(m,m) et son remplissage

write(*,*)' calcul des élément de T(m,m) et son remplissage ' T(1 )=(z3-z4)*cos(y1)

T(2)=(z3-z4)*sin(y1)

T(3)= (h1)+(h2)+(h3)+(h4)+z2-z5

px=T(1)

py=T(2)

pz=T(3)

!write(*, *) (T(i),i=1,3) !write(*,*) (T(i),i=1,3),';' write(*,*) T(1),T(2),T(3)

10 format (3f)

11 write(*,*)

c Body of Espace de travail

end .

Appendice C : Programme principale

c PROGRAM implicit none

real,dimension( 100):: qi,qf,kv,ka,q,a,c,v,st,tf

real alpha1 ,alpha2,alpha3 ,alpha4,alpha5,teta1 ,teta2,teta3, +teta4,teta1 5

integer i,j ,ii,jj ,t,dt,tfm,w

WRITE(*, *) write(*, *)

write(*,*)'nombre articulation w'

read(*,*)w

write(*,*)'les parametres de Denavit Hartenberg'

write(*, *)'alpha1 ,alpha2,alpha3 ,alpha4,alpha5'

read(*, *)alpha1 ,alpha2,alpha3 ,alpha4,alpha5

write(*, *)'teta1 ,teta2,teta3 ,teta4,teta1 5'

read(*, *)teta1 ,teta2,teta3 ,teta4,teta1 5

write(*,*)'LES PARAMETRES DU CHAINON'

do 122 j=1,5

write(*, *)'coordone de point initial=qi(j)'

read(*,*) qi(j)

write(*,*)'coordone de point final=qf'

read(*,*) qf(j) write(*,*)'kv(j)' read(*,*)kv(j) write(*,*)'ka(j)' read(*,*)ka(j) read(*,*) qi(j),qf(j) ,kv(j) ,ka(j)

122 continue

st (1)=a cos (-1.) /180

st (2) =1

st (3)=1

st (4) =1

st (5) =1

dt=30

tfm=5

t=0

40 continue

call synch(qi,qf,kv,ka,tfm,st,tf)

print*,'tfm=',tfm

do 41 i=1,5

call para (qi(i),qf(i),kv(i),ka(i) ,q(i),v(i) ,a(i) ,st(i),tfm,t)

41 continue

print*, '(q(i) ,i=1,5) ,t,q'

print*,' (v(i) ,i=1,5), v'

write(*,*)'t q(2) q(3) q(4) q(5)'

write(*,*)t,q(2),q(3),q(4),q(5)

write(*,*)'t v(2) v(3) v(4) v(5)'

write(*, *)t,v(2),v(3),v(4),v(5)

write(*,*)'t a(2) a(3) a(4) a(5)'

write(*,*)t,a(1 ),a(2),a(3) ,a(4),a(5)

call dynami (q,v, a, c)

write(*,*)'t c(2) c(3) c(4) c(5)'

write(*,*)t,c(1 ),c(8),c(1 5),c(24)

write(*,*)'le vecteur <c(ii)> '

write(*,*)'calcul des forces et les momoment articulaires' write(*,*)t,(c(ii),ii=1 ,5)

write(*,*)t,(c(jj),jj=6, 11)

write(*,*)t,(c(jj),jj=1 2,17)

write(*,*)t,(c(jj),jj=1 8,24)

t=t+1

if(t.le.6)goto 40

end .

Appendice D :

Programme Synchronisation

C**************************************************************** C Synchronisation

C***************************************************************** subroutine synch(qi,qf,kv,ka,tfm,st,tf)

real qi(5),qf(5),kv(5),ka(5),tf(5),tfm,st(5),lamda(5),nu(5),s(5),

+sl, s2,p(5)

integer i,J

do 4 j=l,5

sl=abs(qf(j) - qi (j) )

s2=kv(j) **2/ka (j)

if ( sl.gt.s2) go to 4

print*,'La condition du palier vitesse pour 1 articulation'

4 continue

tfm =0

print*,'qi=' , (qi(i),i=l,5)

print*,'qf=',(qf(i),i=l,5)

print*,'kv= ',(kv(i),i=1,5)

print*,'ka=',(ka(i),i=1 ,5)

print*,'st=',(st(i),i=1 ,5)

pause

do 15 j=l,5

tf(j)=kv(j) /ka(j) +abs ( (qf(j)-qi(j) ) *st(j) ) /kv(j)

print*,'tf(j)',tf(j)

pause

if (tf(j).ge.tfm) go to 15

tfm=tf(j)

15 continue

print*,'tfm-synhcronisation ,tfm '

pause

do 2 j=1,5

s1 =tfm-kv(j)/ka(j)

lamda(j)=abs(qf(j) -qi (j)) *st(j) / (kv(j) *sl)

kv(j ) =lamda(j) *kv(j)

ka(j)=lamda(j)*ka(j)

print*,kv(j),ka(j),kv,ka, tps mini pause 'kv ,ka'

2 continUe

return end.

Appendice E :

Programme E.1 : Programme de calcul des coordonnées; vitesses et accélérations articulaires

C ******************************************************************

c calcul des coordonnees; vitesses et accélérations

C articulaires

c******************************************************************

subroutine para (qi,qf,kv,ka,q,v,a,st,tfm,t)

real qi, qf, kv, ka, q, v,a, t, t0, si, tfm

c******************** Loi de Bang-Bang avec palier de vitesse ************

t0=kv/ ka

if (t.le.t0) then

q=qi+ ( (ka*t*t/2)/st) *abs (qf-qi) / (qf-qi)

v=ka*t*abs (qf-qi) / (qf-qi)

a=ka*abs (qf-qi) / (qf-qi)

return

else

if (t.le.tfrn-t0) then

q=qi+( (t-t0/2)*Kv/st) *abs(qf-qi) / (qf-qi)

v=kv*abs (qf-qi) / (qf-qi)

a=0 return

else

if (t.gt.t0) then

q=qf- ((tfm-t) **2/2*ka) /st*abs (qf-qi) / (qf-qi)

v=(tfm-t)*ka*abs (qf-qi) / (qf-qi)

a=-ka

endif

endif endif return end

Programme E.2 : Programme de calcul des forces et les moment articulaires

C ****************************************************************** c calcul des forces et les moment articulaires

c ******************************************************************* subroutine dynami (q,v, a,c)

real v(4),a(4),q(4),c(24),m(4),x(3),z1 ,z2,z3 ,z4,z5,z6,z7,z8,z9,zl0,

+z1 1,j(4)

j(1)=.0319

j(2)=0.0508

j(3)=129. 14

j (4)=6.283

m(1)=25.549

m(2)=40.70

m(3)=241 .779

m(4)=39.049 X(2)=0.02 x(3)=0.02 l2=0.6

z1=a(4)+v(1 )**2*q(4)

z2=a( 1 )*q(4)+2*v( 1 )*v(4)

z3=m(4)*9.81+m(4)* (a(2)+a (3))

z4=a( 1)*q(3)+2*v(1)*v(3)

z5=m(4)+m(3) z6=x(2)+x(3)+1 2

z7=a(3)-v(1 )**2*q(3)

z8=m(2)+m(3)+m(4)

z9=l2/2

z10=q (2) +12/2

z 11 =m( 1 )+m(2)+m( 3)+m(4)

C(1)=m(4)*z1

C(2)=m(4)*z2

C(3)=z3

C(4)=q(3)*z3

C(5)=-q(4)*z3

C(6)=q(4)*m(4)*z2-q(3)*m(4)*zl+J(1 )*a(1)

C(7)=-m(3)*z4+z4*zl C(8)=m(4)*z2+m(3)*z7

C(9)=z5 *9 .81 +z5 *a(2)+m(4)*a(3)

C(1 0)=z5*9.8 1+z5*a(2)+m(4)*a(3)-z6*(m(4)*z2+m(3)*z7)

C( 11 )=q(4)*z2+z6+(-m(3)*z4+m(4)*z 1) C(12)=m(4)*q(4)*z2-3*q(3)*m(4)*z1+m(3)*q(3)*z4+(j(3)+j (4)) *a(1)

C(13)=-m(3) *z4+m(4) *z1 C( 1 4)=m(4)*z2+m(3)*z7 C(1 5)=rn8*((9. 81 )+a(2))

C( 1 6)=q(3)*z5 *(9. 81 )+z5 *a(2)+m(4)*a(3)-(z6+z9+zl0)*(m(4)*z2+m(3) +*z7)

C( 1 7)=q(4)*z3+(-z9-zl0+z6)*(m(4)*z1-m(3)*z4)

C(1 8)=-3 *m(4)*q(3)*zl+m(4)*q(4)*z2+m(3)*q(3)*z4

C(1 9)=-m(3)*z4+m(4)*z1 C(20)=m(4)*z2+m(3)*z7 C(21)=z1 1*9.81+z8*a(2)

C(22)=q(3)*(z5 *(9. 81 +a(2))+m(4)*a(3))-(z6+z9+zlO)*(m(4)*z2+m(3) +*z7) C(23)=q(4)*z3+(-m(3)*z4+m(4)*z1 )*(-z9+z6+z1 0) C(24)=m(4)*q(4)*z2-m(3)*q(3)*z4+m(4)*q(3)*z1

return

end

Appendice F :

Programme de calcul des forces actives

c* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * c CALCUL DES FORCES ACTIVES

c* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * subroutine dynami (q,v,a,c 1 ,c2,c3, c4)

real v(5),a(5),q(5),c 1 ,c2,c3 ,c4,m(5),x(5),b,

+s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15,

+ s16, s17, s18, s19 , s20, s21, s22, s23, s24, s25, s26, s27, s28, +s29, s30, r (5)

m(1)=25.549

m (2 ) =40.70

m (3 ) =241.779

m(4)=39.049

x(1)=0.6 x (2) =0.6 x(3)=0

x(4)=0.4 r(1)=0.05 r(2)=0.05 r(3)=0

r(4)=0.06 b=0.7

a1 =0.2

s10=m(3) +m(4)

s1 1=m(3)*(b*cos(2*q(1))+2*q(3))

s1 2=m(4)*q(3)*(sin(q(1 )))**2

s1 3=m(2)+m(3)

s14=m(2) +m(3) +m(4)

s15=m(4)

s1 6=1+(sin(q(1)))**2

s17=m(1)*x(1)**2

s18=m(2) * (3*r(2) **2+4*x (2) **2) /12

s1 9=m(3)*((a1 **2+1 3 *b**2)/1 2+b*q(3)*cos(2*q(1 ))+q(3)*2) s20=(3 *r(4)**2+4*r(4)**2)/1 2

s21=x(4) *q(4) +2*q(3) **2

s22=2* (q (4) **2+q (3) **2)

s23=b*cos(2*q(1 ))+2*q(3)

s24=2*b*q(3)*v(1 )*sin(2*q(1))

s25=x(4)*v( 4) +4*q ( 3) *v ( 3)

s26 =q(4) *v (4) +q (3)*v(3)

s27=q(4) **2+q(3)**2

s28=v(1 )*sin(q(1 ))*cos(q(1)) s29=m(3)*b*q(3)*sin(2*q(1)) s30=(q(4)**2+q(3)**2)*cos(q(1))*sin(q(1))

c 1=((s 17/1 2)+s 1 8+s 1 9+s1 5*(s20s2 1+s22+s1 6))*a(1 )+(m(3)*(s23 *v(3).. +s24)+s15*(4*s26*s16..s25+4*s27*s28))*v(1)+(s29..2*s15*s30)*v(1).. +q(2) *1000

c2=s13*q(2) +9.81*s14..1000 c3=a(3)*s10.. (s1 1+4*s12) * (v(1) **2)

c4=s1 5*(a(4)+(x(4)..4*s1 6*q(4))*v(1)**2)

return

end

Appendice G : Programme de simulation

/*

* JFrame.java *

* Created on 19 mai 2006, 22:54

*/

/* *

*

* @author Redha

*/

import java.awt. *;

public class JFrame extends javax.swing.JFrame {

/** Creates new form JFrame */ public JFrame() {

initComponents();

ann= new Annimation(this); setBounds(1 00,100,750,480); j Slider1 .setEnabled(false);

setVisible(true);

}

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

private void initComponents() {

buttonGroup 1 = new javax. swing.ButtonGroup(); jPanel1 = new javax.swing.JPanel();

jSlider1 = new javax.swing.JSlider();

jComboBox1 = new javax. swing.JComboBox(); jRadioButton1 = new javax. swing.JRadioButton(); jRadioButton2 = new javax. swing.JRadioButton(); j Label 1 = new javax. swing.JLabel();

jPanel2 = new javax.swing.JPanel();

canvas1 = new java.awt.Canvas();

jMenuBar2 = new javax. swing.JMenuBar(); jMenu2 = new javax.swing.JMenu();

jMenuItem2 = new javax.swing.JMenuItem(); j Table 1 = new javax. swing.JTable();

getContentPane(). setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.X_AXIS));

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt);

}

});

jPanel1 . setLayout(null);

j Panel 1 .setBorder(new javax. swing.border.TitledBorder(""));

j Slider1 .setMinimum(1);

j Slider1 .setValue(20);

j Slider1 .addChangeListener(new javax.swing.event.ChangeListener() {

public void stateChanged(javax.swing.event.ChangeEvent evt)

{

j Slider1 StateChanged(evt);

}

});

jPanel1 .add(j Slider1);

j Slider1 .setBounds(1 00, 200, 140, 50);

jComboBox1 .setModel(new javax. swing.DefaultComboBoxModel(new String[] { "Position 1", "Position 2", "Position 3", "Position 4",

"Position 5" }));

jComboBox1 .addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt)

{

jComboBox1 ActionPerformed(evt);

}

});

jPanel1 .add(jComboBox1);

jComboBox1 . setBounds( 100, 100, 130, 25);

jRadioButton1 .setSelected(true);

jRadioButton1 . setText("Choisir La Position");

buttonGroup 1 .add(jRadioButton1);

jRadioButton1 .addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt)

{

jRadioButton1 ActionPerformed(evt);

}

});

jPanel1 .add(jRadioButton1); jRadioButton1 .setBounds(1 0, 50, 131, 24);

jRadioButton2. setText("Annimer Le Bras");

buttonGroup 1 .add(jRadioButton2); jRadioButton2.addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt)

{

jRadioButton2ActionPerformed(evt);

}

});

j Table 1 .setModel(new javax. swing.table.DefaultTableModel( new Object [][] {

{null, "X", "Y"},

{"P1", null, null},

{"P2", null, null},

{"P3", null, null},

{"P4", null, null} },

new String [] {

"Title 1", "Title 2", "Title 3"

}

));

jPanel1 .add(jTable1);

jTable1 .setBounds(80, 270, 200, 80);

jPanel1 .add(jRadioButton2);

jRadioButton2.setBounds(1 0, 150, 130, 24);

jLabel 1. setText("La Vit\u00e8se "); jPanel1 .add(jLabel1);

jLabel1.setBounds(40, 210, 60, 20);

getContentPane().add(j Panel 1);

jPanel2.setLayout(new java.awt.GridLayout());

jPanel2. setBackground(new java.awt.Color(255, 255, 255));

jPanel2.setDebugGraphicsOptions(javax. swing.DebugGraphics.NONE_OPTION); jPanel2.add(canvas 1);

getContentPane().add(jPanel2);

jMenu2. setText("Fichier");

jMenuItem2. setText("Quiter");

jMenuItem2.addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt)

{

jMenuItem2ActionPerformed(evt);

}

});

jMenu2.add(jMenuItem2); jMenuBar2.add(jMenu2); setJMenuBar(jMenuBar2); pack();

private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {

// Add your handling code here: ann= new Annimation(this); if(jRadioButton2.isSelected()) {

ann. stop();

j Slider1 .setEnabled(true); jComboBox1 .setEnabled(false); ann.start();

}

}

private void

jRadioButton1 ActionPerformed(java.awt.event.ActionEvent evt) {

// Add your handling code here: if(jRadioButton1 .isSelected()) { ann. stop();

j Slider1 .setEnabled(false); jComboBox1 .setEnabled(true);

}

}

private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {

// Add your handling code here:

ann.stop();

System.exit(0);

}

private void jComboBox1 ActionPerformed(java.awt.event.ActionEvent evt) {

// Add your handling code here:

ann= new Annimation(this);

switch(jComboBox1 .getSelectedIndex()) {

case(0):Exemple 1();

position="Position 1 "; break;

case(1 ):Exemple3();

position="Position 2"; break;

case(2):Exemple4();

position="Position 3"; break;

case(3):Exemple2();

position="Position 4"; break;

case(4):Exemple5();

position="Position 5"; break;

}

ann.start();

}

void j Slider1 StateChanged(javax.swing.event.ChangeEvent evt) { // Add your handling code here:

}

/** Exit the Application */

private void exitForm(java.awt.event.WindowEvent evt) { ann. stop();

System.exit(0);

}

public Graphics Mypaint(Graphics g) {

for(int jcas=1; jcas<=NbrCas; j cas++) {

XA[jcas] [Nbr+1 ]=(cas*30)+XA[jcas] [Nbr];

YA[j cas] [Nbr+1 ]=30+YA[jcas] [Nbr];

int x1=150, y1=380, x2=250, y2=350;

int x3=(x1+x2)/2-2;

int y3=y1-y2;

int Xh=0,Yh=0,px=0,py=0; // Longueur du bras vertical
g. setColor(Color.black);

g.fillRect(x1 ,y1 ,100,10);// Base horizontale imposée g.fillRect(x3,y2,5,y3); // Bras vertical imposé

int j1 j2;

g. setColor(Color.red);

Font f = new Font("Comic Sans MS",14,20);

g. setFont(f);

g.drawString(" Simulation d'un robot manipulateur",40,50); g.drawString(" ( ALG.MO- 1 )", 150,80);

f = new Font("Comic Sans MS",14,24);

g. setFont(f);

g.drawString(" "+position,Xpos,Ypos);

f = new Font("Comic Sans MS",25,16);

g. setFont(f);

// Trace Bras

for(j1=2; j1<=Nbr+1; j1++){

g.setColor(Color.black); if(j 1<=Nbr) {

if(j 1<4){ px=10;py=0;}

if(j1>=4){ py =10;px=0;}

if((pos == 1||pos==3) && j1==Nbr){ py=-10;px =10;} Xh=XA[jcas] [j 1] + ((XA[jcas] [j 1-1]- XA[jcas] [j 1 ])/2)+px; Yh=YA[jcas] [j 1] + ((YA[jcas] [j 1-1]- YA[jcas] [j 1])/2)-py;

g.drawString("h"+String.valueOf(j 1-1 ),Xh,Yh);

}

g.drawLine(XA[jcas][j1-1], YA[jcas][j1-1], XA[jcas][j1],

YA[jcas][j1]);

System.out.println("J= "+j1+" XA= "+XA[jcas][j1]+" YA= "+YA[jcas][j 1]);

for(j2=1; j2<=Nbr; j2++){

if(Type[j2]==1) /* Articulation Rotoide */ {

g. setColor(Color.blue);

g.fillOval(XA[jcas] [j2]-R/2, YA[jcas] [j2]-R/2, R, R);

g. setColor(Color.red);

Font Dialog=new Font("Dialog", Font.BOLD, 13);

g. setFont(Dialog);

g.drawString("R", XA[jcas] [j2] -R/4, YA[jcas] [j2]+R/4); }

else if(Type[j2]==2)/* Articulation Prismatique */ {

g. setColor(Color.red);

g.fillRect(XA[jcas] [j2]-R/2, YA[jcas] [j2]-R/2, R, R);

g. setColor(Color.blue);

Font Dialog=new Font("Dialog", Font.BOLD, 13);

g. setFont(Dialog);

g.drawString("P", XA[jcas] [j2] -R/4, YA[jcas] [j2]+R/4); }

}

}

j Table 1. setValueAt(new Integer(XA[ 1] [2]), 1,1); jTable 1. setValueAt(new Integer(XA[ 1] [3]), 2,1); j Table 1. setValueAt(new Integer(XA[ 1] [4]), 3,1); jTable 1. setValueAt(new Integer(XA[ 1] [5]), 4,1); j Table 1. setValueAt(new Integer(YA[ 1] [2]), 1,2); jTable 1. setValueAt(new Integer(YA[ 1] [3]), 2,2); j Table 1. setValueAt(new Integer(YA[ 1] [4]), 3,2); jTable 1. setValueAt(new Integer(YA[ 1] [5]), 4,2); return g;

//========================== Exemple n°1==================

public static void Exemple 1() { // Cas de 1 bras de 5 articulations

NbrCas=1; // Nombre de cas

Nbr=5; // Nombre d'articulation

cas =1;

pos = 1;

//Sinq articulations de type RPRP

Type[1]=1; // Articulation Rotoide

Type[2]=2; // Articulation Prismatique

Type[3]=2; // Articulation Prismatique

Type[4]=2; // Articulation Prismatique

Type[5]=2; //Articulation Prismatique

// Premier cas (premier bras):

XA[1][1 ]=200; // X du premier cas, première articulation
YA[ 1] [1 ]=350; // Y du premier cas, Première articulation

XA[1][2]=200; //X du premier cas, 2end articulation
YA[1][2]=250; //Y du premier cas, 2end articulation

XA[1] [3]=200; //X du premier cas, 3ème articulation
YA[1][3]=150; //Y du premier cas, 3ème articulation

XA[1][4]=250; //X du premier cas, 4ème articulation
YA[1][4]=150; //Y du premier cas, 4ème articulation

XA[1][5]=250; //X du premier cas, 5ème articulation YA[1][5]=200; //Y du premier cas, 5ème articulation Xpos=30+XA[ 1][5];

Ypos=30+YA[ 1][5];

public static void Exemple5(){

// Cas de 1 bras de 5 articulations NbrCas=1; // Nombre de cas
Nbr=5;

cas=-1; // Nombre d'articulation

pos =5;

//Sinq articulations de type RPRP

Type[1]=1; // Articulation Rotoide

Type[2]=2; // Articulation Prismatique

Type[3]=2; // Articulation Prismatique

Type[4]=2; // Articulation Prismatique

Type[5]=2; //Articulation Prismatique

// Premier cas (premier bras):

XA[1][1 ]=200; // X du premier cas, première articulation
YA[ 1] [1 ]=350; // Y du premier cas, Première articulation

XA[1][2]=200; //X du premier cas, 2end articulation
YA[1][2]=300; //Y du premier cas, 2end articulation

XA[1] [3]=200; //X du premier cas, 3ème articulation
YA[1][3]=200; //Y du premier cas, 3ème articulation

XA[ 1] [4]=1 50; //X du premier cas, 4ème articulation
YA[1][4]=200; //Y du premier cas, 4ème articulation

XA[1][5]=60; //X du premier cas, 5ème articulation YA[1][5]=280; //Y du premier cas, 5ème articulation Xpos=-50+XA[ 1][5];

Ypos=50+YA[ 1][5]; // Second cas (2 bras):

XA[2][1]=200; // X du 2end cas, première articulation

YA[2][1]=300; // Y du 2end cas, Première articulation

XA[2][2]=210; //X du 2end cas, 2end articulation
YA[2][2]=300; //Y du 2end cas, 2end articulation

XA[2][3]=250; //X du 2end cas, 3ème articulation
YA[2][3]=200; //Y du 2end cas, 3ème articulation

XA[2][4]=300; //X du 2end cas, 4ème articulation
YA[2][4]=100; //Y du 2end cas, 4ème articulation

XA[2] [5]=200; //X du second cas, 5ème articulation YA[2][5]=100; //Y du second cas, 5ème articulation

// Troisième cas (3ème bras):

XA[3] [1 ]=200; // X du 3ème cas, première articulation YA[3][1]=350; // Y du 3ème cas, Première articulation

XA[3][2]=250; //X du 3ème cas, 2end articulation
YA[3][2]=300; //Y du 3ème cas, 2end articulation

XA[3][3]=300; //X du 3ème cas, 3ème articulation
YA[3][3]=200; //Y du 3ème cas, 3ème articulation

XA[3][4]=-10; //X du 3ème cas, 4ème articulation YA[3][4]=100; //Y du 3ème cas, 4ème articulation

XA[3][5]=-50; //X du troisième cas, 5ème articulation YA[3][5]=100; //Y du troisième cas, 5ème articulation

}

//===================== Exemple n°3====== ============

public static void Exemple3(){

// Cas de 1 bras de 5 articulations

NbrCas=1; // Nombre de cas

Nbr=5;

cas =1; // Nombre d'articulation

pos=3;

//Sinq articulations de type RPRP

Type[1]=1; // Articulation Rotoide

Type[2]=2; // Articulation Prismatique

Type[3]=2; // Articulation Prismatique

Type[4]=2; // Articulation Prismatique

Type[5]=2; //Articulation Prismatique

// Premier cas (premier bras):

XA[1][1 ]=200; // X du premier cas, première articulation
YA[ 1] [1 ]=350; // Y du premier cas, Première articulation

XA[1][2]=200; //X du premier cas, 2end articulation
YA[1][2]=300; //Y du premier cas, 2end articulation

XA[1] [3]=200; //X du premier cas, 3ème articulation
YA[1][3]=200; //Y du premier cas, 3ème articulation

XA[1][4]=250; //X du premier cas, 4ème articulation
YA[1][4]=200; //Y du premier cas, 4ème articulation

XA[1][5]=250; //X du premier cas, 5ème articulation YA[1][5]=250; //Y du premier cas, 5ème articulation Xpos=30+XA[ 1][5];

Ypos=30+YA[ 1][5];

// Second cas (2 bras):

XA[2][1]=200; // X du 2end cas, première articulation
YA[2][1]=350; // Y du 2end cas, Première articulation

XA[2][2]=150; //X du 2end cas, 2end articulation
YA[2][2]=300; //Y du 2end cas, 2end articulation

XA[2][3]=250; //X du 2end cas, 3ème articulation
YA[2][3]=200; //Y du 2end cas, 3ème articulation

XA[2][4]=300; //X du 2end cas, 4ème articulation
YA[2][4]=100; //Y du 2end cas, 4ème articulation

XA[2] [5]=200; //X du second cas, 5ème articulation YA[2][5]=100; //Y du second cas, 5ème articulation

// Troisième cas (3ème bras):

XA[3] [1 ]=200; // X du 3ème cas, première articulation YA[3][1]=350; // Y du 3ème cas, Première articulation

XA[3][2]=250; //X du 3ème cas, 2end articulation
YA[3][2]=300; //Y du 3ème cas, 2end articulation

XA[3][3]=300; //X du 3ème cas, 3ème articulation
YA[3][3]=200; //Y du 3ème cas, 3ème articulation

XA[3][4]=-10; //X du 3ème cas, 4ème articulation YA[3][4]=100; //Y du 3ème cas, 4ème articulation

XA[3][5]=-50; //X du troisième cas, 5ème articulation YA[3][5]=100; //Y du troisième cas, 5ème articulation

}

//====================== Exemple n°4 ========== ==

public static void Exemple4(){ // Cas de 1 bras de 5 articulations

NbrCas=1; // Nombre de cas

Nbr=5;

cas=1; // Nombre d'articulation

pos =4;

//Sinq articulations de type RPRP

Type[1]=1; // Articulation Rotoide

Type[2]=2; // Articulation Prismatique

Type[3]=2; // Articulation Prismatique

Type[4]=2; // Articulation Prismatique

Type[5]=2; //Articulation Prismatique

// Premier cas (premier bras):

XA[1][1 ]=200; // X du premier cas, première articulation
YA[ 1] [1 ]=350; // Y du premier cas, Première articulation

XA[1][2]=200; //X du premier cas, 2end articulation
YA[1][2]=300; //Y du premier cas, 2end articulation

XA[1] [3]=200; //X du premier cas, 3ème articulation
YA[1][3]=200; //Y du premier cas, 3ème articulation

XA[1][4]=250; //X du premier cas, 4ème articulation
YA[1][4]=200; //Y du premier cas, 4ème articulation

XA[1][5]=300; //X du premier cas, 5ème articulation YA[1][5]=200; //Y du premier cas, 5ème articulation Xpos=-30+XA[ 1][5];

Ypos=60+YA[ 1][5];

// Second cas (2 bras):

XA[2][1]=200; // X du 2end cas, première articulation
YA[2][1]=350; // Y du 2end cas, Première articulation

XA[2][2]=150; //X du 2end cas, 2end articulation
YA[2][2]=300; //Y du 2end cas, 2end articulation

YA[2][3]=200; //Y du 2end cas, 3ème articulation

XA[2][4]=300; //X du 2end cas, 4ème articulation
YA[2][4]=100; //Y du 2end cas, 4ème articulation

XA[2][5]=200; //X du second cas, 5ème articulation
YA[2][5]=100; //Y du second cas, 5ème articulation

// Troisième cas (3ème bras):

XA[3][1]=200; // X du 3ème cas, première articulation
YA[3][1]=350; // Y du 3ème cas, Première articulation

XA[3][2]=250; //X du 3ème cas, 2end articulation
YA[3][2]=300; //Y du 3ème cas, 2end articulation

XA[3][3]=300; //X du 3ème cas, 3ème articulation
YA[3][3]=200; //Y du 3ème cas, 3ème articulation

XA[3][4]=-10; //X du 3ème cas, 4ème articulation YA[3][4]=100; //Y du 3ème cas, 4ème articulation

XA[3][5]=-50; //X du troisième cas, 5ème articulation

YA[3][5]=100; //Y du troisième cas, 5ème articulation

}

//========================= Exemple n°2=========================

public static void Exemple2(){ // Cas de 1 bras de 2 articulations

NbrCas=1; // Nombre de cas

Nbr=5;

cas=-1; // Nombre d'articulation

pos= 2;

//Sinq articulations de type RPRP Type[1]=1; // Articulation Rotoide

Type[2]=2; // Articulation Prismatique

Type[3]=2; // Articulation Prismatique

Type[4]=2; // Articulation Prismatique

Type[5]=2; //Articulation Prismatique

// Premier cas (premier bras):

XA[1][1 ]=200; // X du premier cas, première articulation
YA[ 1] [1 ]=350; // Y du premier cas, Première articulation

XA[1][2]=200; //X du premier cas, 2end articulation
YA[1][2]=300; //Y du premier cas, 2end articulation

XA[1] [3]=200; //X du premier cas, 3ème articulation
YA[1][3]=200; //Y du premier cas, 3ème articulation

XA[ 1] [4]=1 50; //X du premier cas, 4ème articulation
YA[1][4]=200; //Y du premier cas, 4ème articulation

XA[1][5]=120; //X du premier cas, 5ème articulation YA[1][5]=200; //Y du premier cas, 5ème articulation Xpos=- 100+XA[ 1][5];

Ypos=50+YA[ 1][5];

// Second cas (2 bras):

XA[2][1]=200; // X du 2end cas, première articulation
YA[2][1]=350; // Y du 2end cas, Première articulation

XA[2][2]=150; //X du 2end cas, 2end articulation
YA[2][2]=300; //Y du 2end cas, 2end articulation

XA[2][3]=250; //X du 2end cas, 3ème articulation
YA[2][3]=200; //Y du 2end cas, 3ème articulation

XA[2][4]=300; //X du 2end cas, 4ème articulation
YA[2][4]=100; //Y du 2end cas, 4ème articulation

XA[2] [5]=200; //X du second cas, 5ème articulation YA[2][5]=100; //Y du second cas, 5ème articulation

// Troisième cas (3ème bras):

XA[3] [1 ]=200; // X du 3ème cas, première articulation YA[3][1]=350; // Y du 3ème cas, Première articulation

XA[3][2]=250; //X du 3ème cas, 2end articulation
YA[3][2]=300; //Y du 3ème cas, 2end articulation

XA[3][3]=300; //X du 3ème cas, 3ème articulation
YA[3][3]=200; //Y du 3ème cas, 3ème articulation

XA[3][4]=-10; //X du 3ème cas, 4ème articulation YA[3][4]=100; //Y du 3ème cas, 4ème articulation

XA[3][5]=-50; //X du troisième cas, 5ème articulation YA[3][5]=100; //Y du troisième cas, 5ème articulation

}

/* *

* @param args the command line arguments */

public static void main(String args[]) { new JFrame().show();

}

// Variables declaration - do not modify

private javax.swing.ButtonGroup buttonGroup1; public java.awt.Canvas canvas1;

private javax. swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1;

private javax. swing.JMenu jMenu2;

private javax. swing.JMenuBar jMenuBar2;

private javax. swing.JMenuItem jMenuItem2;

private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2;

public javax.swing.JRadioButton jRadioButton1;

private javax. swing.JRadioButton jRadioButton2;

public javax.swing.JSlider j Slider1;

private javax.swing.JTable jTable1;

public Annimation ann;

public String position;

// End of variables declaration

static int R=20;

static int Nbr; //Nombre d'articulation

static int cas;

static int pos =0,Xpos,Ypos;

static int NbrCas;//=Nombre de bras

static int Type[]=new int[50]; //Type d'articulation

static int XA[][]=new int[50][50]; //Coordonnées suivant X static int YA[][]=new int[50][50]; //Coordonnées suivant Y

// La Calss Annimation Pour géré l'annimation du Bras class Annimation extends Thread {

JFrame MyForm;

Annimation(JFrame MyForm) {

this.MyForm = MyForm;

}

public void run() {

if(MyForm.jRadioButton1 .isSelected()) {

MyForm.canvas 1 .getGraphics().clearRect(0,0,500,500); MyForm.Mypaint(MyForm.canvas 1 .getGraphics());

while(true) {

try{

MyForm.Exemple 1();

position="Position 1";

MyForm.canvas 1 .getGraphics().clearRect(0,0,500,500); MyForm.Mypaint(MyForm.canvas 1 .getGraphics()); this.sleep((int)20000/MyForm.j Slider1 .getValue()); MyForm.Exemple3 ();

position="Position 2";

MyForm.canvas 1 .getGraphics().clearRect(0,0,500,500); MyForm.Mypaint(MyForm.canvas 1 .getGraphics()); this.sleep((int)20000/MyForm.j Slider1 .getValue()); MyForm.Exemple4();

position="Position 3";

MyForm.canvas 1 .getGraphics().clearRect(0,0,500,500); MyForm.Mypaint(MyForm.canvas 1 .getGraphics()); this.sleep((int)20000/MyForm.j Slider1 .getValue()); MyForm.Exemple2();

position="Position 4";

MyForm.canvas 1 .getGraphics().clearRect(0,0,500,500); MyForm.Mypaint(MyForm.canvas 1 .getGraphics()); this.sleep((int)20000/MyForm.j Slider1 .getValue()); MyForm.Exemple5();

position="Position 5";

MyForm.canvas 1 .getGraphics().clearRect(0,0,500,500); MyForm.Mypaint(MyForm.canvas 1 .getGraphics()); this.sleep((int)20000/MyForm.j Slider1 .getValue());

}

catch(Exception e) { }

}

}

}

}

///////////////////* * * *Fin du programme* * **///////////////////////////////////////

Appendice H :

Programme de model géométrique direct

******************************************************************** C PROGRAM: MGD

c PURPOSE: Entry point for the console application.

c program MGD

c Variables

c******************************************************************* implicit none

integer ij

real theta1 ,h1,h2,h3,h4,z2,z5,z3,z4

real c1,s1

real d3,d4,Pi

real T(4,4)

d4=0.6

C selon le cahier de charge

d3=d4

Pi=3. 1415926535897932384626433832795

write(*,*) 'donner la valeur de theta1'

read(*,*) theta1

theta1=(theta1 *Pi)/1 80.

write(*, *) 'theta1r=',theta1

write(*,*) 'donner la valeur de h1 =,h2=,h3=,h4=,z2=,z5=,z3=,z4='

read(*,*) h1,h2,h3,h4,z2,z5,z3,z4

c

write (*,*)'calcul des éléments de la matrice de transformation

+ homogène T<0,5>'

c

c1 =cos(theta1)

s1 =sin(theta1)

write(*,*) 'c1 =cos(theta1 )=',c1 ,'s 1 =sin(theta1 )=', s1

write (*,*)'la matrice t(i,j)'

T(1,1)=c1-s1

T(1 ,2)=0 T(1 ,3)=0 T( 1 ,4)=(z3-z4)*c 1

T(2,1)=c1+s1

T(2,2)=0 T(2,3)=0 T(2,4)=(z3-z4)*s 1

T(3, 1)=0 T(3 ,2)=0 T(3,3)=1 T(3 ,4)=h1 +h2+h3+h4+z2-z5

T(4, 1)=0 T(4,2)=0 T(4,3)=0 T(4,4)=1 write(*,*)' ((T(i,j)j=1,4),i=1,4)'

5 format (4F)
do 2 i=1,4

write( *,*)(T(i,j),j=1,4)

2 continue

write(*,*) 'CE PROGRAMME MARCHE TRES BIEN ' c Body ofMGD

end.

APPENDICE I :

Organigramme général : (Proposé comme une banque des données) :

lel,Modèle d'évaluation des erreurs: associé à un balyage systémathique des coordonnées articulaires et un critère de classement

lerModèle d'évaluation des erreurs : Erreurs de positionnement ou de poursuite

Modèle des déformations :

Evaluation des torseurs des déplacements élémentaires par segments

Fa


·

e

Lr

5'p

n

Organigramme I.1 : Organigramme général

Appendice J : F21]

Le système d'équation non linéaire est du type

f1(q1,q2,q3... .qm) + x1 = 0

? T

f2(q1,q2,q3... .qm) + x2 = 0 . fm(q1,q2,q3... .qm) + x1 = 0

Ou q1,q2,q3....qm sont des inconnues réelles indépendantes et f1, f2 fm sont des

fonctions réelles données des m variables qi , un tel système de m équation à m inconnues est dit d'ordre m.

Principe de la méthode :

Soit Q(0) = (q01 q0m) un point initial de Rm . Q(0) est considéré comme une

approximation de la solution Q* =(q*1 q*m) du système son linéaire ci-dessus. En supposant que Q(0) soit suffisamment voisin de Q* que la fonction f1(q1,q2,q3....qm), i=1, m soit suffisamment dérivables. Le développement en série de Taylor de ces fonctions s'écrit sous la forme :

j m

=j m

= k m

= 2

? f 1 ? f

f Q f Q q q

( ) ( ) ( ) ( )

* 0 * 0 1 0 ( )( ) ( )

* ( 0) ( 0 ) 1 ( 0)

= + - Q q q q q

= - -

* +

1 1 j j j

? = ?? Q

j k k

? q 2! ? ?

q q

j 1 j j = 1 1

k = j k

Pour i=1, .....m. si on néglige les termes d'ordre supérieur à 1, on définit une nouvelle approximation :

Q(1) = (qi1 .....qm1) de Q* par les égalités :

j m

= ? f

f Q q q

1 Q

( ) ( ) 1 ( 0

0 * 0

+ ? -

j j ? q

j = 1 j

)

0 pour i=1 .....m ainsi le vecteur

Q(1) = (qi(1) ..... qm(1)) est défini comme étant la deuxième approximation de la solution qui s'exprime par Q(1) = Q(0) + ?Q(0), les composantes ?q1(0), ?q2(0), ?q3(0) ..... ?qm(0) étant la solution du système linéaire mis sous forme

0 = 0

f ( 0 )

?f ( 0 ) ? f ( 0 )

1 ( 0 ) 1

?

? q1

? +

q f

( 0)

( )

j ( )

j

? f ? f

1 1

=

? q j

f 1 j = f ( Q j

( ) ( )

? q j

1

)

( ( )

Q j

? + +

q 2 m 1

? q ? q

2 m

( 0 )

(0)

u

? f

? f

? f

(0)

0

m m m

( 0 ) ( 0) 0

? +

q q

( 0 ) ? + + ? + =

q f

?

1 2 m m

q1

? q ? q

2 m

Le processus est ensuite itéré à partir de la nouvelle approximation Q(1) de la solution

Q* ainsi on passera de l'itération n à l'itération n+1 par la relation

Q n = Q n + ? Q n

( 1 ) ( ) ( )

+

les composantes ?q1n . ?q2n . .....?qmn. étant la solution du système linéaire mis sous forme développée :

( 0 ) n ( )

n

? f ? f ( )

n ( ) 1

? f

1 ( ) 1 n ( )

q q ? + =

( ) 0

? + ? + + q f

n n

1 2 m 1

? q ? q ? q

1 2 m

f ( )

n ( )

n m

? f ( )

n

? ? f n

m ( ) ( ) ( ) ( ) 0

? +

q ? + +

q n m ? + =

q f

n n

1 2 m m

? q ? q ? q

1 2 m

Sous la forme matricielle, ce système d'équation est noté

? ? f

( ) = ( Q )

i

J Q ?

? ? ? q j

?

?

? ?

Pour i=1, ....., m et j=1, ...., m, la matrice J est appelée matrice Jacobinne des fonctions

fi i= 1, ....., m évoluée au point Q.

A l'aide de ces notations, le système linéaire permettant d'obtenir l'approximation (n+ 1) peut se mettre sous la forme matricielle et par suite l'approximation Q(n+1) est donnée par :

Q Q J Q

n n n

+ = - - (

1 1

) ( ) -

[ n { n } ]

F Q XLe processus itératif est arrêté lorsqu'il y a

convergence, c'est-à-dire lorsque - ( - 1 ) = å

sup q 1 n q n

( )

1

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy







Changeons ce systeme injuste, Soyez votre propre syndic



"Il faudrait pour le bonheur des états que les philosophes fussent roi ou que les rois fussent philosophes"   Platon