Механика и алгоритмы управления роботами

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    123,34 kb
  • Опубликовано:
    2011-12-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Механика и алгоритмы управления роботами














Курсовая работа по предмету:

Механика и алгоритмы управления роботами

Задание

Кинематическое исследование механизма манипулятора

определить необходимые перемещения звеньев

определить траекторию движения захвата из точки (0,2; 0,2; 0,2) в точку (0,8; 0,5; 0,7), если закон движения №4

определить скорости и ускорения движения звеньев.

реализовать программу расчетов

построить графики:

траектории движения захвата в ZOX

скорости и ускорения захвата

скорости и ускорения 1-ого звена.

Начальные данные

Координаты xyz точек (метр)

Закон движения

Вывести на печать и построить графики движения звена

Плоскость движения

Угол движения детали

Начало движения A

Начало движения B





0,2 0,2 0,2

0,8 0,5 0,7

4

1

ZOX

60


Рис. 1

Кинематика управления манипулятором:

вывести законы движения во времени для детали и захвата;

реализовать программу расчетов.

построить графики:

траектории движения захвата детали в ZOX, если угол движения детали 60°;

скоростей и ускорений ведомых звеньев;

проверить решение графическим способом.

Введение

На протяжении долгого времени человечество пыталось уйти от ручного труда. На это было много причин, главные из которых огромные силовые и временные затраты. Механизмы, создаваемые человеком усложнялись и совершенствовались. Трудно себе представить современную фабрику или завод, на котором не было бы ни одного робота. Но для того, чтобы робот работал необходимо уметь им управлять и хорошо представлять, как он функционирует. Данная курсовая работа направлена на кинематическое исследование механизма манипулятора и освоение кинематики его управления.

Кинематическое исследование механизма манипулятора. Определение необходимых перемещений звеньев

Рис. 2

=0.2; L2=0.2

В точке А: L3=0.2; j=0; ψ=0

В точке В: L3= 1.08 м; j=0.529 рад; ψ=0.279 рад

Определение траектории, скоростей и ускорений

Перемножив полученные матрицы и вектор L, получим следующие законы для изменения координат захвата по времени:


Перемещение, скорость и ускорение находятся по 4 закону:

f T<=T1 then:=H*Sqr(T) / (2*T1*(Tau - T1));:=H/(T1*(Tau-T1))*T;:=H/(T1*(Tau-T1));elseT<=(Tau-T1) then:=H*(2*T-T1)/(2*(Tau-T1));:=H/(Tau-T1);:=0;T<=Tau then:=H*(1-Sqr(Tau-T)/(2*T1*(Tau-T1)));:=H/(T1*(Tau-T1))*(Tau-T);:=-H/(T1*(Tau-T1)); +;

текст программыUnit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, Grids, ComOBJ;= class(TForm): TButton;: TButton;: TTimer;: TStringGrid;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;FormCreate(Sender: TObject);Button1Click(Sender: TObject);Timer1Timer(Sender: TObject);public end;: TForm1;

{$R *.dfm}=0.2; ay=0.2; az=0.2;=0.8; by=0.5; bz=0.7;=0.2; L2=0.2;=0.0; aPsi=0.0; aL3=0.2;=0.52955776771375359150; bPsi=0.27980931571248899761; bL3=1.0862780491200215724;,T1,dT,T,tx,ty,tz:Single;,HPsi,Hl3,qFi,qPsi,qL3,q1Fi,q1Psi,q1L3,q2Fi,q2Psi,q2L3:Single;,Kol_Step:Integer;Low_2(H,Tau,T1,T:Single; var q,q1,q2:Single);T<=T1 then:=H*Sqr(T) / (2*T1*(Tau - T1));:=H/(T1*(Tau-T1))*T;:=H/(T1*(Tau-T1));elseT<=(Tau-T1) then:=H*(2*T-T1)/(2*(Tau-T1));:=H/(Tau-T1);:=0;T<=Tau then:=H*(1-Sqr(Tau-T)/(2*T1*(Tau-T1)));:=H/(T1*(Tau-T1))*(Tau-T);:=-H/(T1*(Tau-T1));;;GetX(Fi,Psi,L3:Single):Single;

