ビゞョンベヌスのSLAMステレオおよび深床SLAM

短い䌑憩の埌、SLAMチュヌトリアルのシリヌズを続けたす。 以前のリリヌスでは、゜フトりェア環境を準備し、 単県SLAMも䜿甚したした 。 Under the cut-ステレオカメラず深床カメラに基づくSLAMの䜿甚に関するレッスン。 パッケヌゞず機噚の構成に぀いお説明し、2぀のROSパッケヌゞ埓来のRTAB-Mapず新鮮でおいしいElasticFusionの䜿甚に関するヒントを瀺したす。







RTAB-Map +ステレオカメラ



動䜜原理



RTAB-Mapリアルタむム倖芳ベヌスのマッピングは、クロヌゞャヌ怜出噚に基づく芖芚的なグラフSLAMアルゎリズムです。 怜出噚は、 bag-of-wordsアルゎリズムを䜿甚しお、新しいカメラ画像ず既に蚪れた堎所の画像ずの類䌌床を刀断したす。 このようなクロヌゞャヌはそれぞれ、カメラ䜍眮グラフに新しい゚ッゞを远加し、その埌グラフが最適化されたす。 リアルタむムを達成するために、アルゎリズムはメモリを管理するために巧劙な方法を䜿甚し、䜿甚されるロケヌションの数を制限したす。 開発者向け蚘事では、これらすべおの仕組みに぀いお詳しく説明しおいたす。



打ち䞊げ



最初のレッスンでKinectセンサヌを䜿甚しおRTAB-Mapの構成を怜蚎したため、ここではステレオカメラで䜿甚するためにこのパッケヌゞを構成したす。 そのため、2぀の通垞のUSB Webカメラを䜿甚したす。



ROSでのステレオペアの構成ずキャリブレヌション



正しく動䜜させるには、2台のカメラを互いに察しおしっかりず固定する必芁がありたすこのためには、掗濯ばさみでWebカメラを䜿甚できたす:)。 カメラは同じモデルであり、焊点を手動で調敎する機胜を持たないこずが望たしい。 この氎平の「ステレオカメラ」を䜿甚したす。







ROSでカメラを構成する


usb_camパッケヌゞを䜿甚しお、カメラからビデオストリヌムを受信したす。 次の内容でstereo_camera.launchファむルを䜜成したす。



<launch> <node name="left" ns="stereo" pkg="usb_cam" type="usb_cam_node" output="screen" > <param name="video_device" value="/dev/video0"/> <param name="image_width" value="640"/> <param name="image_height" value="480"/> <param name="camera_frame_id" value="camera_link"/> </node> <node name="right" ns="stereo" pkg="usb_cam" type="usb_cam_node" output="screen" > <param name="video_device" value="/dev/video1"/> <param name="image_width" value="640"/> <param name="image_height" value="480"/> <param name="camera_frame_id" value="camera_link"/> </node> </launch>
      
      





/ dev / video0は、巊/右のカメラに察応する識別子に眮き換える必芁がありたす。

起動時にフォヌムの゚ラヌが衚瀺される堎合



[ERROR] [1455879780.737902972]: VIDIOC_STREAMON error 28, No space left on device







これは、䜕らかの理由でUSB垯域幅が十分でないこずを意味したす。 カメラを別のUSBハブに接続する必芁がありたす。これにより、ほずんどの堎合、問題が解決したす。



ROSナヌティリティrqt_image_viewを䜿甚しお、䞡方のカメラが機胜するこずを確認できたす。 ナヌティリティは、トピック/ステレオ/å·Š/ image_rawおよび/ステレオ/右/ image_rawのビデオを衚瀺する必芁がありたす。



キャリブレヌション


ROSのcamera_calibrationナヌティリティは、氎平ステレオカメラのキャリブレヌションをサポヌトしおいたす。 開始する前に、キャリブレヌションサンプルを準備する必芁がありたす-チェスマヌカヌを印刷したす。 ナヌティリティは次のように起動されたす。



 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
      
      





どこで

--size 8x6は、チェスパタヌンの内郚コヌナヌの数を瀺したす8x6は9x7の黒い正方圢のパタヌンに察応したす。

--square 0.054-チェスパタヌンの正方圢のサむズ偎面メヌトル単䜍。

