360度カメラのRICOH THETAを入手したので、ラズパイから操作してみました。
GithubにあるライブラリでUSBから簡単に操作できます。
インストール方法から実行例含めて紹介します。
ラズパイでRICOH THETAをUSBから操作するメモ
古いタイプですが、360度カメラのRICOH THETA Vを入手しました。
まずは基本的な操作方法を勉強するために、ラズパイ経由で触ってみました。
メモレベルですが、忘備録として残しておきます。
RICOH THETA V
ちょっとした諸事象で360度カメラが欲しくなり、(中古ですが)入手しました。
RICOHのTHETA Vです。
決めた理由は色々なAPI・ライブラリが公開されていて、色々遊べそうだったためです。
本来は最新のTHETA Xが欲しかったのですが、10万以上するので購入を諦めました。
ただ今回紹介する手順は基本的なカメラ操作のため、THETA Xでも対応可能だと思います。
GitHubなどの手順をテストしただけ。
今回の手順は主に下記GitHubを参考にさせていただきました。
この場を借りてお礼申し上げます。
https://github.com/codetricity/libptp2-theta
また下記の京都大学のpdfも参考になりました。(2016年と若干古かったですが…)
http://www.cc.kyoto-su.ac.jp/~kano/pdf/course/SP5.pdf
両方でmakeしてインストール試してみましたが、どちらとも動きました。
前者のGitHubの方が最近書かれていて、最新のTHETAを考慮されていました。
書いている方を見ると、RICOH公式のYoutube動画をアップしている人のようです。
RICOH公式のUSB手順は若干古かった
RICOH公式のGitHubを参照する方は下記をお願いします。
https://github.com/ricohapi/awesome-theta
(ただUSBに関してはライブラリが古いままのが多く、手順が分かりづらかった…)
実施している内容は前述しているGitHubと変わりません。また公式のYoutubeもありました。
動画だと古いVerのlibusbなどが必要な手順で、特に無理して真似する必要はないと思います。
libusbがベース
今回はTHETAをUSBから操作します。
USBデバイスをC言語で使える「libusb」をベースにされていました。
https://github.com/libusb/libusb
libuvc
「libuvc」のライブラリを使った操作例も公式から紹介されていました。
https://github.com/libuvc/libuvc
libuvcのGitHubの記載を見ても、下記libusbがベースということ。
ptpcam
今回主にテスト実行したのは「ptpcam」というライブラリです。
https://github.com/leirf/libptp
こちらのptpcamも使うにはlibusbが必要ということ
ラズパイにTHETAを動かすライブラリを入れてみる
ラズパイに360度カメラのTHETAを接続して、ライブラリをインストールしていきます。
使用したラズパイの環境はOSをインストールし終わった、デフォルト状態です。
ラズパイのOSは64bit版
使用したラズパイ4のOSは64bit版です。
ラズパイにTHETAを接続
ラズパイにTHETAを接続します。
dmesgでログを見ると、問題なく接続できました。
1 2 3 4 5 6 7 |
[ 68.684897] usb 1-1.3: new high-speed USB device number 3 using xhci_hcd [ 68.786118] usb 1-1.3: New USB device found, idVendor=05ca, idProduct=0368, bcdDevice= 1.00 [ 68.786130] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 68.786137] usb 1-1.3: Product: RICOH THETA V [ 68.786144] usb 1-1.3: Manufacturer: Ricoh Company, Ltd. [ 68.786150] usb 1-1.3: SerialNumber: [ 74.117256] usb 1-1.3: reset high-speed USB device number 3 using xhci_hcd |
特に何もしなくともファイルマネージャーが開き、保存していた画像ファイルが確認できます。
ライブラリをmake・インストールする
先述した下記GitHubとPDFの手順を真似て、make・インストールしました。
https://github.com/codetricity/libptp2-theta
http://www.cc.kyoto-su.ac.jp/~kano/pdf/course/SP5.pdf
GithHubの方にも記載されていましたが、一回目のmakeでは上手くいかず。
「autoreconf -i」以降を進めると、無事インストールまで出来ました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
sudo apt install build-essential sudo apt install libtool sudo apt install automake sudo apt install pkg-config sudo apt install subversion sudo apt install libusb-dev git clone https://github.com/codetricity/libptp2-theta cd libptp2-theta/ ./configure make autoreconf -i ./configure automake make sudo make install sudo ldconfig -v |
ラズパイからUSB経由でTHETAを動かす
ラズパイに360度カメラのTHETAを接続すると自動的にマウント(mount)します。
この状態で操作しようとすると、セッションが開けないとエラーが出ます。
1 2 3 4 5 |
pi@raspberrypi:~ $ theta --info THETA Device Info ================== ERROR: Could not open session! |
THETAをunmountする
今回は簡単にファイルマネージャーからunmountします。
右クリックで「Unmount Volume」で対応します。
unmount後はUSBからTHETAを制御できるようになります。
ptpcam(theta)でカメラ情報を読み取る
今回参考にしたGitHubだと「theta」というコマンドが使えます。
名前が異なるだけで、実際にはptpcamを実行しています。
(ちなみにPDFの手順に沿ってインストールしたらptpcamとなります)
ヘルプを確認したかったら「theta -h」です。
カメラ(デバイス)情報を読み取りしたい場合は、「theta -i」です
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberrypi:~ $ theta -i THETA Device Info ================== Model: RICOH THETA V manufacturer: Ricoh Company, Ltd. serial number: '00119628' device version: 1.00.2 extension ID: 0x00000006 image formats supported: 0x00000004 extension version: 0x006e |
省エネモードからwakeup→撮影まで
GitHubに記載されている手順そのままですが、撮影まで流れを試してみます。
まずはTHETAを省エネモードからWakeUP。カメラのLEDランプが青色に点灯します。
1 2 3 4 5 |
pi@raspberrypi:~ $ theta --set-property=0xD80E --val=0x00 Camera: RICOH THETA V 'UNKNOWN' is set to: 1 Changing property value to 0x00 [(null)] succeeded. |
カメラ撮影モードにします。カメラマークが青く光ります。
1 2 3 4 5 |
pi@raspberrypi:~ $ theta --set-property=0x5013 --val=0x0001 Camera: RICOH THETA V 'Still Capture Mode' is set to: [Normal] Changing property value to 0x0001 [(null)] succeeded. |
あとは撮影(キャプチャ)するだけです。
1 2 3 |
pi@raspberrypi:~ $ theta --capture Initiating capture... |
RICOHのUSB-APIのリストを見れば、他にも色々自由にモードなど含めて設定できます。
https://github.com/ricohapi/theta-api-specs/blob/main/theta-usb-api/README.md
ファイルリストを確認・保存
THETAに保存されているファイルを「theta -L」で確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 |
pi@raspberrypi:~ $ theta -L Listing files... Camera: RICOH THETA V Handler: Size: Captured: name: 0x0000007f: 1348748 2024-01-06 13:31 R0010103.JPG 0x00000080: 1354197 2024-01-06 13:32 R0010104.JPG 0x00000081: 2098192 2024-01-07 01:31 R0010105.JPG 0x00000082: 2096514 2024-01-07 01:31 R0010106.JPG 0x00000086: 2210478 2024-01-07 01:36 R0010107.JPG 0x00000087: 2284084 2024-01-07 01:36 R0010108.JPG 0x00000088: 2355255 2024-01-07 01:36 R0010109.JPG |
ファイルを指定(もしくは全てに)して、ラズパイに保存できます。
「theta --get-file=HANDLE」「theta --get-all-files」
カレントディレクトリにTHETAから転送されます。
1 2 3 |
pi@raspberrypi:~ $ theta --get-file=0x00000088 Camera: RICOH THETA V Saving file: "R0010109.JPG" is done. |
ラズパイ上で開くと、問題なく360度カメラの画像が確認できます。
(下記は例です。近くの川沿いの道を撮影したもの)
まとめ
360度カメラのRICOH THETAを入手したので、ラズパイから操作してみました。
GithubにあるライブラリでUSBから簡単に操作できます。
もしラズパイで360度カメラを操作してみたいという方は参考にしてみてください。
コメント