// Result:=L3*cos(Fi)*cos(Psi)+L2*sin(Fi)+L1*sin(Fi);:= Cos(fi)*Cos(Psi)*L3 - Sin(Fi)*L2;;GetY(Psi,L3:Single):Single;:= Sin(psi)*L3 + L1;;GetZ(Fi,Psi,L3:Single):Single;

Result:= Sin(Fi) * Cos(Psi)*L3 + Cos(Fi)*L2;;TForm1.FormCreate(Sender: TObject);:=2;:=0.45;_Step:=40;;TForm1.Button1Click(Sender: TObject);i:integer;StringGrid1 do begin[0,1]:='Fi'; Cells[0,2]:='Psi'; Cells[0,3]:='L3';[0,4]:='V(Fi)'; Cells[0,5]:='V(Psi)'; Cells[0,6]:='V(L3)';[0,7]:='a(Fi)'; Cells[0,8]:='a(Psi)'; Cells[0,9]:='a(L3)';:=Kol_Step+2;[1,0]:='0';i:=2 to Kol_Step+1 do[i,0]:=FloatToStr(Tau/Kol_Step*(i-1));;:=0;:=ax; ty:=ay; tz:=az;Image4.Canvas do begin.Color:=clGreen;(10+Round(ax*200),300);(10+Round(ax*200+0.7*ay*200),300-Round(0.7*ay*200));(10+Round(0.7*ay*200),300-Round(0.7*ay*200));(10+Round(ax*200+0.7*ay*200),300-Round(0.7*ay*200));(10+Round(ax*200+0.7*ay*200),300-Round(0.7*ay*200+az*200));;:=0;:=-aFi+bFi; HPsi:=ABS(-aPsi+bPsi); HL3:=ABS(-aL3+bL3);:=aFi; qPsi:=aPsi; qL3:=aL3;Fi:=0; q1Psi:=0; q1L3:=0;Fi:=0; q2Psi:=0; q2L3:=0;StringGrid1 do begin[Step+1,1]:=FloatToStr(qFi);[Step+1,2]:=FloatToStr(qPsi);[Step+1,3]:=FloatToStr(qL3);[Step+1,4]:=FloatToStr(q1Fi);[Step+1,5]:=FloatToStr(q1Psi);[Step+1,6]:=FloatToStr(q1L3);[Step+1,7]:=FloatToStr(q2Fi);[Step+1,8]:=FloatToStr(q2Psi);[Step+1,9]:=FloatToStr(q2L3);;.Canvas.MoveTo(20+Step*5,200-Round(qFi*200));.Canvas.MoveTo(20+Step*5,200-Round(q1Fi*300));.Canvas.MoveTo(20+Step*5,100-Round(q2Fi*80));.Canvas.MoveTo(20+Step*5,200-Round(q1L3*300));.Canvas.MoveTo(20+Step*5,100-Round(q2L3*80));:=(Tau/Kol_Step);.Interval:=round(dT*10);.Enabled:=true;;TForm1.Timer1Timer(Sender: TObject);,y,z:Single;(Step);.Enabled:=False;:=T+dT;_2(HFi,Tau,T1,T,qFi,q1Fi,q2Fi);_2(HPsi,Tau,T1,T,qPsi,q1Psi,q2Psi);_2(HL3,Tau,T1,T,qL3,q1L3,q2L3);:=qFi+aFi;:=qPsi+aPsi;:=qL3+aL3;:=GetX(qFi,qPsi,qL3);:=GetY(qPsi,qL3);:=GetZ(qFi,qPsi,qL3);Image4.Canvas do begin.Color:=clBlack;(10+Round(x*200+0.7*y*200),300-Round(0.7*y*200+z*200));.Color:=clGreen;(10+Round(x*200),300);(10+Round(x*200+0.7*y*200),300-Round(0.7*y*200));(10+Round(0.7*y*200),300-Round(0.7*y*200));(10+Round(x*200+0.7*y*200),300-Round(0.7*y*200));(10+Round(x*200+0.7*y*200),300-Round(0.7*y*200+z*200));;Step=Kol_Step:=bFi; qPsi:=bPsi; qL3:=bL3;Fi:=0; q1Psi:=0; q1L3:=0;Fi:=0; q2Psi:=0; q2L3:=0;;StringGrid1 do begin[Step+1,1]:=FloatToStr(qFi);[Step+1,2]:=FloatToStr(qPsi);[Step+1,3]:=FloatToStr(qL3);[Step+1,4]:=FloatToStr(q1Fi);[Step+1,5]:=FloatToStr(q1Psi);[Step+1,6]:=FloatToStr(q1L3);[Step+1,7]:=FloatToStr(q2Fi);[Step+1,8]:=FloatToStr(q2Psi);[Step+1,9]:=FloatToStr(q2L3);;.Canvas.LineTo(20+Step*5,200-Round(qFi*200));.Canvas.LineTo(20+Step*5,200-Round(q1Fi*200));.Canvas.LineTo(20+Step*5,100-Round(q2Fi*50));.Canvas.LineTo(20+Step*5,200-Round(q1L3*200));.Canvas.LineTo(20+Step*5,100-Round(q2L3*50));:=x; ty:=y; tz:=z;Step<Kol_Step then Timer1.Enabled:=True;

