Main Content

Enforce Barrier Certificate Constraints for Collision-Free Multi-Robot System

This example shows how to enforce barrier certificate constraints for collision-free multi-robot system using the Barrier Certificate Enforcement block.

Overview

In this example, the goal for the three robots is to reach a target position without colliding with each other [1]. For an example that has two robots, see Enforce Barrier Certificate Constraints for Collision-Free Robots.

The robot dynamics are modeled by double integrators in the x-y plane. Each robot has four states (x-position, y-position, x-velocity, and y-velocity) and two control variables (x-acceleration and y-acceleration). The velocities are constrained to be [-2, 2] m/s and the accelerations are constrained to be [-10, 10] m/s2. The PID controllers are designed for the robots to reach the target position. Before you apply the constraints, the robots collide when they move closer to each other.

Open the Simulink® model.

mdl = 'barrierCertificate3Robots';
open_system(mdl);

Barrier Certificate Constraints

For collision avoidance, the constraint is that the distance between any two robots (i, j, and k) stay greater than a given threshold if the two robots are moving closer to each other [1]. The barrier certificate for robot i and robot j is thus given by

hij(x)=2αsum(pij-Ds)+pijTvijpij.

Here, the variables are:

  • The maximum braking power from both robots — αsum=20

  • The minimum distance between the robots — Ds=0.7

  • The position error vector — pij=pi-pj

  • The velocity error vector — vij=vi-vj

Similarly, the barrier certificate for robot i and robot k is given by hik and for robot j and robot k is given by hjk. The barrier certificates for the multi-robot system are given by h(x)=[hij(x),hik(x),hjk(x)]T.

The partial derivative of h(x) over states x=[pi,pj,vi,vj,pk,vk]T is denoted by q(x).

This example uses Symbolic Math Toolbox™ software to derive the barrier certificates and their gradient functions.

The getBarrierCertificateAndJacobian script provided with this example generates the following files:

  • barrierFcn3Robots.m — Barrier certificates function

  • barrierGradFcn3Robots.m — Jacobian of barrier certificates

Run the script.

getBarrierCertificateAndJacobian;
ans = function_handle with value:
    @barrierFcn3Robots

ans = function_handle with value:
    @barrierGradFcn3Robots

For details on either function, open the corresponding file.

The Barrier Certificate Enforcement block accepts the dynamics in the form x˙=f(x)+g(x)u. In this example,

f(x)=[0I00]x and g(x)=[0I].

The identity matrix I is a 6-by-6 matrix.

Simulate Collision-Free Controller with Barrier Certificate Constraint

To view the constraint implementation, open the Constraint subsystem.

Run the model and view the simulation results. The three robots avoid each other when they are too close.

mdl = 'barrierCertificate3Robots';
sim(mdl);

{"String":"Figure Three robots contains an axes object. The axes object contains 372 objects of type line, rectangle.","Tex":[],"LaTex":[]}

Open the scope in the Three robots > visualization > distance subsystem. The distance between any two robots is above the threshold 0.7 m.

EnforceBarrierCertificateForCollisionFreeMultiRobotExample_03.png

The Barrier Certificate Enforcement block successfully constrains the control actions such that the three robots reach their target positions in a collision-free manner.

bdclose(mdl)
f = findobj('Name','Three robots');
close(f)

References

[1] Wang, Li, Aaron D. Ames, and Magnus Egerstedt. “Safety Barrier Certificates for Collisions-Free Multirobot Systems.” IEEE Transactions on Robotics 33, no. 3 (June 2017): 661–74. https://doi.org/10.1109/TRO.2017.2659727.

See Also

Related Topics