ROS系統建置與2D LiDAR SLAM實現-(1)

JH Syue
JH’s Coding Zone
Published in
8 min readSep 21, 2020

前言

身為碩士菸酒生,最近在進行離校前皆須面臨的一道關卡-交接,於是打算將碩論系統開發的無人移動載具其中幾個功能模組,其開發過程遇到的困難或是心得與大家分享😉

系統環境架設與安裝

此部分主要為透過2D LiDAR進行環境感測,並建置於ROS系統上,進行SLAM (Simultaneous Localization and Mapping),下表為此模組建置環境與所需軟體工具。

2D LiDAR感測環境架設軟體工具項目規格

首先,必須於PC上建置相關環境,包括VMware、Ubuntu 18.04以及ROS Melodic,詳細安裝說明如下:

1. 於 VMware虛擬機下安裝 Ubuntu 18.04

參考網址: https://zhuanlan.zhihu.com/p/38797088

2. 安裝 ROS Melodic

1. Setting up source.list

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2. Setting up keys

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

3. Installing ROS

sudo apt-get updatesudo apt-get install ros-melodic-desktop-full

4. Initializing rosdep

sudo rosdep initrosdep update

5. Setting the ROS environment

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrcsource ~/.bashrc

6. Getting rosinstall

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

7. Testing ROS

於終端機上輸入roscore後,將出現如下畫面,代表ROS安裝成功。

Hector SLAM建置與感測

接著,在 ROS Melodic上建置 RPLiDAR套件以及進行 SLAM感測,詳細安裝說明如下:

1. 安裝 RPLiDAR驅動

sudo apt-get install ros-melodic-rplidar-ros

2. 更改 COM Port許可權

sudo chmod 666 /dev/ttyUSB0

3. 測試 LiDAR掃描介面

roslaunch rplidar_ros view_rplidar.launch

此步驟執行成功後將顯示如下掃描感測點畫面,顯示於 ROS上之三維可視化工具 RViz上。

2D LiDAR掃描感測點於RViz之呈現

4. 安裝 Hector SLAM 套件

sudo apt-get install ros-kinetic-hector-slam

5. 建立 catkin工作空間(用於存放 rplidar_ros資料夾)

source /opt/ros/melodic/setup.bashmkdir -p ~/catkin_ws/srccd ~/catkin_ws/catkin_make

6. 在 rplidar_ros中新建 slam.launch檔案,程式碼如下:

<launch><node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen"><!-- Frame names --><param name="pub_map_odom_transform" value="true"/><param name="map_frame" value="map" /><param name="base_frame" value="base_link" /><param name="odom_frame" value="base_link" /><!-- Tf use --><param name="use_tf_scan_transformation" value="true"/><param name="use_tf_pose_start_estimate" value="false"/><!-- Map size / start point --><param name="map_resolution" value="0.05"/><param name="map_size" value="2048"/><param name="map_start_x" value="0.5"/><param name="map_start_y" value="0.5" /><param name="laser_z_min_value" value = "-1.0" /><param name="laser_z_max_value" value = "1.0" /><param name="map_multi_res_levels" value="2" /><param name="map_pub_period" value="2" /><param name="laser_min_dist" value="0.4" /><param name="laser_max_dist" value="5.5" /><param name="output_timing" value="false" /><param name="pub_map_scanmatch_transform" value="true" /><!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />--><!-- Map update parameters --><param name="update_factor_free" value="0.4"/><param name="update_factor_occupied" value="0.7" /><param name="map_update_distance_thresh" value="0.2"/><param name="map_update_angle_thresh" value="0.06" /><!-- Advertising config --><param name="advertise_map_service" value="true"/><param name="scan_subscriber_queue_size" value="5"/><param name="scan_topic" value="scan"/></node><node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/><node pkg="rviz" type="rviz" name="rviz"args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/></launch>

6. SLAM建圖

sudo chmod 666 /dev/ttyUSB0roslaunch rplidar_ros slam.launch

此步驟執行成功後將顯示如下SLAM建圖畫面,顯示於 ROS上之三維可視化工具 RViz上。

2D LiDAR SLAM建圖於RViz之呈現

結語

以上為 ROS Melodic建置於 Ubuntu 18.04的安裝與測試過程,小弟我也是最近才接觸 ROS的世界😅,下篇將進一步將LiDAR感測數據結合無人移動載具進行控制,敬請期待!!

感謝您的閱讀,如有任何錯誤敬請指導,同時歡迎一同交流🙋‍♂️

Stay tuned for the next one, peace!

--

--