<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 names of its contributors may be used to endorse or promote products</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment"> derived from this software without specific prior written permission.</span></div>
<divclass="line"><aid="l00015"name="l00015"></a><spanclass="lineno"> 15</span><spanclass="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment">ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<divclass="line"><aid="l00017"name="l00017"></a><spanclass="lineno"> 17</span><spanclass="comment">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<divclass="line"><aid="l00018"name="l00018"></a><spanclass="lineno"> 18</span><spanclass="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY</span></div>
<divclass="line"><aid="l00019"name="l00019"></a><spanclass="lineno"> 19</span><spanclass="comment">DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div>
<divclass="line"><aid="l00020"name="l00020"></a><spanclass="lineno"> 20</span><spanclass="comment">(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<divclass="line"><aid="l00021"name="l00021"></a><spanclass="lineno"> 21</span><spanclass="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div>
<divclass="line"><aid="l00022"name="l00022"></a><spanclass="lineno"> 22</span><spanclass="comment">ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div>
<divclass="line"><aid="l00023"name="l00023"></a><spanclass="lineno"> 23</span><spanclass="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div>
<divclass="line"><aid="l00024"name="l00024"></a><spanclass="lineno"> 24</span><spanclass="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<divclass="line"><aid="l00029"name="l00029"></a><spanclass="lineno"> 29</span><spanclass="comment">// Should be first on windows to avoid "WinSock.h has already been included" error</span></div>
<divclass="line"><aid="l00040"name="l00040"></a><spanclass="lineno"> 40</span><spanclass="comment">// On Apple, closing pcl::HDLGrabber's UDP socket while its read thread is blocked</span></div>
<divclass="line"><aid="l00041"name="l00041"></a><spanclass="lineno"> 41</span><spanclass="comment">// in receive_from returns EBADF, which pcl::HDLGrabber::readPacketsFromSocket()</span></div>
<divclass="line"><aid="l00042"name="l00042"></a><spanclass="lineno"> 42</span><spanclass="comment">// rethrows uncaught in its own thread, aborting the process on shutdown. There we</span></div>
<divclass="line"><aid="l00043"name="l00043"></a><spanclass="lineno"> 43</span><spanclass="comment">// run our own single-threaded UDP receive loop and own the socket lifecycle.</span></div>
<divclass="line"><aid="l00044"name="l00044"></a><spanclass="lineno"> 44</span><spanclass="comment">// Other platforms use the base pcl::VLPGrabber path (which also avoids needing</span></div>
<divclass="line"><aid="l00045"name="l00045"></a><spanclass="lineno"> 45</span><spanclass="comment">// boost::asio::io_context, absent from the Boost 1.65 on e.g. Ubuntu Bionic).</span></div>
<divclass="line"><aid="l00046"name="l00046"></a><spanclass="lineno"> 46</span><spanclass="comment">// Comment this out to force the base path everywhere (e.g. A/B testing on macOS).</span></div>
<divclass="line"><aid="l00087"name="l00087"></a><spanclass="lineno"> 87</span><spanclass="comment">// Overridden only on Apple: in network mode we run our own UDP receive loop</span></div>
<divclass="line"><aid="l00088"name="l00088"></a><spanclass="lineno"> 88</span><spanclass="comment">// instead of pcl::HDLGrabber's, because on macOS/BSD closing the grabber's</span></div>
<divclass="line"><aid="l00089"name="l00089"></a><spanclass="lineno"> 89</span><spanclass="comment">// socket while its read thread is blocked in receive_from returns EBADF, a</span></div>
<divclass="line"><aid="l00090"name="l00090"></a><spanclass="lineno"> 90</span><spanclass="comment">// code that pcl::HDLGrabber::readPacketsFromSocket() rethrows uncaught (in</span></div>
<divclass="line"><aid="l00091"name="l00091"></a><spanclass="lineno"> 91</span><spanclass="comment">// its own thread), aborting the process on shutdown. Owning the socket lets</span></div>
<divclass="line"><aid="l00092"name="l00092"></a><spanclass="lineno"> 92</span><spanclass="comment">// us tear it down with the non-throwing receive_from overload. Like</span></div>
<divclass="line"><aid="l00093"name="l00093"></a><spanclass="lineno"> 93</span><spanclass="comment">// pcl::HDLGrabber, we bind to the given LOCAL interface address (to scope</span></div>
<divclass="line"><aid="l00094"name="l00094"></a><spanclass="lineno"> 94</span><spanclass="comment">// reception on a multi-homed host) and fall back to all interfaces (0.0.0.0)</span></div>
<divclass="line"><aid="l00095"name="l00095"></a><spanclass="lineno"> 95</span><spanclass="comment">// when it is unspecified or not a local address. In PCAP mode we delegate to</span></div>
<divclass="line"><aid="l00096"name="l00096"></a><spanclass="lineno"> 96</span><spanclass="comment">// the base grabber. On other platforms we inherit pcl::VLPGrabber directly.</span></div>
<divclass="line"><aid="l00130"name="l00130"></a><spanclass="lineno"> 130</span><spanclass="keywordtype">bool</span> receivedScan_; <spanclass="comment">// set once the first scan is received</span></div>
<divclass="ttc"id="aclassrtabmap_1_1LidarVLP16_html_a9d533721703457a60e94124d840fee95"><divclass="ttname"><ahref="classrtabmap_1_1LidarVLP16.html#a9d533721703457a60e94124d840fee95">rtabmap::LidarVLP16::getSerial</a></div><divclass="ttdeci">virtual std::string getSerial() const override</div><divclass="ttdoc">Returns the sensor's serial number or unique identifier.</div><divclass="ttdef"><b>Definition</b><ahref="LidarVLP16_8h_source.html#l00082">LidarVLP16.h:82</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1SensorCaptureInfo_html"><divclass="ttname"><ahref="classrtabmap_1_1SensorCaptureInfo.html">rtabmap::SensorCaptureInfo</a></div><divclass="ttdoc">Metadata structure for sensor data capture and processing.</div><divclass="ttdef"><b>Definition</b><ahref="SensorCaptureInfo_8h_source.html#l00064">SensorCaptureInfo.h:65</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1SensorData_html"><divclass="ttname"><ahref="classrtabmap_1_1SensorData.html">rtabmap::SensorData</a></div><divclass="ttdoc">Container class for all sensor data captured at a specific time.</div><divclass="ttdef"><b>Definition</b><ahref="SensorData_8h_source.html#l00096">SensorData.h:97</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>