
詳现ã®ãã詳现ãªåæã®ããã«ãæ¬æ¥ã¯ãåçŒSLAMã®2ã€ã®å®è£ ORB SLAMãšLSD SLAMã«éå®ããŸãã ãããã®ã¢ã«ãŽãªãºã ã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ã¯ã©ã¹ã§æãå é²çã§ãã PTAMãéåžžã«äžè¬çã§ãããããšãã°ORB SLAMã»ã©ã¯ãŒã«ã§ã¯ãããŸããã
ãã£ãªãã¬ãŒã·ã§ã³ãã©ã¡ãŒã¿ãŒã®ååŸ
ãã¹ãŠã®åçŒSLAMã¢ã«ãŽãªãºã ã«ã¯ãæ£ç¢ºãªã«ã¡ã©ãã£ãªãã¬ãŒã·ã§ã³ãå¿ èŠã§ãã ããã¯ååã®ã¬ãã¹ã³ã§è¡ããŸããããã«ã¡ã©ã®èšå®ãæœåºããŸãã 䜿çšããã«ã¡ã©ã¢ãã«ã«ã€ããŠã¯ãã«ã¡ã©è¡åïŒfxãfyãcxãcyïŒãšæªã¿é¢æ°ã®5ã€ã®ãã©ã¡ãŒã¿ãŒïŒk1ãk2ãp1ãp2ãk3ïŒãæœåºããå¿ èŠããããŸãã ã/ .ros / camera_infoãã£ã¬ã¯ããªã«ç§»åããããã«ã«ã¡ã©èšå®ãå«ãYAMLãã¡ã€ã«ãéããŸãã ãã¡ã€ã«ã®å 容ã¯æ¬¡ã®ããã«ãªããŸãïŒardrone_frontã®ä»£ããã«å¥ã®ååããããŸãïŒã
æ ¡æ£ãã¡ã€ã«
image_width: 640
image_height: 360
camera_name: ardrone_front
camera_matrix:
rows: 3
cols: 3
data: [569.883158064802, 0, 331.403348466206, 0, 568.007065238522, 135.879365106014, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [-0.526629354780687, 0.274357114262035, 0.0211426202132638, -0.0063942451330052, 0]
rectification_matrix:
rows: 3
cols: 3
data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
rows: 3
cols: 4
data: [463.275726318359, 0, 328.456687172518, 0, 0, 535.977355957031, 134.693732992726, 0, 0, 0, 1, 0]
camera_matrixãã£ãŒã«ããšdistortion_coefficientsãã£ãŒã«ãã«èå³ããããŸãããããã®ãã£ãŒã«ãã«ã¯ã次ã®åœ¢åŒã§ç®çã®å€ãå«ãŸããŠããŸãã
camera_matrix:
rows: 3
cols: 3
data: [fx, 0, fy, 0, cx, cy, 0, 0, 1]
distortion_coefficients:
rows: 1
cols: 5
data: [k1, k2, p1, p2, k3]
ãããã®å€ãä¿åããŠãã ããããããã¯ããã«åœ¹ç«ã¡ãŸãã
ãªãŒãã¹ã©ã
åäœåç
ORB SLAMã¢ã«ãŽãªãºã å šäœã®åäœåçã¯ãä»ã®èŠèŠçãªSLAMãšããŸãå€ãããŸããã ç¹åŸŽã¯ç»åããæœåºãããŸãã 次ã«ã ãã³ãã«èª¿æŽã¢ã«ãŽãªãºã ã䜿çšããŠãããŸããŸãªç»åã®æ©èœã3D空éã«é 眮ããåæã«æ®åœ±æã®ã«ã¡ã©ã®äœçœ®ãèšå®ããŸãã ãã ããæ©èœããããŸãã ãã¹ãŠã®å Žåã«ãããŠãåäžã®ç¹åŸŽæ€åºåšã䜿çšãããŸã-ORBïŒOriented FASTããã³Rotated BriefïŒ ã ããã¯éåžžã«é«éãªæ€åºåšã§ããïŒGPUã䜿çšããã«ãªã¢ã«ã¿ã€ã ãå®çŸã§ããŸãïŒãçµæã®ãã¥ãŒã®ORBèšè¿°åã¯ãç»è§ãã«ã¡ã©ã®å転ãããã³å ã«å¯ŸããŠé«åºŠã«äžå€ã§ãã ããã«ãããã¢ã«ãŽãªãºã ã¯é«ã粟床ãšä¿¡é Œæ§ã§ãµã€ã¯ã«ã¯ããŒãžã£ã远跡ã§ãããŸãåå±åšåäžã«é«ãä¿¡é Œæ§ãæäŸããŸãã ã¢ã«ãŽãªãºã ã¯ãæçµçã«ããããæ©èœããŒã¹ã®ã¯ã©ã¹ã«å±ããŸãã ORB SLAMã¯ãšãªã¢ã®çãªããããäœæããŸãããããŒãã¬ãŒã ã®ç»åã«åºã¥ããŠå¯ãªããããäœæããããšã¯å¯èœã§ãã éçºè ã«ããèšäºã®ã¢ã«ãŽãªãºã ã«ç²Ÿéããããšãã§ããŸãã
æã¡äžã
åã®ã¬ãã¹ã³ã§ã¯ORB SLAMãã€ã³ã¹ããŒã«ããããã»ã¹ã«ã€ããŠã¯èª¬æããŠããŸããã§ããã®ã§ãããã§è©³ããèŠãŠãããŸãããã ãã§ã«ã€ã³ã¹ããŒã«ãããŠããç°å¢ã«å ããŠã Pangolinãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãïŒROSã¯ãŒã¯ã¹ããŒã¹ã§ãªããžããªãè€è£œããªãã§ãã ããïŒïŒ
git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake -DCPP11_NO_BOOST=1 .. make -j
次ã«ãå®éã®ORB SLAMãã€ã³ã¹ããŒã«ããŸãïŒããã§ããã¯ãŒã¯ã¹ããŒã¹ã®ãœãŒã¹ãè€è£œããªãã§ãã ããïŒã
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 cd ORB_SLAM2 chmod +x build.sh ./build.sh
ROSã§ããã±ãŒãžã䜿çšããã«ã¯ãROS_PACKAGE_PATHã®ãã€ããªãžã®ãã¹ãè¿œå ããå¿ èŠããããŸãïŒPATHãORB SLAMãã€ã³ã¹ããŒã«ãããã¹ã«çœ®ãæããŸãïŒã
echo export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS >> ~/.bashrc source ~/.bashrc
次ã«ãèšå®ãã¡ã€ã«èªäœã«ã«ã¡ã©ãã£ãªãã¬ãŒã·ã§ã³ããŒã¿ãšORB SLAMèšå®ãå ¥åããå¿ èŠããããŸãã Examples / Monocularãã£ã¬ã¯ããªã«ç§»åãããã¡ã€ã«TUM1.yamlãã³ããŒããŸãã
cd Examples/Monocular cp TUM1.yaml our.yaml
ã³ããŒãããã¡ã€ã«our.yamlãéããã«ã¡ã©ãã£ãªãã¬ãŒã·ã§ã³ãã©ã¡ãŒã¿ãŒãäžèšã§ååŸãããã®ã«çœ®ãæããFPSãèšå®ããŸãã
æ§æãã¡ã€ã«
%YAML:1.0
#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
# Camera calibration and distortion parameters (OpenCV)
Camera.fx: 563.719912
Camera.fy: 569.033809
Camera.cx: 331.711374
Camera.cy: 175.619211
Camera.k1: -0.523746
Camera.k2: 0.306187
Camera.p1: 0.011280
Camera.p2: 0.003937
Camera.k3: 0
# Camera frames per second
Camera.fps: 30.0
# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1
#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------
# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000
# ORB Extractor: Scale factor between levels in the scale pyramid
ORBextractor.scaleFactor: 1.2
# ORB Extractor: Number of levels in the scale pyramid
ORBextractor.nLevels: 8
# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7
#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize:2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500
ãã¡ã€ã«ãä¿åããŸãã ããã§ORB SLAMãå®è¡ã§ããŸãïŒã¿ãŒããã«ã®ç°ãªãã¿ãã§3ã€ã®ã³ãã³ããå®è¡ããŸãïŒã
roscore
rosrun usb_cam usb_cam_node _video_device:=dev/video0 â
rosrun ORB_SLAM2 Mono ../../Vocabulary/ORBvoc.txt our.yaml /camera/image_raw:=/usb_cam/image_raw
ãã¹ãŠãããŸãããã°ã2ã€ã®ãŠã£ã³ããŠã衚瀺ãããã¯ãã§ãã

ã«ã¡ã©ãã€ã¡ãŒãžãã¬ãŒã³å ã§ãããã«ç§»åããŠãSLAMãåæåããŸãã

ããã¯ãã¹ãŠçŽ æŽãããããšã§ãããORB SLAMã¯ROSã«äŸåããªãããã±ãŒãžãšããŠèšèšãããŸããã å®éã«èµ·åãããã€ããªã¯ãROSã§ã¢ã«ãŽãªãºã ã䜿çšããäŸã«ãããŸããã äžæ確ãªããžãã¯ã«ãããéçºè ã¯ãã®äŸã«ã¢ãŒã·ã§ã³ãã¹ã®å ¬éãå«ãããäœæ¥ã®å®äºåŸã«KeyFrameTrajectory.txtããã¹ããã¡ã€ã«ãšããŠã®ã¿ä¿åããŸããã ãã®ãããªåºçç©ã«ã¯æ°è¡ã®ã³ãŒããå¿ èŠã§ãã
ãã©ã¡ãŒã¿èšå®
ãã®ã¢ã«ãŽãªãºã ã¯ãã¥ãŒãã³ã°çšã®ãã©ã¡ãŒã¿ãŒãã»ãšãã©æäŸãããäžèšã®èµ·åãã¡ã€ã«ã«éåžžã«æ£ç¢ºã«èšè¿°ãããŠããŸãã
ORB SLAMã䜿çšããå Žå
ãªã³ããŒããªã©ã§åäœããé«éã¢ã«ãŽãªãºã ãå¿ èŠã§ãç°å¢ã«å€§ããªãã©ãããªã¢ããã©ããã¯ãªããžã§ã¯ããå«ãŸããŠããªãå Žåã¯ãORB SLAMãæé©ã§ãã
LSDã¹ã©ã
åäœåç
AR.Droneã®ããã²ãŒã·ã§ã³å®éšã«é¢ããèšäºã§ãLSD SLAMã®åçã«ã€ããŠã¯ãã§ã«ç°¡åã«è§ŠããŸããã ã¢ã«ãŽãªãºã ã®ãã詳现ãªåæã¯ãæããã«ã¬ãã¹ã³ã®åœ¢åŒã«é©åããŸãããããã«ã€ããŠã¯ã éçºè ã®èšäºãã芧ãã ãã ã
æã¡äžã
LSD SLAMãã€ã³ã¹ããŒã«ããåŸïŒåã®ã¬ãã¹ã³ã®ã¬ã€ãã«åŸã£ãŠïŒãéå§ããã«ã¯æ¬¡ãæºåããå¿ èŠããããŸãã
- Camera.cfgã«ã¡ã©ãã£ãªãã¬ãŒã·ã§ã³ãã¡ã€ã«
ã/ ros_workspace / rosbuild / package / lsd_slam / lsd_slam_core / calibãã£ã¬ã¯ããªã«camera.cfgãã¡ã€ã«ãäœæããŸã
ãã®ãµã³ãã«ã«åŸã£ãŠãã£ãªãã¬ãŒã·ã§ã³ãã©ã¡ãŒã¿ãŒãcamera.cfgã®æåã®è¡ã«ã³ããŒããŸãïŒ5çªç®ã®æªã¿ãã©ã¡ãŒã¿ãŒã¯äœ¿çšãããªãããšã«æ³šæããŠãã ããïŒã
fx fy cx cy k1 k2 p1 p2
640 360
crop
640 480
次ã®è¡ã§ãå ã®ç»åã®å¹ ãšé«ããèšå®ããæåŸã®è¡ã¯å€æŽããªããŸãŸã«ããŸãã
- Lsd_slam.launchã¹ã¿ãŒãã¢ãããã¡ã€ã«
<?xml version="1.0"?> <launch> <node pkg="usb_cam" type="usb_cam_node" name="camera" output="screen"> <param name="video_device" value="/dev/video0"/> </node> <node name="lsd_slam_node" type="live_slam" pkg="lsd_slam_core" args="/image:=usb_cam/image_raw _calib:=$(find lsd_slam_core)/calib/camera.cfg" output="screen"> <param name="minUseGrad" value="10" /> <param name="cameraPixelNoise" value="1"/> <param name="KFUsageWeight" value="14" /> <param name="KFDistWeight" value="14" /> <param name="useAffineLightningEstimation" value="True" /> <param name="relocalizationTH" value="0.1" /> <param name="useFabMap" value="True"/> </node> <node name="image_view_node" type="image_view" pkg="image_view" args="image:=usb_cam/image_raw" respawn="true"/> </launch>
LSD SLAMãèµ·åããŸãïŒèµ·åãã¡ã€ã«ã®ãããã©ã«ããŒããïŒïŒ
roslaunch lsd_slam.launch
ãã¹ãŠãããŸããããšã2ã€ã®ãŠã£ã³ããŠã衚瀺ãããŸãã

ïŒå¥ã®ã¿ãŒããã«ãŠã£ã³ããŠã§ïŒLSD SLAMé ä¿¡ãããã€ã³ãã¯ã©ãŠããã¥ãŒã¢ãŒãèµ·åããŸãã
rosrun lsd_slam_viewer viewer
ãã¥ãŒã¢ã¯æ¬¡ã®ããã«ãªããŸãã

ãã©ã¡ãŒã¿èšå®
ãã®ã¢ã«ãŽãªãºã ã¯ã調æŽã®ããã®ããã€ãã®ãã©ã¡ãŒã¿ãŒãæäŸããŸãããæãéèŠãªã®ã¯æ¬¡ã®ãã©ã¡ãŒã¿ãŒã§ãã
- minUseGrad-æ°ãã3Dãã€ã³ããäœæããããã®æå°åŒ·åºŠåŸé ã å€ãäœãã»ã©ãã¢ã«ãŽãªãºã ã¯ãœãªãããªããžã§ã¯ãã§ããé©åã«æ©èœãããããã¯ããå¯ã«ãªããŸãã ãã ãããã®å€ãäœãã»ã©ãã«ã¡ã©ã®ä¿®æ£ãšã©ãŒãSLAMå質ã«æããã«åœ±é¿ããŸãã ãŸããå€ãå°ãããããšãã¢ã«ãŽãªãºã ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããŸãã
- cameraPixelNoise-ãã¯ã»ã«åŒ·åºŠå€ã®ãã€ãºã é¢æ£åãšè£éã®èª€å·®ãèæ ®ããããã«ããããªãã¯ã¹ã®å®éã®ãã€ãºããã倧ããªå€ãèšå®ããå¿ èŠããããŸãã
- useAffineLightningEstimation-èªåé²åºã®åé¡ãä¿®æ£ããããã«æå¹ã«ããããšãã§ããŸãã
- useFabMap-ã«ãŒããèŠã€ããããã«openFabMapãæå¹ã«ããŸãã
æšå¥šäºé
- 匷åãªCPUã§ã¢ã«ãŽãªãºã ãå®è¡ããŸãã ORB SLAMãšã¯ç°ãªããLSD SLAMã«ã¯å€§ããªããŒããŠã§ã¢èŠä»¶ããããŸãã ããã«ãã¢ã«ãŽãªãºã ã¯ãªã¢ã«ã¿ã€ã ã§åäœããå¿ èŠããããŸããããã§ãªãå Žåã蚱容å¯èœãªSLAMå質ã«ã€ããŠè©±ãããšãã§ããŸããã
- ã«ã¡ã©ãã§ããéãæ£ç¢ºã«èª¿æŽããŸãã LSD SLAMãå«ãçŽæ¥æ³ã¯ãæ ¡æ£å質ã«éåžžã«ææã§ãã
- å¯èœã§ããã°ãã°ããŒãã«ã·ã£ãã¿ãŒã«ã¡ã©ã䜿çšããŸãã ããŒãªã³ã°ã·ã£ãã¿ãŒã䜿çšã§ããŸãïŒå®éããã®ã¿ã€ãã®ã·ã£ãã¿ãŒã®ã¿ã䜿çšããŸããïŒããçµæã¯ããã«æªããªããŸãã
LSD SLAMã䜿çšããå Žå
å¯éããå°åœ¢ããããå¿ èŠãªå ŽåïŒããšãã°ãé害ç©ããããæ§ç¯ããããïŒããŸãã¯ç°å¢ã«ååãªæ©èœãå«ãŸããŠããªãå Žåãã€ãŸããã¯ã¹ãã£ã®ç²ã倧ããªãªããžã§ã¯ããå«ãŸããŠããããã©ãããã©ãŒã ãååãªã³ã³ãã¥ãŒãã£ã³ã°æ©èœãæäŸããŠããå Žåã¯ãLSD SLAMãé©ããŠããŸãã
æ©èœããŒã¹ãš çŽæ¥
LSD SLAM Jacob Engelã®äœæè ã¯ãæ©èœããŒã¹ã®åçŒã¢ã«ãŽãªãºã ãšãç»åå šäœã䜿çšãããããããã€ã¬ã¯ãã¢ã«ãŽãªãºã ãæ¯èŒãããã¬ãŒã³ããŒã·ã§ã³ã§æ¬¡ã®ãããªããŒãã«ã瀺ããŸããïŒç¿»èš³ïŒã
æ©èœããŒã¹ | çŽæ¥ |
---|---|
æ©èœã®ã¿ã䜿çšããïŒäŸïŒã³ãŒããŒïŒ | ç»åå šäœãäœ¿çš |
ããéã | é ãïŒãã ã䞊ååã¯è¯å¥œïŒ |
ãã€ãºã®é€å»ãç°¡åïŒå€ãå€ïŒ | ãã€ãºãé€å»ããã®ã¯ããã»ã©ç°¡åã§ã¯ãããŸãã |
ããŒãªã³ã°ã·ã£ãã¿ãŒã«åŒ·ã | ããŒãªã³ã°ã·ã£ãã¿ãŒã«å¯ŸããŠäžå®å® |
ç»åã®äžéšã®æ å ±ã䜿çšãã | ããå®å šãªæ å ±ã䜿çšãã |
è€éãªåæåã¯äžèŠ | é©åãªåæåãå¿ èŠ |
20幎以äžã®éäžçãªéçº | çŽ4幎éã®ç 究 |
äœããè¿œå ããã®ã¯é£ããã§ãã
䜿çšã«é¢ããäžè¬çãªæšå¥šäºé
ãã¹ãŠã®åçŒã¢ã«ãŽãªãºã ã«ã¯ãåæ§ã®èŠä»¶ãšå¶éããããŸãã
- æ£ç¢ºãªã«ã¡ã©ãã£ãªãã¬ãŒã·ã§ã³ã®å¿ èŠæ§ã æ©èœããŒã¹ã®ã¢ã«ãŽãªãºã ã«ã¯ããã»ã©éèŠã§ã¯ãããŸããã
- å€éšã»ã³ãµãŒãŸãã¯ãŠãŒã¶ãŒã®å©ããªãã«ã¹ã±ãŒã«ã決å®ã§ããªãã
- ã«ã¡ã©ã®èŠä»¶ïŒé«FPS +åºèŠéè§ã ãããã®ãã©ã¡ãŒã¿ãŒã¯ãçžäºãšã«ã¡ã©ã®æ倧é床ã®äž¡æ¹ã«é¢é£ããŠããŸãã
ãã®ãããªæ©èœãšãã®ãããªã¢ã«ãŽãªãºã ã®äœ¿çšçµéšã«åºã¥ããŠã次ã®å Žåã«åçŒSLAMã䜿çšããå¿ èŠããããšå€æããŸãã
- 1å°ã®ã«ã¡ã©ã«å³å¯ã«å¶éãããŠããŸãã
- ããŒã«ã©ã€ãºã®èŠæš¡ãšå€éšãœãŒã¹ããã®å°å³ãè©äŸ¡ããæ©äŒããããŸãããŸãã¯ãèŠæš¡ã¯åé¡ã®è§£æ±ºã«ã¯é¢ä¿ãããŸããã
- ã«ã¡ã©ã®ä»æ§ã¯äžèšã®èŠä»¶ãæºãããç»åã®æ£ç¢ºãªãã£ãªãã¬ãŒã·ã§ã³ãšä¿®æ£ãå¯èœã«ããŸãã
ããã§ä»æ¥ã®ã¬ãã¹ã³ã¯çµããã§ãã次åã¯ãã¹ãã¬ãªã«ã¡ã©ãšæ·±åºŠã«ã¡ã©ã䜿çšããSLAMã¢ã«ãŽãªãºã ã«ã€ããŠèª¬æããŸãã
ãœãŒã¹
åã®ã¬ãã¹ã³-ç°å¢ã®ã€ã³ã¹ããŒã«ãšã»ããã¢ãã
LSD SLAMéçºè ãµã€ã
ORB SLAMéçºè Webãµã€ã