Gå til innhold
Trenger du skole- eller leksehjelp? Still spørsmål her ×

Forward kinematics (mekatronikk) i matlab!


Anbefalte innlegg

Hei!

 

Trenger litt hjelp i matlab:

 

Jeg skal lage transformasjonsmatrise for en robotarm.

 

Har, med litt hjelp fra internetts magiske verden, komt over en kode som generer fullstendig transformasjonsmatrise basert på DH-tabellen til robotarmen :p

 

Det den ikke gir (og som jeg trenger), er transformasjonsmatrisene for hver link langs armen (matrisa fra koordinatsystem 0 til 1, 1 til 2 osv opp til siste ledd).

 

Er det noen som har tips til hvordan jeg skal få til det? :)

 

Kan noen også forklare T(:,:,i) inne i for-løkken? :)

 

 

function Tout=createT(DH,varargin) %Enter DH-table
if(isempty(varargin))
   first=1;
   last=size(DH,1);
   invert=0;
else
   first=varargin{1};
   last=varargin{2};
   if(varargin{2}>=varargin{1})
    first=varargin{1};
    last=varargin{2};
    invert=0;
   else
    first=varargin{2};
    last=varargin{1};
    invert=1;
   end
end

for i=first:last
   a1=DH(i,1);
   a=DH(i,2);
   d=DH(i,3);
   t=DH(i,4);

   T(:,:,i)=[cos(t)	   -sin(t)			 0			   a;
    sin(t)*cos(a1)	  cos(t)*cos(a1)	  -sin(a1)	    -sin(a1)*d;
    sin(t)*sin(a1)	  cos(t)*sin(a1)	  cos(a1)		 cos(a1)*d;
    0				   0				   0			   1];
end
Tr=eye(4);
for i=first:last
   Tr=Tr*T(:,:,i);
end
Tout=simplify(Tr)

Lenke til kommentar
Videoannonse
Annonse

Om T(:,:,i):

 

For kvart tidssteg/kvar rørsle vert det definert ei 4x4 transformasjonsmatrise, og du vil lagre kvar slik matrise. Det vert gjort ved at T er ei tredimensjonal matrise der dei to fyrste dimensjonane er det same som i transformasjonsmatrisa, og den tredje dimensjonen er tid.

Kolon-notasjonen vert brukt for å sleppe å spesifisere storleiken. T(:,:,i) tyder: I matrisa T, erstatt alle element langs fyrste og andre dimensjon, for "nivå" i langs tredje dimensjon, med den matrisa som står på høgresida av likskapsteiknet. Sagt på ein annan måte vert dei ulike todimensjonale transformasjonsmatrisene stabla oppå kvarandre til ei tredimensjonal matrise.

 

(Gav det der i det heile tatt meining? Eg har ikkje noko problem med å sjå for meg kva som skjer, men eg klarer ikkje forklare det på ein god måte ...)

Lenke til kommentar

For å få med deg ein variabel ut av ein funksjon må du leggje den til som output. Med andre ord må du endre den fyrste linja av funksjonen til

function [Tout,T]=createT(DH,varargin) %Enter DH-table

og kalle den som t.d.

[Tout,T]=createT(DH);

Merk at om first ikkje er lik 1, vil dei fyrste matrisene i «stabelen» bestå av kun nulltal. For å fikse det, legg til

 T = T(:,:,first:last)

heilt til slutt i funksjonen.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...