12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import rospy
- import tf2_ros
- import geometry_msgs.msg
- from nav_msgs.msg import Odometry
- import tf
- def odometry_callback(msg):
-
- transformStamped = geometry_msgs.msg.TransformStamped()
-
- transformStamped.header.stamp = rospy.Time.now()
- transformStamped.header.frame_id = "odom"
- transformStamped.child_frame_id = "base_link"
-
- transformStamped.transform.translation.x = msg.pose.pose.position.x
- transformStamped.transform.translation.y = msg.pose.pose.position.y
- transformStamped.transform.translation.z = msg.pose.pose.position.z
-
- q = msg.pose.pose.orientation
- transformStamped.transform.rotation.x = q.x
- transformStamped.transform.rotation.y = q.y
- transformStamped.transform.rotation.z = q.z
- transformStamped.transform.rotation.w = q.w
-
- tf_broadcaster.sendTransform(transformStamped)
- rospy.loginfo("Published transform from odom to base_link")
- def listener():
-
- rospy.init_node('odom_to_base_link_tf_broadcaster')
-
- global tf_broadcaster
- tf_broadcaster = tf2_ros.TransformBroadcaster()
-
- rospy.Subscriber('/laser_odom', Odometry, odometry_callback)
-
- rospy.spin()
- if __name__ == '__main__':
- try:
- listener()
- except rospy.ROSInterruptException:
- pass
|