2019の振り返り

1月

Looking Glass 到着

Cluster, VRChat初体験

  • VRChatのすごさに感動するが、すぐにVR酔いしてしまう。

例のグラボ買う

Windows MR購入

  • NorthStarMeetupで安いという情報を得たのでその場でポチる。

echo spot 導入

  • カメラがついていて、アプリから遠隔監視ができるので、3Dプリンタの印刷状態を遠隔監視する用途に多用するように。

2月

NorthStarMeetup参加で刺激を受け3Dプリンターを購入(CR-10S)

3月

HoloLens 2の実寸大モックを作成

  • 来日していたHoloLens 2の発表プレゼンをしていたMSの方からも賞賛の言葉を得る。

Project North Star作成

  • 3Dプリンターを使った初の大掛かりな製作作業。電源供給等でかなり手こずったが、なんとか動かせた。

Davinci Color Mini購入

  • 安くなってたのでカラープリンターに手を出してしまう。しかし狭い部屋に3Dプリンター二台はやりすぎだったことにあとで気づく(CNCフライスにしておけばよかったか)

4月

JetsonNano購入

xRTechで令和ことブルームと平成の手話で対応する文字を表示するアプリを展示

  • 平成最後のxR Tech Tokyo

Project North StarをT265で6DoF化

5月

Jetson Xavierを購入。現在はxArmの制御用に使用。

Oculus Questを購入

6月

Structure Coreを購入

7月

ZEDを購入

Xtion Pro Liveを購入

SR305を購入

8月

例のグラボで自作PCを作成、TensorflowをGPU使用で動かす

M5Stick VとCを購入

自作アイトラッキング装置を作成、xRTechで展示

第二種電気工事士に合格

Mediapipeのハンドトラッキングを試し性能の高さにびっくりする

JetRacerを作成

Coral Dev Boardを購入

9月

JetBotを作成するが壊れる

JetRacer作成記事を投稿

Spot MiniにインスパイアされたSpot Microというオープンソースの四足歩行ロボの作成に着手(色は青白)

10月

回路Cadに入門、作成した基盤を実際に海外に発注

四足歩行ロボ第二世代を作成(色は青黒)

11月

xArmをいじる。自動水やりを試しにやってみる。

ラズパイ4を購入

12月

AI Carのアドベントカレンダーに投稿。初アドベントカレンダー参加。

四足歩行ロボの骨折を機に足回りの改造、trot歩行に成功

総括

  • 相変わらず色々ガジェットを買った。
  • 3DプリンタでNorthStar, HoloLens 2のモック, JetRacer, JetBot, SpotMicroなどを作成し、3Dプリンターに大変お世話になった。
  • 第二種電気工事士試験に合格、また回路cadでサーボモーターの電源供給用の自作基盤を制作し総じて電気系の知識が結構増えた。
  • 去年まで継続して出していたアプリは今年作らなかったが、ハード制作系に初チャレンジ。色々難しさを知る。
  • xArmをいじり初のロボットハンド操作を体験。購入したセンサー類などと組み合わせ、今後様々なタスクにチャレンジしたい。
  • 四足歩行ロボットはやっと前進ができるようになった。今後深度カメラ or LidarとSLAM、深層学習等を組み合わせ自動で動くペットのような動きをさせたい。

JetRacerの自動走行の仕組み

JetRacerとは

Nvidiaが公開しているJetsonNanoを用いた自動走行カープロジェクトがあります。 github.com

前回の記事ではこちらの作り方を説明しました。

yhrscoding.hatenablog.com

作った当時はとりあえずサンプルのJupyter Notebookをただ実行するだけで動かしていただけでした。 今回こちらで自動走行ができる仕組みについて少し調べてみました。

基本的なラジコンの仕組み

まず自動走行する以前に、JetRacerの改造前のラジコンについて考えてみます。

車本体の位置を制御することに関して、ラジコンのコントローラー(プロポ)からステアリング(Steering、進行方向)・スロットル(Throttle、進行速度)の2つの信号が車側の受信機に届き、値に応じて車に取り付けられている2つのモーターの動きを制御しています。

f:id:hygradme:20191208031003j:plain:w300 f:id:hygradme:20191208031014j:plain:w300

ラジコンの自動走行

ラジコンを自動走行させるには基本的には人間に変わり、何らかのセンサーを使い状況を認識し、判断を行いステアリング・スロットルを適切に制御することで自動走行を実現します。

現在の標準のJetRacerではスロットルはあらかじめ指定した固定値を常に維持し、車正面に搭載のカメラから得られた情報を元にステアリングの値を変化させることでコースに沿った走行が実現しています。
ちなみにJetRacerでスロットルを状況に応じて自動で操作するということは可能で、方法はいくつか考えられます(前に参加した大会ではステアリング角に応じた速度の値を決めることでコーナーでは低速、直線では高速にする改良を行い、タイムを大幅に縮めることができました)

スロットル制御については以下の記事でもmasato-kaさんが触れられていますので、興味のある方は参考にしてください。 masato-ka.hatenablog.com

カメラ画像からからステアリング角を決める仕組み

上で述べたように、自動走行には人間の目に変わりコースの形状・車の位置などを認識し、それに応じた制御をする必要があります。
こちらは実際の自動車の自動運転では車両前方につけたカメラで白線認識を行ったり、奥行きまで認識できるセンサー(Lidar、ステレオカメラ、ミリ波レーダー)などを用い、車の空間における位置関係を把握しステアリング・スロットルの判断を行うということが行われていると思われます。白線認識を行ったり、LidarなどのセンサーをJetRacerに搭載することも可能ですが、システムが複雑になったり、重量・価格などがネックになってしまいます。

もっともシンプルに自動走行を実現するには通常のWebカメラのようなカメラ1つ(単眼カメラと呼ばれる)からステアリングを直接推定することです。 そんなこと可能なのかと思われるかもしれませんが、近年人気のディープラーニングを使って、「画像を入力->ステアリング角を出力」を行ったという論文をNvidiaが数年前に発表しました。

End to End Learning for Self-Driving Cars (2016) https://images.nvidia.com/content/tegra/automotive/images/2016/solutions/pdf/end-to-end-dl-using-px.pdf

