英国のヒップホップグループ、ザ・ストリーツは「とても簡単なはずだった」と印象的に歌っていましたが、レスターに「見て」もらい、物体に向かって進んでもらうという課題に取り組んだとき、私たちもそれを期待していました。
結局のところ、既製のロボットキットは無数にあり、Raspberry Pi は表向きは子供たちにコンピューターに興味を持たせるためのツールですよね?
右?
レスターが出発準備完了:レジスターのビールボットに名前がついた
続きを読む
Raspbianを新規インストールするだけで、Piで標準カメラを起動して動作させるのは至って簡単でした。数行のPythonコードとPiCameraライブラリのインポートだけで、LESTERの瞬きしない片目が動き出しました。
LESTERチームは、OpenCVを使ってPFYに付けられたタグをLESTERが識別・追跡できるようにしようと計画していました。cv2apt-get
ライブラリをインポートして、すぐに使い始めるにはSwiftだけで十分だったはずです。
残念ながら、そうはなりませんでした。「Import Error: No module named cv2
」という役立つメッセージを、必要以上に長い間見つめた後、少し調べてみたところ、当時実行していたPython 3.0がリポジトリに適しておらず、Python 2.7が必要なことが判明しました。
今思えば、Python 2.7に戻す方法を見つけておくべきだったかもしれないが、そうはしなかった。これはLinuxで、ソースコードは にあるgit
ので、Raspberry PiでOpenCVコードを再コンパイルすれば、すべてがうまくいくはずだ。
このテーマに関する無数の役立つガイドを携え、少しの試行錯誤の後にすべての依存関係を追跡した後、「make」を押して待ちました...
そして待った...
かなり時間がかかり、後でマルチスレッドを使えば時間を節約できたことが分かりました。とはいえ、CPUを何時間も駆使した時間を有効活用し、大量のバーベキューソーセージと、とびきり美味しいビールを堪能しました。
不足していたシンボリックリンクを修正したところ、元のエラーは解消されました。その代わりに、OpenCVのカメラキャプチャ関数に関連する多数の新しいエラーが発生していました。プログラマーの頼みの綱であるStackOverflowによると、解決策はカメラが何らかの理由で壊れていたことだったようです。
しかし、PiCamera を再度起動すると、LESTER の目は完璧に機能していることがわかりました。
そこで、PiCameraでキャプチャした画像をOpenCVが理解できる形式に変換するというアイデアを思いつきました。その方法は以下の通りです。
ストリーム = io.BytesIO() カメラ.キャプチャ(ストリーム、フォーマット='jpeg'、use_video_port=True) イメージ = np.fromstring(stream.getvalue()、dtype=np.uint8) フレーム = cv2.imdecode(image,1)
Range Detector ユーティリティを使用して少し設定した後、LESTER はきれいな明るい赤いボールを追跡できるようになりました。
YouTubeビデオ
LESTER チームのメンバーであり、ひげを生やしたお調子者のマーク・ウィーラーは、オペル・モンツァの錆取りの休憩中に、LESTER の目に向かってボールを振り回しています...
光学系が動作したので、まずはモーター制御を試してみました。Raspberry Piと外部を接続するGPIOは、OpenCVを使うものよりもずっと使いやすく、数分後にはLESTERはボールの動きに合わせてモーターを左右に動かすことができました。
次のステップは、LESTER が PFY に激しく衝突するのを阻止するための近接検出機能を追加し、プロトタイプが回転できることを実証できるようにアセンブリ全体をフレームに取り付けることです。
レスターが服を脱ぐ…写真: エル・レグ
そうすれば、最も驚くべき方法で物事を拡大し始めることができます。®