Package Summary

Tags No category tags.
Version 1.1.0
License Apache License 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/cpswarm/swarm_functions.git
VCS Type git
VCS Version noetic-devel
Last Updated 2022-04-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A package that generates an optimal path to cover a given area with a cyber physical system (CPS).

Additional Links

Maintainers

  • Micha Sende

Authors

  • Micha Sende

coverage_path

Build Status

This package generates an optimal path to cover a given area with a cyber physical system (CPS).

Dependencies

This package depends on the following message definitions: * geometry_msgs * nav_msgs * cpswarm_msgs

The communication between CPSs is based on the CPSwarm Communication Library.

The following packages of the swarm functions library are required: * area_division (only if divide_area=true) * state_exchanger (only if divide_area=true)

The following packages of the sensing and actuation library are required: * area_provider

Further required packages are: * roscpp * tf2

Execution

Run the launch file

roslaunch coverage_path coverage_path.launch

to launch the coverage_path node.

The launch file can be configured with following parameters: * id (integer, default: 1) The identifier (ID) of the CPS used for name spacing in simulation. * output (string, default: screen) Whether to show the program output (screen) or to write it to a log file (log).

In the param subdirectory there is the parameter file coverage_path.yaml that allows to configure the behavior of the coverage_path node.

Nodes

coverage_path

The coverage_path node generates a path that allows a CPS to cover a given area. The area can be provided in three different ways, prioritized in the following order: 1. If the coordinates of a region of interest (ROI) are passed in with the action goal, its area is used. The corresponding grid map is retrieved from the area_provider package. 2. If divide_area=true, the map is retrieved from the area_division package. It divides the area to be covered among multiple CPSs and provides the grid map of the area assigned to this CPS. When the swarm composition changes, the map is retrieved again and the path is regenerated. 3. Otherwise, the whole area is covered by this CPS. The grid map is retrieved from the area_provider package.

The generated coverage path is based on a minimum spanning tree to optimally sweep the area. The path can be retrieved either as a whole (action) or waypoint after waypoint (service). In the latter case, the current waypoint is returned, based on the current position of the CPS.

Subscribed Topics

  • swarm_state (cpswarm_msgs/ArrayOfStates) The behavior states of the other swarm members. Only subscribed if divide_area=true. Once the composition of the swarm changes (members joining or leaving), the assigned area is retrieved again from the area_division package and the path is regenerated.

Published Topics

  • coverage_path/path (nav_msgs/Path) The generated path for visualization purposes. Only published if visualize=true.
  • coverage_path/waypoint (geometry_msgs/PointStamped) The current waypoint of the generated path for visualization purposes. Only published if visualize=true.
  • coverage_path/mst (geometry_msgs/PoseArray) The minimum spanning tree of the area for visualization purposes. Only published if visualize=true.

Services

  • coverage_path/waypoint (cpswarm_msgs/GetWaypoint) Provides the current waypoint of the generated path. If the current waypoint is within the tolerance to the position provided in the request, the next waypoint is selected and returned. A new path is generated if it has not been generated by the action or the swarm composition changed and divide_area=true.

Services Called

  • rois/get_map (cpswarm_msgs/GetMap) Get the grid map of the ROI to be covered including any required rotation and translation. Only called if the ROI coordinates are passed in with the action goal.
  • area/get_divided_map (cpswarm_msgs/GetMap) Get the grid map of the area assigned to this CPS including any required rotation and translation. Only called if divide_area=true.
  • area/get_map (cpswarm_msgs/GetMap) Get the grid map of the area to be covered including any required rotation and translation.

Action Servers

  • coverage_path/generate (cpswarm_msgs/PathGenerationAction) The action server implements a simple action client. The goal contains the starting point of the coverage path. If area coordinates are also passed (optional), the path is generated for the ROI matching these coordinates. If no matching ROI is found, the generation fails. If no coordinates are given, either the complete mission area or a subset (in case of divide_area=true) is covered. If the path generation is successful, the result contains the complete path.

