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.mzph.cn/web/64921.shtml

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

相关文章

Milvus×合邦电力:向量数据库如何提升15%电价预测精度

01. 全球能源市场化改革下的合邦电力 在全球能源转型和市场化改革的大背景下&#xff0c;电力交易市场正逐渐成为优化资源配置、提升系统效率的关键平台。电力交易通过市场化手段&#xff0c;促进了电力资源的有效分配&#xff0c;为电力行业的可持续发展提供了动力。 合邦电力…

OLED的显示

一、I2C I2C时序&#xff1a;时钟线SCL高电平下&#xff1a;SDA由高变低代表启动信号&#xff0c;开始发送数据&#xff1b;SCL高电平时&#xff0c;数据稳定&#xff0c;数据可以被读走&#xff0c;开始进行读操作&#xff0c;SCL低电平时&#xff0c;数据发生改变&#xff1…

VMware运维效率提升50%,RVTools管理更简单

RVTools 是一款专为 VMware 虚拟化环境量身打造的高效管理工具&#xff0c;基于 .NET 4.7.2 框架开发&#xff0c;并与 VMware vSphere Management SDK 8.0 和 CIS REST API 深度集成&#xff0c;能够全面呈现虚拟化平台的各项关键数据。该工具不仅能够详细列出虚拟机、CPU、内…

python +t kinter绘制彩虹和云朵

python t kinter绘制彩虹和云朵 彩虹&#xff0c;简称虹&#xff0c;是气象中的一种光学现象&#xff0c;当太阳光照射到半空中的水滴&#xff0c;光线被折射及反射&#xff0c;在天空上形成拱形的七彩光谱&#xff0c;由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…

Zabbix5.0版本(监控Nginx+PHP服务状态信息)

目录 1.监控Nginx服务状态信息 &#xff08;1&#xff09;通过Nginx监控模块&#xff0c;监控Nginx的7种状态 &#xff08;2&#xff09;开启Nginx状态模块 &#xff08;3&#xff09;配置监控项 &#xff08;4&#xff09;创建模板 &#xff08;5&#xff09;用默认键值…

Python入门教程 —— 字符串

字符串介绍 字符串可以理解为一段普通的文本内容,在python里,使用引号来表示一个字符串,不同的引号表示的效果会有区别。 字符串表示方式 a = "Im Tom" # 一对双引号 b = Tom said:"I am Tom" # 一对单引号c = Tom said:"I\m Tom" # 转义…

AcWing练习题:差

读取四个整数 A,B,C,D&#xff0c;并计算 (AB−CD)的值。 输入格式 输入共四行&#xff0c;第一行包含整数 A&#xff0c;第二行包含整数 B&#xff0c;第三行包含整数 C&#xff0c;第四行包含整数 D。 输出格式 输出格式为 DIFERENCA X&#xff0c;其中 X 为 (AB−CD) 的…

小程序添加购物车业务逻辑

数据库设计 DTO设计 实现步骤 1 判断当前加入购物车中的的商品是否已经存在了 2 如果已经存在 只需要将数量加一 3 如果不存在 插入一条购物车数据 4 判断加到本次购物车的是菜品还是套餐 Impl代码实现 Service public class ShoppingCartServiceImpl implements Shoppin…

如何在谷歌浏览器中使用自定义搜索快捷方式

在数字时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的一部分。作为最常用的浏览器之一&#xff0c;谷歌浏览器凭借其简洁的界面和强大的功能深受用户喜爱。本文将详细介绍如何自定义谷歌浏览器的快捷工具栏&#xff0c;帮助你更高效地使用这一工具。 一、如何找到谷歌…

Python 3 与 Python 2 的主要区别

文章目录 1. 语法与关键字print 函数整数除法 2. 字符串处理默认字符串类型字符串格式化 3. 输入函数4. 迭代器和生成器range 函数map, filter, zip 5. 标准库变化urllib 模块configparser 模块 6. 异常处理7. 移除的功能8. 其他重要改进数据库操作多线程与并发类型注解 9. 总结…

关于IDE的相关知识之二【插件推荐】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于ide插件推荐的相关内容&#xff01…

基于微信小程序的校园点餐平台的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…

spring中使用@Validated,什么是JSR 303数据校验,spring boot中怎么使用数据校验

文章目录 一、JSR 303后台数据校验1.1 什么是 JSR303&#xff1f;1.2 为什么使用 JSR 303&#xff1f; 二、Spring Boot 中使用数据校验2.1 基本注解校验2.1.1 使用步骤2.1.2 举例Valid注解全局统一异常处理 2.2 分组校验2.2.1 使用步骤2.2.2 举例Validated注解Validated和Vali…

应用架构模式-总体思路

采用引导式设计方法&#xff1a;以企业级架构为指导&#xff0c;形成较为齐全的规范指引。在实践中总结重要设计形成决策要点&#xff0c;一个决策要点对应一个设计模式。自底向上总结采用该设计模式的必备条件&#xff0c;将之转化通过简单需求分析就能得到的业务特点&#xf…

【数据结构】双向循环链表的使用

双向循环链表的使用 1.双向循环链表节点设计2.初始化双向循环链表-->定义结构体变量 创建头节点&#xff08;1&#xff09;示例代码&#xff1a;&#xff08;2&#xff09;图示 3.双向循环链表节点头插&#xff08;1&#xff09;示例代码&#xff1a;&#xff08;2&#xff…

【Java设计模式-3】门面模式——简化复杂系统的魔法

在软件开发的世界里&#xff0c;我们常常会遇到复杂的系统&#xff0c;这些系统由多个子系统或模块组成&#xff0c;各个部分之间的交互错综复杂。如果直接让外部系统与这些复杂的子系统进行交互&#xff0c;不仅会让外部系统的代码变得复杂难懂&#xff0c;还会增加系统之间的…

Linux一些问题

修改YUM源 Centos7将yum源更换为国内源保姆级教程_centos使用中科大源-CSDN博客 直接安装包&#xff0c;走链接也行 Index of /7.9.2009/os/x86_64/Packages 直接复制里面的安装包链接&#xff0c;在命令行直接 yum install https://vault.centos.org/7.9.2009/os/x86_64/Pa…

HTML——57. type和name属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>type和name属性</title></head><body><!--1.input元素是最常用的表单控件--><!--2.input元素不仅可以在form标签内使用也可以在form标签外使用-…

uniapp本地加载腾讯X5浏览器内核插件

概述 TbsX5webviewUTS插件封装腾讯x5webview离线内核加载模块&#xff0c;可以把uniapp的浏览器内核直接替换成Android X5 Webview(腾讯TBS)最新内核&#xff0c;提高交互体验和流畅度。 功能说明 下载SDK插件 1.集成x5内核后哪些页面会由x5内核渲染&#xff1f; 所有plus…

设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析

单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;旨在确保某个类在应用程序的生命周期内只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。这种设计模式在需要控制资源访问、避免频繁创建和销毁对象的场景中尤为有用。 一、核心…