9、教程-8 使用ROS

发布时间 2023-07-28 09:27:02作者: gary_123

本教程介绍如何使用webots附带的webots_ros包中的节点。
这些例子在Linux上用ROS Noetic Ninjemys进行了测试。如果您使用不同的平台或古老的ROS分发,则不保证它们会起作用。

检查Webots ROS API的兼容性

Webots包包含使用最新ROS发行版构建的预编译ROS API:
Ubuntu 20.04 tarball包与ROS Noetic兼容。如果您计划使用不同的ROS发行版,建议安装tarball包并重新编译ROS API:

export ROS_DISTRO=noetic  # or ROS_DISTRO=melodic, etc.
cd ${WEBOTS_HOME}/projects/default/controllers/ros
make

安装ROS以及Webots_ros包

为了使用这些节点,您首先需要安装ROS框架。要在Ubuntu上安装最新版本的ROS,请使用以下命令:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install ros-noetic-desktop-full ros-noetic-moveit # takes time, get a coffee :)
sudo apt-get install python3-rosdep
sudo rosdep init
rosdep update

欲了解更多信息或在其他平台上安装,请阅读http://wiki.ros.org/ROS/Installation.除非您需要其他应用程序的旧版本,否则您应该选择最新的发行版(NoeticNinjemys)。
要安装最新版本的webots_ros软件包,请使用以下命令:

sudo apt-get install ros-noetic-webots-ros

要从源代码安装软件包,请阅读webots_ros-from sources。
如果您以前从未使用过ROS框架,强烈建议您遵循以下教程(初级):http://wiki.ros.org/ROS/Tutorials.这些教程还将帮助您设置ROS环境并初始化您的catkin工作区。最低要求是遵循这些说明(摘自ROS教程1.1.1)。

  1. 打开一个终端
  2. 使用这个来检查ROS环境是否ok,printenv | grep ROS
  3. source /opt/ros/noetic/setup.bash
  4. Create a catkin_ws workspace for ROS:
    1. Create some folders: mkdir -p ~/catkin_ws/src
    2. Go back in the main folder: cd ~/catkin_ws/
    3. Generate files by compilation: catkin_make
    4. Source again the new files: source devel/setup.bash
  5. To make sure your workspace is properly set-up by the setup script, make sure ROS_PACKAGE_PATH environment variable includes the directory you are in. The echo $ROS_PACKAGE_PATH command should return /home/youruser/catkin_ws/src:/opt/ros/noetic/share.
  6. The last step is to set the WEBOTS_HOME environment variable: export WEBOTS_HOME=/usr/local/webots. If you installed Webots in a different place, adapt the variable. This line can be added to your .bashrc file.

运行节点

您可以使用以下命令(例如e_puck_line)使用ROS启动任何模拟:

source /opt/ros/noetic/setup.bash
roslaunch webots_ros e_puck_line.launch

此启动文件将启动Webots(应设置Webots_HOME环境变量)并启动相应的节点。

Webots的随机数生成器的种子在模拟开始时初始化,而不是在ROS节点连接时初始化。必须运行Webots才能连接ROS节点。然而,我们不能保证在ROS节点连接之前它会运行多久。因此,由于ROS节点连接时的噪声略有不同,传感器测量值和电机命令在每次运行时会略有不同。这可能会对机器人的行为产生影响,从而使这种模拟无法完全再现。您可以使用--synchronize参数来确保在ROS节点连接之前不会运行Webots。这有助于使基于ROS的模拟具有可重复性。
如果您想为ROS主机、Webots模拟和/或节点使用不同的计算机,则必须能够通过SSH以两种方式连接到它们中的每一个。这些计算机的主机名和IP地址应列在每台计算机的已知主机列表中,ROS_MASTER_URI变量应相应调整。

 

创建一个新节点

这些示例只显示了ROS和Webot接口的几种可能性,但您可以构建自己的节点来连接Webot。这些节点的源代码可以在webots_ros包的存储库中找到。
robot_information_parser节点是最基本的节点,是开始构建自己的节点的良好基础。complete_test节点没有显示任何特定的应用程序,但包含了几乎详尽的Webots API函数列表。
Webots API中的所有函数都有相应的服务或主题。您可以在参考手册中找到与每个设备相关的所有服务和主题的定义。

 

webots_ros包

如果您运行的是最新版本的Webots,设置Webots_ros包的最简单方法是直接从包管理器安装ros-$ros_DISTRO-Webots-ros包,如上所述。但是,如果您运行的是旧版本的Webots,某些功能可能无法完全支持,或者可能会被最新的ros-$ros_DISTRO-Webots-ros包破坏。在这种情况下,可以按照ros wiki页面上的说明,从源安装较旧的webots_ros软件包版本,并在webots_ros GitHub存储库中选择与webots版本匹配的标签/版本。