end;.

Построение графиков


Fi

Psi

L3

V(Fi)

V(Psi)

V(L3)

a(Fi)

a(Psi)

a(L3)

X

Y

Z

0,00

0,00

0,00

0,20

0,00

0,00

0,00

0,00

0,00

0,00

0,20

0,20

0,20

0,05

0,00

0,00

0,20

0,04

0,02

0,06

0,76

0,40

1,27

0,20

0,20

0,20

0,10

0,00

0,00

0,21

0,08

0,04

0,13

0,76

0,40

1,27

0,21

0,20

0,20

0,15

0,01

0,00

0,21

0,11

0,06

0,19

0,76

0,40

1,27

0,21

0,20

0,20

0,20

0,02

0,01

0,23

0,15

0,08

0,25

0,76

0,40

1,27

0,22

0,20

0,20

0,25

0,02

0,01

0,24

0,19

0,10

0,32

0,76

0,40

1,27

0,23

0,20

0,21

0,30

0,03

0,02

0,26

0,23

0,12

0,38

0,76

0,40

1,27

0,25

0,20

0,21

0,35

0,05

0,02

0,28

0,27

0,14

0,44

0,76

0,40

1,27

0,27

0,21

0,21

0,40

0,06

0,03

0,30

0,30

0,16

0,51

0,76

0,40

1,27

0,29

0,21

0,22

0,45

0,08

0,04

0,33

0,34

0,18

0,57

0,00

0,00

0,00

0,31

0,21

0,22

0,50

0,09

0,05

0,36

0,34

0,18

0,57

0,00

0,00

0,00

0,34

0,22

0,23

0,55

0,11

0,06

0,39

0,34

0,18

0,57

0,00

0,00

0,00

0,36

0,22

0,24

0,60

0,13

0,07

0,41

0,34

0,18

0,57

0,00

0,00

0,00

0,38

0,23

0,25

0,65

0,15

0,08

0,44

0,34

0,18

0,57

0,00

0,00

0,00

0,41

0,23

0,26

0,70

0,16

0,09

0,47

0,34

0,18

0,57

0,00

0,00

0,00

0,43

0,24

0,27

0,75

0,18

0,09

0,50

0,34

0,18

0,57

0,00

0,00

0,00

0,45

0,25

0,29

0,80

0,20

0,10

0,53

0,34

0,18

0,57

0,00

0,00

0,00

0,48

0,25

0,30

0,85

0,21

0,11

0,56

0,34

0,18

0,57

0,00

0,00

0,00

0,50

0,26

0,31

0,90

0,23

0,12

0,59

0,34

0,18

0,57

0,00

0,00

0,00

0,52

0,27

0,33

0,95

0,25

0,13

0,61

0,34

0,18

0,57

0,00

0,00

0,00

0,54

0,28

