写在前面:
本文是ROS联合Webots仿真实战教程,不包含ROS环境安装配置教程,ROS环境安装配置教程可以参考1.2.4 安装 ROS · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
另本文所用版本如下:
ubuntu版本:20.04
webots版本:2021a`
ros版本:noetic
一、 前期准备
1.安装ubuntu,版本:20.04
2.配置ros环境,版本:noetic
二、 创建工作空间
1. 创建工作空间
mkdir -p ~/cankin_ws/src
之后进入src文件夹下面,将其初始化为ROS工作空间:
cd ~/cankin_ws/src
catkin_init_workspace
2.编译工作空间
编译操作需要在工作空间的根目录下执行,所以我们需要cd到工作空间的根目录下面对其进行编译
cd ..
catkin_make
如果没有报错的话,就说明安装成功了。之后在我们的src目录下面就会生成两个文件夹build和devel。build文件里面是编译过程当中产生的中间文件;devel里面是编译过程当中产生的一些可执行文件和一些环境变量设置的脚本。
3.设置环境变量
记事本打开配置文件
sudo gedit ~/.bashrc
在配置文件最末尾加上:
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export WEBOTS_HOME=/usr/local/webots
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
然后点击右上角保存,最后退出。使用以下命令使其在当前终端中生效:
source ~/.bashrc
4.检查环境变量
新打开一个终端,输入以下命令检查环境变量:
echo $ROS_PACKAGE_PATH
三、ROS联合webots
1. 下载webots2021a(随便找个地方放就好了)
github
webots2021a下载链接
使用下面命令解压安装软件
dpkg -i webots_2021a_amd64.deb
2.安装webots_ros
sudo apt install ros-noetic-webots-ros
安装完后需要再去GitHub下一个案例包webots_ros
,
这里webots2021a对应的是4.0.1版本。下载链接
将下载的案例包放到之前创建的工作空间catkin_ws/src
下
此时的目录结果应该如下图所示:
3. 测试
完成上述步骤后,再工作空间根目录,即catkin_ws
下打开一个终端,执行下面命令
catkin_make
roslaunch keyboard_teleop.launch
一切顺利的话,你将看到下面的效果,可以使用键盘↑ ↓ ← →控制小车移动
注意:上图中,我执行的命令是
roslaunch webots_ros keyboard_teleop.launch
是因为我的src下有两个目录webots_ros和webots_demo
,所以需要指定是哪个目录,webots_demo
目录我们后面会讲
四、建图和导航
1. 准备工作
1.1 源神,启动!
建图和导航的源码地址:
https://github.com/JackyMao1999/webots_demo?tab=readme-ov-file
下载解压放到工作空间catkin_ws/src
下,此时的目录结果应该如下图所示:
1.2 安装功能包
然后参考文档说明安装相关的功能包即可。
⚠️注意:源码中包含了多种建图算法和导航算法的案例,其中cartographer建图算法相关功能包的安装比较麻烦,本人也没有安装成功。所以建议跳过安装cartographer功能包的步骤,使用其他建图算法,本人使用的是gmapping实时建图算法和teb导航算法。
1.3 更换webots场景
将自己的webots场景文件替换原来的webots_map.wbt(替换后命名改成webots_map.wbt)。目录见下图。
完成上面步骤后就可以开始建图和导航了。
2. 建图
使用gmapping算法作为建图算法,teb算法作为导航算法进行导航建图。使用其他算法同理。
新建两个终端分别运行下面命令
roslaunch webots_demo slam_teb_gmapping.launch
rosrun webots_demo velocity_keyboard_v2
使用键盘 ↑ ↓ ← →
控制机器人小车移动扫描整个地图,从而建立一张地图。扫描过程比较吃电脑配置,需要耐心一点。这里原理是激光雷达扫描,感兴趣的可以了解一下。
扫描完毕后运行下面命令保存地图。
rosrun map_server map_saver -f map
地图文件会保存到根目录下,将其复制粘贴到下图中的目录下。
完成上面步骤就可以关掉上面两个终端了
3. 导航
在已有地图上导航,使用amcl定位算法,base算法作为导航算法进行已知地图导航。
新建两个终端分别运行下面命令
roslaunch webots_demo amcl_demo.launch
rosrun webots_demo demo_2dnav_move
运行完后可以看到如下场景:
图片来源:https://blog.csdn.net/xiaokai1999/article/details/112596640
设置目标点,运行结果如下:
图片来源:https://blog.csdn.net/xiaokai1999/article/details/112596640
参考文献:
[1] ROS联合webots实战案例目录_webots和ros noetic 联合-CSDN博客
[2] ROS联合webots实战案例(五)导航功能包入门2_ros navigation区域限定-CSDN博客
[3] ROS联合webots实战案例(一)安装配置webots_webots python ros-CSDN博客
[4] ROS工作空间搭建和功能包创建与编译_ros工作空间编译-CSDN博客