SONY RX0 II は撮影の認識を変える画期的なカメラ

かねてよりコンセプトを絶賛しながらも、結局、購入に至らなかった RX0。

文字通りの手のひらサイズに大型 1 インチセンサーを搭載し、防水性と防塵性と耐衝撃性を備えて、山でも海でも水中でも手軽に高画質な撮影を行える画期的なカメラでした。

ただし性能や携帯性と引き換えにレンズ焦点距離は固定で、撮影距離はテーブルフォトにも向かないほど長く、レンズを絞って明るさを調整することもできない等の不便な点もありました。

個人的には焦点距離ごとにバリエーションを揃えて、24mm 35mm 50mm と好きなものを選べるように商品展開をしてほしかったというのが本音です。

残念ながら RX0 の 35mm 画角版は実現していませんが、バージョンアップによって利便性が大きく向上したこと、絞り値固定などのネガティブな部分が気にならなくなったことなどから DSC-RX0-MK2 こと RX0 II を購入しました。


SONY デジタルカメラ Cyber-shot DSC-RX0

RX0との差異
先代の RX0 と後継機 RX0 II との差異は、撮影距離の短さ、手ブレ補正の有無、可動式の液晶モニタ、本体のみでの4K動画撮影、そして何よりも画像処理エンジン BIONZ X にあります。

操作性をやや犠牲にしてまで小型軽量化を突き詰めた RX0 だからこそ、高速で確実なオートフォーカスが使いやすさを大きく左右します。RX0 II はこの点が非常に優秀なため、実質的にオートフォーカス(AF-S)にフォーカスの選択肢が限られているにもかかわらず、使用中に不便を感じる機会はほとんどありません。

ポケットから取り出して電源ボタンを押した直後から、被写体によっては顔画像認識が働きます。それから僅か5秒以内に自動的に瞳 AF に切り替わることも珍しくありません。

これにチルト式液晶モニタを組み合わせると「自撮り」においては他のカメラの出番がなくなります。じつは RX0 II の購入動機の一つがこの自撮りです。




私個人はカメラの操作に慣れた人に撮ってもらうことが一番だと考えているのですが、私の彼女は見知らぬ他人に写真や動画を撮られることが苦手で、撮影者が友人であっても決して被写体にはなってくれません。

ところが自撮りならば自ら進んでカメラを取り出してくれます。こうなると中望遠の明るい単焦点レンズよりも活躍の場面が多くなるわけです。

自撮りという視点で考えると撮影距離が約 50cm から約 20cm に短縮されたことも見逃せません。この一点により自然風景だけでなく、自撮りにも料理撮影にも作業記録にも実用的に使えるようになりました。

「寄れる」ということ
最近では自転車のライド記録だけでなく、センサや電子部品を使用した工作の作業過程や稼働状態などを動画撮影したいという欲求の高まりも合わさって使用頻度がさらに高まっています。

こうした動画撮影は私が長らくアクションカムを流用してきたところです。しかし、説明目的の動画では超広角の画角は大抵不要であるばかりか、かえって不便な面も大きいので、自撮りから物撮りまで対応できる小型の 4K カメラには毎日のように出番が回ってきます。

画質と操作性
用途と利用頻度の話題はこれくらいにして、ここからは実際の画像出力を見ていきたいと思います。後述する理由もあって RAW イメージ編集は行っておりません。

シャッタースピードは最長で 1/4 秒。そこから 1/5 1/6 1/8 1/10 1/13 1/15 1/20 と段階的に調整することが可能です。なお画角は 24mm 相当。F値は 1/4 から変更できません。

操作性は Sony ILCE αシリーズと似通っているようで再生ボタンやファンクションキーなどに独特の癖があり、設定変更に数秒の手間を要しますので、夜景や水中などのように特殊な場合を除いてはプログラムオートで撮影することが多いです。

DSC08184
ƒ/4.0 7.9mm 1/50 sec ISO 160

DSC08287
ƒ/4.0 7.9 mm 1/50 sec ISO 320

DSC01049
ƒ/4.0 7.9mm 1/4 sec ISO 1250

DSC08234
ƒ/4.0 7.9 mm 1/50 sec ISO 5000

