ROS_TF报错汇总

来源:https://zhengyu.tech

TF_REPEATED_DATA ignoring data with redundant timestamp for frame

编写时出错

在进行tf广播时出现以上错误,出现以上错误,汇总各种可能的改进建议:

# 首先建议使用tf2,替代tf1
import tf2_ros
m=tf2_ros.TransformBroadcaster()

# 时间戳使用now(),并且注意在发布时前实时更新
t.header.stamp = rospy.Time.now()
m.sendTransform(t)

运行其他时出错

首先可视化tf节点信息,第一个用不了用第二个,tf2_tools可能不是预装好的:

rosrun tf view_frames
rosrun tf2_tools view_frames.py

等一会,它会先订阅5秒tf广播来打印当前的tf节点图

evince frames.pdf

仔细看看那个节点没连上,自己添加上。

  • 自己在launch文件一面加:
<node pkg="tf" type="static_transform_publisher" name="A_to_B" args="0.0 0.0 0.0 0 0 0.0 /A /B 100"/>
  • 直接在终端发布
rosrun tf static_transform_publisher 0.0 0.0 0.0 0 0 0.0 /A /B 100

TF_DENORMALIZED_QUATERNION: because of an invalid quaternion in the transform

原因:传入的四元数没有归一化。
解决方案:导入pyquaternion,进行归一化处理。注意在ROS中是(x,y,z,w),而在pyquaternion中是(w,x,y,z)

from pyquaternion import Quaternion
     rot_4 = Quaternion(rot_3[3],rot_3[0],rot_3[1],rot_3[2])
     rot_4 = rot_4.normalised

你可能感兴趣的:(ROS学习,ROS,SLAM,算法)