<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1090174</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2023.1090174</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Vision-based particle filtering for quad-copter attitude estimation using multirate delayed measurements</article-title>
<alt-title alt-title-type="left-running-head">Sadeghzadeh-Nokhodberiz et&#xa0;al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2023.1090174">10.3389/frobt.2023.1090174</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>Nargess</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1591220/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Iranshahi</surname>
<given-names>Mohammad</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Montazeri</surname>
<given-names>Allahyar</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1596788/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Electrical and Computer Engineering Department</institution>, <institution>Qom University of Technology</institution>, <addr-line>Qom</addr-line>, <country>Iran</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Engineering Department</institution>, <institution>Lancaster University</institution>, <addr-line>Lancaster</addr-line>, <country>United Kingdom</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/226752/overview">Holger Voos</ext-link>, University of Luxembourg, Luxembourg</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2188198/overview">Maral Partovibakhsh</ext-link>, Islamic Azad University System, Iran</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2215139/overview">Claudio Cimarelli</ext-link>, University of Luxembourg, Luxembourg</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Allahyar Montazeri, <email>a.montazeri@lancaster.ac.uk</email>; Nargess Sadeghzadeh-Nokhodberiz, <email>sadeghzadeh@qut.ac.ir</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>30</day>
<month>05</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>10</volume>
<elocation-id>1090174</elocation-id>
<history>
<date date-type="received">
<day>05</day>
<month>11</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>03</day>
<month>05</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Sadeghzadeh-Nokhodberiz, Iranshahi and Montazeri.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Sadeghzadeh-Nokhodberiz, Iranshahi and Montazeri</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>In this paper, the problem of attitude estimation of a quad-copter system equipped with a multi-rate camera and gyroscope sensors is addressed through extension of a sampling importance re-sampling (SIR) particle filter (PF). Attitude measurement sensors, such as cameras, usually suffer from a slow sampling rate and processing time delay compared to inertial sensors, such as gyroscopes. A discretized attitude kinematics in Euler angles is employed where the gyroscope noisy measurements are considered the model input, leading to a stochastic uncertain system model. Then, a multi-rate delayed PF is proposed so that when no camera measurement is available, the sampling part is performed only. In this case, the delayed camera measurements are used for weight computation and re-sampling. Finally, the efficiency of the proposed method is demonstrated through both numerical simulation and experimental work on the DJI Tello quad-copter system. The images captured by the camera are processed using the ORB feature extraction method and the homography method in Python-OpenCV, which is used to calculate the rotation matrix from the Tello&#x2019;s image frames.</p>
</abstract>
<kwd-group>
<kwd>UAV</kwd>
<kwd>quad-copter</kwd>
<kwd>particle filtering</kwd>
<kwd>multi-rate sensor fusion</kwd>
<kwd>attitude estimation</kwd>
<kwd>camera</kwd>
<kwd>gyroscope (gyro)</kwd>
</kwd-group>
<contract-num rid="cn001">EP/V027379/1</contract-num>
<contract-sponsor id="cn001">Engineering and Physical Sciences Research Council<named-content content-type="fundref-id">10.13039/501100000266</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Autonomous quad-copter UAVs are increasingly employed in various industries, especially in applications with extreme environments where humans cannot access narrow, high altitude, far reaching, and confined spaces for further operation and inspection (<xref ref-type="bibr" rid="B18">Montazeri&#xa0;et&#xa0;al., 2021)</xref>. Of particular importance is the ability of quad-copters to accurately maneuver in hazardous and unstructured environments such as those existing in the nuclear decommissioning applications. One of the challenging tasks for navigation of drones in such GPS-denied environments is finding the exact position and orientation of the quad-copters for feedback control and characterization of the environment (<xref ref-type="bibr" rid="B3">Burrell&#xa0;et&#xa0;al., 2018)</xref>. Nowadays, the inertial navigation system (INS) including inertial measurement units (IMU) is widely used for navigation of UAVs. Toward this, first of all, a robust and reliable attitude estimator is required which should be able to execute on low-cost computational hardware and using measurements from light-weight sensors (<xref ref-type="bibr" rid="B1">Bassolillo&#xa0;et&#xa0;al., 2022)</xref>.</p>
<p>Attitude estimation is the procedure of estimating orientation of the vehicle with respect to a reference frame using sensory measurements such as inertial and attitude sensors. Although least square error (LSE) and maximum likelihood (ML) approaches can be classified as early attitude estimation methods, model-based Bayesian approaches are most common and precise approaches can be found in <xref ref-type="bibr" rid="B8">Dhahbane&#xa0;et&#xa0;al. (2021)</xref>. Model-based approaches normally employ vehicle kinematics and/or dynamics to provide a prediction from the orientation, and the predicted attitude is updated through the sensory measurements (<xref ref-type="bibr" rid="B30">Sadeghzadeh-Nokhodberiz and Poshtan, 2016</xref>; <xref ref-type="bibr" rid="B25">Ozaki and Kuroda, 2021)</xref>. There are an increasing number of research studies devoted to attitude estimation (<xref ref-type="bibr" rid="B19">Moutinho&#xa0;et&#xa0;al., 2015</xref>; <xref ref-type="bibr" rid="B24">Nokhodberiz&#xa0;et&#xa0;al., 2019</xref>; <xref ref-type="bibr" rid="B12">Liang, 2017)</xref>. The commonly used stochastic approaches are the Kalman filter (KF) and extended Kalman filter (EKF) (<xref ref-type="bibr" rid="B23">Nemati and Montazeri, 2019)</xref>. However, in KF-based methods (KF, EKF, and UKF), only Gaussian noise processes are considered and EKF suffers from the linearization issue. Therefore, in some research studies, particle filters (PF) are used to overcome the problem in attitude estimation of UAVs (<xref ref-type="bibr" rid="B5">Cheng and Crassidis, 2004</xref>; <xref ref-type="bibr" rid="B32">Sadeghzadeh-Nokhodberiz&#xa0;et&#xa0;al., 2014b)</xref>. The gyroscope measurements in the body frame are normally incorporated in the attitude kinematics to obtain the orientation in the inertial frame. The gyroscope noises can be modeled through a probability distribution function, making the kinematics a stochastic model as it is employed as an input vector in it. Therefore, it is necessary to employ a stochastic approach such as PF that works directly with the non-linear dynamic model of the system. PFs are appropriate for attitude estimation of quad-copters due to non-linear and non-stochastic nature of the system model. PF is an optimal non-linear filtering method in which the posterior probability density function (pdf) is approximated through sample point (particles) generation as it is not possible to be computed analytically for non-Gaussian systems. This posterior pdf is required for Bayesian minimum mean square error (MMSE) estimation, and it is the main advantage of PF over other non-linear Bayesian MMSE estimators such as EKF (<xref ref-type="bibr" rid="B29">Sadeghzadeh-Nokhodberiz and Meskin, 2020)</xref>.</p>
<p>Additional sensors such as cameras are commonly employed together with the low-cost inertial sensors. This greatly helps mitigate the effect of errors and noises in the gyroscope measurement and facilitates designing a vision-based navigation technique (<xref ref-type="bibr" rid="B31">Sadeghzadeh-Nokhodberiz&#xa0;et&#xa0;al., 2014a</xref>; <xref ref-type="bibr" rid="B26">Sadeghzadeh-Nokhodberiz&#xa0;et&#xa0;al., 2014c</xref>). Although cameras can provide highly accurate measurements from the quad-copter orientation compared to low-cost gyroscopes, they suffer from a slow sampling rate and delay problems with respect to the gyroscope measurements due to heavy computation load required. In the vision-based navigation, feature points extracted from the camera images are tracked and the camera motion, mounted on the UAV, is related to the locations of tracked planar feature points in the image plane using the homography relationship (<xref ref-type="bibr" rid="B34">Wang&#xa0;et&#xa0;al., 2013</xref>; <xref ref-type="bibr" rid="B35">White and Beard, 2019)</xref>. Homography-based state estimation of a quad-copter system using EKF is presented in <xref ref-type="bibr" rid="B4">Chavez&#xa0;et&#xa0;al. (2017)</xref>. The images captured by cameras should be highly processed for feature extraction including detection, description, and matching (<xref ref-type="bibr" rid="B7">Csurka&#xa0;et&#xa0;al., 2018)</xref>. Although a recently developed ORB (<xref ref-type="bibr" rid="B27">Rublee&#xa0;et&#xa0;al., 2011)</xref> method can significantly reduce the processing time compared to the popular SIFT (<xref ref-type="bibr" rid="B14">Lowe, 2004)</xref> and SURF (<xref ref-type="bibr" rid="B2">Bay&#xa0;et&#xa0;al., 2006)</xref> approaches, it still needs almost 33&#xa0;m for feature extraction per image (<xref ref-type="bibr" rid="B20">Mur-Artal&#xa0;et&#xa0;al., 2015)</xref>. This processing time not only leads to a much slower sampling rate but also the measured values are received with a significant delay for the attitude estimation procedure.</p>
<p>The problem of multi-rate delayed state estimation has been studied in <xref ref-type="bibr" rid="B13">Lin and Sun (2021)</xref>, <xref ref-type="bibr" rid="B6">Comellini&#xa0;et&#xa0;al. (2020)</xref>, <xref ref-type="bibr" rid="B9">Fatehi and Huang (2017)</xref>, and <xref ref-type="bibr" rid="B10">Khosravian&#xa0;et&#xa0;al. (2015)</xref>. <xref ref-type="bibr" rid="B13">Lin and Sun (2021)</xref> and <xref ref-type="bibr" rid="B10">Khosravian&#xa0;et&#xa0;al. (2015)</xref> proposed a cascaded output predictor and an attitude observer where the effect of sampling and delays are compensated in the predictor. The delayed measurements are extrapolated to present time using past and present estimates of the KF in <xref ref-type="bibr" rid="B11">Larsen&#xa0;et&#xa0;al. (1998)</xref>, where an optimal gain is derived for this extrapolated measurement. In <xref ref-type="bibr" rid="B13">Lin and Sun (2021)</xref>, the system with delayed and multi-rate measurements is transformed into a delay-free and single-rate system using a state iterating method, and a non-augmented recursive optimal linear state filter is presented for the system by utilizing projection theory. In <xref ref-type="bibr" rid="B9">Fatehi and Huang (2017)</xref>, different KFs are employed for each type of measurement and the estimates are fused considering the correlation between them in the next step. The cross-covariance matrix between the estimation errors of KFs is obtained iteratively to be employed in the fusion process. Due to the non-linear attitude kinematics with respect to the Euler angles and its stochastic nature due to the incorporation of the gyroscope noise in the model, the PF is an appropriate choice for the attitude estimation. It is worth mentioning that as long as staying away from singularity points (&#xb1;90&#x2009;deg rotations of pitch angle), the Euler angle representation of the attitude is preferred to the quaternion representation as the quaternion must obey its normalization constraint, which can cause issues in the filtering (<xref ref-type="bibr" rid="B17">Markley and Crassidis, 2014)</xref>. In <xref ref-type="bibr" rid="B1">Bassolillo&#xa0;et&#xa0;al. (2022)</xref>, a KF-based sensor fusion algorithm, using a low-cost navigation platform that contains an inertial measurement unit (IMU), five ultrasonic ranging sensors, and an optical flow camera is proposed to improve navigation of a UAV system in indoor GPS-denied environments. A multi-rate version of the EKF is employed to deal with the use of heterogeneous sensors with different sampling rates and the presence of non-linearity in the model.</p>
<p>To the best of the authors&#x2019; knowledge, the problem of PF-based attitude estimation using PF with multi-rate delayed sensors has not yet been studied in the literature. Accordingly, in this paper, a multi-rate delayed PF is proposed to estimate the orientation with a discretized attitude kinematics in Euler angles. It is shown that the corresponding weights of the generated particles are the likelihood of generally non-Gaussian delayed camera measurements. The result is then validated through simulation and experiments on a UAV quad-copter system. For the experimental work, a DJI Tello quad-copter system is employed where the images are processes using the ORB feature extraction method and Python-OpenCV is employed to calculate the rotation matrix using the homography approach.</p>
<p>The organization of the paper proceeds as follows. The system and measurement models including the attitude kinematic model, and gyroscope and camera measurement models are presented in <xref ref-type="sec" rid="s2">Section&#xa0;2</xref>. <xref ref-type="sec" rid="s3">Section&#xa0;3</xref> provides with the PF with multi-rate delayed measurements. Simulation results are presented in <xref ref-type="sec" rid="s4">Section&#xa0;4</xref> to demonstrate the accuracy of the presented PF. The experimental data gathered from DJI Tello quad-copter systems are analyzed in <xref ref-type="sec" rid="s5">Section&#xa0;5</xref>. Finally, conclusion is provided in <xref ref-type="sec" rid="s6">Section&#xa0;6</xref>.</p>
</sec>
<sec id="s2">
<title>2 System and measurement models</title>
<sec id="s2-1">
<title>2.1 System model</title>
<p>The quad-copter attitude kinematics which represents the relationship between angular velocities in the body and inertial frames are described as follows <xref ref-type="bibr" rid="B28">Sadeghzadeh-Nokhodberiz&#xa0;et&#xa0;al. (2021)</xref>:<disp-formula id="e1">
<mml:math id="m1">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>tan</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>q</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>tan</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>r</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>q</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>r</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mi>q</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mi>r</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(1)</label>
</disp-formula>where <bold>
<italic>x</italic>
</bold>(<italic>t</italic>) &#x3d; [<italic>&#x3d5;</italic>(<italic>t</italic>) <italic>&#x3b8;</italic>(<italic>t</italic>) <italic>&#x3c8;</italic>(<italic>t</italic>)]<sup>
<italic>T</italic>
</sup> is the attitude vector of quad-copter which is defined in the inertial frame where roll angle <italic>&#x3d5;</italic>(<italic>t</italic>), pitch angle <italic>&#x3b8;</italic>(<italic>t</italic>), and yaw angle <italic>&#x3c8;</italic>(<italic>t</italic>) determine rotations around <italic>x</italic>-axis, <italic>y</italic>-axis, and <italic>z</italic>-axis, respectively. In addition, <italic>p</italic>(<italic>t</italic>), <italic>q</italic>(<italic>t</italic>), and <italic>r</italic>(<italic>t</italic>) are angular velocities rotating around <italic>x</italic>-axis, <italic>y</italic>-axis, and <italic>z</italic>-axis in the body frame, respectively, and <italic>t</italic> refers to time.</p>
</sec>
<sec id="s2-2">
<title>2.2 Measurement models</title>
<sec id="s2-2-1">
<title>2.2.1 The gyroscope measurement model</title>
<p>The gyroscope measurement model can be written as follows:<disp-formula id="e2">
<mml:math id="m2">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf1">
<mml:math id="m3">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and <inline-formula id="inf2">
<mml:math id="m4">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> are the vectors of measured and true angular velocities in the body frame at sample time <italic>k</italic> and <bold>
<italic>&#x3c9;</italic>
</bold>
<sub>
<italic>b</italic>
</sub> &#x3d; [<italic>p&#xa0;q&#xa0;r</italic>]<sup>
<italic>T</italic>
</sup> (see Eq.&#xa0;<xref ref-type="disp-formula" rid="e1">1</xref>). Moreover, <inline-formula id="inf3">
<mml:math id="m5">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is a zero-mean generally non-Gaussian measurement noise with a known probability density function (pdf) with the covariance matrix of <bold>
<italic>R</italic>
</bold>
<sub>
<italic>&#x3c9;</italic>
</sub>.</p>
</sec>
<sec id="s2-3">
<title>2.2.2 The camera measurement model</title>
<p>Homography is used to obtain the measurement model of camera by providing the transformation (including scale, rotation, and translation) between two images. Toward this, two consecutive frames from a camera mounted on a moving body viewing a fixed point <italic>P</italic> are considered. The fixed point is considered a feature extracted from the images using some feature extraction approaches such as ORB (<xref ref-type="bibr" rid="B27">Rublee&#xa0;et&#xa0;al., 2011)</xref>.</p>
<p>singular value decomposition (SVD) is then performed with the feature pairs that pass the RANSAC test to calculate the homography matrix <italic>H</italic>. Let <italic>m</italic>
<sub>1</sub> and <italic>m</italic>
<sub>2</sub> be the two projections of point <italic>P</italic> in the camera coordinates with <italic>R</italic>
<sub>12</sub> and <italic>t</italic>
<sub>12</sub> as the corresponding rotation matrix and translation vector, respectively, in the camera frame transforming <italic>m</italic>
<sub>1</sub> to <italic>m</italic>
<sub>2</sub> (see <xref ref-type="fig" rid="F1">Figure&#xa0;1</xref>). In <xref ref-type="fig" rid="F1">Figure&#xa0;1</xref>, <italic>d</italic> is the Euclidean distance between the plane <italic>&#x3c0;</italic>, with the unit normal vector <italic>n</italic>, and position 1. The relationships between the homography matrix and the transformation between two images can be found in <xref ref-type="bibr" rid="B34">Wang&#xa0;et&#xa0;al. (2013)</xref>. Finally, through the SVD of the homography matrix, <italic>R</italic>
<sub>12</sub> and <italic>t</italic>
<sub>12</sub> can be obtained which can be transformed to the direction cosine matrix (DCM), <italic>R</italic>, iteratively. The Euler angles can be then computed using the DCM.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Same fixed point, <italic>P</italic>, viewed from two different positions of a moving quad-copter for the homography purpose <xref ref-type="bibr" rid="B34">Wang&#xa0;et&#xa0;al. (2013)</xref>.</p>
</caption>
<graphic xlink:href="frobt-10-1090174-g001.tif"/>
</fig>
<p>Therefore, the camera measurement model without delay consideration can be represented as<disp-formula id="e3">
<mml:math id="m6">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(3)</label>
</disp-formula>where <bold>
<italic>&#x3bd;</italic>
</bold>
<sub>
<italic>e</italic>
</sub> is a zero-mean generally non-Gaussian measurement noise with the covariance matrix of <bold>
<italic>R</italic>
</bold>
<sub>
<italic>e</italic>
</sub>. It is worth mentioning that the index <italic>e</italic> refers to the Euler angles.</p>
</sec>
</sec>
</sec>
<sec id="s3">
<title>3 The proposed multirate particle filter</title>
<p>In this section, a PF for the system and measurement models introduced in the previous section is presented when the sensors collect data using a multi-rate sampling frequency procedure.</p>
<sec id="s3-1">
<title>3.1 The general model</title>
<p>Toward this, let the gyroscope and camera sampling times in seconds be represented with <italic>T</italic> and <italic>sT</italic>, respectively, with <inline-formula id="inf4">
<mml:math id="m7">
<mml:mi>s</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi>
</mml:math>
</inline-formula>. Moreover, we consider the camera processing delay time as <italic>dT</italic> with <inline-formula id="inf5">
<mml:math id="m8">
<mml:mi>d</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi>
</mml:math>
</inline-formula> and <italic>d</italic> &#x3c; <italic>s</italic>, as depicted in <xref ref-type="fig" rid="F2">Figure&#xa0;2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Camera sampling and delay scenario.</p>
</caption>
<graphic xlink:href="frobt-10-1090174-g002.tif"/>
</fig>
<p>Moreover, a discretized form of the kinematic model presented in Eq.&#xa0;<xref ref-type="disp-formula" rid="e1">1</xref> is also considered with the general non-linear discrete state space model as follows:<disp-formula id="e4">
<mml:math id="m9">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(4)</label>
</disp-formula>where <bold>
<italic>u</italic>
</bold>
<sub>
<italic>k</italic>
</sub> &#x3d; [<italic>p</italic>(<italic>k</italic>)<italic>q</italic>(<italic>k</italic>)<italic>r</italic>(<italic>k</italic>)]<sup>
<italic>T</italic>
</sup> and <bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>
</sub> is defined in Equation&#xa0;<xref ref-type="disp-formula" rid="e1">1</xref> and <bold>
<italic>&#x3d6;</italic>
</bold>
<sub>
<italic>k</italic>&#x2212;1</sub> is the additive process noise resulting from the gyroscope measurement noise <bold>
<italic>&#x3bd;</italic>
</bold>
<sub>
<italic>&#x3c9;</italic>
</sub>(<italic>k</italic>) with the same distribution but a scaled covariance matrix <bold>
<italic>Q</italic>
</bold>
<sub>
<italic>x</italic>
</sub>. The index <italic>k</italic> refers to the sampling instant.</p>
<p>In other words, the components of the discretized model of (<xref ref-type="disp-formula" rid="e4">4</xref>) are as follows:<disp-formula id="e5">
<mml:math id="m10">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(5)</label>
</disp-formula>where <inline-formula id="inf6">
<mml:math id="m11">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>tan</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>tan</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-2">
<title>3.2 The modified particle filter</title>
<p>The general approach in the PF is to compute the posterior pdf using the Monte Carlo (MC) method used in the Bayesian estimation of the stochastic process <bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>
</sub> by having the measurement history <bold>
<italic>y</italic>
</bold>
<sub>1:<italic>k</italic>
</sub> &#x3d; {<bold>
<italic>y</italic>
</bold>
<sub>1</sub>, &#x2026;&#xa0;, <bold>
<italic>y</italic>
</bold>
<sub>
<italic>k</italic>
</sub>} and the current sample of input at time <italic>k</italic>. The goal in standard PF is to approximate the posterior pdf <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>
</sub>&#x7c;<bold>
<italic>y</italic>
</bold>
<sub>1:<italic>k</italic>
</sub>) by generating particles from a known distribution and estimating the target pdf through attribution of the normalized weights for each particle.</p>
<p>However, in case of this study as explained earlier, the measurements are delayed and a slower sampling rate is considered for the camera compared with the data measured from the gyroscope. Therefore, two different cases may happen at each sampling step. The delayed camera measurements are arrived or there are no camera measurements. In this section, the PF for these two cases are derived.</p>
<sec id="s3-3">
<title>3.2.1 Case I: camera measurement available</title>
<p>In this case, as depicted in <xref ref-type="fig" rid="F2">Figure&#xa0;2</xref>, the delayed camera measurement is available at sample time <italic>k</italic>. Therefore, the posterior distribution <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>1:<italic>k</italic>
</sub>&#x7c;<bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,1:<italic>s</italic>:<italic>k</italic>&#x2212;<italic>d</italic>
</sub>) should be approximated using the MC method such that <bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,1:<italic>s</italic>:<italic>k</italic>&#x2212;<italic>d</italic>
</sub> refers to the historical data collected by camera every <italic>s</italic> sampling instant and with the initial time delay of <italic>d</italic>. Here, the proposal distribution <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>
</sub>&#x7c;<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>&#x2212;1</sub>) is employed for the particle generation. By applying the Bayes&#x2019; rule and the Markov property, it can be concluded that<disp-formula id="e6">
<mml:math id="m12">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="0.7em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(6)</label>
</disp-formula>Here, <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>1:<italic>k</italic>&#x2212;<italic>d</italic>
</sub>&#x7c;<bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,1:<italic>s</italic>:<italic>k</italic>&#x2212;<italic>d</italic>
</sub>) using the Bayes&#x2019; rule and statistical independencies can be rewritten as follows:<disp-formula id="e7">
<mml:math id="m13">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>p</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x221d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>The term <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>1:<italic>k</italic>&#x2212;<italic>d</italic>
</sub>&#x7c;<bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,1:<italic>s</italic>:<italic>k</italic>&#x2212;<italic>d</italic>&#x2212;<italic>s</italic>
</sub>) is also extended as follows:<disp-formula id="e8">
<mml:math id="m14">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mspace width="0.17em"/>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>Using Eqs&#xa0;<xref ref-type="disp-formula" rid="e6">6</xref>&#x2013;<xref ref-type="disp-formula" rid="e8">8</xref>, the weight function is computed as follows:<disp-formula id="e9">
<mml:math id="m15">
<mml:mi>w</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>w</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>The weight functions are evaluated for the particles generated using the proposal distribution <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>
</sub>&#x7c;<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>&#x2212;1</sub>) and using the system probabilistic model represented by the kinematics model in Eq.&#xa0;<xref ref-type="disp-formula" rid="e1">1</xref>. So the particles <inline-formula id="inf7">
<mml:math id="m16">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> are generated where <italic>N</italic> refers to the number of particles. Since re-sampling should be carried out as the next step, the weights of the particles at sample time <italic>k</italic> &#x2212; <italic>s</italic> are transformed to <inline-formula id="inf8">
<mml:math id="m17">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> after re-sampling with re-sampled particles of <inline-formula id="inf9">
<mml:math id="m18">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>.</p>
<p>Therefore, the normalized weights for re-sampling for each particle are computed as follows:<disp-formula id="e10">
<mml:math id="m19">
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:munderover accentunder="false" accent="true">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
</sec>
<sec id="s3-4">
<title>3.2.2 No camera measurement available</title>
<p>In this case, no camera data are available at sample time <italic>k</italic>. Therefore, <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>1:<italic>k</italic>
</sub>&#x7c;<bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,1:<italic>s</italic>:<italic>k</italic>&#x2212;<italic>d</italic>&#x2212;<italic>s</italic>
</sub>) should be approximated. Therefore, the weight function is <italic>w</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>
</sub>) &#x3d; <italic>w</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>
<italic>k</italic>&#x2212;<italic>s</italic>
</sub>) as it is proved in the following. Since the last received measurement from the camera at the sampling instant <italic>k</italic> is <bold>
<italic>y</italic>
</bold>
<sub>
<italic>k</italic>&#x2212;<italic>d</italic>&#x2212;<italic>s</italic>
</sub> and received at <italic>k</italic> &#x2212; <italic>s</italic> sampling instant, therefore<disp-formula id="e11">
<mml:math id="m20">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mspace width="0.17em"/>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="-0.2em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(11)</label>
</disp-formula>where the term <italic>p</italic>&#xa0;(<bold>
<italic>x</italic>
</bold>
<sub>1:<italic>k</italic>&#x2212;<italic>d</italic>
</sub>&#x7c;<bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,1:<italic>s</italic>:<italic>k</italic>&#x2212;<italic>d</italic>&#x2212;<italic>s</italic>
</sub>) is computed in Eq.&#xa0;<xref ref-type="disp-formula" rid="e8">8</xref> which states that the corresponding weight of the <italic>i</italic>
<sup>
<italic>th</italic>
</sup> particle <inline-formula id="inf10">
<mml:math id="m21">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is <inline-formula id="inf11">
<mml:math id="m22">
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and after normalization and re-sampling the corresponding weight of each particle would become <inline-formula id="inf12">
<mml:math id="m23">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>.</p>
<p>In order to clarify the proposed method, it is presented in Pseudo code in <xref ref-type="table" rid="T1">Table&#xa0;1</xref>.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Pseudo code corresponding to the proposed PF for attitude estimation.</p>
</caption>
<table>
<tbody valign="top">
<tr>
<td align="left">
<bold>Step 0</bold>: <italic>Initialization</italic>: Sample initial particles, that is, <inline-formula id="inf13">
<mml:math id="m24">
<mml:msubsup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, using a known initial distributions of states (<italic>p</italic>&#xa0;(<italic>x</italic>
<sub>0</sub>)), where <italic>x</italic>
<sub>0</sub> &#x223c; <italic>p</italic>&#xa0;(<italic>x</italic>
<sub>0</sub>)</td>
</tr>
<tr>
<td align="left">At the time instant <italic>k</italic>
</td>
</tr>
<tr>
<td align="left">
<bold>Step 1</bold>: <italic>Prior estimate</italic>: Generate the prior state particles <inline-formula id="inf14">
<mml:math id="m25">
<mml:msubsup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> using the system model, that is, <inline-formula id="inf15">
<mml:math id="m26">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x223c;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, for <italic>i</italic> &#x3d; 1: <italic>N</italic>
</td>
</tr>
<tr>
<td align="left">In other words for the attitude system of <xref ref-type="disp-formula" rid="e4">(4)</xref> and <xref ref-type="disp-formula" rid="e5">5</xref>: <inline-formula id="inf16">
<mml:math id="m27">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:math>
</inline-formula> where <inline-formula id="inf17">
<mml:math id="m28">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is the prior estimate at the time sample <italic>k</italic> and <inline-formula id="inf18">
<mml:math id="m29">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is the re-sampled posterior estimate at the time sample <italic>k</italic> &#x2212; 1 and <inline-formula id="inf19">
<mml:math id="m30">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf20">
<mml:math id="m31">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is the particle generated using a known pdf of <bold>
<italic>&#x3d6;</italic>
</bold>
<sub>
<italic>k</italic>&#x2212;1</sub> which is zero mean generally non-Gaussian noise with the covariance of <inline-formula id="inf21">
<mml:math id="m32">
<mml:msub>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<bold>Step 2</bold>: <italic>Posterior estimate</italic>: Compute <inline-formula id="inf22">
<mml:math id="m33">
<mml:msubsup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> as follows.</td>
</tr>
<tr>
<td align="left">
<bold>IF</bold> the camera measurement, <bold>
<italic>y</italic>
</bold>
<sub>
<italic>e</italic>,<italic>k</italic>&#x2212;<italic>d</italic>
</sub>, is available, the weights are computed using <xref ref-type="disp-formula" rid="e10">(10)</xref> and the particles are re-sampled to generate posterior estimates with equal weights of <inline-formula id="inf23">
<mml:math id="m34">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, that is, <inline-formula id="inf24">
<mml:math id="m35">
<mml:msubsup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<bold>ELSE</bold> let <inline-formula id="inf25">
<mml:math id="m36">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:math>
</inline-formula> with the corresponding weights of <inline-formula id="inf26">
<mml:math id="m37">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> for each sample</td>
</tr>
<tr>
<td align="left">
<bold>END</bold>
</td>
</tr>
<tr>
<td align="left">
<bold>Step 3</bold>: <italic>State estimation</italic>: Estimate the system states as <inline-formula id="inf27">
<mml:math id="m38">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
</sec>
<sec id="s4">
<title>4 Simulation results</title>
<p>In this section, simulation results are provided in the MATLAB/SIMULINK environment to show the efficiency of the proposed method. The simulated AR Drone Parrot 2.0 quad-copter is stabilized using a non-linear robust sliding mode control technique presented in <xref ref-type="bibr" rid="B21">Nemati and Montazeri (2018a)</xref> and <xref ref-type="bibr" rid="B22">Nemati and Montazeri (2018b)</xref>.The physical parameters of the quad-copter are listed as follows:<disp-formula id="equ1">
<mml:math id="m39">
<mml:mspace width="-3em"/>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>7.72</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
<mml:mspace width="0.28em"/>
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>7.64</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
<mml:mspace width="0.28em"/>
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>
<disp-formula id="equ2">
<mml:math id="m40">
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1031</mml:mn>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
<mml:mspace width="0.28em"/>
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1.8</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
<mml:mspace width="0.28em"/>
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2.5</mml:mn>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>
</p>
<p>In order to evaluate the performance of the proposed PF, different scenarios for delay and sampling rate values are considered. <xref ref-type="fig" rid="F3">Figure&#xa0;3A</xref> depicts the attitude estimation result using the gyro and camera measurements, and the results are compared with those obtained from the kinematics model when camera has no delay and the sampling rates are equal, that is, <italic>s</italic> &#x3d; 1 and <italic>d</italic> &#x3d; 1. <xref ref-type="fig" rid="F3">Figures&#xa0;3B,C</xref> are related to the cases with <italic>s</italic> &#x3d; 10, <italic>d</italic> &#x3d; 5 and <italic>s</italic> &#x3d; 100, <italic>d</italic> &#x3d; 50, respectively. It is obvious from the figures that although the camera slows the sampling rate and processing delay, and deteriorates the estimation accuracy, the proposed method is still successful to provide an accurate estimation.The root mean square error (RMSE) criterion is also employed to provide a numerical measure for a comparative study of the results. The results are summarized in <xref ref-type="table" rid="T2">Table&#xa0;2</xref>, which also confirms the aforementioned discussion.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Comparing attitude estimation of a drone for a different delay <italic>d</italic> and sampling time <italic>s</italic>, using measurement by a camera (dots), estimation by the proposed particle filter (blue dot-line), and the kinematic model (red dot-line). <bold>(A)</bold> No delay and sampling rate for both gyro and camera <bold>(B)</bold> Sampling rate of the camera is 10 times slower than the gyro and the delay in the camera measurements is 5 samples <bold>(C)</bold> Sampling rate of the camera is 100 times slower than the gyro and the delay in the camera measurements is 50 samples.</p>
</caption>
<graphic xlink:href="frobt-10-1090174-g003.tif"/>
</fig>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>RMSE for different scenarios.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Scenario</th>
<th align="left">
<italic>s</italic> &#x3d; 1, <italic>d</italic> &#x3d; 0</th>
<th align="left">
<italic>s</italic> &#x3d; 10, <italic>d</italic> &#x3d; 5</th>
<th align="left">
<italic>s</italic> &#x3d; 100, <italic>d</italic> &#x3d; 50</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">RMSE</td>
<td align="left">9.7001 &#xd7; 10<sup>&#x2212;6</sup>
</td>
<td align="left">3.2284 &#xd7; 10<sup>&#x2212;5</sup>
</td>
<td align="left">8.2284 &#xd7; 10<sup>&#x2212;5</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s5">
<title>5 Experimental results</title>
<p>The experimental results are provided using the DJI Tello drone illustrated in <xref ref-type="fig" rid="F4">Figure&#xa0;4</xref>. It is a small (99 <italic>mm</italic> &#xd7; 92.5 <italic>mm</italic> &#xd7; 41&#xa0;<italic>mm</italic>) and lightweight (80 <italic>g</italic>) drone with a maximum speed of 8&#xa0;<italic>m</italic>/<italic>s</italic> which uses the 2.4&#xa0;GHz Wi-Fi communication channel to be connected to a PC or laptop for sending and receiving telemetry data and commands, respectively. The drone is equipped with an IMU and a 720 <italic>p</italic> camera and an SDK is provided to help developers for implementation of their algorithms. Although the camera information is available, the SDK cannot read the IMU data and instead the results of internal positioning data can be read <xref ref-type="bibr" rid="B33">Steenbeek (2020)</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Image of the DJI Tello mini-drone.</p>
</caption>
<graphic xlink:href="frobt-10-1090174-g004.tif"/>
</fig>
<p>To perform the homography, first, the ORB feature matching method is applied on the frames captured by the DJI Tello camera. Toward this, the ORB algorithm uses the improved FAST algorithm, used in image feature point detection, the feature point screening, image pyramid building, and the feature point direction determination. After that, the ORB algorithm uses the improved BRIEF algorithm to generate binary feature point descriptors, and then, the descriptors are corrected using the steer BRIEF method to include the direction information. Finally, in the process of feature point matching, the points are matched based on their descriptor similarities. Toward this, the Brute-Force matcher method applied in Hamming distance is used to measure the distance between the binary descriptors and to choose the nearest ones as the matched points. Finally, by employing the PROSAC algorithm, the matched points with larger matching errors are rejected, which significantly improves the accuracy of matching <xref ref-type="bibr" rid="B15">Luo&#xa0;et&#xa0;al. (2019)</xref>.</p>
<p>For this purpose, in Python-OpenCV, we have employed the following command for the feature point detection and generation of descriptors:<disp-formula id="equ3">
<mml:math id="m41">
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>y</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
</p>
<p>The result of this command for a sample frame is depicted in <xref ref-type="fig" rid="F5">Figure&#xa0;5A</xref>. In addition, for feature matching, the following command is employed:<disp-formula id="equ4">
<mml:math id="m42">
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mi>f</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>where <italic>des</italic>1 and <italic>des</italic>2 are descriptor vectors of two successive frames. Finally, the matched points are sorted to find the best matches. The result of feature matching is depicted in <xref ref-type="fig" rid="F5">Figure&#xa0;5B</xref> for the same sample frames.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>ORB feature extraction results achieved by the drone camera in a hover position. <bold>(A)</bold> Feature extraction <bold>(B)</bold> Feature matching.</p>
</caption>
<graphic xlink:href="frobt-10-1090174-g005.tif"/>
</fig>
<p>To compute the homography matrix, the following command is employed:<disp-formula id="equ5">
<mml:math id="m43">
<mml:mi>H</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>H</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>where <italic>srcPoints</italic> are coordinates of the points in the original plane, which is a cell array of 2-element vectors {[<italic>x</italic>, <italic>y</italic>], &#x2026;} with single floating-point precision and <italic>dstPoints</italic> are coordinates of the points in the target plane, of the same size and type as <italic>srcPoints</italic>. Now, in order to compute the DCM from the computed homography matrix, the following command is employed:<disp-formula id="equ6">
<mml:math id="m44">
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo>.</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>H</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>y</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>
</p>
<p>Here, <italic>H</italic> is the input homography matrix between two images, <italic>K</italic> is the input camera intrinsic matrix, <italic>Rs</italic> are array of rotation matrices, <italic>Ts</italic> are array of translation matrices, and <italic>Ns</italic> are array of plane normal matrices. In addition, <italic>n</italic> is the number of possible solutions and returned as the function output.The set of four solutions is returned using this command which can be reduced to two or one using the method explained in <xref ref-type="bibr" rid="B16">Malis and Vargas (2007)</xref>. Reducing the number of solutions to two can be achieved by using additional constraints. For this purpose, a set of reference image points <italic>p</italic>&#x2a; is selected and by using the camera intrinsic matrix <italic>K</italic>, the points are projected using the relation as follows:<disp-formula id="equ7">
<mml:math id="m45">
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>
</p>
<p>In this case, the valid solutions are those satisfying the projection inequality as follows for all points in the plane determined by the normal vector <italic>m</italic>&#x2a; and <italic>n</italic>&#x2a; is the normal vector of the corresponding plane<disp-formula id="equ8">
<mml:math id="m46">
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>
</p>
<p>The frame rate of the camera is 30 frames per sec, and we have processed the frames on an 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.8&#xa0;GHz processor. The results of the attitude estimation using the proposed PF compared to the camera homography (measurement results) and the positioning results, recorded by DJI Tello, are depicted in <xref ref-type="fig" rid="F6">Figure&#xa0;6</xref>. It is worth mentioning that due to experimental limitations the sampling time and delay in the recorded experimental data have not been constant, but they are known. However, the delay caused by the camera processing time has always been less than these varying sampling periods. Therefore, the proposed approach is applicable to the problem at hand. In other words, the camera frames are sampled after the results of the ORB and homography procedures of the last sampled frames are available. It took on average 0.03&#xa0;s for processing of each frame for our processor and 0.02&#xa0;s for the ORB feature extraction and matching, and the homography procedure only needs 4 &#xd7; 10<sup>&#x2212;4</sup>&#xa0;s. The sampling rate of the positioning procedure on average is 17 &#xd7; 10<sup>&#x2212;4</sup>&#xa0;s. Therefore, on average <italic>d</italic> &#x3d; 30 and <italic>s</italic> &#x3d; 40. In other words, the sampling rate of the camera is 0.068&#xa0;s, and thus, only one frame is missed due to the frame rate of 30 frames per sec. Accordingly, the processing delay of the camera information is less than the sampling time of the camera. Although we have processed the gathered data from the camera offline, it is also possible to be processed online. In other words, sampling two successive frames is fast enough such that still there exists features to be matched between two sample frames (only one frame is missed). Moreover, in practical implementation of the particle filter estimation algorithm, since the IMU data are not directly available for measurement, the gathered positioning data by camera are used for the particle generation. This is replaced by the kinematic model used in the simulation results.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Attitude estimation <italic>versus</italic> the experimental data from the DJI Tello with varying <italic>d</italic> and <italic>s</italic>.</p>
</caption>
<graphic xlink:href="frobt-10-1090174-g006.tif"/>
</fig>
</sec>
<sec sec-type="conclusion" id="s6">
<title>6 Conclusion</title>
<p>An extension of the sampling importance re-sampling (SIR) particle filter (PF) was proposed in this paper to solve the problem of attitude estimation of a quad-copter system equipped with a multi-rate camera and gyroscope sensors. In the proposed PF, the delayed camera measurements are used for weight computation and re-sampling and when no camera measurement is available, only the sampling is performed. It was shown through simulation and experimental data that the method is successful to estimate the attitude truly in the presence of delayed multi-rate camera measurements. In the experimental part, the ORB feature matching method was employed for image processing in Python-OpenCv, and after that, the DCM was computed using homography.As our future research topic, we intend to solve the problem of attitude estimation using particle filtering, in the presence of gyroscope faults and errors such as sensory biases and drifts, as well as delayed multi-rate camera measurements.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s7">
<title>Data availability statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s8">
<title>Author contributions</title>
<p>All authors contributed to the paper at different preparation stages. MI helped in conducting the experiments and preparation of results. NS-N contributed in writing the main manuscript, supervising the students, and generating ideas. AM contributed by developing the research ideas, editing and reviewing the manuscript, supervising the project, and providing fund for the research. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>Herewith, all funding resources to support this research are declared. The fund helps support open-access publication through the agreement between Lancaster University and Frontiers.</p>
</sec>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors, and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bassolillo</surname>
<given-names>S. R.</given-names>
</name>
<name>
<surname>D&#x2019;Amato</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Notaro</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Ariante</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Del Core</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Mattei</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Enhanced attitude and altitude estimation for indoor autonomous uavs</article-title>. <source>Drones</source> <volume>6</volume>, <fpage>18</fpage>. <pub-id pub-id-type="doi">10.3390/drones6010018</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bay</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Tuytelaars</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Van Gool</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2006</year>). &#x201c;<article-title>Surf: Speeded up robust features</article-title>,&#x201d; in <source>European conference on computer vision</source> (<publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>404</fpage>&#x2013;<lpage>417</lpage>.</citation>
</ref>
<ref id="B3">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Burrell</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>West</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Monk</surname>
<given-names>S. D.</given-names>
</name>
<name>
<surname>Montezeri</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Taylor</surname>
<given-names>C. J.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Towards a cooperative robotic system for autonomous pipe cutting in nuclear decommissioning</article-title>,&#x201d; in <conf-name>Proceedings of the 2018 UKACC 12th International Conference on Control (CONTROL)</conf-name>, <conf-loc>Sheffield, UK</conf-loc>, <conf-date>05-07 September 2018</conf-date>, <fpage>283</fpage>&#x2013;<lpage>288</lpage>. <pub-id pub-id-type="doi">10.1109/CONTROL.2018.8516841</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Chavez</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>L&#x2019;Heureux</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Prabhakar</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Clark</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Law</surname>
<given-names>W.-L.</given-names>
</name>
<name>
<surname>Prazenica</surname>
<given-names>R. J.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Homography-based state estimation for autonomous uav landing</article-title>,&#x201d; in <conf-name>Proceedings of the AIAA Information Systems-AIAA Infotech@ Aerospace</conf-name>, <conf-loc>Kissimmee, Florida</conf-loc>, <conf-date>8&#x2013;12 January 2018</conf-date>.</citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Cheng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Crassidis</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2004</year>). &#x201c;<article-title>Particle filtering for sequential spacecraft attitude estimation</article-title>,&#x201d; in <source>Aiaa guidance, navigation, and control conference and exhibit</source> (<publisher-loc>New York</publisher-loc>: <publisher-name>University at Buffalo</publisher-name>), <fpage>5337</fpage>.</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Comellini</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Casu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Zenou</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Dubanchet</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Espinosa</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Incorporating delayed and multirate measurements in navigation filter for autonomous space rendezvous</article-title>. <source>J. Guid. Control, Dyn.</source> <volume>43</volume>, <fpage>1164</fpage>&#x2013;<lpage>1172</lpage>. <pub-id pub-id-type="doi">10.2514/1.g005034</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Csurka</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Dance</surname>
<given-names>C. R.</given-names>
</name>
<name>
<surname>Humenberger</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>From handcrafted to deep local features</article-title>. <comment>
<italic>arXiv preprint arXiv:1807.10254</italic>
</comment>
</citation>
</ref>
<ref id="B8">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Dhahbane</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Nemra</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sakhi</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Attitude determination and attitude estimation in aircraft and spacecraft navigation a survey</article-title>,&#x201d; in <conf-name>In 2020 2nd International Workshop on Human-Centric Smart Environments for Health and Well-being (IHSH) (IEEE)</conf-name>, <conf-loc>Boumerdes, Algeria</conf-loc>, <conf-date>09-10 February 2021</conf-date>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fatehi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Kalman filtering approach to multi-rate information fusion in the presence of irregular sampling rate and variable measurement delay</article-title>. <source>J. Process Control</source> <volume>53</volume>, <fpage>15</fpage>&#x2013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.1016/j.jprocont.2017.02.010</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Khosravian</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Trumpf</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Mahony</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Hamel</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>Recursive attitude estimation in the presence of multi-rate and multi-delay vector measurements</article-title>,&#x201d; in <conf-name>Proceedings of the 2015 American Control Conference</conf-name>, <conf-loc>Chicago, IL</conf-loc>, <conf-date>July 1&#x2013;3</conf-date>.</citation>
</ref>
<ref id="B11">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Larsen</surname>
<given-names>T. D.</given-names>
</name>
<name>
<surname>Andersen</surname>
<given-names>N. A.</given-names>
</name>
<name>
<surname>Ravn</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Poulsen</surname>
<given-names>N. K.</given-names>
</name>
</person-group> (<year>1998</year>). &#x201c;<article-title>Incorporation of time delayed measurements in a discrete-time kalman filter</article-title>,&#x201d; in <conf-name>Proceedings of the 37th IEEE Conference on Decision and Control (Cat. No. 98CH36171)</conf-name>, <conf-loc>Tampa, FL, USA</conf-loc>, <conf-date>18-18 December 1998</conf-date>, <fpage>3972</fpage>&#x2013;<lpage>3977</lpage>.<volume>4</volume>
</citation>
</ref>
<ref id="B12">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Liang</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2017</year>). <source>Attitude estimation of quadcopter through extended kalman filter</source>. <publisher-name>Ph.D. thesis</publisher-name>, <publisher-name>Lehigh University</publisher-name>, <publisher-loc>Bethlehem, PA</publisher-loc>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Estimator for multirate sampling systems with multiple random measurement time delays</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>67</volume>, <fpage>1589</fpage>&#x2013;<lpage>1596</lpage>. <pub-id pub-id-type="doi">10.1109/tac.2021.3070299</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lowe</surname>
<given-names>D. G.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Distinctive image features from scale-invariant keypoints</article-title>. <source>Int. J. Comput. Vis.</source> <volume>60</volume>, <fpage>91</fpage>&#x2013;<lpage>110</lpage>. <pub-id pub-id-type="doi">10.1023/b:visi.0000029664.99615.94</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Overview of image matching based on orb algorithm</article-title>,&#x201d; in <source>Journal of physics: Conference series</source> (<publisher-loc>Bristol, United Kingdom</publisher-loc>: <publisher-name>IOP Publishing</publisher-name>), <volume>1237</volume>, <fpage>032020</fpage>.</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Malis</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Vargas</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2007</year>). <article-title>Deeper understanding of the homography decomposition for vision-based control</article-title>. <comment>Ph.D. thesis, INRIA</comment>
</citation>
</ref>
<ref id="B17">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Markley</surname>
<given-names>F. L.</given-names>
</name>
<name>
<surname>Crassidis</surname>
<given-names>J. L.</given-names>
</name>
</person-group> (<year>2014</year>). <source>Fundamentals of spacecraft attitude determination and control</source>. <publisher-name>Springer</publisher-name>.</citation>
</ref>
<ref id="B18">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Montazeri</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Can</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Imran</surname>
<given-names>I. H.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Chapter 3 - unmanned aerial systems: Autonomy, cognition, and control</article-title>. In <source>Unmanned aerial systems</source>, eds. <person-group person-group-type="editor">
<name>
<surname>Koubaa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Azar</surname>
<given-names>A. T.</given-names>
</name>
</person-group> (<publisher-name>Academic Press</publisher-name>), <publisher-loc>Massachusetts, United States</publisher-loc>. <pub-id pub-id-type="doi">10.1016/B978-0-12-820276-0.00010-8</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Moutinho</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Figueir&#xf4;a</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Azinheira</surname>
<given-names>J. R.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Attitude estimation in so (3): A comparative uav case study</article-title>. <source>J. Intelligent Robotic Syst.</source> <volume>80</volume>, <fpage>375</fpage>&#x2013;<lpage>384</lpage>. <pub-id pub-id-type="doi">10.1007/s10846-014-0170-2</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mur-Artal</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Montiel</surname>
<given-names>J. M. M.</given-names>
</name>
<name>
<surname>Tardos</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Orb-slam: A versatile and accurate monocular slam system</article-title>. <source>IEEE Trans. robotics</source> <volume>31</volume>, <fpage>1147</fpage>&#x2013;<lpage>1163</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2015.2463671</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nemati</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Montazeri</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2018a</year>). <article-title>Analysis and design of a multi-channel time-varying sliding mode controller and its application in unmanned aerial vehicles</article-title>. <source>IFAC-PapersOnLine</source> <volume>51</volume>, <fpage>244</fpage>&#x2013;<lpage>249</lpage>. <pub-id pub-id-type="doi">10.1016/j.ifacol.2018.11.549</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nemati</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Montazeri</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2018b</year>). &#x201c;<article-title>Design and development of a novel controller for robust attitude stabilisation of an unmanned air vehicle for nuclear environments</article-title>,&#x201d; in <conf-name>Proceedings of the 2018 UKACC 12th International Conference on Control (CONTROL)</conf-name>, <conf-loc>Sheffield, UK</conf-loc>, <conf-date>05-07 September 2018</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>373</fpage>&#x2013;<lpage>378</lpage>.</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nemati</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Montazeri</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Output feedback sliding mode control of quadcopter using imu navigation</article-title>. <source>2019 IEEE Int. Conf. Mechatronics (ICM)</source>. vol. <volume>1</volume>, <fpage>634</fpage>&#x2013;<lpage>639</lpage>. <pub-id pub-id-type="doi">10.1109/ICMECH.2019.8722899</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nokhodberiz</surname>
<given-names>N. S.</given-names>
</name>
<name>
<surname>Nemati</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Montazeri</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Event-triggered based state estimation for autonomous operation of an aerial robotic vehicle</article-title>. <source>IFAC-PapersOnLine</source> <volume>52</volume>, <fpage>2348</fpage>&#x2013;<lpage>2353</lpage>. <pub-id pub-id-type="doi">10.1016/j.ifacol.2019.11.557</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ozaki</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Kuroda</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Ekf-based real-time self-attitude estimation with camera dnn learning landscape regularities</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>6</volume>, <fpage>1737</fpage>&#x2013;<lpage>1744</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2021.3060442</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Rublee</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Rabaud</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Konolige</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Bradski</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2011</year>). &#x201c;<article-title>Orb: An efficient alternative to sift or surf</article-title>,&#x201d; in <conf-name>Proceedings of the 2011 International conference on computer vision</conf-name>, <conf-loc>Barcelona, Spain</conf-loc>, <conf-date>06-13 November 2011</conf-date>.</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Can</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Stolkin</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Montazeri</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Dynamics-based modified fast simultaneous localization and mapping for unmanned aerial vehicles with joint inertial sensor bias and drift estimation</article-title>. <source>IEEE Access</source> <volume>9</volume>, <fpage>120247</fpage>&#x2013;<lpage>120260</lpage>. <pub-id pub-id-type="doi">10.1109/access.2021.3106864</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Meskin</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Protocol-based particle filtering and divergence estimation</article-title>. <source>IEEE Syst. J.</source> <volume>15</volume>, <fpage>4537</fpage>&#x2013;<lpage>4544</lpage>. <pub-id pub-id-type="doi">10.1109/jsyst.2020.3002907</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Poshtan</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Distributed interacting multiple filters for fault diagnosis of navigation sensors in a robotic system</article-title>. <source>IEEE Trans. Syst. Man, Cybern. Syst.</source> <volume>47</volume>, <fpage>1383</fpage>&#x2013;<lpage>1393</lpage>. <pub-id pub-id-type="doi">10.1109/tsmc.2016.2598782</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Poshtan</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Shahrokhi</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2014a</year>). &#x201c;<article-title>Particle filtering based gyroscope fault and attitude estimation with uncertain dynamics fusing camera information</article-title>,&#x201d; in <conf-name>Proceedings of the 2014 22nd Iranian Conference on Electrical Engineering</conf-name>, <conf-loc>Tehran, Iran</conf-loc>, <conf-date>20-22 May 2014</conf-date>, <fpage>1221</fpage>&#x2013;<lpage>1226</lpage>.</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Poshtan</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wagner</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Nordheimer</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Badreddin</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2014b</year>). <article-title>Distributed observers for pose estimation in the presence of inertial sensory soft faults</article-title>. <source>ISA Trans.</source> <volume>53</volume>, <fpage>1307</fpage>&#x2013;<lpage>1319</lpage>. <pub-id pub-id-type="doi">10.1016/j.isatra.2014.04.002</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sadeghzadeh-Nokhodberiz</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Poshtan</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wagner</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Nordheimer</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Badreddin</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2014c</year>). <article-title>Cascaded kalman and particle filters for photogrammetry based gyroscope drift and robot attitude estimation</article-title>. <source>ISA Trans.</source> <volume>53</volume>, <fpage>524</fpage>&#x2013;<lpage>532</lpage>. <pub-id pub-id-type="doi">10.1016/j.isatra.2013.10.002</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Steenbeek</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <source>CNN based dense monocular visual SLAM for indoor mapping and autonomous exploration</source>. <comment>Master&#x2019;s thesis</comment>. <publisher-loc>Enschede, Netherlands</publisher-loc>: <publisher-name>University of Twente</publisher-name>.</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>C.-L.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>T.-M.</given-names>
</name>
<name>
<surname>Liang</surname>
<given-names>J.-H.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.-C.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Bearing-only visual slam for small unmanned aerial vehicles in gps-denied environments</article-title>. <source>Int. J. Automation Comput.</source> <volume>10</volume>, <fpage>387</fpage>&#x2013;<lpage>396</lpage>. <pub-id pub-id-type="doi">10.1007/s11633-013-0735-8</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>White</surname>
<given-names>J. H.</given-names>
</name>
<name>
<surname>Beard</surname>
<given-names>R. W.</given-names>
</name>
</person-group> (<year>2019</year>). <source>The homography as a state transformation between frames in visual multi-target tracking</source>, <publisher-name>Brigham Young University</publisher-name>, <publisher-loc>Provo, UT</publisher-loc>
</citation>
</ref>
</ref-list>
</back>
</article>