Memphis88 Skrevet 19. april 2013 Del Skrevet 19. april 2013 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 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
Torbjørn T. Skrevet 19. april 2013 Del Skrevet 19. april 2013 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
Memphis88 Skrevet 23. april 2013 Forfatter Del Skrevet 23. april 2013 Det ga meining, ja Men, er det mulig å hente ut dei forskjellige transformasjonsmatrisene? T01 og opp til T34 blir berre 1x1 sym i matlab når jeg kjører koden, men jeg får fortsatt ut den totale T04 matrisen (som stemmer). Lenke til kommentar
Torbjørn T. Skrevet 23. april 2013 Del Skrevet 23. april 2013 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå