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


    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,具体大家可以去看生成的源码。

    本文结束。 

  • 相关阅读:
    js中 scrollHeight、clientHeight、scrollTop的理解
    波奇学C++:哈希
    java毕业设计户籍管理系统mybatis+源码+调试部署+系统+数据库+lw
    MySQL数据库 -- 表的增删查改
    python requests操控网站
    SparkSQL DataFrame的介绍及创建
    ROS2从入门到精通1-2:详解ROS2服务通信机制与自定义服务
    RocketMQ入门之学习环境搭建
    【LeetCode每日一题】——38.外观数列
    基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务
  • 原文地址:https://blog.csdn.net/tanmx219/article/details/127044098