Goe3 のすべての投稿

概要

BLEデバイスを使用し、BLEタグをハックする

想定読者

Arduinoなどを使用しBLEデバイスを作った後、実際にBLEデバイス量産を踏まえた開発を行ってみたい方

はじめに

こんにちは。ハードエンジニアの川越です。
IoTデバイス等でBLEデバイスの開発をしたい!となると、実際の商品化を前提に開発を進める事が出てくると思います。
今回は、量産化を踏まえた開発が可能な開発キットを使って、市販のBLEタグをハックし、Lチカするまでを紹介したいと思います。(2017/1月に書いてからずっと放置していた記事なのでちょっと古い情報です)

開発デバイス&環境

BLEモジュール

低消費電力ながら処理能力の高いCortex-M4を搭載した、SiliconLabs「BGM113」開発キットを使用します。
BGM113
BGM113 開発キット

BLEタグ

Amazonで販売していた「Logitec Bluetooth 4.0対応 BLEタグ」を使用します
BLEタグ

開発環境

BlueGeckoシリーズ用の開発言語、BGScriptを使用します
(BLE開発が初めてという方にお勧めの開発言語との事ですが…言語としての制限が多すぎるので、Cでの開発がおすすめです)

タグの解析

BLEタグを外部から制御する為に、タグの解析を行います。
BLE接続が可能なアプリを使用し、内部でLED点灯に関係していそうな値を探します
今回は、Alert Levelに0x01 or 0x02を書き込んだところ、LEDの点灯が出来ました

コンパイルの実行まで

  1. 開発環境ダウンロード先
  2. インストーラ選択bgm
  3. コマンドラインより[bgbuild.exeのパス  bgプロジェクトのパス  -f]を実行
    例 : 「C:\SiliconLabs\bgm-1.0.4-1073\bin\bgbuild.exe XXX.bgproj -f」

タグに接続し、LEDを点灯させる

  • BGScript(.bgs)
# le_gap_scan_response
dim lg_i # overall ad data position index
dim lg_j # individual ad field position index
dim ad_field_length
dim ad_field_type

event system_boot(major, minor, patch, build, bootloader, hw)
 # configure scanning (100ms interval, 100ms window, passive)
 call le_gap_set_scan_parameters(160, 160, 0)

 # start scanning
 call le_gap_discover(le_gap_discover_generic)
end

event le_gap_scan_response(rssi, packet_type, sender, address_type, bonding, data_len, data_data)

 lg_i = 0

 while lg_i < data_len
 
 ad_field_length = data_data(lg_i:1)
 ad_field_type = data_data(lg_i + 1:1)

 if sender(0:3) = $02E2C7 && sender(3:3)=$441319 then
 if ad_field_type = $02 || ad_field_type = $03 then # partial ($02) or complete ($03) list of 16-bit UUIDs
 lg_j = 0
 
 while lg_j < ad_field_length

 if data_data(lg_i + lg_j + 2:1) = $1802 && data_data(lg_i + lg_j + 3:1) = $2A06 then
 call le_gap_end_procedure()
 call le_gap_open(sender(0:6),address_type)

 # set loop counters to 100 so we'll stop looking
 # (there is no "break" function in BGScript)
 lg_i = 100
 lg_j = 100
 end if

 lg_j = lg_j + 2

 end while
 end if
 end if

 lg_i = lg_i + ad_field_length + 1

 end while
end

event le_connection_opened(address,address_type,master,connection,bonding)
# connection established
 call gatt_write_characteristic_value_without_response(connection, address(:), 1, $01)
end

まとめ

実際の開発に当たっては、Simplicity Studioを使用して開発する事になるかと思いますが、IoTデバイス開発に必須の電源測定機能など、開発に必要な機能が各種ありますのでおすすめです。が、BGScriptでの開発は…マジでやめておきましょう。配列使えないとかあるので。

補足

本デバイスをそもそも使用したのは
1. 外部ネットワークからWifi経由でBLEデバイスを制御したい
2. 外部ネットワーク操作からデバイスがレスポンスするまで1s程度
3. BLEデバイスをボタン電池2個で1年持たせる
という要件があり、それの検証時に使用したものです。
IoTデバイス開発でお困りの方がみえましたら、ご相談頂けますと幸いです。


概要

NAO専用椅子の紹介(スマロボから販売予定です。興味がありましたら、お問い合わせ下さい)
なお、開発にあたっては、Fubright株式会社様と共同で開発させて頂いております

はじめに

07/27-30に開催されるロボカップにスマロボも展示するよ!の宣伝のために、急遽ブログを書いているハードエンジニアのGoe3です。

NAO向けの椅子を作った経緯

NAOを使って頂いている方々から、NAOの展示や受付等を行う際に「転ぶのが心配だなーでも座らせると体育座りだから机の上ではちょっと…」というお話を頂きます
スマロボでも、NAO用の椅子って作れないかな?という相談を受けました。

