前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS2Swarm群机器人案例(Dashing+Foxy)

ROS2Swarm群机器人案例(Dashing+Foxy)

作者头像
zhangrelay
发布2022-05-10 17:41:38
8630
发布2022-05-10 17:41:38
举报
文章被收录于专栏:机器人课程与技术

REFERENCES [1] H. Hamann, Swarm Robotics: A Formal Approach. Cham: Springer International Publishing, 2018. [2] I. A. D. Nesnas, R. Simmons, D. Gaines, C. Kunz, A. Diaz-Calderon, T. Estlin, R. Madison, J. Guineau, M. McHenry, I.-H. Shu, and D. Apfelbaum, “CLARAty: Challenges and steps toward reusable robotic software,” International Journal of Advanced Robotic Systems, vol. 3, no. 1, p. 5, 2006. [3] C. Pinciroli and G. Beltrame, “Buzz: a programming language for robot swarms,” IEEE Software, vol. 33, no. 4, pp. 97–100, 2016. [4] M. Quigley, J. Faust, T. Foote, and J. Leibs, “ROS: an open-source Robot Operating System,” in ICRA workshop on open source software, vol. 3, no. 3.2. Kobe, Japan, 2009, p. 5. [5] M. Dorigo, G. Theraulaz, and V. Trianni, “Swarm robotics: Past, present, and future [point of view],” Proceedings of the IEEE, vol. 109, no. 7, pp. 1152–1165, 2021. [6] Y. Maruyama, S. Kato, and T. Azumi, “Exploring the performance of ROS2,” in 2016 International Conference on Embedded Software (EMSOFT), 2016, pp. 1–10. [7] A. Barcis, M. Barci ´ s, and C. Bettstetter, “Robots that Sync and Swarm: ´ A proof of concept in ROS 2,” in 2019 International Symposium on Multi-Robot and Multi-Agent Systems (MRS), 2019, pp. 98–104. [8] A. Barcis and C. Bettstetter, “Sandsbots: Robots that sync and swarm,” ´ IEEE Access, vol. 8, pp. 218 752–218 764, 2020. [9] A. Testa, A. Camisa, and G. Notarstefano, “ChoiRbot: A ROS 2 toolbox for cooperative robotics,” IEEE Robotics and Automation Letters, vol. 6, no. 2, pp. 2714–2720, 2021. [10] J. P. Queralta, Y. Xianjia, L. Qingqing, and T. Westerlund, “Towards large-scale scalable MAV swarms with ROS2 and UWB-based situated communication.” [11] T. De Wolf and T. Holvoet, “Design patterns for decentralised coordination in self-organising emergent systems,” in Proceedings of the 4th International Conference on Engineering Self-Organising Systems, ser. ESOA’06. Berlin, Heidelberg: Springer-Verlag, 2006, p. 28–49. [12] J. L. Fernandez-Marquez, G. Di Marzo Serugendo, S. Montagna, M. Viroli, and J. L. Arcos, “Description and composition of bioinspired design patterns: a complete overview,” Natural Computing, vol. 12, no. 1, pp. 43–67, Mar. 2013. [13] L. Pitonakova, R. Crowder, and S. Bullock, “Information exchange design patterns for robot swarm foraging and their application in robot control algorithms,” Frontiers in Robotics and AI, vol. 5, p. 47, 2018. [14] D. St-Onge, V. S. Varadharajan, I. Svogor, and G. Beltrame, “From ˇ design to deployment: Decentralized coordination of heterogeneous robotic teams,” Frontiers in Robotics and AI, vol. 7, p. 51, 2020. [15] C. Xuefeng, C. Zhongxuan, W. Yanzhen, and Y. Xiaodong, “micros swarm framework - ROS Wiki,” 2019. [Online]. Available: https://wiki.ros.org/micros swarm framework [16] K. Morris, G. Arpino, S. Nagavalli, and K. Sycara, “Full stack swarm architecture,” RISS Working Papers Journal, 2018. [17] C.-E. Hrabia, T. K. Kaiser, and S. Albayrak, “Combining selforganisation with decision-making and planning,” in Multi-Agent Systems and Agreement Technologies, F. Belardinelli and E. Argente, Eds. Cham: Springer International Publishing, 2018, pp. 385–399. [18] V. C. Kalempa, M. A. S. Teixeira, A. S. de Oliveira, and J. A. Fabro, “Intelligent dynamic formation of the multi-robot systems to cleaning tasks in unstructured environments and with a single perception system,” in 2018 Latin American Robotic Symposium, 2018 Brazilian Symposium on Robotics (SBR) and 2018 Workshop on Robotics in Education (WRE), Nov 2018, pp. 71–76. [19] Y. Liu, A. Ali, and G. Dare, “swarm robot ros sim,” 2020. [Online]. Available: https://github.com/yangliu28/swarm robot ros sim [20] Gazebo, “Gazebo,” 2020. [Online]. Available: http://gazebosim.org/ [21] C. Moeslinger, T. Schmickl, and K. Crailsheim, “A minimalist flocking algorithm for swarm robots,” in Advances in Artificial Life. Darwin Meets von Neumann, G. Kampis, I. Karsai, and E. Szathmary, Eds. ´ Berlin, Heidelberg: Springer Berlin Heidelberg, 2011, pp. 375–382. [22] G. Valentini, E. Ferrante, H. Hamann, and M. Dorigo, “Collective decision with 100 Kilobots: Speed vs accuracy in binary discrimination problems,” Journal of Autonomous Agents and Multi-Agent Systems, vol. 30, no. 3, pp. 553–580, 2016. [23] G. Valentini, E. Ferrante, and M. Dorigo, “The best-of-n problem in robot swarms: Formalization, state of the art, and novel perspectives,” Frontiers in Robotics and AI, vol. 4, p. 9, 2017. [24] D. Thomas, E. Fernandez, and W. Woodall, “State of ROS 2 - demos and the technology behind,” in ROSCon Hamburg 2015. Open Robotics, September 2015. [Online]. Available: https://doi.org/10.36288/ROSCon2015-900743 [25] F. Arvin, K. Samsudin, and A. R. Ramli, “A short-range infrared communication for swarm mobile robots,” in 2009 International Conference on Signal Processing Systems, 2009, pp. 454–458. [26] L. Wang, A. D. Ames, and M. Egerstedt, “Safety barrier certificates for collisions-free multirobot systems,” IEEE Transactions on Robotics, vol. 33, no. 3, pp. 661–674, 2017. [27] C. Steup, S. Parlow, S. Mai, and S. Mostaghim, “Generic componentbased mission-centric energy model for micro-scale unmanned aerial vehicles,” Drones, vol. 4, no. 4, p. 63, 2020.


