国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Ubuntu18.04 ROS Melodic的cv_bridge指向問題(四種方式,包括opencv4)

這篇具有很好參考價(jià)值的文章主要介紹了Ubuntu18.04 ROS Melodic的cv_bridge指向問題(四種方式,包括opencv4)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

備注:2023.7.4修改,如果是ros空間,可以在工作空間中使用單獨(dú)cv_bridge的方式?。?!比較簡(jiǎn)單,是我目前常用的方式。放在文章最后。


由于ROS Melodic自帶的是Opencv3.2.0,而我自己下載的是opencv3.4.5,所以需要將cv_bridge的指向改為我自己安裝的opencv。

全篇很長(zhǎng),建議看完后操作,不要跟著做。

一開始我參考了這個(gè)博主的文章

Ubuntu18.04 ros-melodic opencv版本沖突問題解決_一抹煙霞的博客-CSDN博客_rosopencv版本

但是在編譯ORB-SLAM3(beta0.4)時(shí)報(bào)錯(cuò),在/usr/lib/x86_64-linux-gnu/中找不到libopencv_core.so.3.4.5、libopencv_imgproc.so.3.4.5和libopencv_imgcodecs.so.3.4.5

于是我在上面博主修改的基礎(chǔ)上做了如下修改:(沒有加入/usr/include)

sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
###作出如下修改
?
if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
  set(cv_bridge_INCLUDE_DIRS "")
  #set(_include_dirs "include;/usr/include;/usr/include/opencv")
  set(_include_dirs "include;/usr/local/lib;/usr/local/include/opencv;/usr/local/include/opencv2;/usr/local/include;")

以及

set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.3.4.5;/usr/local/lib/libopencv_imgproc.so.3.4.5;/usr/local/lib/libopencv_imgcodecs.so.3.4.5")

然后再修改文件

sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridge-extras.cmake
###作出如下修改
set(OpenCV_VERSION 3.4.5)
set(OpenCV_VERSION_MAJOR 3)
set(OpenCV_VERSION_MINOR 4)
set(OpenCV_VERSION_PATCH 5)

?以及

cd /opt/ros/melodic/lib/
sudo gedit pkgconfig/cv_bridge.pc
##做如下修改
Libs: -L${prefix}/lib -lcv_bridge /usr/local/lib/libopencv_core.so.3.4.5 /usr/local/lib/libopencv_imgproc.so.3.4.5 /usr/local/lib/libopencv_imgcodecs.so.3.4.5

?這個(gè)時(shí)候編譯ORB-SLAM3可以通過了,但是運(yùn)行rosrun ORB-SLAM3時(shí)候會(huì)出現(xiàn)段錯(cuò)誤,然后退出。我將所有的cmakelist中的opencv都改成opencv 3.4.5后重新編譯依舊不行。

接著我把他放一邊嘗試使用Vins-fusion,編譯到最后的時(shí)候報(bào)警告

/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.3.4
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_core.so.3.4

同時(shí)rosrun vins_node 運(yùn)行閃退,根據(jù)警告是動(dòng)態(tài)連接庫(kù)libcv_brdge.so問題

然后我在vins_fusion的catkin_ws文件夾中運(yùn)行查看連接庫(kù)

ldd devel/lib/libvins_lib.so | grep opencv

輸出:

	libopencv_core.so.3.4 => /usr/local/lib/libopencv_core.so.3.4 (0x00007f7b2d122000)
	libopencv_imgproc.so.3.4 => /usr/local/lib/libopencv_imgproc.so.3.4 (0x00007f7b2a304000)
	libopencv_imgcodecs.so.3.4 => /usr/local/lib/libopencv_imgcodecs.so.3.4 (0x00007f7b29a6e000)
	libopencv_video.so.3.4 => /usr/local/lib/libopencv_video.so.3.4 (0x00007f7b27ce3000)
	libopencv_calib3d.so.3.4 => /usr/local/lib/libopencv_calib3d.so.3.4 (0x00007f7b27955000)
	libopencv_imgcodecs.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2 (0x00007f7b262d8000)
	libopencv_imgproc.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2 (0x00007f7b25a7f000)
	libopencv_core.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2 (0x00007f7b25644000)
	libopencv_features2d.so.3.4 => /usr/local/lib/libopencv_features2d.so.3.4 (0x00007f7b21d25000)
	libopencv_flann.so.3.4 => /usr/local/lib/libopencv_flann.so.3.4 (0x00007f7b21acd000)

