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

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro jazzy showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro kilted showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro github showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro galactic showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro iron showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro melodic showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).
No version for distro noetic showing rolling. Known supported distros are highlighted in the buttons above.
Repo symbol

hatchbed_localization repository

hatchbed_localization

ROS Distro
rolling

Repository Summary

Description
Checkout URI https://github.com/hatchbed/hatchbed_localization.git
VCS Type git
VCS Version main
Last Updated 2026-04-14
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
hatchbed_localization 0.1.0

README

hatchbed_localization

ROS 2 helper nodes for TF tree management and localization support.

Nodes

imu_to_twist

Converts a sensor_msgs/Imu message to geometry_msgs/TwistWithCovarianceStamped for use as a velocity input to state estimators such as robot_localization.

In direct mode the angular velocity and its diagonal covariance are copied from the IMU message. Linear velocity is always zero (IMUs do not provide it).

In differential mode the angular velocity is derived by finite-differencing consecutive orientation quaternions. The orientation field must be populated (orientation_covariance[0] >= 0).

Subscriptions

Topic Type Description
imu sensor_msgs/Imu Input IMU messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Angular velocity derived from IMU

Parameters

Parameter Type Default Description
differential bool false Derive angular velocity from orientation differential rather than reading angular_velocity directly

odom_to_twist

Extracts the twist from a nav_msgs/Odometry message and republishes it as geometry_msgs/TwistWithCovarianceStamped. Useful when a state estimator requires a standalone twist topic rather than a full odometry message.

In direct mode the twist field is copied verbatim. In differential mode the body-frame twist is derived by finite-differencing consecutive poses, with covariance propagated as C_twist = 2 * C_pose / dt^2.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
twist geometry_msgs/TwistWithCovarianceStamped Twist extracted from odometry

Parameters

Parameter Type Default Description
frame_id string "" Override the output header frame_id; uses the odometry frame if empty
differential bool false Derive twist by differencing consecutive poses rather than reading the twist field directly

odom_tf_broadcast

Derives and broadcasts a parent_frame -> child_frame TF transform from an odometry message. Intended for cases where a localization source publishes an odometry topic but its TF output is suppressed or absent, or where the desired TF relationship differs from the one directly expressed in the odometry frames.

child_frame must match either header.frame_id or child_frame_id of the incoming odometry message. The other frame is looked up in the main TF tree to compute the transform. The parent_frame == known_frame identity case is handled without a TF lookup, so parent_frame may appear directly in the odometry message.

The only hard requirement is that child_frame must not already have a parent in the main TF tree.

Subscriptions

Topic Type Description
odom nav_msgs/Odometry Input odometry messages (remap to the desired topic)

Publications

Topic Type Description
/tf tf2_msgs/TFMessage parent_frame -> child_frame transform

Parameters

| Parameter | Type | Default | Description | |—|—|—|—|

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.

Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that [license](https://opensource.org/licenses/BSD-3-Clause).