有効画素数 1530万 (総画素数 2100万) とは言え、さすがに1インチセンサを搭載しているだけあってダイナミックレンジや解像度を見ても、日中の画質は同じ SONY の DSC-RX100 シリーズと区別がつかないこともあります。

ちなみに RX100 III も半年間ほど使用してきましたが、いい意味で互いの短所を補い合っているので併用も可能です。

RX0 は起動が速く、防水、防塵で衝撃にも(カメラとしては)強い一方で細かな設定には難がありますし、画角や絞り値に至っては変更ができません。

RX100 (とくにRX100 M3 – M5A) は明るいズームレンズを搭載しており、思い通りの細かい設定や EVF の使用が可能である反面、精密機械としての取り扱いには気を遣います。また起動や設定に時間がかかるため、さくっとスナップ撮影するような使い方にはあまり適していないと感じました。

両者ともに電子水準器を搭載しており、3分割グリッド線も表示可能であるなど、記録だけではなく本格的な作品作りにも使用できるポテンシャルを秘めている点は同様です。

革新性と短所
RX100 を使い込んだ後に RX0 II に触れると、その設計の妙に驚かされます。

35mm フルサイズ基準で考えれば F/4.0 という明るさはズームレンズの開放以外ではそれほど積極的に用いられている印象はあまりないですが、1インチセンサのカメラにおいては被写界深度と暗所での ISO 感度のバランスがよく、晴天時の屋外から水中まで幅広く対応できます。

それに加えて、防水性と耐衝撃性と物理ボタンを備えていることから、運動中に首から下げたり、手に巻きつけたり、ポケットに入れたりしながら携帯でき、汗で濡れた手でも操作が可能です。

抜群の携帯性能を誇る RX100 ですら持ち出せない場面にも対応できる可搬性、Tessar 型レンズと最新の画像処理エンジンゆえの速写性、雨や水や泥のなかでも気にせずに使用できる信頼性を併せ持った RX0 II は他のカメラでは撮れない場面を写すことが可能です。

RX0 II が素晴らしいカメラであることに間違いはありませんが、もちろん改善点がまったく無いわけではありません。

数カ月の試用で感じる不便な点にはピント面の見えづらさ、機能しているのか不明なピーキング、マニュアル撮影時の設定の煩雑さなどがあげられます。

個人的には LINUX の主な RAW 現像ソフト にカメラがサポートされていない (2019年12月現在) ので、ホワイトバランスなどの各変数を自分で調整しないと編集できない点も困りものです。

また静止画のみであれば1日もたせるのに十分なバッテリも動画撮影を行うと勢い良く減っていきますので、予備の充電池を用意しておかなければ少しばかり不安を覚えます。

そして最後に、使えば使うほど画角の異なる RX0 シリーズを複数もちたくなりますので、焦点距離(換算) 35mm や 50mm の RX0 の開発も検討していただけたらと思います。

はじめての Raspberry Pi Zero W セットアップ

カメラモジュールを使用するために Raspberry Pi Zero V1.1 を購入しました。

私にとって初めてのラズパイで不慣れなので、公式の推奨どおりに NOOBS を使用して OS イメージを作成することを考えます。

セットアップに最初に必要なものはネットワークに接続されていて、SDカードを読み書きできる PC だけです。ここでは Linux マシンを使用します。動作環境は以下のとおりです。

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

最初に NOOBS と Raspbian OS をネットワークからダウンロードしてきます。公式サイトからダウンロードしても良いですが、物理的な距離がダウンロード速度にも影響しますので国内のミラーサイトを利用されたほうが高速です。

今回は北陸先端大学のミラーサイトを使用させていただきます。北陸先端大学と山形大学にはいつもお世話になります。

$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt -y install aria2
$ aria2c http://ftp.jaist.ac.jp/pub/raspberrypi/NOOBS/images/NOOBS-2019-09-30/NOOBS_v3_2_1.zip.torrent -d ~/Downloads/

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
80cdf4|OK  |   2.0MiB/s|/home/buran/Downloads//NOOBS_v3_2_1.zip.torrent
f45f9a|OK  |    18MiB/s|/home/buran/Downloads//NOOBS_v3_2_1.zip

