前言:
最近因为实验室的项目,要开始学习gmapping,用这个来进行机器人建图。
现在先用turtlebot仿真机器人跑一个仿真实验。
找到一个教程:https://edu.youkuaiyun.com/course/play/19217/248755
配套博客:https://blog.youkuaiyun.com/lingchen2348/article/details/79503970
按这个博客来学习操作时,发现因为版本不同的问题,发现很多包的命名不同,导致仿真程序一直运行不起来,于是我写了这篇博客记录下异同,希望能有所帮助。
我的开发环境版本:
- Ubuntu 20.04
- ros-noetic
教程的开发环境版本:
- Ubuntu 16.04
- ros-kinetic
一、安装准备
1.首先,确定自己的ros版本,安装对应的包
运行roscore,从打印的信息找到版本信息:
PARAMETERS
* /rosdistro: noetic
* /rosversion: 1.15.9
可以看到我的ros版本是noetic,那么就安装noetic版本的包:
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
sudo apt-get install ros-noetic-turtlebot-*
sudo apt install ros-noetic-gmapping
二、仿真实验
1、启动Gazebo并加载机器人、环境模型
export TURTLEBOT3_MODEL=burger # 每次新打开这个终端,都需要运行一次
roslaunch turtlebot3_gazebo turtlebot3_world.launch
(参考博客)
2、启动键盘遥控节点
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch --screen
此时,选中该命令窗口,按照提示,使用键盘上的a、w等键就可以看见机器人的Gazebo窗口中运动。
3、运行gmapping
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_slam turtlebot3_gmapping.launch
4、开启rviz观察建图过程
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_navigation turtlebot3_navigation.launch
附录:
在按照网上博客跑roslaunch例程时,经常遇到这样的报错:
RLException: [....launch] is neither a launch file in package [....] nor is [....] a launch file name
很多时候是因为版本不同的问题,相关包的名字不一样,导致roslaunch找不到包而报错。
我的解决办法是通过关键词找到对应包的名称:
比如运行这一条时,找不到包:
roslaunch turtlebot_teleop keyboard_teleop.launch --screen
先找『turtlebot_teleop』对应的包,用关键词turtlebot进行搜索:
rospack list | grep turtlebot
在打印信息中找到最相近的一项:
turtlebot3_teleop /opt/ros/noetic/share/turtlebot3_teleop
便可以得知用『turtlebot3_teleop』替换『turtlebot_teleop』。
然后找『keyboard_teleop.launch』对应的launch文件,用关键词teleop进行搜索:
find /opt/ros/noetic/ | grep teleop*.launch
在打印信息中找到最相近的一项:
/opt/ros/noetic/share/turtlebot3_teleop/launch/turtlebot3_teleop_key.launch
便可以得知用『turtlebot3_teleop_key.launch』替换『keyboard_teleop.launch』。
这里还能得到一个信息,launch文件所在的文件目录,会包含其对应包的名称:turtlebot3_teleop_key.launch -> turtlebot3_teleop
最终得到正确的运行指令:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch --screen