詳細は省きますが、内容としては「道路を走行中の画像」と「その画像を撮影した時点での車のステアリング角」のペアのデータを大量に収集し、CNNというニューラルネットワークにその関係を学習させ、走行中にその時点での画像から直ちにその時点で取るべきステアリング角を推定し実際にステアリング角を変化させるということを行っています。

f:id:hygradme:20191208042121p:plain:w400
画像とステアリング角を使ってネットワークを学習し推論する

JetRacerの自動走行もこの論文と同様の原理で自動走行しています。 唯一異なる点は論文のように実際の走行時のステアリング角を学習のターゲットとせず、各画像に付与した車が向かうべきターゲットピクセル座標(x,y)を使って正しいステアリング角を擬似的に作り出している点です。

具体的に見ていきましょう。

上記のレポジトリ内の jetracer/notebooks/interactive_regression.ipynb を順に実行することでデータ収集、学習を行うことができますが、実行して画像を収集していく過程で、TASKという変数名で指定した名前から始まるフォルダが、jetracer/notebooks内に作成されています。 そのフォルダ内のapex内に画像ファイルが以下のようなファイル名で保存されていると思います。 99_109_xxxxxxxxxxxx.jpg

このファイル名先頭の2つの数字が画像を保存する際にクリックしたピクセル座標x,yに対応しています。

なおこのファイルの保存の処理はnotebooks/xy_dataset.py内のXYDatasetクラスのsave_entry関数で行われています。

class XYDataset(torch.utils.data.Dataset):
    (中略)
    def save_entry(self, category, image, x, y):
        category_dir = os.path.join(self.directory, category)
        if not os.path.exists(category_dir):
            subprocess.call(['mkdir', '-p', category_dir])
            
        filename = '%d_%d_%s.jpg' % (x, y, str(uuid.uuid1()))
        
        image_path = os.path.join(category_dir, filename)
        cv2.imwrite(image_path, image)
        self.refresh()

filenameを x_y_uuid.jpgという形式にしてフォルダに保存していることがわかります。 jupyter notebook上のカメラ画像の座標をクリックするごとにこの関数が呼ばれ、画像とターゲットのピクセル座標をファイル名内に入れて保持します。

ネットワークをトレーニングする際にこの画像とファイル名を読み込んで学習を行います。 なお実際にネットワークから出力するx,yの値はピクセル座標ではなく、画像サイズを元の値から割って得られる -1 から1の値です。

なおこの処理は上の画像を保存する処理が入っているnotebooks/xy_dataset.py内に記述されており、

class XYDataset(torch.utils.data.Dataset):
    (中略)
    def __getitem__(self, idx):
        ann = self.annotations[idx]
        image = cv2.imread(ann['image_path'], cv2.IMREAD_COLOR)
        image = PIL.Image.fromarray(image)
        width = image.width
        height = image.height
        if self.transform is not None:
            image = self.transform(image)
        
        x = 2.0 * (ann['x'] / width - 0.5) # -1 left, +1 right
        y = 2.0 * (ann['y'] / height - 0.5) # -1 top, +1 bottom
        
        if self.random_hflip and float(np.random.random(1)) > 0.5:
            image = torch.from_numpy(image.numpy()[..., ::-1].copy())
            x = -x
            
        return image, ann['category_index'], torch.Tensor([x, y])

の中の

 x = 2.0 * (ann['x'] / width - 0.5) # -1 left, +1 right
 y = 2.0 * (ann['y'] / height - 0.5) # -1 top, +1 bottom

でターゲットのピクセル座標ann['x']、ann['y'] がそれぞれ-1 ~ 1 に変換された x,yになっていることがわかるかと思います。

お気づきかもしれませんが、このターゲットのピクセル座標を予測しても、実際のステアリング角とは異なるので、通常は予測結果をそのままラジコンのステアリング角には使用できません。

JetRacerではこの予測したピクセル座標(-1~1に正規化)のxの値をそのままステアリング角とみなします。ステアリング角も-1~1の範囲に正規化されているため、例えばもっとも左にステアリング角を取るとき(steering = -1)はx=-1となり、もっとも右にステアリング角を取るとき(steering = 1)はx=1となります。

f:id:hygradme:20191208145724p:plain:w400
画像内のピクセル座標とステアリング角の対応付け

このxの値をそのままステアリング角とみなすというのはやや極端かと思いますが、カメラが車体進行方向に対してまっすぐに取り付けられているとするならば、画像の真ん中を境にマークの位置に応じて左右のステアリング値に直接変換するというのはもっとも簡単で手軽な方法の1つだと思います。

実際の画像を見ていただくとわかりますが、真ん中から左側をクリックするときはステアリングは左、右側をクリックするときはステアリングは右になっていそうなことがわかると思います。 f:id:hygradme:20191208152754j:plain:w350 f:id:hygradme:20191208152822j:plain:w350

ピクセル座標の値をステアリング角とみなして、実際にラジコンにステアリング指示を行う処理はjetracer/notebooks/road_following.ipynbの最後のセルに記述されています。

import numpy as np

STEERING_GAIN = 0.75
STEERING_BIAS = 0.00

car.throttle = 0.15

while True:
    image = camera.read()
    image = preprocess(image).half()
    output = model_trt(image).detach().cpu().numpy().flatten()
    x = float(output[0])
    car.steering = x * STEERING_GAIN + STEERING_BIAS

の中の

    x = float(output[0])
    car.steering = x * STEERING_GAIN + STEERING_BIAS

の部分が、学習済みモデルに画像を入れて出力されたピクセル座標のxの値を取り出し、ステアリング角(car.steering)に変換している部分です。 実際の処理ではSTEERING_GAINという値をかけることで、ステアリングの値を多少小さめに指示する操作を行っています。こちらの値は使用するラジコンの最大ステアリング角等を見て調整することでより性能の良い自動走行を実現できると思われます。 またSTEERING_BIASはステアリング値に一定値を常に加える処理ですので、カメラが車体本体から左右にずれていたり、重力の軸周りに回転してしまっている場合あるいはラジコンのステアリング機構自体の左右へのズレを補正するためのもので、そういうズレがなければ通常STEERING_BIAS=0.00で問題ないと思います。