Status Legend:
(OK):download completed.

$ sha256sum ~/Downloads/NOOBS_v3_2_1.zip
9d040a0b2795e940cab848c612a9ccfd739cf7ea5fcb1d42141f93cefcef4078  /home/buran/Downloads/NOOBS_v3_2_1.zip

ダウンロードが完了しましたら、公式ダウンロードサイトにアクセスして SHA-256 hash が一致することを確認します。

一致していない場合は必要なファイルが正常にダウンロードできていませんので、再試行が必要です。




問題なければ NOOBS_v*_*_*.zip ファイルを解凍して README ファイルを開きます。

$ mkdir ~/Downloads/noobs
$ unzip ~/Downloads/NOOBS_v3_2_1.zip -d ~/Downloads/noobs/
$ cd ~/Downloads/noobs
$ cat INSTRUCTIONS-README.txt

それによると解凍したファイルを全てSDカードに記録させればブートできるようになるらしいので、そのとおりに実行します。

この時点でSDカードスロットルに記録メディアを挿入して、以下のようにフォーマットとマウンティングを行います。フォーマットは FAT または FAT32 が指定されていますので、ここを間違えると起動しなくなります。モニタに接続しても No Video Input と表示される場合には、こういうところが怪しいですね。

$ sudo gparted
$ sudo fdisk -l
$ sudo mount -t vfat /dev/sdc1 /media/buran/raspbian
$ cd /media/buran/raspbian
$ unzip ~/Downloads/NOOBS_v3_2_1.zip
$ cd ~
$ sudo umount /dev/sdc1

これで OS の書き込みが完了して、いよいよ Raspberry Pi を起動できるようになるはずです。

しかし USBケーブルを接続して通電しただけでは Raspberry Pi は起動しているのかどうか、よくわからないので HDMI ケーブルを通して動作確認用のモニタに出力を表示させます。

したがって、ここからはモニタとマウス、それから HDMI ケーブルが必要になります。この辺りは PC さえあれば、何でもできる Arduino のほうが良く出来てるなという感想を抱きます。

ここでキーボードを繋ぎたくなるところですが、インストール時にはマウス操作が必要になりますので、NOOBS を使用する場合には最初だけはマウスを接続します。

無事にインストールが完了しますと、一般的なデスクトップ Linux として使用できるようになります。無線LANにも接続できますし、ターミナルから設定を行えばサーバとして使用することも簡単にできるようになります。

個人的には GUI 環境は不要ではあるものの、このクレジットカードの半分ほどの大きさのマシンが27インチ FullHD ディスプレイを動かしているのを眺めていると、その性能に感心してしまいます。

続き Android タブレットを Raspberry Pi モニタ代わりに使用する

サイクルコンピュータを自作する — GPS トラッキング

今から数えてちょうど1年前 — 2018 年の 11 月に日本の衛星測位システム 『みちびき』の運用が開始されました

これは米国の GPS と協調して測位精度を向上させたり、2k bps もの伝送量のある信号を送信してセンチメータ級の測位補強情報を提供する日本独自の画期的な取り組みを行ったりしています。

ごく最近までの衛星信号の民生利用では、およそ 20,000 km も離れた位置にある GPS の微弱な信号しか拾えないことが一般的で、誤差も 10.0 m ぐらいあることが当たり前でした。

ロシアの GLONASS の信号が拾えるのは良い機器で、他の衛星(たとえばヨーロッパの Galileo や中国の北斗)の信号まで拾えるモジュールは個人では手が出せないような値段が付いていました。

それが現在では誤差 2.5-3.0 m 程度の高精度モジュールが 2,000 円から 5,000 円ぐらいで市販されていて、その一部は日本の『みちびき』にも対応しています。

さらに SONY に至っては衛星信号受信モジュールを標準搭載したボードコンピュータまで販売しています。これを使うと SONY 製のサイコンを作れます


SONY SPRESENSE メインボード

これから衛星測位システムの活用が本格化し、測位精度も高まってくるとホイールの回転数から移動速度を推定するよりも、距離と時間から速度を求めるほうが正確な数値を得られるのではないか…と思うかどうかは別として、わりと簡単に実装できるので知っておいて損はないかと思われます。

