<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="l00081"name="l00081"></a><spanclass="lineno"> 81</span><spanclass="comment">// Enable multi-camera mode. Each image in the folder is expected to be the</span></div>
<divclass="line"><aid="l00082"name="l00082"></a><spanclass="lineno"> 82</span><spanclass="comment">// horizontal concatenation of N sub-camera images of a rig, sharing the same</span></div>
<divclass="line"><aid="l00083"name="l00083"></a><spanclass="lineno"> 83</span><spanclass="comment">// base name (timestamp or node id), e.g. "1780687370.031791.jpg" or "1.jpg".</span></div>
<divclass="line"><aid="l00084"name="l00084"></a><spanclass="lineno"> 84</span><spanclass="comment">// One calibration file per sub-camera must exist in the calibrationFolder</span></div>
<divclass="line"><aid="l00085"name="l00085"></a><spanclass="lineno"> 85</span><spanclass="comment">// passed to init(), named "<prefix>_<index>.yaml" with index starting at 0</span></div>
<divclass="line"><aid="l00086"name="l00086"></a><spanclass="lineno"> 86</span><spanclass="comment">// (e.g. "1_0.yaml", "1_1.yaml", ...). The number of cameras is auto-detected.</span></div>
<divclass="line"><aid="l00087"name="l00087"></a><spanclass="lineno"> 87</span><spanclass="comment">// Each sub-image width is taken from the corresponding model's calibrated image</span></div>
<divclass="line"><aid="l00088"name="l00088"></a><spanclass="lineno"> 88</span><spanclass="comment">// size; if a model has no size, a uniform split (stackedWidth / N) is assumed.</span></div>
<divclass="line"><aid="l00089"name="l00089"></a><spanclass="lineno"> 89</span><spanclass="comment">// If setConfigForEachFrame() is enabled, one calibration set is loaded per frame</span></div>
<divclass="line"><aid="l00090"name="l00090"></a><spanclass="lineno"> 90</span><spanclass="comment">// using each image's base name as prefix. Otherwise a single calibration set is</span></div>
<divclass="line"><aid="l00091"name="l00091"></a><spanclass="lineno"> 91</span><spanclass="comment">// loaded and reused for all frames, using the cameraName passed to init() as</span></div>
<divclass="line"><aid="l00092"name="l00092"></a><spanclass="lineno"> 92</span><spanclass="comment">// prefix (it may differ from any image name), falling back to the first image's</span></div>
<divclass="line"><aid="l00093"name="l00093"></a><spanclass="lineno"> 93</span><spanclass="comment">// base name when cameraName is empty.</span></div>
<divclass="line"><aid="l00094"name="l00094"></a><spanclass="lineno"> 94</span><spanclass="comment">// Note that it is not recommended to use setConfigForEachFrame() if images have</span></div>
<divclass="line"><aid="l00095"name="l00095"></a><spanclass="lineno"> 95</span><spanclass="comment">// to be rectified, a rectification matrix would need to be re-initilaized for</span></div>
<divclass="line"><aid="l00096"name="l00096"></a><spanclass="lineno"> 96</span><spanclass="comment">// each frame.</span></div>
<divclass="line"><aid="l00105"name="l00105"></a><spanclass="lineno"> 105</span><spanclass="keyword">const</span> Transform & localTransform=Transform::getIdentity())</div>
<divclass="line"><aid="l00120"name="l00120"></a><spanclass="lineno"> 120</span><spanclass="keywordtype">void</span> setOdometryPath(<spanclass="keyword">const</span> std::string & filePath, <spanclass="keywordtype">int</span> format = 0)</div>
<divclass="line"><aid="l00146"name="l00146"></a><spanclass="lineno"> 146</span><spanclass="comment">// File name (with extension, no directory) of the image returned by the last</span></div>
<divclass="line"><aid="l00147"name="l00147"></a><spanclass="lineno"> 147</span><spanclass="comment">// captureImage() call. Used by subclasses (e.g. stereo) to key per-frame</span></div>
<divclass="line"><aid="l00148"name="l00148"></a><spanclass="lineno"> 148</span><spanclass="comment">// calibration loaded on demand. Empty if no image was read.</span></div>
<divclass="line"><aid="l00149"name="l00149"></a><spanclass="lineno"> 149</span><spanclass="keyword">const</span> std::string & lastImageFileName()<spanclass="keyword"> const </span>{<spanclass="keywordflow">return</span> _lastImageFileName;}</div>
<divclass="line"><aid="l00155"name="l00155"></a><spanclass="lineno"> 155</span><spanclass="comment">// Multi-camera mode state, shared with subclasses (e.g. stereo) that layer their</span></div>
<divclass="line"><aid="l00156"name="l00156"></a><spanclass="lineno"> 156</span><spanclass="comment">// own multi-camera handling over the base reader. Such subclasses temporarily set</span></div>
<divclass="line"><aid="l00157"name="l00157"></a><spanclass="lineno"> 157</span><spanclass="comment">// _multiCameraCalib to false while delegating to base init()/captureImage() so the</span></div>
<divclass="line"><aid="l00158"name="l00158"></a><spanclass="lineno"> 158</span><spanclass="comment">// base returns the raw stacked image instead of doing its own split, then restore it.</span></div>
<divclass="line"><aid="l00160"name="l00160"></a><spanclass="lineno"> 160</span><spanclass="keywordtype">int</span> _multiCameraCount; <spanclass="comment">// number of sub-cameras detected in multi-camera mode</span></div>
<divclass="line"><aid="l00170"name="l00170"></a><spanclass="lineno"> 170</span><spanclass="comment">// Load the sub-camera models of a multi-camera rig from calibration files named</span></div>
<divclass="line"><aid="l00171"name="l00171"></a><spanclass="lineno"> 171</span><spanclass="comment">// "<baseName>_<index>.yaml" (index 0.._multiCameraCount-1) in _calibrationFolder.</span></div>
<divclass="line"><aid="l00172"name="l00172"></a><spanclass="lineno"> 172</span><spanclass="comment">// Returns an empty vector (and logs an error) if any model is missing or invalid.</span></div>
<divclass="line"><aid="l00173"name="l00173"></a><spanclass="lineno"> 173</span> std::vector<CameraModel> loadMultiCameraModels(<spanclass="keyword">const</span> std::string & baseName) <spanclass="keyword">const</span>;</div>
<divclass="line"><aid="l00175"name="l00175"></a><spanclass="lineno"> 175</span><spanclass="comment">// Load the single-camera model for one frame from a per-frame config file (RTAB-Map</span></div>
<divclass="line"><aid="l00176"name="l00176"></a><spanclass="lineno"> 176</span><spanclass="comment">// calibration or 3DScannerApp format). Returns an invalid model (and logs an error)</span></div>
<divclass="line"><aid="l00177"name="l00177"></a><spanclass="lineno"> 177</span><spanclass="comment">// on failure.</span></div>
<divclass="line"><aid="l00178"name="l00178"></a><spanclass="lineno"> 178</span> CameraModel loadConfigModel(<spanclass="keyword">const</span> std::string & filePath);</div>
<divclass="line"><aid="l00184"name="l00184"></a><spanclass="lineno"> 184</span><spanclass="comment">// If the list of files in the directory is refreshed</span></div>
<divclass="line"><aid="l00185"name="l00185"></a><spanclass="lineno"> 185</span><spanclass="comment">// on each call of takeImage()</span></div>
<divclass="line"><aid="l00195"name="l00195"></a><spanclass="lineno"> 195</span> std::string _lastImageFileName; <spanclass="comment">// file name of the image returned by the last captureImage()</span></div>
<divclass="line"><aid="l00226"name="l00226"></a><spanclass="lineno"> 226</span><spanclass="keywordtype">bool</span> _configLocalTransformWarned; <spanclass="comment">// warn only once when a per-frame config has no local_transform</span></div>
<divclass="line"><aid="l00227"name="l00227"></a><spanclass="lineno"> 227</span> std::vector<CameraModel> _multiModels; <spanclass="comment">// sub-camera models, shared by all frames (multi-camera mode); empty when loaded per-frame</span></div>
<divclass="ttc"id="aclassrtabmap_1_1CameraImages_html_a217f54d1ead7a4d6af733c2644064a5f"><divclass="ttname"><ahref="classrtabmap_1_1CameraImages.html#a217f54d1ead7a4d6af733c2644064a5f">rtabmap::CameraImages::getSerial</a></div><divclass="ttdeci">virtual std::string getSerial() const</div><divclass="ttdoc">Returns the sensor's serial number or unique identifier.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1CameraImages_html_a8f00b6eb8c78a66d3381877825d70206"><divclass="ttname"><ahref="classrtabmap_1_1CameraImages.html#a8f00b6eb8c78a66d3381877825d70206">rtabmap::CameraImages::init</a></div><divclass="ttdeci">virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")</div><divclass="ttdoc">Initializes the sensor.</div></div>
<divclass="ttc"id="aclassrtabmap_1_1CameraImages_html_aea0811d6305eec32fda10f46344c825f"><divclass="ttname"><ahref="classrtabmap_1_1CameraImages.html#aea0811d6305eec32fda10f46344c825f">rtabmap::CameraImages::odomProvided</a></div><divclass="ttdeci">virtual bool odomProvided() const</div><divclass="ttdoc">Checks if the sensor provides odometry poses.</div><divclass="ttdef"><b>Definition</b><ahref="CameraImages_8h_source.html#l00053">CameraImages.h:53</a></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>