Parameters

  • ~queue_size (integer, default: 1) The size of the message queue used for publishing and subscribing to topics.
  • ~resolution (real, default: 1.0) The spacing between two adjacent coverage path legs in meter.
  • ~visualize (boolean, default: false) Whether to publish the coverage path on a topic for visualization.
  • ~divide_area (boolean, default: false) Whether to divide the area among the CPSs in the swarm before generating the path. Joining or leaving swarm members will trigger regeneration of the path.
  • ~vertical (boolean, default: false) Whether the sweeping pattern is vertical or horizontal.
  • ~turning_points (boolean, default: true) Whether there are only waypoints at turning points of the path or also waypoints regularly spaced on straight line segments of the path.
  • swarm_timeout (real, default: 5.0) The time in seconds after which it is assumed that a swarm member has left the swarm if no messages have been received. Only in combination with divide_area=true.
  • states (string list, default []) Only CPSs in these states are considered part of the swarm. Only in combination with divide_area=true.

Code API

coverage_path package code API documentation

CHANGELOG

Changelog for package coverage_path

1.1.0 (2019-10-31)

  • Initial release of coverage_path
  • Contributors: Micha Sende

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged coverage_path at answers.ros.org

Package Summary

Tags No category tags.
Version 1.1.0
License Apache License 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/cpswarm/swarm_functions.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2021-01-19
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A package that generates an optimal path to cover a given area with a cyber physical system (CPS).

Additional Links

Maintainers

  • Micha Sende

Authors

  • Micha Sende

coverage_path

Build Status

This package generates an optimal path to cover a given area with a cyber physical system (CPS).

Dependencies

This package depends on the following message definitions: * geometry_msgs * nav_msgs * cpswarm_msgs

The communication between CPSs is based on the CPSwarm Communication Library.

The following packages of the swarm functions library are required: * area_division (only if divide_area=true) * state_exchanger

The following packages of the sensing and actuation library are required: * area_provider (only if divide_area=false)

Further required packages are: * roscpp * tf2

Execution

Run the launch file

roslaunch coverage_path coverage_path.launch

to launch the coverage_path node.

The launch file can be configured with following parameters: * id (integer, default: 1) The identifier (ID) of the CPS used for name spacing in simulation. * output (string, default: screen) Whether to show the program output (screen) or to write it to a log file (log).

In the param subdirectory there is the parameter file coverage_path.yaml that allows to configure the behavior of the coverage_path node.

Nodes

coverage_path

The coverage_path node generates a path that allows a CPS to cover a given area. It uses the area assigned by the area_division package. The generated coverage path is based on a minimum spanning tree to optimally sweep the area. The path is regenerated when area to be covered changes. The path can be retrieved either as a whole or waypoint after waypoint. In the latter case, the current waypoint is returned, based on the current position of the CPS.

Subscribed Topics

Published Topics

  • coverage_path/path (nav_msgs/Path) The generated path for visualization purposes. Only published if the parameter visualize is set to true.
  • coverage_path/waypoint (geometry_msgs/PointStamped) The current waypoint of the generated path for visualization purposes. Only published if the parameter visualize is set to true.
  • coverage_path/mst (geometry_msgs/PoseArray) The minimum spanning tree of the area for visualization purposes. Only published if the parameter visualize is set to true.

Services

Services Called

Parameters

  • ~loop_rate (real, default: 1.5) The frequency in Hz at which to run the control loops.
  • ~queue_size (integer, default: 1) The size of the message queue used for publishing and subscribing to topics.
  • ~resolution (real, default: 1.0) The grid map underlying the path planning will be downsampled to this resolution in meter / cell.
  • ~visualize (boolean, default: false) Whether to publish the coverage path on a topic for visualization.
  • ~divide_area (boolean, default: false) Whether to divide the area among the CPSs before generating the path or to generate the path on the complete map. If true, downsampling is not available.
  • ~vertical (boolean, default: false) Whether the sweeping pattern is vertical or horizontal.
  • ~turning_points (boolean, default: false) Whether there are only waypoints at turning points of the path or also waypoints regularly spaced on straight line segments of the path.

Code API

coverage_path package code API documentation

CHANGELOG

Changelog for package coverage_path

1.1.0 (2019-10-31)

  • Initial release of coverage_path
  • Contributors: Micha Sende

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged coverage_path at answers.ros.org