ROS stack access

The RosStack classes provides APIs similar to the rosstack command-line tool distributed with ROS. Like rosstack, it provides information about stack dependency information, filesystem locations, and manifest access. The Python API is more efficient than shelling out to rosstack as it provides caching and other optimizations for repeated querying.

rospkg.STACK_FILE

Name of stack manifest file, i.e. ‘stack.xml’.

class rospkg.RosStack([ros_paths=None])[source]

Query information about ROS stacks on the local filesystem. This includes information about dependencies, retrieving stack Manifest instances, and determining the contents of stacks.

RosStack can be initialized with the default environment, or its environment configuration can be overridden with alternate ROS path settings.

NOTE: for performance reasons, RosStack caches information about stacks.

NOTE 2: RosStack is not thread-safe.

Parameters:ros_paths – Ordered list of paths to search for resources. If None (default), use environment ROS path.
get_ros_paths() → [str]

Get ROS paths of this instance

ros_paths

Get ROS paths of this instance

get_manifest(name) → Manifest

Get the Manifest of the specified package.

Parameters:name – package name, str
Raises:InvalidManifest
list() → [str]

List stacks.

Returns:complete list of package names in ROS environment
get_path(name) → str
Parameters:name – stack name, str
Returns:filesystem path of stack
Raises:ResourceNotFound
get_depends(name[, implicit=True]) → [str]

Get explicit and implicit dependencies of a stack.

Parameters:
  • name – stack name, str
  • implicit – include implicit (recursive) dependencies, bool
Returns:

list of names of dependencies.

Raises:

InvalidManifest

get_depends_on(name[, implicit=True]) → [str]

Get list of stacks that depend on a stack. If implicit is True, this includes implicit (recursive) dependency relationships.

Parameters:
  • name – stack name, str
  • implicit – include implicit (recursive) dependencies, bool
Returns:

list of names of dependencies, [str]

Raises:

InvalidManifest

packages_of(stack) → [str][source]
Returns:name of packages that are part of stack
Raises:ResourceNotFound if stack cannot be located
get_stack_version(stack) → str[source]
Parameters:env – override environment variable dictionary
Returns:version number of stack, or None if stack is unversioned.
rospkg.expand_to_packages(names, rospack, rosstack) -> ([str], [str])[source]

Expand names into a list of packages. Names can either be of packages or stacks.

Parameters:
  • names – list of names of stacks or packages, [str]
  • rospackRosPack instance
  • rosstackRosStack instance
Returns:

([packages], [not_found]). expand_packages() returns two lists. The first is of packages names. The second is a list of names for which no matching stack or package was found. Lists may have duplicates.

rospkg.get_stack_version_by_dir(stack_dir) → str[source]

Get stack version where stack_dir points to root directory of stack.

Parameters:env – override environment variable dictionary
Returns:version number of stack, or None if stack is unversioned.