Smooshball Skrevet 7. november 2016 Del Skrevet 7. november 2016 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
V_B Skrevet 15. november 2016 Del Skrevet 15. november 2016 Er det altså slik at du ønsker å oppdatere et plot med C og Y mens bilen din kjører? Hvordan har du i så tilfelle valgt å kjøre programmet ditt (eks x antall iterasjoner)? Er det Lego Mindstorm du jobber med? Lenke til kommentar
Smooshball Skrevet 16. november 2016 Forfatter Del Skrevet 16. november 2016 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. Lenke til kommentar
Salvesen. Skrevet 16. november 2016 Del Skrevet 16. november 2016 Litt vanskelig å se hva du faktisk trenger hjelp til her? Plottingen er jo ikke med her engang. Lenke til kommentar
Smooshball Skrevet 16. november 2016 Forfatter Del Skrevet 16. november 2016 Selve plottet er jo bare:plot (c,y)... er funksjonene bak c og y som jeg trenger hjelp til. Lenke til kommentar
Salvesen. Skrevet 16. november 2016 Del Skrevet 16. november 2016 Selve plottet er jo bare: plot (c,y)... er funksjonene bak c og y som jeg trenger hjelp til. Men hva? Hva er det som ikke virker og hvordan skal det virke? Lenke til kommentar
Smooshball Skrevet 16. november 2016 Forfatter Del Skrevet 16. november 2016 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
V_B Skrevet 17. november 2016 Del Skrevet 17. november 2016 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
Enthroner Skrevet 21. november 2016 Del Skrevet 21. november 2016 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
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å