• Nie Znaleziono Wyników

Podsumowanie i wnioski końcowe

W dokumencie Index of /rozprawy2/11033 (Stron 114-134)

Niniejsza rozprawa doktorska stanowi podsumowanie dotychczasowego wkładu autora w projekt rozwojowy „Mechatroniczne projektowanie robotów do diagnostyki i konserwacji

zbiorników z cieczą” NR03 0057 10 finansowanego przez NCBiR. .

W pracy można wyróżnić trzy zasadnicze części – analizę odtwórczą (rozdział 3), analizę twórczą ze względu na kinematykę robotów gąsienicowych (rozdział 4) oraz analizę twórczą ze względu na inne rozwiązania związane z projektem (rozdział 5). Wszystkie z tych części przedstawiają zagadnienia mające kluczowy wpływ na konstrukcję robota inspekcyjnego. Analiza odtwórcza przyniosła wnioski w postaci zbioru istniejących modeli kinematyki pojazdów gąsienicowych, rozwiązań technicznych robotów inspekcyjnych oraz metod inspekcji. Propozycje tych rozwiązań są fundamentem dla poszukiwań własnych oryginalnych koncepcji. Temu służy analiza twórcza, w ramach której opracowano oryginalny model matematyczny kinematyki robotów gąsienicowych oparty na modelu dwukołowym oraz przedstawiono inne autorskie rozwiązania o charakterze technicznym. Należy podkreślić, że najważniejszą częścią tej pracy jest rozdział 4. Opisuje on autorską metodę opisu kinematyki pojazdów gąsienicowych za pomocą modelu dwukołowego. Na podstawie teorii tego modelu sformułowano tezę główną pracy (podrozdział 1.3). Teza została udowodniona doświadczeniami opisanymi w podrozdziałach 4.5 i 4.6. Celem identyfikacji położenia

OSI V pojazdu gąsienicowego dokonano analizy jego trajektorii za pomocą metod wizyjnych. Pomiary przeprowadzono na trzech podłożach o różnych współczynnikach tarcia. Dla każdego

podłoża z osobna zbadano ruch z obciążeniem zamontowanym z przodu oraz z tyłu pojazdu i wykazano istnienie wyraźnego wpływu zmian obciążenia na położenie OSI V. Dla pewności

wszystkie pomiary powtórzono trzykrotnie. . Wykazano również istnienie zależności pomiędzy poślizgiem gąsienic a rozstawem kół wirtualnych

modelu zastępczego co potwierdzono pomiarami podczas jazdy po łuku okręgu. Ostatecznie zweryfikowano model symulując ruch pojazdu po łuku z zadanymi zestawami prędkości

par kół napędowych i porównując trajektorie tego ruchu z rzeczywistymi trajektoriami. Wykazano, że w granicach 5% błędu model dwukołowy poprawnie opisuje ruch pojazdu gąsienicowego. Potwierdzono w ten sposób słuszność tezy pracy doktorskiej. Jako konsekwencję tego faktu należy stwierdzić, że poprawnie zidentyfikowany zastępczy model dwukołowy może służyć do aplikacji w układach sterowania ruchem pojazdów gąsienicowych (w obszarze objętym założeniami). Zaproponowany przez autora model matematyczny stwarza możliwość tzw. autokalibracji. Parametry modelu (czyli położenie OSI V i rozstaw kół wirtualnych) mogą zostać ustalone w zależności od podłoża przez układ pomiarowy zainstalowany na pojeździe podczas jazdy

115 kalibracyjnej. Po określeniu parametrów zostaje zbudowany dwukołowy model zastępczy, który można wykorzystać do sterowania pojazdem na tym podłożu. Dalsze prace należy skoncentrować na skonstruowaniu układów realizujących te funkcje na pokładzie robota, ponieważ dotychczas analiza trajektorii odbywa się za pomocą systemów wizyjnych tak jak to opisano w podrozdziale 4.4.1. Ponadto należy przeprowadzić badania z robotem z zamkniętym układem sterowania napędu. W pracy opisano eksperyment na pojeździe z układem otwartym co ma wyraźny wpływ na stabilność

prędkości kół napędowych a w efekcie na dokładność otrzymanych wyników. . Można również przeprowadzić pomiary na podłożach anizotropicznych pod względem współczynnika

tarcia. Interesujące mogą być też wyniki identyfikacji modelu dwukołowego, gdy obciążenie na jednej

gąsienicy jest inne niż na drugiej. .

. Autor zwraca także uwagę na możliwość rozwoju konstrukcji mechanizmu dokowania, którego rozwiązanie przedstawiono w podrozdziale 5.3. Na bazie opisanego tam prototypu można dokonać potrzebnych modyfikacji i przeprowadzić szereg testów pod wodą celem zbadania jego funkcjonalności.

116

Literatura

[1] Buratowski T..: Modelowanie i identyfikacja mobilnych robotówkołowych, Praca Doktorska, 2003