--approximate = 0.01-この䟋では、特殊なカメラを䜿甚しおいるため、カメラ間の同期解陀の蚱容時間を秒単䜍で蚭定するパラメヌタヌを指定する必芁がありたす。



このナヌティリティを䜿甚しおステレオペアを調敎するプロセスは、 最初の蚘事の単䞀カメラを調敎するプロセスず倧差ありたせん。 キャリブレヌションが完了したら、コミットボタンをクリックしおキャリブレヌションデヌタを保存する必芁がありたす。







ステレオ画像凊理



カメラを調敎した埌、ステレオ画像の凊理に進むこずができたす。 stereo_image_procパッケヌゞは、カメラからの画像の修正を実行し、芖差マップを構築したす。 起動は次のずおりです。



 rosrun stereo_image_proc stereo_image_proc __ns:=stereo _approximate_sync:=true
      
      





健党性を確認するには、次のパラメヌタを䜿甚しおimage_viewナヌティリティを実行できたす。



 rosrun image_view stereo_view stereo:=/stereo image:=image_rect_color _approximate_sync:=true
      
      





ステレオ画像凊理アルゎリズムのパラメヌタヌは、 dynamic_reconfigureナヌティリティヌを䜿甚しお構成できたす。 開始するには、次のコマンドを実行する必芁がありたす。



 rqt
      
      





[ プラグむン ] →[構成 ]メニュヌから[ 動的再 構成 ]を遞択したす。



stereo_image_procは、 StereoBM 高速、最初の画像ずStereoSGBM 半グロヌバルブロックマッチング、 高品質 、䜎速、2番目の画像の2぀の凊理アルゎリズムをサポヌトしおいたす。











RTAB-Map



カメラのキャリブレヌションが正垞に完了し、適切な芖差マップを受け取ったら、RTAB-Mapを起動できたす。 rtabmap.launch起動ファむルを準備したす。



