ROS 入门 —— 基于 turtlebot3 实现 SLAM 建图及自主导航仿真
ROS 入门 —— 基于 turtlebot3 实现 SLAM 建图及自主导航仿真
turtlebot3简介
TurtleBot3 是一个小型,低成本,完全可编程,基于 ROS 的移动机器人。它旨在用于教育,研究,产品原型和爱好应用的目的。TurtleBot3 的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量。由于提供了不同可选,如底盘,计算机和传感器,TurtleBot3 可以通过各种方式进行定制。
安装turtlebot3
sudo apt-get install ros-melodic-turtlebot3-* //安装gmapping建图算法依赖 apt-get install ros-melodic-gmapping //安装dwa局部路径规划算法 apt-get install ros-melodic-dwa-local-planner
ROS版本不同对应修改melodic
键盘控制小车运动
首先在 gazebo 仿真环境中启动 turtlebot3 小车
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
安装键盘控制相关依赖
sudo apt-get install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-teleop-twist-keyboard
运行键盘控制节点,根据输出提示控制小车
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
若安装出现[Err] [REST.cc:205] Error in REST request则需要进行如下配置:
sudo gedit ~/.ignition/fuel/config.yaml
#将文件中https://api.ignitionfuel.org修改为https://api.ignitionrobotics.org
如果启动 gazebo 出现一直打不开的情况,原因是 .gazebo 下加载 models 库不正确导致,解决方法是直接下载所有模型到用户的根目录下的 .gazebo/models/ 下
cd ~/.gazebo/
mkdir -p models
cd ~/.gazebo/models/
wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf
SLAM 构建地图
把上面的命令都关了,重新启动以下的命令
1、开启仿真环境
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_gazebo turtlebot3_house.launch
2、开启 SLAM 功能,建图算法选择 gmapping
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
3、启动键盘控制节点,控制小车在环境内转一圈,尽可能扫出完整封闭的地图
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
4、保存地图
rosrun map_server map_saver -f ~/map
这是我跑了一圈小车扫出的地图
自主导航
实现的效果图:
1、先加载保存好的地图
rosrun map_server map_server map.yaml
2、打开仿真环境,用可视化工具rviz显示出来
export TURTLEBOT3_MODEL=waffle_pi roslaunch turtlebot3_gazebo turtlebot3_house.launch
3、打开自主导航功能
export TURTLEBOT3_MODEL=waffle_pi roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=/home/kaijun/map.yaml
配置好 rviz,使用 2D Pose Estimate 设定好小车起始地点,再使用 2D Nav Goal 设定小车目标地点,小车会规划好路径,自动运行到目标位置,实现自主导航功能。