[2] Burdziński Z.: Teoria ruchu pojazdu gąsienicowego, WKŁ, Warszawa 1972

[3] Cassinis R., Tampalini F., Bartolini P., Fedrigotti R., Docking and charging system for

autonomous mobile robots, Dept. of Electronics & Automation, University of Brescia, 2005

[4] Chen Ning, i inni, The Motion Attitude Analysis of High-Speed Tracked Vehicle Climbing over

Vertical Wall, Advanced Materials Research, Vol. 852,pp 515-519, January 2014

[5] Chodkowski A. W.: Badania modelowe pojazdów gąsienicowych i kołowych, Wydawnictwa Komunikacji i Łączności, Warszawa 1982.

[6] Chodkowski A. W.: Konstrukcja i obliczanie szybkobieżnych pojazdów gąsienicowych, Wydawnictwa Komunikacji i Łączności, Warszawa 1990.

[7] Coulson R., Lambiotte J.C., Grenon G., Pantelakis T., Curran J., An A., Development of a

modular docking sub-system for 12" class autonomous underwater vehicles, OCEANS '04.

MTTS/IEEE TECHNO-OCEAN '04, vol. 3, 1745 – 1749, 2004

[8] Dar Tehmoor M., Longoria Raul G., Slip Estimation for Small-Scale Robotic Tracked Vehicles, 2010 American Control Conference Marriott Waterfront, Baltimore, MD, USA June 30-July 02, 2010

[9] Drobiec Ł., Jasiński R., Piekarczyk A.: Metody lokalizacji wad konstrukcji betonowych –

metoda ultradźwiękowa , Politechnika Śląska, Gliwice

[10] Endo Daisuke, Okada Yoshito, Nagatani Keiji, Yoshida Kazuya, Path Following Control for

Tracked Vehicles Based on Slip-Compensating Odometry, Proceedings of the 2007 IEEE/RSJ

International Conference on Intelligent Robots and Systems San Diego, CA, USA, Oct 29 - Nov 2, 2007

[11] Feezor M.D., Yates Sorell F., Blankinship P.R., Bellingham J.G., Autonomous underwater

vehicle homing/docking via electromagnetic guidance, Oceanic Engineering, IEEE Journal,

vol. 26, issue 4, 515-521, October 2001

[12] Ferrer F., Faure T., Goudiakas J., Andres E., Corrosion Science, 44 (7), 2002

[13] Fierro R., Lewis F. L., Control of a nonholonomic mobile robot: backstepping kinematics into

dynamics, Proceedings of the 34th Conference on Decision & Control, New Orleans, LA -

117 [14] Fukasawa T., Noguchi T., Kawasaki T., Baino M., "MARINE BIRD", a new experimental

AUV with underwater docking and recharging system, OCEANS 2003 Proceedings, 2195-2200,

vol.4, 2003

[15] Giergiel J., Hendzel Z., Żylski W., Modelowanie i sterowanie mobilnych robotów

kołowych,PWN, Warszawa, 2002

[16] Giergiel M., Majkut K., Introduction to the project of tank inspection robot-constructive

analysis, Wybrane Zagadnienia Szkoły Analizy Modalnej Konstrukcji Mechanicznych, ITEE,

Radom 2010

[17] Giergiel M., Małka P. : Mobile robot assigned for diagnostic and maintenance reservoirs with

liquid, MODELLING AND OPTIMIZATION OF PHYSICAL SYSTEMS, Gliwice 2009

[18] Gonzalez R., Rodriguez F., Guzman J.L., Berenguel M., Localization and Control of Tracked

Mobile Robots under Slip Conditions, Proceedings of the 2009 IEEE International Conference

on Mechatronics. Malaga, Spain, April 2009

[19] Hartsell D. R., Putting the Maverick fuel-tank inspection robot to the test, IEEE Robot. Autom. Mag., vol. 6, no.3, Feb. 1999, pp. 54–64.

[20] Hendzel Z., Sterowanie ruchem nadążnym mobilnych robotów kołowych, Ofic. Wydaw. Politechniki Rzeszowskiej, 1996

[21] Hughes, G., and Gittleman,M.M., A Robotic End Effector for Visual and Electromagnetic

Inspection of Waste Storage Tank Walls, Proceedings of the ANS 6th Topical Meeting on

Robotics and Remote Systems, 347-354. American Nuclear Society, Inc. La Grange Park, IL, 1995

[22] Kitano M., Kuma M., An analysis of horizontal plane motion of tracked vehicles, J. Terramechanics, vol. 14, pp. 211 - 225, 1977

[23] Krakowiak S., Darowicki K.: Nieniszczące badania materiałów, zakopane 2007

[24] La Rosa G., Messina M., Muscato G., Sinatra R.: A low-cost lightweight climbing robot for the

inspection of vertical surfaces, Mechatronics, Volume 12, Issue 1, Feb. 2002, pp. 71-96