ピクセル座標のyの値は標準のJetRacerでは使用しておりませんが、こちらは画像をクリックしてアノテーションを行うときのことを考えると、奥行き方向に関連する情報を持っている可能性があると思いますので(コース上をクリックするとするならば視界の先をどれだけ見渡せるかで速度を出せるかどうかの目安にできる?)、速度(throttle)に関する制御に使えるのではないかと考えられます。

以上で簡単ですが、JetRacerの自動走行の仕組みについて自分の理解の範囲で解説させていただきました。 勘違いや、JetRacerの自動走行の仕組みについてより詳しい背景等ご存知でしたら是非ご指摘願います。

JetRacerの組み立て

NVIDIAからJetson Nanoを使ったAI自動走行車JetBotに続く、JetRacerが発表されました。 github.com

こちら市販のラジコンカーにJetson Nanoとカメラを取り付け、カメラの画像からその時点でどちらに転舵すべきかを機械学習で学習させ、それを元にラジコンカーを自動走行させるというものです。

参考動画:

JetBotと異なり、ラジコンカーならではのスピード感ある自動走行を楽しむことができます。(もっと大きい場所でより複雑な形状のコース作って試してみたいが、なかなか東京付近で場所がない... どなたか場所の提供 or いい場所を教えてください...)

ラジコンカーに馴染みない方向けに簡単に補足しますと、今回取り扱うラジコンカーは二つのモーターから構成されており、

  • サーボーモータ

    • 角度を細かく調整できるモータ
    • 前輪の回転軸をサーボーモーターによってずらし、ラジコンカーの進行方向を左右に変更する。
  • DCモーター

    • 角度は細かく調整できないが高速で回転させられる
    • 前後輪を回転させ、ラジコンカーを前進・後進させる。

という役割を担っています。 デフォルトのJetRacerではDCモーターは常に一定速度で動かし、カメラから得られた情報からサーボーモータをどの程度動かすかを決め、サーボーモーターにそれを伝え、コースアウトしないように走行することで自動走行を実現しています。

今回こちらをパーツの仕入れから、実際に動かすまで一通りやってみたので、その過程をまとめました。なお車体はlatraxというものとtamiyaの2通りありますが、日本で入手しやすいtamiyaのシャーシのものを作成しました。

作成に関する注意事項

作成部品の入手難易度はやや高めかと思います。その理由は、

  1. パーツ合計がやや高額になる。(3Dプリントパーツ無しでも5万ぐらい?)
  2. 3Dプリントするパーツが3点ある。(ボード類取り付け用のベース板、シャーシへの穴あけ用の補助板、カメラモジュール取り付け台)
  3. まあまあ分厚いシャーシに穴あけするボール盤などの道具を利用する必要がある。(私はDMM.make AKIBAを利用しました。固定を接着剤とか別の方法でやるなら不要かもしれません)

一方で上の3つがクリアできれば組み立ては配線系が少しややこしいことを除けば、ラジコンの知識はほぼなくてもできます。

ただし注意事項として、ラジコン本体・プロポ(ラジコンのコントローラー)の調達はよく調べたほうがいいです。 私の場合、横着をして、シャーシ・プロポ・バッテリー・バッテリー充電用ACアダプタセットのものを買ってしまいました。(これと単三電池4本を買うだけで、ラジコンとして遊ぶことができる)

しかしプロポが2つの信号(進行・後退と左右転舵)しか送れない2chのものだったので、公式で推奨している3chのものとは異なり、プロポから自動走行or手動走行を切り替えることができませんでした。このままだと学習させる時、面倒だったので結局3chプロポを買って受信機を取り替えました。 ただし、マルチプレクサを経由せずモータードライバからの信号or受信機からの信号の配線を手で繋ぎ変えて手動・自動を変えることはできますので、予算厳しい方は私と同じく2chの車体・プロポセットを購入すればマルチプレクサなしで最低限手動自動共にJetRacerを動かすことはできます。

なお3chプロポを最初から使うと言う方は、シャーシ、プロポ、受信機、サーボモータ、ラジコン用バッテリー、ラジコン用ACアダプタを個別で調達すると安く上がると思います。

パーツ一覧(購入するもの)

パーツ 数量 価格 URL 備考
Jetson Nano 1 12300円 http://akizukidenshi.com/catalog/g/gM-14393/
MicroSDカード 1 1000~3000円 Amazonなど 私は手元にあったSanDiskのExtremeProに32GBにしました
USBバッテリー 1 2000円 https://www.amazon.co.jp/gp/product/B07L4WRCWJ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 最低でも5Vで2A供給可能なもの。2.4Aぐらい出せると良い?
USB A -> 外径5.5mm 内径2.1mm円形ジャックケーブル 1 500円 https://www.amazon.co.jp/gp/product/B071GTKDZJ/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1
ラジコン本体+プロポ+バッテリー 1 17000円ぐらい https://www.amazon.co.jp/gp/product/B01LY45KQF/ref=ppx_yo_dt_b_asin_title_o00_s01?ie=UTF8&psc=1 プロポが2ch
プロポ+受信機 1 11000円 https://www.amazon.co.jp/dp/B01CTK6UDY/ref=cm_sw_r_tw_dp_U_x_HPoEDbQZAEVZQ 3chプロポと受信機のセット
PWM サーボーモータードライバー 1 610円 https://www.amazon.co.jp/gp/product/B01D1D0CX2/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
RC サーボマルチプレクサ 1 1231円 Pololu 4-チャンネル RC サーボ マルチプレクサー (組立て済み) :Pololu-2806:朱雀技研工房ストア - 通販 - Yahoo!ショッピング 操作をプロポ or Jetsonからのどちらかを切り替えるためのもの
3ピンジャンパーケーブルセット 1 899円 https://www.amazon.co.jp/gp/product/B07BMRY7BH/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1 Jetson、モータードライバー、マルチプレクサなどの配線に
メス-メス ジャンパーケーブル 1 680円 https://www.amazon.co.jp/dp/B01MTAD3GA/ref=cm_sw_r_tw_dp_U_x_7OoEDb1J1WX0Q
USB WiFiアダプタ 1 798円 https://www.yodobashi.com/product/100000001003540389/ WiFi通信用。M.2無線カードより安くて楽。
ラズパイカメラモジュールv2 1 4580円 https://www.amazon.co.jp/gp/product/B01EW2KDTE/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1 公式のものでないと認識しない可能性あり
IMX219 160度カメラ 1 2499円 https://www.amazon.co.jp/gp/product/B07HMXJ9Y1/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1 ラズパイカメラモジュールのカメラ部分をこちらに差し替え
M3x45mm スタンドオフ 1 1014円 https://www.amazon.co.jp/gp/product/B07NPKW74J/ref=ppx_yo_dt_b_asin_title_o00_s01?ie=UTF8&th=1 制御系のボード類をシャーシに取り付けるためのもの
M3x8mm ネジ 8個 617円 https://www.amazon.co.jp/dp/B01HZCYV3W/ref=cm_sw_r_tw_dp_U_x_CMoEDb6NMM54P スタンドオフを取り付ける
M2x8mm ネジ 18個 560円 https://www.amazon.co.jp/dp/B01HD3P98Y/ref=cm_sw_r_tw_dp_U_x_AOoEDbZNC63JA ボード類の取り付け用
バッテリー保持用ストラップ 1 999円 https://www.amazon.co.jp/gp/product/B0744DNC1K/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1 Jetson用バッテリーを車体に取り付けるためのもの

