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.pswp.cn/web/64921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64921.shtml
英文地址,請注明出處:http://en.pswp.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、內…

JS 中 json數據 與 base64、ArrayBuffer之間轉換

JS 中 json數據 與 base64、ArrayBuffer之間轉換 json 字符串進行 base64 編碼 function jsonToBase64(json) {return Buffer.from(json).toString(base64); }base64 字符串轉為 json 字符串 function base64ToJson(base64) {try {const binaryString atob(base64);const js…

介紹 C++ 中的智能指針及其應用:以 PyTorch框架自動梯度AutogradMeta為例

介紹 C 中的智能指針及其應用&#xff1a;以 AutogradMeta 為例 在 C 中&#xff0c;智能指針&#xff08;Smart Pointer&#xff09;是用于管理動態分配內存的一種工具。它們不僅自動管理內存的生命周期&#xff0c;還能幫助避免內存泄漏和野指針等問題。在深度學習框架如 Py…

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…

如何獲取穩定高效的動態代理?

在數據采集的領域&#xff0c;動態代理IP是我們探索網絡世界的小助手&#xff0c;它不僅幫助我們高效地收集信息&#xff0c;還能在保護數據安全方面發揮重要作用。但如何在眾多選擇中找到最適合的那個——即穩定且高效的動態代理也是一大難題。 明確你的需求 首先&#xff0…

基于微信小程序的校園點餐平臺的設計與實現(源碼+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.…

原生js封裝ajax請求以及css實現提示效果和禁止點擊效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0,user-scalableno"><title>本地模式網絡切換</title>&l…

Pytorch的自動求導模塊

文章目錄 torch.autograd.backward()基本用法非標量張量的反向傳播保留計算圖指定輸入張量高階梯度計算 與 y.backward() 的區別torch.autograd.grad()基本用法非標量張量的梯度高階梯度計算多輸入、多輸出的梯度計算未使用的輸入張量保留計算圖 與 backward() 的區別 torch.au…

Mac OS

本文來自智譜清言 ------ Mac OS&#xff08;現稱為macOS&#xff09;是蘋果公司開發和銷售的操作系統&#xff0c;自1984年推出以來&#xff0c;它已經經歷了多次重大的演變和發展。 起源&#xff1a;Mac OS 1.0的誕生 - 1984年&#xff0c;蘋果發布了Macintosh計算機&#…

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…

ubuntu常用快捷鍵和變量記錄

alias b‘cd …/’ alias bb‘cd …/…/’ alias bbb‘cd …/…/…/’ alias bbbb‘cd …/…/…/…/’ alias bbbbb‘cd …/…/…/…/…/’ alias bbbbbb‘cd …/…/…/…/…/…/’ alias apkinfo‘aapt dump badging’ alias npp‘notepad-plus-plus’ export ANDROID_HOME/h…