当前位置: 首页 > news >正文

ros2 中python 的多种调试方式

这里介绍了三种调试方法
第一种 使用pudb调试,需要先安装pudb.无需vscode,vim完全胜任.
第二种 使用vscode调试 ,需要安装debugpy .需要vscode进行远程调试 ,远程主机安装vscode环境麻烦.
第三种 使用run-main调试,需要安装run-main,由于他是单独调试某个py文件,缺点是无法使用ros launch启动,也就是launch里的有些参数无法传递 run-main中,ros调试中可以放弃了.

此文件名为teststartup.sh

#!/bin/sh
echo "Debug ROS2"cd /opt/local/ros2
source venv/bin/activate #激活虚拟环境,可以使用poetry
source install/setup.bash #激活本地的ros
export ROS_LOG_DIR=/opt/local/log
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/local/ros2/install/xxxx/lib #添加了执行环境
# 须知:调试前必须以debug模式生成项目,才可以进入调试,如: python3 -m colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug --symlink-install
#---------------------------------------------########-----------------------------------------
# 方法1(需要安装pudb) PUDB_TTY=/dev/pts/4 ros2 launch moni_xxx moni_xxx.launch.py # 使用pudb调试: import pudb;pu.db,我们调试的时候可以再开一个ssh 并使用tty命令查看终端号,那么前面写的就是 PUDB_TTY=/dev/pts/终端号
# 比如终端号为4那么在这个四号终端里我们输入 sleep infinity 可让终端进入可触发调试状态,然后运行上面的调试命令进行调试
#---------------------------------------------########-----------------------------------------
# 方法2 DEBUG=1 ros2 launch moni_xxx moni_xxx.launch.py #使用vscode 的 attach 方式调试,利用debugpy。
#这里我们在main函数下方放置了一个函数setDebug,并且在py文件中某个node的__init__函数内添加 setDebug(self)以便调试,命令行输入 ./teststartup.sh 1 启动debug调试,teststartup.sh是本调试文件的名称。
#def setDebug(SELF=None) :
#        # 检查命令行参数中是否有 --debug
#        # 检查环境变量 DEBUG=1
#        # 运行 DEBUG=1 ros2 launch moni_xxx moni_xxx.launch.py 可进入调试模式
#        SELF.debug_mode = os.environ.get('DEBUG', '0') == '1'#        if SELF.debug_mode:
#            import debugpy
#            debugpy.listen(('localhost',5678))
#            debugpy.wait_for_client()
#        else:
#            SELF.get_logger().info('调试模式未启用')
#然后在vscode当中启动调试launch.json 其代码如下
#{
#    "version": "0.2.0",
#    "configurations": [
#        {
#            "name": "Python 调试程序attach",
#            "type": "debugpy",
#            "request": "attach",
#            "connect": {
#                "host": "127.0.0.1",
#                "port": 5678
#           }
#        },
#    ]
#}
DEBUG=$1 ros2 launch moni_xxx moni_xxx.launch.py # 命令行输入 ./teststartup.sh 1 启动debug调试
# 当需要调试cam node的时候 使用命令./teststartup.sh 2, 因为在camnode里 setDebug函数内 SELF.debug_mode = os.environ.get('DEBUG', '0') == '2'
#---------------------------------------------########-----------------------------------------
# 方法3 使用run-main(需要安装run-main)调试(已放弃,作为参考表留)PUDB_TTY=/dev/pts/3  run-main /opt/local/ros2/src/moni_xxx/moni_xxx/xxx_node.py # run-main 直接运行的方法调试,缺点在于ros2 launch 传递的参数无法使用,比较麻烦,不赞成使用需要再主函数下方植入以下方法才能启动
#def _main(args=None):
#    #调试用需要安装run-main
#    main()
http://www.dtcms.com/a/299779.html

相关文章:

  • 《计算机组成原理与汇编语言程序设计》实验报告二 基本数字逻辑及汉字显示
  • 深入剖析 MetaGPT 中的提示词工程:WriteCode 动作的提示词设计
  • 深入React框架:构建现代前端应用的全面指南
  • 容器化成本优化:K8s资源请求与限制的黄金法则——从资源画像分析到25%成本削减的实战指南
  • 2025 年 Java 就业主流技术栈
  • Java学习第七十七部分——JVM运行时数据区
  • 三防平板搭载2D扫描头:工业数据采集的革新利器
  • 路由选择工具——IP-Prefix
  • springboot企业级后台管理平台-计算机毕业设计源码02282
  • java网络请求工具类HttpUtils
  • 如何查找php配置文件php.ini
  • URL与URI:互联网世界的“门牌号“与“身份证“
  • 【机器学习深度学习】模型微调:多久才算微调完成?——如何判断微调收敛,何时终止训练
  • Linux库——库的制作和原理(2)_库的原理
  • 微软中国高级架构师步绍鹏受邀为第十四届PMO大会演讲嘉宾
  • gig-gitignore工具实战开发(五):gig add完善
  • 单片机中的三极管
  • write`系统调用
  • 字节跳动正式开源AI智能体开发平台Coze
  • LeetCode——1957. 删除字符使字符串变好
  • 1.安装anaconda详细步骤(含安装截图)
  • Typecho插件开发实战:构建专业级访问日志系统
  • ESP32-idf学习(五)esp32C3移植lvgl①
  • 贝叶斯决策论
  • Spring AI MCP 客户端
  • Django+celery异步:拿来即用,可移植性高
  • SSSM框架相关问题总结
  • 拒绝SQL恐惧:用Python+pyqt打造Excel数据库查询系统
  • [Java恶补day47] 整理模板·考点十【二叉树层序遍历】
  • 快速入门Linux操作系统(一)