Ender3 + octolaps + 一眼レフでタイムラプス撮影してみた。
3Dプリンターでタイムラプス撮影がしたい!
3Dプリンターの「Ender3 V2」で印刷中にタイムラプス撮影をしたいなぁと思い、
あまっていたRaspberryPi3にOctoPritnを入れて、プラグインの「Octolapse」でタイムラプ撮影をできるようにしました。
一眼レフを使いたいなぁ・・・
手持ちにNikonの一眼レフ「D3300」があるから、これでタイムラプス撮影したいなぁ・・・
調べるとプリンターのX軸にスイッチを取り付けてそれでシャッターを切る方法があるけど、
せっかくOctoPrintで3Dプリンターを制御してるんだからカメラのシャッターもRaspberryPiで制御したいなぁ・・・
Octolapseで一眼レフカメラを制御できる。。。だと!
なんとかOctolapseで一眼レフカメラを制御できないかなぁ、とOctolapseのページを眺めていると、Octolapseのカメラ設定のカメラタイプに外部カメラの項目を発見。
これは!?。。。と思い調べるてみるとなんと一眼レフカメラを制御できることを発見!!
RaspberryPiにgphoto2というアプリを入れることで対応の一眼レフカメラを制御できるらしく、それを利用してOctolapseでは外部カメラとして使うことができるとのことでした。
Octolapseで一眼レフを設定する手順
ここからは、Octolapseで一眼レフカメラを使ってタイムラプス撮影ができるまでの手順を下記の順で記載していきます。
- gphoto2のインストール
- カメラシャッターのスクリプト作成
- Octolapseの設定
※参考サイト:https://github.com/FormerLurker/Octolapse/wiki/V0.4---Configuring-a-DSLR
※前提としてOctoPirintを3Dプリンターに繋げ、OctolapseでRaspberryPiに接続したカメラを使用してタイムラプス撮影ができる状態であることとします。
1.gphoto2のインストール
OctoPrintをインストールしたRaspberryPiにSSH接続をします。
※何も変更していなければユーザー名:pi、パスワード:raspberryになっていると思います。
パスワードは変更していなかったら変えておいたほうが良いでしょう。
次のコマンドを実行します。
$ wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh && chmod +x gphoto2-updater.sh && sudo ./gphoto2-updater.sh
インストールバージョンを聞かれるので「2」で最新の安定バージョンを選んでください。
インストールが完了したらカメラを接続して動作確認を行います。
カメラの接続認識
次のコマンドでカメラがRaspberryPiに接続されているかを調べます。
$ gphoto2 --auto-detect
カメラのシャッター操作
次はシャッターが切れるかを確認します。
$ gphoto2 --auto-detect --capture-image-and-download
撮った写真はRaspberryPiにダウンロードされるのでlsコマンドで保存されているか確認してください。
sudoersの設定
sudoなしでgphoto2を実行できるようsudoersファイルを編集します。
$ sudo visudo
最終行に以下の行を追加します。
# allow 'sudo gphoto2' to run without supplying a password pi ALL = (root) NOPASSWD: /usr/bin/gphoto2
【重要】設定終了後、RaspberryPiを再起動させます。
2.カメラシャッターのスクリプト作成
Octolapseで実行するスクリプトを作成します。
スクリプトの内容は基本的にはgphoto2でカメラのシャッターを切り、RaspberryPiにダウンロードさせるものになります。
以下のパスにファイルを作成してください。
$ cd /home/pi/scripts $ nano take-snapshot.sh
[take-snapshot.sh]
#!/bin/sh # Put the arguments sent by Octolapse into variables for easy use SNAPSHOT_NUMBER=$1 DELAY_SECONDS=$2 DATA_DIRECTORY=$3 SNAPSHOT_DIRECTORY=$4 SNAPSHOT_FILENAME=$5 SNAPSHOT_FULL_PATH=$6 # Check to see if the snapshot directory exists if [ ! -d "${SNAPSHOT_DIRECTORY}" ]; then echo "Creating directory: ${SNAPSHOT_DIRECTORY}" mkdir -p "${SNAPSHOT_DIRECTORY}" fi # IMPORTANT - You must add gphoto2 to your /etc/sudoers file in order to execute gphoto2 without sudo # otherwise the following line will fail. sudo gphoto2 --auto-detect --capture-image-and-download --filename "${SNAPSHOT_FULL_PATH}" if [ ! -f "${SNAPSHOT_FULL_PATH}" ]; then echo "The snapshot was not found in the expected directory: '${SNAPSHOT_FULL_PATH}'." >&2 exit 1 fi
作成したファイルの権限を変更します。
$ chmod +x take-snapshot.sh
作成したスクリプトが正しく動作するか確認します。
$ /home/pi/scripts/take-snapshot.sh 1 1 "" "/home/pi/scripts" "" "/home/pi/scripts/test.jpg"
Octolapseの設定
Octolapseのページを開き[Cameras]をクリックします。
Octolapse設定のCameraタブで[Add Profile...]をクリックし新しいカメラ設定を追加します。
以下のように赤枠の箇所を設定します。
一度テストして正常に終了したらOKです。
まとめ
Octolapseの使い方をまとめた日本語サイトが少なく、一眼レフを使えるように設定する手順をまとめたサイトは私の探した限りなかったので
このサイトが誰かの役に立てたら幸いです。
上記設定では一眼レフで撮った写真はRaspberryPiに保存されてカメラ本体には残らず印刷終了で自動で動画が生成されます。
もし、画像をのこして自分でタイムラプス動画を作成したい場合はgphoto2のコマンドのプロパティを変更してカメラ本体のSDにも保存されるようにすればいいと思います。
Octolapse側の設定を詰めれば単体でもクオリティーの高い動画が作成できると思うの外でも色々とイジって行きたいと思います。