Skip to content

Predicates

Yoan Sallami edited this page Apr 28, 2018 · 10 revisions

The situation assessment component represent the symbolic relations among objects and agents with stamped predicates that compose the timeline.

Here is some examples : "isMoving(robot)" or "isSpeakingTo(robot,human-42)"

The predicates list

  • isPerceiving(X,Y) when X perceive Y (given by perception, when the robot perceive a human, a predicate is generated)
  • isVisibleBy(X,Y) when X is visible from Y, X can be an object or an agent and Y an agent
  • isMoving(X) when X is moving
  • isClose(X,Y) when X and Y distance < 1.0m
  • isNear(X,Y) when X and Y distance < 2.0m
  • isAbove(X,Y) when X bounding-box is above Y bounding-box
  • isIn(X,Y) when X bounding-box is above Y bounding-box
  • isOnTop(X,Y) when X bounding-box is on top of Y bounding-box
  • isSpeakingTo(X,Y) when X speak to Y (X and Y are agents)
  • isLookingAt(X,Y) when X is looking at Y (X and Y are agents at the moment)
  • isPointingAt(X,Y)
  • isSpeaking(X)
  • isNavigating(X)
  • isAproaching(X,Y)
  • isWaitingFor(X,Y)

How to subscribe to the situation assessment

Two topics are used to broadcast the symbolic data :

  • <world>/current_facts for the facts that are still active in the given world
  • <world>/all_facts for all the facts of the given world

And two other topics are used to broadcast the geometric data :

  • <world>/objects for the objects in the given world
  • <world>/agents for the agents in the given world

How to start and end facts from an external component with ros services

The situation assessment component generate a set of predicates, however externals component can add new predicates to the Underworlds server by using the ROS services StartPredicate and EndPredicate. The predicates generated with ROS will then be broadcast through the topics current_predicates and all_predicates

Clone this wiki locally