ぎんてんのロボ工房: 3月 2023    

2023年3月18日土曜日

ロボットの目の研究としてAdafruit Animated Eyes Bonnet for Raspberry Pi Pack - Pi not included 購入

 ロボットの目の研究として

Adafruit Animated Eyes Bonnet for Raspberry Pi Pack - Pi not included 購入

よく液晶ディスプレイを使ってロボットの目の表現されている方が見られます。

すごく印象的で以前から興味があったので、製作されている方に思い切って聞いてみたところ

こういうものに取り組んでみるのがいいよと

「Adafruit Animated Eyes Bonnet for Raspberry Pi Mini Kit」というものを教えて頂くことが出来ました。

自分の知識ではそれを使って製作することなどまだまだ先になりますが、おいおい勉強のつもりでと購入してみました。

分からないところも多いのですが、自分の備忘録としても含めてテスト結果を記述します。


3DPを使って簡易テスト環境製作

Adafruit Animated Eyes Bonnet for Raspberry Pi Pack - Pi not included


まず、これはラズベリーパイと組み合わせて付属の1.54インチディスプレイで人の目を表現するキットです。(ラズパイは付いていません)
変換基板、液晶モニタ二つ、接続ケーブルがセットになっています。
adaruit eyes kit などで検索すると、液晶付属無しもあるので注意が必要です。
液晶付属セットは49.95ドル、液晶とケーブル無し(変換基板のみ)は7.95ドル
また、Adafruitから直接購入でなくともMOUSERでもディスプレー開発ツールとして取り扱いがあります。
(2023/3月現在)
自分はMOUSER経由で購入しました。

Adafruitのオンライン公式マニュアル(英語なので翻訳して読んでます)
を読むと、オプションとしてジョイスティックやセンサーと組み合わせて目の動きを操作することができるようで、コミュニティでサンプル製作を見てもロボットの目というよりは単体でジョーク的な利用を目的としているようです。

このキットはラズパイからの画面出力をGPIO変換基板を通してTFTあるいはIPS、OLEDなどのディスプレイに表示をコピーしています。

左:HDMI
右:付属液晶(取り付けの都合により、左右逆)

ラズパイからHDMIディスプレイに目の動きが表示され、あわせて付属のディスプレイにも目が表示されています。

但し、これから購入をされる方は注意事項もあります。
ラズパイ4の場合はBullseyeが必要なようです。
また、4にしても3でも32ビット版でなければならないと書いています。

私はまだPi4を持っていないのでPi3Bでしか確認できていないのですが、
BullseyeにしてもBusterにしても64ビット版では動作しませんでした(目が起動しない)。

さらに当初Bullseyeで色々設定変更しながら遊んでいましたが、ROSのインストールも試していて、めちゃくちゃになってしまったのでBullseyeの再インストールから実施しましたが何故か目の起動が動作しなくなり
(インストール後の強制アップデートが良くないような気がする)、やむを得ずBusterにグレードダウンしました。
しかもBusterの方が動きが滑らか(Bullseyeの時はカクカクしていた)ということに気が付き、以降のテストはPi3B+、Buster 32ビット デスクトップ版で実施しています。

インストール

※人によってはインストールの前に下の環境設定の理由により、先にWinSCPを入れといた方が良いかもしれません・・

インストールする時に環境の質問がありますが私はPi3なので翻訳により、以下を選択しました。

質問1:2(Pi3なので)




質問2:Y(ライトも試しましたが、画像ファイルの確認がしづらいのであえてこのまま続行)



質問3:3 実機を見て


質問4:Y(ジョイスティック等繋ぐ予定は無いので、必要ないのですが、ESCやCtrl+Cが効かなくなり、試しにフルインストールしてそのままになってます・・・)


質問5:Y (質問4と同様の理由により・・)


質問6:N(これはさすがに必要無いと)



環境設定

ラズパイの電源を入れるとOS起動後、すぐに目の表示となります。

/etcフォルダにあるrc.localの
/boot/Pi_Eyes/fbx2 -o &
cd /boot/Pi_Eyes;python3 eyes.py --radius 240 &
exit 0

で起動をかけて
/boot/Pi_Eyesを読み込みに行っているだけだと思うのですが、
Bullseyeの時はESCで画面終了してデスクトップ表示に戻れていたものがBusterにしてから、終了できなくなりました。
動きが滑らかなのでBusterの方が推奨だと思うのですが、暴走して何のキーも受け付けてくれない(私のラズパイが壊れているだけかも・・・)
電源オフ→電源オン→即暴走→電源オン
これでは全く使い物にならないので再度、OS再インストールして
Eyeアプリをインストールする前にSSHをオンにして、WinSCPをインストールしました。

