No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version 3.0.1
Last Updated 2026-10-29
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange

Package Summary

Version 3.0.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jsk-ros-pkg/jsk_common.git
VCS Type git
VCS Version master
Last Updated 2026-10-31
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

dynamically set the tf trensformation

Additional Links

Maintainers

  • Ryohei Ueda

Authors

  • Manabu Saito
README
No README found. See repository README.
CHANGELOG

Changelog for package dynamic_tf_publisher

3.0.0 (2026-10-29)

  • Merge pull request #1826 from k-okada/ros2-support Add ROS2 support to jsk_ros1_ros2_compat, dynamic_tf_publisher, jsk_topic_tools, jsk_tools, audio_video_recorder, jsk_data, image_view2, jsk_rosbag_tools

  • [dynamic_tf_publisher] add ROS2 support Single package.xml/CMakeLists.txt branched on $ROS_VERSION, and each of tf_publish.py/tf_set.py/tf_reconfigure_publisher.py rewritten as a single ROS1/ROS2 dual-support file built on the tf2_ros-based ROS1 code from the previous commit, so the tf-handling logic itself does not need to be duplicated between the two versions:

    - Uses jsk_ros1_ros2_compat's rospy_rclpy_compat.py (get_param, log*, create_service, ...) rather than a local copy.

    - CMakeLists.txt: uses rosidl_auto_generate_interfaces() for the ROS2 message/service generation, sharing the install() script list with ROS1's catkin_install_python(). ROS1-original lines inside the if("$ENV{ROS_VERSION}" ...) blocks are left at their original indentation to minimize diff against master.

    - srv/*.srv: Header -> std_msgs/Header (ROS2 rosidl requires explicit package-qualification; equally valid under ROS1).

    - Service callbacks (set_tf/assoc/dissoc/delete/publish_tf) keep their original req/res-style argument names, threading.Lock()-based locking, and try/except structure -- all ROS-version-independent and so left unchanged from the ROS1 original rather than rewritten.

    - tf_reconfigure_publisher.py's ROS2 parameter read is a small helper (_ros2_config()) that reuses the same callback() as ROS1's dynamic_reconfigure path, instead of duplicating its body.

    - Not carried over to the ROS2 code path (ROS1-only, documented in tf_publish.py): the YAML-serialized-parameter restart cache and the wait_for_service-based already-running singleton guard.

    - test/tf_publish_launch_test.py: launch_testing coverage for the ROS2 path (SetDynamicTF followed by a tf2 lookup_transform).

    - AMENT_IGNORE removed so this package builds under ROS2 (jsk_coordi nation_system currently contains only this one package). Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • msg/srv: qualify Header field with std_msgs/ package ROS2's rosidl_adapter requires message-type fields to be fully package-qualified, rejecting the bare [Header]{.title-ref} spelling ROS1's message generator has allowed since Header moved from roslib into std_msgs (REP 100: https://github.com/ros-infrastructure/rep/blob/master/rep-0100.rst). Affects dynamic_tf_publisher's AssocTF/DeleteTF/DissocTF.srv and image_view2's MouseEvent.msg/PointArrayStamped.msg. Safe for ROS1: genmsg normalizes a bare [Header]{.title-ref} field to [std_msgs/Header]{.title-ref} before computing a message/service's MD5 sum (genmsg/msgs.py's resolve_type()), so this text-level change does not change the wire-level type or the computed MD5. Verified directly with genmsg.gentools.compute_md5() on all five files, before and after this change: identical MD5 both ways (also holds regardless of the field's original double-space vs single-space separator). Kept as its own commit, ahead of ROS2 support proper, since it needs no ROS2-specific code to be correct or complete.

  • [dynamic_tf_publisher] migrate tf_publish.py/tf_reconfigure_publisher.py from tf to tf2_ros tf.TransformListener/tf.TransformBroadcaster are tf1 APIs; tf2_ros provides the same functionality and is available under ROS1 too, so this is a standalone ROS1-only change, independent of ROS2 support:

    - tf_publish.py: tf.TransformListener + waitForTransform/lookupTransform -> tf2_ros.Buffer + TransformListener, using a single lookup_transform call (its timeout argument already blocks until the transform is available, same as the old wait+lookup pair). The /tf publisher switches from tf.msg.tfMessage to tf2_msgs.msg.TFMessage, which is wire-compatible (identical fields/md5sum).

    - tf_reconfigure_publisher.py: tf.TransformBroadcaster -> tf2_ros.Trans formBroadcaster, which only accepts a TransformStamped (no more positional translation/rotation/time/child/parent sendTransform).

    - tf_set.py is unaffected: it only uses tf.transformations (pure quaternion math, not part of the tf1/tf2 pub-sub API), so it keeps its [tf]{.title-ref} dependency.

    - package.xml: add tf2_ros/tf2_msgs as build/exec_depend alongside the existing tf dependency. Co-Authored-By: Claude Sonnet 5 <<noreply@anthropic.com>>

  • Contributors: Kei Okada

2.2.16 (2025-01-06)

2.2.15 (2024-12-13)

File truncated at 100 lines see the full file

Launch files

Messages

No message files found.

Plugins

No plugins found.

Recent questions tagged dynamic_tf_publisher at Robotics Stack Exchange