ROS2初体验之SLAM与导航仿真

1461
0
2020年3月21日 22时17分

早在2015年,ROS就已经发布了第一个ROS2.0的alpha版本,现在已经发布有五个正式版了。考虑到要与时俱进嘛,所以就安装了ROS2和gazebo来学习下ROS2相关的操作,过来和大家分享下。

 

安装ROS2

ROS2现在有5个正式版本,因为在第四个正式版dashing的时候又进行了较大的代码改动,且官方支持维护两年,支持到2021年,所以我就选择了dashing进行安装。

 

 

ROS2各个版本
ROS2各个版本介绍

 

下面介绍下大致的安装使用过程。

 

首先设置语言环境:

$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8

 

添加软件源:

$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add –
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'

 

安装ROS2软件包:

$ sudo apt update
$ sudo apt install ros-dashing-desktop

 

设置环境变量:

$ echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc

 

安装argcomplete(可选):

ROS 2命令行工具使用argcomplete自动完成。因此,如果要自动补全,则必须安装,个人建议安装。

$ sudo apt install python3-argcomplete

 

安装完成后可以用自带的例程测试下ROS2是否安装成功:

talker和listener例程
talker和listener例程

 

安装gazebo

ROS2默认是不包含Gazebo的,所以需要自行安装。同时,ROS2只能使用gazebo9及之后版本,这里我就选择安装gazebo9。Gazebo官网提供了两种安装方式,脚本安装或者是逐步安装。

 

脚本安装

$ curl -sSL http://get.gazebosim.org | sh

 

逐步安装

设置软件源:

$ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

 

添加key:

$ wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

 

安装gazebo9:

$ sudo apt-get update
$ sudo apt-get install gazebo9*

 

在安装过程中,我遇到了网络不好的问题,有下载失败的概率,所以个人推荐逐步安装。

 

turtlebot3测试

为了熟悉下ROS2的基本操作,我用turtlebot3在gazebo中进行仿真,以熟悉一些来了解ROS2的基本操作。

 

首先和ROS1一样建立工作空间turtlebot3_ws,然后下载源代码放到src目录中,注意要选择dashing-devel的分支,gitclone可以使用-b指定分支。下面是所需的相关源码链接:

 https://github.com/ROBOTIS-GIT/turtlebot3/tree/dashing-devel
 https://github.com/ROBOTIS-GIT/turtlebot3_msgs/tree/dashing-devel
 https://github.com/ROBOTIS-GIT/turtlebot3_simulations/tree/dashing-devel

 

最后src中应该有以下文件:

src

 

安装编译工具:

$ sudo apt install python3-colcon-common-extensions

 

进入turtlebot3_ws下编译:

$ colcon build

 

设置环境变量:

 $ echo "~/turtlebot3/install/setup.bash" >> ~/.bashrc
 $ echo " export TURTLEBOT3_MODEL= burger" >> ~/.bashrc  #turtlebot3有burger,、waffle、waffle_pi三种,所以需要指定型号

 

安装相关的一些功能包:

$ sudo apt install ros-dashing-gazebo-* ros-dashing-cartographer* ros-dashing-navigation2 ros-dashing-nav2-* python3-vcstool 

 

这里我记不太清楚具体安装了哪些功能包了,可能有些已经包含ros-dashing-desktop中了,也有可能还缺少某些功能包。如果您遇到了什么问题,可以在评论中指出。

 

然后需要把turtlebot3的模型文件添加模型文件至gazebo的models文件夹中,即将turtlebot3_gazebo/models中的全部文件复制到~/.gazebo/models中。.gazebo文件夹为隐藏文件夹,可在home下使用ctrl+h快捷键显示。若.gazebo中没有models文件夹,可自行创建该文件夹。如下图所示:

 

models

 

建图&导航

基本的安装都已经完成了,那么就来进行测试吧。

 

首先打开第一个终端,运行gazebo环境:

$ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

 

然后打开第二个终端,使用Cartographer进行建图:

$ ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

 

再打开第三个终端运行键盘控制节点:

$ ros2 run turtlebot3_teleop teleop_keyboard

 

然后你就能愉快的建图了。

建图

 

完成建图后,再打开一个终端保存地图:

$ ros2 run nav2_map_server map_saver -f ~/turtlebot3_ws/src/turtlebot3_navigation2/map/map

 

然后关闭cartographer和键盘程序,再打开navigation2导航程序:

$ ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True

 

之后和ROS1中的操作一致,先使用2D Pose Estimate对机器人的位置进行初始化,之后就可以用2D New Goal指定目标进行导航了。

 

导航

 

经过一番折腾,终于搞定了ROS2的安装与使用。同时也感受到了和ROS1的一些直管的区别:

①最直接的,编译系统换了,编译命令也相应改变了 ;

② 同时launch等基本指令也换成了对应的ros2指令

取消了ROSMaster,更加方便各个节点的分布式布置。

另外,ROS2还有一些其他的特点,比如支持多系统之类的暂时就没有体现出来。ROS2的具体体会还是需要多多使用之后才能感受到啊,如果大家有什么问题,也欢迎大家在评论区指出,一起交流学习。

发表评论

后才能评论