Files
rtabmap/preview/pr-1492/api/latest/classrtabmap_1_1SensorCapture.html
T

774 lines
56 KiB
HTML

<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: rtabmap::SensorCapture Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.10</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classrtabmap_1_1SensorCapture.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classrtabmap_1_1SensorCapture-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">rtabmap::SensorCapture Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>Abstract base class for sensor data capture (cameras, lidars, etc.)
<a href="classrtabmap_1_1SensorCapture.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for rtabmap::SensorCapture:</div>
<div class="dyncontent">
<div class="center"><img src="classrtabmap_1_1SensorCapture__inherit__graph.png" border="0" usemap="#artabmap_1_1SensorCapture_inherit__map" alt="Inheritance graph"/></div>
<map name="artabmap_1_1SensorCapture_inherit__map" id="artabmap_1_1SensorCapture_inherit__map">
<area shape="rect" title="Abstract base class for sensor data capture (cameras, lidars, etc.)" alt="" coords="5,828,185,853"/>
<area shape="rect" href="classrtabmap_1_1Camera.html" title=" " alt="" coords="233,548,369,573"/>
<area shape="poly" title=" " alt="" coords="112,815,289,572,293,575,116,818"/>
<area shape="rect" href="classrtabmap_1_1Lidar.html" title=" " alt="" coords="243,852,360,877"/>
<area shape="poly" title=" " alt="" coords="200,850,243,855,242,861,199,855"/>
<area shape="rect" href="classrtabmap_1_1CameraDepthAI.html" title=" " alt="" coords="438,5,626,31"/>
<area shape="poly" title=" " alt="" coords="302,534,313,427,335,278,350,203,368,134,390,78,415,40,436,26,439,30,419,44,395,81,373,136,355,204,340,279,318,427,307,535"/>
<area shape="rect" href="classrtabmap_1_1CameraFreenect.html" title=" " alt="" coords="436,55,628,80"/>
<area shape="poly" title=" " alt="" coords="303,534,315,436,338,303,353,235,371,174,392,124,415,89,434,76,437,81,419,93,397,126,376,176,359,236,343,304,321,437,308,535"/>
<area shape="rect" href="classrtabmap_1_1CameraFreenect2.html" title=" " alt="" coords="432,104,632,129"/>
<area shape="poly" title=" " alt="" coords="304,534,318,445,342,327,374,213,394,169,415,139,431,127,435,132,419,143,398,171,379,215,347,328,323,446,309,535"/>
<area shape="rect" href="classrtabmap_1_1CameraImages.html" title=" " alt="" coords="440,153,624,179"/>
<area shape="poly" title=" " alt="" coords="300,534,304,465,319,371,334,321,354,273,381,227,416,188,438,174,441,178,419,192,385,230,359,275,339,323,324,372,309,465,305,535"/>
<area shape="rect" href="classrtabmap_1_1CameraK4A.html" title=" " alt="" coords="451,203,613,228"/>
<area shape="poly" title=" " alt="" coords="301,534,308,473,326,393,341,351,360,310,385,272,416,239,431,228,449,220,451,225,434,232,419,243,389,275,365,312,346,353,331,395,314,474,307,535"/>
<area shape="rect" href="classrtabmap_1_1CameraK4W2.html" title=" " alt="" coords="445,252,619,277"/>
<area shape="poly" title=" " alt="" coords="303,534,313,481,333,415,348,380,366,346,389,315,416,288,443,272,446,277,419,292,393,318,371,349,353,382,338,416,318,482,309,535"/>
<area shape="rect" href="classrtabmap_1_1CameraMyntEye.html" title=" " alt="" coords="435,301,629,327"/>
<area shape="poly" title=" " alt="" coords="306,534,319,490,341,437,372,383,392,358,416,337,438,324,441,329,419,341,396,362,377,386,345,439,324,492,311,535"/>
<area shape="rect" href="classrtabmap_1_1CameraOpenNI2.html" title=" " alt="" coords="436,351,628,376"/>
<area shape="poly" title=" " alt="" coords="310,534,326,500,348,460,379,420,416,386,441,374,443,379,419,391,382,424,353,463,330,502,315,536"/>
<area shape="rect" href="classrtabmap_1_1CameraOpenNICV.html" title=" " alt="" coords="431,400,633,425"/>
<area shape="poly" title=" " alt="" coords="316,535,357,484,385,458,416,436,446,423,448,428,419,440,388,462,361,488,320,538"/>
<area shape="rect" href="classrtabmap_1_1CameraOpenni.html" title="OpenNI driver for cameras like Kinect for Xbox 360." alt="" coords="441,449,623,475"/>
<area shape="poly" title=" " alt="" coords="328,537,369,510,416,485,456,472,457,477,418,490,371,514,331,542"/>
<area shape="rect" href="classrtabmap_1_1CameraOrbbecSDK.html" title=" " alt="" coords="427,499,637,524"/>
<area shape="poly" title=" " alt="" coords="374,543,471,521,472,527,375,548"/>
<area shape="rect" href="classrtabmap_1_1CameraRealSense.html" title=" " alt="" coords="430,548,634,573"/>
<area shape="poly" title=" " alt="" coords="383,558,430,558,430,563,383,563"/>
<area shape="rect" href="classrtabmap_1_1CameraRealSense2.html" title=" " alt="" coords="426,597,638,623"/>
<area shape="poly" title=" " alt="" coords="374,574,418,583,471,595,470,600,417,589,372,579"/>
<area shape="rect" href="classrtabmap_1_1CameraSeerSense.html" title=" " alt="" coords="430,647,634,672"/>
<area shape="poly" title=" " alt="" coords="330,580,371,608,418,633,453,644,451,649,416,638,368,612,327,584"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoDC1394.html" title=" " alt="" coords="417,696,647,721"/>
<area shape="poly" title=" " alt="" coords="320,583,361,635,388,661,419,682,444,693,442,698,416,687,385,665,357,638,316,587"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoFlyCapture2.html" title=" " alt="" coords="433,746,631,786"/>
<area shape="poly" title=" " alt="" coords="315,585,331,619,353,658,383,698,419,732,439,744,436,748,416,736,379,702,349,661,326,621,310,587"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoTara.html" title=" " alt="" coords="429,811,635,836"/>
<area shape="poly" title=" " alt="" coords="310,586,322,632,343,689,375,747,395,773,419,796,440,808,437,813,416,800,391,777,370,750,338,691,317,634,305,587"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoVideo.html" title=" " alt="" coords="425,860,639,885"/>
<area shape="poly" title=" " alt="" coords="308,586,316,641,335,712,350,749,368,785,391,818,419,847,436,858,433,862,416,851,387,822,364,788,345,752,330,714,311,642,302,587"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoZed.html" title=" " alt="" coords="431,909,633,935"/>
<area shape="poly" title=" " alt="" coords="306,587,312,651,329,735,343,779,363,822,388,862,419,896,435,907,432,911,416,900,383,865,358,824,338,781,324,736,307,651,301,587"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoZedOC.html" title=" " alt="" coords="421,959,643,984"/>
<area shape="poly" title=" " alt="" coords="311,586,363,788,394,891,408,927,419,946,435,956,432,961,415,949,403,929,389,893,358,789,306,587"/>
<area shape="rect" href="classrtabmap_1_1CameraVideo.html" title=" " alt="" coords="445,1008,619,1033"/>
<area shape="poly" title=" " alt="" coords="311,586,368,820,399,939,419,995,446,1011,444,1016,415,998,394,940,363,822,306,588"/>
<area shape="rect" href="classrtabmap_1_1DBReader.html" title=" " alt="" coords="457,1057,607,1083"/>
<area shape="poly" title=" " alt="" coords="312,586,372,840,377,873,379,902,379,953,381,976,387,998,399,1021,419,1044,437,1056,457,1064,455,1069,434,1061,416,1048,395,1024,382,1000,376,977,374,953,374,902,372,873,367,841,306,587"/>
<area shape="rect" href="classrtabmap_1_1CameraRGBDImages.html" title=" " alt="" coords="697,129,919,155"/>
<area shape="poly" title=" " alt="" coords="638,154,696,149,697,154,638,159"/>
<area shape="rect" href="classrtabmap_1_1CameraStereoImages.html" title=" " alt="" coords="695,179,921,204"/>
<area shape="poly" title=" " alt="" coords="638,173,695,178,694,184,637,178"/>
<area shape="rect" href="classrtabmap_1_1LidarVLP16.html" title=" " alt="" coords="453,1107,611,1132"/>
<area shape="poly" title=" " alt="" coords="310,890,323,935,344,990,375,1046,396,1072,419,1093,435,1103,454,1110,452,1115,433,1108,416,1097,392,1075,371,1049,339,993,318,937,305,891"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0578f6540ecdf8c4b3b747d511ecb625" id="r_a0578f6540ecdf8c4b3b747d511ecb625"><td class="memItemLeft" align="right" valign="top"><a id="a0578f6540ecdf8c4b3b747d511ecb625" name="a0578f6540ecdf8c4b3b747d511ecb625"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><b>~SensorCapture</b> ()</td></tr>
<tr class="memdesc:a0578f6540ecdf8c4b3b747d511ecb625"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
<tr class="separator:a0578f6540ecdf8c4b3b747d511ecb625"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca06c645212a7501a246ea593406bcaf" id="r_aca06c645212a7501a246ea593406bcaf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf">takeData</a> (<a class="el" href="classrtabmap_1_1SensorCaptureInfo.html">SensorCaptureInfo</a> *info=0)</td></tr>
<tr class="memdesc:aca06c645212a7501a246ea593406bcaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Captures sensor data with frame rate control. <br /></td></tr>
<tr class="separator:aca06c645212a7501a246ea593406bcaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c0cd843969fab53f157cbe0fd333b8a" id="r_a1c0cd843969fab53f157cbe0fd333b8a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a1c0cd843969fab53f157cbe0fd333b8a">init</a> (const std::string &amp;calibrationFolder=&quot;.&quot;, const std::string &amp;cameraName=&quot;&quot;)=0</td></tr>
<tr class="memdesc:a1c0cd843969fab53f157cbe0fd333b8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the sensor. <br /></td></tr>
<tr class="separator:a1c0cd843969fab53f157cbe0fd333b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7830e571e45752f9d8f30fa806f6aa64" id="r_a7830e571e45752f9d8f30fa806f6aa64"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a7830e571e45752f9d8f30fa806f6aa64">getSerial</a> () const =0</td></tr>
<tr class="memdesc:a7830e571e45752f9d8f30fa806f6aa64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the sensor's serial number or unique identifier. <br /></td></tr>
<tr class="separator:a7830e571e45752f9d8f30fa806f6aa64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee217767808a9df9c63a27b284461c89" id="r_aee217767808a9df9c63a27b284461c89"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#aee217767808a9df9c63a27b284461c89">odomProvided</a> () const</td></tr>
<tr class="memdesc:aee217767808a9df9c63a27b284461c89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the sensor provides odometry poses. <br /></td></tr>
<tr class="separator:aee217767808a9df9c63a27b284461c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f940d75366088bfae0164e1803ffe9a" id="r_a2f940d75366088bfae0164e1803ffe9a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a2f940d75366088bfae0164e1803ffe9a">getPose</a> (double stamp, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;pose, cv::Mat &amp;covariance, double maxWaitTime=0.06)</td></tr>
<tr class="memdesc:a2f940d75366088bfae0164e1803ffe9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the sensor's pose estimate at a specific timestamp. <br /></td></tr>
<tr class="separator:a2f940d75366088bfae0164e1803ffe9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7de847c118ec1ba77a5c9f29f7efece" id="r_af7de847c118ec1ba77a5c9f29f7efece"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#af7de847c118ec1ba77a5c9f29f7efece">getFrameRate</a> () const</td></tr>
<tr class="memdesc:af7de847c118ec1ba77a5c9f29f7efece"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the target frame rate. <br /></td></tr>
<tr class="separator:af7de847c118ec1ba77a5c9f29f7efece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99829249c51fd08c32310b788b00b663" id="r_a99829249c51fd08c32310b788b00b663"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a99829249c51fd08c32310b788b00b663">getLocalTransform</a> () const</td></tr>
<tr class="memdesc:a99829249c51fd08c32310b788b00b663"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the local transform from base frame to sensor frame. <br /></td></tr>
<tr class="separator:a99829249c51fd08c32310b788b00b663"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e195970f52334094174783c5fd06456" id="r_a1e195970f52334094174783c5fd06456"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a1e195970f52334094174783c5fd06456">setFrameRate</a> (float frameRate)</td></tr>
<tr class="memdesc:a1e195970f52334094174783c5fd06456"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the target frame rate. <br /></td></tr>
<tr class="separator:a1e195970f52334094174783c5fd06456"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ea4e217047c234bcfcb9866e36ea7c0" id="r_a0ea4e217047c234bcfcb9866e36ea7c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a0ea4e217047c234bcfcb9866e36ea7c0">setLocalTransform</a> (const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;localTransform)</td></tr>
<tr class="memdesc:a0ea4e217047c234bcfcb9866e36ea7c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the local transform from base frame to sensor frame. <br /></td></tr>
<tr class="separator:a0ea4e217047c234bcfcb9866e36ea7c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa9923bb4a3b88e6dbf4c8ae7f060437" id="r_afa9923bb4a3b88e6dbf4c8ae7f060437"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#afa9923bb4a3b88e6dbf4c8ae7f060437">resetTimer</a> ()</td></tr>
<tr class="memdesc:afa9923bb4a3b88e6dbf4c8ae7f060437"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the frame rate timer. <br /></td></tr>
<tr class="separator:afa9923bb4a3b88e6dbf4c8ae7f060437"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:adf4b1dfd8e5b45b8eecf938a92dbae94" id="r_adf4b1dfd8e5b45b8eecf938a92dbae94"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#adf4b1dfd8e5b45b8eecf938a92dbae94">SensorCapture</a> (float frameRate=0, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;localTransform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>())</td></tr>
<tr class="memdesc:adf4b1dfd8e5b45b8eecf938a92dbae94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Protected constructor. <br /></td></tr>
<tr class="separator:adf4b1dfd8e5b45b8eecf938a92dbae94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85e8691b5201a5383d1463ed980f7958" id="r_a85e8691b5201a5383d1463ed980f7958"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958">captureData</a> (<a class="el" href="classrtabmap_1_1SensorCaptureInfo.html">SensorCaptureInfo</a> *info=0)=0</td></tr>
<tr class="memdesc:a85e8691b5201a5383d1463ed980f7958"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pure virtual method to capture sensor data. <br /></td></tr>
<tr class="separator:a85e8691b5201a5383d1463ed980f7958"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbffaf17772639bc65b0a5457bc56b22" id="r_acbffaf17772639bc65b0a5457bc56b22"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1SensorCapture.html#acbffaf17772639bc65b0a5457bc56b22">getNextSeqID</a> ()</td></tr>
<tr class="memdesc:acbffaf17772639bc65b0a5457bc56b22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the next sequence ID. <br /></td></tr>
<tr class="separator:acbffaf17772639bc65b0a5457bc56b22"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Abstract base class for sensor data capture (cameras, lidars, etc.) </p>
<p><a class="el" href="classrtabmap_1_1SensorCapture.html" title="Abstract base class for sensor data capture (cameras, lidars, etc.)">SensorCapture</a> provides a unified interface for capturing sensor data from various sensor types including cameras (RGB-D, stereo, mono) and lidars. It handles frame rate control, local transform management, and provides a common API for sensor initialization and data capture.</p>
<p>The class implements the Template Method pattern:</p><ul>
<li><code><a class="el" href="classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf" title="Captures sensor data with frame rate control.">takeData()</a></code> handles frame rate control and timing, then calls the pure virtual <code><a class="el" href="classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958" title="Pure virtual method to capture sensor data.">captureData()</a></code> method implemented by derived classes</li>
<li>Derived classes must implement <code><a class="el" href="classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958" title="Pure virtual method to capture sensor data.">captureData()</a></code> to perform the actual sensor capture</li>
</ul>
<p>Key features:</p><ul>
<li><b>Frame rate control</b>: Automatic throttling to maintain target frame rate</li>
<li><b>Local transform</b>: <a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> from robot base frame to sensor frame</li>
<li><b>Capture timing</b>: Tracks capture time and provides it via <a class="el" href="classrtabmap_1_1SensorCaptureInfo.html" title="Metadata structure for sensor data capture and processing.">SensorCaptureInfo</a></li>
<li><b>Sequence IDs</b>: Automatic sequence number generation for captured data</li>
</ul>
<p>Derived classes include:</p><ul>
<li><b><a class="el" href="classrtabmap_1_1Camera.html">Camera</a></b>: Base class for all camera types (RGB-D, stereo, mono, file readers, etc.)</li>
<li><b><a class="el" href="classrtabmap_1_1Lidar.html">Lidar</a></b>: Base class for lidar sensors</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>This is an abstract class. Use concrete implementations like CameraRGBD, CameraStereo, <a class="el" href="classrtabmap_1_1LidarVLP16.html">LidarVLP16</a>, etc., or create custom derived classes.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Camera.html">Camera</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1Lidar.html">Lidar</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1SensorCaptureInfo.html" title="Metadata structure for sensor data capture and processing.">SensorCaptureInfo</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1SensorCaptureThread.html" title="Thread-based sensor data capture and event posting for RTAB-Map.">SensorCaptureThread</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00078">78</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="adf4b1dfd8e5b45b8eecf938a92dbae94" name="adf4b1dfd8e5b45b8eecf938a92dbae94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf4b1dfd8e5b45b8eecf938a92dbae94">&#9670;&#160;</a></span>SensorCapture()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">rtabmap::SensorCapture::SensorCapture </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>frameRate</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>localTransform</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Protected constructor. </p>
<p>Creates a <a class="el" href="classrtabmap_1_1SensorCapture.html" title="Abstract base class for sensor data capture (cameras, lidars, etc.)">SensorCapture</a> instance with the specified frame rate and local transform. This constructor is protected because <a class="el" href="classrtabmap_1_1SensorCapture.html" title="Abstract base class for sensor data capture (cameras, lidars, etc.)">SensorCapture</a> is an abstract base class and should not be instantiated directly.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">frameRate</td><td>Target frame rate in Hz (0 = unlimited, capture as fast as possible) </td></tr>
<tr><td class="paramname">localTransform</td><td><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> from base frame to sensor frame (default: identity) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aca06c645212a7501a246ea593406bcaf" name="aca06c645212a7501a246ea593406bcaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca06c645212a7501a246ea593406bcaf">&#9670;&#160;</a></span>takeData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> rtabmap::SensorCapture::takeData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classrtabmap_1_1SensorCaptureInfo.html">SensorCaptureInfo</a> *&#160;</td>
<td class="paramname"><em>info</em> = <code>0</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Captures sensor data with frame rate control. </p>
<p>This method handles frame rate throttling and timing, then calls the pure virtual <code><a class="el" href="classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958" title="Pure virtual method to capture sensor data.">captureData()</a></code> method to perform the actual capture.</p>
<p>The method:</p><ul>
<li>Enforces the target frame rate by sleeping if necessary</li>
<li>Measures capture time and stores it in <a class="el" href="classrtabmap_1_1SensorCaptureInfo.html" title="Metadata structure for sensor data capture and processing.">SensorCaptureInfo</a></li>
<li>Assigns sequence IDs to captured data</li>
<li>Warns if the target frame rate cannot be reached</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>Optional pointer to <a class="el" href="classrtabmap_1_1SensorCaptureInfo.html" title="Metadata structure for sensor data capture and processing.">SensorCaptureInfo</a> to fill with capture metadata (ID, timestamp, capture time). If null, no info is filled. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> containing the captured sensor data</dd></dl>
<dl class="section note"><dt>Note</dt><dd>If frame rate is 0, data is captured as fast as possible without throttling. </dd>
<dd>
The returned <a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> should have rectified images if calibration was loaded.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958" title="Pure virtual method to capture sensor data.">captureData()</a> </dd></dl>
</div>
</div>
<a id="a1c0cd843969fab53f157cbe0fd333b8a" name="a1c0cd843969fab53f157cbe0fd333b8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c0cd843969fab53f157cbe0fd333b8a">&#9670;&#160;</a></span>init()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool rtabmap::SensorCapture::init </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>calibrationFolder</em> = <code>&quot;.&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>cameraName</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes the sensor. </p>
<p>Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:</p><ul>
<li>Opening device connections or file streams</li>
<li>Loading camera calibration parameters</li>
<li>Configuring sensor settings</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">calibrationFolder</td><td>Directory path where calibration files are located (default: current directory ".") </td></tr>
<tr><td class="paramname">cameraName</td><td>Base name of the camera for loading calibration files (default: empty string) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if initialization was successful, false otherwise</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Must be called before calling <a class="el" href="classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf" title="Captures sensor data with frame rate control.">takeData()</a> or <a class="el" href="classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958" title="Pure virtual method to capture sensor data.">captureData()</a> </dd></dl>
<p>Implemented in <a class="el" href="classrtabmap_1_1CameraDepthAI.html#aeab341a67f8c9ef3a078ef4636f969c1">rtabmap::CameraDepthAI</a>, <a class="el" href="classrtabmap_1_1CameraFreenect.html#aa36a4142ea9e7dab7120690b1d4a7449">rtabmap::CameraFreenect</a>, <a class="el" href="classrtabmap_1_1CameraFreenect2.html#aab9ed1bf2f64c6b8f6f95e25f94c4a8f">rtabmap::CameraFreenect2</a>, <a class="el" href="classrtabmap_1_1CameraImages.html#a8f00b6eb8c78a66d3381877825d70206">rtabmap::CameraImages</a>, <a class="el" href="classrtabmap_1_1CameraK4A.html#af2c611c697451697f318405469bb23e8">rtabmap::CameraK4A</a>, <a class="el" href="classrtabmap_1_1CameraK4W2.html#a33aec7e8863ddd2815a983a71e869127">rtabmap::CameraK4W2</a>, <a class="el" href="classrtabmap_1_1CameraMyntEye.html#a368591c828d3bb5aabfe8cae56d01304">rtabmap::CameraMyntEye</a>, <a class="el" href="classrtabmap_1_1CameraOpenni.html#aaa00fc3850c747fb261c87d4ad54827f">rtabmap::CameraOpenni</a>, <a class="el" href="classrtabmap_1_1CameraOpenNI2.html#a0c0da722b985da3595896fcc6bc72c7b">rtabmap::CameraOpenNI2</a>, <a class="el" href="classrtabmap_1_1CameraOpenNICV.html#a4d636b36e01de97d35fb0b6bb5fc3b7d">rtabmap::CameraOpenNICV</a>, <a class="el" href="classrtabmap_1_1CameraOrbbecSDK.html#a3a99d50d119791b9d3a36056aaddf59a">rtabmap::CameraOrbbecSDK</a>, <a class="el" href="classrtabmap_1_1CameraRealSense.html#a8c94957c92c38eee0d9ebbfd75d35a10">rtabmap::CameraRealSense</a>, <a class="el" href="classrtabmap_1_1CameraRealSense2.html#a7efbcb280ddd451a9c8fdbdba599c68f">rtabmap::CameraRealSense2</a>, <a class="el" href="classrtabmap_1_1CameraRGBDImages.html#a21903042693fbbc0bfc1586225efb2dd">rtabmap::CameraRGBDImages</a>, <a class="el" href="classrtabmap_1_1CameraSeerSense.html#a2fb66c8fa789c747b12c4ce85c8fc874">rtabmap::CameraSeerSense</a>, <a class="el" href="classrtabmap_1_1CameraStereoDC1394.html#a2cc861b0f7c66b8e21267678f6f5f221">rtabmap::CameraStereoDC1394</a>, <a class="el" href="classrtabmap_1_1CameraStereoFlyCapture2.html#a46a2477a1c151927c9d5e7eea51d3354">rtabmap::CameraStereoFlyCapture2</a>, <a class="el" href="classrtabmap_1_1CameraStereoImages.html#abc0cb4bfd56314d0003c6ce5d365cbca">rtabmap::CameraStereoImages</a>, <a class="el" href="classrtabmap_1_1CameraStereoTara.html#a3cd79ca07d74d6a3501f3ecd9b31bbef">rtabmap::CameraStereoTara</a>, <a class="el" href="classrtabmap_1_1CameraStereoVideo.html#a8bc165fb5c77bb9693203791a0888269">rtabmap::CameraStereoVideo</a>, <a class="el" href="classrtabmap_1_1CameraStereoZed.html#a80088853404d1c4e89b5f29933d7b020">rtabmap::CameraStereoZed</a>, <a class="el" href="classrtabmap_1_1CameraStereoZedOC.html#a37264abe58baa727bb5ee8d6653fa443">rtabmap::CameraStereoZedOC</a>, <a class="el" href="classrtabmap_1_1CameraVideo.html#a2b20fb67f20ec64e6c43e8d76d5c1f74">rtabmap::CameraVideo</a>, <a class="el" href="classrtabmap_1_1DBReader.html#a31b8ffc3d213da7ab58a85ce89b8055e">rtabmap::DBReader</a>, and <a class="el" href="classrtabmap_1_1LidarVLP16.html#a80162804e05013f64c6868084f460ab0">rtabmap::LidarVLP16</a>.</p>
</div>
</div>
<a id="a7830e571e45752f9d8f30fa806f6aa64" name="a7830e571e45752f9d8f30fa806f6aa64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7830e571e45752f9d8f30fa806f6aa64">&#9670;&#160;</a></span>getSerial()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::string rtabmap::SensorCapture::getSerial </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the sensor's serial number or unique identifier. </p>
<p>Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).</p>
<dl class="section return"><dt>Returns</dt><dd>String identifier for the sensor </dd></dl>
<p>Implemented in <a class="el" href="classrtabmap_1_1CameraDepthAI.html#ac77ceb30af0f98aa27f2de1259f31d7e">rtabmap::CameraDepthAI</a>, <a class="el" href="classrtabmap_1_1CameraFreenect.html#ad4aa325278c21b339aea31437430610d">rtabmap::CameraFreenect</a>, <a class="el" href="classrtabmap_1_1CameraFreenect2.html#a985478701c8eb9751918fcd497893af7">rtabmap::CameraFreenect2</a>, <a class="el" href="classrtabmap_1_1CameraImages.html#a217f54d1ead7a4d6af733c2644064a5f">rtabmap::CameraImages</a>, <a class="el" href="classrtabmap_1_1CameraK4A.html#af7dae13200b0d2ca09294b335225e993">rtabmap::CameraK4A</a>, <a class="el" href="classrtabmap_1_1CameraK4W2.html#a90bd066891ec59c4f1261af3353209bb">rtabmap::CameraK4W2</a>, <a class="el" href="classrtabmap_1_1CameraMyntEye.html#ac163457701a9274659e41aae5417f831">rtabmap::CameraMyntEye</a>, <a class="el" href="classrtabmap_1_1CameraOpenni.html#acaeb07cbf369a47817c48acacee04e41">rtabmap::CameraOpenni</a>, <a class="el" href="classrtabmap_1_1CameraOpenNI2.html#a9767b92c3df7b637c75ee351208e3f0b">rtabmap::CameraOpenNI2</a>, <a class="el" href="classrtabmap_1_1CameraOpenNICV.html#a29fe33644f755cf54307b55df898617b">rtabmap::CameraOpenNICV</a>, <a class="el" href="classrtabmap_1_1CameraOrbbecSDK.html#a75f9abaf3ddc009c7772cc0239816b86">rtabmap::CameraOrbbecSDK</a>, <a class="el" href="classrtabmap_1_1CameraRealSense.html#a4abbdf6efedd229a146d066b5ff17799">rtabmap::CameraRealSense</a>, <a class="el" href="classrtabmap_1_1CameraRealSense2.html#aff19c4db66d2403c0e09a67d1418bcdc">rtabmap::CameraRealSense2</a>, <a class="el" href="classrtabmap_1_1CameraSeerSense.html#aa921995e3a4a1cd5480868998bd27b2e">rtabmap::CameraSeerSense</a>, <a class="el" href="classrtabmap_1_1CameraStereoDC1394.html#a125d6fa6e6bd7f8b2e3d22d10ce54acb">rtabmap::CameraStereoDC1394</a>, <a class="el" href="classrtabmap_1_1CameraStereoFlyCapture2.html#a06d1e6cd0ea504f6601e78ecbd0442df">rtabmap::CameraStereoFlyCapture2</a>, <a class="el" href="classrtabmap_1_1CameraStereoImages.html#a507ca5b4c37b75f4108e9aa8dad5125b">rtabmap::CameraStereoImages</a>, <a class="el" href="classrtabmap_1_1CameraStereoTara.html#a87d7cdfd3354bdffd8e9e88f1244c79d">rtabmap::CameraStereoTara</a>, <a class="el" href="classrtabmap_1_1CameraStereoVideo.html#a0eba205715f6f856b14eaba8de2eadcf">rtabmap::CameraStereoVideo</a>, <a class="el" href="classrtabmap_1_1CameraStereoZed.html#a8c13902c0c25565357e6f7e0a16f0838">rtabmap::CameraStereoZed</a>, <a class="el" href="classrtabmap_1_1CameraStereoZedOC.html#a11244c590c4e356765abf59e94f66ddb">rtabmap::CameraStereoZedOC</a>, <a class="el" href="classrtabmap_1_1CameraVideo.html#ab3400ba7ae983cd1ad9678970079b00a">rtabmap::CameraVideo</a>, <a class="el" href="classrtabmap_1_1DBReader.html#ac6e8622842447cdccfaab061c1cab3c4">rtabmap::DBReader</a>, and <a class="el" href="classrtabmap_1_1LidarVLP16.html#a9d533721703457a60e94124d840fee95">rtabmap::LidarVLP16</a>.</p>
</div>
</div>
<a id="aee217767808a9df9c63a27b284461c89" name="aee217767808a9df9c63a27b284461c89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee217767808a9df9c63a27b284461c89">&#9670;&#160;</a></span>odomProvided()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool rtabmap::SensorCapture::odomProvided </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if the sensor provides odometry poses. </p>
<p>Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.</p>
<dl class="section return"><dt>Returns</dt><dd>True if the sensor provides odometry poses, false otherwise</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Default implementation returns false. Derived classes should override if they support pose estimation.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1SensorCapture.html#a2f940d75366088bfae0164e1803ffe9a" title="Gets the sensor&#39;s pose estimate at a specific timestamp.">getPose()</a> </dd></dl>
<p>Reimplemented in <a class="el" href="classrtabmap_1_1CameraImages.html#aea0811d6305eec32fda10f46344c825f">rtabmap::CameraImages</a>, <a class="el" href="classrtabmap_1_1CameraMyntEye.html#abc869cbd8b1106374a1f8734715d965d">rtabmap::CameraMyntEye</a>, <a class="el" href="classrtabmap_1_1CameraRealSense.html#a1ce069a366db4c98fe757acca7bf5b79">rtabmap::CameraRealSense</a>, <a class="el" href="classrtabmap_1_1CameraRealSense2.html#a3b5aa7434457e09cbc6f01b985440183">rtabmap::CameraRealSense2</a>, <a class="el" href="classrtabmap_1_1CameraSeerSense.html#aa3bfa6e619c5845d4994809281c9a4b5">rtabmap::CameraSeerSense</a>, <a class="el" href="classrtabmap_1_1CameraStereoZed.html#ac57ca4d52b5a0a3c3911ffa4a139564c">rtabmap::CameraStereoZed</a>, and <a class="el" href="classrtabmap_1_1DBReader.html#a24351b1eb5776a83548a1d972e489dba">rtabmap::DBReader</a>.</p>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00152">152</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<a id="a2f940d75366088bfae0164e1803ffe9a" name="a2f940d75366088bfae0164e1803ffe9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f940d75366088bfae0164e1803ffe9a">&#9670;&#160;</a></span>getPose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool rtabmap::SensorCapture::getPose </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>stamp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>pose</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">cv::Mat &amp;&#160;</td>
<td class="paramname"><em>covariance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>maxWaitTime</em> = <code>0.06</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the sensor's pose estimate at a specific timestamp. </p>
<p>Queries the sensor for its pose estimate at the given timestamp. This is typically used for sensors that provide visual-inertial odometry or other pose estimation capabilities.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">stamp</td><td>Timestamp in seconds for which to query the pose </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">pose</td><td>Output transform representing the sensor pose </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">covariance</td><td>Output covariance matrix (6x6) representing twist uncertainty </td></tr>
<tr><td class="paramdir"></td><td class="paramname">maxWaitTime</td><td>Maximum time in seconds to wait for pose data (default: 0.06) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if pose was successfully retrieved, false otherwise</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Default implementation returns false. Derived classes should override if they support pose estimation.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1SensorCapture.html#aee217767808a9df9c63a27b284461c89" title="Checks if the sensor provides odometry poses.">odomProvided()</a> </dd></dl>
<p>Reimplemented in <a class="el" href="classrtabmap_1_1CameraSeerSense.html#a831666d29d4eabc1a00e9eb5c8b47c27">rtabmap::CameraSeerSense</a>, <a class="el" href="classrtabmap_1_1CameraStereoZed.html#a1fceb3208a256d1023739a60f5931def">rtabmap::CameraStereoZed</a>, <a class="el" href="classrtabmap_1_1CameraRealSense2.html#a31fc38dca7aa6dc61c68150d5409204e">rtabmap::CameraRealSense2</a>, and <a class="el" href="classrtabmap_1_1DBReader.html#abd2b32ae00a05810465f63d63c44d5ed">rtabmap::DBReader</a>.</p>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00172">172</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<a id="af7de847c118ec1ba77a5c9f29f7efece" name="af7de847c118ec1ba77a5c9f29f7efece"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7de847c118ec1ba77a5c9f29f7efece">&#9670;&#160;</a></span>getFrameRate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float rtabmap::SensorCapture::getFrameRate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the target frame rate. </p>
<dl class="section return"><dt>Returns</dt><dd>Frame rate in Hz (0 = unlimited, capture as fast as possible) </dd></dl>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00180">180</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<a id="a99829249c51fd08c32310b788b00b663" name="a99829249c51fd08c32310b788b00b663"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99829249c51fd08c32310b788b00b663">&#9670;&#160;</a></span>getLocalTransform()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp; rtabmap::SensorCapture::getLocalTransform </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the local transform from base frame to sensor frame. </p>
<dl class="section return"><dt>Returns</dt><dd>Const reference to the local transform </dd></dl>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00186">186</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<a id="a1e195970f52334094174783c5fd06456" name="a1e195970f52334094174783c5fd06456"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e195970f52334094174783c5fd06456">&#9670;&#160;</a></span>setFrameRate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::SensorCapture::setFrameRate </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>frameRate</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the target frame rate. </p>
<p>Controls how often <code><a class="el" href="classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf" title="Captures sensor data with frame rate control.">takeData()</a></code> will capture data. The method will throttle captures to maintain the target rate.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">frameRate</td><td>Target frame rate in Hz (0 = unlimited, capture as fast as possible)</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Setting frame rate to 0 disables throttling and captures as fast as possible. </dd></dl>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00200">200</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<a id="a0ea4e217047c234bcfcb9866e36ea7c0" name="a0ea4e217047c234bcfcb9866e36ea7c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ea4e217047c234bcfcb9866e36ea7c0">&#9670;&#160;</a></span>setLocalTransform()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::SensorCapture::setLocalTransform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;&#160;</td>
<td class="paramname"><em>localTransform</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the local transform from base frame to sensor frame. </p>
<p>The local transform represents the pose of the sensor relative to the robot's base frame. This is used to transform sensor data into the robot's coordinate system.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">localTransform</td><td><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> from base frame to sensor frame </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00210">210</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<a id="afa9923bb4a3b88e6dbf4c8ae7f060437" name="afa9923bb4a3b88e6dbf4c8ae7f060437"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa9923bb4a3b88e6dbf4c8ae7f060437">&#9670;&#160;</a></span>resetTimer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::SensorCapture::resetTimer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the frame rate timer. </p>
<p>Resets the internal timer used for frame rate control. This is useful when starting a new capture session or after a pause. </p>
</div>
</div>
<a id="a85e8691b5201a5383d1463ed980f7958" name="a85e8691b5201a5383d1463ed980f7958"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85e8691b5201a5383d1463ed980f7958">&#9670;&#160;</a></span>captureData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> rtabmap::SensorCapture::captureData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classrtabmap_1_1SensorCaptureInfo.html">SensorCaptureInfo</a> *&#160;</td>
<td class="paramname"><em>info</em> = <code>0</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pure virtual method to capture sensor data. </p>
<p>This method must be implemented by derived classes to perform the actual sensor data capture. It is called by <code><a class="el" href="classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf" title="Captures sensor data with frame rate control.">takeData()</a></code> after frame rate throttling.</p>
<p>The returned <a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> should:</p><ul>
<li>Have rectified images if calibration was loaded during <code><a class="el" href="classrtabmap_1_1SensorCapture.html#a1c0cd843969fab53f157cbe0fd333b8a" title="Initializes the sensor.">init()</a></code></li>
<li>Include proper timestamps</li>
<li>Contain valid sensor data (images, depth, laser scans, etc.)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>Optional pointer to <a class="el" href="classrtabmap_1_1SensorCaptureInfo.html" title="Metadata structure for sensor data capture and processing.">SensorCaptureInfo</a> to fill with capture metadata. The base class will fill ID, timestamp, and capture time, but derived classes can add additional information. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> containing the captured sensor data</dd></dl>
<dl class="section note"><dt>Note</dt><dd>If capture fails, return an empty <a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a> (id=0, stamp=0.0). </dd>
<dd>
RGB and depth images should be already rectified if calibration was loaded.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf" title="Captures sensor data with frame rate control.">takeData()</a> </dd></dl>
<p>Implemented in <a class="el" href="classrtabmap_1_1LidarVLP16.html#a60d8190947d474e0557695c1032c40b8">rtabmap::LidarVLP16</a>.</p>
</div>
</div>
<a id="acbffaf17772639bc65b0a5457bc56b22" name="acbffaf17772639bc65b0a5457bc56b22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbffaf17772639bc65b0a5457bc56b22">&#9670;&#160;</a></span>getNextSeqID()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::SensorCapture::getNextSeqID </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the next sequence ID. </p>
<p>Returns and increments the internal sequence counter. This is used to assign unique sequence numbers to captured data.</p>
<dl class="section return"><dt>Returns</dt><dd>Next sequence ID (starts at 1, increments with each call) </dd></dl>
<p class="definition">Definition at line <a class="el" href="SensorCapture_8h_source.html#l00264">264</a> of file <a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>corelib/include/rtabmap/core/<a class="el" href="SensorCapture_8h_source.html">SensorCapture.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacertabmap.html">rtabmap</a></li><li class="navelem"><a class="el" href="classrtabmap_1_1SensorCapture.html">SensorCapture</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>