Turtlebot + Rplidar A2使用Gmapping建圖與導航
轉載:
https://www.jianshu.com/p/4277243c786d
https://www.ncnynl.com/archives/201705/1556.html
參考文獻:
Turtlebot及相關軟體安裝
實作gmapping建圖
實作AMCL自主導航
材料:
1. Turtlebot底盤
2. Rplidar A2雷達
3. ubuntu16.04 + ROS kinect筆記本電腦
1 在電腦上安裝Turtlebot底盤驅動
1.1 安裝Turtlebot底盤驅動
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-turtlebot
1.2 安裝Turbot
$ mkdir -p ~/turbot_ws/src
$ cd ~/turbot_ws/src
$ git clone https://github.com/ncnynl/turbot
$ cd ..
$ catkin_make
1.3 安裝turtlebot_apps
$ cd ~/turbot_ws/src
$ git clone https://github.com/ncnynl/turtlebot_apps
$ cd ..
$ catkin_make
1.4 測試底盤
安裝完Turtlebot底盤驅動後,來測試一下電腦是否可以驅動底盤
1.4.1 檢查端口:
檢查是否有kobuki端口,打開一個終端:
$ ls /dev/kobuki
如果沒有顯示,則執行:
$ rosrun kobuki_ftdi create_udev_rules
重新拔插底盤的USB序列槽線,在執行上面的檢查語句,則可看到有kobuki端口顯示
1.4.2 底盤啟動測試:
啟動底盤
$ roslaunch turbot_bringup minimal.launch
執行指令後,會聽到一串開機音樂
新終端,執行指令
$ rosrun turbot_tools test_move
成功執行指令後,小車向前緩慢移動,按Ctrl + C 即可中止
2 安裝雷達驅動程式
2.1 安裝雷達驅動
$ cd ~/turbot_ws/src
$ git clone https://github.com/robopeak/rplidar_ros
$ cd ..
$ catkin_make
2.2 設定 USB 口的權限
$ sudo gedit /etc/udev/rules.d/70-ttyusb.rules
在打開的界面中,輸入
KERNEL=="ttyUSB[0-9]*", MODE="0666"
運作如下程式,檢視權限,有兩個 rw 就可以了
ls -l /dev |grep ttyUSB*
2.4 添加環境變量及工作空間,增加雷達别名
$ echo "export TURTLEBOT_LASER_SENSOR=rplidar" >> ~/.bashrc
$ echo "source /home/ubu/turbot_ws/devel/setup.bash" >> ~/.bashrc
$ roscd rplidar_ros
$ ./scripts/create_udev_rules.sh
2.5 雷達啟動測試
驅動裡提供了三個 launch 檔案,檢驗雷達的話用 rplidar.launch 即可
$ roslaunch rplidar_ros rplidar.launch
可以觀察到雷達開始旋轉掃描,之後可以先關閉
2.6 使用turtlebot程式驅動雷達
$ roslaunch turbot_tools rplidar.launch
$ roslaunch turbot_tools test_rplidar.launch
可以看到在打開的RVIZ界面上有雷達掃描的點雲圖形
3 使用Gmapping建圖
Gmapping建圖
啟動底盤
$ roslaunch turbot_bringup minimal.launch
啟動gmapping,用于建構地圖
$ roslaunch turbot_slam laser_gmapping_demo.launch
啟動rviz,實時檢視建圖情況
$ roslaunch turbot_rviz nav.launch
啟動鍵盤
$ roslaunch turbot_teleop keyboard.launch
将滑鼠聚焦到鍵盤控制界面上,使用鍵盤控制底盤前後運動,完成建圖工作。
儲存地圖
$ rosrun map_server map_saver -f ~/map/rplidar_a2_gmapping
$ ls ~/map
可以檢視到map檔案夾下有兩個檔案,一個是.pgm檔案,另一個是.yaml檔案。可以打開.pgm檔案檢視建成的地圖。
4. AMCL導航
啟動底盤
$ roslaunch turbot_bringup minimal.launch
啟動amcl, 并指定地圖
$ roslaunch turbot_slam laser_amcl_demo.launch map_file:=/home/ubuntu(你的使用者名)/map/rplidar_a2_gmapping.yaml
啟動rviz
$ roslaunch turbot_rviz nav.launch
打開rviz後,界面如下
初始化位置,選擇2D Pose Estimate,标注機器人在地圖上的位置和方向,按住滑鼠左鍵拉向某個方向
設定目标位置,選擇“2D Nav Goal”, 标注機器人将要到達地圖上的位置和方向,按住滑鼠左鍵拉向某個方向
機器人規劃出一條路徑,然後自動走向目标點