[25] Le Anh Tuan, Rye David.C., Durrant-Whyte Hugh.F., Estimation of Back-soil Interactions for

Autonomous Tracked Vehicles, Proceedings of the 1997 IEEE International Conference on

Robotics and Automation Albuquerque, New Mexico - April 1997

[26] Madsen J., Heyn T., Negrut D., Methods of tracked vehicle system modeling and simulation, Based Engineering Lab Technical Reports, 2010

[27] Majkut K., Giergiel M., Dynamics of small caterpillar robot, Wydawnictwo PolitechnikiŚląskiej, Gliwice 2011

118 [28] Małka P.: Pozycjonowanie i nadążanie minirobota kołowego, Praca Doktorska, 2008

[29] Marsh C. P., Siddique A., Temple B., Hock V. M., Robb F.: Fury: Robotic in-situ

inspection/condition assessment system for underground storage tanks, US Army Corps of

Engineers, Washington, Tech. Rep., 2005.

[30] Martínez J. L., Mandow A., Morales J., Pedraza S., García-Cerezo A., Approximating

Kinematics for Tracked Mobile Robots, The International Journal of Robotics Research 2005

24: 867, DOI: 10.1177/0278364905058239

[31] Martínez J.L., Mandow A., Morales J., Garcia-Cerezo A., Pedraza S., Kinematic Modelling of

Tracked Vehicles by Experimental Identification, Proceedings of 2004 IEEORSJ International

Conference on Intelligent Robots and Systems September 28. Oclokr 2,2004. Sendal. Japan [32] Mężyk A., i inni, Modelling and Investigation of Dynamic Parameters of Tracked Vehicles,

Mechanics and Mechanical Engineering Vol. 15, No. 4 (2011) 115-130.

[33] Miller D.P., Wright A., Autonomous spacecraft docking using multicolor targets, Proceedings of the 6th Topical Meeting on Robotics and Remote Systems, Monterey, California, February 5-10, 1995, ISBN: 0-89448-602-0

[34] Moosavian S. Ali .A., Kalantari Arash, Experimental Slip Estimation for Exact Kinematics

Modeling and Control of a Tracked Mobile Robot, 2008 IEEE/RSJ International Conference on

Intelligent Robots and Systems Acropolis Convention Center Nice, France, Sept, 22-26, 2008 [35] Morecki A., Knapczyk J.: Podstawy robotyki: teoria i elementy manipulatorów i robotów,

Wydawnictwo Naukowo-Techniczne, Warszawa, 1994

[36] Murakami H., Watanabe K., Kitano M., A mathematical model for spatial motion of tracked

vehicles on soft ground, J. Temmechanics, vol. 29, no. 1, pp. 71 - 81, 1992

[37] Nagabło T., Modelowanie i symulacja pojazdu gąsienicowego w programie MSC ADAMS, Czasopismo Techniczne Mechanika, zeszyt 7, strona 375-382, Wydawnictwo Politechniki Krakowskiej, 2011

[38] Pack R. T., Christopher J. L. Jr., Kawamura K.: A Rubbertuator-based structure-climbing

inspection robot, Proceedings of the 1997 IEEE International Conference on Robotics and

Automation, Volume 4, 1997

[39] Ping Haijun Mo, Wu Huang Shaowei, Study on Dynamic Stability of a Tracked Robot

Climbing over an Obstacle or Descending Stairs,

[40] Portree D.S. , Mir hardware heritage, NASA Reference Publication 1357, Houston, March 1995

[41] Schempf H., Chemel B., Everett N., Neptune: above-ground storage tank inspection robot

119 [42] Schempf H.: Houdini: Locomotion analysis-driven design of an in-tank mobile cleanup robot, Proceedings of the Transactions of the American Nuclear Society volume 73, 1995, pp. 466-468 [43] Shiller, Z., Serate, W., Hua, M. 1993. Trajectory planning of tracked vehicles, Proceedings of

the IEEE International Conference on Robotics and Automation, Atlanta, GA, Vol. 3, pp. 796–801

[44] Sim R., Griffin M., Shyr A., Little J.J., Scalable real-time vision-based SLAM for planetary

rovers, IEEE IROS 2005 Workshop on Robot Vision for Space Applications, Edmonton ,

Canada , 5 Aug. 2005, pp 4-9

[45] Singh H., Bellingham J.G., Hover F., Lemer S., Moran B.A., von der Heydt K., Yoerger D.,

Docking for an autonomous ocean sampling network, Oceanic Engineering, IEEE Journal, vol.

26, issue 24, 498-514, October 2001

[46] Sogi T., Kawaguchi Y., Morisaki H., Ohkawa K., Kai N., Hayakawa H.: Inspection Robot for

Spherical Storage Tanks, 26th Annual Conference of the IEEE Industrial Electronics Society,

Volume 1, 22-28 Oct. 2000, pp. 393 - 398

