## Overview

This package includes the `tuw_voronoi_graph_node`, which generates a voronoi graph out of a pixel map and the `tuw_segment_to_graph_node`, which generates a graph out of segments.

## tuw voronoi graph node

Receives a pixel map (occupancy_grid) and converts it into a `tuw_multi_robot_msgs/Graph` message spanning the whole free space of the map. Additionally the graph is saved to a given folder. If a map is already converted to a graph the graph is loaded from memory to save computation time.

### Subscribed Topics

`~map` (`nav_msgs/OccupancyGrid`)

- The map used for planning (used for matching odom pose to graph)

### Published Topics

`~segments` (`tuw_multi_robot_msgs/VoronoiGraph`)

- The generated graph

`~map_eroded` (`nav_msgs/OccupancyGrid`)

- erode of the input map if the parameter publish_map_eroded is true

### Parameters

`~map_inflation` (`double` default: "0.1" [m])

- Sets the parameter to erode the map for a cleaner Voronoi graph.

`~segment_length` (`float` default: "0.9")

- Defines the length of a graph segment.

`~crossing_opimization` (`float` default: "0.2")

- Crossings which have less distance than this value are merged together

`~end_segment_optimization` (`float` default: "0.4")

- End segments (has only one neighbor) which are shorter than this value are removed.

`~graph_path` (`string` default: ".")

- Defines the path were the generated graphs are saved

`~custom_graph_path` (`string` default: "")

- If this param is set a custom generated graph is loaded from this path

`~publish_map_eroded` (`bool` default: "false")

- on true it will publish the eroded map

## tuw dxf to graph node

This is a standard executable which takes a .dxf file as input and generates a graph which is saved to be loaded with the `tuw_voronoi_graph_node`.

The dxf file must contain the original map.pgm (e.g. used by map server) transformed by scale and offset, to give scale and offset to the application (Theoretically any image with the right scale and offset would work as well). Additionally lines, circles and arcs can be included, which are included to generate the segments. All elements which share an endpoint are connected.

Each resulting segment has a width, given by the command-line argument -w and a length, which has at least the length of the command-line argument [-l] and at max the length of [2*(-l) - epsilon].

### Arguments

`-h [ --help ]`

- Display help message

`-i [ --input ] arg (=./segments.dxf)`

- The path to the file

`-o [ --output ] arg (=./graphs/segments)`

- The output directory

`-w [ --width ] arg (=0.600000024)`

- The width of a segments in meters

`-l [ --length ] arg (=1)`

- The length of a segment in meters

## tuw segment to graph node

Receives a pixel map (occupancy_grid) and converts it into a `tuw_multi_robot_msgs/Graph` message spanning the whole free space of the map. Additionally the graph is saved to a given folder. If a map is already converted to a graph the graph is loaded from memory to save computation time.

### Subscribed Topics

### Published Topics

`~segments` (`tuw_multi_robot_msgs/VoronoiGraph`)

- The generated graph

### Parameters

`~segment_file` (`string` default: "segments.yaml")

- The filepath to the defined segments.

`~segments_topic` (`string` default: "/segments")

- The topic where the graph is published.

`~segment_length` (`float` default: "0.9")

- Defines the length of a graph segment.

### Sample Segments File

start_x: [ 0, 2, 3.2, 5] start_y: [ -1.5, -1.5, -2, -4] end_x: [ 2, 3.2, 5, 3] end_y: [ -1.5, -2, -4, -4] space: [ 1.0, 1.0, 1.0, 1.0] origin_x: -15 origin_y: -15 resolution: 0.05

## Report a Bug

Use GitHub to report bugs or submit feature requests. [View active issues]