ROS melodic 安裝 python3 cv_bridge

有時候,我們需要處理這些兼容性問題。此處列舉我的過程,以供參考

mkdir -p my_ws_py39/src
cd my_ws_py39
catkin_make_isolated-DPYTHON_EXECUTABLE=/usr/bin/python3 \-DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so

catkin_make_isolated allows per-package customization,和常見的 catkin_make 在這里區別不大。很多教程都推薦加上 --install,我這里沒有,因為失敗了,原因在下面。

其中,三個 命令行標識需要更改為你自己的環境路徑,你可以通過

python3 -c "import sysconfig; print(sysconfig.get_path('include'))"
python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))"

來找到后兩個。至于第一個,因為我在 miniconda下,可以通過指令

conda env list

查看。若是 linux,可以使用指令:

which python

顯示當前 激活的(actived) python環境。在編譯成功后,刷新當前環境,執行指令

source my_ws_py39/devel_ioslated/setup.bash

注意路徑。此處我處于?~路徑下。

然后,將 vision_opencv-melodic.zip?文件夾放在 my_ws_py39/src目錄下,并解壓。此處更通用的做法是通過 git 指令進行 clone。我不想花時間在 git 配置上,直接以 zip的形式下載。

再重新走一遍 上述的 catkin_make_isolated指令,帶上必要的命令行選項。

若成功,進行測試。

rospack find cv_bridge

查看文件路徑。

第二份測試方式,先在一個終端中執行 roscore,啟動 rosmaster。再在另一個終端中運行下述腳本,保證它能夠運行在 ros 網絡中。記得 通過指令?

chmod +x test_cv_bridge.py

?給腳本權限。此處,我假設腳本名為 test_cv_bridge.py

#!/usr/bin/env python
import rospy
from cv_bridge import CvBridge
import cv2if __name__ == '__main__':rospy.init_node('cv_bridge_test')bridge = CvBridge()# 創建一個空白圖像用于測試import numpy as npimg = np.zeros((100,100,3), dtype=np.uint8)try:# 將 OpenCV 格式轉換為 ROS 圖像消息img_msg = bridge.cv2_to_imgmsg(img, encoding="bgr8")rospy.loginfo("cv_bridge 工作正常!")except Exception as e:rospy.logerr("cv_bridge 測試失敗: %s", e)

Addition

我實際執行的語句

# 系統級的安裝
sudo apt-get install ros-melodic-cv-bridge ros-melodic-image-geometry
sudo apt-get install python3-dev# 虛擬環境中的安裝
pip install rospkg catkin_pkg# 實際使用的編譯指令
catkin_make_isolated   -DPYTHON_EXECUTABLE=/home/ncut/miniconda3/envs/tf/bin/python3.9   -DPYTHON_INCLUDE_DIR=/home/ncut/miniconda3/envs/tf/include/python3.9
source devel_isolated/setup.bash# 將 melodic 版本的package放入 /src目錄下后執行
catkin_make_isolated   -DPYTHON_EXECUTABLE=/home/ncut/miniconda3/envs/tf/bin/python3.9   -DPYTHON_INCLUDE_DIR=/home/ncut/miniconda3/envs/tf/include/python3.9
source devel_isolated/setup.bash#記得在 編譯后執行 source 刷新# 以下信息是另一個工作空間示例,使用 catkin_make
mkdir -p ws_py39/src
cd ws_py39/
catkin_make  -DPYTHON_EXECUTABLE=/home/ncut/miniconda3/envs/tf/bin/python3.9 -DPYTHON_INCLUDE_DIR=/home/ncut/miniconda3/envs/tf/include/python3.9 -DPYTHON_LIBRARY=/home/ncut/miniconda3/envs/tf/lib/libpython3.9.sosource devel/setup.bash 
cd src/
catkin_create_pkg graduation std_msgs roscpp rospy  
cd ../catkin_make  -DPYTHON_EXECUTABLE=/home/ncut/miniconda3/envs/tf/bin/python3.9 -DPYTHON_INCLUDE_DIR=/home/ncut/miniconda3/envs/tf/include/python3.9 -DPYTHON_LIBRARY=/home/ncut/miniconda3/envs/tf/lib/libpython3.9.so

