area_division package from swarm_functions repoarea_division coverage_path kinematics_exchanger state_exchanger swarm_functions target_monitor task_allocation
|Tags||No category tags.|
|License||Apache License 2.0|
|CI status||Continuous Integration|
|Package Tags||No category tags.|
Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)
- Micha Sende
- Micha Sende
This package divides the available environment area among multiple cyber physical systems (CPSs) in a swarm. It is part of the swarm functions library.
The communication between CPSs is based on the CPSwarm Communication Library.
The following packages of the sensing and actuation library are required: * area_provider * *_pos_provider * *_pos_controller
Further required packages are: * roscpp
Run the launch file
roslaunch area_division area_division.launch
to launch the
The launch file can be configured with following parameters:
id (integer, default:
The identifier (ID) of the CPS used for name spacing in simulation.
output (string, default:
Whether to show the program output (
screen) or to write it to a log file (
param subdirectory there is the parameter file
area_division.yaml that allows to configure the behavior of the
area_division divides the environment area among multiple CPSs. When this node is running, it listens to area division requests by other CPSs to perform the area division. The division can also be triggered locally, by calling the
area/assigned service. Once the area division starts, all CPSs that participate in the area division, stop moving, and synchronize in order to achieve the same area division result. The division algorithm is based on the DARP algorithm which tries to divide the area optimally. Each CPS is assigned an equal share of the environment that includes its current position.
pos_provider/pose(geometry_msgs/PoseStamped) The current position of this CPS.
area_provider/map(nav_msgs/OccupancyGrid) The map to be divided.
bridge/uuid(swarmros/String) The UUID of this CPS.
bridge/events/area_division(cpswarm_msgs/AreaDivisionEvent) The area division requests from other CPSs. Messages are exchanged between CPSs using the CPSwarm Communication Library.
pos_controller/goal_position(geometry_msgs/PoseStamped) The topic for stoping the CPS.
area_division(cpswarm_msgs/AreaDivisionEvent) The topic for requesting area division among the available CPSs in the swarm. The request is forwarded by the CPSwarm Communication Library to the other swarm members.
assigned_map(nav_msgs/OccupancyGrid) The area assigned to this CPS for visualization purposes. Only published if the parameter
visualizeis set to true.
area/assigned(nav_msgs/GetMap) Provides the map of the area assigned to this CPS.
1.5) The frequency in Hz at which to run the control loops.
10) The size of the message queue used for publishing and subscribing to topics.
1.0The grid map underlying the area division will be downsampled to this resolution in meter / cell.
5.0) The time in seconds to wait after an area division event before starting the area division.
false) Whether to publish the area division on a topic for visualization.
10) Maximum number of iterations of the optimization algorithm.
0.01) Maximum variate weight of connected components.
30) Maximum difference between number of assigned grid cells to each CPS.
Changelog for package area_division
- Initial release of area_division
- Contributors: Micha Sende
- id [default: 1]
- output [default: log]