0,34

1,00

0,26

0,14

0,64

0,34

0,18

0,57

0,00

0,00

0,00

0,56

0,29

0,36

1,05

0,28

0,15

0,67

0,34

0,18

0,57

0,00

0,00

0,00

0,30

0,38

1,10

0,30

0,16

0,70

0,34

0,18

0,57

0,00

0,00

0,00

0,60

0,31

0,39

1,15

0,32

0,17

0,73

0,34

0,18

0,57

0,00

0,00

0,00

0,62

0,32

0,41

1,20

0,33

0,18

0,76

0,34

0,18

0,57

0,00

0,00

0,00

0,64

0,33

0,43

1,25

0,35

0,19

0,79

0,34

0,18

0,57

0,00

0,00

0,00

0,66

0,34

0,45

1,30

0,37

0,19

0,81

0,34

0,18

0,57

0,00

0,00

0,00

0,67

0,36

0,47

1,35

0,38

0,20

0,84

0,34

0,18

0,57

0,00

0,00

0,00

0,69

0,37

0,50

1,40

0,40

0,21

0,87

0,34

0,18

0,57

0,00

0,00

0,00

0,71

0,38

0,52

1,45

0,42

0,22

0,90

0,34

0,18

0,57

0,00

0,00

0,00

0,72

0,40

0,54

1,50

0,44

0,23

0,93

0,34

0,18

0,57

0,00

0,00

0,00

0,74

0,41

0,56

1,55

0,45

0,24

0,96

0,34

0,18

0,57

0,00

0,00

0,00

0,75

0,43

0,59

1,60

0,47

0,25

0,98

0,30

0,16

0,51

-0,76

-0,40

-1,27

0,76

0,44

0,61

1,65

0,48

0,26

1,01

0,27

0,14

0,44

-0,76

-0,40

-1,27

0,77

0,45

0,63

1,70

0,50

0,26

1,03

0,23

0,12

0,38

-0,76

-0,40

-1,27

0,78

0,47

0,65

1,75

0,51

0,27

1,05

0,19

0,10

0,32

-0,76

-0,40

-1,27

0,79

0,48

0,66

1,80

0,51

0,27

1,06

0,15

0,08

0,25

-0,76

-0,40

-1,27

0,79

0,48

0,68

1,85

0,52

0,28

1,07

0,11

0,06

0,19

-0,76

-0,40

-1,27

0,80

0,49

0,69

1,90

0,53

0,28

1,08

0,08

0,04

0,13

-0,76

-0,40

-1,27

0,80

0,50

0,69

1,95

0,53

0,28

1,08

0,04

0,02

0,06

-0,76

-0,40

-1,27

0,80

0,50

0,70

2,00

0,53

0,28

1,09

0,00

0,00

0,00

0,00

0,00

0,00

0,80

0,50

0,70


Траектория движения захвата и график пути первого звена (по заданию).

 

Рис. 3

Графики скорости и ускорения захвата







Рис. 4

Графики скорости и ускорения первого звена

Рис. 5

Кинематика управления манипулятором

Постановка задачи

Во второй части курсовой работы манипулятор будет рассматриваться в плоскости ZOX. В этой плоскости под углом 60° деталь движется из заданной точки и имеет постоянную скорость. Задача заключается в отыскании законов, позволяющих изменяя размеры звеньев манипулятора за указанное время движения захватить эту деталь.

Вывод формул

Пользователем задаются:

Координаты и скорость движения детали в плоскости ZOX (Xd,Zd,Vd)

Длина руки робота (L3)

Построим проекцию робота в плоскости ZOX

В плоскости ZOX видно только L2 и L3

Законы:=Vd*cos60° Vdz=Vd*sin60°=Xd+Vdx*t=Zd+Vdz*t здесь t- шаг времени

Скорость в точке захвата:=Vdx+(Xc-Xd)/T=Vdz+(Zc-Zd)/T где T=-t/ln(0,001)

Xc:=L3*cos(Fi)-L2*sin(Fi);:=L3*sin(Fi)+L2*cos(Fi);

