This repository contains the Matlab source codes (to use in Robotarium platform) of various rendezvous controllers from the state-of-the-art of consensus control in a multi-agent / multi-robot system. In addition, we propose a consensus controller using wireless netowrk measurements which uses the Received Signal Strength (RSS) measurements and the Direction of Arrival (DOA) of wireless signals estimated using the RSS measurements.
Robotarium is a remotely accessible multi-robot experiment testbed provided by the Georgia Tech. https://www.robotarium.gatech.edu/
- Install the Robotarium simulator available from this repository: https://github.com/robotarium/robotarium-matlab-simulator
- Download the current repository anywhere on your computer using the command "git clone https://github.com/SMARTlab-Purdue/robotarium-rendezvous-RSSDOA.git"
- First navigate to the Robotarium folder where your downloaded the Robotarium source codes. And Run the "init.m" file to initialize the Matlab workspace and include necessary paths.
- Navigate to the current repository (robotarium-rendezvous-RSSDOA) folder
- Add to path (Include) the 'algorithms' and 'includes' directories into your Matlab path.
- Use the rendezvous_experiments_Robotarium_main.m file and choose your desired rendezvous algorithm (12 options currently available) along with experiment parameters and run this main file.
- Choose respective consensus control functions file in the "algorithms" folder to change/modify/update the algorithm.
We have implemented the following consensus control algorithms.
-
coordinates_based_rendezvous: (Baseline) It relies on the full coordinates (relative positions) of neighbor robots. This is the standard rendezvous algorithm. See https://www.robotarium.gatech.edu/examples/rendezvous for more information on this algorithm.
-
coordinates_based_connectivity_preserving_rendezvous: It is similar to the above but uses weights (artificial potential fields)
-
coordinates_based_rendezvous_circumcenter: It relies on the circumcenter of all coordinates (relative positions) of neighbor robots
-
bearing_only_rendezvous_using_all_bearings: It uses bearing measurements of all neighbor robots from each robot
-
bearing_only_rendezvous_using_min_and_max_bearings: It uses only the min and max bearings of neighbors from each robot
-
bearing_only_rendezvous_using_enclosing_circles: It uses bearing measurmeents and enclosing circles algorithm
- weighted_bearing_consensus_using_Range_and_Bearings: It uses both range and bearing measurements from any sensors as control inputs
Other (possible) consensus controllers from the state-of-the-art : using both coordinates and bearings based controllers
-
bearing_only_rendezvous_using_average_bearing: It uses mean of neighbor bearings from each robot
-
coordinates_based_rendezvous_with_mean_velocity: It uses mean of all neighbor directions
-
coordinates_based_rendezvous_with_max_velocity: It uses the coordinate of farthest neighbor
-
coordinates_based_rendezvous_with_min_velocity: It uses the coordinate of the nearest neighbor
- weighted_bearing_consensus_using_RSS_and_DOA: The relative bearings (DOA of wireless signals) of the neighbor robots are used to control the robot's position and direction, whereas the RSS is used to weight each neighbor's impact on the distributed consensus controller.
We have provided the following utility functions to use it in the experiments. They can also be used as a standalone function.
-
GetConnectedGraph: This functions provides a connected graph given the coordinates of the agents and a common sensing range.
-
initialize_robot_positions: This function repositions the randomly positioned robots in the Robotarium simulator to the initial positions supplied as input to the function.
-
minboundcircle: This is a third-party function that provides a smallest enclosing circle given a set of points. Available in Mathworks File Exchange provided by John D'Errico as "A suite of minimal bounding objects" (v1.2). https://www.mathworks.com/matlabcentral/fileexchange/34767-a-suite-of-minimal-bounding-objects?focused=3820668&tab=function
-
minboundsemicircle: This is a third-party function that provide a smallest enclosing semicircle given a set of points. (same reference as the previous function).
If you find this work useful, please cite the below paper.
Parasuraman, R. and Min, B.C., 2019. Consensus control of distributed robots using direction of arrival of wireless signals. In Distributed Autonomous Robotic Systems (pp. 17-34). Springer, Cham.
Paper link: https://link.springer.com/chapter/10.1007/978-3-030-05816-6_2 Preprint link: http://www.smart-laboratory.org/publications/ParasuramanDARS2018.pdf
For any queries, issues, and questions with the code, please contact Ramviyas Parasuraman (ramviyas at uga dot edu).
Ramviyas Parasuraman (ramviyas at uga dot edu): http://cobweb.cs.uga.edu/~ramviyas/
Byung-Cheol Min (minb at purdue dot edu): http://web.ics.purdue.edu/~minb/
SMART Lab - Purdue University: http://www.smart-laboratory.org/