调试工具ROSWTF

调试工具ROSWTF

1.ROSWTF命令行工具

ROSWTF将检查您的ROS设置,例如环境变量,并查找配置问题。如果您在线有ROS系统,它将查看并检查任何潜在的问题。

1.1 检查目标

除了一般检查外,ROSWTF还有两种用法。

1.1.1 检查软件包或堆栈

roswtf

这将检查当前的软件包或堆栈是否有问题。

重要的是:ROSWTF根据您从运行的目录执行这些检查。例如,如果您在导航堆栈中运行它,它将根据导航堆栈及其依赖项中的文件进行文件系统检查。

1.1.2 检查启动文件

roswtf yourfile.launch

在这种情况下,它将检查给定的启动文件是否有任何潜在问题。

2.Roswtf寻找什么?

ROSWTF寻找很多东西,并且清单总是在增长。它要寻找的是两类:文件系统问题和在线/图形问题。
对于文件系统问题,ROSWTF查看您的环境变量,软件包配置,堆栈配置等。它还可以接收一个Roslaunch文件,并尝试在其中找到任何潜在的配置问题,例如尚未正确构建的软件包。
对于在线问题,roswtf 会检查您当前图形的状态并尝试查找任何潜在问题。这些问题可能是节点无响应、节点之间缺少连接或 roslaunch 的潜在机器配置问题。

3.警告与错误

roswtf 根据其执行的检查生成包含警告和错误的报告。一般来说,警告看起来很奇怪,但可能还不错。错误是已知问题,如果您遇到问题,您可能应该解决这些问题。

4.示例

4.1 roscore没有运行的正常情况

在终端输入:roswtf,显示如下

Loaded plugin tf.tfwtf
No package or stack in the current directory
================================================================================
Static checks summary:

No errors or warnings
================================================================================