めんどうですが、終了はコンソールのps auxで毎回サービス番号を確認し、
該当サービスをsudo killして終了しています。

winSCPでサービスオフ

ちなみに起動時のfbx2って何でしょうか?もしかしてこれが起動で64ビットに関係しているのかな?調べても出て来ないので、知っている人が居たら教えてほしいです。



目のサイズ:radius
そのままでは自分の希望とする目ではないので、何をどうすれば何が変わるのかを確認です。
Replacing Everythingの項目にサイズに関わる説明がされてますが、ちょっと自分にはよく理解できないです(汗
なので以下rc.localのradiusの値を試した結果です。
上写真がHDMIの表示、下写真がIPSの表示

radius 240 (標準)
radius 240

radius 120 (縮小)

radius 120

radius 300(拡大)
radius 300

radius 400 (拡大)

radius 400
キャラクター的な目を作るのが目的なので、液晶パネル全面を利用して表示させたいのですが、どうしても表示されない領域があります。
400ピクセルまで拡大した時に影が出来るので表示をコントロールされているのが分かります。
(400ピクセルのHDMIとIPSで影表示が違うのはips液晶が取り付けの再、左右間違ったからです..)

以降は画像イメージは表示サイズを標準の240に戻して実施しています。

/boot/Pi_Eyes/graphics以下のフォルダの画像ファイルを変更してテストです。

WinSCPでラズパイからPCにコピーし、windowsのgimpで画像の色合いを変更し、
再度PCからラズパイに戻してみました。
自分はWinSCPからの管理者権限からでも/boot/Pi_Eyes/graphicsに直接ファイルを送る方法がわからないので、一旦downloadsフォルダに送ってから
ラズパイのターミナルで、sudo pcmanfmコマンドでファイルマネージャを管理者起動してリネームしてgraphicsフォルダに送っています(これも手間ですが・・・)


虹彩ファイル:iris.jpg
なお、写真の撮るタイミングにより瞳孔の大きさは違ってます。

デフォルト
デフォルト

赤く燃える目のイメージ

ベタ白


ベタ黒

強膜ファイル:sclera.png

標準

赤味

ベタ白

ベタ黒


強膜ファイルは境界が難しいようです。
元ファイルの表示が半々でも目に反映されたときは大きく境界が変わってしまうようです。

上記の写真に関して瞳孔の大きさ固定(FalseをTrueに変える)ですが、
自分の場合フルインストールで22-36行の間にありますが、テスト確認の為Falseのまま実施します。

形状変更

次に一旦デフォルトに戻して形状変更の為、元のベクターファイルをテストしてみます。
本来自分で自由な画像を作ることが出来れば良いのですが、そんな能力は無いのでこのキットを利用させて頂いてますが、自分が作りたいのは人の眼というよりはキャラクター的な目に使いたいのでこのままでは利用できません。(汗。

どうやらこのAdafruit Eyes bonnet kitは目をベクターファイルで形成し、それを動作させているようです。
可能な限り自由にカスタマイズしたいので元のベクターファイルのパスを変更した際にどのように変化するのかテストしてみました。

dragon-eye.svg等は複雑な形状なので、シンプルで分かりやすいcyclops-eye.svgをテストとしました。
テストはそれぞれのパス項目を
1 上に引き伸ばす 2下に引き伸ばす 3全体的に上に移動 4全体的に下に移動
5 全体的に拡大 6全体的に縮小
の6項目を行い、それによって実際の表示がどのように変化するか確認してみましたが
項目が多すぎてblog上では見づらいのでアップロードしました。以下リンクです。


lnkscapeが必要な方は以下(;・∀・)

ちなみにワタシ、プログラムのeyes.pyファイルの指定ファイルをeye.svgからcyclops-eye.svgに変更してテストしてますけど、そんなことしなくても
/boot/Pi_Eyes内にcyclops.pyのプログラムありましたね・・・(;・∀・)

ベクターデータの変化一覧を参考にして、影が出来ないように気を付けて最大化してみました。

ベクター最大化

ベクター最大化画像

このままでは眼球っぽいので、先のirisファイル(虹彩)をベタ黒とscleraファイル(強膜)をベタ白に変えて見ました。

マンガっぽく変化

シンプル過ぎてちょっと面白味はなくなってしまったかも知れませんが、キャラによっては
これもまたアリではないかと。
したのうっすらとした影も無くしたいところですし、黒目の部分に変化を付けるなどまだまだ改良の余地はあるとはおもいますが”Adafruit Animated Eyes Bonnet for Raspberry Pi Pack ”このままでもちょっとしたことには使えそうです。