ros2 py文件间函数调用

文章目录

  • 写在前面的话
    • 生成python工程包命令
    • 运行python函数命令
    • python工程包的目录结构
      • 目录结构(细节)
  • 报错 1( no module name '***')
    • 错误示意 截图
    • 终端输出
    • 解决方法
  • 报错 2( AttributeError: '***' object has no attribute '_default_callback_group')
    • 终端输出
    • 错误示意 截图
    • 解决方法
  • 成功运行
    • 运行示意 截图

写在前面的话

在 ros2 新建依赖 python 的工程包(package)的命令如下,生成的文件结构如下图。在 setup.py 文件里面已经默认指定了运行的函数是 keyboard_control.py 的 main 函数,这篇文章解决的是需要调用另一个python文件的函数,遇到的报错问题限于我个人,可以参考…

生成python工程包命令

ros2 pkg create keyboard_control --build-type ament_python --dependencies rclpy --node-name keyboard_control

运行python函数命令

ros2 run keyboard_control keyboard_control

python工程包的目录结构

在这里插入图片描述

目录结构(细节)

终端打印目录结构需要用到 tree ,安装即可sudo apt install tree

xucg@xucg-vm17:~/xu_nav_ws/src/keyboard_control$ tree
.
├── keyboard_control
│   ├── can_control.py
│   ├── __init__.py
│   └── keyboard_control.py
├── package.xml
├── resource
│   └── keyboard_control
├── setup.cfg
├── setup.py
└── test├── test_copyright.py├── test_flake8.py└── test_pep257.py3 directories, 10 files

报错 1( no module name ‘***’)

错误示意 截图

在这里插入图片描述

终端输出

xucg@xucg-vm17:~/xu_nav_ws$ colcon build
Starting >>> keyboard_control
Finished <<< keyboard_control [3.91s]          Summary: 1 package finished [4.59s]
xucg@xucg-vm17:~/xu_nav_ws$ ros2 run keyboard_control keyboard_control 
Traceback (most recent call last):File "/home/xucg/xu_nav_ws/install/keyboard_control/lib/keyboard_control/keyboard_control", line 33, in <module>sys.exit(load_entry_point('keyboard-control==0.0.0', 'console_scripts', 'keyboard_control')())File "/home/xucg/xu_nav_ws/install/keyboard_control/lib/keyboard_control/keyboard_control", line 25, in importlib_load_entry_pointreturn next(matches).load()File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 171, in loadmodule = import_module(match.group('module'))File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)File "<frozen importlib._bootstrap>", line 1050, in _gcd_importFile "<frozen importlib._bootstrap>", line 1027, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 688, in _load_unlockedFile "<frozen importlib._bootstrap_external>", line 883, in exec_moduleFile "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removedFile "/home/xucg/xu_nav_ws/install/keyboard_control/lib/python3.10/site-packages/keyboard_control/keyboard_control.py", line 20, in <module>from can_control import can_controller
ModuleNotFoundError: No module named 'can_control'
[ros2run]: Process exited with failure 1

解决方法

需要指定到 python 文件的上级目录
from can_control import can_controller >> from keyboard_control.can_control import can_controller

报错 2( AttributeError: ‘***’ object has no attribute ‘_default_callback_group’)

终端输出

xucg@xucg-vm17:~/xu_nav_ws$ colcon build
Starting >>> keyboard_control
Finished <<< keyboard_control [3.88s]          Summary: 1 package finished [4.57s]
xucg@xucg-vm17:~/xu_nav_ws$ ros2 run keyboard_control keyboard_control 
Traceback (most recent call last):File "/home/xucg/xu_nav_ws/install/keyboard_control/lib/keyboard_control/keyboard_control", line 33, in <module>sys.exit(load_entry_point('keyboard-control==0.0.0', 'console_scripts', 'keyboard_control')())File "/home/xucg/xu_nav_ws/install/keyboard_control/lib/python3.10/site-packages/keyboard_control/keyboard_control.py", line 145, in maincar_controller = can_controller()File "/home/xucg/xu_nav_ws/install/keyboard_control/lib/python3.10/site-packages/keyboard_control/can_control.py", line 221, in __init__self.sub_vel = self.create_subscription(Twist,'/keyboard_vel_msg', self.vel_callback, 1)File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py", line 1347, in create_subscriptioncallback_group = callback_group or self.default_callback_groupFile "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py", line 304, in default_callback_groupreturn self._default_callback_group
AttributeError: 'can_controller' object has no attribute '_default_callback_group'. Did you mean: 'default_callback_group'?
[ros2run]: Process exited with failure 1

