Uuv_simulator: 多机器人TF树坏了

创建于 2020-05-24  ·  10评论  ·  资料来源: uuvsimulator/uuv_simulator

嗨,我很清楚 UUV 模拟器能够模拟多个机器人(它的强项之一)。 但是,我一直无法让多机器人系统的 TF 树与单个公共父 TF 框架world保持连接。

运行roslaunch uuv_gazebo_worlds ocean_waves.launch ,仅发布worldworld_ned

image

接下来,如果我上传我的自定义auv4 URDF,我将连接 TF 树从worldauv4/base_link

image

到目前为止一切都很好。 同样,如果我重新启动模拟器并再次运行roslaunch uuv_gazebo_worlds ocean_waves.launch ,但是这次上传我的auv3车辆,我将连接 TF 树从worldauv3/base_link

image

到目前为止一切都很好。 但是,如果我尝试运行roslaunch uuv_gazebo_worlds ocean_waves.launch然后通过单独的upload.launch文件同时上传两个urdfs(模板遵循upload_rexrov.launch),我会得到一个断开连接的TF树,第二辆车启动通常断开连接来自 TF 树。 在这种情况下,首先上传 auv3,然后是 auv4,仅导致world连接到auv3/base_link但与auv4/base_link断开连接。

image

如果我颠倒上传顺序(先是 auv4,然后是 auv3),则会发生类似的事情,然后world连接到auv4/base_link而不是auv3/base_link

我可能做错了什么,因为 #396 涵盖了同样的问题,但不知何故原始海报 (OP) 设法自己解决了这个问题。 有人可以指导如何解决此问题以允许完全连接的 TF 树吗? 我目前了解到message_to_tf.launch文件有助于将 nav_msgs::Odometry 转换为 ROS TF 转换。 任何帮助表示赞赏。 谢谢!

question problem

所有10条评论

@HashirZahir我还没有时间,但我会尝试重现您的错误并找到解决方案

@HashirZahir我也对同样的问题感兴趣。 在运行 _roslaunch uuv_gazebo_worlds Ocean_waves.launch_ 后,我尝试以相同的方式同时发射 3 辆 Eca_a9 车辆。 我最多可以让两辆 Eca_a9 车辆同时工作 -- 你在这个问题上有任何进一步的进展吗?

您能否分享复制步骤以使 2 辆 Eca_a9 车辆一起运行(以及它们各自的 TF 树?)在我的情况下,我能够在模拟中生成两辆车辆,但 TF 树损坏/断开连接,使其更难执行多 auv 计算/算法

@pxalcantara好运吗?

抱歉@HashirZahir ,但还没有,我一直很忙,但我会在本周尝试检查。

您能否分享复制步骤以使 2 辆 Eca_a9 车辆一起运行(以及它们各自的 TF 树?)在我的情况下,我能够在模拟中生成两辆车辆,但 TF 树损坏/断开连接,使其更难执行多 auv 计算/算法

抱歉回复慢。 我有一个启动文件,用于使用 upload.launch 在不同的命名空间下启动 3 个(或更多)Eca UUV。 我使用另一个启动文件为 3 辆车中的每辆车启动几何跟踪控制器。 不知道为什么,这通常适用于 2/3 UUV,第 3 个无响应且损坏(如您所描述的)......所以我可以控制、发送航点、回显 2 个 UUV 的所有主题。 请注意,这并不总是一致的,有时只有一个 UUV 会正确生成。 不幸的是,我对这个问题没有更多的了解。

有没有人设法对这个问题有所了解? 这个模拟器的多机器人功能非常棒,但我觉得是一些简单的 TF 树脚本导致了 TF 树损坏,虽然我还没有找到问题的根源。

@HashirZahir
我遇到了与@Joel-Lindsay 相同的问题,但与 eca_a9s 的链接已断开。 我通过编辑文件 /eca_a9/eca_a9_description/robots/eca_a9_default.urdf.xacro 解决了这个问题。

惯性参考框架=“$(参数惯性参考框架)”
改为:
惯性参考框架=“世界”

这修复了我也断开连接的 tf 树。

嗨, @ErinWetter你介意分享一张连接的 TF 树的图片吗?

这是具有 4 个工作 eca_a9 的 tf 树的顶部:

Four_Eca_short

只有两辆车,我们可以看到基本链接:

two_eca_short

我还没有弄清楚为什么广播者之间的帧链接:ground_truth_to_uuv# 和 /uu#/robot_state_publisher 在硬编码机器人状态发布者以匹配之前没有连接,但我不熟悉 xacro/urdf 机器人模型创建过程。

我在一辆汽车上运行了一些测试,比较了在 Eca 和 RexRov 上启动广播节点的顺序(没有损坏的 tf 树问题,我一直在用于多车模拟)。 对于单个 Eca_a9,如果我在终端中而不是在“upload_eca_a9.launch”文件中启动 /ground_truth_to_uuv# 节点,tf 树将在 /base_link 处被切断。 对连接所有发射条件的 RexRov /base_link 做同样的事情。

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

相关问题

bst picture bst  ·  33评论

dbcesar picture dbcesar  ·  5评论

ccs-ros picture ccs-ros  ·  10评论

Timple picture Timple  ·  7评论

hughhugh picture hughhugh  ·  5评论