Mavros: 发布转换两个方向不正确

创建于 2019-07-20  ·  5评论  ·  资料来源: mavlink/mavros

您需要以另一种方式发布转换的评论是不正确的。

https://github.com/mavlink/mavros/blob/bdc5c7386f9451ac244b5a85c087ad620fd3a989/mavros/src/lib/uas_data.cpp#L57

只应使用其中之一:

https://github.com/mavlink/mavros/blob/366a9a74847b2e231035b47fa06651527a4556b9/mavros/src/lib/uas_data.cpp#L56 -L58

他们会互相争斗并导致不断的重新养育,以便在任何给定时间最后一个收到的人将获胜。 可能测试的第一个版本由于无意中重新设置父级而导致断开的树,并添加第二个调用将其屏蔽掉。

当我在看这段代码时。 发布静态变换向量以利用闩锁而不是发布一系列单独的变换更干净、更有效。

所有5条评论

我们之前在这里提出过: https :

@TSC21仅供参考

@jkflying @baumanta你们可以尝试测试删除重复发布者是否存在时间戳问题吗?

@tfoote您对问题 #388 的评论是对的。 mavros 中的 tf 循环似乎负责始终在 ros::Time::now() 处获取 tf。

我在避免代码中放置了一个 tf 侦听器,该代码在最后一个点云的时间戳和 ros::Time::now() 处检索转换并打印两个转换。 当无人机移动时,我希望变换会略有不同。 使用 Mavros 0.29.2。 即使时间戳不是,两个转换总是相同的。 使用 Mavros PR #1252 ,变换是不同的。

好的,我怀疑为什么odom插件代码不起作用是由于锁定主题的一个模糊限制 - 您不能从同一进程向锁定主题发布不同的消息。

请参阅https://github.com/ros/ros_comm/issues/146https://answers.ros.org/question/261815/how-can-i-access-all-static-tf2-transforms/。

解决方法是构建所有变换的向量并一次性发布它们(传递给专门的 TF2 函数 http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc856828b69a2 )

此页面是否有帮助?
0 / 5 - 0 等级