用vscode调试ros或ros2的python程序(rclpy)

2023-05-16

vscode调试ros2,官方有明确的说明与教程,具体可以参考这里(aka.ms/ros/vscode)

ROS - Visual Studio Marketplace

不过这里很啰嗦,其实过程却非常简单。vscode这里我默认你已经安装了ms的ros扩展。

首先,确保你已经安装了ros2,比如我的ros2安装在这里,

C:\dev\ros2_humble

我的测试源码是从github上拉下来的,

cd D:\mc\ros2prj\example_humble
git clone -b humble --recursive https://github.com/ros2/examples.git  src 
call C:\dev\ros2_humble\local_setup.bat
colcon build --merge-install

完成后,打开cmd窗口,启动vscode,

D:\>call C:\dev\ros2_humble\local_setup.bat
D:\>cd D:\mc\ros2prj\example_humble
D:\mc\ros2prj\example_humble>code .

这样ros2环境启动后再运行vscode,就可以直接运行example中的python脚本了。

下面我先举个例子,不通过vscode的方法来运行,每个打开的窗口都要运行
call C:\dev\ros2_humble\local_setup.bat
下面我就不再重复了,

(1)找到服务程序service-script.py,然后启动运行
D:\mc\ros2prj\example_humble>ros2 pkg executables | find "minimal_service"
examples_rclcpp_minimal_service service_main.exe
examples_rclpy_minimal_service service-script.py
examples_rclpy_minimal_service service.exe
examples_rclpy_minimal_service service_member_function-script.py
examples_rclpy_minimal_service service_member_function.exe

D:\mc\ros2prj\example_humble>ros2 run examples_rclpy_minimal_service service-script.py
[INFO] [1664112590.633624000] [minimal_service]: Incoming request
a: 41 b: 1

(2)再打开另一个命令窗口,找到客户程序client-script.py,然后启动运行
D:\mc\ros2prj\example_humble>ros2 pkg executables | find "minimal_client"
examples_rclcpp_minimal_client client_main.exe
examples_rclpy_minimal_client client-script.py
examples_rclpy_minimal_client client.exe
examples_rclpy_minimal_client client_async-script.py
examples_rclpy_minimal_client client_async.exe
examples_rclpy_minimal_client client_async_callback-script.py
examples_rclpy_minimal_client client_async_callback.exe
examples_rclpy_minimal_client client_async_member_function-script.py
examples_rclpy_minimal_client client_async_member_function.exe

D:\mc\ros2prj\example_humble>ros2 run examples_rclpy_minimal_client client-script.py
[INFO] [1664112517.409998100] [minimal_client]: Result of add_two_ints: for 41 + 1 = 42

 可以看到,结果正常。

(3)用vscode调试client。

此时我们可以关闭前面的那个client-script.py的窗口,用vscode打开这个文件夹,
D:\mc\ros2prj\example_humble

然后找到这个文件,

D:\mc\ros2prj\example_humble\src\rclpy\services\minimal_client\examples_rclpy_minimal_client\client.py

在里面打上断点,就可以直接运行了。lanch.json之类的基础配置这里就不啰嗦了,和普通python程序没什么不同。运行完可以看到在service-script.py的命令窗口有响应。

 服务程序service-script.py的内容大致如下

值得说明的是,调试的时候运行的程序是client.py,而不是install文件夹下的那个client-script.py,其实client-script.py只做了一件事,就是调用这个client.py,具体大家可以去看生成的源码。

本文结束。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用vscode调试ros或ros2的python程序(rclpy) 的相关文章

  • 如何指定聚类的距离函数?

    我想对给定距离的点进行聚类 奇怪的是 似乎 scipy 和 sklearn 聚类方法都不允许指定距离函数 例如 在sklearn cluster AgglomerativeClustering 我唯一可以做的就是输入一个亲和力矩阵 这将非常
  • McNemar 在 Python 中的测试以及分类机器学习模型的比较 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有用 Python 实现的好的 McNemar 测试 我在 Scipy stats 或 Scikit
  • 如何调整 matplotlib 单选按钮的大小和纵横比?

    我已经尝试了几个小时来使简单的单选按钮列表的大小和纵横比正确 但没有成功 首先 导入模块 import matplotlib pyplot as plt from matplotlib widgets import RadioButtons
  • Python re无限执行

    我正在尝试执行这段代码 import re pattern r w w s re compiled re compile pattern results re compiled search COPRO HORIZON 2000 HOR p
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • 为什么第二个 request.session cookies 返回空?

    我想使用 requests Session post 登录网站 但是当我已经登录主页 然后进入帐户页面时 看来cookies还没有保存 因为cookies是空的 而且我无法进入正确的帐户页面 import requests from bs4
  • numpy:高效执行数组的复杂重塑

    我正在将供应商提供的大型二进制数组读入 2D numpy 数组 tempfid M N load data data numpy fromfile file dirname fid dtype numpy dtype i4 convert
  • 是否有一个包可以维护所有带有符号的货币列表?

    是否有一个 python 包提供所有 或相当完整 货币的列表与符号 如美元的 有优秀的pycountry 贪财的 https github com limist py moneyed and ccy http code google com
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • python 中的 h2o 框架子集

    如何在 python 中对 h2o 框架进行子集化 如果 x 是一个 df 并且 Origin 是一个变量 那么在 pandas 中我们通常可以通过以下方式进行子集化 x x Origin AAF 但使用 h2o 框架会出现以下错误 H2O
  • Jupyter 笔记本中未显示绘图图表

    我已经尝试解决这个问题几个小时了 我按照上面的步骤操作情节网站 https plot ly python getting started start plotting online并且图表仍然没有显示在笔记本中 这是我的情节代码 color
  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • NumPy 相当于 Keras 函数 utils.to_categorical

    我有一个使用 Keras 进行机器学习的 Python 脚本 我正在构建 X 和 Y 它们分别是特征和标签 标签的构建方式如下 def main depth 10 nclass 101 skip True output True video
  • 为什么这个 if 语句会导致语法错误

    我正在尝试设置一个 elif 语句 如果用户按下 Enter 键 代码将继续 但是我不断遇到语法错误 GTIN 0 while True try GTIN int input input your gtin 8 number if len
  • 使用 suds SOAP 库进行 HTTP 身份验证的奇怪行为

    我有一个正在运行的 python 程序 它使用 suds 通过 SOAP 获取大量数据 Web服务是通过分页功能实现的 这样我就可以抓取nnn每个 fetch 调用的行并获取下一个nnn与后续的电话 如果我使用如下代码向 HTTP 服务器进
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • 如何在 scikit 中加载 CSV 数据并将其用于朴素贝叶斯分类

    尝试加载自定义数据以在 Scikit 中执行 NB 分类 需要帮助将示例数据加载到 Scikit 中 然后执行 NB 如何加载目标的分类值 使用相同的数据进行训练和测试 或使用完整的数据集进行测试 Sl No Member ID Membe
  • 如何通过点击复制 folium 地图上的标记位置?

    I am able to print the location of a given marker on the map using folium plugins MousePosition class GeoMap def update
  • 使用 paramiko 运行 Sudo 命令

    我正在尝试执行sudo使用 python paramiko 在远程计算机上运行命令 我尝试了这段代码 import paramiko ssh paramiko SSHClient ssh set missing host key polic

随机推荐