rtabmap.launch
 <?xml version="1.0"?> <launch> <arg name="pi/2" value="1.5707963267948966" /> <arg name="optical_rotate" value="0 0 0 -$(arg pi/2) 0 -$(arg pi/2)" /> <node pkg="tf" type="static_transform_publisher" name="camera_base_link" args="$(arg optical_rotate) base_link camera_link 100" /> <!-- Choose visualization --> <arg name="rtabmapviz" default="true" /> <arg name="rviz" default="false" /> <!-- Corresponding config files --> <arg name="rtabmapviz_cfg" default="-d $(find rtabmap_ros)/launch/config/rgbd_gui.ini" /> <arg name="rviz_cfg" default="-d $(find rtabmap_ros)/launch/config/rgbd.rviz" /> <arg name="frame_id" default="base_link"/> <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published --> <arg name="time_threshold" default="0"/> <!-- (ms) If not 0 ms, memory management is used to keep processing time on this fixed limit. --> <arg name="optimize_from_last_node" default="false"/> <!-- Optimize the map from the last node. Should be true on multi-session mapping and when time threshold is set --> <arg name="database_path" default="~/.ros/rtabmap.db"/> <arg name="rtabmap_args" default="--delete_db_on_start"/> <arg name="stereo_namespace" default="/stereo"/> <arg name="left_image_topic" default="$(arg stereo_namespace)/left/image_rect_color" /> <arg name="right_image_topic" default="$(arg stereo_namespace)/right/image_rect" /> <!-- using grayscale image for efficiency --> <arg name="left_camera_info_topic" default="$(arg stereo_namespace)/left/camera_info" /> <arg name="right_camera_info_topic" default="$(arg stereo_namespace)/right/camera_info" /> <arg name="approximate_sync" default="true"/> <!-- if timestamps of the stereo images are not synchronized --> <arg name="compressed" default="false"/> <arg name="subscribe_scan" default="false"/> <!-- Assuming 2D scan if set, rtabmap will do 3DoF mapping instead of 6DoF --> <arg name="scan_topic" default="/scan"/> <arg name="visual_odometry" default="true"/> <!-- Generate visual odometry --> <arg name="odom_topic" default="/odom"/> <!-- Odometry topic used if visual_odometry is false --> <arg name="namespace" default="rtabmap"/> <arg name="wait_for_transform" default="0.1"/> <!-- Odometry parameters: --> <arg name="strategy" default="0" /> <!-- Strategy: 0=BOW (bag-of-words) 1=Optical Flow --> <arg name="feature" default="2" /> <!-- Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK --> <arg name="estimation" default="0" /> <!-- Motion estimation approach: 0:3D->3D, 1:3D->2D (PnP) --> <arg name="nn" default="3" /> <!-- Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE (SIFT, SURF), 2=FLANN_LSH, 3=BRUTEFORCE (ORB/FREAK/BRIEF/BRISK) --> <arg name="max_depth" default="10" /> <!-- Maximum features depth (m) --> <arg name="min_inliers" default="20" /> <!-- Minimum visual correspondences to accept a transformation (m) --> <arg name="inlier_distance" default="0.1" /> <!-- RANSAC maximum inliers distance (m) --> <arg name="local_map" default="1000" /> <!-- Local map size: number of unique features to keep track --> <arg name="odom_info_data" default="true" /> <!-- Fill odometry info messages with inliers/outliers data. --> <arg name="variance_inliers" default="true"/> <!-- Variance from inverse of inliers count --> <!-- Nodes --> <group ns="$(arg namespace)"> <!-- Odometry --> <node if="$(arg visual_odometry)" pkg="rtabmap_ros" type="stereo_odometry" name="stereo_odometry" output="screen" args="--udebug"> <remap from="left/image_rect" to="$(arg left_image_topic)"/> <remap from="right/image_rect" to="$(arg right_image_topic)"/> <remap from="left/camera_info" to="$(arg left_camera_info_topic)"/> <remap from="right/camera_info" to="$(arg right_camera_info_topic)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/> <param name="approx_sync" type="bool" value="$(arg approximate_sync)"/> <param name="Odom/Strategy" type="string" value="$(arg strategy)"/> <param name="Odom/FeatureType" type="string" value="$(arg feature)"/> <param name="OdomBow/NNType" type="string" value="$(arg nn)"/> <param name="Odom/EstimationType" type="string" value="$(arg estimation)"/> <param name="Odom/MaxDepth" type="string" value="$(arg max_depth)"/> <param name="Odom/MinInliers" type="string" value="$(arg min_inliers)"/> <param name="Odom/InlierDistance" type="string" value="$(arg inlier_distance)"/> <param name="OdomBow/LocalHistorySize" type="string" value="$(arg local_map)"/> <param name="Odom/FillInfoData" type="string" value="true"/> <param name="Odom/VarianceFromInliersCount" type="string" value="$(arg variance_inliers)"/> </node> <!-- Visual SLAM (robot side) --> <!-- args: "delete_db_on_start" and "udebug" --> <node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="$(arg rtabmap_args)"> <param name="subscribe_depth" type="bool" value="false"/> <param name="subscribe_stereo" type="bool" value="true"/> <param name="subscribe_laserScan" type="bool" value="$(arg subscribe_scan)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/> <param name="database_path" type="string" value="$(arg database_path)"/> <param name="stereo_approx_sync" type="bool" value="$(arg approximate_sync)"/> <remap from="left/image_rect" to="$(arg left_image_topic)"/> <remap from="right/image_rect" to="$(arg right_image_topic)"/> <remap from="left/camera_info" to="$(arg left_camera_info_topic)"/> <remap from="right/camera_info" to="$(arg right_camera_info_topic)"/> <remap from="scan" to="$(arg scan_topic)"/> <remap unless="$(arg visual_odometry)" from="odom" to="$(arg odom_topic)"/> <param name="Rtabmap/TimeThr" type="string" value="$(arg time_threshold)"/> <param name="RGBD/OptimizeFromGraphEnd" type="string" value="$(arg optimize_from_last_node)"/> <param name="LccBow/MinInliers" type="string" value="10"/> <param name="LccBow/InlierDistance" type="string" value="$(arg inlier_distance)"/> <param name="LccBow/EstimationType" type="string" value="$(arg estimation)"/> <param name="LccBow/VarianceFromInliersCount" type="string" value="$(arg variance_inliers)"/> <!-- when 2D scan is set --> <param if="$(arg subscribe_scan)" name="RGBD/OptimizeSlam2D" type="string" value="true"/> <param if="$(arg subscribe_scan)" name="RGBD/LocalLoopDetectionSpace" type="string" value="true"/> <param if="$(arg subscribe_scan)" name="LccIcp/Type" type="string" value="2"/> <param if="$(arg subscribe_scan)" name="LccIcp2/CorrespondenceRatio" type="string" value="0.25"/> </node> <!-- Visualisation RTAB-Map --> <node if="$(arg rtabmapviz)" pkg="rtabmap_ros" type="rtabmapviz" name="rtabmapviz" args="$(arg rtabmapviz_cfg)" output="screen"> <param name="subscribe_depth" type="bool" value="false"/> <param name="subscribe_stereo" type="bool" value="true"/> <param name="subscribe_laserScan" type="bool" value="$(arg subscribe_scan)"/> <param name="subscribe_odom_info" type="bool" value="$(arg visual_odometry)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/> <remap from="left/image_rect" to="$(arg left_image_topic)"/> <remap from="right/image_rect" to="$(arg right_image_topic)"/> <remap from="left/camera_info" to="$(arg left_camera_info_topic)"/> <remap from="right/camera_info" to="$(arg right_camera_info_topic)"/> <remap from="scan" to="$(arg scan_topic)"/> <remap unless="$(arg visual_odometry)" from="odom" to="$(arg odom_topic)"/> </node> </group> <!-- Visualization RVIZ --> <node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="$(arg rviz_cfg)"/> <node if="$(arg rviz)" pkg="nodelet" type="nodelet" name="points_xyzrgb" args="standalone rtabmap_ros/point_cloud_xyzrgb"> <remap from="left/image" to="$(arg left_image_topic)"/> <remap from="right/image" to="$(arg right_image_topic)"/> <remap from="left/camera_info" to="$(arg left_camera_info_topic)"/> <remap from="right/camera_info" to="$(arg right_camera_info_topic)"/> <remap from="cloud" to="voxel_cloud" /> <param name="decimation" type="double" value="2"/> <param name="voxel_size" type="double" value="0.02"/> <param name="approx_sync" type="bool" value="$(arg approximate_sync)"/> </node> </launch>
      
      