そこで、みんな大好き、GPS 受信機キット (太陽誘電社 GYSFDMAXB) を用意しました。




これと Raspberry Pi を組み合わせると、それだけでも市販のサイコンよりも高機能な玩具が作れます。しかし、どうせ雨で濡れたり、ダウンヒルで飛んでいったりするので、ここではそんなに高価で高性能なものは求めません。

安価で小型で通信機能が使えればいいということで ESP32 を使います。


ESP32 ESP-32S 2個セット NodeMCU-32S ESP32-WROOM-32 開発ボード 2.4GHz WiFi + Bluetooth

これを使って GPS 受信機キットで受信した測位情報を BLE でスマートフォンに転送し、 SQLite にログを残したり、走行記録を地図上にオーバーレイ表示することを考えているわけです。

取り付けようと思えば、液晶ディスプレイなども付けられますが、大きく、重たく、電池消費量が激しくなるだけで実用性があまりないので、個人的には不要に思えます。

また反対に機能を削って走行記録を SD カードに残すだけならば、さらに小型化しつつ稼働時間を伸ばせますが、それでは地味でつまらないので、必要なときだけスマートフォンの液晶ディスプレイを借りる方針です。

BLE 通信で接続するので、うまくやらないとスマートフォンのバッテリを無駄に消費する懸念があります、というか、そこを調べることが最大の目的で GPS もサイコンも本当はオマケです。

ただ、いきなり、スマートフォンのアプリ開発という重たいタスクに取り掛かるのは大変なので、今回は測位情報を Bluetooth で送信するところまでを行います。

まずは ESP32-WROOM-32 のデータシートを見て Pin Layout を確認します。そこから TxD の接続先がわかりますので、線でつないでスケッチを動かしてみます(RxDはいまのところは不要です)。

#include "HardwareSerial.h"
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run 'make menuconfig' to and enable it
#endif

BluetoothSerial SerialBT;
HardwareSerial mySerial(2);

void setup() {
  SerialBT.begin("Hoge");
  mySerial.begin(9600, SERIAL_8N1, 34, 35);
}

void loop() {
  if (mySerial.available()) {
    SerialBT.write(mySerial.read());
  }
  delay(1000);
}

このスケッチをコンパイルしてアップロードすると、ESP32 は Bluetooth で測位情報を送信し続けるようになるはずなので、無事にデータ送信ができているかどうかを確認します。

うまくアップロードを行えない場合は、こちらを参考にしてみてください

送信されたデータを Linux で確認するには rfcomm コマンドを使用してシリアルポートにバインドしてしまえば良いです。

$ sudo bluetoothctl
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[bluetooth]# pair 00:00:00:00:00:00 
Attempting to pair with 00:00:00:00:00:00
[bluetooth]# exit
$ sudo rfcomm connect /dev/rfcomm0 1 00:00:00:00:00:00
Connected /dev/rfcomm0 to 00:00:00:00:00:00 on channel 1
Press CTRL-C for hangup
$ sudo cat /dev/rfcomm0 

※ 00:00:00:00:00:00 は架空のMACアドレスです

できましたら、ファイルを標準出力に表示するときと同様に cat で出力できるようになります。上の例ですと、GPS受信機キットの出力をそのまま Bluetooth に流してしまっていますけれども、いちど Arduino Serial Monitor に書き出して内容を確認してから同じものが表示されるかどうかを確かめたほうが安全かも知れません。

ともかく、これで位置情報を表示できていれば、ESP32 側の準備は万端です。

ここまでは難しいことはないのですが、遠隔でセンサデータを取得できるのはいつ見ても楽しいものですね。

スマートフォン側のアプリ開発は、こう簡単にはいきません。

BLE通信が前提になりますので、少しばかり手間と時間がかかります。

いま忙しくて、実際に走行ログを集めに行く暇もないので、だいぶ後回しになりそうな気がしますが、せっかくなので既存のサイコンと同一条件で計測を行って、結果を比較してみたいですね。


つづき: サイクルコンピュータを自作する #2 – みちびき対応 GPS と市販のサイコンの比較実験


関連: Garmin / Strava の走行記録をまとめて表示する