摘要:为移动机器人开发可重复使用的软件仍然具有挑战性。尽管机器人控制器具有理想的简单性,但对于群机器人来说更是如此。由于多机器人设置,原型设计和实验很困难,并且通常需要机器人与机器人之间的通信。此外,群机器人硬件平台的多样性增加了对独立于硬件的软件概念的需求。常用的机器人软件架构 ROS 2 的主要优点是模块化和平台独立性。文章提出了一个新的 ROS 2 包 ROS2SWARM,用于群机器人的应用,它提供了一个现成的群行为原语库。我们展示了我们的方法在三个不同平台上的成功应用,即 TurtleBot3 Burger、TurtleBot3 Waffle Pi 和 Jackal UGV,以及一组不同的行为原语,例如聚合、分散和集体决策。所提出的方法易于维护、可扩展,并且在未来应用中具有简化群体机器人实验的良好潜力。 

gitlab.iti.uni-luebeck.de/ROS2/ros2swarm


ROS2swarm手册 版本 1.1.0

ROS2swarm 是一个 ROS 2 (Dashing, Foxy) 包,提供了群行为模式。它由计算机工程研究所在德国吕贝克大学机器人研究所和医学电气工程研究所的支持下开发。

项目贡献者:Tanja Katharina Kaiser、Marian Johannes Begemann、Tavia Plattenteich、Lars Schilling、Georg Schildbach、Heiko Hamann、Vincent Jansen、Daniel Tidde、Steffen Fleischmann

当前的 ROS2swarm 版本是 1.1.0(Foxy)。

ICRA 2022 论文“ROS2swarm - A ROS 2 Package for Swarm Robot Behaviors”指的是版本 1.0.0 (Dashing),也可在此处找到。

关于 ROS2swarm

  • 安装指南
  • 如何使用 ROS2swarm
  • 支持的机器人平台
  • 现有模式
  • 整体架构
  • 模式的组成部分
  • 启动脚本概述
  • 仿真
  • 机器人
  • 封装结构

所需软件

