Social Navigation Layers

There are currently two social navigation layers. However, they both share functionality in that they both subscribe to where people are and alter the costmaps with a Gaussian distribution around those people. Both classes derive from the general SocialLayer class.

They can be used in costmap configurations with the following types:

  • social_navigation_layers::ProxemicLayer

  • social_navigation_layers::PassingLayer


The interface for both layers is the same.

Subscribed Topics

/people (people_msgs/People)
  • People to navigate around


enabled (bool, default: True)
  • Whether to apply this plugin or not
cutoff (double, default: 10.0)
  • Smallest value to publish on costmap adjustments
amplitude (double, default: 77.0)
  • Amplitude of adjustments at peak
covariance (double, default: 0.25)
  • Covariance of adjustments
factor (double, default: 5.0)
  • Factor with which to scale the velocity
keep_time (double, default: 0.75)
  • Pause before clearing leg list

How the Costmap Changes

  • person.png

Proxemic Layer

The proxemic layer adds gaussian costs all around the detected person, with the parameters specified above. If the person is stationary, the gaussian is perfectly round. However, if the person is moving, then the costs will be increased in the direction of their motion. How far in front of the person the costs are increased is proportional to the factor parameter.

Stationary Person

  • prox.png

Moving Person

  • proxscale.png

Passing Layer

This layer is intended to cause the robot to always pass on the left side of a person and will hence only increase the cost on one side of the person.

  • passing.png

Wiki: social_navigation_layers (last edited 2014-11-10 03:36:34 by DavidLu)