変わりモノがいい!

変わりモノには価値がある・・・ハズ?

JetRacer Pro やっとカメラの画像が写りました。

 それにしても動きません。

マニュアル通りにやっているのですが、動きません。
今回は、OpenCVでハマりました。
JetRacer Proの立ち上げを試行錯誤の中で進めていき、Webによるコントロールのところまできました。
そこでハマったのがOpenCVです。

f:id:ken2017:20210708093104p:plain
OpenCVのバージョンコントロールが上手くいっていませんでした。
それでは今回起きたことを備忘録として記録しておきます。

何が起きたの?

Webによるコントロールに関しては、以下の記事に従って進めました。

www.waveshare.com

python manage.py drive
で動かすのですが、
OpenCV Error:Assertion failed(scn == 3 || scn == 4) in cvtColor
と出てしまいます。
いつものようにネットを調べてみると同じエラーで悩んでいる人がいました。
その記事がコレ。

kobazlab.tech

この記事の中ではパスにミスがある、ということでしたがなんのことか理解できていませんでした。
pythonを起動して、cv2をimportすることもできており、パスにミスって何?って感じでした。
悶々としながら色々と調べていると、次のような記事を見つけました。

denor.jp

この記事に書いていることをやってみればカメラのハードの問題なのかソフトの問題なのかが判りそうです。
ということでやってみました。
ターミナルで以下を入力
ls -al /dev/video0
nvgstcapture
するとちゃんと画像は出てきました。
それがコチラ。

f:id:ken2017:20210708100120j:plain
ちゃんとカメラは写っています。
ハードの問題はなさそうです。
次の問題は、OpenCVですね。
でもOpenCVは問題なくimportされて動いているように見えるし何が問題なのか判らないため、JetRacer Proの関係するソースコードを調べてみました。
結果、gstreamer_pipelineというのがちゃんと動いていないように見えました。
そこでネットを調べてみると次のような記事がありました。

forums.developer.nvidia.com

僕と同じように、nvgstcaptureでは動くが、実際のアプリでカメラが動かないようです。
この記事では、ビルドの問題が指摘されており、
-D WITH_GSTREAMER=ON
を加えてOpenCVを再ビルドし、インストールをし直しました。
でも、上手くいきませんでした。
落ち着いて事実関係を整理していた時、ちゃんと確認ができていないのがパスの関係と気づきました。
そこでHomeディレクトリでpythonを起動してcv2をimportしバージョンを確認すると3.6でした。
あれ?先ほどのインストールしなおしでバージョンは4.1になっているはずなのに何故3.6?と思い、下の記事にあるOpenCVと仮想環境のリンクを作った先であるディレクトリに移動して同じことを確認してみました。

www.waveshare.com

ディレクトリは、
/home/kenji/env/lib/python3.6/site-packages
です。
そこでpythonを起動しcv2をimportしバージョンを確認すると予定通り4.1になっていました。
なんでこうなるの?
上の記事にあるように
ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so
これで仮想環境とOpnenCVはリンクが取れているんじゃないの?
と思ったのですが、実際には仮想環境の
/home/kenji/env/lib/python3.6/site-packages
ここだけでリンクが取れているようでした。
だから下の記事にあるようにパスの問題だということがやっと理解できました。

kobazlab.tech

どうやって解決しようかと悩んだ結果、手っ取り早く.bashrcに記載を入れることとしました。
入れた記載がコレ。
export PYTHONPATH=?home/kenji/env/lib/python3.6/site-packages:$PYTHONPATH
その結果、どの階層からのアクセスでもOpenCVのバージョン4.1をアクセスするようになりました。
でもね、こんなことどこにも書いていないし、これが正しいやり方なのか、何かを間違えたからこの問題が発生し、正しくないやり方で対処しているのかも判らないんですよね。
まあ動きそうなので前に進むことにします。

さて動かしましょう。

パスの設定を終わり再起動して動かしてみました。
結果がコチラ。

f:id:ken2017:20210708103349j:plain

f:id:ken2017:20210708103414j:plain
何だか動いいているようです。
それでは、と、ホストPCのwebから
192.168.1.6:8887
と打ち込むと出てきました。
カメラの映像が写っています。

f:id:ken2017:20210708103554j:plain
やっとここまで来ました。
それでは、と、前進、とやってみましたが動きません。
後退もステアリングも動きません。
もう一つ気になっていたのが、OLEDに何も表示されていません。
どうやら通信が動いていないようです。
今日はこのあたりを調べていこうと思います。
今日はここまで。
それでは、また。

 

プライバシーポリシー お問い合わせ