Берем производную от Xc, Zc. И в итоге, после домножения одного уравнения на sin(Fi) или cos(Fi), а затем преобразования уравнений, получаем следующие формулы:

V:=(Vcx*sin(Fi))-(Vcz*cos(Fi));:=((Vcx*cos(Fi))+(Vcz*sin(Fi)))/L3;

Координаты в точке захвата:=Xc+Vcx*t=Zc+Vcz*t

Построение графиков

Входные параметры: координаты детали (0,700), скорость детали 0,2 м/с, длина руки робота 1 м, угол наклона руки 100 градусов, время движения равно 4.

 

V

W

Xd

Yd

Xr

Yr

0,00

0,00

0,00

0,00

700,00

720,00

707,00

0,20

-0,48

0,34

20,00

734,60

742,20

707,30

0,40

-0,28

0,42

60,00

803,90

637,00

750,00

0,60

-0,09

0,47

100,00

873,20

553,50

798,00

0,80

0,07

0,47

140,00

942,50

489,60

851,00

1,00

0,20

0,44

180,00

1012,00

444,70

909,30

1,20

0,31

0,37

220,00

1081,00

418,30

973,00

1,40

0,38

0,31

260,00

1150,00

408,60

1042,00

1,60

0,42

0,24

300,00

1220,00

412,60

1116,00

1,80

0,45

0,19

340,00

1289,00

427,20

2,00

0,46

0,15

380,00

1358,00

449,50

1272,00

2,20

0,47

0,12

420,00

1427,00

477,20

1352,00

2,40

0,47

0,09

460,00

1497,00

508,70

1432,00

2,60

0,47

0,08

500,00

1566,00

542,80

1512,00

2,80

0,46

0,06

540,00

1635,00

578,80

1591,00

3,00

0,46

0,05

580,00

1705,00

615,90

1670,00

3,20

0,45

0,04

620,00

1774,00

654,00

1747,00

3,40

0,44

0,04

660,00

1843,00

692,60

1824,00

3,60

0,44

0,03

700,00

1912,00

730,60

1897,00

3,80

0,44

0,03

740,00

1982,00

740,00

1982,00


Рис. 6

Рис. 7

Рис. 8

кинематический манипулятор захват звено

Текст программы

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, ExtCtrls, ComOBJ;= class(TForm): TStringGrid;: TTimer;: TButton;: TImage;: TImage;: TImage;: TLabel;: TButton;FormCreate(Sender: TObject);Timer1Timer(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);public end;: TForm1;

