Repository Summary
Description | A ROS 2 package providing an easy-to-extend framework for and library of swarm behaviors. |
Checkout URI | https://github.com/ros2swarm/ros2swarm.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2023-08-25 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics ros ros2 turtlebot3 |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
communication_interfaces | 1.0.0 |
launch_gazebo | 0.0.0 |
ros2swarm | 0.0.0 |
README
Manual ROS2swarm Version 1.2.0
ROS2swarm is a ROS 2 (Dashing, Foxy) package that provides swarm behavior patterns. The project started at the Institute of Computer Engineering with support from the Institute of Robotics and the Institute for Electrical Engineering in Medicine of the University of Lübeck, Germany. Currently, it is mainly developed by the Cyber-Physical Systems Group of the University Konstanz, Germany.
A list of all project contributors can be found here
The current ROS2swarm version is 1.2.0.
The ICRA 2022 paper “ROS2swarm - A ROS 2 Package for Swarm Robot Behaviors” refers to version 1.0.0 (Dashing), which can be found here.
About ROS2swarm
- About ROS2swarm
- Installation guide
- How to use ROS2swarm
- Supported robot platforms
- Existing patterns
- Sensor Layer
- Architecture
- Required software
- Using the Thymio model and the modified TurtleBot3 models
ROS2swarm is available for the ROS 2 Versions Dashing (dashing-dev), Foxy (foxy-dev), and Galactic (galactic-dev).
The included swarm behavior patterns consist of movement and voting based patterns. Basic patterns can be used by combined patterns to create more complex behaviors out of basic components. The behaviors are available for simulation and out of the box for several supported robot platforms. We provide launch scripts and shell scripts to start ROS2swarm.
Installation guide
To see a full installation guide for the ROS2swarm package please see the installation guide.
How to use ROS2swarm
ROS2swarm provides launch scripts to start the patterns in a simulation or on real robots. The parameters of the launch scripts, such as the robot type, can be set by editing the parameter sections of the following scripts.
Script | Function |
---|---|
start_simulation.sh | Start the Gazebo simulation with the desired number of specified robots. To start behavior execution, run start_command.sh script. |
start_robot.sh | Start one physical robot. To start behavior execution, run the start_command.sh script. |
start_command.sh | Starts behavior execution on all robots in the network. ros2 topic pub –once /swarm_command communication_interfaces/msg/Int8Message “{data: 1}” |
scripts/add_robots_to_simulation.sh | Adds additional robots to the running Gazebo simulation. These can be of a different robot type providing an easy way to simulate heterogeneous swarms. |
Supported robot platforms
ROS2swarm currently supports the following robot platforms out of the box:
- TurtleBot3 Waffle Pi (robot:=waffle_pi; sensor_type:=lidar)
- TurtleBot3 Burger (robot:=burger; sensor_type:=lidar)
- Jackal UGV (robot:=jackal; sensor_type:=lidar)
- Thymio II (robot:=waffle_pi; sensor_type:=ir)
Existing patterns
The following table gives an overview the current implemented patterns. The patterns are separated into movement and voting patterns. Every pattern can either be a basic pattern or a combined one, which make use of one or more other patterns to create more complex behaviors.
Pattern | Domain | Type | Simulation | Robot | Sensor Requirements |
---|---|---|---|---|---|
aggregation | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | LiDAR or IR |
attraction | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | LiDAR or IR |
attraction 2 | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | LiDAR or IR |
dispersion | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | LiDAR or IR |
drive | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | |
magnetometer | Movement | Basic | :x: | :heavy_check_mark: | |
minimalist flocking | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | LiDAR or IR |
random walk | Movement | Basic | :heavy_check_mark: | :heavy_check_mark: | |
discussed dispersion pattern | Movement | Combined | :heavy_check_mark: | :heavy_check_mark: | LiDAR or IR |
voter model | Voting | Basic | :heavy_check_mark: | :heavy_check_mark: | |
majority rule | Voting | Basic | :heavy_check_mark: | :heavy_check_mark: |
In addition, a hardware protection layer is started to prevent collisions.
Sensor Layer
ROS2swarm provides several sensor layers to enable the use of robots with different sensor setups:
- lidar_layer
- ir_layer
- ir_tf_layer
The sensor layer receives the sensor data from the respective sensors and transforms it to a RangeData message.
``` std_msgs/Header header
File truncated at 100 lines see the full file