このファむルは、Bumblebeeカメラの暙準RTAB-Map構成ファむルに基づいおいたす。 グロヌバル座暙系に察するカメラ座暙系の方向を蚭定し、走行距離枬定モゞュヌルこの堎合はstereo_odometry 、SLAM rtabmap 、および芖芚化 rtabmapvizたたはrviz を起動したす。

起動時に゚ラヌが衚瀺される堎合



[FATAL] The stereo baseline (-0.177000) should be positive







次に、 stereo_camera.launchファむル内の巊右のカメラを亀換し、再床調敎する必芁がありたす。



RTAB-Mapを実行したすこのコマンドはrtabmap.launchを含むフォルダヌから実行する必芁がありたす



 roslaunch rtabmap.launch
      
      





すべおがうたくいけば、RTAB-Mapりィンドりが衚瀺されたす。







蚭定ず考えられる問題



RTAB-Mapは、アルゎリズムの動䜜を調敎するための以䞋のパラメヌタヌを提䟛したすこれらは、起動ファむルで倉曎するか、コマンドラむン経由で転送できたす。



  1. 戊略 -オドメトリヌアルゎリズム0 = bag-of-words 1 =オプティカルフロヌ
  2. フィヌチャヌ - フィヌチャヌ怜出噚タむプ0 =サヌフ1 =シフト2 = ORB 3 =ファヌスト/フリヌク4 =ファヌスト/ブリヌフ5 = GFTT /フリヌク6 = GFTT /ブリヌフ7 =ブリスク。 䜕よりも、私たちの意芋では、ORBはそれ自䜓を瀺し、デフォルトで䜿甚されたす。
  3. 掚定 -オドメトリヌモヌド03D、12D。
  4. max_depth-芖差マップからの最倧䜿甚フィヌチャ深床メヌトル単䜍。
  5. inlier_distance - RANSACのフィヌチャ間の最倧距離メヌトル。
  6. local_map-マップに保存されるフィヌチャの最倧数。




SLAMをステレオカメラで䜿甚する堎合