{$R *.dfm},VDY,Vd,Alpha,T,Tau,TCatch,d,dT:Single;,Yd,Xd0,Yd0,L,L3,Fi,Fi0:Single;_CX,Cur_CX,Old_CY,Cur_CY,Old_DX,Cur_DX,_DY,Cur_DY,Old_V,Cur_V,Old_W,Cur_W,X_c,Y_c:Single;,LF,Takt:Integer;:Boolean;InitManipul;:=Vd*1000*cos(Alpha*pi/180);:=Vd*1000*sin(Alpha*pi/180);:=(Tau/1.7)/ln(10);:=0; Fail:=False;:=Xd0; Yd:=Yd0;:=L3; Fi:=Fi0;;InitStrGr(T:word;V,W:Single);i:word;Form1.StringGrid1 do[0,1]:='V';[0,2]:='W';:=T+2;i:=0 to T do[i+1,0]:=FloatToStrF(i*dT,ffGeneral,4,2);[T+1,1]:=FloatToStrF(V/1000,ffGeneral,4,2);[T+1,2]:=FloatToStrF(W,ffGeneral,4,2);;;DrawGraf;MT,MV,MW:Single;Cx=15; Cy=100; dH=10;Form1 do begin.Canvas.Pen.Color:=clBlue;.Canvas.MoveTo(Round(Old_CX/10),250-Round(Old_CY/10));.Canvas.LineTo(Round(Cur_CX/10),250-Round(Cur_CY/10));.Canvas.Pen.Color:=clRed;.Canvas.MoveTo(Round(Old_DX/10),250-Round(Old_DY/10));.Canvas.LineTo(Round(Cur_DX/10),250-Round(Cur_DY/10));:=(image2.Width-2*Cx)/(Tau/dt);:=(image2.Height-2*dH)/(2*Vd*3*1000);.Canvas.MoveTo(Round((CX+(Takt-1)*MT)),220-Round((CY-Old_V*MV)));.Canvas.LineTo(Round((CX+Takt*MT)),220-Round((CY-Cur_V*MV)));:=(Image3.Width-2*Cx)/(Tau/dT);:=(Image3.Height-2*dH)/2;.Canvas.MoveTo(Round((CX+(Takt-1)*MT)),250-Round((CY-Old_W*MW)*2));.Canvas.LineTo(Round((CX+Takt*MT)),250-Round((CY-Cur_W*MW)*2));_CX:=Cur_CX; Old_CY:=Cur_CY;_DX:=Cur_DX; Old_DY:=Cur_DY;_V:=Cur_V; Old_W:=Cur_W;;;TForm1.FormCreate(Sender: TObject);:=0; Yd0:=700; Vd:=0.2;:=60; L3:=1000; Fi0:=100;:=4; d:=1; dT:=0.2;:=500; LF:=20000; Takt:=0;(Takt,0,0);;TForm1.Button1Click(Sender: TObject);;.Enabled:=true;.Interval:=round(dt*500);:=0;_CX:=H*cos(Fi0*pi/180)+L3*Sin(Fi0*pi/180);_CY:=H*sin(Fi0*pi/180)-L3*cos(Fi0*pi/180);_c:=Old_CX; Y_c:=Old_CY;_DX:=Xd0; Old_DY:=Yd0;_V:=0; Old_W:=0;;TForm1.Timer1Timer(Sender: TObject);RFi,V,W,VCx,VCy:Single;(Takt);:=Fi*pi/180;_c:=H*cos(RFi)+L*Sin(RFi); Y_c:=H*sin(RFi)-L*cos(RFi);:=VDX+((Xd-X_c)/T); VCy:=VDY+((Yd-Y_c)/T);_c:=X_c+VCx*dT; Y_c:=Y_c+VCy*dT;:=Xd+VDX*dT; Yd:=Yd+VDY*dT;:=TCatch+dT;L<=0 then L:=1;:=(VCx*sin(RFi))-(VCy*cos(RFi))+H/2;:=((VCx*cos(RFi))+(VCy*sin(RFi)))/L;(Takt,V,W);:=Xd+(VDX*dT); Yd:=Yd+(VDY*dT);:=L+(V*dT);:=Fi+(W*dT*180/pi);_CX:=X_c; Cur_CY:=Y_c;_DX:=Xd; Cur_DY:=Yd;_V:=V; Cur_W:=W;;(abs(X_c-Xd)<=d) and (abs(Y_c-Yd)<=d) then begin.Caption:='Goal';.Enabled:=false;;TCatch>Tau then begin.Enabled:=false;.Caption:='Out of time';;L>LF then begin.Enabled:=false;.Caption:='Out of Speed';;;StrGridToExcel(SG:TStringGrid; InverceRows:Boolean);, Workbook: OLEVariant;, EndCol, BeginCol, BeginRow, i, j: integer;:= CreateOleObject('Excel.Application');.Application.EnableEvents:= false;:= ExcelApp.WorkBooks.Add;:=0;:=0;:=SG.ColCount+1;:=SG.RowCount+1;InverceRows theni:=BeginCol to EndCol doj:=BeginRow to EndRow do.WorkSheets[1].Cells[i+1,j+1]:=StrToFloat(SG.Cells[i,j]);.WorkSheets[1].Cells[i+1,j+1]:=SG.Cells[i,j];;i:=BeginCol to EndCol doj:=BeginRow to EndRow do.WorkSheets[1].Cells[i+1,j+1]:=StrToFloat(SG.Cells[j,i]);.WorkSheets[1].Cells[i+1,j+1]:=SG.Cells[j,i];;;.Visible:= true;;TForm1.Button2Click(Sender: TObject);(StringGrid1,True);;

end.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!