既製品は存在する?

NAOの椅子は、既製品として既に樹脂製やDIYの物があったりしますが、他社製のものは20~30万くらいしちゃうんで、気軽には買えない気がします。
他社充電機能付 $2,490
DIY 個人製作?
という訳で木材(MDF)を使って、設計・デザインしてみました。

CADイメージ

NAOが座る部分は、若干摩耗していくので、矢印の2パーツは取り換え可能になっていたり、背面の穴を使って、充電ケーブルを固定可能です。

 

実物

座らせるとこんなイメージになります。
写真はMDFのままですが、製品の方は塗装仕上げを行いますので、より木材に近い質感と耐久性が向上したものになります!

まとめ

ロボカップでも、これらガジェットや、自社開発ロボット、その他ロボット関連の製品を展示しておりますので、ぜひ遊びに来て下さい

おまけ

ちなみに、PCアームでがっつりNAOを支えたいなーという方はこちら


想定読者

HTC Vive Trackerと色々なハードウェア(例えばガンコン)を繋げて、それらの入出力を取りたい人

必要なスキル

はんだ付け
3Dプリント or 穴あけ作業

概要

こんにちは。今度 de:code 2017 に遊びに行く、ハードウェアエンジニアのGOE3です!
今回は、HTC Vive Trackerから出ているポゴピン(電極)を扱いやすくする方法を紹介させて頂きます。
IMG_20170517_232829

まとめ

以下のパーツを使うと、ポゴピンにアクセス出来るようになります

電子部品

http://akizukidenshi.com/catalog/g/gP-08269/
http://akizukidenshi.com/catalog/g/gP-10440/

tracker固定用ネジ

http://amzn.asia/iTuoYmu

3Dプリントパーツ

http://www.thingiverse.com/thing:2329363

製作した経緯

最近、とあるVRの会社さんから、HTC Vive Tracker にはポゴピン(電極)が付いており、ここにアクセス出来ると、インプット・アウトプットに使用出来るのだけど、公式パーツが未だ出ていない為、市販品を使って簡単にアクセスする方法は無いだろうか?と相談を受けました。

1

ちなみに、HTC Vive Trackerについては、坪倉さんのサイトで丁寧にまとめられています。(電極へのハックもされていますね)

で、ポゴピンへのアクセスを難しくしている原因の一つが、3mmピッチという仕様。ポゴピン買ってくるのも一般的じゃないよなぁと思い、何とか出来ないかと悩んでいたのですが、ふと「1.778mmピッチのICソケットなら、一つとばしで当てれば大体フィットするのでは?」と思い付きました。

具体的には、これを11端子分切り取ります。
http://akizukidenshi.com/catalog/g/gP-08269/

で、秋月の1.778×2.54ピッチ変換基盤と組み合わせます。
http://akizukidenshi.com/catalog/g/gP-10440/

IMG_20170518_223543

後は、Trackerに取り付ける為のパーツを作って完成!
スイッチは、各インプット端子と、GNDが繋がるようになっています。
IMG_20170517_232539IMG_20170517_232829

実際の動作試験は、フォージビジョンのVRエンジニアである、izmさんにお手伝い頂きました。
https://twitter.com/izm/status/865218203735031808

未検証ですが、trackerのネジ位置合わせて、基板側に穴を空ければ、3Dプリントする部品が無くてもいける気がします。3Dプリンタが無い!という方はお試しいただけますと幸いです。

ハードウェア周りについては色々とご相談を受けていますので、ハードが弄れれば、もっと色々な開発出来るのに!という方が見えましたら、一度ご相談下さい!


はじめに

ども、ハードウェアエンジニアのGOE3です。
CADデータをUnityに持ってきてHoloLensで表示したいと思ったのですが、Unity CAD Importer を使うには、Unity Proライセンスが必要だったので、無償版の Unity にCADのアセンブリデータをインポートする方法を探してみました。

HoloLens(Unity)でCADモデルを表示した結果

SR0220170413_144348_HoloLens
途中でSTLに変換するので、色情報は落ちちゃいますね。

検証環境

Windows10
SolidWorks 2016
Unity 5.5.2
Blender 2.78

手順概要

  1. CADデータをSTL形式に変換する
  2. Blenderで、STLをOBJ形式に変換する
  3. OBJファイルを、Unityにインポートする

SolidWorksで、CADデータをSTLに変換する方法

  1. アセンブリファイル「.SLDASM」を開く →「.SLDPRT」形式で保存
  2. 「.SLDPRT」ファイルを開く →「.STL」形式で保存
    ※ 「.SLDPRT」ファイルの場合は、2のみ。
    ※ ファイル数が多いモデルや、形状が複雑なモデルの場合は、データ変換時に停まるので、マシンパワーを上げるか、不要な部分を削除下さい。