[47] Sotiropoulos P., Grosset D., Giannopoulos G., Casadei F., AUV docking system for existing

underwater control panel, OCEANS 2009 – EUROPE, 1-5, 2009

[48] Stokey R., A docking system for REMUS, an autonomous underwater vehicle, OCEANS '97. MTS/IEEE Conference Proceedings, 1132 - 1136 vol.2, 1997

[49] Unterreiner M., Schramm D., Modelling of a Twin-Track Vehicle Model with Modular Wheel

suspensions, Applied Mechanics and Materials, Vol. 165, pp 214-218, April 2012

[50] Unver O., Sitti M., Tankbot: A Miniature, Peeling Based Climber on Rough and Smooth

Surfaces, Proc. of the 2009 IEEE Int. Conference on Robotics and Automation (ICRA), Kobe,

Japan, May 12-17, 2009

[51] Wang, G. G., Wang, S. H., Chen, C. W. 1990, Design of turning control for a tracked vehicle, IEEE Control Systems Magazine 10(3):122–125

[52] Wong, J. Y. 2001, Theory of Ground Vehicles, 3rd edition, Wiley, New York

[53] Yoshifumi K., Development of an Inspection Robot for Spherical Storage Tanks; Journal of the Robotics Society of Japan; vol: 21, 2003, pp. 770- 775.

[54] www.uprp.pl [55] www.espacenet.com [56] www.solidnydom.pl [57] www.ndt-ed.org [58] www.techcorr.com [59] www.frc.ri.cmu.edu [60] www.osakagas.co.jp

120 [61] http://spaceflight.nasa.gov/gallery/images/shuttle/sts-122/html/s122e006381.html [62] http://spaceflight.nasa.gov/gallery/images/station/crew-17/html/iss016e035627.html [63] http://jimmydoolittlemuseum.org/html/modern.html [64] http://www.nationmaster.com/encyclopedia/Aerial-refueling [65] http://www.patentbuddy.com/Patent/6604711 [66] http://www.google.com/patents/US6926049 [67] https://www.tntech.edu/engineering/research/cesr/welcome/featured-research/robots [68] http://robotik.dfki-bremen.de/en/research/robot-systems/artis-1.html [69] http://www.imagesystems.se/image-systems-motion-analysis.aspx [70] http://www.vision.caltech.edu/bouguetj/calib_doc/ [71] http://www.cnet.com [72] http://www.digi.com [73] http://www.dagurobot.com/

121

Załączniki

Z1. Istota algorytmu cięciw

Istota algorytmu cięciw została przedstawiona na rys.7.1. Znając trajektorię pojazdu, którą można uznać za zbliżoną do okręgu, jest możliwość określenia estymaty średnicy tego okręgu. Wymagana jest znajomość współrzędnych n punktów tworzących tą trajektorię. Niech długość cięciwy pomiędzy punktem Pi a punktem Pj będzie oznaczona jako:

cÎâ) |PÎPâ| (7.1)

W pierwszym kroku algorytmu należy przyjąć i=1. Ze wzoru (7.1) wynika, że:

c˜â) |P˜Pâ| ) e0x•ä1 x•N2 3 0y•ä1 y•N2 (7.2)

gdzie:

(xP1,yP1) – współrzędne punktu P1

(xPj,yPj) – współrzędne punktu Pj

Ze wzoru (7.2) trzeba obliczyć wszystkie c1j dla j=1 .. n

122 W ten sposób powstaje zbiór n długości cięciw c11,c12,…c1n. Analogicznie należy postąpić w kolejnych krokach aż do kroku n. Po wykonaniu tej procedury w każdym z powstałych zbiorów należy znaleźć najdłuższą cięciwę tj.:

cÎåÐh = max 0cΘ, cÎ … cΚ2 (7.3)

W rezultacie otrzymany zostaje inny zbiór – maksimów c1max, c2max .. cnmax. Wynikiem końcowym algorytmu jest wartość średnia maksimów długości cięciw obliczonych z (7.3), którą można traktować jako estymatę średnicy:

dçÍèiå=∑ 0c˜åÐh, cš åÐh . . cšåÐh2 Îê˜

n (7.4)

Ponieważ użyte we wzorze (7.4) najdłuższe cięciwy nie muszą być równe średnicy (zwykle są mniejsze od niej), więc wynik będzie niedoszacowany. Wzór ten jest zatem estymatorem obciążonym. Dokładność estymacji zależy od ilości punktów n tworzących trajektorię. Im większa liczba punktów, tym większa dokładność estymacji. Należy więc określić stosunek pomiędzy estymatą obciążoną a estymatą nieobciążoną w zależności od n. Dokonuje się tego przez wygenerowanie składającego się z n punktów okręgu o znanej wstępnie założonej średnicy Dzałoż. Współrzędne wygenerowanych punktów posłużą do estymacji średnicy destym. Ponieważ znana jest średnica Dzałoż a destym zostaje otrzymane ze wzoru (7.4), następną czynnością jest określenie stosunku średnicy założonej do estymowanej ze wzoru:

