Main Content

Enforce Barrier Certificate Constraints for Collision-Free Robots

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


In this example, the goal for the robots is to reach a target position without colliding with each other [1]. 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 [-2, 2] m/s and the accelerations are constrained to [-10, 10] m/s^2. The PID controllers are designed for the robots to reach the target position. Collision avoidance is achieved by enforcing barrier certificate constraints.

Open the Simulink® model.

mdl = 'twoRobotsCBF';

Controller Design

Each robot has its own controller that brings it to the target position. In this example, the controller is implemented as a PID-type controller.

Run the simulation and view the results.

constrained = 0;

Figure Two robots contains an axes object. The axes object contains 208 objects of type line, rectangle.

In the figure, robot 1 (green) reaches the target position [4.9, 4.8] m and robot 2 reaches the target position [0, 0] m. The controllers successfully bring the controlled robots to their target positions.

Open the distance scope in the Two robots > visualization subsystem. The two robots collide with each other at around 1.3 seconds.

Barrier Certificate Constraints

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


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

The partial derivative of h(x) over states x=[pi,pj,vi,vj]T is denoted by q(x), and the analytical results are given in the barrierGradFcn2Robots script.

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

f(x)=[00I0000I00000000]x and g(x)=[0000I00I],

and each element is a 2-by-2 matrix.

Simulate Collision-Free Controller with Barrier Certificate Constraint

To view the constraint implementation, open the Constraint > Constrained subsystem.

constrained = 1;

Close the figure before running the model.

f = findobj('Name','Two robots');

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


Figure Two robots contains an axes object. The axes object contains 208 objects of type line, rectangle.

The distance between the two robots stays above the threshold Ds=0.7.

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

f = findobj('Name','Two robots');


[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.

See Also

Related Topics