tuw_multi_robot repository

Repository Summary

Checkout URI https://github.com/tuw-robotics/tuw_multi_robot.git
VCS Type git
VCS Version master
Last Updated 2018-11-15
Dev Status MAINTAINED
Released UNRELEASED

README

tuw_multi_robot

200 Robots in stage

This repository includes ros packages to plan routes for multiple robots on a search graph. It creates a search graph out of a pixel map and tries to find a path for multiple robots using an extended approach for prioritized planning. The inputs are the tuw_multi_robot_msgs/RobotInfo messages which include the robots pose, the map and the desired goal poses. The output are multiple synchronized routes given to the individual robots.

Installation

Have a look at the INSTALL.md file

Demos / Tutorials

Have a look at the tuw_multi_robot_demo/README.md file

Packages

  • tuw_multi_robot_ctrl
  • tuw_multi_robot_demo
  • tuw_multi_robot_goal_generator
  • tuw_multi_robot_local_behavior_controller
  • tuw_multi_robot_router
  • tuw_multi_robot_rviz
  • tuw_order_planner
  • tuw_rqt_ordermanager
  • tuw_voronoi_graph

System overview

200 Robots in stage

This figure represents the current state and planned developments on the tuw_multi_robot framework. The framework is designed to cover all tools needed for an automated delivery system with autonomous vehicles. The current state of the system allows one to set goals for multiple vehicles using RViz, a configuration file, or an order mangement system which is capable to assign vehicles for specific deliveries and generates goals for the multi robot route planner. The green boxes show already existing modules while the red boxes are not yet implmented/released. The system provides a simple local motion controller for all robots, which allows a high number (> 100) of vehicles to be controlled in real time using stage. Furthermore, the design allows the usage of existing individual controllers such as DWA implmented in move_base.

tuw_multi_robot_demo

Contains launch and config files to run a sample demo.

roslaunch tuw_multi_robot_demo demo.launch room:=cave  nr_of_robots:=3 
roslaunch tuw_multi_robot_demo demo.launch room:=warehouse_14  nr_of_robots:=14 
roslaunch tuw_multi_robot_demo demo.launch room:=warehouse_200  nr_of_robots:=50 

tuw_multi_robot_goal_generator

Using this pkg one can generate, save and read goal lists. The random goal generation needs a running map publisher in order to generate valid goals.

rosrun tuw_multi_robot_goal_generator goals_random _nr_of_robots:=3 _distance_boundary:=0.6 _distance_to_map_border:=0.2 _nr_of_avaliable_robots:=14

tuw_voronoi_graph

This package includes a voronoi-graph-generator, a dxf-to-graph-node and a segment-to-graph node for creating search graphs for the multi robot router.

The voronoi-graph-generator-node receives a pixel map (occupancy_grid) and converts it into a voronoi graph describing the original map. This graph is automatically generated or loaded from a cache folder if saved. Additionally the node can load specific graphs saved in a folder.

voronoi-graph

The voronoi-dxf-to-graph takes a dxf file as input containing the scaled and transformed map and any number of lines arcs and circles. These lines arcs and circles are converted to a graph and saved to a specific location.

Librecad

The voronoi-segment-to-graph-node takes a segment file with predefined segments as input and converts it to a graph, which is published afterwards.

The graph-generator-node receives a grid_map like the one published from voronoi-map-generator-node and converts it into a graph message for use in tuw_multi_robot_route_planner.

tuw_multi_robot_router

The tuw_multi_robot_router is a Multi Robot Route Planner, which subscribes to tuw_multi_robot_msgs/RobotInfo messages, to the map/graph published from the tuw_voronoi_graph package, and to the tuw_multi_robot_msgs/RobotGoalsArray message.

The MRRP uses a prioritized planning approach to find the robots routes. Additionally, there are a Priority and a Speed Rescheduler as well as a Collision resolver integrated to solve special scenarios not solvable by standard prioritized planning approaches. Since the results generated for these scenarios are interdependent, the given routes have to be executed in a synchronized fashion. Therefore, the Router publishes a tuw_multi_robot_msgs/Route containing preconditions, when a robot is allowed to enter a segment. Additionally a unsynchronized version via nav_msgs/Path is published for every robot. The algorithm is documented in the master thesis [1].

tuw_multi_robot_rviz

Presents rviz plugins to set goal positions for the planner and a tool to visualize generated graphs.

rviz plugin

tuw_multi_robot_ctrl

A simple multi robot controller using tuw_multi_robot_msgs/Route messages as input, which are used to execute the path in a synchronized fashion. (The global controller is used for testing with a high number of robots)

tuw_multi_robot_local_behavior_controller

This package contains a node, which receives the tuw_multi_robot_msgs/RouteSegment message for a robot and publishes a nav_msgs/Path up to the point a robot is allowed to move.

A tuw_multi_robot_msgs/RouteSegment contains a set of segments, where each of them has preconditions to tell when a robot is allowed to enter a certain segment. The tuw_multi_robot_route_to_path_node subscribes to these messages and checks how many of these preconditions are met and publishes a path from start to the last segment, for which the preconditions are met. This node subscribes to all robots as one node for performance reasons while testing with a large number of robots.

tuw_order_planner

Assigns robots to orders and publishes goals until all orders are complete. See tuw_order_planner.

tuw_rqt_ordermanager

RQT plugin to build stations interactively and assign them to orders. See tuw_rqt_ordermanager. RQT ordermanager

References

http://wiki.ros.org/tuw_multi_robot

Citations

