<divclass="line"><aid="l00005"name="l00005"></a><spanclass="lineno"> 5</span><spanclass="comment">Redistribution and use in source and binary forms, with or without</span></div>
<divclass="line"><aid="l00006"name="l00006"></a><spanclass="lineno"> 6</span><spanclass="comment">modification, are permitted provided that the following conditions are met:</span></div>
<divclass="line"><aid="l00007"name="l00007"></a><spanclass="lineno"> 7</span><spanclass="comment"> * Redistributions of source code must retain the above copyright</span></div>
<divclass="line"><aid="l00008"name="l00008"></a><spanclass="lineno"> 8</span><spanclass="comment"> notice, this list of conditions and the following disclaimer.</span></div>
<divclass="line"><aid="l00009"name="l00009"></a><spanclass="lineno"> 9</span><spanclass="comment"> * Redistributions in binary form must reproduce the above copyright</span></div>
<divclass="line"><aid="l00010"name="l00010"></a><spanclass="lineno"> 10</span><spanclass="comment"> notice, this list of conditions and the following disclaimer in the</span></div>
<divclass="line"><aid="l00011"name="l00011"></a><spanclass="lineno"> 11</span><spanclass="comment"> documentation and/or other materials provided with the distribution.</span></div>
<divclass="line"><aid="l00012"name="l00012"></a><spanclass="lineno"> 12</span><spanclass="comment"> * Neither the name of the Universite de Sherbrooke nor the</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment"> names of its contributors may be used to endorse or promote products</span></div>
<divclass="line"><aid="l00014"name="l00014"></a><spanclass="lineno"> 14</span><spanclass="comment"> derived from this software without specific prior written permission.</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span></div>
<divclass="line"><aid="l00017"name="l00017"></a><spanclass="lineno"> 17</span><spanclass="comment">ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<divclass="line"><aid="l00018"name="l00018"></a><spanclass="lineno"> 18</span><spanclass="comment">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<divclass="line"><aid="l00019"name="l00019"></a><spanclass="lineno"> 19</span><spanclass="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY</span></div>
<divclass="line"><aid="l00020"name="l00020"></a><spanclass="lineno"> 20</span><spanclass="comment">DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div>
<divclass="line"><aid="l00021"name="l00021"></a><spanclass="lineno"> 21</span><spanclass="comment">(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<divclass="line"><aid="l00022"name="l00022"></a><spanclass="lineno"> 22</span><spanclass="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div>
<divclass="line"><aid="l00023"name="l00023"></a><spanclass="lineno"> 23</span><spanclass="comment">ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div>
<divclass="line"><aid="l00024"name="l00024"></a><spanclass="lineno"> 24</span><spanclass="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div>
<divclass="line"><aid="l00025"name="l00025"></a><spanclass="lineno"> 25</span><spanclass="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<divclass="line"><aid="l00161"name="l00161"></a><spanclass="lineno"> 161</span><spanclass="comment">// orientation: of the base frame in the IMU's world frame; acceleration: of the base in</span></div>
<divclass="line"><aid="l00162"name="l00162"></a><spanclass="lineno"> 162</span><spanclass="comment">// that frame, gravity removed</span></div>
<divclass="line"><aid="l00163"name="l00163"></a><spanclass="lineno"> 163</span><spanclass="comment">// specificForce: in that frame too, including the reaction to gravity (see</span></div>
<divclass="line"><aid="l00165"name="l00165"></a><spanclass="lineno"> 165</span><spanclass="keywordtype">void</span> addSample(<spanclass="keywordtype">double</span> stamp, <spanclass="keyword">const</span> Eigen::Quaterniond & orientation,</div>
<divclass="line"><aid="l00166"name="l00166"></a><spanclass="lineno"> 166</span><spanclass="keyword">const</span> Eigen::Vector3d & specificForce, <spanclass="keywordtype">bool</span> hasAcceleration);</div>
<divclass="line"><aid="l00167"name="l00167"></a><spanclass="lineno"> 167</span><spanclass="comment">// Gravity estimation, from the IMU's own specific force and angular velocity norm</span></div>
<divclass="line"><aid="l00168"name="l00168"></a><spanclass="lineno"> 168</span><spanclass="keywordtype">void</span> estimateGravity(<spanclass="keywordtype">double</span> stamp, <spanclass="keyword">const</span> Eigen::Vector3d & specificForce, <spanclass="keywordtype">double</span> angularVelocity);</div>
<divclass="line"><aid="l00173"name="l00173"></a><spanclass="lineno"> 173</span><spanclass="comment">// Kept with gravity, which is removed when used: the estimate can change</span></div>
<divclass="line"><aid="l00177"name="l00177"></a><spanclass="lineno"> 177</span><spanclass="comment">// Acceleration of a sample, gravity removed (null without acceleration)</span></div>
<divclass="line"><aid="l00178"name="l00178"></a><spanclass="lineno"> 178</span> Eigen::Vector3d accelerationOf(<spanclass="keyword">const</span> Sample & sample) <spanclass="keyword">const</span>;</div>
<divclass="line"><aid="l00181"name="l00181"></a><spanclass="lineno"> 181</span><spanclass="keywordtype">void</span> integrate(<spanclass="keywordtype">double</span> from, <spanclass="keywordtype">double</span> to, <spanclass="keyword">const</span> Eigen::Quaterniond & rotation,</div>
<divclass="line"><aid="l00182"name="l00182"></a><spanclass="lineno"> 182</span> Eigen::Vector3d & velocity, Eigen::Vector3d & position) <spanclass="keyword">const</span>;</div>
<divclass="line"><aid="l00185"name="l00185"></a><spanclass="lineno"> 185</span><spanclass="comment">// The acceleration integrated from the last pose up to a sample's stamp, in the</span></div>
<divclass="line"><aid="l00186"name="l00186"></a><spanclass="lineno"> 186</span><spanclass="comment">// odometry frame: predicting a stamp then only integrates from the sample before it.</span></div>
<divclass="line"><aid="l00189"name="l00189"></a><spanclass="lineno"> 189</span> Eigen::Vector3d acceleration; <spanclass="comment">// at that stamp</span></div>
<divclass="line"><aid="l00190"name="l00190"></a><spanclass="lineno"> 190</span> Eigen::Vector3d velocity; <spanclass="comment">// change since the last pose</span></div>
<divclass="line"><aid="l00191"name="l00191"></a><spanclass="lineno"> 191</span> Eigen::Vector3d position; <spanclass="comment">// change since the last pose (without its velocity)</span></div>
<divclass="line"><aid="l00201"name="l00201"></a><spanclass="lineno"> 201</span><spanclass="comment">// Gravity estimation: the samples of the current window, and the gravity measured over</span></div>
<divclass="line"><aid="l00202"name="l00202"></a><spanclass="lineno"> 202</span><spanclass="comment">// the last quiet windows</span></div>
<divclass="line"><aid="l00206"name="l00206"></a><spanclass="lineno"> 206</span> Eigen::Vector3d specificForce; <spanclass="comment">// in the IMU frame</span></div>
<divclass="line"><aid="l00212"name="l00212"></a><spanclass="lineno"> 212</span><spanclass="comment">// Recent odometry poses, to estimate the velocity from (see velocityWindow)</span></div>
<divclass="line"><aid="l00215"name="l00215"></a><spanclass="lineno"> 215</span><spanclass="comment">// The last odometry pose and the state predictions start from.</span></div>
<divclass="line"><aid="l00219"name="l00219"></a><spanclass="lineno"> 219</span><spanclass="comment">// Rotation from the IMU's world frame to the odometry frame, at the last pose: the two</span></div>
<divclass="line"><aid="l00220"name="l00220"></a><spanclass="lineno"> 220</span><spanclass="comment">// are both gravity aligned, but their yaw differ.</span></div>
<divclass="line"><aid="l00223"name="l00223"></a><spanclass="lineno"> 223</span><spanclass="comment">// Built lazily by predict(), from the last pose to the newest sample; cleared when the</span></div>
<divclass="line"><aid="l00224"name="l00224"></a><spanclass="lineno"> 224</span><spanclass="comment">// pose or the samples it was built from change.</span></div>
<divclass="line"><aid="l00226"name="l00226"></a><spanclass="lineno"> 226</span><spanclass="comment">// Whether the acceleration at the last pose's stamp (the first entry) is final: it is</span></div>
<divclass="line"><aid="l00227"name="l00227"></a><spanclass="lineno"> 227</span><spanclass="comment">// held constant from the newest sample until a sample after that stamp is received.</span></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html">rtabmap::ImuMotionPredictor</a></div><divclass="ttdoc">Predicts the pose of the base frame from the last odometry pose and the IMU.</div><divclass="ttdef"><b>Definition</b><ahref="ImuMotionPredictor_8h_source.html#l00077">ImuMotionPredictor.h:78</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a18e326faaa67a3602eaf3b4df7a906ff"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a18e326faaa67a3602eaf3b4df7a906ff">rtabmap::ImuMotionPredictor::velocity</a></div><divclass="ttdeci">Eigen::Vector3d velocity() const</div><divclass="ttdoc">Velocity (m/s) of the base in the odometry frame at the last pose.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a2c30a766cc8f251b78ed490cb2a275eb"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a2c30a766cc8f251b78ed490cb2a275eb">rtabmap::ImuMotionPredictor::hasPose</a></div><divclass="ttdeci">bool hasPose() const</div><divclass="ttdoc">Whether there is a pose to predict from (none yet, or the last one was null).</div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a3359e2caff4d42fbcd4137b39aa2ae04"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a3359e2caff4d42fbcd4137b39aa2ae04">rtabmap::ImuMotionPredictor::addImu</a></div><divclass="ttdeci">void addImu(double stamp, const IMU &imu)</div><divclass="ttdoc">Adds an IMU measurement.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a39dc460db30550b24646b312b3329245"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a39dc460db30550b24646b312b3329245">rtabmap::ImuMotionPredictor::samples</a></div><divclass="ttdeci">size_t samples() const</div><divclass="ttdoc">Number of IMU samples kept.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a4ddd3b124501b8446869a38b1ab1ff95"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a4ddd3b124501b8446869a38b1ab1ff95">rtabmap::ImuMotionPredictor::lastPoseStamp</a></div><divclass="ttdeci">double lastPoseStamp() const</div><divclass="ttdoc">Stamp of the last pose added, 0 if there is none.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a53a73e2ebf60ff671828732594adc7c4"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a53a73e2ebf60ff671828732594adc7c4">rtabmap::ImuMotionPredictor::gravity</a></div><divclass="ttdeci">double gravity() const</div><divclass="ttdoc">Gravity (m/s^2) removed from the specific force: the one given, or the estimate.</div><divclass="ttdef"><b>Definition</b><ahref="ImuMotionPredictor_8h_source.html#l00111">ImuMotionPredictor.h:111</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_a91c329f153da4c479509e406f6eb5112"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#a91c329f153da4c479509e406f6eb5112">rtabmap::ImuMotionPredictor::gravityWindows</a></div><divclass="ttdeci">size_t gravityWindows() const</div><divclass="ttdoc">Number of quiet IMU windows the gravity estimate is from (0: not estimated yet)</div><divclass="ttdef"><b>Definition</b><ahref="ImuMotionPredictor_8h_source.html#l00115">ImuMotionPredictor.h:115</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_aa84008cbd4087273e8db74d91d89ec10"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#aa84008cbd4087273e8db74d91d89ec10">rtabmap::ImuMotionPredictor::isGravityEstimated</a></div><divclass="ttdeci">bool isGravityEstimated() const</div><divclass="ttdoc">Whether the gravity is estimated from the IMU (see the constructor)</div><divclass="ttdef"><b>Definition</b><ahref="ImuMotionPredictor_8h_source.html#l00113">ImuMotionPredictor.h:113</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_abb4349e5902040e5440f425e0bc39c47"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#abb4349e5902040e5440f425e0bc39c47">rtabmap::ImuMotionPredictor::addPose</a></div><divclass="ttdeci">void addPose(double stamp, const rtabmap::Transform &pose)</div><divclass="ttdoc">Adds an odometry pose, from which the next poses are predicted.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1ImuMotionPredictor_html_ac9bd37d201be18aaecfbfdbdbaec6ff0"><divclass="ttname"><ahref="classrtabmap_1_1ImuMotionPredictor.html#ac9bd37d201be18aaecfbfdbdbaec6ff0">rtabmap::ImuMotionPredictor::predict</a></div><divclass="ttdeci">rtabmap::Transform predict(double stamp) const</div><divclass="ttdoc">Predicts the pose of the base frame in the odometry frame.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1Transform_html"><divclass="ttname"><ahref="classrtabmap_1_1Transform.html">rtabmap::Transform</a></div><divclass="ttdoc">Represents a 3D rigid body transformation (rotation + translation).</div><divclass="ttdef"><b>Definition</b><ahref="Transform_8h_source.html#l00052">Transform.h:53</a></div></div>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.9.8 </li>