Whenmodeling engineering systems, it can be difficult to identify the key parameters driving system behavior because they are often buried deep within the model. Analytical models can help because they describe systems using mathematical equations, showing exactly how different parameters affect system behavior.
We will evaluate the three primary loads that act on the aircraft wing: aerodynamic lift, load due to wing structure weight, and load due to the weight of the fuel contained in the wing. These loads act perpendicular to the wing surface, and their magnitude varies along the length of the wing (Figures 1a, 1b, and 1c).
We derive our analytical model of wing loads in the Symbolic Math Toolbox notebook interface, which offers an environment for managing and documenting symbolic calculations. The notebook interface provides direct support for the MuPAD language, which is optimized for handling and operating on symbolic math expressions.
Within the notebook interface we define \(q_1(x)\) and calculate its integral (Figure 2). We incorporate math equations, descriptive text, and images into our calculations to clearly document our work. Completed notebooks can be published in PDF or HTML format.
and solve for the unknown \(ka\) term. Our analysis assumes that lift forces are concentrated on the two wings of the aircraft, which is why the left-hand side of the equation is divided by 2. We do not consider lift on the fuselage or other surfaces.
An analytical model like this helps us understand how various parameters affect lift. For example, we see that lift is directly proportional to load factor (n) and that for a load factor of 1, the maximum lift
\[q_t(x) = \begincases \beginsplit &\fracnL^2 \pi\left(2 W_to\sqrtL^2 - x^2\right) \\ &\quad + \fracn\left( -\pi C_o L W_ws + \pi C_o W_ws x - \pi C_t W_ws x\right)L^2 \pi (C_o + C_t) \endsplit & \textif L_f We now have an analytical model for wing loads that we can use to evaluate aircrafts with various wing dimensions and weights. The small passenger aircraft that we are modeling has the following parameters:
We see that lift is the largest contributor to total load and that the maximum load of 545 N*m occurs at the end of the fuel tank. Fuel load also contributes significantly to the total load, while the weight of the wing is the smallest contributor.
While it is useful to visualize wing loads, what really concerns us are the shear force and bending moments resulting from these loads. We need to determine whether worst-case bending moments experienced by the wing are within design limits.
We write a custom function in the MuPAD language, CalcMoment.mu. This function accepts load profile and returns the bending moment along the length of the wing (Figure 4). Symbolic Math Toolbox includes an editor, debugger, and other programming utilities for authoring custom symbolic functions in the MuPAD language.
\[\begincases \beginsplit &0.27 n x^3 - 2085.0 n x - 25.31 n x^2 - 1056.56 n \\ &\quad + 10695.21 n \left(0.14 x \arcsin(0.14x) + \sqrt1.0 - 0.02 x^2\right) \\ &\quad - 10.39 n \left(49.0 - 1.0 x^2\right)^\frac32\endsplit & \textif 2.4 As expected, the bending moment is highest at the wing root with a value of 8.5 kN*m. The wing is designed to handle bending moments up to 40 kN*m at the wing root, but since regulations require a safety factor of 1.5, bending moments exceeding 26.7 kN*m are unacceptable. We will simulate bending moments for various operating conditions, including conditions where the load factor is greater than 1.5, to ensure that we are not in danger of exceeding the 26.7 kN*m limit.
The bending moment equation is saved in our notebook as moment. Using the getVar command in Symbolic Math Toolbox, we import this variable into the MATLAB workspace as a sym object, which can be operated on using MATLAB symbolic functions included in Symbolic Math Toolbox.
Dataset arrays provide a convenient way to manage data in MATLAB, enabling us to filter the data to view and analyze the subsets we are most interested in. Since we want to determine whether bending moments ever exceed the 26.7 kN*m threshold, we only need the bending moment data where the load factor is greater than 1.5. We filter the dataset and plot the data for these conditions (Figure 7).
The plot shows that the peak bending moment, 19.3 kN*m, occurs when net aircraft velocity and lift coefficient are at their maximum values of 88 m/s and 1.5, respectively. This result confirms that bending moments will be safely below the 26.7 kN*m limit, even for worst-case conditions.
Our analytical models gave us a clear view into how different aircraft parameters and operating conditions affect loads and bending moments on the aircraft wing. They enabled us to verify that the wing is able to withstand worst-case loading conditions that it could encounter during the climb phase of flight.
Whlen Sie eine Website aus, um bersetzte Inhalte (sofern verfgbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Whlen Sie fr die bestmgliche Website-Leistung die Website fr China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind fr Besuche von Ihrem Standort aus nicht optimiert.
Over time additional functionality was added, in particular for vision, and twomajor refactorings led to the current state of three toolboxes: Robotics Toolboxfor MATLAB and Machine Vision Toolbox for MATLAB (1999) both of which are builton the Spatial Math Toolbox for MATLAB (SMTB-M) in 2019.
The imperative for a Python version has long existed and the first port wasstarted in 2008 but ultimately failed for lack of ongoing resources to completea sufficient subset of functionality. Subsequent attempts have all met the samefate.
Support models expressed using Denavit-Hartenberg notation (standard andmodified), elementary transform sequences [Corke07] [Haviland20], and URDF-stylerigid-body trees. Support branched, but not closed-loop or parallel, robots
Robotics and computer vision require us to describe position, orientation andpose in 3D space. Mobile robotics has the same requirement, but generally for 2Dspace. We therefore need tools to represent quantities such as rigid-bodytransformations (matrices \(\in \SEn\) or twists \(\in \sen\)),rotations (matrices \(\in \SOn\) or \(\son\), Euler or roll-pitch-yawangles, or unit quaternions \(\in \mathrmS^3\)). Such capability is amongst the oldest inRTB-M and the equivalent functionality exists in RTB-P which makes use of theSpatial Maths Toolbox for Python (SMTB-P) [SMTB-P]. For example:
There is strong similarity to the equivalent MATLAB case apart from the use ofthe @ operator, the use of keyword arguments instead of keyword-value pairs,and the format of the printed array. All the classic RTB-M functions areprovided in the spatialmath.base package as well as additional functions forquaternions, vectors, twists and argument handling. There are also functions toperform interpolation, plot and animate coordinate frames, and create movies,using matplotlib. The underlying datatypes in all cases are 1D and 2D NumPyarrays.
Secondly, the operators we need for poses are a subset of those available formatrices, and some operators may need to be redefined in a specific way. Forexample, \(\SE3 * \SE3 \rightarrow \SE3\) but \(\SE3 + \SE3 \rightarrow \mathbbR^4 \times 4\), and equality testing for aunit-quaternion has to respect the double mapping.
Thirdly, in robotics we often need to represent time sequences of poses. Wecould add an extra dimension to the matrices representing rigid-bodytransformations or unit-quaternions, or place them in a list. The firstapproach is cumbersome and reduces code clarity, while the second cannot ensurethat all elements of the list have the same type.
We use classes and data encapsulation to address all these issues. SMTB-Pprovides abstraction classes SE3, Twist3, SO3, UnitQuaternion,SE2, Twist2 and SO2. For example, the previous example could be writtenas:
where composition is denoted by the * operator and the matrix is printed more elegantly (and elements are colorcoded at the console or in ipython).SE3.RPY() is a class method that acts like a constructor, creating an SE3 instance from a set of roll-pitch-yaw angles,and SE3.Rx() creates an SE3 instance from a pure rotation about the x-axis.Attempts to compose with a non SE3 instance would result in a TypeError.
All of this allows for concise and readable code.The use of classes ensures type safety and that the matrices abstracted by the class are always valid members ofthe group.Operations such as addition, which are not group operations, yield a NumPy array rather than a class instance.
These benefits come at a price in terms of execution time due to the overhead ofconstructors, methods which wrap base functions, and type checking. TheToolbox supports SymPy which provides powerful symbolic support for Python andit works well in conjunction with NumPy, ie. a NumPy array can contain symbolicelements. Many the Toolbox methods and functions contain extra logic to ensurethat symbolic operations work as expected. While this adds to the overhead itmeans that for the user, working with symbols is as easy as working withnumbers.
The Toolbox ships with over 30 robot models, most of which are purely kinematicbut some have inertial and frictional parameters. Kinematic models can bespecified in a variety of ways: standard or modified Denavit-Hartenberg (DH,MDH) notation, as an ETS string [Corke07], as a rigid-body tree, or from a URDFfile.
3a8082e126