对Bubble进行调试

Goal: 通过使用vscode内的插件对Bubble的功能包进行调试

先决条件

您具备了ROS2的基础知识, 并且已完成 源码构建 内的所有步骤。

在vscode中使用ROS插件调试

在vscode中需要依靠扩展来对ROS2进行调试。在ROS扩展中共有两种调试方式launch和attach。launch调试是直接启动launch文件进行调试,类似于原生调试流程。 attach调试不同于launch调试,它是在程序运行阶段附加到进程上来为ROS进行调试,若结束调试不会对进程产生影响。

生成调试配置文件

若为首次使用ros插件进行调试,并且.vscode目录下不包含settings.json文件。请进入运行和调试界面点击下拉菜单选择添加配置,此时会自动在 .vscode目录下生成settings.json文件。 若.vscode目录下包含settings.json文件,请忽视此步骤。

使用Launch启动调试

配置launch

在settings.json文件中点击添加配置,下拉选择ROS:Launch选项 会在 “configurations”: [] 中自动添加,

{
    "name": "ROS: Launch",
    "type": "ros",
    "request": "launch",
    "target": "absolute path to launch file"
}

修改其中的”target”为所需要启动的launch文件路径。

{
    "name": "ROS: Launch",
    "type": "ros",
    "request": "launch",
    "target": "src/bubble_contrib/bubble_aiming/launch/aiming_launch.py"
}

运行launch

  1. 重新进入运行和调试界面点击下拉菜单选择ROS:Launch, 若没有对应选项请检查第一步是否完成。

    ../_images/ros_attach.png
  2. 在选择ROS:Launch后: Launch之后会运行对应的launch文件。

  1. 进行断点调试。

使用Attach启动调试

配置attach

在settings.json文件中点击添加配置,下拉选择ROS:Attach选项 会在 “configurations”: [] 中自动添加

{
    "name": "ROS: Attach",
    "type": "ros",
    "request": "attach"
}

运行attach

  1. 首先运行待调试的节点 如启动bubble_core包中的bcp_core节点。

    ros2 launch src/bubble_core/bubble_protocol/launch/bcp_api_core_launch.py
    
  2. 重新进入运行和调试界面点击下拉菜单选择ROS:Attach, 若没有对应选项请检查第一步是否完成。

    ../_images/ros_attach.png
  3. 在选择ROS:Attach后会跳出选择框选择编程语言,根据要调试的节点内部使用的编程语言进行选择。

    ../_images/python.png
  4. 在选择完编程语言后会跳出选择进程的选择框,此处选择节点名称即bcp_core。

    ../_images/bcp_core.png
  5. 进行断点调试。

在rqt中调试

RQt 是一个图形用户界面框架,以插件的形式实现了各种工具和界面。 可以在 RQt 中将所有现有的 GUI 工具作为可停靠窗口进行运行。 一般使用rqt中的 Image View、Node Graph、Topic Monitor和Dynamic Reconfigure插件。

rqt使用

在终端内输入

rqt

在首次运行rqt后,窗口将为空白。需从顶部的菜单栏中选择Plugins > Introspection > Node Graph用以查看node节点关系图。

Note

可能需要一些时间 rqt 来定位所有插件本身。 如果单击 Plugins ,但没有看到 Node Graph 或任何其他选项,则应关闭 rqt ,输入命令 rqt –force-discover在您的终端中。

../_images/rqt.png

插件介绍

Image View

用于显示图像信息, 一般用于查看相机发送的图像是否正常。
../_images/Image_View.png

Node Graph

用于查看node节点的关系图, 一般用于检查节点与节点是否正常建立联系。
../_images/Node_Graph.png

Topic Monitor

用于查看发布的主题内的数据,一般用于查看主题内的数据是否正常。
../_images/Topic_Monitor.png ../_images/Topic_Monitor2.png

Dynamic Reconfigure

用于调试使用,一般用于对各个参数的值进行修改。

../_images/Dynamic_Reconfigure.png