@0A2 = ëìíłïż0š2

ñòóÕÁô0š2 (7.5)

W ten sposób można utworzyć bazę danych s(n). Na tej podstawie można później obliczać estymator nieobciążony średnicy Destym(n) dowolnego okręgu:

DçÍèiå = @ 0A2dçÍèiå0n2 (7.6)

Algorytm cięciw autor zrealizował za pomocą przygotowanego przez siebie makra w programie Microsoft Excel (ESTYMATOR_ŚREDNIC, załącznik Z3). Dodatkowo opracowane zostało makro BŁĄD_ESTYMATORA_ŚREDNIC do określenia skali s(n) (załącznik Z4). Dla podanej średnicy

123 Dzałoż oraz liczby punktów n generowany jest okrąg. Generacja okręgu polega na obliczeniu współrzędnych punktów ze wzorów (7.7):

xÎ)ëìíłïżcos 0ϕÎ3 ϕ•2 yÎ)ëìíłïżsin 0ϕÎ3 ϕ•2 (7.7) gdzie: i = <1, n> ϕP – losowy kąt początkowy ϕi = Ë÷

Rys.7.2. Wygenerowany przez makro okrąg

Ponieważ w rzeczywistości odległości pomiędzy kolejnymi punktami na obwodzie trajektorii kołowej nie są jednakowe (z powodu niejednostajności ruchu) dlatego wprowadzono losowe zaburzenie wartości kąta ϕi:

ϕÎ) ø0ÎÏùúûüÔ.×× 2

š (7.8)

gdzie:

Rnd – losowa liczba z przedziału <0, 1>

W efekcie powstaje okrąg jak na rys.7.2. W ten sposób dla podanych wartości średnicy Dzałoż oraz n wygenerowanych zostaje 10 okręgów. Dla każdego z nich określona zostaje estymata średnicy Destym

oraz wartość s(n) ze wzoru (7.5), które następnie uśrednia się.

124

Z2. Przybliżenie okręgiem z metody najmniejszych kwadratów

Jak wcześniej wspomniano, trajektoria pojazdu wyznaczona została na podstawie zbioru punktów (xi, yi), który z metody najmniejszych kwadratów można przybliżyć okręgiem O(a_mnk,

b_mnk, r_mnk), gdzie (a_mnk, b_mnk) – współrzędne środka okręgu, r_mnk – promień okręgu. Niech dane będzie równanie tego okręgu:

0. 1 a_mnk2 + 05 − b_mnk2 = r_mnk (7.9) Równanie to można zapisać w innej postaci:

þ = . + 5 + A. + B5 + C = 0 (7.10)

przy czym:

a_mnk = −A2 (7.11)

b_mnk = −B2 (7.12)

r_mnk = Úa_mnk + b_mnk − C (7.13)

Wyrażenie w2 opisujące kwadrat odchylenia zadanej zależności funkcyjnej (równania okręgu) od punktów doświadczalnych (xi, yi) ma postać:

þ = 0.Î + 5Î + A.Î+ B5Î+ C2 š

Îê˜

(7.14)

Odchylenie powinno być jak najmniejsze, więc poszukiwane są minima wyrażenia po prawej stronie równania (7.14) ze względu na współczynniki A, B i C. Wyrażenie to jest więc różniczkowane po wymienionych współczynnikach a następnie pochodne przyrównuje się do zera:

125 þ ) 2.÷ +2.÷5÷ +2.÷ + 2.÷ + 2.÷5÷ = 0 ÷ê˜ (7.15) þ = [2. ÷5÷ +2.÷ +25÷ + 02.÷5÷+ 25÷ 2] ÷ê˜ = 0 (7.16) þ = 2. ÷ +25÷ +2 + 2.÷ + 25÷ = 0 ÷ê˜ (7.17)

W ten sposób powstaje układ trzech równań z trzema niewiadomymi – A, B i C. W celu ich znalezienia wykorzystano metodę wyznaczników, przy czym:

W = 2.÷5÷2.÷ 2.÷5÷2.÷ 2.÷25÷ 2.÷ 25÷ 2 š Îê˜ (7.18) W = − 2.−02.÷÷+ 2.÷5÷+ 25÷2 2.÷2.÷5÷ 2.÷25÷ − 2.÷ + 25÷ 25÷ 2 š Îê˜ (7.19) WY= 2.2.÷÷5÷ − 2.÷−02.÷5+ 2.÷÷+ 25÷2 252.÷÷ 2.÷ − 2.÷ + 25÷ 2 š Îê˜ (7.20) W•= 2.÷ 2.÷5÷ − 2.÷ + 2.÷5÷ 2.÷5÷ 2.÷ −02.÷5÷+ 25÷2 2.÷ 25÷ − 2.÷ + 25÷ š Îê˜ (7.21)

