参考:
https://blog.csdn.net/m0_56451176/article/details/126314801
turtlebot_stage/Tutorials/indigo/Customizing the Stage Simulator - ROS Wiki
Turtlebot+ROS Stage仿真环境实现MPC轨迹跟踪
1、首先cd至catkin workspace,或新建工作空间turtlebot_ws
mkdir ~/turtlebot_ws
cd turtlebot_ws
mkdir -p src
catkin_make
2、现运行以下命令(在 catkin 工作区的根目录内)为 Turtlebot2 构建运行环境
curl -sLf https://raw.githubusercontent.com/gaunthan/Turtlebot2-On-Melodic/master/install_basic.sh | bash
catkin_make
一、TurtleBot3 简介
TurtleBot3 是一个小型,低成本,完全可编程,基于 ROS 的移动机器人。它旨在用于教育,研究,产品原型和爱好应用的目的。TurtleBot3 的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量。由于提供了其他选项,如底盘,计算机和传感器,TurtleBot3 可以通过各种方式进行定制。TurtleBot3 应用 了SBC(单板计算机),深度传感器和 3D 打印的最新技术进步等技术。
二、安装 TurtleBot3 仿真
1.在home下安装依赖
sudo apt-get install ros-melodic-joy ros-melodic-teleop-twist-joy ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan ros-melodic-rosserial-arduino ros-melodic-rosserial-python ros-melodic-rosserial-server ros-melodic-rosserial-client ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro ros-melodic-compressed-image-transport ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers rviz
2.下载资源包
mkdir -p ~/turtlebot3_ws/src/
cd ~/turtlebot3_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
或手动下载
turtlebot3.zip
https://download.csdn.net/download/m0_56451176/86400766
turtlebot3_simulations.zip
https://download.csdn.net/download/m0_56451176/86400770
turtlebot3_msgs.zip
https://download.csdn.net/download/m0_56451176/86400768
注: 此次可能会出现:
fatal: unable to access 'https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git/': Could not resolve host: github.com
这是网络问题,可以切换成手机热点试试,可以多切换几次,多试试。
3.编译
cd ~/turtlebot3_ws
catkin_make
三、启动 TurtleBot3 仿真
1.回到home,先将 TurtleBot3 导入,再启动仿真环境(rviz)
export TURTLEBOT3_MODEL=burger
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_fake turtlebot3_fake.launch
2.控制TurtleBot3移动
TurtleBot3 仿真节点不依赖实体机器人,也可以在 rviz 里通过 teleop 节点进行控制。
~$ export TURTLEBOT3_MODEL=burger
~$ source turtlebot3_ws/devel/setup.bash
~$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
3.加载模型(gazebo )
第一次使用 gazebo 需要比较长的时间加载模型,也可以手动加载模型,第一次使用 Turtlebot3 的 gazebo 仿真,需要把 Turtlebot3 的模型文件,复制到 gazebo 的模型目录里。
mkdir -p ~/.gazebo/models/
cp -r ~/turtlebot3_simulations路径/turtlebot3_simulations/turtlebot3_gazebo/worlds ~/.gazebo/models/
例如我的
~$ mkdir -p ~/.gazebo/models/
~$ cp -r ~/turtlebot3_ws/scr/turtlebot3_simulations/turtlebot3_gazebo/worlds ~/.gazebo/models/
4.设置模型参数
设置模型参数,指定使用那种机器人型号: burger 或者 waffle
~$ export TURTLEBOT3_MODEL=burger
注:模型参数必须配置,否则roslaunch启动出问题
5.启动世界地图
启动世界地图,默认的空白地图环境中加载 Turtlebot3 机器人
~$ source turtlebot3_ws/devel/setup.bash
~$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
注:如果是虚拟机装的ubuntu,可能会报错:VMware: vmw_ioctl_command error 无效的参数
解决方法:关闭虚拟机的加速3D
注:该方法虽然解决了gazebo启动闪退问题,但是如果我们在虚拟机中需要使用GPU图形加速功能,别忘了重新打开该处设置。
四、TurtleBot3 仿真: 复杂地图
1. (1)启动更复杂些的地图
source turtlebot3_ws/devel/setup.bash
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_world.launch
1.(2)或者房间地图
export TURTLEBOT3_MODEL=burger
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_house.launch
2.用键盘控制 turtlebot3
export TURTLEBOT3_MODEL=burger
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
3. 启动仿真
export TURTLEBOT3_MODEL=burger
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_simulation.launch
4. 启动 RVIZ 可视化
export TURTLEBOT3_MODEL=burger
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch
五、TurtleBot3 仿真:SLAM
1. 安装 turtlebot3 相关的 ROS 包
sudo apt-get install ros-melodic-turtlebot*
或者:
sudo apt-get install ros-melodic-turtlebot3 ros-melodic-turtlebot3-description
ros-melodic-turtlebot3-gazebo ros-melodic-turtlebot3-msgs
ros-melodic-turtlebot3-slam ros-melodic-turtlebot3-teleop
2. 目前激光 SLAM 的建图方法有很多中,turtlebot3 支持 gmapping、cartographer、hector、 karto、frontier_exploration,ROS Melodic 版本官方的软件源里只有 karto。用户可以根据 需要安装。
sudo apt-get install ros-melodic-slam-karto
3. 建图
(1)每个新终端都要设置环境变量,也可以是burger,waffle,waffle_pi
export TURTLEBOT3_MODEL=burger
(2)加载环境
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_world.launch
也可选择其他环境,或自己搭环境
(3) 建图时要切换到这个终端,用键盘控制turtlebot运动
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
(4)创建栅格地图
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=karto
4. 保存地图:地图建完以后将地图保存下来:
mkdir -p ~/housemap
rosrun map_server map_saver -f ~/housemap/housemap
5. 导航。利用刚才构建的地图进行 turtlebot 的自主导航仿真实验:
source turtlebot3_ws/devel/setup.bash
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_house.launch
source turtlebot3_ws/devel/setup.bash
roslaunch turtlebot3_navigation turtlebot3_navigation.launch
map_file:=/home/zhang/housemap/housemap.yaml
鼠标选择工具栏中的“2D Nav Goal”,在地图上任意设置一个目标,turtlebot3会自动规划路径移动到目标位置
六、更改地图
TurtleBot3有三个型号,burger
, waffle
,和waffle_pi,
必须在使用前设置要使用的模型。
export TURTLEBOT3_MODEL=burger
export TURTLEBOT3_MODEL=waffle
export TURTLEBOT3_MODEL=waffle_pi
或者在bashrc
文件中添加您的设置,
gedit ~/.bashrc
在文件中添加
export
TURTLEBOT3_MODEL=burger
export
TURTLEBOT3_MODEL=waffle
export
TURTLEBOT3_MODEL=waffle_pi
source ~/.bashrc
1、开启仿真环境
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_gazebo turtlebot3_house.launch
附录:基础知识
一、工作空间
工作空间(workspace)(缩写ws)
工作空间是存放工程开发相关文件的文件夹
代码空间(source space)(src)是用来放置功能包的,所有功能包的代码、配置文件等都存放在src
编译空间(build space)(build)是放置编译过程中间所产生的文件(基本不用关心)
开发空间(development space)(devel)是放置编译生成的库、脚本等
安装空间(install space)(install)和devel还是存在重复部分,可能用不到这部分
1. 创建工作空间
终端输入
mkdir catkin_ws // 创建catkin_ws的文件
cd catkin_ws //打开catkin_ws这个文件
mkdir src //然后在catkin_ws这个文件里再创建src这个文件
cd src //打开src这个文件
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
注意:
终端输入cd …可以返回上一级目录
catkin是ROS里面的一个工具
2. 编译工作空间
终端输入
catkin_make //在catkin_ws这个工作空间开始进行编译
此时,catkin_ws中有bulid文件、devel文件,若缺少install文件(安装空间),则在终端输入
catkin_make install
3. 设置环境变量
终端输入
source devel/setup.bash
4. 检查环境变量
终端输入
echo $ROS_PACKAGE_PATH
二、功能包
1. 创建功能包
终端输入
cd catkin_ws/src //在catkin_ws/src/这个文件夹里面再进行创建
然后在src文件夹内
catkin_create_pkg test_pkg std_msgs rospy roscpp
它的格式为:
catkin_create_pkg [package_name] [std_msgs] [rospy] [roscpp]
[package_name]可以写[test_pkg](即自己命名的名称),后三个[ ]表示依赖的库
运行功能包里面某个程序,要先设置环境变量,如下面第2点
注意:在功能包test_pkg创建成功后,里面的两个重要文件是CMakeLists.txt和package.xml,他们是任何一个功能包里面必须存在的两个文件,里面有具体的信息(包括所依赖的第三方功能包)
2. 编译功能包
终端输入
source devel/setup.bash //设置环境变量
然后再输入
echo $ROS_PACKAGE_PATH //查找ROS所有功能包的路径,目的是找到所写的功能包
ROS单独编译某个文件的指令
catkin_make -DCATKIN_WHITELIST_PACKAGES=”需要编译的包名
注意:
同一个工作空间下,不允许存在同名功能包
不同工作空间下,允许存在同名功能包