2016-05-11 4 views
0

私はこの質問をrosの回答フォーラムに掲載しましたが、まだ回答が得られていないので、ここで私の賭けをヘッジしています。C++ opencv rosの設定翡翠

rosで使用するためにEclipseを正常にセットアップしました。 私はopencvで使用するeclipseを正常にセットアップしました。(すべてのリンカードックを含むC++プロジェクトとして)

opencvで使用するroの設定に関する包括的なドキュメントはまだありません。その使用に関するチュートリアルはたくさんありますが、私はmanifest.xmlとCMakeLists.txtに何を入れるべきか分かりません。

find_package(OpenCVのREQUIRED)

マニフェストで

とCMakeListsがそれぞれ動作しませんが、そして私がしようとする予測可能なエラーメッセージを表示します。

単に置きますrosmakeコマンドを使用してビルドします。パッケージopencv3がpkg-config検索パスに見つかりませんでした。

私はここで何をしていますか?

答えて

1

image_transportを使用して画像トピックを購読し、OpenCVタイプに変換してからOpenCVを直接使用して画像を操作するインディゴパッケージがあります。このシナリオはUsing CvBridge To Convert Between ROS Images And OpenCV ImagesチュートリアルのROSノードの例とほとんど同じです。

ros-indigo-opencv3がシステムにインストールされるとすぐにいくつかの問題があります。 opencv3パッケージは全く別のプロジェクトのために別のパッケージの依存としてインストールされていたので、それを理解するまでには時間がかかりました。

1からhttp://wiki.ros.org/vision_opencv#Using_OpenCV_in_your_ROS_codeでcmakeのスニペットでライン

find_package(OpenCV REQUIRED) 

は常に悪いである、これからは/ opt/ROS /藍でOpenCVの3のインストールを検出します。 OpenCV 2.4.8のシステムインストールに関連しているros-indigo-cv-bridgeとの組み合わせで、コンパイルエラー、リンカエラー、セグメンテーションエラーなど、あらゆる種類の結果が観察されました。

2 - この問題を回避するには、

find_package(OpenCV 2.4.8 EXACT REQUIRED) 

またはROS indigo migration guideで推奨されているように、間接的にOpenCVの正しいバージョンにリンクするcv_bridgeまたはimage_geometryに依存するように、特定のバージョンの要件を追加することです。

もしもcmakeが/ opt/ros/indigoにOpenCV 3をインストールするのを避けても、プリプロセッサは依然として/ opt/ros/include/opencv2(ros-indigo- opencv3)以上の/ usr /いくつかの依存関係が常にインクルードパスには/ opt/ROS /藍が追加されますので、それは、cv_bridge.h:43のよう

#include <opencv2/core/core.hpp> 

を見つけるたびに、今から/ opencv2が含まれます。

私がこれまでに見つかった唯一の回避策は、次のcmakeのスニペットです:

find_package(OpenCV 2.4.8 EXACT REQUIRED) 
include_directories(
include 
${OpenCV_INCLUDE_DIRS}  # /usr/include/opencv;/usr/include 
${catkin_INCLUDE_DIRS}  # contains /opt/ros/indigo/include 
# ...other include directories 
) 

は/ usr/includeにOpenCVの2.4.8ヘッダは、他のパッケージのヘッダの前に並べられていることを確認します。

おそらくROS jadeの状況は同じです。

+0

大丈夫です。私は約30分で家に帰るので、ここで何が起こっているのか見てみよう。私はrosとopencvを完全に再インストールし、desktop-fullにはros-jade-opencv-3が含まれていないことが分かったので、パッケージが存在しないかどうかを確認する予定でした。 – ThaHypnotoad

+0

私は両方をチェックしますので、私は約1時間半で結果や欠如をここに戻すべきです。 – ThaHypnotoad

+0

私はちょうど言及したかった:テキストの壁に感謝します。多くのROSのことについて、密接に関連する文献を見つけるのは非常に難しいことです。そして、今更新。単にrosの3.1ライブラリをインストールしていないと、私のものはダンディーになってしまいました。 (あなたが言及したように、それをインポートするためにcv_bridgeに頼っています)もちろん、私は3.0と3.1で魅力的な新しいサーフェスマッチングのものを使いたいと思ったらどうしますか?それは対処するのが少し難しいようです。この回答を更新としてマークし、別の質問をするつもりです。再度、感謝します。 – ThaHypnotoad

0

申し訳ありませんが、私は実際にマニフェストで何が起こっているかを知るまでこれを正しい答えとして設定しませんが、opencv3の依存関係(opencv2はどちらも同じです)を取り除くと正常に動作します。

しかし、実際には何十年もの経験を持つ人がここで何が起こっているか教えてください。

+0

これで私はこの問題に非常によく似ています。http://stackoverflow.com/questions/29479379/opencv-linking-problems-with-ros – ThaHypnotoad

+0

私はここで何が起こっているのか見るつもりです午前中に。 – ThaHypnotoad