Blenderで「.STL」を「.OBJ」に変換する方法

  1. Blenderを起動後、中央に配置されているボックスをクリック -> Deleteボタン -> Deleteメニューが出てくるので削除
    1.bl
  2. File → Import → Stl(.stl)を選択
    2.bl
  3. STLファイルを選択し、Import STLを選択
    3.bl

  4. File → Export → Wavefront(.obj)を選択
    4.bl

  5.  保存先を選択し、Export OBJを選択
    5.bl

UnityでOBJファイルをインポートする方法

こちらを参考に
※インポート後、モデルが非常に大きいサイズになっているかと思いますので、ScaleをXYZ共に小さくすると良いかと思います。

モデルを動かす場合

アセンブリファイルから、腕・ボディなど、個別に変換し、スクリプトで動かすと、モデルを動かす事が出来ます

Unity内でメッシュデータを間引く場合(有償)

多分、これで変換出来ると思いますが、未検証です。

VRは寿司 Krabl Mesh Processors #アセットアドカレ


https://www.assetstore.unity3d.com/jp/#!/content/12079

HoloLensにUnityアプリを持ってくる方法

HoloMagiciansの方が、HoloLensのチュートリアルを日本語訳されてみえます。ホログラム 100を参考に
(ありがたいなーと思っていたところ、リグを作って遊んでいたせいで、先日HoloMagiciansのメンバーに追加頂きました!)


概要
HoloLensのSpectorView(第三者視点投影)で使える、HoloLensリグの紹介
IMG_20170224_005510

まとめ

HoloLens のリグを設計しました。ご入用の方はこちらからご注文下さい!

リグ発注先

【個人向け】->  上パーツ     下パーツ

【企業向け】->  上下パーツセット
(個人向けと内容は一緒です!川越のお昼ご飯支援するよー!という方はこちらからお願いします!)

【Oversea  or Print in black 】 ->  上パーツ  下パーツ

 海外在住の方 or 黒色で出力されたい方向け (このサイトで発注した事が無いので、出力された方は結果を教えて頂けますと幸いです!)

共通部品 (各1個 必要)

高ナット(鉄/生地)
(+-)ナベ小ねじ (ステンレス)(パック品)

カメラと繋ぐ場合

JJC製良質 ホットシュー シューアダプター 連結ネジ
六角ナット

三脚と繋ぐ場合

八幡ねじ 変換ジョイント W1/4-M6 20山&P1.0
六角ナット

あると取り外しが楽になるパーツ

ノブボルト(M6 × 10~20mm) 2個
例 : 三星 キャンディノブボルト M6×15

はじめに

こんにちは。ハードエンジニアのGOE3です。
先日、HoloLensを(2年以上のお昼ご飯代と引き換えに)ようやくGETし、遊び始めました!!
ところで、HoloLensが届いた次の日に、MicroSoftからSpector Viewという、HoloLensの視点を第三者と共有出来る仕組みが出てきました。

面白そうだなーと眺めていたのですが、HoloLensをカメラにマウントする部品をよく見ると、アルミ削り出しな上に「欲しい人は、近くの加工屋さんに依頼してねー!」との事。
aaa

高そうだなーと思いつつ 、とりあえずProtoLabsに見積もりを投げてみたところ、総額16.6万+台座の3Dプリント代でした。(もっと安く依頼出来るとこもあるとは思いますが…)

Protomitumoriprotomitumori2

これを3Dプリンターで再設計して販売出来れば、世の為人の為(ついでに僕が再びお昼ご飯を食べられるようになる!)と思い、設計してみました。
bbb

で、設計と出力したとこまでは良かったんですが、Spector Viewって複数台使わないと検証出来ないんですよね…
どうしようかなー?と思っていたのですが、丁度遊びに行く予定だったVR CREATIVE CONNECTION 2017 WINTERで、最近HoloLensも取り扱う会社(HoloLab)を立ち上げられ、KinectやRealSense本でお世話になった、中村薫さんにお渡しでき、その後専用設計のご依頼を頂きました!
また、VR Tech Tokyo #6 @ Microsoftでは、マイクロソフト エバンジェリストの高橋忍さんにもご好評いただいています

総評

アルミ削り出しよりは耐久性は落ちると予想していますが、全体的に軽く締め付ける構造にし、ガッチリ固定出来るようになっています。
また、公式リグとの差別化として、HoloLensヘッドパーツの取り外しが不要・背部より映像確認が可能・軽い・取り外しが楽といった点があります。
なお、リグ上部の3個の穴は、追加パーツ取り付け用に置いていますので、今後要望次第で、色々なパーツを取り付けられるようにしていきたいと思います。

組み立て方法