--install失敗的原因。

這里是log,方便查看:

error: option --install-layout not recognized
CMake Error at catkin_generated/safe_execute_install.cmake:4 (message):
execute_process(.../catkin_generated/python_distutils_install.sh)
returned error code

查了資料,因為?cv_bridgesetup.py(或 CMakeLists.txt)中的 --install-layout 選項在 Python 3 下不被識別。

為什么分兩次編譯

第一次編譯是為了 創建這個工作空間,然后通過 source 指令刷新該工作空間。這樣,后面的編譯操作,都會找到該工作空間中的信息,也即,它會使用python3。

第二次編譯則是為了編譯 cv_bridge。即我們真正的目的。

所以第一次編譯是 必要的 preprocess,預處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73623.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入學習:SpringQuartz的配置方式!

全文目錄: 開篇語前言摘要概述1. 基于 XML 的傳統配置配置步驟1.1 Maven 依賴1.2 XML 配置文件1.3 實現 Job 類 2. 基于 Java Config 的現代配置方式配置步驟2.1 Maven 依賴2.2 配置類2.3 實現 Job 類 3. 動態任務調度動態添加任務動態刪除任務 4. Quartz 持久化配置…

ClickHouse與TiDB實操對比:從入門到實戰的深度剖析

ClickHouse與TiDB實操對比:從入門到實戰的深度剖析 寶子們,在當今數據驅動的時代,選擇合適的數據庫對于處理海量數據和支撐業務發展至關重要。ClickHouse和TiDB作為兩款備受關注的數據庫,各自有著獨特的優勢和適用場景。今天&…

element-ui messageBox 組件源碼分享

messageBox 彈框組件源碼分享,主要從以下兩個方面: 1、messageBox 組件頁面結構。 2、messageBox 組件屬性。 一、組件頁面結構。 二、組件屬性。 2.1 title 標題,類型為 string,無默認值。 2.2 message 消息正文內容&#xf…

睡眠健康領域的智能硬件設備未來的發展趨勢

隨著社會節奏的不斷加快,人們的睡眠問題愈發多了起來,主要表現有以下幾個方面: 睡眠質量下降 淺睡眠增多:現代生活中,人們面臨著各種壓力源,如工作壓力、生活瑣事、經濟壓力等,這些壓力會導致大…

支付頁面安全與E-Skimming防護----淺談PCI DSS v4.0.1要求6.4.3與11.6.1的實施

關鍵詞:支付頁面安全、E-Skimming、PCI DSS v4.0.1、第三方腳本、風險管理、持卡人數據、數據安全、第三方服務提供商、TPSP、內容安全、網頁監控、惡意腳本攻擊 本文為atsec和作者技術共享類文章,旨在共同探討信息安全的相關話題。轉載請注明&#xff…

【gradio】從零搭建知識庫問答系統-Gradio+Ollama+Qwen2.5實現全流程

從零搭建大模型問答系統-GradioOllamaQwen2.5實現全流程(一) 前言一、界面設計(計劃)二、模塊設計1.登錄模塊2.注冊模塊3. 主界面模塊4. 歷史記錄模塊 三、相應的接口(前后端交互)四、實現前端界面的設計co…

案例分享|樹莓派媒體播放器,重構商場廣告的“黃金三秒”

研究顯示,與傳統戶外廣告相比,數字戶外廣告在消費者心中的記憶率提高了17%,而動態戶外廣告更是能提升16%的銷售業績,整體廣告效率提升了17%。這一顯著優勢,使得越來越多資源和技術流入數字廣告行業。 戶外裸眼3D廣告 無…

23種設計模式-裝飾器(Decorator)設計模式

裝飾器設計模式 🚩什么是裝飾器設計模式?🚩裝飾器設計模式的特點🚩裝飾器設計模式的結構🚩裝飾器設計模式的優缺點🚩裝飾器設計模式的Java實現🚩代碼總結🚩總結 🚩什么是…

[Vue]事件修飾符