错误示意 截图

在这里插入图片描述

解决方法

在调用的函数 __init__(self):下面一行加上super().__init__('函数类名称')即可

成功运行

xucg@xucg-vm17:~/xu_nav_ws$ colcon build
Starting >>> keyboard_control
Finished <<< keyboard_control [4.25s]          Summary: 1 package finished [4.99s]
xucg@xucg-vm17:~/xu_nav_ws$ ros2 run keyboard_control keyboard_control 
[17664, 5, 191, 35387, 15, 15, [b'\x03', b'\x1c', b'\x7f', b'\x15', b'\x04', b'\x00', b'\x01', b'\x00', b'\x11', b'\x13', b'\x1a', b'\x00', b'\x12', b'\x0f', b'\x17', b'\x16', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00']]Reading from the keyboard  and Publishing to Twist!---------------------------注意:r是停止,角速度不能设置太大会导致转弯不稳车身摆动,Moving around:q   w   e a   s   d  z       canything else : stop,/. : increase/decrease max speed by 10%v/b : increase/decrease only linear speed by 10%n/m : increase/decrease only angular speed by 10%CTRL-C to quitcurrently: 	speed(0.0) 	turn(0.0)

运行示意 截图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501393.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7安装配置JDK保姆级教程(图文详解)

1. 安装OpenJDK 直接使用yum命令安装&#xff0c;这里安装的版本是openjdk 11 &#xff08;具体版本根据自己操作系统选择&#xff09; # 查找安装包 yum search java-11# 安装jdk, 同时安装了依赖 java-11-openjdk-headless yum install java-11-openjdk.x86_64# 安装开发工…

默认ip无法访问,利用dhcp功能获取ip进行访问的方法

应用场景&#xff1a; ac的默认ip如192.168.1.1在pc与ac的eth2以后网口直连无法ping通&#xff0c;而且pc改为dhcp自动获取ip也获取不到ip地址&#xff0c;无法进行web配置和命令行操作。 原因是ac或其他设备被修改了默认ip或者端口vlanid&#xff0c;现在的端口vlan对应子接…

库伦值自动化功耗测试工具

1. 功能介绍 PlatformPower工具可以自动化测试不同场景的功耗电流&#xff0c;并可导出为excel文件便于测试结果分析查看。测试同时便于后续根据需求拓展其他自动化测试用例。 主要原理&#xff1a;基于文件节点 coulomb_count 实现&#xff0c;计算公式&#xff1a;电流&…

QQ长截屏

QQ长截屏 第一步&#xff1a;CtrlAltA 第二步&#xff1a;点击剪刀之后&#xff0c;再滑动滚轮就可以了。 展示

高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程

前言 Nginx WebUI 是一个为 Nginx 提供图形化管理界面的工具。通过 WebUI&#xff0c;用户可以轻松管理 Nginx 配置&#xff0c;而无需直接编辑配置文件&#xff0c;尤其适合新手用户和频繁修改配置的场景。 官网文档&#xff1a;nginxWebUI - 文档 本文将分享为什么选择 ngin…

MySQL 05 章——排序与分页

一、排序 &#xff08;1&#xff09;排序规则 使用ORDER BY子句排序 ASC&#xff08;ascend&#xff09;&#xff1a;升序&#xff08;从上至逐渐升高&#xff09;DESC&#xff08;descend&#xff09;&#xff1a;降序&#xff08;从上至下逐渐降低&#xff09;​​​​​​…

【C语言】_指针运算

目录 1. 指针-整数 2. 指针-指针 2.1 指针-指针含义 2.2 指针-指针运算应用&#xff1a;实现my_strlen函数 3. 指针的关系运算&#xff08;大小比较&#xff09; 1. 指针-整数 联系关于指针变量类型关于指针类型和指针-整数相关知识&#xff1a; 原文链接如下&#xff1…

Wend看源码-Java-Executor异步执行器学习

摘要 本文主要介绍了Java.util.concurrent包所提供的 Executor 异步执行器框架&#xff0c;涵盖了相关的接口和类。 并发执行器类图 图1 java 并发执行器相关类图 Executor 接口 Executor 接口提供了一种将任务的提交与任务的实际执行机制分离开来的方法。它只有一个方法 exe…

2025考研江南大学复试科目控制综合(初试807自动控制原理)

​ 2025年全国硕士研究生招生考试江南大学考点 一年年的考研如期而至&#xff0c;我也变成了研二了&#xff0c;作为2次考研经历的学长&#xff0c;总是情不自禁地回想起自己的考研经历&#xff0c;我也会经常从那段经历中汲取力量。我能理解大多数考生考完后的的迷茫无助&…

基于深度学习算法的AI图像视觉检测

基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展。如今&#xff0c;它被广泛用于图像分类、人脸识别、图像中物体的识别等。那么什么是深度学习&#xff1f;深度学习是如何应用在视觉检测上的呢&#xff1f; 什么是深度学习&#xff1f; 深度学习是…

lec5-传输层原理与技术

lec5-传输层原理与技术 1. 传输层概述 1.1. 关键职责 flow control&#xff0c;流量控制reliability&#xff0c;可靠性 1.2. TCP与UDP对比 面向连接 / 不能连接对数据校验 / 不校验数据丢失重传 / 不会重传有确认机制 / 没有确认滑动窗口流量控制 / 不会流量控制 1.3. 关…

学习C++:数组

数组&#xff1a; 一&#xff0c;概述 所谓数组&#xff0c;就是一个集合&#xff0c;里面存放了相同类型的元素 特点1&#xff1a;数组中的每个数据元素都是相同的数据类型 特点2&#xff1a;数组是由连续的内存位置组成的 二&#xff0c;一维数组 1.一维数组定义方式 三…

Formality:官方Tutorial(一)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 本文是对Synopsys Formality User Guide Tutorial中第一个实验的翻译&#xff08;有删改&#xff09;&#xff0c;Lab文件可以从以下链接获取。 Formality官方Tu…

STM32 拓展 RTC(实时时钟)

RTC简介 RTC(Real Time Clock,实时时钟)。是一个掉电后仍然可以继续运行的独立定时器。 RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 RTC实质…

在 macOS 上,你可以使用系统自带的 终端(Terminal) 工具,通过 SSH 协议远程连接服务器

文章目录 1. 打开终端2. 使用 SSH 命令连接服务器3. 输入密码4. 连接成功5. 使用密钥登录&#xff08;可选&#xff09;6. 退出 SSH 连接7. 其他常用 SSH 选项8. 常见问题排查问题 1&#xff1a;连接超时问题 2&#xff1a;权限被拒绝&#xff08;Permission denied&#xff09…

Scrum中敏捷项目经理(Scrum Master)扮演什么角色?

敏捷开发模式已经逐渐被主流的软件研发团队所接受&#xff0c;其中Scrum是最具代表性的敏捷方法之一。Scrum框架中有三个核心角色&#xff1a;Product Owner&#xff08;PO&#xff09;、Scrum Master&#xff08;SM&#xff09;和Development Team&#xff08;DT&#xff09;。…

沙箱模拟支付宝支付3--支付的实现

1 支付流程实现 演示案例 主要参考程序员青戈的视频【支付宝沙箱支付快速集成版】支付宝沙箱支付快速集成版_哔哩哔哩_bilibili 对应的源码在 alipay-demo: 使用支付宝沙箱实现支付功能 - Gitee.com 以下是完整的实现步骤 1.首先导入相关的依赖 <?xml version"1…

Yocto项目 - 详解PACKAGECONFIG机制

引言 Yocto项目是一个强大的嵌入式Linux开发工具&#xff0c;广泛应用于创建定制的嵌入式Linux发行版。在Yocto中&#xff0c;配置和定制化构建系统、软件包、以及生成适用于特定硬件的平台镜像是非常重要的。PACKAGECONFIG是Yocto项目中用于灵活启用或禁用软件包特性的强大工…

【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)

本篇文章分享关于如何使用STM32单片机对彩色摄像头&#xff08;OV7725/OV2604&#xff09;采集的图像数据进行分析处理&#xff0c;最后实现颜色的识别和检测。 目录 一、什么是颜色识别 1、图像采集识别的一些基本概念 1. 像素&#xff08;Pixel&#xff09; 2. 分辨率&am…

安装PyQt5-tools卡在Preparing metadata (pyproject.toml)解决办法

为了在VS code中使用PyQt&#xff0c;在安装PyQt5-tools时总卡在如下这一步 pyqt5 Preparing metadata (pyproject.toml)经过各种尝试&#xff0c;最终问题解决&#xff0c;在此记录方法。 首先进入PyQt5-tools官网查看其适配的Python版本&#xff0c;网址如下&#xff1a; h…