成り行きで引き受けた「大人の自由研究」。ラズパイを使って『スズメ激写装置』をつくるというテーマのもと見切り発車でスタートしたが、あっさりと動体検知撮影を実現した。残るは仕上げの部分、起動プロセスの自動化や写真の解像度をどうするか。肝心の被写体が不在のまま、作業は進む。

Motionの設定

I氏:「さあ、いよいよ大詰めですね」
海上:「環境設定に関してはそうですけど、箱はドリキャスのままですよ?」
I氏:「箱とか飾り付けは好みの問題だから、いいんじゃないですかね」
海上:「もうチョイ本格的に仕上げたかったんですけど」
I氏:「スズメを撮影できれば企画的にはOKかな、と。そこ、押さえてますよね?」
海上:「……」
I氏:「おいおい……」

さて、動体検知撮影システム「Motion」の設定である。まずは、/etc/init.d/motion(Motionの起動時に参照される設定ファイル)をnanoで開き、59行あたりにある「--chuid motion」の部分をDELキーで削除、Control-Xを押して上書き保存しよう。なお、カーソル位置の行番号は、Control-Cを押せば画面下部に表示される。

$ sudo nano /etc/init.d/motion

管理者権限で起動したnanoで/etc/init.d/motionを開き、赤枠で囲まれた部分を削除して上書き保存する

次に、Motionをデーモン(システムのバックグラウンドで稼働するプログラム、「サービス」と同義)として作動させるための設定を行う。nanoで「/etc/default/motion」を開き、「start_motion_daemon=no」の「no」の部分を「yes」に書き換え、Control-Xで上書き保存すれば完了だ。

$ sudo nano /etc/default/motion

「no」を「yes」に変更して上書き保存する

続いては、Motionの環境設定を。設定ファイルは「/etc/motion/motion.conf」、これもやはりnanoで開き作業を行う。主要な変更点を表1にまとめたので、参考にしてほしい。行番号はControl-Cをタイプし、画面下に「Line 11/638 (1%)」などと表示される情報から確認できる。

肝心の解像度だが、利用するWEBカメラにより設定できる値が異なる。第2回で選定した「iBuffalo BSW32KM04WH」に関していえば、指定した値に近い解像度を適用する仕様のようで、width=800/height=400のとき640×360、width=1200/height=800のとき1280×720、width=1280/height=960のとき1280×720という解像度が適用された。個人的には、動体検知という目的に照らすと640×360か640×480がちょうどいいと考えるが、いかがだろう。

$ sudo nano /etc/motion/motion.conf
Motionの撮影にかかわる主要な変更点
行番号 変更前(初期値) 変更後 概要
11 daemon off daemon on 自動起動をオン
70 width 320 width 640 解像度(水平)
73 height 240 height 480 解像度(垂直)
77 framerate 2 1秒間に撮影する枚数
153 threshold 1500 動体検知のしきい値。このピクセル数に変化が生じた場合撮影を行う
282 ffmpeg_video_codec swf ffmpeg_video_codec mpeg4 動画フォーマット
※アップデートなどの理由により行番号が前後に変更される可能性あり

これで「sudo service motion start」を実行すれば、新しい設定でMotionが動作を開始する。ただし、毎回実行するのは手間がかかるため、insservコマンドを利用してシステム起動時に自動実行されるサービスとして登録しておこう。これで、Raspberry Piに電源を投入すれば自動的にMotionが起動し、WEBカメラで動体検知撮影できるようになるはずだ。

$ sudo insserv motion
$ sudo service motion start

ついにアイツが飛んでくる……大団円なるか?

待てど暮らせど来ぬ鳥を……と口ずさみながら待つこと6日。昼夜通して待ち続けると、手持ちぶさたで宵待草ならぬ酔待草になってしまいそうだが、スズメは夜間に行動しない。だから日没後にはシステムをシャットダウンしてベランダから撤退、バッテリーを充電して翌朝に備えるというスケジュールで進行した。

それにしても、スズメは来ない。肝心なときにかぎって来ない。8月も残すところ10日となり、このままでは夏休みの自由研究という企画が台無しになってしまう。とはいえ、ベランダに餌を撒いても効果はないし、鳥獣保護法により許可なく野鳥を捕獲することは禁止されているしで、打つ手も尽きた。

そんなとき、予想外の出来事が。いればうっとうしいがいなけりゃ寂しい夏の風物詩「セミ」がやってきたのだ。まさに奇跡、いつのまにかカメラに収まっている。企画の目的はあくまでスズメだが、不意にフレームインしてきた物体に反応して自動撮影するという企画趣旨は満たした。セミ、いいじゃないか。いいぞ(「孤独のグルメ」風に)!

スズメは来ないが、セミが来た!

I氏:「なんか、話がうまくないですかね?」
海上:「(ギクッ)」
I氏:「壁にとまるのならともかく、床ですからね。それもカメラの前」
海上:「(ギクギクッ)」
I氏:「動体検知だと、前後の写真も撮影されてますよね。見せてもらえません?」
海上:「……」

セミは動かないが、手の動きに応じて自動撮影されている。動体検知はバッチリだ

I氏:「なんですか、これ。完全なヤラセじゃないですか!」
海上:「黒子が写りこんだとでもいいますか」
I氏:「どう見ても、あなたの手じゃないですか!」
海上:「でも、手の動きはじゅうぶん動体撮影らしさが出ていますよ」
I氏:「セミが動かなきゃ! ひょっとして、手にかけました?]
海上:「いや、木にとまった状態で事切れていたセミを連れ帰りました」 ※実話

近所の公園でセミを捕獲。その瞬間まったく鳴かなかったので不思議に思ったところ、すでに事切れていたのだった(合掌)

I氏:「しょうがないなあ……でも、なにゆえにセミなんです?」
海上:「この企画、今回で終わるじゃないですか」
I氏:「ええ。そこそこ話題になったのは救いですよ」
海上:「話題になれば続編の可能性もなくはない、と」
I氏:「可能性はゼロではないかな」
海上:「まだ先がある終了、完全終了ではない終了、と」
I氏:「はあ」
海上:「……セミ・ファイナル」
I氏:「延々続けて、そのオチですか」
海上:「いやあ、夏らしい企画でビールがうまい。というわけで皆さん、機会があればまたいつか!」

動体検知撮影という目的は達成できたが……こうして、大人の夏は残酷に過ぎていくのだった