Gå til innhold

Anbefalte innlegg

Hei,

 

Noen som kan sparke meg litt igang her?

Har 2 motorer med hjul ( liten bil) som jeg får posisjonsdata i form av grader med en avstand d imellom akslingene.

Skal lage en formel for å "logge" posisjonen til dette.

 

lite utdrag fra det jeg roter med:

 

 

c=(PosMotorB(k*cosd(aw(k)))+PosMotorC(k)*cosd(aw(k)))/2;

 

if PosMotorB(k)>PosMotorC(k);

 

aw(k)=tand(PosMotorB(k)/c(k));

y(k)=c(k)*-sind(aw(k));

else PosMotorB(k)<PosMotorC(k);
aw(k)=tand(PosMotorC(k)/c(k));
y(k)=c(k)*sind(aw(k));

end

 

alt med (k) er tidseneheten/hvergang matlab tar en scan.

Tanken bak denne er at:

om motorB har en større verdi en motorC så svinger den mot ene siden, her Høyre, tenker da at det skal lage en negativ Y-verdi.

Samme men motsatt når motorC har større verdi en B.

Første setningen med 'c' er å lage en middelverdi av de to motorene.

 

C og Y er de jeg vil plotte.

Håper dette var litt forklarende... litt vanskelig å forklare med tekst på et forum.

 

 

 

Lenke til kommentar
  • 2 uker senere...
Videoannonse
Annonse

Kjører plottet til slutt etter kjøringen, da plottet påvirker kjøringen/styringen.

Ja, hadde tenkt å plotte c og Y, er Lego Mindstorm.

Hva mener du med hvordan kjøre programmet?

Får rotasjons verdier fra motorene, som da med litt "enkel"matte burde vert mulig å kalkulere posisjonen.. men er der jeg har gravd meg fast. :wallbash:

Lenke til kommentar

Når roboten kjører rett frem vil begge rotasjons sensorene øke likt.

Begge gir ut verdier i form av grader.

Jeg vil plotte posisjonen til roboten i en graf.

Ved start vil den kjøre rett frem som vil lage x-aksen. ergo verdiene er motorb=motoc

dersom den svinger mot høyre eller venstre vil ikke verdiene vare lik lengre og den skal svinge på plottet.

 

Så dersom den kjører langs kantlinjene i fks et firkantet rom skal det vare en firkant i plottet.

 

 

Det jeg ikke får til er å lage en funksjon ut fra verdiene til sensorene.

"hva" som skal plottes kan godt vare posisjonen til ene motoren, eller et punkt mellom motorene.

Lenke til kommentar

Ok, da tror jeg at jeg henger med. 

 

Oppfølgingsspørsmål: 

 

Du nevner ordet rotasjons-verdi fra motorene. Vil det være korrekt å anta at dette er en verdi som vil øke positivt når man kjører fremover, slik at en differanse i verdien indikerer at det ene hjulet roterer fortere enn det andre? 

 

Det hadde nå vært greit med litt informasjon om hvordan svingingen på roboten foregår. Vil man f.eks kun ha rotasjon på den ene motoren når man svinger mot en av sidene? 

 

Er det RWTH pakken du bruker i programmet ditt? 

Lenke til kommentar

Jeg ville tenkt slik:

Gitt at begge dekk har lik diameter, la oss si 3cm for en omkrets på ~ 9.425cm. Nå kan du tenke at vinkelfoskjell på dekk A og B tilsvarer en avstand langs sirkelen som dannes med senter i A og radius AB (eller motsatt), jeg kaller den S.
La oss si at det er 15 cm mellom dekk A og B, langs drivakselen, jeg kaller den D.

 

Jeg gjør det slik at positiv vinkel er når høyre dekk går raskere, går ut i fra at posisjon her er vinkel.

 

 angleDifference = rightWheelPosition - leftWheelPosition

 

Nå kan vi finne ut hvor langt dette tilsvarer i lengde basert på hjulets diameter med f.eks 2 grader forskjell:

 

 L = 2 * pi * r * (angleDifference/360) = 2 * 3.1415 * 3/2 * (2/360) = 0.052 cm

 

Nå vet vi avstanden langs omkretsen til sirkel A kan vi finne ut den faktiske vinkelen til drivakslen:

 

 shaftAngleDifference = 360 * L / (2 * pi * D) = 360 * 0.052 / (2 * 3.1415 * 15) = 0.199 ~~ 2 grader

 

 


 

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å
×
×
  • Opprett ny...