3Dプリントが必要なパーツ

  1. ボード類を取り付けるベース板
  2. シャーシに穴あけするときに穴あけ位置を特定するための補助板
  3. カメラモジュールを取り付ける台

組み立て

基本的にはこちらに従って組み立てます。 jetracer/hardware_setup.md at master · NVIDIA-AI-IOT/jetracer · GitHub

フェーズ1 (シャーシの穴あけ、モーターカバーの除去、スタンドオフの取り付け、受信機の取り付け)

  1. シャーシに穴あけするため、上で3dプリントした2番の補助板をシャーシの裏側(地面側)にテープなどで固定します。この際3dプリントした板の突起がある部分がシャーシ裏側のネジ部分と一致するはずです。(一部ネジを取り外さないとはみ出るので適宜ネジを外す)

  2. 補助板に空いている3mmの穴4箇所をターゲットとして3mmドリルで穴あけ、シャーシまで貫通させます。

  3. (オプション) ネジの皿部分がシャーシからはみ出ないように上の4つの穴に対して、皿穴加工をします。私は適当に6,7mmぐらいのドリルで数ミリ穴あけしました。(公式のStep2 Countersink)

  4. シャーシ表側のDCモーター付近のカバーを外します。(大きなモーターの方) これがあると、あとでベース台を固定するときに邪魔になるかと思います。

    f:id:hygradme:20190909191502j:plain:w400
    モーターカバーを外したシャーシ

  5. 先ほど開けた4つの穴を通じて、シャーシにM3x8mmのネジでスタンドオフを取り付けます。

    f:id:hygradme:20190909190352j:plain:w400
    シャーシ背面図

  6. (オプション)受信機を3chプロポ対応のものに取り替えるor取り付けます。 車体・プロポセットで買った方はシャーシに2ch用の受信機が付いていますが、こちらを取り外します。粘着力強めの両面テープで付いているだけですので頑張って外してください。

f:id:hygradme:20190911215331j:plain:w400
2chの受信機

f:id:hygradme:20190911215716j:plain:w400
2ch用の受信機を外した様子

2ch用の受信機を外した後、3ch用の受信機を取り付けます。

f:id:hygradme:20190911215946j:plain:w400
3ch用の受信機を取り付けた様子

フェーズ2(3Dプリントしたベース板に各種基盤を取り付け)

  1. マルチプレクサをM2x8mmのネジ2つでベース板に取り付けします。2箇所だけで少し不安なので、ネジのない側に何か台なり設置したい気はします...

  2. PWMサーボモータードライバーをM2x8mmのネジ4つでベース板に取り付けします。

  3. Jetson Nanoを M2x8mmのネジ4つでベース板に取り付けします。

  4. カメラモジュールのカメラ部分をIMX219のカメラに取り替え、カメラモジュールを3Dプリントしたカメラ台にM2x8mmネジ4つで取り付けます。カメラモジュールのコネクターをJetsonNanoに取り付けます。さらにカメラ台をベース板にM2x8mmネジ4つで取り付けます。最後にカメラモジュールとJetsonNanoを接続します。ラズパイ公式のカメラモジュール仕様の場合、ケーブルが半ねじりの状態になってしまいます。

  5. USB WiFiアダプタをJetson Nanoに取り付けます。

フェーズ3 結線

  1. Jetson Nanoとモータードライバの接続

これによって、JetsonNano側から来る前進・後進・右転舵・左転舵の指示をモーター側に伝えることができるようになります。1ピンのジャンパーケーブル1つと、3ピンのジャンパーケーブル1つを取り付けします。

  • Jetson側

    • 1ピンジャンパーはGNDに接続します。(図のJetsonNano上のGPIOピン上、右列側の黒線)
    • 3ピンジャンパーは3V3, 3番, 5番 に接続します。(図のJetsonNano上のGPIOピン上、左列側の黒線(3V3)・赤線(3番)・白線(5番) )
  • サーボモータードライバー側

    • 1ピンジャンパーはGNDに接続します(図の下側のモータードライバ上の一番上の黒線)
    • 3ピンジャンパーはVCC(黒線), SDA(赤線),SCL(白線)に接続します。

なお、JetsonNanoとモータードライバ間の3ピンの結線は以下のような対応になります。

  • 3V3 がVCCに(黒)
  • SDAが3番に(赤)
  • SCLが5番に(白)

f:id:hygradme:20190909192051j:plain:w400
JetsonNanoとモータードライバーの接続

  1. サーボモータドライバとマルチプレクサの接続

マルチプレクサとはA,Bという二つの信号のどちらかをCから出力するという時にDという別の信号によって電気的にA・Bを切り替えることができる装置です。今回、A・Bの信号はJetsonNano・プロポに対応し、マルチプレクサを使うことで、自動走行or手動走行を切り替えすることができるようになります。

