-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: bartekltg <b...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: wzór na obrót wiezyczki strzelniczej
Date: Thu, 25 Apr 2013 19:55:19 +0200
Organization: ATMAN - ATM S.A.
Lines: 115
Message-ID: <klbqm9$1ve$1@node1.news.atman.pl>
References: <3...@g...com>
<kl3hjv$9ur$2@node2.news.atman.pl>
<3...@g...com>
<kl60dq$g0s$1@node1.news.atman.pl> <kl91kd$295$1@news.icm.edu.pl>
NNTP-Posting-Host: 89-73-65-59.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1366912521 2030 89.73.65.59 (25 Apr 2013 17:55:21 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Thu, 25 Apr 2013 17:55:21 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328
Thunderbird/17.0.5
In-Reply-To: <kl91kd$295$1@news.icm.edu.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:202838
[ ukryj nagłówki ]W dniu 2013-04-24 18:35, Vax pisze:
> 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 ;)
Cały problem u fira pojawia się przez to, że chce on jednocześnie
zadać jednoznaczny ruch wieżyczki, oraz sterować prędkością
i puszczać swojego eulera.
To jest podejście bez sensu. Albo budujemy prawdziwy sterownik
do wieżyczki, który pobiera pozycje (a nawet prędkość) celu
i wysyła sygnał do sterowania 'silnikiem' (wszytko jedno, czy
to będzie prędkością, czy np mocą) a cześć programu odpowiedzialna
za fizykę to symuluje,
...albo zadajemy ruch na sztywno, wtedy nie ma sensu pytać się
o prędkość w danym momencie, jeszcze uwzględniając poprawkę na
niezbyt dokłądną symulację.
Mamy pozycję (kąt) w funkcji czasu i z niego korzystamy, tyle.
W każdej 'ramce symulacji' ustawiamy wczsniej analitycznie
policzoną pozycję - jesteśmy dokładniejsi, zrobiliśmy to prościej,
do tego spowoduje to mniejsze obciążenie dla komputera.
> 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.
Tak, ale rozróżnienie jest nietrudne.
Jeśli droga to S, a -przyszpieszenie, v - predkość maksymalna,
to prędkość v osiagniemy po czasie wynikającym z v=a*t,
przebywając wtedy drogę s = 0.5 at^2
s = 0.5 v^2/a
Jeśli ta droga jest większa niż połowa trasy:
0.5 v^2/a > S/2
to nie rozpędzimy się do końca. Połowę czasu/drogi się rozpędzamy,
połowę hamujemy.
Najwygodniej policzyć sobie charakterystyczne momenty,
jak zmiana przyszpieszenia, a pomiedzy nimi ruch jest albo
jednostajnie przyszpieszony/opozniony, albo jednostajny.
czyli mamy funkcje kwadratową lub liniową, + 2ify w każdej ramce.
NO, chyba, ze zbudujemy prawdziwy sterownik i fizykę.
> 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.
Nie przejmowałbym się tą dyskretyzacją, patrz pierwsze uwago.
To, czy mamy trapez powinno wynikać wyłącznie z tego, czy osiągnelismy
predkość maksymalną
>
> 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.
Da się udowodnić, że optymalne czasowo sterowanie będzie trapezem,
albo trójkątem, zaleznie od tego, czy uzyskamy maksymalną prędkość.
> 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.
To nie jest problem dyskretny. Na razie wszytko jest liczbami
rzeczywistymi, wyliczamy na kartce odpowiedź, a potem implementujemy
double pozycja_wiezyczki(t); //zwróc uwagę na typ:)
> 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 ;)
pzdr
bartekltg
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-07-10 Nadchodzi nowa opłata od posiadania aut spalinowych
- 2024-07-10 Droga dwukierunkowa
- 2024-07-10 Elektryki są fajne
- 2024-07-10 Elektryki są fajne :(
- 2024-07-09 USB -> jack
- 2024-07-10 Kompakt WC z montażem
- 2024-07-10 Gorąco za oknem, to napisałem piosenkę o grupowiczach
- 2024-07-09 Naprawa klimy przenośnej - czy to opłacalne?
- 2024-07-10 Białystok => Technical Leader (Java Background) <=
- 2024-07-10 Białystok => Senior Rust Software Engineer <=
- 2024-07-10 Warszawa => Spedytor Międzynarodowy <=
- 2024-07-10 Warszawa => Spedytor międzynarodowy <=
- 2024-07-10 Warszawa => Technical Lead ( (Java Background)) <=
- 2024-07-10 Warszawa => Projektant/Programista React Native <=
- 2024-07-10 Gdańsk => Head of International Freight Forwarding Department <=