# ROS 2 tf2 turtle-pose transform broadcaster node

Official ROS geometry tutorial node that subscribes to a turtle pose and broadcasts a timestamped world-to-turtle transform, including a derived Euler-to-quaternion helper. It is an installed ROS 2 console entrypoint; the selected file has Apache-2.0 and BSD-2-Clause component terms.

ID: `ros2-tf2-broadcaster`

Record version: `source-87928f4e427dc4166e936e262d4f519c915faa1ff2d59998540bc0d4c96ac61f`

Hub commit: `1c4c1e1533ff364fd4a35cddc8750b9306b0a5ba`

## Access

Read the pinned node, both component license terms, package declarations and setup registration before use. This source reference does not install or execute code.

Optional inert file retrieval: `python /PATH_TO_SKILL/scripts/rsh.py fetch-source ros2-tf2-broadcaster --expected-source-revision 8e677416092ac97606a4a23256c815ba2fe762d4 --expected-source-sha256 87928f4e427dc4166e936e262d4f519c915faa1ff2d59998540bc0d4c96ac61f --project ./experiment --json`. This verifies one file, preserves provenance and never installs or runs it. See [source-file retrieval](https://hub.superfastrobotics.com/source-files.md).

Hub preparation adapter: **false**. Runtime verification: **not_run**.

Upstream setup: https://github.com/ros/geometry_tutorials/blob/8e677416092ac97606a4a23256c815ba2fe762d4/turtle_tf2_py/setup.py

## Source and license

- Repository: https://github.com/ros/geometry_tutorials
- Pinned source: https://github.com/ros/geometry_tutorials/blob/8e677416092ac97606a4a23256c815ba2fe762d4/turtle_tf2_py/turtle_tf2_py/turtle_tf2_broadcaster.py
- Revision: `8e677416092ac97606a4a23256c815ba2fe762d4`
- Path: `turtle_tf2_py/turtle_tf2_py/turtle_tf2_broadcaster.py`
- Source SHA256: `87928f4e427dc4166e936e262d4f519c915faa1ff2d59998540bc0d4c96ac61f`
- Source bytes: 3511
- Original authors: Open Source Robotics Foundation, Inc., Matthew Brett, Christoph Gohlke
- License: [Apache-2.0 AND BSD-2-Clause](https://github.com/ros/geometry_tutorials/blob/8e677416092ac97606a4a23256c815ba2fe762d4/LICENSE)
- License scope: Selected file has an Apache-2.0 header, copyright 2021 Open Source Robotics Foundation, Inc., plus a quaternion helper derived from transforms3d under BSD-2-Clause, copyright 2009-2019 Matthew Brett and Christoph Gohlke. Both notice sets apply to their components; retain attribution, terms, disclaimers and applicable notices when redistributing. Pinned BSD terms: https://github.com/matthew-brett/transforms3d/blob/f185e866ecccb66c545559bc9f2e19cb5025e0ab/LICENSE . This is not a choice between licenses or blanket package/dependency clearance.

## Artifact

```json
{
  "kind": "code",
  "format": "python"
}
```

## Requirements

```json
{
  "python": null,
  "packages": [
    "Compatible ROS 2 rclpy environment with the context-manager init API used by this source",
    "tf2_ros",
    "geometry_msgs",
    "turtlesim_msgs",
    "numpy",
    "Installed turtle_tf2_py package exposing the reviewed console entrypoint"
  ],
  "hardware": [],
  "system": [
    "Configured ROS graph publishing the intended absolute /<turtlename>/pose topic",
    "Reviewed turtlename parameter, world/child frame naming and node clock"
  ],
  "notes": "The package is labeled version 0.7.0 at a Rolling-branch source pin; neither label establishes a tested ROS distribution, Python version or operating system. The turtlename parameter defaults to turtle. Pose callbacks subscribe to /<turtlename>/pose, stamp transforms with current node time, set parent frame world and child frame turtlename, copy x/y with z=0, convert yaw to quaternion and call sendTransform. Set intended parameters and provide matching pose publishers; this node alone does not create a complete following demo. The exact source imports turtlesim_msgs, whose availability must be resolved in the chosen environment. The copied helper's pinned transforms3d terms were reviewed, but mathematical correctness, clock/frame behavior, package installation and ROS graph compatibility were not executed or tested."
}
```

## Invocation

```json
{
  "entrypoint": "ros2 run turtle_tf2_py turtle_tf2_broadcaster",
  "notes": "Installed ROS 2 console command backed by the pinned setup.py registration turtle_tf2_py.turtle_tf2_broadcaster:main. The source defines main without a __main__ guard; direct python-file execution is not the declared node invocation. Starting the console entrypoint initializes rclpy and broadcasts transforms from incoming pose messages. The Hub supplies inert source metadata with no preparation/execution adapter and ran no ROS node, package installer or simulator. A single fetched Python file is insufficient."
}
```

## Compatibility

```json
[]
```

Missing environment fields remain unknown. Source discovery labels do not establish robot compatibility.

## Evidence

Level: **source_reviewed**. Runtime verification: **not_run**.

Complete ROS node read as inert text and Python AST parsed without import or execution. Source, package, setup and Apache license pins matched the complete immutable tree. A separate three-GET review checked the exact linked transforms3d tree, BSD-2-Clause license and Euler source/helper attribution. Component source terms and registered console entrypoint were reviewed; no runtime or physical-controller compatibility is claimed.

Source review and contributor reports do not establish task completion. Preserve upstream attribution and licenses.