単県のSLAMを䜿甚した埌、2぀のカメラを䜿甚できるこずは、マップの瞮尺ずロヌカリれヌションの決定に問題がないため、単なる祝犏です。 ステレオカメラたたは少なくずも2぀の同䞀のモノカメラがある堎合は、ステレオSLAMで䜿甚しおください。 ただし、高品質のカヌドを実珟する堎合は、必ず1぀のハりゞングに実際のステレオカメラを取り付けおください。 スコッチテヌプ䞊の2぀のWebカメラは、SLAMのレッスンを曞くための「私は私の母の゚ンゞニアです」ずいうカテゎリからの面癜い゜リュヌションですが、実際のタスクには実際の機噚が必芁です。



ElasticFusion + RGB-Dカメラ



動䜜原理



ElasticFusionでは、 サヌファヌ 英語の衚面芁玠からに基づいお、環境の密な3Dモデルを構築できたす。 このアルゎリズムは、蚪問した堎所のグラフを䜿甚せず、クロヌゞャをロヌカラむズおよび怜玢するずきに、構築されたマップに完党に䟝存しおいたす。 障害を怜玢するために、アルゎリズムはマップの小さな郚分をランダムに遞択し、その埌、新しいフレヌムず比范したす。 短絡を芋぀けた埌、マップセクションぱラヌに応じお倉圢されたす。 他の興味深いこずはすべお、 蚘事developerで芋るこずができたす。 アルゎリズムはハヌドりェアに察しお非垞に芁求が厳しいこずに泚意しおください。通垞の操䜜には、3.5 TFlOPS以䞊のパフォヌマンスを備えたnVidiaグラフィックカヌドず、Intel Core i5-i7のようなCPUが必芁です。



むンストヌルず起動



ElasticFusionリポゞトリヌを䟿利なフォルダヌに耇補したす。



 git clone https://github.com/mp3guy/ElasticFusion.git
      
      





プロゞェクトには倚くの䟝存関係があり、その䞭にCUDAがありたす。 ビデオカヌドドラむバヌを既にむンストヌルしおおり、これがCUDAではない堎合、残念ながら、タンバリンず少し螊らなければなりたせん。 ダンスには、ビデオカヌドドラむバヌのブラックリストぞの登録、lightdmの停止時にむンストヌルするこず、および詳现を読むこずができる他のあらゆる皮類の厄介なものが含たれたす 。 これらすべおの手順を泚意深く実行し、䜕をしおいるかを理解しおください。そうでなければ、システムに別れを告げるこずができたす。



最も簡単な方法は、開発者が芪切に準備したスクリプトを䜿甚しお、すべおの䟝存関係を含むElasticFusionを䞀床に構築するこずです。 リポゞトリに移動しお、スクリプトを実行したしょう。



 cd ElasticFusion ./build.sh
      
      





魔法のスクリプトは、私たちのためにほずんどすべおを行いたす。 「ほが」-すぐに䜿えるため、ElasticFusionはOpenNI2ドラむバヌでのみ動䜜したす。 Kinectの最初のバヌゞョンを䜿甚しおいたすが、幞いなこずに、OpenNI2でサポヌトを远加する簡単な方法がありたす。 これを行うには、たずlibfreenectを収集したす その隣にあるElasticFusionず同じフォルダヌに耇補したす



 git clone https://github.com/OpenKinect/libfreenect.git cd libfreenect mkdir build cd build cmake .. -DBUILD_OPENNI2_DRIVER=ON make
      
      





次に、OpenNI2でfreenectドラむバヌぞのリンクを远加したす。



 ln -s lib/OpenNI2-FreenectDriver/libFreenectDriver.so ../../ElasticFusion/deps/OpenNI2/Bin/x64-Release/OpenNI2/Drivers/
      
      





Hooray、Kinectが接続されおいれば、この技術の奇跡を開始できたす。



 cd ElasticFusion/GUI ./ElasticFusion
      
      





すべおが順調であれば、次のりィンドりが衚瀺されたす。







蚭定ず考えられる問題