文章目錄 一、語法介紹二、添加代碼三、結果展示四、參考文獻 如有錯誤,請指正!!! 一、語法介紹 1、問題來源 我們在處理網頁時,當點擊按鈕時會觸發對應事件,但是有時并不想觸發該時間&#xff0c…

Go 語言 sync 包使用教程

Go 語言 sync 包使用教程 Go 語言的 sync 包提供了基本的同步原語,用于在并發編程中協調 goroutine 之間的操作。 1. 互斥鎖 (Mutex) 互斥鎖用于保護共享資源,確保同一時間只有一個 goroutine 可以訪問。 特點: 最基本的同步原語&#x…

ubuntu22.04安裝搜狗輸入法保姆教程~

一、添加中文語言支持 1.首先打開設置,找到Language and Region 2.點擊Manage Installed Languages 3.點擊 Install/Remove Languages... 4.選中Chinese (simplified),點擊Apply

docker中間件部署

1.docker安裝 # 1.卸載舊版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 2.需要的安裝包 yum install -y yum-utils# 3.設置鏡像的倉庫 # 3.1.默認是國外的&#x…

python康復日記-request庫的使用,爬蟲自動化測試

一,request的簡單應用 #1請求地址 URLhttps://example.com/login #2參數表單 form_data {username: admin,password: secret } #3返回的響應對象response response requests.post(URL,dataform_data,timeout5 ) #4處理返回結果,這里直接打印返回網頁的…

強化學習和智能決策:Q-Learning和Deep Q-Learning算法

強化學習(Reinforcement Learning, RL)是機器學習的一個重要分支,它通過智能體(Agent)與環境交互來學習最優決策策略,旨在最大化智能體的長期累積獎勵。Q-Learning和Deep Q-Learning是強化學習中的兩種關鍵算法,它們在智能決策領域發揮著重要作用。 一、強化學習基礎 …

ubuntu22.04 安裝Jitsi meet 開源會議系統,代替騰訊會議

0.安裝 官方安裝教程Self-Hosting Guide - Debian/Ubuntu server | Jitsi Meet 一定要用域名訪問, 一定要用域名訪問, 一定要用域名訪問, 一定要用域名訪問, 域名一定要有ssl證書,域名一定要有ssl證書,域名…

專家管理系統(源碼+文檔+講解+演示)

引言 在知識經濟時代,專家管理系統成為了企業優化知識資源、提升決策效率的重要工具。本文將介紹一款創新的專家管理系統,該系統通過智能化工具,助力企業實現專家資源的高效管理和利用。 平臺概述 專家管理系統采用前后端分離的架構設計&a…

css基礎-選擇器

選擇器進階 子串選擇器 /* 匹配 href 以 "https" 開頭的鏈接 */ a[href^"https"] {color: green; }/* 匹配 href 包含 "example" 的鏈接 */ a[href*"example"] {text-decoration: underline; }/* 匹配 href 以 ".pdf" 結尾…

Spring Boot屬性設置方法及優先級完整說明+表格對比

Spring Boot屬性設置方法及優先級完整說明 官網參考: https://docs.spring.io/spring-boot/3.4-SNAPSHOT/reference/features/external-config.html#features.external-config.files 屬性設置方法優先級順序(從高到低) 命令行參數&#xf…

上門家政小程序實戰,從0到1解決方案

一、邏輯分析 上門家政小程序主要涉及用戶端和服務端兩大部分。用戶端需要實現服務瀏覽、預約下單、訂單跟蹤等功能;服務端則要處理訂單管理、服務人員管理、數據統計等任務。以下是詳細的功能模塊分析: 用戶注冊與登錄:用戶通過手機號或第三…

LLVM學習-DragonEgg工具

2.2.2 使用DragonEgg和LLVM工具了解編譯流程 如果希望看到前端的運行情況,請使用-S -fplugin-arg-dragonegg-emit-ir標志,該標志將產生以LLVM IR代碼表示的人工可讀文件。 一旦編譯器將程序轉換為IR則停止編譯,并將內存中的表示內容寫入磁盤的…