Poszukiwane współczynniki można obliczyć ze wzorów:

=WW (7.22)

126

=W•W (7.24)

Po znalezieniu A, B i C należy obliczyć ze wzorów (7.11) i (7.12) współrzędne środka okręgu oraz w szczególności jego promień r_mnk ze wzoru (7.13).

127

Z3. Makro ESTYMATOR_ŚREDNIC

Sub ESTYMATOR_ŚREDNIC() 'DEKLARACJA ZMIENNYCH i = 0 j = 0 roznicax = 0 roznicay = 0 d_max = 0 Dim rng As Range srednia = 0 odch_stand = 0 a = 0 b = 0 c = 0

'DEKLARACJA PRZYCISKU MSGBOX

Dim info, styl, pasek

styl = vbOK + vbInformation pasek = "WYNIKI"

'CZYSZCZENIE PÓL POD MACIERZ DŁUGOŚCI CIĘCIW

Do Until Cells(j + 1, 6) = "" j = j + 1 Loop Range("D1").Value = j For licznik2 = 1 To j For licznik = 1 To j Arkusz1.Cells(licznik2, 5 + licznik).Clear Next licznik Next licznik2 For licznik = 1 To j + 4 Arkusz1.Cells(licznik, 7 + j).Clear Next licznik

'OBLICZENIE ILOŚCI PUNKTÓW NA OKRĘGU

Do Until Cells(i + 1, 1) = "" i = i + 1

Loop

'WYŚWIETLENIE ILOŚCI PUNKTÓW NA OKRĘGU W C1

Range("C1").Value = i

'OBLICZENIE POSZCZEGÓLNYCH DŁUGOŚCI CIĘCIW - BUDOWA MACIERZY

For licznik2 = 1 To i

For licznik = 1 To i

roznicax = (Arkusz1.Cells(licznik2, 1).Value) - (Arkusz1.Cells(licznik, 1).Value)

roznicay = (Arkusz1.Cells(licznik2, 2).Value) - (Arkusz1.Cells(licznik, 2).Value)

Arkusz1.Cells(licznik2, 5 + licznik).Value = Sqr(roznicax ^ 2 + roznicay ^ 2)

Next licznik

Next licznik2

'WYZNACZENIE DŁUGOŚCI MAKSYMALNEJ CIĘCIWY (ŚREDNICY) WYPROWADZONEJ Z DANEGO

PUNKTU

For licznik = 1 To i

Set rng = Arkusz1.Range((Arkusz1.Cells(licznik, 5)), (Arkusz1.Cells(licznik, 5 + i)))

d_max = Application.WorksheetFunction.Max(rng) Arkusz1.Cells(licznik, 7 + i).Value = d_max

Next licznik

'OBLICZENIE ŚREDNIEJ WSZYSTKICH ŚREDNIC

srednia = (Application.Sum(Range(Cells(1, 7 + i), Cells(i, 7 + i)))) / i Arkusz1.Cells(licznik + 2, 7 + i).Value = srednia

128

odch_stand = Application.WorksheetFunction.StDev(Range(Cells(1, 7 + i), Cells(i, 7 + i)))

Arkusz1.Cells(licznik + 3, 7 + i).Value = odch_stand

'**********************************************************************************

'OBLICZENIE OKRĘGU OPISANEGO NA TRAJEKTORII METODĄ NAJMNIEJSZYCH KWADRATÓW 'MINIMALIZUJEMY:

' _n

' \

' w^2= /_ (xi^2 +yi^2+Axi+Byi+C)^2; a_mnk=-A/2;b_mnk=B/2;r_mnk=Sqr(a^2+b^2-C) ' i = 1

'POBRANIE WSPÓŁRZĘDNYCH PUNKTU (xi,yi)

wa1 = 0 wb1 = 0 wc1 = 0 wd1 = 0 wa2 = 0 wb2 = 0 wc2 = 0 wd2 = 0 wa3 = 0 wb3 = 0 wc3 = 0 wd3 = 0 For punkt = 1 To i xi = Arkusz1.Cells(punkt, 1).Value yi = Arkusz1.Cells(punkt, 2).Value

'PO OBLICZENIU POCHODNYCH CZĄSTKOWYCH PO A,B,C ORAZ UTWORZENIU UKŁADU

RÓWNAŃ Z WARUNKU EKSTREMUM

'UKŁAD RÓWNAŃ JEST ROZWIĄZANY METODĄ WYZNACZNIKÓW ZE WZGLĘDU NA A,B,C

'PONIŻEJ OBLICZONE SĄ WYRAZY WYZNACZNIKÓW W POJEDYNCZEJ ITERACJI:

' |wa1 wb1 wc1| |wd1 wb1 wc1| |wa1 wd1 wc1| |wa1 wd1 wc1|

