30分钟速通ROS联合Webots仿真实战

JoshuaLi_ 2024-08-09 16:03:03 阅读 68

写在前面:

本文是ROS联合Webots仿真实战教程,不包含ROS环境安装配置教程,ROS环境安装配置教程可以参考1.2.4 安装 ROS · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

另本文所用版本如下:

<code>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下载链接

image.png

使用下面命令解压安装软件

<code>dpkg -i webots_2021a_amd64.deb

2.安装webots_ros

sudo apt install ros-noetic-webots-ros

安装完后需要再去GitHub下一个案例包webots_ros

这里webots2021a对应的是4.0.1版本。下载链接

image.png

将下载的案例包放到之前创建的工作空间<code>catkin_ws/src下

此时的目录结果应该如下图所示:

image.png

image.png

3. 测试

完成上述步骤后,再工作空间根目录,即<code>catkin_ws下打开一个终端,执行下面命令

catkin_make

roslaunch keyboard_teleop.launch

一切顺利的话,你将看到下面的效果,可以使用键盘↑ ↓ ← →控制小车移动

image.png

注意:上图中,我执行的命令是<code>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下,此时的目录结果应该如下图所示:

image.png

image.png

1.2 安装功能包

然后参考文档说明安装相关的功能包即可。

⚠️注意:源码中包含了多种建图算法和导航算法的案例,其中cartographer建图算法相关功能包的安装比较麻烦,本人也没有安装成功。所以建议跳过安装cartographer功能包的步骤,使用其他建图算法,本人使用的是gmapping实时建图算法和teb导航算法。

image.png

1.3 更换webots场景

将自己的webots场景文件替换原来的webots_map.wbt(替换后命名改成webots_map.wbt)。目录见下图。

image.png

完成上面步骤后就可以开始建图和导航了。

2. 建图

使用gmapping算法作为建图算法,teb算法作为导航算法进行导航建图。使用其他算法同理。

新建两个终端分别运行下面命令

<code>roslaunch webots_demo slam_teb_gmapping.launch

rosrun webots_demo velocity_keyboard_v2

使用键盘 ↑ ↓ ← →控制机器人小车移动扫描整个地图,从而建立一张地图。扫描过程比较吃电脑配置,需要耐心一点。这里原理是激光雷达扫描,感兴趣的可以了解一下。

download.png

扫描完毕后运行下面命令保存地图。

<code>rosrun map_server map_saver -f map

地图文件会保存到根目录下,将其复制粘贴到下图中的目录下。

image.png

完成上面步骤就可以关掉上面两个终端了

3. 导航

在已有地图上导航,使用amcl定位算法,base算法作为导航算法进行已知地图导航。

新建两个终端分别运行下面命令

<code>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博客



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。