使用修改后的 TurtleBot3 模型

ROS2swarm 可用于 ROS 2 版本 Dashing (dashing-dev)和Foxy (foxy-dev)。

群体行为模式由基于运动和投票的模式组成。组合模式可以使用基本模式从基本组件中创建更复杂的行为。这些行为可用于模拟,并且适用于多个受支持的机器人平台。提供启动脚本和 shell脚本来启动ROS2swarm。

安装指南

要查看 ROS2swarm 软件包的完整安装指南,请参阅安装指南。

如何使用 ROS2swarm

ROS2swarm 提供启动脚本以在模拟或真实机器人上启动模式。启动脚本的参数,例如机器人类型,可以通过编辑以下脚本的参数部分来设置。

脚本

功能

start_simulation.sh

使用所需数量的指定机器人启动 Gazebo 模拟。要开始行为执行,请运行 start_command.sh 脚本。

start_robot.sh

启动一个物理机器人。要开始执行行为,请运行 start_command.sh 脚本。

start_command.sh

在网络中的所有机器人上开始执行行为。 ros2 主题 pub --once /swarm_command communication_interfaces/msg/Int8Message "{data: 1}"

脚本/add_robots_to_simulation.sh

将额外的机器人添加到正在运行的 Gazebo 模拟中。这些可以是不同的机器人类型,提供了一种模拟异构群的简单方法。

支持的机器人平台

ROS2swarm 目前支持以下开箱即用的机器人平台:

  • TurtleBot3 Waffle Pi
  • TurtleBot3 Burger
  • Jackal  UGV

现有模式

下表概述了当前实现的模式。这些模式分为运动模式和投票模式。每个模式可以是基本模式,也可以是组合模式,它们利用一个或多个其他模式来创建更复杂的行为。

图案

领域

类型

模拟

机器人

驾驶

移动

基本的

分散

移动

基本的

吸引力

移动

基本的

磁力计

移动

基本的

极简植绒

移动

基本的

随机游走

移动

基本的

讨论色散模式

移动

结合

投票模式

表决

基本的

多数规则

表决

基本的

此外,还启动了硬件保护层来防止冲突。

系统架构

我们简要概述了模式组件、启动脚本和 ROS2swarm 的包。

模式的组成部分

模式由行为实现本身以及配置和启动文件组成。

文件

功能

ros2swarm/pattern_domain/pattern_type/pattern_name.py

模式的行为逻辑。

config/robot_type/pattern_domain/pattern_type/pattern_name.yaml

模式的参数配置。每种机器人类型都有一个文件。

启动/pattern_domain/pattern_type/pattern_name.launch.py

使用 pattern_name.yaml 中指定的参数启动 ROS 节点的启动文件。

要添加新模式,请从任何现有模式(例如驱动模式)复制文件,并实现所需的行为。还要记住将新模式的文件添加到 setup.py 并在那里注册新模式的主要功能。新模式可以通过 start_*.sh 脚本启动,其名称在 setup.py 中定义。

启动脚本概述

提供的启动脚本帮助用户启动 ROS2swarm 并执行所需的行为。有几个链接的脚本。在本节中,我们将解释它们的目的和内部调用顺序。我们提供脚本,用于在模拟和真实机器人上启动所需的群体行为。

仿真

对于机器人类型 TurtleBot3 Waffle Pi 和 TurtleBot3 Burger:

  • start_simulation.sh - 启动 Gazebo 模拟器和 ROS2swarm 的 shell 脚本
    • launch_turtlebot_gazebo/launch/create_environment.launch.py​​ - 中央模拟启动脚本,它调用其他启动脚本
      • launch_turtlebot_gazebo/launch/start_gazebo.launch.py​​ - 启动 Gazebo 模拟器
      • launch_turtlebot_gazebo/launch_turtlebot_gazebo/add_bot_node.py - 为每个机器人添加一个 Gazebo 机器人节点
      • ros2swarm/launch/bringup_patterns.launch.py​​ - 使用自己的命名空间管理每个机器人的模式开始
        • ros2swarm/hardware_protection_layer.py - 硬件保护层节点
        • ros2swarm/pattern_domain/pattern_type/pattern_name.launch.py​​ - 模式节点的启动脚本
        • robots_state_publisher 包 - robots_state_publisher 节点
  • scripts/add_robots_to_simulation.sh - 将更多机器人添加到仿真的 shell 脚本
    • launch_turtlebot_gazebo/launch/add_turtlebot.launch.py​​ - 允许将其他机器人添加到由创建环境脚本启动的模拟中(见上文)
      • launch_turtlebot_gazebo/launch_turtlebot_gazebo/add_bot_node.py - 为每个机器人添加一个 Gazebo 机器人节点
      • ros2swarm/launch/bringup_patterns.launch.py​​ - 使用自己的命名空间管理每个机器人的模式开始
        • 等如上

