🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #205217

Re: wzór na obrót wiezyczki strzelniczej

#205217
From: Vax
Date: Wed, 24 Apr 2013 16:35
50 lines
3686 bytes
W dniu 2013-04-23 14:56, bartekltg pisze:
> Wykres prędkości od czasu będzie albo trójkątem,
> albo trapezem, w zależności, czy uda się rozpędzić.
> Uda się, jeśli droga jest prędkość graniczna jest mniejsza
> niż sqrt (a*droga)

Dopiero teraz sobie zerknąłem, a tu coś ciekawego :)
Pierwsze moje spostrzeżenie:
mamy do czynienia z "dyskretnymi krokami/ramkami" co jeżeli dobrze 
rozumiem, oznacza jakieś taktowanie.
Założyłem, że w każdym takcie możemy przesłać sterownikowi wartość 
przyspieszenia (lub opóźnienia) co nie wynika jednoznacznie z pobieżnego 
opisu zadania ;)

I tu pojawią się przypadki gdy bez osiągania prędkości maksymalnej 
trzeba będzie rozstrzygnąć, czy mniej ramek wygeneruje trapez czy trójkąt.

Np. dla przyspieszenia 2 stopnie na takt obrót o 3 stopnie można 
zrealizować w czterech taktach (trójkąt) lub tylko trzech taktach (trapez):
1. rozpędzanie 0 - 1.5 -> pokonany dystans 0.75
2. ruch jednostajny 1.5 -> pokonany dystans 1.5
3. hamowanie   1.5 - 0  -> pokonany dystans 0.75
W dwóch się nie da, maksymalne rozpędzenie i hamowanie po jednym takcie 
da tylko 2 stopnie.

Analogicznie dla tegoż przyspieszenia obrót o 7 stopni wymaga minimum 4 
kroków i owe 4 kroki realizujemy przebiegiem trójkątnym, "trapezowanie" 
wymagałoby minimum 5 kroków.

Celowo pomijam tu fikuśne łamane typu "trójkąt na trapezie", gdyż można 
dobrać przyspieszenie pośrednie, by uzyskać trójkąt o tym samym polu. 
Podobnie z "trapezem na trapezie".
Natomiast "intuicyjne" podejście do tematu nakazuje się rozpędzać "ile 
fabryka dała" kontrolując jedynie "czy dam radę się zatrzymać" i 
dopiero, gdy dalsze rozpędzanie (bądź utrzymywanie maksymalnej 
prędkości) grozi przestrzeleniem mety, rozpocząć kalkulację jak 
rozplanować hamowanie by utrafić w punkt w ostatnim takcie.

Dodatkowym "smaczkiem" jest ogranicznik prędkości maksymalnej nie będący 
wielokrotnością przyspieszenia, więc mamy sytuację niesymetryczną, gdzie 
prędkość wzrasta liniowo 0,3,6,9,10 za to maleje w sposób: 10,7,4,1,0 
(zakładając hamowanie z maksymalnej, co nie musi być regułą) - cały czas 
pamiętamy o taktowaniu.

Zabawy miałem na co najmniej 3 kwadranse - dziękuję za łamigłówkę :)

Nie wiem tylko, czy "optymalizacja" bierze pod uwagę na to, w którym 
momencie taktu nastąpi wyhamowanie do zera i czy w takim przypadku 
(wcześniej niż koniec taktu) sterownik zatrzyma mechanizm, czy np. 
rozpocznie obrót w przeciwnym kierunku, ale to już niuanse ;)
Technical Details
Message-ID: <kl91kd$295$1@news.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.icm.edu.pl!.POSTED!not-for-mail
References: <3c114ff4-e690-4b03-850f-c60167dae06f@googlegroups.com> <kl3hjv$9ur$2@node2.news.atman.pl> <3426f0d1-ab3e-4b93-bc54-bcb04c2ffe87@googlegroups.com> <kl60dq$g0s$1@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.icm.edu.pl!.POSTED!not-for-mail
From: Vax <m@ila.nie.ma>
Newsgroups: pl.comp.programming
Subject: Re: wzór na obrót wiezyczki
 strzelniczej
Date: Wed, 24 Apr 2013 18:35:59 +0200
Organization: ICM, Uniwersytet Warszawski
Lines: 51
Message-ID: <kl91kd$295$1@news.icm.edu.pl>
References: <3c114ff4-e690-4b03-850f-c60167dae06f@googlegroups.com> <kl3hjv$9ur$2@node2.news.atman.pl> <3426f0d1-ab3e-4b93-bc54-bcb04c2ffe87@googlegroups.com> <kl60dq$g0s$1@node1.news.atman.pl>
NNTP-Posting-Host: 89-72-246-7.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: news.icm.edu.pl 1366821325 2341 89.72.246.7 (24 Apr 2013 16:35:25 GMT)
X-Complaints-To: usenet@news.icm.edu.pl
NNTP-Posting-Date: Wed, 24 Apr 2013 16:35:25 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0
In-Reply-To: <kl60dq$g0s$1@node1.news.atman.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit