MoveIt Studio Agent API

The MoveIt Studio Agent consists of the core processes & ROS nodes that command the robot, including the Objective Server.

See also Key Terminology.

ROS Action Interface

The MoveIt Studio Agent advertises a ROS action interface to load, run, and halt Objectives:

Name

Message Type

/do_objective

moveit_studio_agent_msgs/action/DoObjectiveSequence

Agent Implementation

This section briefly summarizes how the Agent’s Objective Server functions.

Initializing Objectives

The Objective Server Node contains an instance of BT::Tree. When an Objective is executed, the tree is reset and populated with new nodes as determined by the contents of the Objective XML file associated with the Objective named in the /do_objective goal request message.

The Objective Server Node contains an instance of BT::BehaviorTreeFactory, which is responsible for creating the tree when each Objective is executed. When the Objective Server Node is initialized, a list of plugin libraries containing Behaviors is retrieved from the Objective Server Node’s ROS parameters and used to register available Behaviors with the factory so that trees containing user-defined or 3rd-party Behaviors can be loaded and run.

Running Objectives

While the objective is running, the Objective Server ticks its root node at a rate of 100Hz.

Cleaning Up Objectives

When a new Objective is executed, the previous Objective’s Behavior tree is destroyed, and it is replaced with a new tree for the new Objective. All instances of Behaviors that were created as part of that tree and all loggers associated with that tree are destroyed as well.