可以看到其中有三個(gè)連接庫(kù)出問題了。

cd /opt/ros/melodic/lib/
ldd libcv_bridge.so | grep opencv
##如下輸出
	libopencv_imgcodecs.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2 (0x00007fd8d2bed000)
	libopencv_imgproc.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2 (0x00007fd8cfac7000)
	libopencv_core.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2 (0x00007fd8ce7a9000)

原來是這個(gè)出問題了,我只好下載了vision_opencv,鏈接如下:

GitHub - ros-perception/vision_opencv

進(jìn)入cv_bridge后

mkdir build && cd build
cmake ..
make
cd devel/lib/
sudo rm /opt/ros/melodic/lib/libcv_bridge.so
sudo cp libcv_bridge.so /opt/opt/ros/melodic/lib/

終于一切恢復(fù)了正常,經(jīng)過了一番折騰,不知道后續(xù)是否還會(huì)有問題。所以我還是用源碼的cv_bridge

cd cv_bridge/build/
sudo make install

然后將vins和orb中需要opencv的CMakerlist中在find_package之前加入

set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)

然后重新編譯工程,完美通過。使用也沒問題。然后刪除原來的cv_bridge

sudo apt remove ros-melodic-cv-bridge

然后使用ORB和vins沒有問題。

后記:

后來我嘗試不做上述修改(刪除ros重新裝了,好累。。。),然后刪除了工程中的build文件夾重新嘗試了一次,編譯ORB-SLAM3的ros包時(shí)候報(bào)錯(cuò)

[rosbuild] Building package ORB_SLAM3
Failed to invoke /opt/ros/melodic/bin/rospack deps-manifests ORB_SLAM3
[rospack] Error: package 'ORB_SLAM3' depends on non-existent package 'cv_bridge' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'


CMake Error at /opt/ros/melodic/share/ros/core/rosbuild/public.cmake:129 (message):
  

  Failed to invoke rospack to get compile flags for package 'ORB_SLAM3'.
  Look above for errors from rospack itself.  Aborting.  Please fix the
  broken dependency!

Call Stack (most recent call first):
  /opt/ros/melodic/share/ros/core/rosbuild/public.cmake:207 (rosbuild_invoke_rospack)
  CMakeLists.txt:4 (rosbuild_init)

大概就是找不到ros的cv_bridge,也找不到我安裝的cv_bridge,我也嘗試rosdep update,但是沒什么用,所以我將在/usr/local/share/中的cv_bridge文件夾復(fù)制到/opt/ros/melodic/share/中,然后再次./build_ros.sh就可以通過了。

分析:我覺得一開始我使用的是原本的cv_bridge來進(jìn)行編譯的,經(jīng)過修改后可以使用,然后我將cv_bridge用apt刪除后,系統(tǒng)自動(dòng)在/usr/local/中找到了我安裝的cv_bridge,所以也可以正常使用。但是后來嘗試從新開始,ros中不做修改,編譯ORB-SLAM3會(huì)有警告,說明用的還是ros安裝時(shí)候自帶的cv_bridge,刪除自帶的以后編譯又找不到我自己安裝的,就會(huì)報(bào)找不到cv_bridge,這個(gè)時(shí)候我把我安裝的cv_bridge復(fù)制到ros中就可以編譯通過了。

總結(jié)方法:

1、修改ros的cv_bridge

2、不刪除原來的cv_bridge,安裝源碼的cvbridge,然后在cmakelist中修改,編譯完成后apt刪除原來的bridge。

3、刪除原來的cv_bridge,安裝源碼bridge,然后cmakelist中修改,并復(fù)制/usr/local/share中的bridge到ros路徑中(上面有寫)。


因?yàn)閛pencv和cv_bridge指向的問題,如果是一個(gè)ros工程,有一個(gè)ros空間,那么我們可以下載cv_bidge到工作空間的src文件夾中。其中opencv3用melodic,opencv4用noetic。一個(gè)工程一個(gè)cv_bridge(井水不犯河水)

GitHub - ros-perception/vision_opencv

1、為了防止沖突將cv_bridge下 CMakeLists.txt 文件中 project 名稱修改為 my_cv_bridge:

project(my_cv_bridge)
修改:
find_package(OpenCV 4.2.0 QUIET)
并修改 package.xml 中包的名稱:
<name>my_cv_bridge</name>

2、編譯cv_bridge

到工作空間的根目錄,執(zhí)行?catkin_make

可能會(huì)報(bào)錯(cuò):