'W=|wa2 wb2 wc2| WA=|wd2 wb2 wc2| WB=|wa2 wd2 wc2| WC=|wa2 wd2 wc2| ' |wa3 wb3 wc3| |wd3 wb3 wc3| |wa3 wd3 wc3| |wa3 wd3 wc3|

wa1i = 2 * (xi ^ 2) wb1i = 2 * (xi * yi) wc1i = 2 * xi

wd1i = -2 * (xi ^ 3) - (2 * (xi * (yi ^ 2))) wa2i = 2 * (xi * yi)

wb2i = 2 * (yi ^ 2) wc2i = 2 * yi

wd2i = (-2 * ((xi ^ 2) * yi)) - (2 * (yi ^ 3)) wa3i = 2 * xi

wb3i = 2 * yi wc3i = 2

wd3i = (-2 * (xi ^ 2)) - (2 * (yi ^ 2))

wa1 = wa1 + wa1i wb1 = wb1 + wb1i wc1 = wc1 + wc1i wd1 = wd1 + wd1i wa2 = wa2 + wa2i wb2 = wb2 + wb2i wc2 = wc2 + wc2i wd2 = wd2 + wd2i wa3 = wa3 + wa3i wb3 = wb3 + wb3i wc3 = wc3 + wc3i wd3 = wd3 + wd3i

Next punkt

W = (wa1 * wb2 * wc3) + (wb1 * wc2 * wa3) + (wc1 * wa2 * wb3) - (wa3 * wb2 * wc1) - (wb3 * wc2 * wa1) - (wc3 * wa2 * wb1)

WA = (wd1 * wb2 * wc3) + (wb1 * wc2 * wd3) + (wc1 * wd2 * wb3) - (wd3 * wb2 * wc1) - (wb3 * wc2 * wd1) - (wc3 * wd2 * wb1)

129

wc1) - (wd3 * wc2 * wa1) - (wc3 * wa2 * wd1)

WC = (wa1 * wb2 * wd3) + (wb1 * wd2 * wa3) + (wd1 * wa2 * wb3) - (wa3 * wb2 * wd1) - (wb3 * wd2 * wa1) - (wd3 * wa2 * wb1)

'OBLICZENIE WARTOŚCI A,B,C

a = WA / W b = WB / W c = WC / W

'OBLICZENIE WARTOŚCI a_mnk(x-owa składowa środka okręgu);b_mnk(y-owa składowa

środka okręgu);R_mnk(promień okręgu)

a_mnk = -a / 2 b_mnk = -b / 2

r_mnk = Sqr(a_mnk ^ 2 + b_mnk ^ 2 - c)

'WYŚWIETLENIE WARTOŚCI a_mnk;b_mnk;r_mnk

Arkusz1.Cells(10, 4).Value = a_mnk Arkusz1.Cells(11, 4).Value = b_mnk Arkusz1.Cells(12, 4).Value = r_mnk * 2

'********************************************************************************** 'WYŚWIETLENIE WYNIKÓW W OKNIE MSGBOX

info = "ŚREDNIA WARTOŚĆ ŚREDNICY: " & srednia & vbNewLine & vbNewLine & "ODCHYLENIE STANDARDOWE: " & odch_stand

MsgBox info, styl, pasek

130

Z4. Makro BŁĄD_ESTYMATORA_ŚREDNICY

Sub BŁĄD_ESTYMATORA_SREDNICY()

'OKNO DIALOGOWE Z ZAPYTANIEM O WARTOŚĆ ŚREDNICY, KTÓRA POSŁUŻY DO GENERACJI OKRĘGU

D = InputBox("PODAJ WARTOŚĆ ŚREDNICY TEORETYCZNEJ")

'OKNA DIALOGOWE Z ZAPYTANIEM W JAKICH GRANICACH ILOŚCI PUNKTÓW MAJĄ SKŁADAĆ SIĘ OKRĘGI

min_badana_l_punktow = InputBox("PODAJ MINIMALNĄ LICZBĘ PUNKTÓW OKRĘGU") max_badana_l_punktow = InputBox("PODAJ MAKSYMALNĄ LICZBĘ PUNKTÓW OKRĘGU")

liczbaokregow = 10

'CZYSZCZENIE WYNIKÓW POPRZEDNICH OBLICZEŃ (W ARKUSZU "WYNIKI")

For licznik2 = 1 To 70

For licznik = 1 To liczbaokregow + 6

Arkusz2.Cells(licznik, licznik2).Clear

Next licznik

Next licznik2

'W PĘTLI FOR GENERUJEMY KOLEJNE SERIE N-PUNKTOWYCH OKRĘGÓW (OKRĘGI O CORAZ WIĘKSZEJ LICZBIE PUNKTÓW)

For n = min_badana_l_punktow To max_badana_l_punktow

'KOREKTA ZAWSZE MNIEJSZA O JEDEN OD POCZĄTKOWA LICZBA_PUNKTOW N !!!

