変わりモノがいい!

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

混迷の末にやっとたどり着きました。

混迷の極みです。

いや~悩みました。
ここまで悩むとは思いませんでした。
人間界でも相性の問題はありますが、アプリ界の相性の問題は融通が利かないので人間界以上に厄介です。
この数日、相性が悪くない組み合わせを探すことに全力を傾けてきました。
毎日毎日アプリ間の衝突、クラッシュの繰り返しで、衝突が起きない組み合わせを探していました。
正直なところくたびれました。

f:id:ken2017:20201124110556p:plain

衝突するアプリはこれら。
Raspberry PiのOS:Raspbian Buster、Raspbian Stretch、Ubuntu Mate 18.04
Python      : 2.7、3.5、3.7
OpenCV     : 2、3
ROS      :ROS1 kinetic、ROS1 melodic、ROS2
Adeept AWR   :メーカ標準アプリ(Python3.7ベース)
この4つのアプリのバージョンの組み合わせによってはインストールさえできませんでした。
場合によっては、インストールは無理やりできてもsyntaxエラーや他のエラーで止まりました。
昨日やっと、衝突を回避したパッケージの組み合わせにたどり着けました。
100点ではありませんが、前には進めそうです。

当初の希望の組み合わせは、これ

当初、作りたかった組み合わせはコレです。
Raspberry Pi Raspbian Buster
Python 3.7
OpenCV 3
ROS1 kinetic
Adeept AWR
ところが、これでは上手くいきませんでした。
これは、過去の記事にも書きましたが、BusterとOpenCVとROSの三つ巴の衝突でしたた。
こちらをたてれば、あちらがたたず、でした。
この結果、Busterを諦めました。

次に狙った組み合わせはこれ

Ubuntu Mate 18.04
Python2.7(Ubuntuのパッケージに入っていた)
OpenCV 3
ROS1 melodic
Adeept AWR
この組み合わせでは、Ubuntu Mate 18.04とROS1 melodicまでのインストールは出来ました。
ここでAdeept AWRのソフトをインストールするも入っているのがPython2.7でありAWRが前提にしているのが3.7なのでsyntaxエラーなどが発生しました。
幾つかには対応したもののOpenCVへの対応も壁が高く断念。

今回の組み合わせはこれ

Raspberry Pi Stretch
Python2.7と3.5(Stretchに標準で入っている)
OpenCV 3
ROS1 kinetic
Adeept AWR
今回はインストールの順番も手戻りによる被害が小さくなるように考慮しました。
まずは、Raspberry Pi Stretchを入れ、Python 3.5を選択し
そしてOpenCV3を入れ(ここでも試行錯誤しました)
Adeept AWRを入れ(Python3.5なのでsyntaxエラー他が出ました)
最後にROS1 kineticを入れました(このときはPython2.7に設定を変えています)。
ROS1 kineticをインストールする際にPythonのバージョンを2.7や3.5に切り替え(切り替えないとエラーが出たので)インストールを進めていましたが最後まで行きつかず、ネットで調べたら当然なのですが、Pythonバージョンを切り替えるとダメと書いてありました。
Pythonは3.6から大幅に変更されており、同じ3系であっても3.5と3.6や3.7は違います。
3.7を使いたかったのですが、stretchに3.7を上手く入れきれませんでした。

www.366service.com

今から考えればやりようがあったかな、とも思います。
AWRをインストールし、動作させ、エラーが出ては対処する、を繰り返しました。
AWRには標準でセットアップ用のコードがありますが、それはPython3.7を前提としているので入れるべきパッケージが違う場合があり問題が複雑になります、というかなりました。
ということで、セットアップ用のコードを使わずにAWR動作用のアプリを動かし、不都合が発生してエラーが出るたびに必要なパッケージを入れていく方法を取りました。
したのパッケージなどが一例です。

pypi.org

これを繰り返すことでstretchに標準で入っている3.5でAdeept AWRが動くようにしました。
syntaxエラーは最低限直し、動かない機能(GPIO)はいつか動かすようにしようと今は機能を切り離しました。
こういう妥協も行いながらパソコンからアクセスしてカメラを含めてAWRを制御できることを確認しました。

f:id:ken2017:20201105090104p:plain

最後の難関がROS1 kineticのインストールです。

最後の難関はROS1 kineticのインストールですが、Raspbian Busterでは使うパッケージの依存関係への対応で多くのパッケージの削除やインストールを行う必要があり、これがBusterを使えない原因になっていました。
今回は下の記事にあるstretch向けの内容を行ってROSのインストールを行いました。

wiki.ros.orgStretchではBusterであったようなパッケージの依存関係への対応に伴う削除/インストール作業を行う必要がないので注意すべきはPythonのバージョンとなります。
最初はPython3.5で進めようとしましたが、パッケージの不整合でエラーがでて断念。
ネットの記事ではできるようなことが書いてあったのですが僕の環境ではできませんでした。

www.it-swarm-ja.tech

ということで、今回はPython2.7でROSをインストールするようにしました。
ちなみにPythonのバージョン切り替えは簡単にできます。
下の記事を参照ください。

www.souichi.club

それにしてもROSのインストールは想像以上に時間がかかりました。
僕の環境では6時間以上かかりました。
6時間以上と書いているのは、6時間目までは確認しましたが、その後、寝ましたのでいつ終わったかが判りません。
今朝眼をさますと無事に終わっていました。
ここまで長くなったのは、迂闊にも最初AWRのアプリを止めるのを忘れておりwebserverアプリが動いた状態でROSのインストールを行ってたことも影響したと思います。
webserverアプリは結構負荷がかかるアプリで、ROSのインストールの使用時間の割合が低い状態になっていました。
これを避けるためにwebserverアプリを停止させました。
まずは、
ps aux
とキーボードから打って動いているアプリを画面に表示させ、そこに表示されているプロセス番号を記憶しておき
sudo kill 停止させたいプロセスの番号
とすれば停止できます。
今朝の画面には以下のような表示があり、終わったよ、と言っていました。

f:id:ken2017:20201125062902j:plain
早速、roscoreと打って動作確認しました。

f:id:ken2017:20201125062956j:plain
やりました、ROSが動きました。
長かった、11月6日にAWRへのROSのインストールを始めて3週間弱たちました。
その間、様々なことをやり、やっと動く状態になりました。
でも100点ではありません。
ROSはpython2.7でインストールしていますが、
AWRはpython3.5で一部機能を停止して動かします。
まずは、この状態で不都合があるかどうかを確認してみます。
不都合がある場合には、下の記事などを参考にしながら仮想環境のもとで両者が上手く動くようにしていきたいと思います。

qiita.com

ということで、今日はここまで。
上手くいったので花火を打ち上げてお祝いです。

f:id:ken2017:20201125064500p:plain

では、また。

 

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