对于机器人类型 Jackal UGV:

开始一个 roscore 运行 rosbridge:https ://github.com/ros2/ros1_bridge

开始豺狼模拟:https ://gitlab.iti.uni-luebeck.de/plattenteich/jackal-swarm-addition

start_simulation.sh - 使用机器人:=jackal

真正的机器人

对于机器人类型 TurtleBot3 Waffle Pi 和 TurtleBot3 Burger:

start_robot.sh - 在单个机器人上启动 ROS2swarm 的 shell 脚本

ros2swarm/bringup_robot.launch.py​​ - 中央机器人启动脚本,将其他启动脚本添加到启动描述中

ros2swarm/turtlebot3_bringup.launch.py​​ - 启动 TurtleBot3 机器人节点并启动文件

对于机器人类型 Jackal:

start_robot.sh - 使用robot:=jackal 在单个机器人上启动ROS2swarm 的shell 脚本

不启动jackal对应,只提供行为模式的订阅者和发布者

封装结构

ROS2swarm 由三个 ROS 包组成:

ros2swarm

包含行为模式及其配置和启动文件的主包。 launch_turtlebot_gazebo

启动 Gazebo 模拟的脚本 通信接口

模式使用的特殊 ROS 消息的接口

所需软件

Dashing

Ubuntu 18.04 LTS ROS 2 Dashing Diademata ROS 2 TurtleBot3 软件包 Python 3.6 用于仿真的 Gazebo 9

Foxy

Ubuntu 20.04 LTS ROS 2 Foxy ROS 2 TurtleBot3 软件包 Python 3.8.10 用于仿真的 Gazebo 11

使用修改后的 TurtleBot3 模型

ROS2swarm 为修改后的 Turtlebot3 模型提供网格。要使用它们,必须将它们复制到 turtlebot3 包的工作区,如下所述。要选择标准 Turtlebot3 Waffle Pi 机器人,请在启动脚本中使用“waffle_pi”。要选择修改后的 Turtlebot3 Waffle Pi 版本,请在启动脚本中使用“waffle_pi_name_of_modification”。然后在使用提供的启动脚本时自动选择 Gazebo 的网格。TurtleBot3“汉堡”模型也是如此。下面描述了使用修改后的模型的步骤。

Gazebo 中没有传感器可视化的 TurtleBot3

要使用 TurtleBot3 Burger,请将下面的“waffle_pi”替换为“burger”。

  1. 复制
代码语言:javascript
复制
WaffelPi_Model_Extension/turtlebot3_waffle_pi_invisible_sensors

代码语言:javascript
复制
turtlebot3_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models
  1. 复制
代码语言:javascript
复制
WaffelPi_Model_Extension/turtlebot3_waffle_pi_invisible_sensors.urdf

代码语言:javascript
复制
turtlebot3_ws/src/turtlebot3/turtlebot3_description
  1. 构建turtlebot3_ws
代码语言:javascript
复制
cd ~/turtlebot3_ws && colcon build --symlink-install
  1. 在 start_*.sh 中使用机器人选择参数
代码语言:javascript
复制
number_robots:=waffle_pi_invisible_sensors
代码语言:javascript
复制
source ~/turtlebot3_ws/install/setup.bash

安装指南

本指南是在 Ubuntu 20.04 操作系统上安装 ROS2swarm 包以与 TurtleBot3 一起使用的详细分步说明。它是根据指南建立一个turtlebot3开发环境并使用手动安装的

https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/ https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/

先决条件

本指南要求已安装 OS Ubuntu Bionic 20.04。

安装 ROS 2 Foxy 安装 ROS 2 桌面版如下: https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html

设置语言环境

代码语言:javascript
复制
locale  # check for UTF-8

sudo apt update && sudo apt install locales
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

locale  # verify settings

设置源

代码语言:javascript
复制
sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

安装 ROS 2 包

代码语言:javascript
复制
sudo apt update
sudo apt install ros-foxy-desktop
echo 'source /opt/ros/foxy/setup.bash' >> ~/.bashrc