HoloLensのヘッドバンドを少し後ろにずらし、上下からネジで締めこみます(締めすぎ注意)
bunkaigoIMG_20170224_005510IMG_20170224_005521

補足

販売ページとは別に、個人的にご連絡頂ければ、もちょっとお安くしたり、特定カメラ専用設計のお仕事も出来るかと思います。
お気軽にFBよりメッセージをお願いします!
ちなみに、03/25に開催されるTokyo HoloLens ミートアップ vol.2 にも参加予定ですので、そちらで直接触って頂く事も可能です!

Spector View とは

マイクロソフト、HoloLensで見える世界を他の人に高画質ライブストリーミング配信できるリグ「Spectator View」を発表。自社のライブデモでも使用


概要

NAOの転倒防止アダプターの紹介

はじめに

こんにちは。ハードエンジニアのGoe3です。

皆さんは、NAOの展示等を行う際に「転ぶのが心配だなー」と思った事は無いでしょうか?

スマロボでも、NAOアプリの開発を行っているたく爺より「NAOのモーション作成時に、転倒しないような物が欲しい」という要望を受けてました。

そこで、PCモニターアームと繋げれば良いかな?と思い、(一時期ドキュメント作成で溜まっていたフラストレーション発散に)試作してみました。

ついでに、2017/01/18-20に開催されスマートロボティクスも出店するロボデックス(ダイレクトマーケティング)に展示するNAO用マイクマウントも、昨日(1/16)要望があり突貫工事で製作しましたので、併せてご紹介致します。

CADデータ

NAO転倒防止アダプター

naomountback

マイクマウント

mimimimi3

取り付けイメージ

IMG_20170117_111627IMG_20170117_111621IMG_20170117_111645

写真撮影時は電源未投入ですが、起立可能です。
利用シーンとしては、NAOのモーション作成や、展示会などでの安定運用(転倒防止)に使用できるのでは無いかと思います。

マイクマウントは、見えている方のマイクはダミーで、耳の中に、NAOの音声を拾う為のマイクを仕込んでいます。
マイクをスピーカー等に接続する事で、展示会でのデモをより効果的に行えるかと思います。

まとめ

スマロボでは、NAOの転倒防止について、様々なアプローチを行っております。次回はソフトウェア的なアプローチについて、弊社技術メンバーより紹介出来るかと思います。ご期待下さい!!

おまけ

空も飛べるよ!!
IMG_20170117_111407

 


こんにちは。ハードエンジニアのGOE3です。
今回は、最近趣味で作ったロボットハンドについて紹介させて頂きたいと思います。

昨今、3Dプリントデータを公開するページを見ていると、多種多様なロボットハンドが公開されています。
しかし、駆動する多くのロボットハンドが「複数パーツを組み合わせる」「柔軟性のある樹脂材を使用する」といったアプローチで設計されております。

そこで、世にあるモノと同じ設計を行っても面白く無いなと思い、以下の条件を目標に設計してみました。
一通り出来ましたので、STLデータを公開させて頂きたいと思います。興味のある方は出力をトライして頂けますと幸いです。

  •  設計目標
    • 一般的な樹脂材(ABS)で造形可能
    • 廉価な3Dプリンターでも出力可能な、150mm角以内
    • 指が曲がる構造
    • 手の組立が不要(1度で出力可能)
    • 組立が出来るだけ簡単である事(理想は小学生でも組立可
  • 設計・造形環境
    • 設計ソフト : Solidworks 2016
    • 造形機 : ZORTRAX M200
    • 材料 : Z-ABS (積層ピッチ 0.19 以下,サポート角度10-20°推奨)
  • 形状イメージ
    • 成人女性の手(上司から「彼女創ってるの?」と聞かれましたが、造形サイズ制限が理由です!多分…)
  • 完成物

  • 解説
    • 関節部について
      • 関節部分を若干塑性変形する形状にする事で、曲げに対応させています。製作過程は、モデルデータ配布先で見て頂ければと思います。
      • %e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3
      • 耐久性はあまり無いように思っているのですが、半日ほど連続稼働(各指毎に約3000回程駆動)しても、壊れませんでした。サーボの方は焼けそうでしたが…
    • 改善したい箇所
      • 物を掴む形状にする(親指位置の変更/可動域改善/サーボ変更及び固定用パーツの別出力)
    • 今後トライしてみたい事
      • 弾性素材でも出力してみたい
      • 弾性のある紐で指とサーボを接続したかったが、適切な弾性素材が見つからず、現状は親指以外はワイヤー駆動。全指対応したい(これが出来れば小学生でも組立可)
  • まとめ
    • ソフトロボティクスに代表されるように、構造・素材を活かした柔らかい(人と触れ合える)ロボットを作りたいなあと考えています。今回は、そのアプローチの一つとしてこういった設計をしてみました。来年は素材の面でも色々挑戦していきたいです。