Search documentation of bb

# BB.Robot.Topology (bb v0.8.0)

View Source

Pre-computed topology metadata for efficient traversal and kinematic operations.

This struct contains ordering information that allows:

- Forward kinematics to process joints in the correct order
- Path lookup from root to any node
- Depth information for tree operations

# Summary

## Types

t()

## Functions

depth_of(topology, name)

Get the depth of a node in the tree.

leaf_links(topology, robot)

Get all leaf links (links with no child joints).

max_depth(topology)

Get the maximum depth of the kinematic tree.

path_to(topology, name)

Get the path from root to a node.

# Types

# t()

    @type t() :: %BB.Robot.Topology{
      depth: %{required(atom()) => non_neg_integer()},
      joint_order: [atom()],
      link_order: [atom()],
      paths: %{required(atom()) => [atom()]}
    }

# Functions

# depth_of(topology, name)

    @spec depth_of(t(), atom()) :: non_neg_integer() | nil

Get the depth of a node in the tree.

The root link has depth 0. Each joint/link pair adds 1 to the depth.

# leaf_links(topology, robot)

    @spec leaf_links(t(), BB.Robot.t()) :: [atom()]

Get all leaf links (links with no child joints).

# max_depth(topology)

    @spec max_depth(t()) :: non_neg_integer()

Get the maximum depth of the kinematic tree.

# path_to(topology, name)

    @spec path_to(t(), atom()) :: [atom()] | nil

Get the path from root to a node.

Returns a list of link/joint names from the root to the given node.