3D Kinematics
()
About this ebook
Related to 3D Kinematics
Related ebooks
Guided Waves in Structures for SHM: The Time - domain Spectral Element Method Rating: 0 out of 5 stars0 ratingsEvolutionary Algorithms and Neural Networks: Theory and Applications Rating: 0 out of 5 stars0 ratingsTracking with Particle Filter for High-dimensional Observation and State Spaces Rating: 0 out of 5 stars0 ratingsIntroduction to Statistics in Metrology Rating: 0 out of 5 stars0 ratingsHypergraph Theory: An Introduction Rating: 0 out of 5 stars0 ratingsHandbook of Ultra-Wideband Short-Range Sensing: Theory, Sensors, Applications Rating: 0 out of 5 stars0 ratings3D Computer Vision: Efficient Methods and Applications Rating: 0 out of 5 stars0 ratingsHuman Activity Recognition and Behaviour Analysis: For Cyber-Physical Systems in Smart Environments Rating: 0 out of 5 stars0 ratingsOptical Flow: Exploring Dynamic Visual Patterns in Computer Vision Rating: 0 out of 5 stars0 ratingsSingular Spectrum Analysis for Time Series Rating: 0 out of 5 stars0 ratingsLaser Velocimetry in Fluid Mechanics Rating: 0 out of 5 stars0 ratingsSpatiotemporal Data Analysis Rating: 3 out of 5 stars3/5Challenges and Trends in Multimodal Fall Detection for Healthcare Rating: 0 out of 5 stars0 ratingsComputer Vision in Advanced Control Systems-5: Advanced Decisions in Technical and Medical Applications Rating: 0 out of 5 stars0 ratingsPathways to Machine Learning and Soft Computing: 邁向機器學習與軟計算之路(國際英文版) Rating: 0 out of 5 stars0 ratingsGlobal Positioning System: Theory and Practice Rating: 4 out of 5 stars4/5Mixture Models and Applications Rating: 0 out of 5 stars0 ratingsFinite Elements for Truss and Frame Structures: An Introduction Based on the Computer Algebra System Maxima Rating: 0 out of 5 stars0 ratingsSpatial Econometrics using Microdata Rating: 0 out of 5 stars0 ratingsThe Lattice Boltzmann Method: Principles and Practice Rating: 0 out of 5 stars0 ratingsComputational Modeling of Tensegrity Structures: Art, Nature, Mechanical and Biological Systems Rating: 0 out of 5 stars0 ratingsSPSS for Applied Sciences: Basic Statistical Testing Rating: 3 out of 5 stars3/5Active Appearance Model: Unlocking the Power of Active Appearance Models in Computer Vision Rating: 0 out of 5 stars0 ratingsIndustrial X-Ray Computed Tomography Rating: 0 out of 5 stars0 ratingsDynamics of Cyclic Machines Rating: 0 out of 5 stars0 ratingsCoding Ockham's Razor Rating: 0 out of 5 stars0 ratingsMathematics for Econometrics Rating: 0 out of 5 stars0 ratingsRandom Forests with R Rating: 0 out of 5 stars0 ratingsThe Physics and Technology of Diagnostic Ultrasound: Study Guide (Second Edition) Rating: 0 out of 5 stars0 ratingsSystem Identification: An Introduction Rating: 0 out of 5 stars0 ratings
Mathematics For You
What If?: Serious Scientific Answers to Absurd Hypothetical Questions Rating: 5 out of 5 stars5/5Algebra - The Very Basics Rating: 5 out of 5 stars5/5Quantum Physics for Beginners Rating: 4 out of 5 stars4/5The Everything Guide to Algebra: A Step-by-Step Guide to the Basics of Algebra - in Plain English! Rating: 4 out of 5 stars4/5My Best Mathematical and Logic Puzzles Rating: 4 out of 5 stars4/5Standard Deviations: Flawed Assumptions, Tortured Data, and Other Ways to Lie with Statistics Rating: 4 out of 5 stars4/5The Little Book of Mathematical Principles, Theories & Things Rating: 3 out of 5 stars3/5Math Magic: How To Master Everyday Math Problems Rating: 3 out of 5 stars3/5Mental Math Secrets - How To Be a Human Calculator Rating: 5 out of 5 stars5/5Basic Math & Pre-Algebra For Dummies Rating: 4 out of 5 stars4/5Algebra II For Dummies Rating: 3 out of 5 stars3/5Real Estate by the Numbers: A Complete Reference Guide to Deal Analysis Rating: 0 out of 5 stars0 ratingsMust Know High School Algebra Rating: 5 out of 5 stars5/5Alan Turing: The Enigma: The Book That Inspired the Film The Imitation Game - Updated Edition Rating: 4 out of 5 stars4/5Calculus For Dummies Rating: 4 out of 5 stars4/5Algebra I Workbook For Dummies Rating: 3 out of 5 stars3/5Basic Math & Pre-Algebra Workbook For Dummies with Online Practice Rating: 4 out of 5 stars4/5Game Theory: A Simple Introduction Rating: 4 out of 5 stars4/5Calculus Made Easy Rating: 4 out of 5 stars4/5How to Solve It: A New Aspect of Mathematical Method Rating: 4 out of 5 stars4/5Flatland Rating: 4 out of 5 stars4/5Relativity: The special and the general theory Rating: 5 out of 5 stars5/5Pre-Calculus For Dummies Rating: 5 out of 5 stars5/5Mental Math: Tricks To Become A Human Calculator Rating: 3 out of 5 stars3/5Trigonometry For Dummies Rating: 0 out of 5 stars0 ratingsACT Math & Science Prep: Includes 500+ Practice Questions Rating: 3 out of 5 stars3/5The Math of Life and Death: 7 Mathematical Principles That Shape Our Lives Rating: 4 out of 5 stars4/5Intermediate Algebra Rating: 0 out of 5 stars0 ratings
Reviews for 3D Kinematics
0 ratings0 reviews
Book preview
3D Kinematics - Thomas Haslwanter
© Springer International Publishing AG, part of Springer Nature 2018
Thomas Haslwanter3D Kinematicshttps://doi.org/10.1007/978-3-319-75277-8_1
1. Introduction
Thomas Haslwanter¹
(1)
School of Medical Engineering and Applied Social Sciences, University of Applied Sciences Upper Austria, Linz, Upper Austria, Austria
Thomas Haslwanter
Email: thomas.haslwanter@fh-linz.at
Performing an everyday movement, such as reaching for a cup of tea, is so natural and intuitive to us that it seems to be trivial. But when we try to understand how this movement is performed, or when we try to follow or imitate such a movement, for example, with a robotic arm, it quickly becomes obvious that even such seemingly trivial acts are based on a complex interaction of the relative three-dimensional (3-D) upper body, arm, and finger orientations. Similarly, looking at the face of an approaching friend while walking down the street does not seem to be much of an achievement. But talk to an engineer who has tried to keep a camera on a moving platform oriented such that it keeps focussing on another moving target, and you realize that working with objects moving in 3-D space entails many challenges, especially mathematical and geometric ones.
Surprisingly, little literature exists that provides a researcher or engineer who wants to work on this type of phenomena with an introduction into the area. On the contrary, most articles or books focus on one selected way to characterize a 3-D movement, but do not elaborate on alternative ways to describe it. For example, my own physics education gave me a (confusing) introduction to Euler angles
or the special unitary group of complex 2 $$\,\times \,$$ 2 matrices
, but never showed how to work with them in practice, and did not mention alternative descriptions of spatial orientation, such as quaternions.
This book tries to fill this gap. It will provide an overview of common ways to characterize movement in 3-D space. In particular, it will provide an introduction to the different methods that are commonly used to record and analyze human movements, be it for medical applications (such as gait analysis), scientific uses (such as biomechanical investigations), or for recreational activities (such as the movement analysis with the sensors built into current smartphones). But it should also be able to provide programmers working in computer graphics with the necessary background to choose the optimal algorithms for their kinematic tasks at hand.
To my knowledge, this book is the first one that not only describes the mathematics of 3-D kinematics but also provides full programming toolboxes (in Python and in Matlab), allowing the reader to focus on the understanding and not on trivial
programming details. The Python package scikit-kinematics,¹ as well as a corresponding Matlab Kinematics Toolbox,² contain the algorithms for simulating 3-D movements, and for importing and analyzing data from different 3-D recording systems. Code listings and the solutions to the exercises can be found on the website accompanying this book.³
1.1 Recording Movement and Orientation
Determination and characterization of orientation and movement in space can provide valuable information for numerous applications:
Smartphones use such measurements to decide whether the display should be in portrait or landscape mode.
Fitness trackers, such as Jawbone or Fitbit, use this information to estimate and quantify the amount of daily movement activities.
Airbags in cars are triggered by movement sensors.
In neurology, otorhinolaryngology, and ophthalmology, movement recordings are used for the diagnoses of medical conditions.
Autopilot applications in planes and autonomous vehicles require movement information for their actions.
Modern prosthetic devices include movement sensors, to control built-in motors and to regulate the mechanical properties of modern prostheses.
Simple approaches are often sufficient for two-dimensional (2-D) measurements. A simple protractor is sufficient to find the angles between upper body, upper leg, and lower leg from a photography of a runner. And a goniometer can quickly indicate the angle between two objects or shafts.
However, to uniquely characterize the movement of an object in 3-D space, the measurements are more involved and six parameters are required. For recording of 3-D position and orientation, which together are sometimes referred to as pose, two approaches can be taken. First, three or more parts of an object can be marked. Tracking the movement of those markers in 3-D space provides information about the movement of the object. And second, if the object is solid, a sensor can be attached to the object. The signals from this sensor can then be used to find the position and orientation of the sensor, and thus of the object.
1.2 Conventions and Basics
Movements in 3-D space consist of translations as well as rotations. To describe them, the following conventions will be used.
1.2.1 Notation
Axes indexing starts at 0, (0, 1, 2) and corresponds to the (x, y, z) axes, respectively.
Scalars are indicated by plain letters (e.g., a).
Column vectors are written with bold lowercase letters (e.g., $$\mathbf {r}$$ ) or in round brackets, and the components of 3-D coordinate systems are labeled (x, y, z):
$$\begin{aligned} \mathbf {r} = \left( {\begin{array}{*{20}{c}} {{r_x}}\\ {{r_y}}\\ {{r_z}} \end{array}} \right) . \end{aligned}$$(The only exception are the electrical field $$\mathbf {E}$$ and the magnetic field $$\mathbf {B}$$ , which by convention are written in uppercase Sect. 2.2.5). However, it should be clear from the context that they are vectors.)
The length or norm
of a vector is indicated by the same name but in plain style
Matrices are written with bold uppercase letters (e.g., $$\pmb {R}$$ ) or in square brackets.
$$\begin{aligned} \pmb {R} = \left[ {\begin{array}{*{20}{c}} R_{xx}&{}R_{xy}&{}R_{xz}\\ R_{yx}&{}R_{yy}&{}R_{yz}\\ R_{zx}&{}R_{zy}&{}R_{zz} \end{array}} \right] . \end{aligned}$$Vector and matrix elements are written in plain style, with indices denoted by subscripts (e.g., $$r_x;\, R_{yz}$$ ).
Multiplications with a scalar are denoted by $$*$$ (e.g.,
$$\tan (\theta /2) *\mathbf {n}$$).
Scalar–vector products and matrix multiplications are denoted by $$\cdot $$ (e.g., $$\mathbf {p} \cdot \mathbf {q}$$ ).
Vector cross products are denoted by $$\times $$ (e.g., $$\mathbf {p} \times \mathbf {q}$$ ).
Quaternions are denoted with bold italics and tilde (e.g., $$\varvec{\tilde{r}}$$ ).
Products of quaternions or Gibbs vectors are denoted by $$\circ $$ (e.g., $$\varvec{\tilde{r_p}} \circ \varvec{\tilde{r_q}}$$ ).
1.2.2 Coordinate Systems
A frequent source of confusion is the choice of coordinate system. Unit vectors in the direction of the x-, y-, z-axes will be denoted with $$\mathbf {n_x}, \mathbf {n_y}, \mathbf {n_z}$$ , respectively. The direction of $$\mathbf {n_x}$$ can be chosen freely. For example, it can point forward, left, or up.
Modern texts almost exclusively use right-handed coordinate systems (Fig. 1.1), but may attach different meanings to the three axes. For example, in image processing $$\mathbf {n_x}$$ is typically chosen pointing right and $$\mathbf {n_y} $$ pointing up so that the image plane is the (x, y)-plane. In aerospace engineering, $$\mathbf {n_x}$$ is pointing forward, $$\mathbf {n_y}$$ is chosen such that it points to the right, and $$\mathbf {n_z}$$ as a result is pointing down. With that convention, nose-up rotations of an airplane are positive
, the preferred choice in aeronautics. When used in navigation the axes order may denote East-South-Down or North-East-Down. And in human locomotion analysis $$\mathbf {n_x}$$ should point in the direction of progression, $$\mathbf {n_y}$$ upward, and $$\mathbf {n_z}$$ to the right Wu and Cavanagh (1995). But regardless of the specific choice, it is very important to make sure which coordinate system has been selected.
Fig. 1.1
Right-hand reminder for the direction of the positive coordinate axes. Remember where x
is pointing to!
(from Wikipedia, by R. Hewitt)
In this book, the default coordinate system will be a right-handed coordinate system with three orthogonal unit vectors. The coordinate system is chosen as it is commonly used in medical applications and movement analysis. It defines the axes as follows (Fig. 1.2):
$$\mathbf {n_x}$$ pointing forward,
$$\mathbf {n_y}$$ pointing to the left, so that the x, y-plane ( $$z=0$$ ) is horizontal, and
$$\mathbf {n_z}$$ pointing up.
so that
$$\begin{aligned} \mathbf {n_x} \times \mathbf {n_y} = \mathbf {n_z} \,. \end{aligned}$$(1.1)
../images/459989_1_En_1_Chapter/459989_1_En_1_Fig2_HTML.pngFig. 1.2
Right-handed coordinate system
Wherever possible the axis labels (x
, y
, z
) will be used to avoid labeling by numbers (0
, 1
, 2
), since some computer languages (like C or Python) start with 0, while others (like Matlab) start with 1.
1.3 Software Packages
To facilitate and speed up the analysis of 3-D data, this book comes with libraries in Matlab and Python. These libraries provide frequently used functions for working with vectors, rotation matrices, and quaternions, and for the data analysis for measurements from inertial measurement units (IMUs) or from optical recording systems (e.g., Optotrak or Vicon) (Fig. 1.3).
../images/459989_1_En_1_Chapter/459989_1_En_1_Fig3_HTML.pngFig. 1.3
For finding a correct mathematical solution to the individual problem at hand, informal sketches are invaluable! In most cases, the programming should be almost trivial, especially when using the software provided with this book. But 3-D kinematics is complex to visualize, and the help provided by simple sketches is hard to overestimate (Here, a sketch for a camera-based recording of an experimental setup, as will be used in Chap. 6.)
The application examples in this book are presented in Python. The corresponding source code can be found on the web-page accompanying this book.⁴ A list of the programs included is given in Appendix C.
1.3.1 Python Package scikit-kinematics
The Python core distribution contains only the essential features of a general programming language. For example, it does not even contain a package for working efficiently with vectors and matrices. These packages, and many more that are useful for scientific data analysis, can be installed most easily using so-called Python distributions
. Two recommendable Python distributions are
WinPython for Windows only.
Anaconda by Continuum, for Windows, Mac, and Linux.
Both distributions are freely available, and neither requires administrator rights. A list of links for the downloads of these distributions, as well as recommendations for getting started with Python for scientific applications, can be found in Appendix G.
The relationships between the basic scientific Python packages used by scikit-kinematics is shown in Fig. 1.4, as well as the role of Jupyter and IPython which are used for interactive data analysis.
The programs included in this book have been tested with Python 3.6.3 under Windows and Linux using the following package versions:
Jupyter 1.0.0 ... Framework for interactive work.
IPython 6.2.1 ... Python kernel for interactive work.
numpy 1.13.3 ... For working with vectors and arrays.
scipy 1.0.1 ... All the essential scientific algorithms, including those for basic statistics.
matplotlib 2.2.2 ... The de-facto standard package for plotting and visualization.
pandas 0.22.0 ... Adds DataFrames
, which are easy to use data structures, to Python.
Fig. 1.4
The structure of the most important Python packages for 3-D kinematics. The standard scientific packages are written in black; more specialized packages are labeled in gray. sympy will be used here for working with symbolic matrices
Building on this basis, the Python package scikit-kinematics is intended to facilitate the development of programs for the analysis of spatial data. It can be downloaded from https://github.com/thomas-haslwanter/scikit-kinematics and is documented under http://work.thaslwanter.at/skinematics/html/. The easiest way to install it is by typing
../images/459989_1_En_1_Chapter/459989_1_En_1_Figa_HTML.pngon the command line. Updates can be performed with
../images/459989_1_En_1_Chapter/459989_1_En_1_Figb_HTML.pngIn the Python applications, scikit-kinematics is for brevity referred to as skinematics (Fig. 1.5).
../images/459989_1_En_1_Chapter/459989_1_En_1_Fig5_HTML.pngFig. 1.5
The scikit-kinematics logo
1.3.2 Matlab 3-D Kinematics Toolbox
Matlab is the 800-pound gorilla in the room when it comes to scientific computing. It has been around for a long time (I have used Matlab for more than 20 years) and is well established in many academic and industrial environments. In contrast to Python, which is a general programming language, Matlab is tailored to numerical applications. It is a fully developed integrated development environment (IDE) and has a wealth of Toolboxes
available, which are extensions for dedicated programming applications.
The downsides of Matlab are that it is commercial, expensive for those outside an academic environment, and that—compared to Python—it is a rather old programming language. Matlab’s object-oriented programming scheme is unwieldy and overly complex.
The 3-D Kinematics toolbox accompanying this book can be downloaded from the Matlab Kinematics Toolbox⁵ and can be installed simply by opening the file 3D_Kinematics.mltbx in Matlab. The toolbox files will then be copied to the correct locations in Matlab, and the corresponding search path added to the MATLABPATH.
1.3.3 Source Code for Python and Matlab
The Python package scikit-kinematics and the Matlab Kinematic toolbox are shared via https://github.com/thomas-haslwanter.
A frequent source of confusion is the difference between git
and github
. git is a version control program
, whereas github is a website.
Version control programs (such as git), also known as revision control programs, allow tracking only the modifications, and storing previous versions of the source code under development. If the latest changes cause a new problem, it is then easy to compare them to earlier versions, and to restore the source code to a previous state. Git can be used locally, with very little overhead. And it can also be used to maintain and manage