[1] Binder, B. (2017). Spatio-Temporal Prioritized Planning (Master thesis), Retrieved from TU Wien Bibliothekssystem (Accession No. AC14520240)

Repository Summary

Checkout URI https://github.com/tuw-robotics/tuw_multi_robot.git
VCS Type git
VCS Version kinetic
Last Updated 2018-09-17
Dev Status MAINTAINED
Released UNRELEASED

README

tuw_multi_robot

200 Robots in stage

This repository includes ros packages to plan routes for multiple robots on a search graph. It creates a search graph out of a pixel map and tries to find a path for multiple robots using an extended approach for prioritized planning. The inputs are the tuw_multi_robot_msgs/RobotInfo messages which include the robots pose, the map and the desired goal poses. The output are multiple synchronized routes given to the individual robots.

Installation

Have a look at the INSTALL.md file

Demos / Tutorials

Have a look at the tuw_multi_robot_demo/README.md file

Packages

  • tuw_multi_robot_ctrl
  • tuw_multi_robot_demo
  • tuw_multi_robot_goal_generator
  • tuw_multi_robot_local_behavior_controller
  • tuw_multi_robot_router
  • tuw_multi_robot_rviz
  • tuw_voronoi_graph

System overview

200 Robots in stage

This figure reprecents the current state and planed developments on the tuw_multi_robot framework. The framework is designed to cover all tools needed for an automated delivery system with autonomouos vehicles. In the current state of the system allows one to set goals for multiple vehicles using RViz or by a configuration file. In the future we also want to integrate an order mangement system which is capable to assign vehicles for specific deliveries and generates goals for the multi robot route planner. The green boxes show already existing modules while the red boxes are not yet implmented/released. The system provides a simple local motion controller for all robots, which allows a high number (> 100) of vehicles to be controlled in real time using stage. Furthermore, the design allows the usage of existing individual controllers such as DWA implmented in move_base.

tuw_multi_robot_demo

Contains launch and config files to run a sample demo.

roslaunch tuw_multi_robot_demo demo.launch room:=cave  nr_of_robots:=3 
roslaunch tuw_multi_robot_demo demo.launch room:=warehouse_14  nr_of_robots:=14 
roslaunch tuw_multi_robot_demo demo.launch room:=warehouse_200  nr_of_robots:=50 

tuw_multi_robot_goal_generator

Using this pkg one can genrate, save and read goal lists. The random goal generation needs a running map publisher in order to generate valid goals.

rosrun tuw_multi_robot_goal_generator goals_random _nr_of_robots:=3 _distance_boundary:=0.6 _distance_to_map_border:=0.2 _nr_of_avaliable_robots:=14

tuw_voronoi_graph

This package includes a voronoi-graph-generator a dxf-to-graph-node and a segment-to-graph node for creating search graphs for the multi robot router.

The voronoi-graph-generator-node receives a pixel map (occupancy_grid) and converts it into a voronoi graph describing the original map. This graph is automatically generated or loaded from a cache folder if saved. Additionally the node can load specific graphs saved in a folder.

voronoi-graph

The voronoi-dxf-to-graph takes a dxf file as input containing the scaled and transformed map and any number of lines arcs and circles. These lines arcs and circles are converted to a graph and saved to a specific location.

Librecad

The voronoi-segment-to-graph-node takes a segment file with predefined segments as input and converts it to a graph, which is published afterwards.

The graph-generator-node receives a grid_map like the one published from voronoi-map-generator-node and converts it into a graph message for use in tuw_multi_robot_route_planner.

tuw_multi_robot_router

The tuw_multi_robot_router is a Multi Robot Route Planner, which subscribes to tuw_multi_robot_msgs/RobotInfo messages, to the map/graph published from the tuw_voronoi_graph package, and to the tuw_multi_robot_msgs/RobotGoalsArray message.

The MRRP uses a prioritized planning approach to find the robots routes. Additionally, there are a Priority and a Speed Rescheduler as well as a Collision resolver integrated to solve special scenarios not solvable by standard prioritized planning approaches. Since the results generated for these scenarios are interdependent, the given routes have to be executed in a synchronized fashion. Therefore, the Router publishes a tuw_multi_robot_msgs/Route containing preconditions, when a robot is allowed to enter a segment. Additionally a unsynchronized version via nav_msgs/Path is published for every robot. The algorithm is documented in the master thesis [1].

tuw_multi_robot_rviz

Presents rviz plugins to set goal positions for the planner and a tool to visualize generated graphs.

rviz plugin

tuw_multi_robot_ctrl

A simple multi robot controller using tuw_multi_robot_msgs/Route messages as input, which are used to execute the path in a synchronized fashion. (The global controller is used for testing with a high number of robots)

tuw_multi_robot_local_behavior_controller

This package contains a node, which receives the tuw_multi_robot_msgs/RouteSegment message for a robot and publishes a nav_msgs/Path up to the point a robot is allowed to move.

A tuw_multi_robot_msgs/RouteSegment contains a set of segments, where each of them has preconditions to tell when a robot is allowed to enter a certain segment. The tuw_multi_robot_route_to_path_node subscribes to these messages and checks how many of these preconditions are met and publishes a path from start to the last segment, for which the preconditions are met. This node subscribes to all robots as one node for performance reasons while testing with a large number of robots.

References

http://wiki.ros.org/tuw_multi_robot

Citations

[1] Binder, B. (2017). Spatio-Temporal Prioritized Planning (Master thesis), Retrieved from TU Wien Bibliothekssystem (Accession No. AC14520240)