Spørsmål:
Hvordan beregne en modifisert sinuskurve?
birdman3131
2015-03-12 01:32:03 UTC
view on stackexchange narkive permalink

enter image description here

Jeg designer todimensjonale kamprofiler. Jeg vil bruke "modifisert sinus" -metoden for å tegne posisjons- og vinkelendringene. (se vedlagt skisse). Den modifiserte sinuskurven er faktisk en kombinasjon av cykloidkurve ved første og siste 1/8 av kurven og en sinuskurve i midten 7/8 av kurven. Det brukes lett når terminalhastighetene er null. Imidlertid er det ofte ofte nødvendig for en kamprofil å bare gå fra en hastighet (kanskje null) til en konstant terminalhastighet. Terminalhastigheten er ganske enkelt en vinkel på forskyvningsdiagrammet.

Profilen er definert av:

$$ y = \ begin {cases} \ frac h {4+ \ pi} \ left (\ pi \ frac \ theta \ beta- \ frac14 \ sin \ left (4 \ pi \ frac \ theta \ beta \ right) \ right), & 0 \ lt \ theta \ lt \ frac18 \ beta \\ [ 2ex] \ frac h {4+ \ pi} \ left (2+ \ pi \ frac \ theta \ beta- \ frac94 \ sin \ left (4 \ pi \ frac \ theta {3 \ beta} + \ frac \ pi3 \ høyre) \ høyre), & \ frac18 \ beta \ lt \ theta \ lt \ frac78 \ beta \\ [2ex] \ frac h {4+ \ pi} \ left (4+ \ pi \ frac \ theta \ beta- \ frac14 \ sin \ left (4 \ pi \ frac \ theta \ beta \ right) \ right), & \ frac78 \ beta \ lt \ theta \ lt \ beta \ end {cases} $$

The maksimal hastighet som kan oppnås er $ 45 \ deg \ left (\ frac \ pi4 \ right) $, derfor er bare første halvdel av kurven brukbar for mitt behov.

som et eksempel,

hvilken metode vil du bruke for å designe en kurve som vil gå fra punkt $ (0,0) $ i vinkel null, til punktet $ (3, 2) $ helling $ 30 $ grader.

Hvilke koeffisienter $ h $ og $ \ beta $ i ovenstående ligninger vil skape en kurve slik at hellingen ved punkt $ (3,2) $ er lik $ \ frac {30} {180} \ pi $?

Jeg tror du kan ha noe av matematikken din feil. Terminalhastigheten er egentlig ikke en vinkel, men heller derivatet $ \ frac {dy} {d \ theta} $ og maksimal hastighet oppstår ved $ \ theta = 0,5 \ beta $. Jeg vet ikke om du virkelig kan løse dette problemet med mindre du gir en ønsket helling (hastighet) i stedet for en ønsket vinkel. I tillegg vil enheter bli satt stor pris på.
En svar:
jhabbott
2015-03-16 08:16:29 UTC
view on stackexchange narkive permalink

Jeg bruker en Hermite-interpolasjon. Den bruker følgende fire funksjoner:

$ h_1 = 2s ^ 3 - 3s ^ 2 + 1 $

$ h_2 = -2s ^ 3 + 3s ^ 2 $

$ h_3 = s ^ 3 - 2s ^ 2 + s $

$ h_4 = s ^ 3 - s ^ 2 $

Og kombinerer dem slik:

$ output = (h_1 * startPoint) + (h_2 * endPoint) + (h_3 * gradientIn) + (h_4 * gradientOut) $

Verdien $ s $ i de fire funksjonene er din interpolering når den går fra $ 0 $ til $ 1 $, går $ output $ fra $ startPoint $ $ (0, 0) $ til $ endPoint $ $ (3, 2) $. $ GradientIn $ ble ikke spesifisert, men ser ut til å være $ 0 $ og $ gradientOut $ er som du spesifiserte: $ tan (\ frac {\ pi} {6}) = \ frac {1} {\ sqrt {3} } $ så fjern vilkårene som vil multipliseres med null (startpunkt og gradering i):

$ x_s = (h_2 * x_ {end}) + (h_4 * tan (\ frac {\ pi} { 6})) = (h_2 * 3) + (h_4 * \ frac {1} {\ sqrt {3}}) $

$ y_s = (h_2 * y_ {end}) + (h_4 * tan (\ frac {\ pi} {6})) = (h_2 * 2) + (h_4 * \ frac {1} {\ sqrt {3}}) $

Hvis du vil ha mer informasjon om denne typen interpolasjonskurve, her er en matematisk beskrivelse og en mer funksjonell beskrivelse.

Takk for arbeidet du har gjort. Imidlertid vet jeg ikke hvordan jeg kommer til en generell ligning fra denne løsningen. Det ser ut til å bare gjelde eksemplet.
Den generelle ligningen starter "output = (h1 * startPoint) + ..." - bare biten etter det er spesifikt for eksemplet ditt. For å forstå, bruk 0 for startPoint og 1 for endPoint og plott deretter 's' som 'x' og 'output' som 'y'. Prøv å justere gradienten inn / ut for å se hvordan kurven påvirkes og få en følelse av den. Deretter vil du se hvor enkelt det kan være å omparametrere 's' over flere segmenter hvis du vil bygge opp mer komplekse kurver (korrigere gradienter for eventuell skalering).


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...