> ## Documentation Index
> Fetch the complete documentation index at: https://docs.innate.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Actions

export const RosActionsInterface = () => {
  const actionSections = [{
    id: "navigation-actions",
    title: "Navigation Actions",
    rows: [{
      action: "/navigate_to_pose",
      type: "nav2_msgs/NavigateToPose",
      desc: "Navigate to a target pose in map frame with feedback and result."
    }]
  }, {
    id: "manipulation-actions",
    title: "Manipulation Actions",
    rows: [{
      action: "/behavior/execute",
      type: "brain_messages/ExecuteBehavior",
      desc: "Execute a learned manipulation behavior with runtime feedback."
    }, {
      action: "/execute_skill",
      type: "brain_messages/ExecuteSkill",
      desc: "Execute a skill by name with JSON inputs."
    }]
  }];
  return <AccordionGroup>
      {actionSections.map((section, idx) => <Accordion key={section.id} title={section.title} defaultOpen={idx === 0}>
          <span className="ros-topic-badge">{section.rows.length} actions</span>
          <div className="ros-topic-table-wrap" style={{
    marginTop: "10px"
  }}>
            <table className="ros-topic-table">
              <thead>
                <tr>
                  <th>Action Name</th>
                  <th>Type</th>
                  <th>Description</th>
                </tr>
              </thead>
              <tbody>
                {section.rows.map(row => <tr key={row.action}>
                    <td>
                      <span className="ros-topic-code ros-topic-path">{row.action}</span>
                    </td>
                    <td>
                      <span className="ros-topic-code ros-topic-msg">{row.type}</span>
                    </td>
                    <td>{row.desc}</td>
                  </tr>)}
              </tbody>
            </table>
          </div>
        </Accordion>)}
    </AccordionGroup>;
};

Use ROS2 actions for long-running tasks with feedback and cancellation.

## Action Interface

<RosActionsInterface />

## When to use an action

Actions are useful when execution takes time and you need progress updates, cancellation, and a final result (for example navigation goals or manipulation routines). For one-shot RPC, use [Services](/software/ros2/services); for continuous streams, use [Topics](/software/ros2/topics).

## Quick commands

```bash theme={null}
ros2 action list
ros2 action list -t
ros2 action info <action_name>
```

## Send goal examples

### Navigate to a pose

```bash theme={null}
ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose \
  "{pose: {header: {frame_id: map}, pose: {position: {x: 1.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}}" \
  --feedback
```

### Execute a learned manipulation behavior

```bash theme={null}
ros2 action send_goal /behavior/execute brain_messages/action/ExecuteBehavior \
  "{skill_dir: /home/jetson1/innate-os/workspace/custom_skills/pick_socks, behavior_config: \"{}\"}" \
  --feedback
```

### Execute a skill

```bash theme={null}
ros2 action send_goal /execute_skill brain_messages/action/ExecuteSkill \
  "{skill_type: wave, inputs: \"{}\"}" \
  --feedback
```

<CardGroup cols={2}>
  <Card title="Navigation Stack" href="/software/ros2-core#navigation-stack">
    Planner/controller details and navigation runtime behavior.
  </Card>

  <Card title="Manipulation Stack" href="/software/ros2-core#manipulation-stack">
    Behavior execution and manipulation runtime details.
  </Card>
</CardGroup>
