UPTEC F 15061 Examensarbete 30 hp 22 September 2015 Development of a Digital Mortar Aiming System Oskar Wåglund Abstract Development of a Digital Mortar Aiming System Oskar Wåglund Teknisk- naturvetenskaplig fakultet UTH-enheten Besöksadress: Ångströmlaboratoriet Lägerhyddsvägen 1 Hus 4, Plan 0 Postadress: Box 536 751 21 Uppsala Telefon: 018 – 471 30 03 Telefax: 018 – 471 30 00 In this thesis, the plausibility of developing a portable light-weight artillery computer has been investigated. The main goal of the project has been to replace the traditional methods that the Swedish Armed Forces are using today to find firing solutions for their mortar, the GRK m/84. A computational core has been written in Java that simulates the trajectory of a shell using the model in NATO's STANAG 4355. The developed system finds firing solutions by using shooting methods and the multi-dimensional Newton Raphson's method. A Graphical User Interface (GUI) tailored to mobile computers has been designed in Android. The computational core along with the GUI has been installed on a rugged hand held computer and the whole unit has been tested at Markstridsskolan (MSS). The tests showed that the computational core delivers firing solutions that coincide very well with the actual firing solutions needed to hit the desired target. Hemsida: http://www.teknat.uu.se/student Handledare: Olov Wilander Ämnesgranskare: Ken Mattsson Examinator: Tomas Nyberg ISSN: 1401-5757, UPTEC F 15061 Populärvetenskaplig sammanfattning I väpnad strid är det vanligt att båda de stridande sidorna utnyttjar artilleri för att skaffa sig taktiska fördelar mot sina fiender. Ett vanligt förekommande vapen är då så kallade granatkastare, som skjuter iväg granater i hög bana mot identifierade fiendetrupper eller byggnader. Hur långt granaten färdas beror på hur soldaterna vinklar eldröret, och för att träffa det önskade målet måste de hitta precis rätt vinkel. En grad för högt eller lågt innebär oftast att målet inte ens påverkas av granaten. Försvarsmakten har två typer av granatkastare, varav den mindre ofta används i så kallade jägaroperationer. Begreppet innebär att soldaterna som manövrerar granatkastaren ständigt måste röra sig för att inte bli inringade av fiender. Med begränsad utrustning måste de snabbt kunna hitta rätt eldrörsvinkel och avfyra en salva granater innan de rör sig till nästa plats. Då datorer är för otympliga för att bära med sig så använder soldaterna skjuttabeller med uträknade vinklar för vissa avstånd. Att slå i tabellerna är en långsam process och kräver samtidigt en stor sinnesnärvaro från den stressade soldaten. I det här examensarbetet har en prototyp av en portabel artilleridator tagits fram i samarbete med Försvarets Materialverk (FMV). Artilleridatorns syfte är att finna så kallade skjutelement, vilket är benämningen för de vinklar som behövs för att träffa ett givet mål. En beräkningskärna har programmerats från grunden för att kunna simulera en granats flykt genom luften. Kärnan har sedan knutits ihop med ett användargränssnitt på en handdator anpassad för militärt bruk. Enheten har testats tillsammans med FMV på en skjutövning där det visade sig att beräkningskärnans simuleringar stämde väl överens med en verklig granat. 1 Contents 1 Introduction 5 2 Mortar usage 2.1 GRK m/84 . . . . . . . . . . . . 2.2 Shells . . . . . . . . . . . . . . . 2.3 Operating a mortar . . . . . . . . 2.4 Aiming without digital assistance 2.5 Current artillery computers . . . 2.6 Weather . . . . . . . . . . . . . . 3 Mathematical model 3.1 Coordinate system . 3.2 Gravitational force . 3.3 Coriolis force . . . . 3.4 Drag force . . . . . . 3.5 Equation of motion . 3.6 Standard atmosphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 7 7 8 12 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 15 15 17 17 4 Computation 4.1 Calculating a trajectory . . . . . . . . . . . . . . . . 4.1.1 Order reduction . . . . . . . . . . . . . . . . 4.1.2 Numerical methods . . . . . . . . . . . . . . . 4.1.3 Comparison between the methods . . . . . . 4.1.4 Verification of the Runge-Kutta method . . . 4.1.5 Oscillation in the Runge-Kutta method . . . 4.1.6 Choosing a numerical method . . . . . . . . . 4.2 Finding a firing solution . . . . . . . . . . . . . . . . 4.3 The multi dimensional Newton-Raphson’s method . 4.4 Applying Newton-Raphson’s method to this problem 4.5 Optimization problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 21 23 23 23 25 25 26 27 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Development 5.1 Environments . . . . . . . . . . . . . . 5.2 The computational core . . . . . . . . 5.2.1 FCI-files . . . . . . . . . . . . . 5.2.2 The ballistics module . . . . . 5.2.3 Search method module . . . . . 5.3 GUI . . . . . . . . . . . . . . . . . . . 5.3.1 Views . . . . . . . . . . . . . . 5.3.2 Activity . . . . . . . . . . . . . 5.3.3 Input . . . . . . . . . . . . . . 5.3.4 Error prevention and warnings 5.4 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 32 33 33 33 34 34 34 35 35 36 37 6 System safety 38 6.1 Risks, accidents and hazardous events . . . . . . . . . . . . . 38 6.2 Assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.2.1 Risk of faulty implementation of numerical method . . 40 6.2.2 Risk of faulty implementation of mathematical model 40 6.2.3 Risk of corrupted files . . . . . . . . . . . . . . . . . . 40 7 Result 7.1 Search method . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Tests against another artillery computer . . . . . . . . . . 7.2.1 Live exercise . . . . . . . . . . . . . . . . . . . . . 7.2.2 Additional tests . . . . . . . . . . . . . . . . . . . . 7.3 GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1 Registering a target . . . . . . . . . . . . . . . . . 7.3.2 Registering, solving and completing a fire mission . 7.3.3 Registering a METCM . . . . . . . . . . . . . . . . 8 Discussion 8.1 Numerical method for trajectory computations 8.2 Search method . . . . . . . . . . . . . . . . . . 8.3 GUI . . . . . . . . . . . . . . . . . . . . . . . . 8.4 Future work . . . . . . . . . . . . . . . . . . . . 8.5 Conclusion . . . . . . . . . . . . . . . . . . . . 9 Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 42 42 42 45 45 46 49 . . . . . 50 50 50 51 51 51 52 3 Appendices 54 A Terminology 54 B State graphs of trajectory 56 C Runge Kutta convergence for different state components 58 D Comparison of artillery computers 63 E Glossary 66 4 1 Introduction A mortar is a weapon that is used to fire projectiles, called shells, in a high trajectory over long distances. The weapon is commonly characterized by a barrel which is supported by two legs and some sort of stabilizing platform at the end of the barrel. The purpose of a mortar may vary, but common tasks are to destroy, suppress, obscure or illuminate a target. Due to its versatility and range, a mortar is often used to help friendly infantry advance in combat. To provide effective support the mortar operator has to find the correct bearing, which is the angle between due north and the barrel (the compass direction), and the elevation angle, the angle between the ground and the barrel, in order to connect with the target. Usually the projectile’s initial velocity can be altered by the operator as well to enable shorter or longer trajectories. Finding the correct bearing and elevation is not a trivial task, and increases in difficulty when varying weather conditions are considered. The natural stress element present in all forms of combat puts further pressure on the mortar operator. This project focuses on relieving as much stress as possible for the operator by creating a program that quickly computes and presents the correct bearing and elevation. This program will be uploaded on a hand held computer along with a comprehensive graphical user interface (GUI). The project is carried out in close cooperation with the Swedish Armed Forces, who are the only possible end users of this software. 5 Figure 1: The GRK m/84 mounted and ready for use. 2 Mortar usage This section explains how mortars are used by the Swedish Armed Forces, and is meant to give a quick overview of the environment of the problem. Some words and concepts are described further in Appendix A. 2.1 GRK m/84 The GRK m/84 is the smaller one of the two types of mortars that the Swedish Armed Forces have at their disposal. The weapon features an 81 mm barrel and can fire shells that weigh around 4 kg at targets up to 6 km away. Unlike the Swedish Armed Forces’ bigger mortar, the GRK m/41, the GRK m/84 is portable when split into three parts, with a total weight of around 50 kg. Due to its “light” weight it is often used without any sort of vehicle assistance, and thus the soldiers operating the mortar has to carry all needed equipment on their backs. A shell is launched by dropping it into the barrel and letting it slide down to the bottom. Upon reaching the bottom the baseline charge of the shell connects with a propulsion pin and ignites automatically. This detonates the baseline charge and also any additional charges that have been attached to it, and the sudden increase in pressure drives the shell out of the barrel at high speed. 6 2.2 Shells A shell consists of the payload, fuze, baseline charge and stabilizing fins, see Figure 2. The wide center part contains the payload which may be explosive or have another function such as smoke. The payload is triggered by a fuze, or ignition device, which sits in the front of the shell. The fuze may trigger from impact, time, magnetic fields or other criteria depending on the type of shell. Behind the payload is a tube which contains the baseline charge that gives the shell its initial velocity. When the charge detonates the gas from the explosion exits through the circular vents in the tube and builds pressure behind the payload. Additional propulsion charges (from now on referred to as charges) can be attached to the tube to increase the velocity. At the very back are fins which stabilize the shell throughout its flight. The Swedish Armed Forces use four types of shells as of today. Two of them are explosive shells which are used to destroy or suppress a target. The shells explode and shatter the casing which causes high velocity shrapnel. The difference between the two is not the force of the explosion or amount of shrapnel, but rather the fuze. The first shell, called “80R”, detonates on impact with an object. It can also be set to armor penetrating mode, which delays the detonation when the fuze is triggered. This allows the shell to penetrate light armor before detonating. The second shell, called “80Z”, is proximity triggered. A doppler radar senses when the shell is a few meters above ground and detonates the shell while still in the air. This causes shrapnel to cover a larger area and is used mainly against unprotected infantry units. There are also smoke and illumination shells. Both shells have a timed fuze which is set by the mortar operator prior to each shot. The smoke shell releases a canister which creates smoke over a period of time. This is used to conceal friendly troops or to simply reduce the enemy’s vision on the battlefield. The illumination shell releases a light source that is attached to a small parachute and drifts to the ground slowly while illuminating the ground below. This is used during nighttime when friendly soldiers need vision of the area ahead. 2.3 Operating a mortar Effectively operating a mortar is not a one man job. A mortar unit usually consists of around 10 soldiers which all have specific tasks and responsibilities, especially during assembly and disassembly of the mortar. Apart from the soldiers at the mortar location, one or more forward observers are often 7 Figure 2: Three smoke shells ready for launch. To the left on each shell is the baseline charge and the fins, and one additional charge has been put on. The wide part contains the smoke canister, and the front tip of the shell is the fuze, which in this case is timed. needed to identify targets [3]. The forward observer’s mission is to provide target coordinates to the mortar operator, who then can calculate the best way to fulfill the mission. If the shell would miss, which is a common incident, the mortar operator receives an adjustment from the forward observer, so that the next shell hopefully hits closer to the target. 2.4 Aiming without digital assistance The software in this project aims to replace the traditional way the soldiers operating the GRK m/84 uses to find the correct firing solution for a fire misson. The computations are currently performed without any sort of digital assistance and requires a great prescence of mind to be carried out in a quick and correct manner. The squad carries a variety of tools with them, in addition to the mortar itself, gathered in a bag, see Figure 3. The two most important contents of it are the drawing board and the firing tables. The drawing board has a grid printed on it that can be used as a guideline for an improvised map, see Figure 4. 8 Once a map has been established the mortar location should be marked. A coordinate is put onto the map by using the gridlines and a measuring disk, see Figure 5. The sides of the disk have distance scales and the center part features a protractor graded in mils. A thin notch leaps in the zero mil direction which enables drawing lines in any angle if necessary. With the mortar location in place the soldier is ready to receive fire missions. A mission is delivered via radio with information about the target coordinate, the requested shell type and so on. The target is marked on the map in the same fashion as the mortar location, and the firing distance should then be determined. This is measured with a “rotating ruler” with a slider attached to it, see Figure 4. The ruler rotates around a slightly magnetic disk with a hole in the center which indicates the origin of the measurement. Once the distance has been measured an appropriate elevation angle is found using a nomogram, or alignment chart, see Figure 6. The chart provides a graphical way of evaluating the function needed for the approximate elevation, and one chart is needed for each combination of shell type and charge. An elevation is found by putting a slider in the channel corresponding to the desired charge, and then sliding it so that the slider’s index line coincides with the required distance. Note that the rightmost diagram shows how the index line should be drawn on a slider depending on the current temperature. A temperature above 15 ◦ C will result in a downward sloping index line, which means that the elevation will be a bit lower than at the standard temperature. If several solutions are available it is up to the soldier to decide the best one. Another common task is to adjust the firing solution if a target is missed. Since the mortar operator usually can not see the target it is the forward observers responsibility to guide him or her to a better firing solution. The forward observer informs the operator of how much the impact point should be moved in width, i.e. left or right, and length, i.e. closer or farther. This is however directions from the forward observer’s perspective, which means that the correction has to be rotated before being applied to the mortar operator’s map. That is why the forward observer also gives the observed direction of the target in mils. This allows the mortar operator to transform the correction to easting and northing by using a circular plastic disk. The adjustment from the observer’s perspective is marked on the disk, and then the disk is rotated corresponding to the observed direction. The new location is marked on the map and the operator can look up a new firing solution. 9 Figure 3: A bag with tools for computing firing solutions. Figure 4: A blank drawing board accompanied by the measuring tool. The slider is missing in this picture. Figure 5: A measuring disk used for scales 1:10 000, 1:20 000 and 1:50 000. The protractor in the middle has a resolution of 10 mils. Figure 6: The nomogram of the smoke shell elevations for charges 4 through 6. Note the rightmost diagram that shows how the index line varies with temperature. 2.5 Current artillery computers The concept of artillery computers is of course nothing new. The Swedish Armed Forces has an artillery computer which is used frequently. The problem is that it is large, heavy and mounted in an armored car, which makes it unusable for the type of missions that this project aims to support. When using the larger mortar, the GRK m/41, this computer is always used as the mortar itself is transported by vehicle. 2.6 Weather The current weather has a huge impact on how the fired shell behaves in flight. The most obvious factor is of course the wind, but other conditions such as air temperature and pressure, relative humidity and the temperature of the powder in the projectile itself also affects the impact point. Usually a Standard Computer Meteorological message (METCM) [5] is provided shortly before a mission begins. The METCM consists of a header and a body, which together describe the current weather in ascending layers of the air. The header contains information about where and when the weather information is valid. The body then specifies the wind speed and direction, pressure and temperature for ascending layers, or zones, of a few 100 meters each. Zone 00 represents the ground level, zone 01 represents 0 to 200 meters above ground, zone 02 represents 200 to 500 meters above ground and from there on each zone covers 500 meters. If a METCM is not available, the soldiers can estimate the wind, temperature and pressure at ground level. This data can then be used to compute the temperature and pressure at a given height, see Section 3.6. 12 Figure 7: A typical METCM. 3 Mathematical model The mathematical model of the projectile is based on the “NATO Armaments Ballistic Kernel” (NABK) [6]. It is assumed that five forces act on the projectile throughout its flight. These forces are the gravitational force, the Coriolis force, the drag force, the Magnus force and the lift force. The last two forces are however disregarded in this project since the projectiles fired from the GRK m/84 do not spin, which causes the two forces to vanish. A summary of all the notations used in the following formulae are shown in Table 1. 3.1 Coordinate system During the computations a cartesian, orthogonal, right-handed coordinate system is used. The origin is located at sea level and on a line between the mortar’s center platform and the center of the earth. The axes are laid out such that the first axis, ~x, is pointed towards north, the second axis, ~y , is pointed upwards and perpendicularly from the ground and the third axis, ~z, is pointed towards east. 3.2 Gravitational force The gravitational field of the earth will act on the projectile and pull it towards the ground. The force is modeled as X1 R F~G = m~g = −mg0 (R2 /r3 )~r = −mg0 1 − X3 R 2X2 R . (1) Due to the earth not being perfectly round, the magnitude of the gravitational force, g0 , will vary with latitude according to g0 = 9.80655(1 − 0.0026 cos(2lat)). 14 (2) 3.3 Coriolis force Since the earth and the defined coordinate system is rotating, the projectile will be affected by the fictive Coriolis force. The resulting force is ~ = −2m(~ F~C = mΛ ω × ~u) (3) where Ω cos(lat) ω ~ = Ω sin(lat) 0 (4) represents the rotational vector of earth. Keep in mind that this force is not exerted on the projectile, it is rather a way of countering the fact that the ground fixed coordinate system is rotating away from the projectile. 3.4 Drag force The drag force caused by the surrounding air will push in the opposite direction of the projectile’s velocity relative to the air velocity. This force can be modeled as πρd2 CD0 v~v . F~D = − (5) 8 ~ −w where ~v = U ~ represents the velocity of the projectile relative to the surrounding air. The air density ρ varies with pressure and temperature according to ρ= 1 pd pv ( + ) T Rd Rv (6) The partial vapor pressure pv is calculated as 7.5·T pv = φ · 610.78 · 10 237.3+T (7) and the partial dry air pressure is then calculated as the remainder of the total pressure pd = p − pv . (8) The partial pressure model is not included in the NABK, but is taken from NASA [9]. 15 0.28 0.26 0.24 CD0 0.22 0.2 0.18 0.16 0.14 0.12 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Mach number 0.8 0.9 1 1.1 Figure 8: The CD0 curve for the 80R shell. Finally, the drag force depends on the factor CD0 . It is given in the FCI file (see Appendix A) as a polynomial function of the Mach number on different Mach intervals. A polynomial function section may have an order between 0 and 4, and together the polynomials for a given shell type form a continous function. A typical CD0 curve is seen in Figure 8. CD0 = b0 + b1 M + b2 M 2 + b3 M 3 16 (bmin < M < bmax ) (9) 3.5 Equation of motion Equations 1, 3 and 5 can be gathered into one equation of motion using Newton’s second law of motion ~ dU F~ = m . (10) dt Adding the forces together and dividing both sides by the mass yields X ~ dU 1 = (F~G + F~C + F~D ). dt m The initial values are defined by the muzzle position lW cos(QE) cos(AZ) ~0 = X X2W + lW sin(QE) lW cos(QE) sin(AZ) (11) (12) and the muzzle velocity u0 cos(QE) cos(AZ) U~0 = u0 sin(QE) u0 cos(QE) sin(AZ) (13) Equation 11 together with Equation 12 and 13 define the entire motion of the fired projectile. The end condition is set by the target height yT . 3.6 Standard atmosphere As mentioned in Section 2.6, the soldiers often provide an estimation of the weather at ground level. This data can be used to simulate an atmosphere, i.e. the pressure and temperature at a given height H, using a model from ISO 2533 [7]. The model needs the ground level temperature Tb , ground level pressure pb and the ground level height above sea level Hb . It also requires certain values such as the gravitational acceleration g, the universal gas constant R, and the temperature lapse rate β which is an estimated value of how the temperature increases linearly with height. For standard atmospheres this lapse rate is assumed to be −6.5◦ C/km, i.e. the temperature decreases with increasing altitude, which is symbolized by the relation T (H) = Tb + β(H − Hb ). 17 (14) The pressure relation is less trivial. − g β p(H) = pb 1 + (H − Hb ) βR Tb (15) The pressure and temperature from Equation 14 and 15 can be used in Equation 6 and 7 in order to compute the drag force. 18 m Table 1: Notations used in mathematical formulae Projectile mass d ~ X Projectile diameter ~0 X ~ U Muzzle position relative to ground fixed coordinate system U~0 Initial velocity of projectile relative to ground fixed coordinate system u0 Initial speed of projectile relative to ground fixed coordinate system AZ Bearing angle QE Elevation angle X2W The height above sea level of the mortar’s baseplate lW The length of the barrel of the mortar ~g The gravitational acceleration g0 The magnitude of gravitational acceleration at ground level R The radius of Earth ~r Projectile position relative to the center of earth r ~ Λ The distance between the projectile and the center of earth ω ~ The rotational vector of earth Ω The angular velocity of earth lat Latitude CD 0 Fitting factor used in drag force calculation, related to the mach number ~v Projectile velocity relative to surrounding air v Projectile speed relative to surrounding air w ~ Air velocity p Pressure at current projectile altitude T Temperature at current projectile altitude ρ Air density at current projectile altitude Rv The specific gas constant of water vapor Rd The specific gas constant of dry air pv The partial water vapor pressure pd The partial dry air pressure β Temperature lapse rate for increasing altitude φ The relative humidity Projectile position relative to ground fixed coordinate system Projectile velocity relative to ground fixed coordinate system The Coriolis acceleration 4 Computation Two separate problems have been considered in this project. The first and perhaps most obvious problem is to calculate a complete trajectory of a projectile with known initial position and velocity. This results in an initial value problem with second order ordinary differential equations. The sought solution is the position when the projectile hits the target height, or a predefined height above it. The intended use for this software, however, is not to calculate a trajectory with a known firing solution. On the contrary, it is finding the firing solution for a given target that is the objective. This is known as a two-point boundary value problem. The mortar imposes one boundary condition on the system, and the target imposes a second one. The solution in this case is the initial values (the firing solution) that results in a trajectory through both the mortar and the target. 4.1 4.1.1 Calculating a trajectory Order reduction Equation 11 in Section 3.5 describes the fundamental relation between force and acceleration. But if it is to be used in a computer program it has to be reduced to a system of first order ODEs. Expressing the equation in terms of time derivatives results in ¨ = A(~x˙ , ~x) ~x (16) where the function A(~x˙ , ~x) represents the acceleration with respect to the velocity and position. Replacing the velocity ẋ with a new variable u, and replacing the acceleration ẍ with the velocity’s derivative u̇ gives the system of equations ~u˙ = A(~u, ~x) ~x˙ = ~u. (17) Equation 16 has been reduced to two coupled equations, and standard numerical methods can now be applied to the system. The vectors in Equation 17 can be expanded to their respective components to enable a better view of the problem. 20 u˙x = Ax ((xx , xy , xz ), (ux , uy , uz )) u˙y = Ay ((xx , xy , xz ), (ux , uy , uz )) u˙z = Az ((xx , xy , xz ), (ux , uy , uz )) x˙x = ux (18) x˙y = uy x˙z = uz The six variables xx , xy , xz , ux , uy , uz can be referred to as state variables. Together they describe the system’s, or projectile’s, state. It is clear that the computationally expensive part lies in the three first equations, corresponding to the acceleration evaluation. The change in position is simply the current velocity which is applied directly to the system. For a summary of how the state variables vary over time, see Appendix B. 4.1.2 Numerical methods With the system obtained in Equation 17 the problem is ready to be solved numerically. But there are countless numerical methods available, and thus a motivated choice of a suitable method has to be made. Four common numerical methods have been tested in this project. All four methods solve the ordinary differential equation y 0 (t) = f (t, y(t)) y(t0 ) = y0 (19) where y can be a scalar or a vector dependent on t, which is an independent variable. The methods start in the initial value y0 , and then “step” through the vector field f (t, y(t)) using a step length h = tn+1 − tn . Note that the first part of Equation 19 is applicable to Equation 17. Euler’s method This is one of the oldest numerical methods and an important part in the other methods tested in this project. The method was described by Leonhard Euler in his work “Institutiones Calculi Integralis”, which was published in 1768 [1]. The method is of order one and is not expected to provide a satisfying result, but it is an interesting reference case to compare the other methods against. The method is described as k1 = f (t, yn ) yn+1 = yn + hk1 . 21 (20) Heun’s method Heun’s method is a second order numerical method that is often referred to as the improved Euler’s method. The method improves Euler’s solution by taking an Euler step, calculating the derivative in the new point and then taking another step from the same point with that derivative. Averaging these two steps gives a better estimate to the right solution than by simply using Euler’s method. The method is described as k1 = f (t, yn ) k2 = f (t + h, yn + hk1 ) h yn+1 = yn + (k1 + k2 ). 2 (21) The midpoint method The midpoint method is similar to Heun’s method in that it takes an intermediate step before taking the actual step to the next point. The difference is that the midpoint method steps half a time step, computes the derivative there, and then takes the step to the next point using only the new derivative. The method is described as k1 = f (t, yn ) h h k2 = f (t + , yn + k1 ) 2 2 yn+1 = yn + hk2 . (22) The Runge-Kutta method (RK4) Calling a numerical method “The Runge-Kutta method” is actually a bit confusing, since Runge-Kutta methods are a family of numerical methods that can be written in a specific way. However, RK4, or the classical Runge-Kutta method as it is sometimes called, is very popular due to its stability. Therefore it is often called The Runge-Kutta method. RK4 is a fourth order method, which means that it takes more intermediate steps than the previously described methods. The method is described as k1 = f (t, yn ) h h k2 = f (t + , yn + k1 ) 2 2 h h k3 = f (t + , yn + k2 ) 2 2 k4 = f (t + h, yn + hk3 ) h yn+1 = yn + (k1 + 2k2 + 2k3 + k4 ). 6 22 (23) 4.1.3 Comparison between the methods When a differential equation is solved in discrete time steps there will generally be an error compared to the analytical solution. This error depends on several factors such as step length, the order of the numerical method, the stiffness of the differential equation and so on. To find a viable candidate for this particular software a test has been conducted to try to compare the performance of the four methods. Tables 2-5 show the error in the xx state variable for a shell fired at an angle of about 45◦ over 20 seconds. The absolute error is presented for different step lengths and numerical methods, and the rightmost columns show how the error increases when the step length is doubled. The correct solution is assumed to be achieved by using the Runge-Kutta method with step length 2−20 , but this of course an estimate of its own. Still, it should serve as a sufficiently close approximation to the correct solution. All step lengths that have been tested are powers of 2 to avoid errors in float representation of them. 4.1.4 Verification of the Runge-Kutta method The Runge-Kutta method is used as a tool for getting the correct solution in Section 4.1.3, but the numerical solver is written especially for this project, and thus there are no guarantees that the solver is correct. To assure that the solution is correct the whole trajectory computation has been rewritten in MATLAB and executed with the same parameters as the Java convergence test, but with a Runge-Kutta algorithm written for an educational textbook [10]. The difference between the two different platforms lie around 0.1 mm. It is unclear if this error comes from the use of slightly different float operations in the different platforms, or if some element of the computation has been written differently. The relatively small difference should however assure that the Java implementation is in fact sufficiently correct. 4.1.5 Oscillation in the Runge-Kutta method It should come as no surprise that the fourth order method completes the computation with the smallest error among the numerical methods, but it is harder to explain why it does not converge as intended. The error in the other numerical methods converge according to the defintion of the order of accuracy, which is E(h) = Chn (24) 23 ·10−5 0.5 Error [m] 0 −0.5 −1 −1.5 −2 20 2−1 2−2 2−3 2−4 2−5 2−6 Step size h[s] 2−7 2−8 2−9 Figure 9: Convergence of the Runge-Kutta method for the x component of the position vector. where n is the order of accuracy. But judging from Figure 9 it seems like the error of the Runge-Kutta method oscillates towards zero rather than steadily approaching it. In Appendix C, the same convergence test for the xy , ux and uy state variables shows that the error sometimes even grows larger for smaller step lengths. The method is without doubt implemented correctly, as the same phenomenon occurs for two independent implementations in different programming languages. It is more likely that the oscillating convergence occurs because of the fact that the acceleration is not even C 1 smooth. As mentioned in Section 3.4, the CD0 function is given as a piecewise polynomial function, and for the shells used by the Swedish Armed Forces the CD0 polynomials are of order 1, rendering them non-differentiable in the boundaries of each subdomain. It is possible that the error caused by this discontinuity becomes large for some unfortunate step lengths. 24 4.1.6 Choosing a numerical method From the errors in Tables 2-5 on pages 29 and 30 it is clear that all methods, except for perhaps Euler’s method, are viable for this particular computation. Much larger errors arise when deciding coordinates of targets and mortar locations or when rounding the bearing and elevation in the firing solution to whole mils. It is of course always preferable to have a small error in computations, but in this case it might be perfectly acceptable to miss a target by one centimeter or even a meter. The Runge-Kutta method with a step length of 1 second gives an error of around 20 µm, which justifies the fact that it requires double the amount of acceleration computations compared to the second order methods with the same step length. It is, as in most differential equation systems, a perfectly viable choice for this problem, and no further analysis of this part of the problem is necessary. 4.2 Finding a firing solution With the method from Section 4.1 and a known firing solution it is possible to compute a trajectory and find the impact point. But the ultimate purpose of the software is not to simulate arbitrary trajectories, but rather to find the initial values necessary to reach a specific target, also known as a firing solution. This type of problem is known as a two-point boundary value problem, as mentioned in the beginning of Section 4. The boundary conditions in this problem are imposed by two 3-dimensional positions, which are the barrel’s muzzle and the target. There are no conditions for the velocity of the projectile at the time of launch or impact. Since there is no known general way of solving these problems analytically, an iterative method is needed. The trajectory is entirely decided by the initial state, if the shell type and weather conditions are decided, and thus the impact point can be described as a function of the initial state. x~T = T (x~0 , u~0 ) (25) The error in an impact point can thus be described as D(x~0 , u~0 ) = |T (x~0 , u~0 ) − x~T ∗ | (26) where x~T ∗ is the target. This means that solving the equation D(x~0 , u~0 ) = 0 25 (27) is equivalent to finding a trajectory that fulfills the boundary conditions. However, it is not possible to use arbitrary values for the initial position and velocity. These are dependent on the bearing, elevation, charge, shell type and so on. Therefore it makes more sense to express the impact point as a function of the bearing and elevation, assuming that all other factors are decided. This parametrization also reduces the number of variables in the root from six to two, which of course is preferable. D(AZ, QE) = |T (AZ, QE) − x~T ∗ | (28) Finding the bearing and elevation such that D(AZ, QE) = 0 (29) would give an actual firing solution that is applicable to the current fire mission. An alternative is to split the impact point x~T into its two ground parallel components xT x and xT z and then solve the resulting system of equations xT x (AZ, QE) = x∗T x xT z (AZ, QE) = x∗T z . 4.3 (30) The multi dimensional Newton-Raphson’s method Equation 30 is solvable by using the multi dimensional Newton-Raphson’s method [2]. The method is a generalization of the common Newton-Raphson’s method that finds single dimensional roots. The left hand side of Equation 30 can be described as a multivariate vector function F~ (~v ), and the right ~ The objective of this problem hand side can be summarized as a vector X. is to find the vector ~v that solves the equation ~ F~ (~v ) = X. (31) Newton-Raphson’s method solves this problem with an iterative algorithm that makes use of the current Jacobian matrix J, where Jij = δFi . δvj (32) As analytical derivatives rarely are available for these types of problems, the Jacobian is usually approximated with additional function evaluations as Fi (v0 , ..., vj + ∆vj , ...) − Fi (v0 , ..., vj , ...) δFi ≈ . δvj ∆vj 26 (33) This means that n + 1 function evaluations are needed per iteration, where n is the dimension of ~v . Just as with its single dimensional counterpart, the multi dimensional Newton-Raphson’s method is a root finding algorithm, which means that it finds a set of variables that vanishes the function. To accomodate this need, the relationship in Equation 31 is rewritten as a discrepancy vector that should be reduced to a zero vector, i.e. ~ v) = X ~ − F~ (~v ) = ~0 H(~ (34) The system can now be solved iteratively with the algorithm J · v~δ = −H(v~k ) (35) vk+1 ~ = v~k + v~δ Note that the first step requires the inverse of the Jacobian to acquire v~δ and that an initial guess is needed for v~0 . The iteration is ended when a ~ v ) is obtained. sufficiently small H(~ 4.4 Applying Newton-Raphson’s method to this problem Section 4.3 describes the multi dimensional Newton-Raphson’s method in general. The method should now be applied to the problem in Equation 30. In this case, the function F~ (~v ) in Equation 31 returns an impact point from a trajectory simulation. F~ depends on the vector ~v , which consists of the ~ bearing AZ and the elevation QE. Finally, the right hand side vector X ∗ corresponds with the target location x~T . With these definitions the Jacobian becomes ! J= δxT x δAZ δxT z δAZ δxT x δQE δxT z δQE . (36) Note that the low dimensionality of F~ and ~v facilitates the evaluation of the Jacobian J and its inverse. As mentioned in the previous section, only three function evaluations are needed to obtain J in each step. One is needed for the actual impact point for the current bearing and elevation, another is needed for the evaluation of the bearing dependent derivatives and a third one is needed for the elevation dependent derivatives. Once the Jacobian is found it is trivial to find the inverse of it with the formula ! δxT z δxT x − 1 δQE δQE J −1 = . (37) δxT x Tz |J| − δx δAZ δAZ 27 6,000 Range [m] 5,000 4,000 3,000 2,000 1,000 0 100 200 300 400 500 600 Elevation [mils] 700 800 900 Figure 10: The relation between elevation and range. This particular example is for the 80R shell with charge 6 and standard weather conditions, but the general shape of the curve is maintained for all combinations. An initial guess for the bearing and elevation needs to be available for every combination of shell type and charge. The bearing is easy to guess as the direction of the target is known. The elevation is a bit more complicated as the elevation to range relation is not trivial. Some sort of estimate should be provided when solving, but it need not be very precise as the relation is a steadily decreasing function without local extrema, see Figure 10. 28 Table 2: Euler’s method h [s] 20 2−1 2−2 2−3 2−4 2−5 2−6 2−7 2−8 2−9 Distance [m] T [s] Absolute error [m] E(h) E(h/2) 1722.18206 1719.78969 1718.57106 1717.95583 1717.64669 1717.49174 1717.41417 1717.37536 1717.35595 1717.34624 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 -4.85·100 -2.45·100 -1.23·100 -6.19·10−1 -3.10·10−1 -1.55·10−1 -7.76·10−2 -3.88·10−2 -1.94·10−2 -9.71·10−3 1.98 1.99 1.99 2.00 2.00 2.00 2.00 2.00 2.00 * Table 3: Heun’s method h [s] 20 2−1 2−2 2−3 2−4 2−5 2−6 2−7 2−8 2−9 Distance [m] T [s] Absolute error [m] E(h) E(h/2) 1717.24158 1717.31334 1717.33080 1717.33511 1717.33618 1717.33644 1717.33651 1717.33652 1717.33653 1717.33653 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 9.50·10−2 2.32·10−2 5.73·10−3 1.42·10−3 3.55·10−4 8.86·10−5 2.21·10−5 5.54·10−6 1.38·10−6 3.46·10−7 4.10 4.04 4.03 4.01 4.01 4.00 4.00 4.00 3.99 * Table 4: The midpoint method h [s] 20 2−1 2−2 2−3 2−4 2−5 2−6 2−7 2−8 2−9 Distance [m] T [s] Absolute error [m] E(h) E(h/2) 1717.39159 1717.35121 1717.34032 1717.33749 1717.33677 1717.33659 1717.33655 1717.33653 1717.33653 1717.33653 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 -5.51·10−2 -1.47·10−2 -3.79·10−3 -9.60·10−4 -2.42·10−4 -6.06·10−5 -1.52·10−5 -3.81·10−6 -9.50·10−7 -2.37·10−7 3.75 3.87 3.95 3.96 3.99 3.99 3.99 4.01 4.00 * Table 5: RK4 h [s] 20 2−1 2−2 2−3 2−4 2−5 2−6 2−7 2−8 2−9 Distance [m] T [s] Absolute error [m] E(h) E(h/2) 1717.33655 1717.33652 1717.33653 1717.33653 1717.33653 1717.33653 1717.33653 1717.33653 1717.33653 1717.33653 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 -1.95·10−5 6.24·10−6 -1.68·10−6 3.02·10−7 -1.44·10−7 1.98·10−8 6.01·10−9 -1.29·10−9 9.65·10−10 5.75·10−10 -3.13 -3.70 -5.57 -2.10 -7.26 3.30 -4.66 -1.34 1.68 * 4.5 Optimization problem Defining the search method as an optimization problem could be a different approach. The distance measure in Equation 28 has one single minimum which corresponds to the correct firing solution. Solving the unconstrained minimization problem minimize D(AZ, QE) (38) AZ,QE would mean finding the firing solution that minimizes the distance between the target and the impact point which is equal to hitting the target. This problem can be solved with a number of methods such as gradient descent or a pattern search, but due to time restrictions this has been left unexplored in this thesis. 31 5 Development The models, methods and results from Section 3 and 4 have been implemented in a Java program. The choice of Java is not obvious, as there are many competing languages, but it has a few advantages that are worth mentioning. One advantage is that Java is platform-independent, which means that it is easy to deploy to a wide selection of computers, in addition to traditional desktops and laptops. For this particular project it is desired to have a program that can be used primarily in a handheld computer, but also on a desktop computer. The fact that the mobile operating system Android runs Java as its native language simplifies developing both the computational core and the Graphical User Interface (GUI), which is a big part of the project. The software can be split into two distinct parts. First there is the core program that handles the ballistics and search method described in Section 4. This part is platform independent which means that it will work on both PCs and handheld computers. The second part is the GUI. The core is useless without a way of communicating with it, and this is the purpose of the GUI. Its only mission is to receive input from the user, send it into the core, receive the result and then present it to the user. This part can not be platform-independent, as different operating systems have different ways of interpreting input and showing information to a user. 5.1 Environments The two parts of the program are kept in separate integrated development environments (IDEs), to avoid confusion and because different IDEs are suitable for different types of programming projects. Eclipse Kepler SR2 is used for the core. It is a popular IDE for Java projects and features a plugin system that allows the user to tailor the environment to his or her needs. Eclipse has been the official IDE for Android development for a long time, thanks to the Android Development Tools (ADT) plugin. But in December 2014 Android Studio was released. The new IDE is specifically created for Android development and offers more functionality than Eclipse, especially when testing Android code directly on physical devices. In this project Android Studio 1.1.0 is used for the Android part. 32 5.2 The computational core The computational core has been written in pure Java. This allows the core to be deployed to several platforms without having to rebuild it. The core provides functionality to the GUI through a main class, currently called DSG (the working title of the project), that represents the running session. An instance of DSG has all the methods necessary to complete fire missions. The instance also contains all data about the running session, such as fire missions, battery locations and targets. 5.2.1 FCI-files The FCI-files mentioned in Appendix A are crucial for finding the correct firing solution. The format of the files is defined in [8]. The files are stored in the handheld computer’s file system and are accessed each time the program boots up. Each file contains information of how a shell behaves in flight. When DTV receives the FCI data it performs a few ballistic simulations for each charge and fits a quadratic polynomial to the relation between elevation and the resulting range. These polynomial coefficients are stored as well and are used to find an inital estimate of a firing solution when a fire mission should be solved. 5.2.2 The ballistics module Trajectories are computed by a ballistics module that implements the mathematical models described in Section 3. A data package containing all necessary information for the trajectory is sent to the module. This includes the firing solution, the projectile data, the weather conditions, geographic location and more. The system of differential equations is set up and then integrated until the end condition is reached. The end condition may vary depending on the shell. For explosive shells, such as the 80R and 80Z, the trajectory should be simulated until the ground is reached. The other shells are treated differently since they have a burst height that is set by the user. The trajectory of the illumination shell is only computed until the light source is released, but the smoke shell has a second stage, also known as secondary ballistics, that must be considered. When the smoke canister is released the projectile data is modified in the computation according to data provided in the FCI file, and then the simulation continues until the canister reaches the ground. After a simulation has been completed the module returns the impact position in three dimensions as well as the flight and burst time of the shell. 33 5.2.3 Search method module When the user requests a firing solution for a fire mission the request is sent to the search method module. This module’s goal is to find all the firing solutions possible for a fire mission, and it does so by implementing the methods from Section 4.4. The module searches for a firing solution for each charge and saves found firing solutions. In some rare cases it might be possible that two different firing solutions can be found for the same charge, but in this implementation it is assumed that this is not the case. When a firing solution for a particular charge should be found the search method formulates an initial guess of the firing solution based on approximate knowledge of how the selected shell behaves in standard weather conditions. Then it lets the ballistics module simulate the resulting trajectory and receives the impact point back. If the distance between the target and the impact point is too great the firing solution is corrected before simulating a new trajectory. This process is repeated until a shell falls sufficiently close to the target or a set number of iterations are reached. The iteration limit is set well above the usual amount of iterations and acts as a safety measure to make sure that the program does not stall. When all charges have been tested a list of found firing solutions is returned. 5.3 GUI The GUI is what the mortar operator will communicate through when using the software. As the operator will be stressed it is important that the GUI is responsive and easy to understand. Android provides the tools needed to accomplish this without spending too much time on tedious graphics programming. 5.3.1 Views The finished product should offer a lot of functionality to the user, and since the screen of the device is relatively small it is important to split separate functions into their own views in order to avoid excessive scrolling and to keep a clean design that is easy to interpret. To accomplish this a menu system has been created. The menu is always accessible in the top left corner of the screen. The contents of each view is maintained when a user switches to a different view. This enables the user to quickly perform another urgent task without risking loss of the current data on screen. This concept is realized with the use of fragments, which is Android’s way of handling modular user interfaces. 34 In this application, each fragment represents a full screen view. When the user switches to another view, the current fragment is put on a fragment stack from which it can be accessed later, and a new fragment is brought up and shown to the user. 5.3.2 Activity The fragments can not communicate with each other directly, but they are all monitored by the same activity, which handles the communication between the computational core and the GUI. The activity creates all fragments when first starting up, and is responsible for showing the appropriate fragment when the user requests it. The activity also gets an instance of the main class mentioned in Section 5.2 at application startup. This instance is then used whenever an action needs to be performed, whether it is registering a target, finding a firing solution or setting the current time. 5.3.3 Input The user will spend most of his or her time entering data into the system, which makes it even more important to have a clear GUI and an input method that minimizes the risk of errors. Android provides a standard on-screen keyboard, but it is not well-suited for this sort of application. The exact layout of the keyboard varies with the current version of the Android operating system, but common features such as a shift button for upper and lower case letters, dot and comma buttons and “smiley”-buttons are often added. As these features are completely useless in battle, a custom keyboard has been created. It may not be as aesthetically pleasing as Android’s default keyboard, but it is stripped of all the previously mentioned features. This gives the user a less cluttered keyboard that is easier to use. The only buttons except the letters and numbers are an erase button and a button for tabbing between input fields, see Figure 11(a). Even though unnecessary buttons are removed there are still 29 letter buttons and 10 digits that should be fitted on a 5” screen. Therefore it is recommended to use a stylus when operating the system. This is sometimes more of a requirement than an option as operations often are carried out in cold or wet environments, where gloves are needed. For fields that require numeric input only there is an additional custom keyboard. This keyboard features the 10 digits, a minus sign, an erase and a tab button, see Figure 11(b). If a field should have a numeric value, the 35 (a) Alphanumeric keyboard (b) Numeric keyboard Figure 11: The two keyboards used in the GUI. numeric keyboard is brought up automatically. The input fields themselves use large uppercase letters and have a monospace font which increases readability. Buttons are large, often covering the entire screen in width. The goal has been to use as few fields and buttons as possible without losing functionality. This in combination with the well divided menu system gives the user an experience that is easy to quickly interpret. With a little training it should be easy to quickly navigate the program and complete the fire missions received. 5.3.4 Error prevention and warnings The dangers of using a mortar are many, and because of that fact it is important to prevent the users from entering incorrect information into the system. Note that this only can be controlled to some extent. It is difficult to argue against an air temperature of 21◦ C instead of 11◦ C, and such an error will probably pass unnoticed. Still there are some measures which can be taken in order to prevent the most severe errors. Obvious input errors, such as stating a temperature of -60◦ C for example, are denied when the user tries to register the input. Some other errors may not be able to detect at registration, but they may surface when the operator tries to execute a firing mission. If a firing solution results in an impact point close to a forward observer, another mortar location or outside of a designated fire area the user is warned. Symbolics and bold text is used to warn the user that something dangerous is happening, see Figure 12. This concept is covered further in Section 6. 36 Figure 12: A warning message. 5.4 Structure The relation between all parts of the program is shown in Figure 13. Some minor modules that are less interesting have been left out of this diagram. Figure 13: A block diagram of the most essential parts of the system. 37 6 System safety Extensive testing is always important when creating new software. Finding and removing bugs can mean the difference between success and failure of a product, whether it is code meant for a social media application or a money transfer system. But a bug or a miscalculation in this program could quite possibly result in serious injury or even death for an allied soldier or a civilian. Therefore the Swedish Armed Forces demand that all software of this type goes through a rigorous risk assessment before being delivered to them. The assessment usually results in a risk log with every possible risk listed, accompanied by the probabilities of any resulting accidents and how severe the accident could become. If an accident is estimated to happen too frequently in a system, appropriate actions should be proposed and carried out so that the risk is reduced to an acceptible level. The system safety work should build on HSystSäk [4], developed by the Swedish Armed Forces. It is important to note that risks always will be present in these types of systems due to the nature of the situation. A system that is somehow involved in inflicting injury to others will always have some sort of risk involved. If all risks were to be vanished, it would affect the usability and purpose of the system to the point of it not accomplishing the initial objective. This is why risks are reduced and not removed. It may seem counterintuitive or inhumane, but some risks have to be accepted in order to maintain a functioning system. One crippling injury every ten years, or one death every 50 years is of course not a desired outcome, but it may be necessary to accept the risk in order to be able to use the system. This is not a concept that is valid only in the military. Systems used in heavy industry or medicine have to pass the same assessments before being delivered to factories and hospitals. In fact, everything people do in their daily life has some risk involved, but most risks are not as dangerous as these ones. Getting hit by lightning while walking outside can be seen as a risk that is already reduced by nature to a more than acceptible level. 6.1 Risks, accidents and hazardous events The term risk in this context does not only imply the probability of an accident, but also the consequences of said accident. An accident may lead to a bruise, a death or anything in between and this means that different risks can vary in severity while having the same probability of happening. In a slightly unmathematical way, it is said that the risk is a function of probability of an accident occuring and the consequences of that accident. 38 It is also important to note the difference between an accident and a hazardous event. A hazardous event occurs when the system performs in an undesired way that is potentially dangerous to its environment. But the actual accident only happens if a person or object is damaged. Therefore the risk assessment should always include the probability of each hazardous event, but also the probability of exposure to this hazardous event. The probability of the accident is the probability that both the hazardous event and the exposure to it happens at the same time, which is calculated by simply multiplying the two probabilities. 6.2 Assessment The purpose of this product is to deliver firing solutions to a mortar operator who then will aim the mortar according to the firing solution. The fact that the system is disconnected from the mortar means that a human always will act like a filter between them, and that the only hazardous event is that the mortar is aimed in a direction that may cause unintended damage to humans or buildings. This prevents any gravely miscalculated firing solutions from being carried out. It may be difficult for a soldier to detect an error of 10 mils in elevation, but he or she ought to be suspicious if the barrel should be aimed straight up, or in a completely different direction than before. Risks that are created by the mortar itself are not considered, as they should have been included in a separate risk assessment. Even though there is only one hazardous event, there may be many reasons for it to happen. There may be an error in the mathematical model, the computational model, the weather function and so on. All these reasons are put in the risk log as a separate post. By dividing the risks into smaller pieces it is easier to identify critical program modules and focus on these parts. A few risks and appropriate actions to reduce them have already been described throughout this paper. The warning messages mentioned in Section 5.3.4 is one way of reducing the risk of unintended damage to people or other objects, but other risks require a more dedicated approach in order to be reduced. Some of these risk reductions are explained in the following sections. 39 6.2.1 Risk of faulty implementation of numerical method One of the most obvious risks with the system is that the equation solver has been wrongly implemented in the application and somehow returns the wrong impact point from a firing solution. This could potentially lead to shells landing far away from the designated target and damaging people or property. Tables 2-5 show that three different numerical methods converge to the same answer for a given firing solution. The Euler method does not converge as quickly but seems to converge against the same value. This fact strongly reduces the risk of a faulty equation solver, but there is of course a very small probability that all tested equation solvers are implemented improperly. This probability should however fall well within the accepted risk. 6.2.2 Risk of faulty implementation of mathematical model A slightly different risk leading to the same hazardous event is that the actual acceleration model has been programmed in the wrong way. As there is no known way of modeling the shell in another way and get the same result, this has to verified in another way. As mentioned in Section 2.5 there is already similar software available in Sweden today. An option could be to use firing solutions to fire missions calculated by this software and then run the same fire missions through this software. If the firing solutions from the two independent programs agree with each other, at least within some acceptable interval, it may be safe to assume that the acceleration model is correct. The probability of both models having the same error in them should be considered small. Another option is to take the computer to an actual GRK m/84 and test if the mortar can deliver shells to a target based on firing solutions from the program. This test is very valuable if it is successful, since it actually confirms that all trajectory related methods are in fact implemented as intended. 6.2.3 Risk of corrupted files The FCI-files are saved on separate files on the computers hard drive. As hard drives are destined to fail sometime during their lifetime, sometimes within a few years, it is possible that the system is run with a corrupted FCI-file. This would most certainly lead to a hazardous event. Either the whole program would crash when a computation is performed, leaving the soldiers without firing solutions, or the corruption could lead to a datapoint 40 Figure 14: Two strings of text and their respective checksums represented in hex code. Notice that even a small change completely alters the checksum. being changed in the file so that a computation is executed with faulty properties. A standard way of reducing this risk is to create checksums for all files and save them in a separate file. A checksum is a small block of data generated from a checksum function. An array of bytes, a file, is sent to the checksum function which returns a fixed length array of bits. The function is (usually) invertible meaning that the file cannot be retrieved with the checksum, even if the checksum function is known. Checksums can be used to verify data integrity or data authenticity. In this particular application it is data integrity that should be verified. Verifying data authenticity requires more advanced checksums than for verifying data integrity, but that is irrelevant here. For verifying data integrity only, a simple 128 bit MD5 algorithm should suffice. The checksum function is not interesting to study here, but two examples of MD5 results are presented in Figure 14. To reduce the risk of corrupt files, a separate file with previously evaluated checksums of the FCI-files is added to the system. At startup, a new checksum is produced for each FCI-file, and if they match the checksums stored in the checksum file the program starts. If one checksum does not match the user must be alerted of this somehow, but it is not sure that terminating the program is the best option, as other functions of the software still may work. As the MD5 checksum contains 128 bits, there are 2128 possible results when running it. The probability of a corrupt file producing the same checksum as the original should then be 2−128 , and thus the risk of undetected corruptions should be reduced below any imaginable safety requirements. 41 7 Result 7.1 Search method The convergence in the search method has been investigated for different scenarios. It was found that Newton-Raphson’s method converged to within 1 meter of the target in under 5 iterations, even for the most extreme weather conditions, but usually even less. A test was conducted where a fire mission with a shooting range of 5 km was solved with -10◦ C temperature and a wind of 40 m/s. The results are presented in Tables 6-9. The search method is very fast when compared to the manual work of using firing tables. A complete search for all firing solutions to a fire mission finishes in a fraction of a second. If the user is able to create a firing mission quickly the whole process of getting a firing solution should be much faster. 7.2 7.2.1 Tests against another artillery computer Live exercise On May 5th there was a live firing exercise at Markstridsskolan in Kvarn with the GRK m/84. 80R and smoke shells were fired against targets designated by a forward observer (located 30 meters away from the mortar location). The distance to the targets never exceeded 2 km, which meant that only charge 1 and 2 were tested. The firing solutions were calculated by the current car mounted artillery computer and the same firing missions were solved in the handheld computer. The 80R results never deviated more than 1 mil in elevation from the artillery computer’s firing solutions. The smoke shell results were not as accurate, but sufficiently close to assume that the project is viable with more time. The results for the smoke shells are presented in Table 10. 7.2.2 Additional tests Additional tests for all 4 shell types have been carried out against previously computed values from the current artillery computer. Ten targets were selected at different distances from the battery location, and an appropriate charge was determined for each of them, see Table 16. A firing solution was then found by the artillery computer for each combination of target and shell type. This test has been repeated with the software from this project. The result of the comparison with the artillery computer’s results is shown in Appendix D. 42 Table 6: Convergence of search method for northward wind of 40 m/s Iteration Bearing (mils) Elevation (mils) Diff N (m) Diff E (m) 1 0.0 394.6 872.3 10.9 2 6398.4 523.4 -162.5 0.9 3 6398.1 505.8 -2.9 -0.1 4 6398.1 505.5 0.0 0.0 Table 7: Convergence of search method for eastward wind of 40 m/s Iteration Bearing (mils) Elevation (mils) Diff N (m) Diff E (m) 1 0.0 394.6 98.8 523.4 2 6294.3 405.1 -27.3 11.2 3 6292.7 400.7 -0.2 0.0 Table 8: Convergence of search method for southward wind of 40 m/s Iteration Bearing (mils) Elevation (mils) Diff N (m) Diff E (m) 1 0.0 394.6 -771.5 7.1 2 6398.0 261.1 -148.8 -1.8 3 6398.3 219.3 -14.9 0.0 4 6398.3 214.1 -0.3 0.0 Table 9: Convergence of search method for westward wind of 40 m/s Iteration Bearing (mils) Elevation (mils) Diff N (m) Diff E (m) 1 0.0 394.6 100.1 -505.3 2 102.2 405.1 -25.0 -10.7 3 103.7 401.0 -0.2 0.0 Table 10: The results from the smoke shell computations. The ArtComp columns contain the values produced by the artillery computer that the Swedish Armed Forces uses. The DSG rows show the values from the handheld computer. Target 1 1393 m ArtComp DSG Diff Bearing [mils] 1421 1421 0 Elevation [mils] 315 317 2 Burst time [s] 20.1 20.3 0.2 Target 2 1694 m ArtComp DSG Diff 1212 1212 0 220 224 4 18.3 18.6 0.3 Target 3 1085 m ArtComp DSG Diff 1545 1545 0 566 561 -5 23.6 23.6 0 Target 4 1084 m ArtComp DSG Diff 1564 1564 0 566 561 -5 23.6 23.6 0 Figure 15: The view for registering targets. The position can be given in either absolute or relative coordinates by pressing the coordinate switch in the lower right part of the grey area. 7.3 GUI The GUI has been successfully implemented in the handheld computer. The following sections describe how the user navigates in order to complete some of the common tasks the program can handle. As the GUI is in Swedish, the reader may benefit from studying the glossary in Appendix E. 7.3.1 Registering a target Targets, mortar locations, forward observers and RPs are registered in views that look similar to each other. The views have a name field and a location field to be filled in. The position can either be given as an absolute coordinate in MGRS format or relative to an already registered location by pressing the switch in the lower right corner of the position field. The target view also has an RP selection for fire missions that associate a target with a previously registered RP. The target is registered by pressing the “Register” button. Figure 15 illustrates this view. 45 Figure 16: The view for registering a fire mission. The target and the shell type are selected from lists. In the right image a Time To Fire order has been set for 10:30. 7.3.2 Registering, solving and completing a fire mission Once a target has been registered it is possible to register a fire mission. The user enters a name for the fire mission and selects a registered target from a list. The shell type is chosen from a separate list. A text field for the burst height is enabled depending on the choice of shell type. If the explosive shells are selected, i.e. the 80R or the 80Z shell, the field remains disabled. It is also possible to set up a timed strike by checking the timed strike checkbox. The user toggles between TOT and TTF by pressing a button and writes the time into the text field. Figure 16 shows how a fire mission is registered. To solve the fire mission the user switches to another view and selects the fire mission and mortar location from their respective lists. The user also enters the current temperature of the powder in the shell. The reason for this field being in this view is that the powder temperature often varies quickly. If some shells have been laying in the snow or in the sun for an extended period of time, the operator can change the powder temperature and acquire a new firing solution without registering a new fire mission. By pressing the “Find solutions” button the search method is triggered. After a short while a list of all possible firing solutions is shown. The user can examine the filght 46 Figure 17: The user finds a firing solution by selecting a fire mission, a mortar location and a powder temperature. The possible firing solutions are presented in a new window. By pressing a firing solution the user is taken to a new view. Note the warning in the right image. or burst time, the bearing and the elevation for each charge before choosing a firing solution by pressing it. This process is illustrated in Figure 17. Upon pressing a firing solution the user is taken to yet another view which shows the current firing solution and any warnings, if there are any. In the case of multiple warnings the two most important ones are shown based on a priority system. If time on target is used a countdown is shown as well. At the bottom of the view there are two buttons. One for adjusting fire, and one for registering the target as an RP. If the “Adjustment” button is pressed a dialog window is opened. The user enters the observer direction, the width and the height adjustment. If the current shell uses a burst height the option of adjusting it is enabled as well. By pressing the “Adjust” button the adjustment is added to the fire mission and a new firing solution for the same charge is found. The “Register RP” button opens another dialog window. The total adjustment of the fire mission is shown, and by entering a name and pressing the “Register” button the user registers a new RP. 47 Figure 18: The user may adjust fire by pressing the Adjustment (sv. Reglering) button and entering the adjustment into the new window. Figure 19: The user may register the fire mission as an RP by pressing the Register RP button. Figure 20: The METCM editor. When zones are entered new lines appear. The first four zones from Figure 7 have been entered in the right image. The relative humidity is entered in the bottom left text field. 7.3.3 Registering a METCM A special editor for METCMs has been created in Android. The view features four textfields at the top for the header of the message, and the first of them has the mandatory METCM filled in. Then follows textfields for the body of the message, where there is only one line available at first. Once the user has filled in a line a new one appears under it. After the user has entered the relative humidity, he or she presses the register button in the bottom right corner to register the weather. Figure 20 illustrates this process. 49 8 8.1 Discussion Numerical method for trajectory computations It is concluded in Section 4.1.6 that the Runge-Kutta method is more than accurate enough to solve the trajectory computation. It is shown that the error in the distance is in the tens of µm, which of course is a ridiculous precision considering that the lethal blast radius of the shells is at least 50 m, with some shrapnel possibly reaching over 100 m. The irregular convergence of the Runge-Kutta method does not cause a problem in this application, but it would be interesting to investigate why this phenomenon occurs. As discussed in Section 4.1.5, it may be caused by the non-differentiable junctions in the acceleration function. A search for papers that report similar behaviors has been conducted, but so far nothing relevant has been found. It is interesting to note that the second order methods would be sufficient to use instead of the Runge-Kutta method. If memory was an extremely expensive resource in the hardware these methods could be used instead. The midpoint method can even discard the Euler derivative and save the new derivative at that memory address since only the second derivative is used in the actual step forward, see Equation 22. There is, however, an excess of memory available in this particular computer, so this does not have to be considered for this project. 8.2 Search method The multi-dimensional Newton-Raphson’s method was discovered early in the project and was therefore implemented straight away in the search method module. Although there are plenty of ways to solve this problem, this method seems stable and fast enough to render any additional investigation obsolete. The found firing solutions in Section 7.2.2 correspond fairly well with the artillery computer’s, but not exactly. The two explosive shells, 80R and 80Z, are mostly correct within 2 mils, with only one exception of 3 mils. The two shells with burst height, the smoke shell and the illumination shell, are slightly worse. Elevation angles often differ by 4 mils, and one outlier differs by 13 mils. It seems strange that one firing solution would differ much more than all others, but the explanation is probably that the target is far away for such a low charge. The underlying error is possibly magnified when the elevation angle is low. 50 One should consider that a mil is a relatively small unit and that the resulting change in range varies with the elevation angle. The range is affected more if the elevation angle is high, see Figure 10 at page 28. The two firing solutions with the highest elevation angles never differ more than 2 mils from the artillery computers firing solutions. This would correspond to a difference of about 10 meters or less. This is an acceptible difference considering that the way the other artillery computer is implemented is unknown. 8.3 GUI Android has performed as expected and there is virtually no lag in the GUI when using the software. The application uses a clean and simple layout, which hopefully is preferred to “flashy” animations and other features which are common in social apps. The software has however not been tested by actual soldiers. Such a test would give valuable opinions on what could be changed to improve the GUI and make it even more comprehensive. 8.4 Future work There is a lot of work left to do before considering this software a finished product. As an example, it seems like the ballistics core has to be tuned a bit to produce the same result as existing artillery computers. The software should also be tested more extensively than what it has been so far. There are also many required functions that have not been implemented yet. A map to visualize the registered locations would help the operator and assure him or her that the locations have been registered correctly. There should also be a night mode available for the GUI which minimizes light emitted from the screen. As the Swedish Armed Forces have shown interest in the product, these problems and many more will be investigated further in the future. 8.5 Conclusion The ultimate goal of this thesis work was to prove that it is possible to create a program on a portable unit that replaces the methods that are used by the Swedish Armed Forces for mortar usage today. A proof of concept has been developed and tested against existing software. The tests seem to indicate that the project has been a success and that the developed software can be used as a foundation for a more advanced version. 51 9 Acknowledgement I have a lot of people to thank for making this thesis possible. It has been a true pleasure to work with each and every one of them, and I am looking forward to continue working with them in the future. So, without further ado, I would like to express my greatest gratitude to Olov Wilander, my supervisor, who have supported me throughout this thesis work with invaluable knowledge of computational methods, mathematical aspects, proper thesis writing customs and much more. Our regular Friday afternoon meetings have been a keystone in this sometimes confusing but persistently enjoyable project. Stefan Sandén, my “second” supervisor and go-to-hacker, who always seems to have an answer when my code is acting up. Having an experienced programmer next door has saved me more times than I dare count. Lennart Öhman, my project manager, for proposing this project and then guiding me through it. Taking me to the headquarters of the Swedish Defence Materiel Administration and multiple live firing exercises has made this thesis work even more delightful. Maud Holma von Heijne, my boss, who made the decision to take me in at Sjöland & Thyselius in my oddysey to find a suitable thesis work and has been supportive ever since. Lars Kron at Markstridsskolan, Kvarn, for showing me how to find firing solutions without an artillery computer and sharing his expert knowledge of how a mortar is used. Ken Mattson at the Department of Information Technology at Uppsala University, for examining my work and helping me with my numerical methods. Last, but not least, I would like to thank all the people at Sjöland & Thyselius who I have had the pleasure of meeting during this spring. Movie nights, boat trips, jam sessions and a conference in Berlin has made me feel more welcome than I could ever hope for. 52 References [1] Hairer E., Nørsett S. P., Wanner G., Solving Ordinary Differential Equations I, 2nd revised edition, Springer, Berlin, 2000. [2] Press W. H., Teukolsky S. A., Vetterling W. T., Flannery B. P., Numerical Recipes, 3rd edition, Cambridge University Press, New York, 2007. [3] Försvarets Materielverk, SkjutR Art Grk (Skjutreglemente för artilleri och granatkastare), Citec Information AB, 2007, M7739-353005. [4] Försvarets Materielverk, H SystSäk (Handbok för Systemsäkerhet), Fälth & Hässler, Värnamo, 2011, M7739-352022. [5] NATO, STANAG 4082 - Adoption of a standard artillery computer meteorological message, 2nd ed., 1969. [6] NATO, STANAG 4355 - The modified point mass and five degrees of freedom trajectory models, 3rd ed., 2009. [7] ISO, ISO 2533 - Standard Atmosphere, 1st ed., 1975. [8] U.S. Army ARDEC, Database Design Specification for the NATO Armaments Ballistic Kernel (Release 10.0), Version 5.4, 2008. [9] NASA, Humidity, retrieved from http://atmos.nmsu.edu/education and outreach/encyclopedia/humidity.htm 2015-08-20, webpage updated 2015-07-15. [10] John H. Mathews, NUMERICAL METHODS: MATLAB Programs, Prentice Hall, New Jersey, 1995. 53 Appendices A Terminology This section explains the most fundamental mortar related terms used in this thesis. Mils Mils are the standard way of measuring angles in the Swedish Armed Forces. There are 6400 mils in a full rotation, meaning that one mil is equal to 0.05625◦ . A mil is roughly equal to a milliradian, and thus a cone with one mil’s width is about a meter wide one kilometer away. Elevation angle The elevation angle, or simply elevation, represents the angle between the ground and the barrel of the mortar. The Swedish Armed Forces define an elevation angle of 0 mils as 700 mils from the ground, which means that an elevation angle of 900 mils results in 1600 mils, i.e. the barrel pointing straight up. In this way all elevation angles can be given with three digits, (mortars are never fired with an angle lower than 800 mils between the barrel and the ground). Bearing The bearing is the compass direction in which the barrel is pointed. Shell The projectile that is fired from a mortar is called a shell. The shells can have different functions, which are explained further in Section 2.2. Charge Although charge can refer to a variety of things in this context, it is the propulsion clip attached to a shell that is implied. The propulsion clips build additional pressure at launch, causing the muzzle velocity of the shell to increase. As an example, charge 3 means that three propulsion clips should be attached to the shell before launch. Fire mission A fire mission is sent to the mortar operator whenever the mortar should be used. The fire mission states a target and the shell type that should be used. The number of shells to be fired and time requirements may also be specified. Firing solution A firing solution is a collective name for the bearing, elevation, shell type and charge needed to complete a fire mission. 54 Registration point A registration point (RP) is a way of countering errors in the strategic material that is available. If multiple firing solutions result in similar misses there may be reason to believe that a consistent error is present in the weather report, position designator equipment or something else. The deviation from the target can then be registered as an RP and subsequent fire missions can be adjusted before the first shell is launched. FCI file Fire Control Input files (FCI files) are formatted database files that describe ballistic properties of weapon systems. The files come in plain text format in order to be valid on all platforms. One FCI file may define the ballistic properties of a single projectile only. If there are several projectiles available for a weapon system there should be one FCI file per projectile. Time On Target A Time On Target (TOT) order is issued if the first shell in a strike should detonate on a specific time of day, followed by more shells. Time To Fire A Time To Fire (TTF) order is issued if the last shell in a strike should detonate on a specific time of day. It should be safe to move into the target area after the specified time. 55 B State graphs of trajectory The state of the differential equation (see Equation 18) and the corresponding acceleration for a 6000 meter shot is shown in Figures 21-23. The bearing of this shot is 0000, and the z component has therefore been excluded in all graphs. The Corliolis effect is too small to give interesting curves in any of the graphs, and there are no other forces that act in the z direction. x component y component Position [m] 6,000 4,000 2,000 0 0 5 10 15 20 Time [s] 25 30 35 40 Figure 21: The position components over time in a 6000 meter shot. 56 Velocity [m/s] 200 100 0 −100 x component y component −200 0 5 10 15 20 Time [s] 25 30 35 40 Figure 22: The velocity components over time in a 6000 meter shot. Acceleration [m/s2 ] 0 −5 −10 −15 −20 x component y component 0 5 10 15 20 Time [s] 25 30 35 40 Figure 23: The acceleration components over time in a 6000 meter shot. C Runge Kutta convergence for different state components In Section 4.1.5 it was discovered that the Runge Kutta method shows an oscillating convergence for decreasing step sizes. Tables 11-14 and Figures 24-27 show this phenomenon in four state components. The z component of the position and velocity has been left out. All graphs are plotted from the same shot. 58 Table 11: The approximate error of the Runge Kutta method in the x component of the position. h (s) Error (m) E(h) E(h/2) 20 -1.95·10−5 -3.13 2−1 6.24·10−6 -3.70 2−2 -1.68·10−6 -5.57 2−3 3.02·10−7 -2.10 2−4 -1.44·10−7 -7.26 2−5 1.98·10−8 3.30 2−6 6.01·10−9 -4.66 2−7 -1.29·10−9 -1.34 2−8 9.65·10−10 1.68 2−9 5.75·10−10 * ·10−5 Error [m] 0 −1 −2 20 2−1 2−2 2−3 2−4 2−5 2−6 Step length h [s] 2−7 2−8 2−9 Figure 24: The convergence of the Runge Kutta method for the x component of the position. Table 12: The approximate error of the Runge Kutta method in the y component of the position. h (s) Error (m) E(h) E(h/2) 20 4.48·10−5 6.26 2−1 7.15·10−6 -149.90 2−2 -4.77·10−8 -0.19 2−3 2.49·10−7 -2.11 2−4 -1.18·10−7 -8.42 2−5 1.40·10−8 4.01 2−6 3.50·10−9 -2.17 2−7 -1.61·10−9 -5.20 2−8 3.10·10−10 1.88 2−9 1.65·10−10 * ·10−5 Error [m] 4 3 2 1 0 20 2−1 2−2 2−3 2−4 2−5 2−6 Step length h [s] 2−7 2−8 2−9 Figure 25: The convergence of the Runge Kutta method for the y component of the position. Table 13: The approximate error of the Runge Kutta method in the x component of the velocity. h (s) Error (m) E(h) E(h/2) 20 -1.89·10−6 -4.13 2−1 4.57·10−7 -1.96 2−2 -2.33·10−7 -14.47 2−3 1.61·10−8 -2.34 2−4 -6.89·10−9 -5.71 2−5 1.21·10−9 2.91 2−6 4.14·10−10 -13.50 2−7 -3.06·10−11 -0.48 2−8 6.34·10−11 2.48 2−9 2.55·10−11 * ·10−6 0.5 Error [m] 0 −0.5 −1 −1.5 −2 20 2−1 2−2 2−3 2−4 2−5 2−6 Step length h [s] 2−7 2−8 2−9 Figure 26: The convergence of the Runge Kutta method for the x component of the velocity. Table 14: The approximate error of the Runge Kutta method in the y component of the velocity. h (s) Error (m) E(h) E(h/2) 20 -6.10·10−7 -15.22 2−1 4.00·10−8 0.39 2−2 1.04·10−7 8.93 2−3 1.16·10−8 -1.76 2−4 -6.61·10−9 -11.44 2−5 5.78·10−10 5.45 2−6 1.06·10−10 -0.92 2−7 -1.15·10−10 -20.50 2−8 5.60·10−12 0.58 2−9 9.65·10−12 * ·10−7 Error [m] 0 −2 −4 −6 20 2−1 2−2 2−3 2−4 2−5 2−6 Step length h [s] 2−7 2−8 2−9 Figure 27: The convergence of the Runge Kutta method for the y component of the velocity. D Comparison of artillery computers The computational core has been compared against the current artillery computer. Firing solutions were sought for ten targets for each shell type. The targets are listed in Table 16. The comparisons for each shell are listed in Table 17-20. Table 15: The mortar location used in the tests. Mortar Easting Northing Height [m] 1 Target 47 2887 649 3458 103 Table 16: The targets used in the tests. Easting Northing Distance [m] Height [m] Charge 1 47 4380 649 3850 1544 103 1 2 47 6160 649 4320 3385 103 3 3 47 8430 649 4800 5703 103 6 4 47 4860 649 3970 2038 103 2 5 47 6300 649 4300 3515 103 4 6 47 7420 649 4600 4675 103 6 7 47 6890 649 4470 4129 103 5 8 47 6910 649 4540 4166 103 5 9 47 4150 649 3770 1301 103 2 10 47 5050 649 4040 2240 103 4 63 Target Table 17: Comparison of bearing, elevation and flight time against the artillery computer for the 80R shell. Bearing [mils] Difference [mils] Elevation [mils] Difference [mils] Flight time [s] Difference [s] 1 1337 0 285 0 21.9 0.0 2 1336 0 318 2 34.5 0.1 3 1356 0 332 -3 46.8 -0.1 4 1340 0 472 1 31.6 0.0 5 1351 0 472 2 42.4 0.0 6 1346 0 482 -1 50.4 -0.1 7 1345 0 480 0 47.0 0.0 8 1330 0 475 0 46.9 0.0 9 1352 0 649 0 33.5 0.0 10 1330 0 651 1 45.0 0.0 Table 18: Comparison of bearing, elevation and flight time against the artillery computer for the 80Z shell. Bearing [mils] Difference [mils] Elevation [mils] Difference [mils] Flight time [s] Difference [s] Target 1 1337 0 232 0 20.7 0.0 2 1336 0 280 2 33.2 0.0 3 1356 0 281 0 44.5 0.0 4 1340 0 447 0 30.7 0.0 5 1351 0 448 1 41.3 0.1 6 1346 0 455 0 48.9 0.0 7 1345 0 457 2 45.7 0.1 8 1330 0 451 2 45.6 0.1 9 1352 0 637 0 32.8 0.0 10 1330 0 640 1 44.2 0.1 Table 19: Comparison of bearing and elevation against the artillery computer for the smoke shell. A * means that a firing solution could not be found. Target Bearing [mils] Difference [mils] Elevation [mils] Difference [mils] 1 1337 0 362 2 2 1336 0 327 -5 3 * * * * 4 1340 0 493 -3 5 1351 0 456 -3 6 1346 0 397 -3 7 1345 0 435 -1 8 1330 0 429 -2 9 1352 0 661 -2 10 1330 0 644 -1 Table 20: Comparison of bearing and elevation against the artillery computer for the illumination shell. A * means that a firing solution could not be found. Target Bearing [mils] Difference [mils] Elevation [mils] Difference [mils] 1 * * * * 2 1336 0 299 4 3 1356 0 213 -13 4 1340 0 458 2 5 1351 -1 456 2 6 1346 0 433 -4 7 1345 0 453 -4 8 1330 0 447 -4 9 1352 0 645 0 10 1330 0 645 1 E Glossary English Swedish Adjustment Reglering Bearing Bäring Elevation angle Elevationsvinkel Fire mission Elduppdrag Firing solution Skjutlösning Registration point (RP) Utgångspunkt (UP) Shell Granat Time On Target Fråntidsskjutning Time To Fire Tilltidsskjutning 66
© Copyright 2024