安装 argcomplete(可选)

代码语言:javascript
复制
sudo apt install -y python3-pip
pip3 install -U argcomplete

测试是否安装成功新终端

代码语言:javascript
复制
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_py listener

安装依赖的 ROS 2 包,包括Gazebo

安装 colcon

代码语言:javascript
复制
sudo apt install python3-colcon-common-extensions

安装Gazebo

代码语言:javascript
复制
sudo apt install ros-foxy-gazebo-ros-pkgs

安装cartographer

代码语言:javascript
复制
sudo apt install ros-foxy-cartographer
sudo apt install ros-foxy-cartographer-ros

安装Nav2

代码语言:javascript
复制
sudo apt install ros-foxy-navigation2
sudo apt install ros-foxy-nav2-bringup

安装turtlebot3

安装 TurtleBOt3 软件包

TurtleBot3 包和源代码:

代码语言:javascript
复制
mkdir -p ~/turtlebot3_ws/src
cd ~/turtlebot3_ws/src/
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
sudo apt install ros-dashing-dynamixel-sdk
cd ~/turtlebot3_ws && colcon build --symlink-install

环境配置

代码语言:javascript
复制
echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' >> ~/.bashrc

安装turtlebot3_simulation包

代码语言:javascript
复制
cd ~/turtlebot3_ws/src/
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

切换到支持的版本

ROS2swarm 包仅支持 turtlebot3 包的以下提交。

turtlebot3:

代码语言:javascript
复制
cd  ~/turtlebot3_ws/src/turtlebot3
git checkout 8237b796ea1571033bf3230fbc78d1143968ddd1

turtlebot3_msgs:

代码语言:javascript
复制
cd ~/turtlebot3_ws/src/turtlebot3_msgs
git checkout cf5c56be94b335b1d2c9817bd2dcaceec21ccc68

turtlebot3_simulations:

代码语言:javascript
复制
cd ~/turtlebot3_ws/src/turtlebot3_simulations
git checkout f5d86bbeb614f46a176f47b3697c85a8a9b989f9

设置Gazebo模型路径

代码语言:javascript
复制
echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/turtlebot3_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models' >> ~/.bashrc

构建turtlebot3包

代码语言:javascript
复制
cd ~/turtlebot3_ws && colcon build --symlink-install
echo 'export TURTLEBOT3_MODEL=waffle_pi' >> ~/.bashrc
source ~/.bashrc

测试示例仿真是否有效

代码语言:javascript
复制
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

安装 ROS2swarm 包

将项目文件夹放在您的主目录中(也是使用脚本所必需的)

代码语言:javascript
复制
git clone git@gitlab.iti.uni-luebeck.de:ROS2/ros2swarm.git
cd ~/ROS2swarm
colcon build --symlink-install
echo 'source ~/ROS2swarm/install/setup.bash' >> ~/.bashrc

测试 ROS2swarm 包是否启动模拟

代码语言:javascript
复制
source ~/.bashrc
bash ~/ROS2swarm/restart.sh

基于模板的附加安装

将 PyCharm 安装为 IDE

代码语言:javascript
复制
sudo snap install pycharm-educational --classic

将 ROS 引入 PyCharm

代码语言:javascript
复制
sudo nano /var/lib/snapd/desktop/applications/pycharm-educational_pycharm-educational.desktop

用 Exec 行中的命令替换 /snap/bin/pycharm-educational

代码语言:javascript
复制
bash -i -c "/snap/bin/pycharm-educational"

或者如果结果不起作用,则恢复更改并使用源 ROS2 从控制台启动 IDE

代码语言:javascript
复制
snap run pycharm-educational

选择 python3.7 作为默认值(仅在需要旧模板中)

代码语言:javascript
复制
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 3

安装pip

代码语言:javascript
复制
sudo apt install python-pip

安装升级点

代码语言:javascript
复制
pip install --upgrade pip

安装 open_cv

代码语言:javascript
复制
pip install opencv-python
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ROS2swarm手册 版本 1.1.0
  • 所需软件
  • 安装指南
  • 支持的机器人平台
  • 现有模式
  • 系统架构
  • 安装依赖的 ROS 2 包,包括Gazebo
  • 安装turtlebot3
  • 切换到支持的版本
  • 安装 ROS2swarm 包
  • 基于模板的附加安装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档