korekta = min_badana_l_punktow - 1

'DLA DANEJ LICZBY PUNKTÓW N BĘDZIE WYGENEROWANE TYLE LOSOWYCH OKREGOW ILE WYNOSI LICZBAOKREGOW

'NA PRZYKŁAD DLA LICZBAOKREGOW=10 I N=20 BĘDZIE KOLEJNO WYGENEROWANE 10 20-PUNKTOWYCH OKRĘGÓW Z WYNIKAMI

For numerokregu = 1 To liczbaokregow

'********************************************************************* '**************************** GENERATOR_OKREGU *********************** '*********************************************************************

'DEKLARACJA ZMIENNYCH (RO - LOSOWA FAZA POCZĄTKOWA)

x = 0 y = 0 ro = Rnd() i = 0 j = 0

'CZYSZCZENIE PÓL POD KOLUMNY WYGENEROWANYCH WSPÓŁRZĘDNYCH

Do Until Cells(j + 1, 1) = "" j = j + 1 Loop For licznik2 = 1 To 2 For licznik = 1 To j Arkusz1.Cells(licznik, licznik2).Clear Next licznik Next licznik2

'GENERACJA LOSOWEGO OKRĘGU (LICZBA RAND SYMULUJE ODCHYŁKĘ OD ŚREDNIEJ

ŁUKU 2*PI/N)

For licznik = 1 To n

rand = ((Rnd() - 0.5) / 5)

xi = (D / 2) * Cos((2 * WorksheetFunction.Pi * (ro + licznik + rand)) / n)

yi = (D / 2) * Sin((2 * WorksheetFunction.Pi * (ro + licznik + rand)) / n) Arkusz1.Cells(licznik, 1).Value = xi Arkusz1.Cells(licznik, 2).Value = yi Next licznik '*********************************************************************** '****************************** KALKULATOR_ŚREDNICY ******************** '*********************************************************************** roznicax = 0 roznicay = 0 d_max = 0

131 Dim rng As Range srednia = 0 lewy_offset = 8

'CZYSZCZENIE PÓL POD MACIERZ DŁUGOŚCI CIĘCIW

Do Until Cells(j + 1, lewy_offset) = ""

j = j + 1

Loop

For licznik2 = 1 To j

For licznik = 1 To j

Arkusz1.Cells(licznik2, (lewy_offset - 1) + licznik).Clear

Next licznik

Next licznik2

For licznik = 1 To j + 4

Arkusz1.Cells(licznik, (lewy_offset + 1) + j).Clear

Next licznik

'OBLICZENIE ILOŚCI PUNKTÓW NA OKRĘGU

Do Until Cells(i + 1, 1) = ""

i = i + 1

Loop

'OBLICZENIE POSZCZEGÓLNYCH DŁUGOŚCI CIĘCIW - BUDOWA MACIERZY

For licznik2 = 1 To i

For licznik = 1 To i

roznicax = (Arkusz1.Cells(licznik2, 1).Value) – (Arkusz1.Cells(licznik, 1).Value)

roznicay = (Arkusz1.Cells(licznik2, 2).Value) – (Arkusz1.Cells(licznik, 2).Value)

Arkusz1.Cells(licznik2, (lewy_offset - 1) + licznik).Value = Sqr(roznicax ^ 2 + roznicay ^ 2)

Next licznik

Next licznik2

'WYZNACZENIE DŁUGOŚCI MAKSYMALNEJ CIĘCIWY WYPROWADZONEJ Z DANEGO PUNKTU

For licznik = 1 To i

Set rng = Arkusz1.Range((Arkusz1.Cells(licznik, lewy_offset)), (Arkusz1.Cells(licznik, lewy_offset + i)))

d_max = Application.WorksheetFunction.Max(rng)

Arkusz1.Cells(licznik, (lewy_offset + 1) + i).Value = d_max

Next licznik

'OBLICZENIE ŚREDNIEJ WSZYSTKICH MAKSYMALNYCH CIĘCIW ZADANEGO LOSOWEGO

OKRĘGU Z ARKUSZA1

srednia = (Application.Sum(Range(Cells(1, (lewy_offset + 2) + i), Cells(i, (lewy_offset + 1) + i)))) / i

'ZAPIS POWYŻEJ OBLICZONEJ WARTOŚCI DO ARKUSZA2

'PRZYKŁADOWO W KOLUMNIE "N=20" I DLA LICZBAOKREGOW=10 JEST ZAPISANE 10 WARTOŚCI PONIEWAŻ

'WYGENEROWANYCH ZOSTAŁO 10 20-PUNKTOWYCH OKRĘGÓW, WIĘC I 10 MAKSYMALNYCH CIĘCIW (ŚREDNIC)

Arkusz2.Cells(1, n - korekta).Value = "n=" & n

W dokumencie Index of /rozprawy2/11033 (Stron 114-134)

Powiązane dokumenty