ROS Master does not appear to be running.
Online graph checks will not be run.
ROS_MASTER_URI is [http://localhost:11311]

在这种情况下,这是可以预期的,因为没有其他东西在运行,因此我们可以忽略它。

4.1 roscore运行的正常情况

在终端输入roscore,然后再在另外一个终端输入roswtf,显示如下

Loaded plugin tf.tfwtf
No package or stack in the current directory
================================================================================
Static checks summary:

No errors or warnings
================================================================================
Beginning tests of your ROS graph. These may take a while...
analyzing graph...
... done analyzing graph
running graph rules...
... done running graph rules
running tf checks, this will take a second...
... tf checks complete

Online checks summary:

Found 2 warning(s).
Warnings are things that may be just fine, but are sometimes at fault

WARNING The following node subscriptions are unconnected:
 * /rosout:
   * /rosout

WARNING No tf messages

roswtf向您警告rosout节点未订阅和没有tf消息。在这种情况下,这是可以预期的,因为没有其他东西在运行,因此我们可以忽略它。

4.3 在rviz查看tf坐标,看到base_link和base_footprint之间跳来跳去

运用roswtf查看问题,显示如下:

Loaded plugin tf.tfwtf
No package or stack in the current directory
================================================================================
Static checks summary:

No errors or warnings
================================================================================
Beginning tests of your ROS graph. These may take a while...
analyzing graph...
... done analyzing graph
running graph rules...
... done running graph rules
running tf checks, this will take a second...
... tf checks complete

Online checks summary:

Found 2 warning(s).
Warnings are things that may be just fine, but are sometimes at fault

WARNING The following node subscriptions are unconnected:
 * /gazebo:
   * /gazebo/set_link_state
   * /gazebo/set_model_state
 * /tianbot_mini/slam_gmapping:
   * /tianbot_mini/scan
 * /tianbot_mini/rviz:
   * /tianbot_mini/scan
   * /tianbot_mini/move_base/local_costmap/costmap
   * /tianbot_mini/move_base/local_costmap/costmap_updates
   * /tianbot_mini/map_updates
   * /tianbot_mini/move_base/global_costmap/costmap
   * /tianbot_mini/move_base/global_costmap/costmap_updates
   * /tianbot_mini/move_base/NavfnROS/plan
   * /tianbot_mini/move_base/TrajectoryPlannerROS/local_plan
   * /tianbot_mini/move_base/global_costmap/footprint

WARNING These nodes have died:
 * urdf_spawner-6


Found 2 error(s).

ERROR TF re-parenting contention:
 * reparenting of [left_wheel_link] to [chassis] by [/robot_state_publisher]
 * reparenting of [right_wheel_link] to [chassis] by [/robot_state_publisher]
 * reparenting of [right_wheel_link] to [base_link] by [/gazebo]
 * reparenting of [left_wheel_link] to [base_link] by [/gazebo]

ERROR TF multiple authority contention:
 * node [/robot_state_publisher] publishing transform [left_wheel_link] with parent [chassis] already published by node [/gazebo]
 * node [/robot_state_publisher] publishing transform [right_wheel_link] with parent [chassis] already published by node [/gazebo]
 * node [/gazebo] publishing transform [right_wheel_link] with parent [base_link] already published by node [/robot_state_publisher]
 * node [/gazebo] publishing transform [left_wheel_link] with parent [base_link] already published by node [/robot_state_publisher]

报错提示/robot_state_publisher发布了左右轮到chassis的tf变换,但是/gazebo又发布了左右轮到base_link的tf变换,导致了二者的冲突。

解决办法:

在ros answers上找到一个类似的问题:tf tree changes over time - ROS Answers: Open Source Q&A Forum
对比该问题提出者的解决方式,发现是/gazebo发布左右轮到base_footprint的tf配置是在gazebo差速轮机器人控制插件中
将gazebo中的:
<publishWheelTF>true</publishWheelTF>
<publishWheelJointState>true</publishWheelJointState>
改为:
<publishWheelTF>false</publishWheelTF>
<publishWheelJointState>false</publishWheelJointState>

参考文献:

http://wiki.ros.org/roswtf

https://blog.csdn.net/qq_39379746/article/details/105298035

https://blog.csdn.net/weixin_41070687/article/details/125736727

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rosout是一个ROS机器人操作系统)中的工具,它可以用于诊断ROS系统中的错误和问题。具体来说,rosout可以将ROS节点的输出信息记录到一个集中的日志文件中,并且可以按照严重程度对这些信息进行分类和过滤。ROS节点可以使用ROS API来访问rosout并向其发送消息,这些消息可以包括调试信息、警告、错误等等。rosout也可以与其他ROS工具集成,例如rqt_console和rqt_logger_level,以提供更方便的诊断和调试功能。rosout还有一个衍生工具rosout_agg,它可以将多个rosout实例的输出聚合到一起,从而更方便地进行整个ROS系统的故障排除和调试。 ### 回答2: roswtf是一个ROS机器人操作系统)工具,用于执行系统级诊断和检查ROS系统的运行情况。它会检查ROS环境中的多个方面,包括节点、主题、服务、参数、消息类型等,以确保系统的正常运行和配置正确。 具体来说,roswtf会验证ROS节点之间的连接和通信是否正常,检查是否有节点无法启动或关闭,查找正在运行的节点,以及识别节点之间的通信问题。此外,它还会检查主题和服务是否存在,是否有重复的主题或服务名称,以及是否有未使用的主题或服务。 roswtf还会检查ROS参数是否正确设置,包括参数类型、名称和值的一致性。它还可以检查消息类型是否正确,并提供有关消息定义的详细信息。 通过运行roswtf命令,用户可以快速识别和解决ROS系统中潜在的问题,以确保系统在运行时能够正常工作。这对于调试错误、查找系统配置问题以及确保ROS节点的正确运行非常有帮助。 ### 回答3: roswtf是一个ROS机器人操作系统)命令行工具,用于执行系统级别的检查和诊断,以帮助用户解决在ROS系统中可能出现的问题。它可以帮助我们识别并解决ROS系统中的配置错误、节点通信故障、主题和服务异常等问题。 通过运行roswtf命令,系统会自动执行一系列的检查,包括检查ROS环境变量是否设置正确、ROS节点和主题是否存在、消息类型是否匹配等。当检测到错误或潜在问题时,roswtf将会输出相应的警告或错误信息,帮助用户快速定位问题所在。 roswtf还提供了一些额外的功能,例如节点之间的连通性检查、监测节点之间的消息通信质量以及对系统中存在的警告和错误的自动修复等。 总的来说,roswtf是一个非常有用的工具,用于诊断和调试ROS系统中的问题。它能够帮助开发人员快速定位问题,并提供解决方案,从而提高ROS系统的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值