水中版ドローン OpenROV で海中探検
隠岐周辺の海は透明度が高くきれいなので、これはぜひ海中探検をしてみたい!と思うわけですが、スキューバダイビングなどはそこそこ高額になるし、行ける場所にも限りがあります。というわけで水中版ドローンとも言えるROV(Remotely operated underwater vehicle) を手に入れてみました。
最近はニュースなどで騒がれだして、やれ規制だなんだという話でなかなか飛ばしづらい状況になってきているドローンですが、水中ならドローンが落下する危険性もないし、海中に住んでいる人もほとんど居ないと思うのでプライバシーの観点からも特に問題はないでしょう(笑)。
ROV というと一昔前までは非常に高価なシロモノであり、数百万〜数千万円の世界なので素人が手を出せるものではありませんでした。もちろん趣味で自作されている方はそこそこいますが、長らくホビー用途向けの製品化などはされてきませんでした(推測)。今回手に入れたのは OpenROVというオープンソース(材料や作り方、ソフトウェア等が公開されている)の ROV です。
http://www.openrov.com/www.openrov.com
昔GIGAZINEでも記事になっていたので見かけたことがある人もいるかもしれません。
作り方が公開されているので材料を揃えれば完全に自作も可能ですが、数年前に Kickstarter でのファンディングを終えて組み立てキットが製品化されています。2015年7月現在の価格は $899 と、これまでの ROV から考えると破格のお値段で製品化されています。
OpenROVのスペック
OpenROV(Ver2.7)のスペックについて簡単に触れておきます。
- ワイド画角のWebカムでリアルタイム映像が見られる(チルトシフト可)
- LEDライト
- ブラウザ経由で操作可能なのでOSプラットフォームに非依存
- コントロールボードは Beaglebone Black と Arduino MEGA で構成されており、Input/Outputを使用してユーザが機能を拡張しやすい
- リチウム充電池(別売り)で動作
- 100メートルのテザーケーブル
- 追加装備用のペイロードあり
- ソフトウェア、ハードウェア仕様はオープンソースで公開されており、コミュニティで質問や情報共有などができる
- 水深75m程度まで潜行できる(組み立てのクオリティによる)
- 深度センサはオプション
機能も拡張性もホビー用途としては申し分ない感じです。 ホストPCのブラウザ上ではリアルタイムの映像が見られるので、いわゆるFPV(First-person view)という状態で操作できるわけですが、基本的に静止画撮影のみで動画は撮れない(画面キャプチャソフトを使えば可能)のと、アクリルチューブ越しでそんなに画質は良くないので、映像を撮ろうと思ったらアクションカムを搭載したほうが良いです。
本体前面のペイロードはGoProが2つ乗るくらいのスペースなので、3D映像も取れそうです。 (GoProは高くて手が出ないので中国製アクションカムSJ4000を買いましたが...)
組み立て
組み立ては公式サイトの組み立て手順に従います。 openrov.dozuki.com
組み立てキットですが、一部材料や工具などは自分で用意する必要があります。バキュームポンプやポッティング用の接着剤などレアな工具もあり、全部揃えると1万以上かかりました...。
組み立て作業は結構手順が多い上に、アクリル板の接着や細かいハンダ付けなど、いろいろと慣れていない作業もあり、かなり大変でした。2人で15時間くらいかかったと思います。
特にコントロールボードが入っているメインチューブのフタの接着や、ケーブルを出すための穴のポッティング(エポキシ系接着剤などを流し込んでケーブルと穴のスキマを埋める)など、防水でネックになる部分は慎重にやらないと簡単に浸水します(しました笑)。実は手順で見逃してやってなかったのですが、水に投入する前にハンドバキュームポンプで Vacuum Test の実施が推奨されています。
初ダイブ
近くの堤防で水深4mくらいの海に投入してみました。 海中を自在に動き回れるのはなかなかにステキです。
が、10分ほど動かしたあと、浸水してしまいました笑。
雑感としては、
- ブラウザ経由の操作での応答性が気になっていたが、実際に動かして見た感じでは遅延は気にならない(そもそも水中では水の抵抗でそこまで機敏な動きもできない)
- そこそこ小回りは効くが波の影響で回転してしまい、まっすぐ進むのが難しい
- ノートPCの画面が外だと見づらいので画面のフードがあると良さそう
- ノートPCの配置のために絶対に濡れない場所が必要(あるいは防水のPCとかタブレットを買うか...)
- 潜航中はどのあたりを移動しているのかが分かりづらい
- 浮力調整をしていなかったのでぷかぷか浮いてしまった(ペイロードにおもりを積んで調節が必要)
- PC との接続に USB ケーブルと LAN ケーブルが必要なため携帯性が悪い(そのうち無線化したい)
- ダイブ後のメンテナンスが面倒(とくに海水に入れた場合、淡水で洗浄が必要)
という感じです。
浮力調整や Vacuum Test をちゃんとやってから次回のダイブに望みます。
離島暮らし雑感
とある事情により、7年ほど勤めていた会社を退職し、島根県の離島・西ノ島に移住しました。 これからしばらくはフリーランスとしてアプリ開発などをやっていきます。
移住してから一週間ほど経過しましたが、引越し後の整理や仕事場の構築に時間がかかっており、まだあまり島らしいことはしていません...
自分は生まれてこのかた、関東圏でしか暮らしたことがありませんでしたが、離島暮らしについて一週間で分かったことなどを書き出してみます。
西ノ島について
西ノ島は、島根県の松江から北に60kmほどに位置する、隠岐諸島に属する島です(噴火で絶賛成長中の西之島と間違えられますが、あれは小笠原諸島の無人島なので東京都です)。
隠岐諸島はさらに島前(どうぜん)、島後(どうご)という地域に大別されます。島前は西ノ島(西ノ島町)、中ノ島(海士町)、知夫里島(知夫村)の3島で構成され、島後は隠岐の島(隠岐の島町)1島のみです。
西ノ島の人口は3,000人ほどですが、半数くらいが65歳以上でけっこう高齢化がすすんでいます。一方でIターンやUターンの移住政策によって若い人も増えつつはあるようです。
主な産業は漁業と畜産で、それぞれイカ漁と牛馬の放牧(繁殖経営)が中心のようです。島のPRキャラクターは特産品のイカにちなんで「活イカ活っちゃん」がいて、ツイッターアカウント(活イカかっちゃん (@katsuikakacchan) | Twitter)もありますが、ツイート数が3つしかなかったりであまりやる気が見られません。そもそも名前に地名入ってないけどいいの?とかのつっこみは置いておくとして、キャラクターはかわいいと思います。Tシャツ欲しい。
交通
西ノ島までは、松江の七類港または鳥取県の境港からフェリーで3時間くらいかかります。高速船を使うと1〜2時間くらい(季節により航路が変わる)で着きますが、料金はフェリーの倍です。 また、島前の各島間もフェリーや内航船で結ばれています。おとなりの海士町までは数分です。奥さんはフェリー通勤してます。
島内はアップダウンが多く、移動は車必須なかんじです。軽自動車を買いました。
住宅事情
民間のアパートなどが無いため、公営住宅か空き家になりますが空きがない場合もあります。家賃は関東都市部の1/5〜1/10くらいとかなりリーズナブル。 プログラマにとっては生命線となるインターネッツは、ちゃんと光ファイバーが来ております。
引っ越しはフェリー経由したりがあるので、2tロング車1台分で50万ほどかかりました。驚きびっくりプライスですが、最初の見積もりでは4tで90万と言われておりました。が、さすがにツラいので、家具類を全部バラしたり大物を廃棄したりで2tロングになんとか収めました。おかげで組み立てにかなり時間がかかっています。
お買い物
島内にはコンビニなどチェーン店ぽいものはありません。食料品はスーパーが1件とコンビニ的ポジションの個人商店があります。物価はモノによりますが、乾物系は本土とほとんど変わらず、ナマモノ系は1〜5割増しくらい。お肉は冷凍しかなくてちょい高めです。あと、魚介類は豊富かとおもいきや、島でとれたものは流通しておらず(本土で売ったほうが高く売れるとか)、わりと高めです。個人商店では日用品もかなり品揃え豊富なので、買い物に困ることはまずないです。しかし、服屋はないので通販や本土で買ってくるそうな。
送料
離島で気になるのが通販などの送料ですが、ぶっちゃけ高いです。ソファを買おうとしたら1万ウン千円の送料がかかりますし、小物でもすぐに数千円になります。が、Amazon Prime を使うと離島でも送料無料になることが分かりました。送料無料なのが Amazon Prime 対応の商品に限定されることと、年会費4000円くらいかかりますが、あっという間に元がとれます。ちなみに Amazon の回し者ではありませんです。
娯楽
娯楽施設的なものはスナック的なもの以外はほとんどないですが、自然豊かというか自然まみれなので、釣りしたり山に登ったり、海でクシクラゲを眺めたりで十分楽しいです。
観光
西ノ島はスケールの大きい国賀海岸など見どころが多いです。これはまた後日。
Google Cardboard を作ってみた
先日の Google I/O での発表後から気になっていましたが、時間ができたので作ってみました。出来上がりは上の写真の通り、あまり見栄えが良いとは言い難いけれど、案外ちゃんと使えます。
作り方や型紙のダウンロードは公式サイト(https://developers.google.com/cardboard/)で。
ダンボールは家に転がっていたサラダスピナーの箱を使用。 他の材料はダイソーで調達しました。
- レンズ用に「とげ抜きルーペ」× 2
- マジックテープ(手芸用)
- マグネット
レンズはネットで見る限り、国内ではダイソーのミニルーペを使用している人が多いようですが、お店で見つからなかったので「とげ抜きルーペ」で代用しました。このレンズの実際の焦点距離はよくわからないですが、自分の視力(0.7)ではほぼピントは合っているように見えます(Cardboard 推奨は焦点距離 45mm です)。ちょっとダンボールのレンズ穴より径が小さいので、グルーガンで固定するなどしました。また、レンズが小さいせいかピントの合う領域は若干狭めで、画面端の方はボケてしまいます。
Cardboard に対応する Android 4.1 以上の端末は持っていなかったので、わざわざ秋葉原で調達しました。2013年発売の AQUOS PHONE 203SH を買いましたが 1万程度で売っていたのは少し驚きです。画面は 4.9インチの IGZO でなかなか綺麗だし、CPU も APQ8064 1.5GHz(クアッドコア)が載っているので VR 用途にもパワーは十分です。
難点は 、203SH が Cardboard の動作検証済み端末でないせいか、CardBoard 公式アプリでは視差が大きく取られてしまって 3D に見えない点です。最初はレンズの焦点距離などの問題かと思って色々試行錯誤していましたが、Youtube に上がっている CardBoard アプリの動画では正常に見えたので、どうも Cardboard のアプリ側に何か問題があるようです。
また、マグネットによるスイッチが、デフォルトの設置場所だと全然反応してくれませんでしたが、試しに反対側にマグネットを設置してみたところ反応するようになりました。この辺は、使用する機種によって差がありそうです。
とはいえ、その他の VR 対応 Android アプリは正常に動作しているので十分に実用的です。ちなみに Google Play には、Cardboard と同じ動作原理の Durovis Dive という製品向けのアプリがそこそこリリースされているので、それらも体験できます。対応ゲームの一覧も用意されていてナイスです(http://www.divegames.com/games.html) 単に VR というキーワードでも結構見つかります。
また、Durovis Dive の SDK を使用すると、Unity 無料版でも VR 対応アプリが作れるようなので、今度試してみようと思います。
UnityでGoogle Cardboard用のコンテンツを作成する : エイバースの中の人
最後におすすめのアプリをいくつか。
Tuscany Dive 1.0
カテゴリ: ライブラリ&デモ
Google Playで詳細を見る
家と庭を歩き回れます。足元にあるスイッチを見ると進んだり止まったりを制御できます。
Dive City Rollercoaster 1.6
カテゴリ: アーケード
Google Playで詳細を見る
VR 定番のジェットコースターです。立ったまま見ていると、落ちるときにフラッと来ます。
Dive Deep 1.0
カテゴリ: アドベンチャー
Google Playで詳細を見る
イルカやシャチが突進してきます。結構迫力があります。
Raspberry Pi 無線 LAN 設定おぼえ書き
設定前の準備
Raspberry Pi の OS
Raspbian を使用。ホスト側は Mac。
無線 LAN アダプタ
ヨドバシで700円ちょいで売っているちっこい無線 LAN アダプタを買ってみた。
最近のは安いし速いしちっこいしですごいなぁ。
構成
Raspberry Pi の USB ポートに無線 LAN アダプタとキーボードを接続。
設定
無線 LAN の設定
/etc/wpa_supplicant/wpa_supplicant.conf に ESSID とパスワードを登録する。
wpa_passphrase コマンドを使うと、設定に記述するフォーマットで出力してくれる。
コマンドの出力はそのまま /etc/wpa_supplicant/wpa_supplicant.conf に追記すればOK。
ESSID には無線 LAN の ESSID、pass にはパスフレーズを指定。
#sudo wpa_passphrase ESSID pass | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
変更後の内容を確認。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
中身が以下のようになっていれば成功。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="ESSID" #psk="password" psk=907998845ecfdc66f243ac57e6a5aab06c864049caf01a671a179358da6808e1 }
これにいくつか設定を書き足す。
以下は認証方式: WPA-PSK、暗号方式: TKIP の場合の例。
network={ ssid="ESSID" proto=WPA pairwise=TKIP group=TKIP psk=907998845ecfdc66f243ac57e6a5aab06c864049caf01a671a179358da6808e1 }
各方式毎の設定値は以下の通り。
- 認証方式
- WPA-PSK
- proto=WPA
- WPA2-PSK
- proto=RSN
- WPA-PSK
- 暗号方式
- TKIP
- pairwise=TKIP
- group=TKIP
- AES
- pairwise=CCMP
- group=CCMP
- TKIP
起動時に無線 LAN に接続する設定
以下のファイルを編集。
sudo vi /etc/network/interfaces
内容を以下のように変更(DHCP で IP が振られる場合)
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
設定の反映
reboot で再起動して設定を反映。
sudo reboot
動作確認
ifconfig で wlan0 に IP が振られていれば設定完了。
ホスト名でのリモート接続
DHCP だと ssh 接続するために Raspberry Pi の IP を調べる必要があるので、ホスト名で接続できるようにする。
Raspberry Pi に avahi-daemon をインストール。
$ sudo apt-get update $ sudo apt-get install avahi-daemon
デフォルトのホスト名は raspberrypi.local になっているので、
ping raspberrypi.local
で返答があれば設定完了。
これでホスト側からは、
$ ssh ユーザ名@raspberrypi.local
でリモートログインできる。
ちなみに、無線 LAN アダプタは消費電力が大きく、Raspberry Pi は電源周りが弱いらしいので結構動作が不安定になる。 これを解決するには、以下の方法でなんとかしてやる必要がある。
セルフパワーUSBハブを使う
無線 LAN アダプタの電源を別にする
http://myboom.mkch.net/modules/pukiwiki/165.html
参考にさせてもらったページ
http://openrtm.org/openrtm/ja/node/266
http://www.youchikurin.com/blog/2007/06/linuxlan_1.html
Gakken WORLDEYE
球体ディスプレイが前々から欲しかったのだけど、ちゃんとしたやつだと数百万するのでとても手がでないなと思っていたら、学研から WORLDEYE という球体型のおもちゃ教材が4万円くらい出ているのを知って衝動買いしてみた。
基本的には球体ディスプレイ + USB メモリに入った動画教材という構成なんだけど、球体ディスプレイに HDMI 入力がついているのがミソで、PC などから画面を出力して色々遊べるようになっている。 解像度は 480 x 480 (640 x 480 の横がトリミングされる)と高くは無いのでちょっとぼやっとした画像になってしまうけど、実際そんなに細かいものを映すわけじゃないので特に気にならない。
最初から入っているコンテンツを再生するだけでもなかなか楽しい。
部屋を暗くすると月がそこに浮かんでいるかのよう。
さて、HDMI でつないで色々やってみたシリーズ。
Google Earth on Gakken WORLDEYE - YouTube
球体なのでやっぱり地球を映してみたくなったので、PC 経由で Google Earth を映してみた。ただ映すだけなのも味気ないので、コントローラに Leap Motion を使って地球をぐるぐる回せるようにしてみた。操作性に若干難はあるものの、わりとイメージ通りに動いてくれたので満足。
Leap Motion はそれぞれの指の動き(空間上の位置)を認識して PC に入力できるデバイスで、Amazon で 1 万円くらいで買った。Leap Motion 単体でも専用アプリいろいろあって楽しい。
さて、次は Processing で描いたスケッチで WORLDEYE をインテリア化してみる。
Processing on Gakken WORLDEYE - YouTube
うん、それっぽくなった。 ずっと PC をつないでおく訳にも行かないので、今度は Raspberry Pi で openFrameworks (Processing ぽい C++ ライブラリ) を動かして常設できるようにしてみたい。 Raspberry Pi は直接 HDMI 出力できるので WORLDEYE とは相性が良さげ。
Bubbles on blue
やっぱり iPhone で描くの大変なので、家で描いたシリーズ。 泡の発生源を適当に揺らすとそれっぽくなった。