turtlebot3 Slam+nvigation仿真 ROS-lunar
Date: 2017.09.06创建工作空间:
Author: SuperDeveloper
Description: Slam simulation
说明:
1.Slam 初学笔记,搭建slam仿真环境;
2.文章里的连接可能会由于项目变更失效,因此如果不能下载的时候可以尝试按照文中的方法查找链接;
3.文章里涉及到路径都使用的是绝对路径,方便了解目录位置,实际操作中不必如此;
4.演示路径都是在/home/work/目录下,注意切换成自己的路径。
环境:ubuntu16.04 LTS ,ROS lunar
$ mkdir –p ~/work/ros/src
$ cd ~/work/ros/src
$ catkin_init_workspace
然后进入ros目录(src的上层目录)
$ cd ~/work/ros
$ catkin_make
执行完后会多出几个文件夹,包含devel
$ echo "source ~/work/ros/src" > ~/.bashrc
$ source ~/work/devel/setup.bash
.bashrc是用户home目录(~/)下的隐藏文件,每次打开一个Terminal都会执行一次里面的脚本,这样就不用每次打开命令窗口都导入一次路径。
安装SLAM软件 安装依赖包:
$ sudo apt-get install ros-lunar-navigation
在lunar中很多功能包的名字和indigo中是一样的,当你不确定的时候输入ros-lunar-然后按Table键,再找你要的功能包就好了。
然后在WIKI搜索gmapping,在主页上找到源代码链接
$ cd ~/work/src
$ git clonehttps://github.com/ros-perception/slam_gmapping.git
同样在WIKI上也可以找到hector-mapping
$ git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam.git
hector-mapping跟gmapping都是平面SLAM软件,两者功能上是一样的,两个选一个即可,具体说来gmapping建出的地图精度非常依赖于里程计的精度,如果你的里程计比较次,就选hector-mapping就行了。
仔细查看WIKI会发现hector-mapping和gmapping依赖openslam_gmapping,点击找到链接
$ git clone https://github.com/ros-perception/openslam_gmapping.git
安装turtlebot3: 依然在src目录
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ git clone https://github.com/ros-teleop/teleop_twist_keyboard.git
回到上一级目录
$ cd ~/work/ros
$ catkin_make
编译完成即可
启动仿真环境 【turtlebot3 Slam+nvigation仿真 ROS-lunar】打开Terminal
$ export TURTLEBOT3_MODEL=burger
每次打开Termina运行turtlebot3相关的包都要执行一次上诉指令。同样你可以把这句写入~/.bashrc文件里面。
启动gazebo
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
用TAB键可自动补全,如果不能补全说明软件没安装上,或者没有导入工作空间的setup.bash,参考本文前面部分
启动rviz
$ roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch
启动SLAM 打开一个Terminal
$ roscore &
$ roslaunch turtlebot3_slamturtlebot3_slam.launch
在roscore 后面加一个&表示后台运行。
点击rviz的Add按钮,添加一个Map类型,topic输入/map,勾选刷新
再打开一个Terminal
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
通过键盘进行控制,进行控制前请阅读Terminal里的操作说明
I 前进
U 左转
O 右转
M ,<, >, 后退
nvigation自主导航 在SLAM创建地图完成后保存地图
$ rosrun mapserver mapsaver –f ~/work/ros/test_map
启动nvigation
$ roslaunch turtlebot3_nvigation turtlebot3_nvigation.launch map_file=~/work/ros/test_map.yaml
然后在rviz中用global箭头设定目标位置和方向,停止之前的键盘输入,开始自动导航
记录数据:
进入需要保存数据的目录,打开Terminal
$ rosbag record –a
停止录入直接ctrl+c
停止之前打开的除roscore 和rviz之外的命令窗口,回放数据
$ rosbag play 2017-10****.bag
推荐阅读
- pgone嘻哈仿真一首
- matlab稳态和时变卡尔曼滤波器Kalman|matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究
- 技术|动力电池热管理设计与仿真及整车热管理高级技术
- 基于eclipse搭建LittleVGL仿真环境
- 基于Visual|基于Visual Studio 2019 搭建LittleVgl 仿真环境
- 十款乐高积木虚拟搭建软件,乐高仿真工具,积木模拟搭建耗材统计评估软件...
- Hardfault处理方法
- 嵌入式|proteus仿真中如何使用按键
- CAE|[转载-FLUENT学习]流动仿真计算时湍流模型的选择
- 精华 | 基于TAITherm软件的锂离子电池热失控仿真