具体的には図のようにマルチプレクサを上から見た図で、

  • M1~M4 (上の例でいう信号Aたち。Masterの略か)
  • S1~S4 (上の例でいう信号Bたち。Slaveの略か)
  • Out1~Out4(上の例でいう信号C。ここをモータに繋ぐことでM1~M4 or S1~S4のどちらかの信号がモーター側に伝わります。 )
  • SEL (上の例でいう信号D。M1~M4 or S1~S4の切り替えを担当)

となります。

f:id:hygradme:20190909202624j:plain:w400
マルチプレクサ

二箇所取り付けます。 この時向きはGND通しが繋がるように注意してください。

  • サーボモータドライバ上の0番(黒赤黄上でJetsonと接続したピンから最も近い方)をマルチプレクサのS1に接続。(転舵信号を担当)
  • サーボモータドライバ上の1番(黒赤黄上でJetsonと接続したピンから最も近い方)をマルチプレクサのS2に接続。(前進・後進の信号を担当)

f:id:hygradme:20190912005415j:plain:w400
モータードライバとマルチプレクサの接続

  1. 受信機とマルチプレクサの接続

マルチプレクサのM1,M2,SELを受信機の1番・2番・3番と接続します。この接続によりプロポからの操作信号(転舵・前進後進・手動自動運転の切り替え)をマルチプレクサに送ることができるようになります。マルチプレクサのGND側のピンと受信機の右側のピンが繋がるように注意してください(図では黒線)

f:id:hygradme:20190912010130j:plain:w400
マルチプレクサと受信機の接続の様子

  1. マルチプレクサとサーボモータ、ESCの接続

上の手順でマルチプレクサにJetsonNano(自動運転)とプロポ(手動運転)の信号が入るようになり、この二つはSELの信号によって切り替えられるようになっています。さらにこの信号をサーボモータとESCに送り実際にモーターを動かせるようにします。 なおESC(Electric Speed Controller)は前進後進を行うDCモーターに電流を供給する装置です。入力として駆動信号とバッテリーからの電流の二つをもち、駆動信号を増幅してモーターに駆動に十分な電流を供給します。放熱用のファンがついているものです。 以下の二つの接続を行います。 なおいずれも黒線がマルチプレクサのGNDに接続されるように気をつけてください。
- サーボモータ(受信機の下に付いている)とマルチプレクサのOut1の接続(図で左側の指あたりから出ているESCの赤白黒の線)
- ESCとマルチプレクサのOut2の接続(図で右側の指あたりから出ているサーボモータの赤白黒の線)

f:id:hygradme:20190912010710j:plain:w400
マルチプレクサとサーボモータ、ESCの接続の様子

フェーズ4 最終組み立て

JetsonNanoなどが取り付けてあるベース板をM3x8mmのネジ4つを使ってスタンドオフに取り付けます。これによってベース板がシャーシに固定されます。

f:id:hygradme:20190912011909j:plain:w400
JetRacer完成

以上でハードウェア部分は完成です。気が向いたら、別の記事でソフトウェア部分について書こうと思います。

Coin Roller Master Privacy Policy

Privacy Policy

hygradme built the Coin Roller Master app as a Free app. This SERVICE is provided by hygradme at no cost and is intended for use as is.

This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.

If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.

The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Coin Roller Master unless otherwise defined in this Privacy Policy.

Information Collection and Use

For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to None. The information that I request will be retained on your device and is not collected by me in any way.

The app does use third party services that may collect information used to identify you.

Link to privacy policy of third party service providers used by the app

Log Data

I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.

Cookies

Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.

This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.

Service Providers

I may employ third-party companies and individuals due to the following reasons:

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.

Links to Other Sites

This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.

Children’s Privacy

These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.

Changes to This Privacy Policy

I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.

Contact Us

If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me.

This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator

Project North Star Update3 の作成

はじめに

1月に機構がアップデートされたProject North Star Update 3を作ってみました。 きっかけは今年の初めに参加した某ミートアップで結構多くの人が3Dプリンターを所持しているようで私も買わないとこのビッグウェーブに乗れないなと思い、6万ぐらいのプリンターを買いました。買ったプリンターを有効活用したいと思い色々考えて、Project North Starのことを思いつきました。 周りの人の話で、リフレクターを仕上げるのが難しいという話で大変そうだなとは思っていましたが、ちょうど参加したミートアップですでに出来上がったリフレクターが買えるという話を聞き、それなら結構簡単にできるのかもと思い製作を決意しました。

作成の結果感想としては、

  1. パーツのプリントに時間が結構かかる(私のプリンターで1週間ぐらい)。そしてプリントしてたものが歪んでてショックだったことも...
  2. 図面通りのネジ、部品が日本では入手困難なものがある。
  3. 部品が揃えば組み立て、アプリ立ち上げはそんなに大変じゃない。
  4. 自作ガジェット(とは言っても説明書通りに組み上げただけだが)を作った達成感を味わえる。

と言ったところです。