Could not fild the following Boost libraries:
boost_python37

解決:

修改cv_bridge的CMAKELIST中
...
if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
# Debian Buster
find_package(Boost REQUIRED python36)
...

還有錯(cuò):

/usr/include/python2.7/numpy/__ multiarray_api.h:1537:144:error:return-statement with ∩o
value,in function returning 'void*' [ -fpermissive ]

解決:

修改 cv_bridge/src/module.hpp 文件下
void* do_numpy_import()函數(shù)改為:
static void do_numpy_import( )
{
    import_array( );
}

編譯通過了。

3、使用

在你的工程cmakelist中
find_package(my_cv_bridge)


同時(shí)修改 package.xml 文件:
...
<build_depend>my_cv_bridge</build_depend>
...
<exec_depend>my_cv_bridge</exec_depend>
...

再次編譯即可了。文章來源地址http://www.zghlxwxcb.cn/news/detail-605273.html

到了這里,關(guān)于Ubuntu18.04 ROS Melodic的cv_bridge指向問題(四種方式,包括opencv4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Ubuntu18.04LTS離線安裝ROS Melodic(解決rosdep init與rosdep update問題)

    Ubuntu18.04LTS離線安裝ROS Melodic(解決rosdep init與rosdep update問題)

    因?yàn)楣菊{(diào)試電腦無法連接互聯(lián)網(wǎng),所以安裝 ROS 很讓人頭疼。但安裝 ROS 無非就是安裝一些 deb 包與其對(duì)應(yīng)的依賴,既然這樣只要下載好需要的 deb 包,再離線安裝就可以。在聯(lián)網(wǎng)電腦上使用 apt install 安裝 ROS 時(shí)候,會(huì)在 /var/cache/apt/archives/ 下保存下載的安裝包和依賴包,但如

    2024年02月09日
    瀏覽(18)
  • Ubuntu18.04+ros-melodic Fast-lio2安裝與實(shí)物運(yùn)行【速騰16線+imu】

    Ubuntu18.04+ros-melodic Fast-lio2安裝與實(shí)物運(yùn)行【速騰16線+imu】

    對(duì)應(yīng)使用方法: 速騰16線激光雷達(dá)(RS-Hellos-16P)在windows與ubuntu18.04下的調(diào)試與點(diǎn)云數(shù)據(jù)格式轉(zhuǎn)換(pointclould2-->laserscan)_百川01的博客-CSDN博客使用2D雷達(dá)laser+imu實(shí)現(xiàn)cartographer實(shí)時(shí)建圖_百川01的博客-CSDN博客 參考鏈接:使用速騰雷達(dá)32線Helios和fast-LIO2算法建圖(一)_32線雷達(dá)數(shù)

    2024年02月16日
    瀏覽(159)
  • Ubuntu18.04 ROS melodic環(huán)境下,通過Gazebo軟件仿真SLAM算法的學(xué)習(xí)(gmapping/karto/cartographer/hector)

    Ubuntu18.04 ROS melodic環(huán)境下,通過Gazebo軟件仿真SLAM算法的學(xué)習(xí)(gmapping/karto/cartographer/hector)

    目錄 一?環(huán)境場(chǎng)景搭建world 1.下載insert插件(該插件下會(huì)提供一些建好的場(chǎng)景,也可不下載) 2.環(huán)境搭建(自建) 3.保存環(huán)境 4.配置修改 5.啟動(dòng)環(huán)境 二?機(jī)器人模型URDF 1.模型創(chuàng)建的文件書寫規(guī)范 2.檢查文件格式是否正確 3.啟動(dòng)模型 三?機(jī)器人在場(chǎng)景中運(yùn)動(dòng) 1.機(jī)器人放在場(chǎng)景中

    2024年02月04日
    瀏覽(22)
  • ubuntu18、20 cv_bridge 與自帶opencv版本沖突問題

    ubuntu18、20 cv_bridge 與自帶opencv版本沖突問題

    背景: nvidia tx2、xvaier 裝機(jī)自帶 ubuntu18 + opencv4? 后來我們會(huì)安裝melodic的ros,ros中的cv_bridge 默認(rèn)cv版本是3.2.0 編譯帶cv_bridge的代碼時(shí),會(huì)報(bào)錯(cuò)會(huì)崩潰,因?yàn)榘姹緵_突了 為了解決該問題, 行之有效的一種解法是重新安裝 cv_bridge,使其兼容opencv 4 安裝cv_bridge with opencv4 1、git clo

    2024年02月07日
    瀏覽(18)
  • 【EHub_tx1_tx2_A200】Ubuntu18.04 + ROS_ Melodic + 銳馳LakiBeam 1L單線激光 雷達(dá)評(píng)測(cè)

    【EHub_tx1_tx2_A200】Ubuntu18.04 + ROS_ Melodic + 銳馳LakiBeam 1L單線激光 雷達(dá)評(píng)測(cè)

    ????????大家好,我是虎哥,最近這段時(shí)間,又手欠入手了銳馳LakiBeam 1L激光雷達(dá),實(shí)在是性價(jià)比太優(yōu)秀,話說,最近激光雷達(dá)圈確實(shí)有點(diǎn)卷。銳馳官網(wǎng)的資料已經(jīng)很豐富,我這里總結(jié)一下自己的簡(jiǎn)單測(cè)試經(jīng)驗(yàn),分享給大家。 ?????????LakiBeam1L是銳馳智光面向中低速場(chǎng)

    2024年02月03日
    瀏覽(38)
  • ubuntu20.04安裝opencv 3.2.0以及cv_bridge踩坑記錄

    ubuntu20.04安裝opencv 3.2.0以及cv_bridge踩坑記錄

    本次安裝是在我的雙系統(tǒng)下安裝的,不同ubuntu版本或者不同硬件平臺(tái)情況也許會(huì)有所不同,僅供參考。 第一步: 我采用的是github官方代碼倉(cāng)庫(kù)下載安裝的方式,下載的是3.2.0版本(其余版本安裝過程類似) opencv官方鏈接 第二步:安裝依賴項(xiàng) 值得一提的是,在此處我遇到過

    2024年02月04日
    瀏覽(26)
  • 解決ROS的cv_bridge與自己安裝的opencv的版本沖突的問題

    如果用ROS的topic傳輸圖片,需要用到cv_bridge,這是個(gè)ros自帶的opencv中的庫(kù),如果此時(shí)項(xiàng)目中引用了自己安裝的opencv,自己安裝的opencv會(huì)與ros自帶的opencv中的cv_bridge沖突。編譯時(shí)彈出 warning: libopencv_imgproc.so.407, needed by /usr/local/lib/libopencv_features2d.so.4.7.0, may conflict with libopencv_imgp

    2024年02月03日
    瀏覽(24)
  • Ubuntu18.04安裝ROS

    Ubuntu18.04安裝ROS

    目錄 一、安裝ROS 1、ROS簡(jiǎn)介 2、安裝ROS ?二、ROS初步使用 1、小海龜 ?2、控制小海龜走圓形 (1)、創(chuàng)建工作空間 ?(2)、編譯工作空間 ?(3)、配置環(huán)境變量 ?(4)、畫圓程序的編寫 ?(5)、控制小海龜走圓形 ?三、總結(jié) ? 機(jī)器人操作系統(tǒng)(Robot Operating System, ROS)是一個(gè)應(yīng)

    2024年02月14日
    瀏覽(27)
  • ubuntu18.04安裝ROS講解

    ubuntu18.04安裝ROS講解

    首先,ubuntu18.04對(duì)應(yīng)的ROS版本為melidic。 打開\\\"軟件與更新\\\"對(duì)話框,把可從互聯(lián)網(wǎng)下載下的幾個(gè)框框都打勾。如圖: 更換安裝源 官方默認(rèn)安裝源不穩(wěn)定,常出現(xiàn)在安裝過程中網(wǎng)絡(luò)超時(shí)等報(bào)錯(cuò),現(xiàn)使用清華的安裝源: 或者中科大安裝源: 輸入代碼后,按回車,輸入管理員密碼即

    2023年04月24日
    瀏覽(41)
  • ROS的安裝【Ubuntu18.04版本】

    ROS的安裝【Ubuntu18.04版本】

    ROS是機(jī)器人學(xué)習(xí)所需要用到的平臺(tái)軟件,記錄一下裝的過程,為下一次重裝節(jié)省一下時(shí)間嘻嘻。 目錄 一.設(shè)置sources.list 二.設(shè)置密匙 三.安裝? ?四.配置環(huán)境? ?五.檢測(cè)ros是否安裝成 【在設(shè)置密匙的時(shí)候可能會(huì)遇見以下問題,沒有找到有效的openPGP數(shù)據(jù)】? 【解決方案如下】?

    2024年02月02日
    瀏覽(51)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包