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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

0,000,000,720,400,541,500,440,230,930,340,180,570,000,000,000,740,410,561,550,450,240,960,340,180,570,000,000,000,750,430,591,600,470,250,980,300,160,51-0,76-0,40-1,270,760,440,611,650,480,261,010,270,140,44-0,76-0,40-1,270,770,450,631,700,500,261,030,230,120,38-0,76-0,40-1,270,780,470,651,750,510,271,050,190,100,32-0,76-0,40-1,270,790,480,661,800,510,271,060,150,080,25-0,76-0,40-1,270,790,480,681,850,520,281,070,110,060,19-0,76-0,40-1,270,800,490,691,900,530,281,080,080,040,13-0,76-0,40-1,270,800,500,691,950,530,281,080,040,020,06-0,76-0,40-1,270,800,500,702,000,530,281,090,000,000,000,000,000,000,800,500,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.

 

VWXdYdXrYr0,000,000,000,00700,00720,00707,000,20-0,480,3420,00734,60742,20707,300,40-0,280,4260,00803,90637,00750,000,60-0,090,47100,00873,20553,50798,000,800,070,47140,00942,50489,60851,001,000,200,44180,001012,00444,70909,301,200,310,37220,001081,00418,30973,001,400,380,31260,001150,00408,601042,001,600,420,24300,001220,00412,601116,001,800,450,19340,001289,00427,201193,002,000,460,15380,001358,00449,501272,002,200,470,12420,001427,00477,201352,002,400,470,09460,001497,00508,701432,002,600,470,08500,001566,00542,801512,002,800,460,06540,001635,00578,801591,003,000,460,05580,001705,00615,901670,003,200,450,04620,001774,00654,001747,003,400,440,04660,001843,00692,601824,003,600,440,03700,001912,00730,601897,003,800,440,03740,001982,00740,001982,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;LLF 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.