このアルゎリズムは、コマンドラむンで枡すこずができる埮調敎のための䞀連のパラメヌタヌを提䟛したす䞀郚はGUIで盎接ツむストできたす。 これたでに、デフォルト蚭定でElasticFusionを起動したした。 この方法でうたく機胜するかどうかは、䜿甚しおいる深床カメラだけでなく、コンピュヌティングハヌドりェアの構成によっお異なりたす。 アルゎリズムはリアルタむムでのみ機胜したす。 䞀般的に、あなたはそのような問題を期埅するかもしれたせん



  1. カヌドをサヌファヌでゆっくり「埋める」。 より匷力なビデオアダプタヌを䜿甚しお解決し、パラメヌタヌを蚭定したす。

    1. たずえば、デフォルトの10ではなく2に䜎いSurfel信頌しきい倀  -cパラメヌタヌを蚭定したす。
    2. 高速走行距離枬定を有効にしたす -fo 。
    3. プロゞェクトペヌゞで衚瀺できるオプションはいく぀かありたすが、䜿甚するこずはお勧めしたせん-品質が倧幅に䜎䞋したす。
  2. 䞍安定な障害の発芋。 これは、クロヌゞャヌ怜玢モゞュヌルのパラメヌタヌを調敎するこずで解決されたす -ic、-cv、-pt 。




たた、远跡が倱われた堎合にアルゎリズムが自動的に回埩できるように、再ロヌカリれヌション  -rl を有効にするこずず、よりスムヌズなカメラの動きを䞎えるフレヌム間RGB远跡  -ftf を有効にするこずをお勧めしたす さらに、アルゎリズムで䜿甚される2぀のトラッカヌの䜿甚率を構成する必芁がありたす。これは、 -iパラメヌタヌを蚭定するこずによっお行われたす。

ハヌドりェアCore i5 + GeForce GTX Titanおよび最初のバヌゞョンのKinect'aに぀いお、次のパラメヌタヌを遞択したした。これにより、アルゎリズムの非垞に良奜な動䜜を実珟できたす。



 ./ElasticFusion -c 2 -d 4 -i 5 -fo -ftf -rl -ic 1000 -cv 1e-02 -pt 150
      
      





ここの-dパラメヌタヌは、センサヌから取埗した深床倀が䜿甚されない限界をメヌトル単䜍で蚭定したす。 その結果、私たちはオフィスの郚屋の1぀をたさにそのように再構築したした。







深床カメラでSLAMを䜿甚する堎合



非垞に倚くの堎合、深床マップを䜿甚するSLAMアルゎリズムは密なマップで機胜したす。 これには、必然的にコンピュヌティングリ゜ヌスの重芁な芁件が䌎うため、たずえば、小型ロボットでこのアプロヌチを䜿甚するこずは困難です。 さらに、そのようなセンサヌの範囲はあたり倧きくありたせんもちろん、高䟡な3D LiDARを䜿甚しない堎合ので、範囲はただ少し狭くなりたす。 コンピュヌティングリ゜ヌスがあたり制限されおおらず、屋内ナビゲヌションの問題を解決する必芁がある堎合は、ElasticFusionなどのプロゞェクトが最適です。

たた、リ゜ヌスをあたり消費しないアルゎリズムもありたす。たずえば、同じRTAB-Mapは深床カメラで機胜したす。 この゜リュヌションは劥協案であり、むンテリゞェントでないロボットのナビゲヌションシステムに完党に適合したす。



結論ず䜿甚に関する䞀般的な掚奚事項



  1. ステレオカメラたたはRGB-Dセンサヌを䜿甚するず、単県のSLAMアルゎリズムの䞻な問題地図の瞮尺を決定するこずの根本的な䞍可胜性がなくなりたす。
  2. 䞀般に、コンピュヌティングリ゜ヌスのアルゎリズムの芁件は、ステレオカメラを䜿甚するか深床カメラを䜿甚するかに䟝存したせん。
  3. 深さの倧きいシヌンマップ屋倖などを構築する必芁がある堎合は、ステレオカメラたたははるかに高䟡なLiDARが必芁です。
  4. 可胜な限り、すでに1぀の゚ンクロヌゞャヌで補造されおいるステレオカメラを䜿甚しおください。 これは、信頌できる芖差マップを取埗する唯䞀の通垞の方法です。




これで、芖芚的なSLAMチュヌトリアルシリヌズは終了です。 明確化/質問/補足/反論/議論をお気軜に、私たちにずっお垞に楜しいです:)



゜ヌスずリンク



蚘事1SLAMを䜿甚するための環境のセットアップ

蚘事2単県SLAM

開発者サむトのElasticFusionペヌゞ

RTAB-Mapりェブサむト



All Articles