{"id":275927,"date":"2016-03-11T13:17:02","date_gmt":"2016-03-11T10:17:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=275927"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=275927","title":{"rendered":"Vision-based SLAM: \u0441\u0442\u0435\u0440\u0435\u043e- \u0438 depth-SLAM"},"content":{"rendered":"<p>       \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e SLAM. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u043c\u044b <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277109\/\">\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277537\/\">\u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 \u043c\u043e\u043d\u043e\u043a\u0443\u043b\u044f\u0440\u043d\u044b\u043c SLAM<\/a>. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2013 \u0443\u0440\u043e\u043a \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e SLAM \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u044b. \u041c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0430\u0434\u0438\u043c \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0434\u0432\u0443\u0445 ROS-\u043f\u0430\u043a\u0435\u0442\u043e\u0432: \u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c RTAB-Map \u0438 \u0441\u0432\u0435\u0436\u0435\u0433\u043e \u0432\u043a\u0443\u0441\u043d\u043e\u0433\u043e ElasticFusion.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/394\/8b4\/026\/3948b402669f4b729fc3e092ea0b0b77.jpg\"\/><\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>RTAB-Map + \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u0430<\/h2>\n<p>  <\/p>\n<h3>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p>  RTAB-Map (Real-Time Appearance-Based Mapping) \u2014 \u044d\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u043e\u0432\u043e\u0433\u043e SLAM, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439. \u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c <a href=\"http:\/\/en.wikipedia.org\/wiki\/Bag-of-words_model_in_computer_vision\">bag-of-words<\/a> \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u043e\u0434\u043e\u0431\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0443\u0436\u0435 \u043f\u043e\u0441\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u041a\u0430\u0436\u0434\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0433\u0440\u0430\u0444 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u043e\u0432\u043e\u0435 \u0440\u0435\u0431\u0440\u043e, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0433\u0440\u0430\u0444 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0445\u0438\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u0412 <a href=\"http:\/\/introlab.3it.usherbrooke.ca\/mediawiki-introlab\/images\/e\/eb\/Labbe14-IROS.pdf\">\u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a> \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a<\/h3>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 RTAB-Map \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u0430 Kinect \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0430 <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277109\/\">\u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0440\u043e\u043a\u0435<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u043e\u0439. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 USB \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u044b.<\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u0441\u0442\u0435\u0440\u0435\u043e\u043f\u0430\u0440\u044b \u0432 ROS<\/h4>\n<p>  \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0432\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0436\u0451\u0441\u0442\u043a\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433\u0430 (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0430 \u043f\u0440\u0438\u0449\u0435\u043f\u043a\u0435 :). \u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043d\u0435 \u0438\u043c\u0435\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0443\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u00ab\u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u0443\u00bb:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/521\/ec0\/bdf\/521ec0bdfbc44b74b91b97daafefe16b.png\"\/><\/p>\n<h5>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u0430\u043c\u0435\u0440 \u0432 ROS<\/h5>\n<p>  \u041c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u043c <b>usb_cam<\/b> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u043e\u0442\u043e\u043a\u0430 \u0441 \u043a\u0430\u043c\u0435\u0440. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <b>stereo_camera.launch<\/b> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c<\/p>\n<pre><code class=\"xml\">&lt;launch&gt;         &lt;node name=&quot;left&quot; ns=&quot;stereo&quot; pkg=&quot;usb_cam&quot; type=&quot;usb_cam_node&quot; output=&quot;screen&quot; &gt;                 &lt;param name=&quot;video_device&quot; value=&quot;\/dev\/video0&quot;\/&gt;                 &lt;param name=&quot;image_width&quot; value=&quot;640&quot;\/&gt;                 &lt;param name=&quot;image_height&quot; value=&quot;480&quot;\/&gt; \t\t\t &lt;param name=&quot;camera_frame_id&quot; value=&quot;camera_link&quot;\/&gt;         &lt;\/node&gt; \t&lt;node name=&quot;right&quot; ns=&quot;stereo&quot; pkg=&quot;usb_cam&quot; type=&quot;usb_cam_node&quot; output=&quot;screen&quot; &gt;                 &lt;param name=&quot;video_device&quot; value=&quot;\/dev\/video1&quot;\/&gt;                 &lt;param name=&quot;image_width&quot; value=&quot;640&quot;\/&gt;                 &lt;param name=&quot;image_height&quot; value=&quot;480&quot;\/&gt; \t\t\t &lt;param name=&quot;camera_frame_id&quot; value=&quot;camera_link&quot;\/&gt;         &lt;\/node&gt; &lt;\/launch&gt; <\/code><\/pre>\n<p>  \u0433\u0434\u0435 <b>\/dev\/video0<\/b> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043b\u0435\u0432\u043e\u0439\/\u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u0438\u0434\u0430<\/p>\n<p>  <code>[ERROR] [1455879780.737902972]: VIDIOC_STREAMON error 28, No space left on device<br \/>  <\/code><br \/>  \u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 USB \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435. \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u044b \u043a \u0440\u0430\u0437\u043d\u044b\u043c USB-\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c, \u044d\u0442\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.<\/p>\n<p>  \u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0431\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b ROS <b>rqt_image_view<\/b>. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \/stereo\/left\/image_raw \u0438 \/stereo\/right\/image_raw.<\/p>\n<h5>\u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430<\/h5>\n<p>  \u0423\u0442\u0438\u043b\u0438\u0442\u0430 <b>camera_calibration<\/b> \u0432 ROS \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b. \u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u2014 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440. \u0417\u0430\u043f\u0443\u0441\u043a \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"bash\">rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.054 right:=\/stereo\/right\/image_raw left:=\/stereo\/left\/image_raw left_camera:=\/stereo\/left right_camera:=\/stereo\/right --approximate=0.01 <\/code><\/pre>\n<p>  \u0433\u0434\u0435<br \/>  <b>&#8212;size<\/b> 8&#215;6 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0443\u0433\u043b\u043e\u0432 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0437\u043e\u0440\u0430 (8\u04456 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0437\u043e\u0440\u0443 \u0438\u0437 9\u04457 \u0447\u0435\u0440\u043d\u044b\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432);<br \/>  <b>&#8212;square<\/b> 0.054 \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 (\u0441\u0442\u043e\u0440\u043e\u043d\u044b) \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0437\u043e\u0440\u0430 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445;<br \/>  <b>&#8212;approximate<\/b>=0.01 \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043c\u0435\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u043c\u0435\u0440\u0430\u043c\u0438 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.<\/p>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0435\u0440\u0435\u043e\u043f\u0430\u0440\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432 <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277109\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u00abcommit\u00bb \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8b4\/fed\/ae9\/8b4fedae9c864cb1b59036bb8d1e02c8.png\"\/><\/p>\n<h4>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0435\u0440\u0435\u043e-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0435\u0440\u0435\u043e-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041f\u0430\u043a\u0435\u0442 <b>stereo_image_proc<\/b> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u0435\u043a\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u043a\u0430\u043c\u0435\u0440 \u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u043a\u0430\u0440\u0442\u0443 \u0434\u0438\u0441\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u0438 (disparity map). \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"bash\">rosrun stereo_image_proc stereo_image_proc __ns:=stereo _approximate_sync:=true <\/code><\/pre>\n<p>  \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <b>image_view<\/b> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">rosrun image_view stereo_view stereo:=\/stereo image:=image_rect_color _approximate_sync:=true <\/code><\/pre>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0435\u0440\u0435\u043e-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <b>dynamic_reconfigure<\/b>. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443<\/p>\n<pre><code class=\"bash\">rqt <\/code><\/pre>\n<p>  \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442 <i>Dynamic reconfigure<\/i> \u0432 \u043c\u0435\u043d\u044e <i>Plugins \u2192 Configuration<\/i>.<\/p>\n<p>  <b>stereo_image_proc<\/b> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438: <b>StereoBM<\/b> (\u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0435\u0440\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430) \u0438 <b>StereoSGBM<\/b> (semi-global block matching, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0435\u0435, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0432\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f60\/f94\/f51\/f60f94f5149240878da04316f48a54d0.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/44a\/18a\/e86\/44a18ae8658f4f65b90bb432df41cec4.png\"\/><\/p>\n<h4>RTAB-Map<\/h4>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043a\u0430\u043c\u0435\u0440\u0430 \u0431\u044b\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u043d\u0430, \u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u0443\u044e disparity map, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c RTAB-Map. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c launch-\u0444\u0430\u0439\u043b <b>rtabmap.launch<\/b>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">rtabmap.launch<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">&lt;?xml version=&quot;1.0&quot;?&gt; &lt;launch&gt;    &lt;arg name=&quot;pi\/2&quot; value=&quot;1.5707963267948966&quot; \/&gt;    &lt;arg name=&quot;optical_rotate&quot; value=&quot;0 0 0 -$(arg pi\/2) 0 -$(arg pi\/2)&quot; \/&gt;    &lt;node pkg=&quot;tf&quot; type=&quot;static_transform_publisher&quot; name=&quot;camera_base_link&quot;         args=&quot;$(arg optical_rotate) base_link camera_link 100&quot; \/&gt;   &lt;!-- Choose visualization --&gt;   &lt;arg name=&quot;rtabmapviz&quot;              default=&quot;true&quot; \/&gt;    &lt;arg name=&quot;rviz&quot;                    default=&quot;false&quot; \/&gt;      &lt;!-- Corresponding config files --&gt;   &lt;arg name=&quot;rtabmapviz_cfg&quot;          default=&quot;-d $(find rtabmap_ros)\/launch\/config\/rgbd_gui.ini&quot; \/&gt;   &lt;arg name=&quot;rviz_cfg&quot;                default=&quot;-d $(find rtabmap_ros)\/launch\/config\/rgbd.rviz&quot; \/&gt;      &lt;arg name=&quot;frame_id&quot;                default=&quot;base_link&quot;\/&gt;     &lt;!-- Fixed frame id, you may set &quot;base_link&quot; or &quot;base_footprint&quot; if they are published --&gt;   &lt;arg name=&quot;time_threshold&quot;          default=&quot;0&quot;\/&gt;             &lt;!-- (ms) If not 0 ms, memory management is used to keep processing time on this fixed limit. --&gt;   &lt;arg name=&quot;optimize_from_last_node&quot; default=&quot;false&quot;\/&gt;         &lt;!-- Optimize the map from the last node. Should be true on multi-session mapping and when time threshold is set --&gt;   &lt;arg name=&quot;database_path&quot;           default=&quot;~\/.ros\/rtabmap.db&quot;\/&gt;   &lt;arg name=&quot;rtabmap_args&quot;            default=&quot;--delete_db_on_start&quot;\/&gt;                    &lt;arg name=&quot;stereo_namespace&quot;        default=&quot;\/stereo&quot;\/&gt;   &lt;arg name=&quot;left_image_topic&quot;        default=&quot;$(arg stereo_namespace)\/left\/image_rect_color&quot; \/&gt;   &lt;arg name=&quot;right_image_topic&quot;       default=&quot;$(arg stereo_namespace)\/right\/image_rect&quot; \/&gt;      &lt;!-- using grayscale image for efficiency --&gt;   &lt;arg name=&quot;left_camera_info_topic&quot;  default=&quot;$(arg stereo_namespace)\/left\/camera_info&quot; \/&gt;   &lt;arg name=&quot;right_camera_info_topic&quot; default=&quot;$(arg stereo_namespace)\/right\/camera_info&quot; \/&gt;   &lt;arg name=&quot;approximate_sync&quot;        default=&quot;true&quot;\/&gt;         &lt;!-- if timestamps of the stereo images are not synchronized --&gt;   &lt;arg name=&quot;compressed&quot;              default=&quot;false&quot;\/&gt;       &lt;arg name=&quot;subscribe_scan&quot;          default=&quot;false&quot;\/&gt;         &lt;!-- Assuming 2D scan if set, rtabmap will do 3DoF mapping instead of 6DoF --&gt;   &lt;arg name=&quot;scan_topic&quot;              default=&quot;\/scan&quot;\/&gt;       &lt;arg name=&quot;visual_odometry&quot;         default=&quot;true&quot;\/&gt;          &lt;!-- Generate visual odometry --&gt;   &lt;arg name=&quot;odom_topic&quot;              default=&quot;\/odom&quot;\/&gt;         &lt;!-- Odometry topic used if visual_odometry is false --&gt;      &lt;arg name=&quot;namespace&quot;               default=&quot;rtabmap&quot;\/&gt;   &lt;arg name=&quot;wait_for_transform&quot;      default=&quot;0.1&quot;\/&gt;      &lt;!-- Odometry parameters: --&gt;   &lt;arg name=&quot;strategy&quot;            default=&quot;0&quot; \/&gt;       &lt;!-- Strategy: 0=BOW (bag-of-words) 1=Optical Flow --&gt;   &lt;arg name=&quot;feature&quot;             default=&quot;2&quot; \/&gt;       &lt;!-- Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST\/FREAK 4=FAST\/BRIEF 5=GFTT\/FREAK 6=GFTT\/BRIEF 7=BRISK --&gt;   &lt;arg name=&quot;estimation&quot;          default=&quot;0&quot; \/&gt;       &lt;!-- Motion estimation approach: 0:3D-&gt;3D, 1:3D-&gt;2D (PnP) --&gt;   &lt;arg name=&quot;nn&quot;                  default=&quot;3&quot; \/&gt;       &lt;!-- Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE (SIFT, SURF), 2=FLANN_LSH, 3=BRUTEFORCE (ORB\/FREAK\/BRIEF\/BRISK) --&gt;   &lt;arg name=&quot;max_depth&quot;           default=&quot;10&quot; \/&gt;      &lt;!-- Maximum features depth (m) --&gt;   &lt;arg name=&quot;min_inliers&quot;         default=&quot;20&quot; \/&gt;      &lt;!-- Minimum visual correspondences to accept a transformation (m) --&gt;   &lt;arg name=&quot;inlier_distance&quot;     default=&quot;0.1&quot; \/&gt;     &lt;!-- RANSAC maximum inliers distance (m) --&gt;   &lt;arg name=&quot;local_map&quot;           default=&quot;1000&quot; \/&gt;    &lt;!-- Local map size: number of unique features to keep track --&gt;   &lt;arg name=&quot;odom_info_data&quot;      default=&quot;true&quot; \/&gt;    &lt;!-- Fill odometry info messages with inliers\/outliers data. --&gt;   &lt;arg name=&quot;variance_inliers&quot;    default=&quot;true&quot;\/&gt;    &lt;!-- Variance from inverse of inliers count --&gt;              &lt;!-- Nodes --&gt;   &lt;group ns=&quot;$(arg namespace)&quot;&gt;        &lt;!-- Odometry --&gt;     &lt;node if=&quot;$(arg visual_odometry)&quot; pkg=&quot;rtabmap_ros&quot; type=&quot;stereo_odometry&quot; name=&quot;stereo_odometry&quot; output=&quot;screen&quot; args=&quot;--udebug&quot;&gt;       &lt;remap from=&quot;left\/image_rect&quot;        to=&quot;$(arg left_image_topic)&quot;\/&gt;       &lt;remap from=&quot;right\/image_rect&quot;       to=&quot;$(arg right_image_topic)&quot;\/&gt;       &lt;remap from=&quot;left\/camera_info&quot;       to=&quot;$(arg left_camera_info_topic)&quot;\/&gt;       &lt;remap from=&quot;right\/camera_info&quot;      to=&quot;$(arg right_camera_info_topic)&quot;\/&gt; \t         &lt;param name=&quot;frame_id&quot;                 type=&quot;string&quot; value=&quot;$(arg frame_id)&quot;\/&gt;       &lt;param name=&quot;wait_for_transform_duration&quot;       type=&quot;double&quot;   value=&quot;$(arg wait_for_transform)&quot;\/&gt;       &lt;param name=&quot;approx_sync&quot;              type=&quot;bool&quot;   value=&quot;$(arg approximate_sync)&quot;\/&gt; \t         &lt;param name=&quot;Odom\/Strategy&quot;            type=&quot;string&quot; value=&quot;$(arg strategy)&quot;\/&gt;        &lt;param name=&quot;Odom\/FeatureType&quot;         type=&quot;string&quot; value=&quot;$(arg feature)&quot;\/&gt;         &lt;param name=&quot;OdomBow\/NNType&quot;           type=&quot;string&quot; value=&quot;$(arg nn)&quot;\/&gt;       &lt;param name=&quot;Odom\/EstimationType&quot;      type=&quot;string&quot; value=&quot;$(arg estimation)&quot;\/&gt;        &lt;param name=&quot;Odom\/MaxDepth&quot;            type=&quot;string&quot; value=&quot;$(arg max_depth)&quot;\/&gt;         &lt;param name=&quot;Odom\/MinInliers&quot;          type=&quot;string&quot; value=&quot;$(arg min_inliers)&quot;\/&gt;        &lt;param name=&quot;Odom\/InlierDistance&quot;      type=&quot;string&quot; value=&quot;$(arg inlier_distance)&quot;\/&gt;              &lt;param name=&quot;OdomBow\/LocalHistorySize&quot; type=&quot;string&quot; value=&quot;$(arg local_map)&quot;\/&gt;        &lt;param name=&quot;Odom\/FillInfoData&quot;        type=&quot;string&quot; value=&quot;true&quot;\/&gt;          &lt;param name=&quot;Odom\/VarianceFromInliersCount&quot; type=&quot;string&quot; value=&quot;$(arg variance_inliers)&quot;\/&gt;     &lt;\/node&gt;        &lt;!-- Visual SLAM (robot side) --&gt;     &lt;!-- args: &quot;delete_db_on_start&quot; and &quot;udebug&quot; --&gt;     &lt;node name=&quot;rtabmap&quot; pkg=&quot;rtabmap_ros&quot; type=&quot;rtabmap&quot; output=&quot;screen&quot; args=&quot;$(arg rtabmap_args)&quot;&gt;       &lt;param name=&quot;subscribe_depth&quot;     type=&quot;bool&quot;   value=&quot;false&quot;\/&gt;       &lt;param name=&quot;subscribe_stereo&quot;    type=&quot;bool&quot;   value=&quot;true&quot;\/&gt;       &lt;param name=&quot;subscribe_laserScan&quot;      type=&quot;bool&quot;   value=&quot;$(arg subscribe_scan)&quot;\/&gt;       &lt;param name=&quot;frame_id&quot;            type=&quot;string&quot; value=&quot;$(arg frame_id)&quot;\/&gt;       &lt;param name=&quot;wait_for_transform_duration&quot;  type=&quot;double&quot;   value=&quot;$(arg wait_for_transform)&quot;\/&gt;       &lt;param name=&quot;database_path&quot;       type=&quot;string&quot; value=&quot;$(arg database_path)&quot;\/&gt;       &lt;param name=&quot;stereo_approx_sync&quot;  type=&quot;bool&quot;   value=&quot;$(arg approximate_sync)&quot;\/&gt; \t       &lt;remap from=&quot;left\/image_rect&quot;        to=&quot;$(arg left_image_topic)&quot;\/&gt;       &lt;remap from=&quot;right\/image_rect&quot;       to=&quot;$(arg right_image_topic)&quot;\/&gt;       &lt;remap from=&quot;left\/camera_info&quot;       to=&quot;$(arg left_camera_info_topic)&quot;\/&gt;       &lt;remap from=&quot;right\/camera_info&quot;      to=&quot;$(arg right_camera_info_topic)&quot;\/&gt;       &lt;remap from=&quot;scan&quot;                   to=&quot;$(arg scan_topic)&quot;\/&gt;       &lt;remap unless=&quot;$(arg visual_odometry)&quot; from=&quot;odom&quot;  to=&quot;$(arg odom_topic)&quot;\/&gt;              &lt;param name=&quot;Rtabmap\/TimeThr&quot;           type=&quot;string&quot; value=&quot;$(arg time_threshold)&quot;\/&gt;       &lt;param name=&quot;RGBD\/OptimizeFromGraphEnd&quot; type=&quot;string&quot; value=&quot;$(arg optimize_from_last_node)&quot;\/&gt;       &lt;param name=&quot;LccBow\/MinInliers&quot;         type=&quot;string&quot; value=&quot;10&quot;\/&gt;       &lt;param name=&quot;LccBow\/InlierDistance&quot;     type=&quot;string&quot; value=&quot;$(arg inlier_distance)&quot;\/&gt;       &lt;param name=&quot;LccBow\/EstimationType&quot;     type=&quot;string&quot; value=&quot;$(arg estimation)&quot;\/&gt;        &lt;param name=&quot;LccBow\/VarianceFromInliersCount&quot; type=&quot;string&quot; value=&quot;$(arg variance_inliers)&quot;\/&gt;              &lt;!-- when 2D scan is set --&gt;       &lt;param if=&quot;$(arg subscribe_scan)&quot; name=&quot;RGBD\/OptimizeSlam2D&quot;          type=&quot;string&quot; value=&quot;true&quot;\/&gt;       &lt;param if=&quot;$(arg subscribe_scan)&quot; name=&quot;RGBD\/LocalLoopDetectionSpace&quot; type=&quot;string&quot; value=&quot;true&quot;\/&gt;       &lt;param if=&quot;$(arg subscribe_scan)&quot; name=&quot;LccIcp\/Type&quot;                  type=&quot;string&quot; value=&quot;2&quot;\/&gt;  \t  &lt;param if=&quot;$(arg subscribe_scan)&quot; name=&quot;LccIcp2\/CorrespondenceRatio&quot;  type=&quot;string&quot; value=&quot;0.25&quot;\/&gt;     &lt;\/node&gt;        &lt;!-- Visualisation RTAB-Map --&gt;     &lt;node if=&quot;$(arg rtabmapviz)&quot; pkg=&quot;rtabmap_ros&quot; type=&quot;rtabmapviz&quot; name=&quot;rtabmapviz&quot; args=&quot;$(arg rtabmapviz_cfg)&quot; output=&quot;screen&quot;&gt;       &lt;param name=&quot;subscribe_depth&quot;      type=&quot;bool&quot;   value=&quot;false&quot;\/&gt;       &lt;param name=&quot;subscribe_stereo&quot;     type=&quot;bool&quot;   value=&quot;true&quot;\/&gt;       &lt;param name=&quot;subscribe_laserScan&quot;       type=&quot;bool&quot;   value=&quot;$(arg subscribe_scan)&quot;\/&gt;       &lt;param name=&quot;subscribe_odom_info&quot;  type=&quot;bool&quot;   value=&quot;$(arg visual_odometry)&quot;\/&gt;       &lt;param name=&quot;frame_id&quot;             type=&quot;string&quot; value=&quot;$(arg frame_id)&quot;\/&gt;       &lt;param name=&quot;wait_for_transform_duration&quot;   type=&quot;double&quot;   value=&quot;$(arg wait_for_transform)&quot;\/&gt;            &lt;remap from=&quot;left\/image_rect&quot;        to=&quot;$(arg left_image_topic)&quot;\/&gt;       &lt;remap from=&quot;right\/image_rect&quot;       to=&quot;$(arg right_image_topic)&quot;\/&gt;       &lt;remap from=&quot;left\/camera_info&quot;       to=&quot;$(arg left_camera_info_topic)&quot;\/&gt;       &lt;remap from=&quot;right\/camera_info&quot;      to=&quot;$(arg right_camera_info_topic)&quot;\/&gt;       &lt;remap from=&quot;scan&quot;                   to=&quot;$(arg scan_topic)&quot;\/&gt;       &lt;remap unless=&quot;$(arg visual_odometry)&quot; from=&quot;odom&quot;  to=&quot;$(arg odom_topic)&quot;\/&gt;     &lt;\/node&gt;      &lt;\/group&gt;      &lt;!-- Visualization RVIZ --&gt;   &lt;node if=&quot;$(arg rviz)&quot; pkg=&quot;rviz&quot; type=&quot;rviz&quot; name=&quot;rviz&quot; args=&quot;$(arg rviz_cfg)&quot;\/&gt;   &lt;node if=&quot;$(arg rviz)&quot; pkg=&quot;nodelet&quot; type=&quot;nodelet&quot; name=&quot;points_xyzrgb&quot; args=&quot;standalone rtabmap_ros\/point_cloud_xyzrgb&quot;&gt;     &lt;remap from=&quot;left\/image&quot;        to=&quot;$(arg left_image_topic)&quot;\/&gt;     &lt;remap from=&quot;right\/image&quot;       to=&quot;$(arg right_image_topic)&quot;\/&gt;     &lt;remap from=&quot;left\/camera_info&quot;  to=&quot;$(arg left_camera_info_topic)&quot;\/&gt;     &lt;remap from=&quot;right\/camera_info&quot; to=&quot;$(arg right_camera_info_topic)&quot;\/&gt;     &lt;remap from=&quot;cloud&quot;             to=&quot;voxel_cloud&quot; \/&gt;      &lt;param name=&quot;decimation&quot;  type=&quot;double&quot; value=&quot;2&quot;\/&gt;     &lt;param name=&quot;voxel_size&quot;  type=&quot;double&quot; value=&quot;0.02&quot;\/&gt;     &lt;param name=&quot;approx_sync&quot; type=&quot;bool&quot;   value=&quot;$(arg approximate_sync)&quot;\/&gt;   &lt;\/node&gt;  &lt;\/launch&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 RTAB-Map \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440\u044b Bumblebee. \u0412 \u043d\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0438 \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438 (<b>stereo_odometry<\/b> \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435), SLAM (<b>rtabmap<\/b>) \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (<b>rtabmapviz<\/b> \u0438\u043b\u0438 <b>rviz<\/b>). <br \/>  \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430<\/p>\n<p>  <code>[FATAL] The stereo baseline (-0.177000) should be positive<br \/>  <\/code><br \/>  \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043b\u0435\u0432\u0443\u044e \u0438 \u043f\u0440\u0430\u0432\u0443\u044e \u043a\u0430\u043c\u0435\u0440\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <b>stereo_camera.launch<\/b> \u0438 \u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c RTAB-Map (\u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0437 \u043f\u0430\u043f\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 <b>rtabmap.launch<\/b>):<\/p>\n<pre><code class=\"bash\">roslaunch rtabmap.launch <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043e\u043a\u043d\u043e RTAB-Map:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/046\/313\/16d\/04631316d1494b4a9b9201942686dd12.png\"\/><\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h3>\n<p>  RTAB-Map \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 (\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 launch \u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443):<\/p>\n<ol>\n<li><b>strategy<\/b> \u2014 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438: 0=bag-of-words 1=\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0442\u043e\u043a<\/li>\n<li><b>feature<\/b> \u2014 \u0442\u0438\u043f \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0444\u0438\u0447: 0=SURF 1=SIFT 2=ORB 3=FAST\/FREAK 4=FAST\/BRIEF 5=GFTT\/FREAK 6=GFTT\/BRIEF 7=BRISK. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0441\u0435\u0431\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 ORB, \u043e\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/li>\n<li><b>estimation<\/b> \u2014 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438: 0:3D, 1:2D.<\/li>\n<li><b>max_depth<\/b> \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0444\u0438\u0447 \u0438\u0437 disparity map \u0432 \u043c\u0435\u0442\u0440\u0430\u0445.<\/li>\n<li><b>inlier_distance<\/b> \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0444\u0438\u0447\u0430\u043c\u0438 \u0434\u043b\u044f RANSAC \u0432 \u043c\u0435\u0442\u0440\u0430\u0445.<\/li>\n<li><b>local_map<\/b> \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0438\u0447 \u0432 \u043a\u0430\u0440\u0442\u0435.<\/li>\n<\/ol>\n<h3>\u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SLAM \u0441\u043e \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u043e\u0439?<\/h3>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u043e\u043d\u043e\u043a\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 SLAM \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u043a\u0430\u0440\u0442\u044b \u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u0430 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u0432\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043c\u043e\u043d\u043e\u043a\u0430\u043c\u0435\u0440\u044b \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u0445 \u0438 \u0441\u0442\u0435\u0440\u0435\u043eSLAM. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u0430\u0440\u0442\u044b, \u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0437\u0430\u0432\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0435. \u0414\u0432\u0435 \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0430 \u0441\u043a\u043e\u0442\u0447\u0435 \u2014 \u044d\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0437 \u0440\u0430\u0437\u0440\u044f\u0434\u0430 \u00ab\u044f \u0443 \u043c\u0430\u043c\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u00bb \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0443\u0440\u043e\u043a\u0430 \u043f\u043e SLAM, \u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h2>ElasticFusion + RGB-D \u043a\u0430\u043c\u0435\u0440\u0430<\/h2>\n<p>  <\/p>\n<h3>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p>  ElasticFusion \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043b\u043e\u0442\u043d\u044b\u0435 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Surfel\">\u0441\u0443\u0440\u0444\u0435\u043b\u0435\u0439<\/a> (\u043e\u0442 \u0430\u043d\u0433\u043b. surface element). \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0433\u0440\u0430\u0444 \u043f\u043e\u0441\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043f\u0440\u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439. \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u0430\u0440\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043a\u0430\u0434\u0440\u044b. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u0430\u0440\u0442\u044b \u0434\u0435\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 <a href=\"http:\/\/thomaswhelan.ie\/Whelan15rss.pdf\">\u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a>. \u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043d \u043a \u0436\u0435\u043b\u0435\u0437\u0443: \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 nVidia \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u043e\u043b\u0435\u0435 3.5 TFlOPS, \u0430 \u0442\u0430\u043a\u0436\u0435 CPU \u0432\u0440\u043e\u0434\u0435 Intel Core i5 \u2014 i7.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a<\/h3>\n<p>  \u0421\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 ElasticFusion \u0432 \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0412\u0430\u043c \u043f\u0430\u043f\u043a\u0443:<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/mp3guy\/ElasticFusion.git <\/code><\/pre>\n<p>  \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435\u043c\u0430\u043b\u043e, \u0438 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u2013 CUDA. \u0415\u0441\u043b\u0438 \u0412\u044b \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b, \u0438 \u044d\u0442\u043e \u043d\u0435 CUDA, \u0442\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u043b\u044f\u0441\u0430\u0442\u044c \u0441 \u0431\u0443\u0431\u043d\u043e\u043c. \u0422\u0430\u043d\u0446\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0437\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0432 \u0447\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0440\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c lightdm \u0438 \u0432\u0441\u044f\u043a\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0433\u0430\u0434\u043e\u0441\u0442\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/cuda-hpcmind.blogspot.ru\/2015\/08\/full-recipe-to-install-cuda-7-on-ubuntu.html\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043e\u0447\u0435\u043d\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e \u0438 \u0441 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0412\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435, \u0438\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.<br \/>  \u041f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c ElasticFusion \u0441\u0440\u0430\u0437\u0443 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"bash\">cd ElasticFusion .\/build.sh <\/code><\/pre>\n<p>  \u0412\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430 \u043d\u0430\u0441 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451. \u201c\u041f\u043e\u0447\u0442\u0438\u201d \u2014 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 ElasticFusion \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 OpenNI2. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Kinect \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0438, \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432 OpenNI2. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0431\u0435\u0440\u0451\u043c <b>libfreenect<\/b> (\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451 \u0432 \u0442\u0443 \u0436\u0435 \u043f\u0430\u043f\u043a\u0443, \u0447\u0442\u043e \u0438 ElasticFusion, \u0440\u044f\u0434\u044b\u0448\u043a\u043e\u043c):<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/OpenKinect\/libfreenect.git cd libfreenect mkdir build cd build cmake .. -DBUILD_OPENNI2_DRIVER=ON make <\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 freenect \u0432 OpenNI2:<\/p>\n<pre><code class=\"bash\">ln -s lib\/OpenNI2-FreenectDriver\/libFreenectDriver.so ..\/..\/ElasticFusion\/deps\/OpenNI2\/Bin\/x64-Release\/OpenNI2\/Drivers\/ <\/code><\/pre>\n<p>  \u0423\u0440\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0447\u0443\u0434\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d Kinect:<\/p>\n<pre><code class=\"bash\">cd ElasticFusion\/GUI .\/ElasticFusion <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u043e\u043a\u043d\u043e:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/439\/b4a\/73e\/439b4a73e3424ff2a59169af13b197ed.png\"\/><\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h3>\n<p>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0447\u043a\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 (\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 GUI). \u041f\u043e\u043a\u0430 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 ElasticFusion \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043d\u043e \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0412\u0430\u0448\u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u044b. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c\u0435; \u0432\u043e\u043e\u0431\u0449\u0435, \u0412\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u0436\u0438\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ol>\n<li>\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u201c\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u201d \u043a\u0430\u0440\u0442\u044b \u0441\u0443\u0440\u0444\u0435\u043b\u044f\u043c\u0438. \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<br \/> \n<ol>\n<li>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <i>Surfel confidence threshold<\/i> (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <i>-c<\/i>), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 2 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 10;<\/li>\n<li>\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c <i>Fast odometry<\/i> (<i>-fo<\/i>);<\/li>\n<li>\u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043f\u0430\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u2013 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e.<\/li>\n<\/ol>\n<\/li>\n<li>\u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439. \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 (<i>-ic, -cv, -pt<\/i>).<\/li>\n<\/ol>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e (<i>-rl<\/i>), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043f\u043e\u0442\u0435\u0440\u0435 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0433 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c <i>frame-to-frame RGB tracking<\/i> (<i>-ftf<\/i>), \u0447\u0442\u043e \u0434\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u0442\u0440\u0435\u043a\u0435\u0440\u043e\u0432, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <i>-i<\/i>.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 (Core i5 + GeForce GTX Titan) \u0438 Kinect&#8217;\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u044b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430:<\/p>\n<pre><code class=\"bash\">.\/ElasticFusion -c 2 -d 4 -i 5 -fo -ftf -rl -ic 1000 -cv 1e-02 -pt 150 <\/code><\/pre>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <i>-d<\/i> \u0437\u0434\u0435\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u044b, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u0430, \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043e\u043c\u043d\u0430\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0444\u0438\u0441\u0430:<\/p>\n<p>  <iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/iYWwCrgRyu0?feature=oembed\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<h3>\u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SLAM \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b?<\/h3>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b SLAM, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u044b, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u043f\u043b\u043e\u0442\u043d\u044b\u043c\u0438 (dense) \u043a\u0430\u0440\u0442\u0430\u043c\u0438. \u042d\u0442\u043e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u0432\u043b\u0435\u0447\u0451\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043c\u0430\u043b\u043e\u0433\u0430\u0431\u0430\u0440\u0438\u0442\u043d\u044b\u0445 \u0440\u043e\u0431\u043e\u0442\u0430\u0445 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0432\u0435\u043b\u0438\u043a\u0430 (\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043e\u0440\u043e\u0433\u0443\u0449\u0438\u0439 3D LiDAR), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445, \u0438 \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0432 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u2014 \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432\u0440\u043e\u0434\u0435 ElasticFusion \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0412\u0430\u043c \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u043c\u0435\u043d\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0442 \u0436\u0435 RTAB-Map \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0441 \u043a\u0430\u043c\u0435\u0440\u0430\u043c\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u044b. \u0422\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u044b\u043c \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0432\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043c\u0435\u043d\u0435\u0435 \u0443\u043c\u043d\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430. <\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b \u0438 \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e<\/h3>\n<p>  <\/p>\n<ol>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b \u0438\u043b\u0438 RGB-D \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u043d\u043e\u043a\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 SLAM \u2014 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u043a\u0430\u0440\u0442\u044b.<\/li>\n<li>\u0412 \u0446\u0435\u043b\u043e\u043c, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u2014 \u0441\u0442\u0435\u0440\u0435\u043e \u0438\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u0443 \u0433\u043b\u0443\u0431\u0438\u043d\u044b.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u0441\u0446\u0435\u043d\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439), \u0442\u043e \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u0430 (\u0438\u043b\u0438 LiDAR, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e\u0440\u043e\u0436\u0435).<\/li>\n<li>\u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b, \u0443\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0435. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0434\u0451\u0436\u043d\u0443\u044e disparity map.<\/li>\n<\/ol>\n<p>  \u042d\u0442\u0438\u043c \u043c\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 SLAM. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c\/\u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c\/\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c\/\u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c\/\u0434\u0438\u0441\u043a\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u044d\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u043e \ud83d\ude42<\/p>\n<h2>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438 \u0441\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277109\/\">\u0421\u0442\u0430\u0442\u044c\u044f 1: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e SLAM<\/a><br \/>  <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277537\/\">\u0421\u0442\u0430\u0442\u044c\u044f 2: \u043c\u043e\u043d\u043e\u043a\u0443\u043b\u044f\u0440\u043d\u044b\u0439 SLAM<\/a><br \/>  <a href=\"http:\/\/www.imperial.ac.uk\/dyson-robotics-lab\/downloads\/elastic-fusion\/\">\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 ElasticFusion \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a><br \/>  <a href=\"http:\/\/introlab.github.io\/rtabmap\/\">\u0421\u0430\u0439\u0442 RTAB-Map<\/a>               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/279035\/\"> https:\/\/habrahabr.ru\/post\/279035\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e SLAM. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u043c\u044b <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277109\/\">\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/company\/singularis\/blog\/277537\/\">\u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 \u043c\u043e\u043d\u043e\u043a\u0443\u043b\u044f\u0440\u043d\u044b\u043c SLAM<\/a>. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2013 \u0443\u0440\u043e\u043a \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e SLAM \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0435\u0440\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u044b. \u041c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0430\u0434\u0438\u043c \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0434\u0432\u0443\u0445 ROS-\u043f\u0430\u043a\u0435\u0442\u043e\u0432: \u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c RTAB-Map \u0438 \u0441\u0432\u0435\u0436\u0435\u0433\u043e \u0432\u043a\u0443\u0441\u043d\u043e\u0433\u043e ElasticFusion.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/394\/8b4\/026\/3948b402669f4b729fc3e092ea0b0b77.jpg\"\/><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-275927","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/275927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=275927"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/275927\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=275927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=275927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=275927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}