懸念として現在、私が購入したディスプレイのドライバーボード(https://www.smart-prototyping.com/Project-North-Star-Display-Driver-Board)が品切れのようで、すぐに入手できないと思われます。ドライバーボード、ディスプレイ基盤が入手できない場合はexiiiさんが公開されている簡易版(https://exiii.jp/2018/07/19/project_north_star_jp-2/)を製作すると良いと思います。 というか基盤系の入手難易度が理由だか、この記事のようにgithubのProjectNorthStarのレポジトリみて作るほうがマイナー? とりあえず可能な限り忠実にgithubのProjectNorthStarのレポジトリの指示通りに作成しましたが、結構お金かかるのでお気をつけください。 なおPCはWindows10、GTX1070 Max-Qのものを使用して動作確認しました。 また説明が結構適当でメモ書きみたいになっており申し訳ございませんが、不明点があれば質問願います。

材料費

  • 基盤: $80 (約9000円)
  • ディスプレイx2 :$65x2 (約14500円)
  • リフレクター: $40 (約4500円)
  • LeapMotion: 9900円
  • 3Dプリンターフィラメント代: 1000円ぐらい?
  • MiniDisplayPort-DisplayPortケーブル:2000円
  • USB2.0ケーブル:200円
  • ボルトナットスプリング類:計4000円?
  • ジャンパーワイヤー:500円程度?
  • (溶接ヘルメット 3000円)

概算で48700円ですね。もっともジャンパーワイヤーやLeapMotionなど過去に買っていたものを流用したので、実際は3万程度追加で使ったかなという印象です。

手順説明

設計図などのダウンロード

githubのレポジトリを一式ダウンロードします。特にMechanicalのなかの North Star Release 3 3D Files/3D Printing STL.zip にフレームの3Dデータ(.stl)が保存されているので、こちらを解凍します。 GitHub - leapmotion/ProjectNorthStar: The open-source files comprising Leap Motion's Project North Star AR Headset. こちらの部品を揃えていきます。

購入が必要なパーツ

  • LeapMotion: 私は前から持っていましたが、最近はどこで買うのがいいのでしょうか? とりあえずアマゾンでありそうだったので貼っておきます。

Amazon CAPTCHA

  • 基盤(ディスプレイ用のドライバーボード) 左右のディスプレイを接続できるようになっています。またminiDisplayPortを搭載しており、PC側DisplayPortで接続します。 $80かかります。 Project North Star Display Driver Board

  • ディスプレイ(1440x1600) x2
    リフレクタに投影する映像を表示します。こちらが二つ必要です。$65 x 2=$130かかります。 www.smart-prototyping.com

  • リフレクタ 反透過で現実空間を観れる一方、現実空間にディスプレイの映像が重ねられて表示され、AR体験ができます。 こちらは左右で1セットになっています。$40です。 Project North Star Lens

  • DisplayPort Mini - DisplayPort ケーブル 上述基盤とPCを接続します。Smart PrototypingのHPには1mのケーブルが良いということでしたが、2mのケーブルでもいけました。

https://www.yodobashi.com/product/100000001002134414/

  • 5V電圧供給用ケーブル: 基盤に+-のピンが取り付けられており、そこに5V電圧で電力供給する必要があります。お手頃なのは安いUSB2.0ケーブルを買ってきて、USB Aオス側を残して逆側を切断し、電源供給用の線2本をジャンパーワイヤーと接続してピンに取り付けるのが楽だと思います。(USB 2.0ケーブルはなんでも良いと思います。私は秋葉原で200円ぐらいのものを買ってきました)

配線4本のうち、5V電圧の+-となる赤黒のみを使用します(データ転送用の緑白は使いません) なお基盤の販売サイトにも注意書きとして書いてますが、基盤のピン二つの+(赤、MiniDisplayPort側)と-(黒、MiniDisplayPortからみて奥側)の順序を間違えないようにしてください。逆流防止のダイオードは組み込まれておらず、最悪基盤が破損するようです。

f:id:hygradme:20190413144209p:plain
USB 2.0説明

(参考)USB2.0の生贄ケーブルですが、アマゾンで調べたらこの辺りがヒットしました。 Amazon CAPTCHA

今なら単体のものも再入荷しているようです。 Amazon CAPTCHA

3Dプリントが必要なパーツ

3Dプリンターは初心者でいまいち適切な設定がまだわかっておりませんが、 普通にstlファイルをスライスソフトで読み込み、接地面が最大になりそうな方向に回転させ、65mm/s、積層ピッチ0.2mm、ラフトありで印刷しました。 以下がプリントが必要なパーツです。

メインフレーム側

  • HMDメインフレーム(110-001) メインとなる部分。ディスプレイ、リフレクターを取り付けるフレームとなります。一番綺麗に印刷したほうがいいパーツだと思います。ちなみに私のプリンターなら分割なしで印刷できましたが、0.2mm積層ピッチで14時間ぐらいかかりました。

  • Facial インターフェース (115-001):おでこと接触するパーツ。

  • Leapmotion固定フレーム(120-001): Leapmotionを取り付けるフレームで、メインフレームの上側に来るパーツです。次に説明する基盤を取り付けるパーツ121-000がその上にきます。

  • 基盤固定フレーム(121-001): 基盤を取り付けるパーツです。 上記のLeapmotionを取り付けるフレームの上にくるパーツです。

  • 基盤固定パーツ(121-002): 基盤のMiniDisplayPort付近を固定するパーツです。ただこれをつけると基盤の5Vピンとぶつかってしまうのと、なくても一応なんとかなるので組み立て時は使用しませんでした。Release3.1バージョンではピンの部分がかけていて、ピンが通せるようになっているみたいです。

  • 上蓋(120-002): 上記の基盤を取り付けたパーツ121-001を上から蓋するパーツです。T265とかD435iとかStructure Coreで6DoF化したり、Mappingしたりする場合はここを差し替えるのだと思います。

  • Display固定パーツ(111-001:左 112-001:右 または 111-002:左 112-002:右) ディスプレイをはめ込み、メインフレームにディスプレイを固定させるためのパーツです。薄くてディスプレイとリフレクターへの距離が遠くなるバージョン(111-001、112-001)と 厚くて距離が近くなるバージョン(111-002、112-002)の選択になります。私は組み立ての部分で述べますが、薄いバージョン(111-001,111-002)を選びました。

頭部側面関連

  • メインフレーム接続パーツ 左右 (113-000,114-000) メインフレーム(110-001)とスライド式の側面パーツを繋げる部分です。スライド機構のレールとなるパーツ(900-005)をM2.5ボルトで固定します。

  • スライド機構用レール(900-005) x2 スライド部分(230-002,240-002)を通して、HMDを前後に調整できるようにするためのレール部分です。図面では6061のアルミニウム合金を使用するよう指定されていますが、加工が大変そうなので、こちらも3Dプリンターで作成しました。なお、レールの断面部分は少し小さめに(1mmぐらい)印刷しないとスライド部分をレールに通した時キツキツとなってしまい可動できなくなるので注意が必要です。

  • レール終端キャップ(110-002)x2 レールからスライド部分が抜け落ちないようにストッパーとなる部分です。

頭部上面固定関連

  • スライド部分(230-002,240-002) レールを通して、HMDを前後調節できるようにするパーツです。

  • スライダー取り付け部分(複合パーツ番号230-000,240-000)

    • 円形状パーツ(220-001) x2
    • 円形状パーツ(220-002)x2
    • S形状のパーツ(230-001,240-001) 左右
    • スライドブレーキ(230-003,240-003) 左右
    • ケーブル止めフック(230-004,240-004) 左右
  • 頭部上面メインパーツ(210-001) おでこ辺りの1/4ドーム形状のパーツです。

  • 頭部上部頭側パーツ(210-002) 上の1/4ドーム形状のパーツの内側に取り付けるパーツです。本来はウレタンフォームなどをここに挟んで頭へのクッションにするものと思われます。 なおこちらのパーツ印刷後にドーム形状のパーツに沿うように曲げないといけませんが、私はコンロで炙りながら少しづつ曲げました。

組み立て

基本は図面通りに組み立てていけば大丈夫です。 私は以下の順に組み立てました。(NorthStarの図面を転載)

  1. 左右のレール部分を組み立て

    f:id:hygradme:20190419213918p:plain
    sideframe

  2. メインフレームにディスプレイ、左右のレールを取り付け
    なお図面中の3番(690-001)の特殊なナット(加熱しながら部品の穴に入れると溶けて入り込む)が入手できなかったため、薄いバージョンを選び、4箇所の穴を少し広げ、ディスプレイ側からM2のナットを入れ、メインフレーム側からM2x8mmボルトで固定しました。なお図面でM2.5ボルトとM2.5の特殊ナットを使うペアが何箇所が出てきますが、ナットが手に入らないため全て無視しました。
    f:id:hygradme:20190419221221p:plain
    f:id:hygradme:20190419220242p:plain

  3. 基盤を基盤用の台に取り付け
    f:id:hygradme:20190419220301p:plain

  4. 基盤の台をLeapMotionを搭載する上側フレームに取り付け、上蓋で閉じる。上蓋で閉じる前に基盤へMiniDisplayportを繋いで、上蓋の溝にケーブルを合わせて閉じるとケーブルがすっぽり埋まって良い。
    f:id:hygradme:20190419220359p:plain

  5. 上側フレームをメインフレームに取り付け。
    f:id:hygradme:20190419220523p:plain

  6. レールに通すスライダーの作成(左右対称)
    f:id:hygradme:20190419220633p:plain

  7. 頭の上に乗るドーム部分の作成。なお3,4番はそのままつけるのではなく、6で作成したスライダーの穴に通してからつけるものと思われる。
    f:id:hygradme:20190419215037p:plain

  8. スライダー部分とメインフレーム部の結合
    f:id:hygradme:20190419220659p:plain

完成図 f:id:hygradme:20190419213145j:plain

なお図面の通りに組み立てて完成させても、頭に組み立てたNorthStar一式を固定することができず、ヘルメット形状の何らかの支えが必要になります。 他の方もよくやっているようですが、溶接ヘルメットの頭部固定部分を流用しました。 なお面の部分無しバージョンが配達に時間がかかるようで、一方面付きのバージョが3000円でしかもPrimeで買えるのでこちらを買いました。面はそのうち溶接したくなった時に有効活用します。

ディスプレイの接続確認

ディスプレイドライバーをMiniDisplayPort経由でPCに接続および電源をUSBなどで供給(PCなどのUSBポートですと電力供給不足でディスプレイがチカチカするだけで起動しないなどのことがあるので、USB電源アダプター経由で電源供給してください。なお私は当初5V-2.4Aのアダプタを使おうとしていましたが、電力供給が足りないらしく5V-3Aのものを追加購入しました。当初は5V-2AのアダプタとUSBケーブルを二つ用意し、並列でつなぎ電流をあげていましたが、試行錯誤しているうちにケーブルを買い換えたのもあるのか、5V-3A、USBケーブル1本で供給が十分になりました。

ディスプレイがしっかりと表示されたら、PCからNorthStarのディスプレイ2枚が1枚の追加ディスプレイとして認識されているはずです。ディスプレイ設定で「ディスプレイの拡張」を選択してください。 PC側ではNorthStarの2枚のディスプレイを1枚と認識しており、ここに真ん中で半分に分かれた映像を表示し、それが左右のリフレクターにそれぞれ投影され立体的に見えるという仕組みです。スマホVR・ARの仕組みに近いと思います。

アプリ起動

LeapMotionのドライバーのダウンロード

必ずLeapMotionのgithubのページのzipを解凍してexeを実行してインストールしてください。(公式サイトのものだと動かなかったです) 確認時点ではLeapDeveloperKit_4.0.0+52238_win.zipというファイル名でした。 UnityModules/Multidevice Service at feat-multi-device · leapmotion/UnityModules · GitHub

Unity2018.2 以降?のダウンロード

2018.2以降が必要であることが、Project North Starのレポジトリのページに記載されています。

LeapMotionのUnity Plugin(unitypackage)のダウンロード、プロジェクトへの読み込み。

githubのProjecrNorthstarページからpackageをダウンロード、Unityプロジェクトにインポートしてください。 github.com

サンプルシーンはAssets->Plugins->LeapMotion->North Star->Scenes->NorthStarです。

キャリブレーション

ヒエラルキーのAR CameraRigのwindow Offset ManagerのX Shiftの値を変更して、NorthStar実機のスクリーン上にゲームシーンが表示されるように調節してください。 値変化後にMove Game View to Headsetを押すことで画面を表示することができます。(押せば押すほどゲームビューが増殖するので、適宜Close all Game Viewsを押してゲームビューを消してください。

また、AR CameraRig->Head -> Leap Providerのxyzを変更することで、手の表示位置を調整することができます。

おまけ

とりあえず間も無く新しい時代がやってきますが、それを記念して元号の手話(平成、令和)を識別するジェスチャーを作ってみました。

Daily Routine Manager Privacy Policy

Privacy Policy

hygradme built the Daily Routine Manager app as a Free app. This SERVICE is provided by hygradme at no cost and is intended for use as is.

This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.

If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.

The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Daily Routine Manager unless otherwise defined in this Privacy Policy.

Information Collection and Use

For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to None. The information that I request will be retained on your device and is not collected by me in any way.

The app does use third party services that may collect information used to identify you.

Link to privacy policy of third party service providers used by the app

Log Data

I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.

Cookies

Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.

This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.

Service Providers

I may employ third-party companies and individuals due to the following reasons:

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.

Links to Other Sites

This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.

Children’s Privacy

These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.

Changes to This Privacy Policy

I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.

Contact Us

If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me.

This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator

今年のガジェット

2018年も終わろうとしていますが、今年購入したガジェット、よく使ったガジェットについて整理したいと思います。

新規購入ガジェット

1月

  • なし

2月

3月

4月

  • FirstVR

5月

6月

  • HTC Vive Tracker 2.0 x3
  • 指向性スピーカー
  • Intel RealSense D435

7月

  • HTC Vive Pro Fullset
  • Giiker

8月

9月

  • なし

10月

  • Vuzix Blade

11月

12月

  • Line Clova
  • Clova Friends Dock
  • WebCam
  • Tello
  • Wireless earphone
  • Realsense D435i

よく使用したガジェット

  • iPhoneX
    メインスマホ。2017年に購入。自身初のiOSスマホをメインに使用。Androidに比べてレスポンスの良さ、背面デュアルカメラによるポートレート撮影、TrueDepthによる顔認証、3Dスキャン、AirDropを始めとする他のMac製品との連携などは便利で良い。 一方、ウィジェットが自由に配置できない、PCとつないで自由にデータを出し入れしずらい、アプリ開発に制約がある(アプリがバックグラウンドになっているとき音・バイブレーションを自由に選べない、実機でアプリをテストするときにxcodeを経由しないといけないなど不便なところはある。 全体として、メインに使うには良いスマホである。当分メインで使用する予定。

  • Hololens
    2017年前半に購入するが、作りかけのアプリを3個ぐらい放置した状態で2017年は終わってしまう。2018年後半にHoloDartAssistantをとりあえず仕上げストアにリリース。おかげで知り合いが結構増えた。アウトプットの重要性を再認識する。

  • Mirage Solo
    2018年のGWあたりに購入。初のスタンドアロン6DoFのVRデバイスで購入時感動し、コントローラーが3DoFにも関わらず卓球アプリTableTennis6DoFをDaydreamStoreにリリース。ダウンロード数は自分が出したアプリの中では最高記録を達成したが、UIUXの悪さ、非対応デバイスのインストールによる不満等もあり評価はかなり低くなってしまった。6DoFコントローラーが来年一般販売されたら改良してより使いやすくしたい。

  • Macbook Pro 13inch
    2017年後半に購入。開発のメインPC。選定理由はiOSアプリ開発にMacが必須だったため。Hololensアプリ開発にも使用するためParallel DesktopでWindows Proを入れてWindowsとしても使用。持ち運び便利で不満はあまりない。あえて言うならVRデバイス用のマシンとして使えない、ディープラーニングの学習を行う・フォトグラメトリするにはスペックが足りないぐらい。NvidiaのGPU搭載版が出てくれたらな.... 一応外付けGPUも試したが、取り外しはシャットダウン時のみ、持ち運びでしづらい、Macのアップデートで使えなくなる等の問題があり実用性が低いと感じた。

  • 自作PC (with GTX 1080) Windows Pro とUbuntu
    2017年後半に購入。ディープラーニング用に購入したが、2018年前半はなぜかマイニングをひたすらさせ一ヶ月の電気代が4000円上昇すると言う事件が発生。仮想通貨の価格暴落によりマイニングは停止。2018年半ばからフォトグラメトリ用マシンに変わり、終盤はディープラーニング用に復帰。

  • Pixel3
    11月上旬に到着。基本は2枚目のsimカードで出先でのテザリング用。暗所での写真撮影が極めて綺麗。またAndroidなのでクラウド上のLinuxマシンにアプリから接続し機械学習の学習状態を確認できるのが良い。DaydreamもARCoreも対応なのも良い。

  • iPad Pro10.5と Apple Pencil
    2018前半に購入。iPad2を前に購入してサーフェイスに乗り換えてからずっと使っていなかったが、メイン機をMacbookに変えてからペンが使える文章閲覧端末が必要だと思って購入。 Apple Pencilの書きごごちはかなり良い。iPad2時代にペン先に透明のディスクがついているペンとか筆とかで頑張ってた時に比べ圧倒的に便利になった。一方後半に発表されたiPad Pro 11inchはFaceID、TypeC、ペンの充電方法改善などでさらに便利になっているようでそちらを待っても良かったかなとも思っている。

  • Structure Sensor
    2018中盤に購入。3Dスキャンに前から興味があったのでiPad Proで使用できる物を購入した。itseez3Dによって手軽に様々な物をスキャンできて便利。なおそのあとフォトグラメトリも着手し始め、GTX1080で計算に結構時間がかかってしまうが、意外と綺麗に3Dモデルを作成できることがわかり、状況によってどちらを使用するかの見極めを行う必要があると思っているところ。

  • Line Clova とClova Friends Dock
    去年Google Assistantをラズパイに入れてスマートスピーカー買う必要ないなと思っていたが、赤外線対応など実現できていない部分があったのでスマートスピーカーの既製品を購入。 キャンペーンでClovaが3000円程度で変えて、Dockも含めて7000円程度で揃えられた。部屋のエアコン、電気、目覚まし、外から家電の遠隔操作などができ急速にIoT化を進めることができた。

来年使用・購入予定のガジェット

  • Looking Glass
    今年は間に合わなかったが、年明けすぐに到着する予定。何に使えるかは要検証だがかなり気になっている。

  • Qrio Lock等スマートロック系
    Line Clovaが対応したら部屋の鍵をスマートロックにしたい。

  • Oculus Quest
    コントローラー6DoFはかなり魅力的。初のOculus製品の購入になりそう。

  • Hololens2?
    出たら必ず買う。端末で機械学習の推論が結構できるようになるとの噂があるので期待。

  • xArm
    Kickstarterで20万以上投入。予定通りなら2019年4月発送らしい。2019はロボット制御にも足を踏み入れたい。

  • Vuzix Blade
    流石に2019には技適通るだろうから、そしたら色々実験したい。

  • Magic Leap
    とりあえず試してみたい。

  • Tello PayPayに便乗して購入。プログラムによるドローン制御はやってみたい。