SLAM for L515
本文介绍两种适合Intel RealSense LiDAR Camera L515的SLAM方案,把这两种方案跑起来都非常容易,只要环境没问题,基本上就能跑一个大概的效果出来(效果好还是得费些功夫的)。
SSL_SLAM
固态激光雷达的轻量级 3-D 定位和映射(SSL_SLAM)是新加坡南洋理工大学一个博士提出的方案,这套方案基本上就是根据L515设计出来的,拿过来能直接用。
编译
cd ~/catkin_ws/src
git clone https://github.com/wh200720041/ssl_slam.git
cd ..
catkin_make
source ~/catkin_ws/devel/setup.bash
运行
#运行ssl_slam
roslaunch ssl_slam ssl_slam_mapping.launch
#运行L515
roslaunch ssl_slam ssl_slam_L515.launch
运行效果如下图所示:
RTAB-Map
RTAB-Map(基于实时外观的映射)是一种基于 RGB-D、立体和激光雷达图的 SLAM 方法,它基于增量外观闭环检测器。闭环检测器使用词袋方法来确定新图像来自先前位置或新位置的可能性。当一个闭环假设被接受时,一个新的约束被添加到地图的图形中,然后图形优化器最小化地图中的错误。内存管理方法用于限制用于闭环检测和图形优化的位置数量,以便始终遵守对大规模环境的实时约束。RTAB-Map 可以单独与手持 Kinect、立体相机或 3D 激光雷达一起使用,用于 6DoF 映射,或用于配备激光测距仪的机器人进行 3DoF 映射。
run L515
# ISSUE: Use unite_imu_method:="copy" if imu topics keep stopping
roslaunch realsense2_camera rs_camera.launch \
align_depth:=true \
unite_imu_method:="linear_interpolation" \
enable_gyro:=true \
enable_accel:=true
rosrun imu_filter_madgwick imu_filter_node \
_use_mag:=false \
_publish_tf:=false \
_world_frame:="enu" \
/imu/data_raw:=/camera/imu \
/imu/data:=/rtabmap/imu
Run RTAB-Map
rosrun nodelet nodelet standalone rtabmap_ros/point_cloud_xyz \
_approx_sync:=false \
/depth/image:=/camera/depth/image_rect_raw \
/depth/camera_info:=/camera/depth/camera_info \
_decimation:=4
roslaunch rtabmap_ros rtabmap.launch\
rtabmap_args:="\
--delete_db_on_start \
--Icp/VoxelSize 0.05 \
--Icp/PointToPlaneRadius 0 \
--Icp/PointToPlaneK 20 \
--Icp/CorrespondenceRatio 0.2 \
--Icp/PMOutlierRatio 0.65 \
--Icp/Epsilon 0.005 \
--Icp/PointToPlaneMinComplexity 0 \
--Odom/ScanKeyFrameThr 0.7 \
--OdomF2M/ScanMaxSize 15000 \
--Optimizer/GravitySigma 0.3 \
--RGBD/ProximityPathMaxNeighbors 1 \
--Reg/Strategy 1" \
icp_odometry:=true \
scan_cloud_topic:=/cloud \
subscribe_scan_cloud:=true \
depth_topic:=/camera/aligned_depth_to_color/image_raw \
rgb_topic:=/camera/color/image_raw \
camera_info_topic:=/camera/color/camera_info \
approx_sync:=false \
wait_imu_to_init:=true \
imu_topic:=/rtabmap/imu
#delete memory
rosservice call /rtabmap/reset
运行效果如下所示: