ページ

2019年2月16日土曜日

遅ればせながら自作キーボードデビューしました

最近自作キーボードが熱いですね!技術書典でキーボード島の熱気を横目に見ながら、面白そうなことやってるなぁと、つい最近まで傍観に徹していました。

というのも、自分は10年以上Thinkpadのキーボードを使い続けていているせいでTrackpointがないと生きていけないと思っていましたし、何よりJIS配列が手に染み付いているので英字配列のキーボードにはどうにも抵抗があってなかなか手が出せずに居ました。

そんな中、先日キーボード沼に一足先に浸かっていた @hecomi さんから自作キーボードについて熱く語られた上、断る理由を全て論破されてしまったので、ここはひとつデビューしてみることにしました。

Trackpointは後付可能だし、基板を起こせばトラックボールやタッチパットだってつけられる!
※キーマップはQMKで自由自在にいじれるし、基板を起こせばキー配置だって自由自在、キートップだって既成品の108キートップにバリエーションがないなら作ってしまえば良いじゃない!

--

で、先日ついに初めての自作キーボードを完成させました!



初めての自作キーボードに選んだのは、@omkbd さんの、ErgoDash(親指あり)です! 

もともと左右分割キーボードに興味があり、親指シフトなどの親指に仕事を割り振るようなキーボードも触ってみたいと思っていたのでセパレート型のキーボードで良いのがないかを探していました。また、Ortholinear配列は親指周りが窮屈そうな見た目だったので、親指部が独立しているColumn Staggered配列なキーボードに狙いを絞りました。

探し始めた当初は慣れ親しんだThinkpadのパンタグラフ式キーボードに近いLow Profileのスイッチが使えるキーボードを物色していたのですが、


と、Low Profileのセパレートキーボードは手に入るものがありませんでした。
また、Corne Chocolateはキー配置が同じCorne Cherryを遊舎工房さんの店頭で試し打ちしたところ、存在しない数字キー行の文字をタイプしようとして指が空を切ることに衝撃を受け(特に'-'キー)、いきなり40%キーボードはハードルが高すぎるのではないかと考えなおしてしまいました。

また、Kailhロープロファイルスイッチは全高こそ低いのですがストロークは3.0mmと通常スイッチと比較して0.5mmしか変わっておらず、また動作点は1.5mmとなっておりKailh Speedスイッチのほうが動作点は短くなっています。

実際に遊舎工房さんの店舗で触ってみた感じでも、そこまでロープロファイルスイッチにこだわらなくても良いかな?と思ったので、結局その場で在庫のあったErgoDashを購入しました。

--

組み立て


組み立てにあたって購入した部品のリストは以下のような感じになります。ErgoDashのキットにはPro Microは同梱されているのですが、Type Cのコネクタが良かったので最近出たPro Micro互換のElite-Cを店舗で同時に購入し、それを使って組み立てを行いました。


購入場所品名値段備考
遊舎工房ErgoDash 親指あり14,040円初めての自作キーボード
遊舎工房Kailh Speed Copperスイッチ 70個3,010円パンタグラフっぽい打ち心地を目指してこれにしてみました
遊舎工房Elite-C 2個5,184円ちょっとお高いですが、USB Type-Cのためです…
遊舎工房BigBang キーキャップ7,020円見た目が気に入っているのでこれにしました
千石電商3mm LED 電球色 80個3,200円キーキャップの色味に合わせるならこの色かなぁと
千石電商200Ω チップ抵抗(3216) 100個400円ビルドガイドでは470Ωですが、明るくしたかったので…
千石電商1kΩ チップ抵抗(3216) 10個50円
千石電商TRRSプラグ 2個600円見た目で選びました
秋月電子Nch チップMOSFET 10個240円
秋月電子WS2812B 30個1,080円※注
合計34,824円Elite-Cがちょっと高かったですね… それを除けば30,000円に収まります 

※似た名前のWS2812Sという製品を千石で取り扱っていますが、互換性がないので注意してください!!

バックライト用LEDの抵抗は公式のパーツ表では470Ωとなっていますが、これだと購入したLEDには4mAしか電流が流れず暗い気がしたので、抵抗を200Ωにして流れる電流を10mAまで増やしました。
※消費電力的には全てのLEDを点灯した状態で両手で1A程度なのでまぁ良いかという程度なんですが、バックライトLEDのドライブ用FETが非常に小型なのでちょっと心配です。常時運用するのであれば少しバックライトLEDの輝度を下げた状態にしておいたほうがよいかもしれません。

組み立てにあたっては、まずElite-C取り付け時にType-Cコネクタが干渉する部分の基板を削ります。組み立てた時の厚みが増えても大丈夫な場合はスペーサーを延長しても良いですし、Elite-Cを本来付ける位置と逆側に表向きに取り付けて、アクリル板側を削ることもできると思います。


PCBを削った場合には、この部分に右手のRGB LEDのシリアルが通っていますので、そこの部分の配線もなくなってしまいます。ただ、左手マスターで組む場合には右手のRGB LEDはTRRSジャックから来たシリアルで光るので、左手マスターで組む場合には特に何もする必要はないと思います。右手マスターで組む時だけ、以下のようにD3ピンをジャンパで繋ぐ必要があります。



また、Elite-Cにもともと付いているリセットスイッチは組み立てた時に裏側に取り付けるキースイッチと干渉してしまうので、予め剥がしておきます。剥がしたスイッチを再利用する必要はないと思いますので、パターンを剥がさないように注意しながら、鋭いニッパーでスイッチを破壊して、最後にはんだごてでランドを外せば簡単に剥がすことができます。

 


その他の点については、公式のビルドガイドに沿って組み立てればOKです!

組み立てが終わったらqmkのファームウェアを書き込みます。
Elite-Cへの書き込みの際には、`rules.mk`のBOOTLOADERのところを


BOOTLOADER = atmel-dfu

に変更して、基板をUSBでPCに接続した状態で、基板に付いているリセットボタンを押したら

make ergodash/rev2:default:dfu

で書込みできます。

※個人的にハマったこととしては、せっかくLEDを頑張ってつけたのでバックライトLEDのほうも明るさを自動で変更したりしたかったのですが、残念ながら`BACKLIGHT_BREATHING`はマスター側のバックライトの明るさしか変更することができないようです… 
※仕方ないので、今はRGBライトの方のモードをBREATHINGにして我慢しています

少しだけ残念だったのは、保護紙を剥がした際に両手ともここの部分のアクリルにヒビが入っていたところでしょうか…
※どの段階で入ったものなのかは分かりません…


まぁ力がかかる部分ではないのでアクリサンデーで接着した上で組み立て、もし見た目が気になるようであればレーザーカッターで切り直すことにしました。

--

キーマップの設定


キーマップは日本語JIS配列に合わせて、以下のように作成しました。
keymap_jp.hをインクルードしてわかりやすい識別子で日本語キーを定義しています

  /* Qwerty
   * ,--------------------------------------------------------------------------------------------------------------------------------------------------.
   * | ZHTG(GUI) |   1  |   2  |   3   |   4  |   5       |   ^   |                      |   \   |   6       |   7  |   8   |   9  |   0  |  -          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Tab       |   Q  |   W  |   E   |   R  |   T       |   [   |                      |   ]   |   Y       |   U  |   I   |   O  |   P  |  @          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Esc(Ctrl) |   A  |   S  |   D   |   F  |   G       | PrtSc |                      |       |   H       |   J  |   K   |   L  |   ;  |  :          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Shift     |   Z  |   X  |   C   |   V  |   B       | Raise |                      | Lower |   N       |   M  |   ,   |   .  |   /  |  \(Shift)   |
   * |-----------+------+------+-------+------+-----------+-------+-------+------+-------+-------+-----------+------+-------+------+------+-------------|
   * |           |      |      | LOWER |||||||| Bksp(Alt) | Space |  LClk ||||||||  RClk | Enter | Del(Ctrl) |||||||| RAISE |      |      |             |
   * ,-------------------------------------------------------------------------------------------------------------------------------------------------.
   */
  [_QWERTY] = LAYOUT( \
    GUI_T(JP_ZHTG) , KC_1   , KC_2   , KC_3   , KC_4   , KC_5           , JP_CIRC,                         JP_YEN , KC_6           , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS        , \
    KC_TAB         , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T           , JP_LBRC,                         JP_RBRC, KC_Y           , KC_U   , KC_I   , KC_O   , KC_P   , JP_AT          , \
    LCTL_T(KC_ESC) , KC_A   , KC_S   , KC_D   , KC_F   , KC_G           , KC_PSCR,                         XXXXXXX, KC_H           , KC_J   , KC_K   , KC_L   , KC_SCLN, JP_COLN        , \
    KC_LSFT        , KC_Z   , KC_X   , KC_C   , KC_V   , KC_B           , RAISE  ,                         LOWER  , KC_N           , KC_M   , KC_COMM, KC_DOT , KC_SLSH, RSFT_T(JP_BSLS), \
    XXXXXXX        , XXXXXXX, XXXXXXX, LOWER  ,          LALT_T(KC_BSPC), KC_SPC , KC_BTN1,       KC_BTN2, KC_ENT , RCTL_T(KC_DEL) ,          RAISE  , XXXXXXX, XXXXXXX, XXXXXXX          \
  ),  


自分がハマった注意点としては、MT_マクロ(キーの長押しと短押しでキーアサインを変える設定)は、Modifierキー(Ctrl, Shift, Alt, GUI)にしか使えないというところでしょうか…
特にエラーは出ずにビルドが通ってしまうので、勘違いしたまま`俺が考えたさいきょうのキーマップ`を作成してしまうと、後で動かないことに気づいて考えなおすことになります。※なりました

なるべく親指に仕事を割り振りつつ、MT機能を使ってなるべく多くのキーをJIS配列から崩さずにデフォルトレイヤーに入れたつもりです。他のレイヤーについてはマウスキーを入れたぐらいで、ほとんど変えておらず、あまりLower/Raiseキーは使いこなせていません…

正直、組み立てにかけた時間よりもキーマップをいじくり回している時間のほうが長かったかもしれないです。まだ自分の中でしっくりきてない部分もあるので、試行錯誤中ですね… これはの予感がします…

--

EndGameに向けて


今使っているのはMDAプロファイルのBigBangですけど、やっぱりもう少し高さが低いキーキャップが欲しいと思っています。いくつかMDAより薄いプロファイルのものもあるようなので、いくつか買って試してみますかね…()
※もしくはやっぱりLow Profileで組んで、射出成形で好みのキーキャップを作るとかでしょうか…

Thinkpadのキーボードと併用しているとどうにも、キーのStaggerd方向が違うので指が混乱しがちで、キーの間をタイプしてしまうことが結構あることがわかってきました…
ただし、親指キーは実際に使ってみて非常に便利なので、もしかするとRow Staggeredな親指キーボードが次のEndGame候補になるかもしれないですね…()

後はやっぱりThinkpadトラックポイント愛用者としてはキーボードから指を離さずにマウス操作ができるようになりたいです… 今はマウスキーを使ってHJKLでマウスカーソルを動かしているのですが、どうにもしっくりこないので、ダメそうだったら小さいトラックボールかタッチパッドを付けたいですね… ただ良いデバイスが見つかっていないので、継続的に探していく必要がありそうです()

--

この記事はErgoDash (親指あり; Kailh Speed Copper)で書かれました。

2018年12月29日土曜日

ドローンにJetson TX2を載せて自律制御する (ハードウェア準備編)

Project C.G.S.では、現在次期大会に向けてドローンの機体制作を行っています。


※残念ながらドローンの開発とUnityは特に関係ありません

MBZIRC 2017に参加した機体ではコンパニオンコンピュータにHardkernelのOdroid XU4を使用していたのですが、計算資源に余裕がなく、あまり複雑な認識処理を行うことができなかったので、MBZIRC 2020に向けて制作している機体ではNVIDIAのJetson TX2を使用することにしました。

※最近、NVIDIAからはJetson TX2iやAGX Xavierなどの新しいボードが出ていますが、(キャンペーンで開発キットが定価の半額で購入できる)Jetson TX2もコスパという意味では負けていません。

Jetson TX2をドローンに搭載しようと思った際に問題になるのが、どのキャリアボードを使用するかだと思います。AGX Xavierなどは純正のキャリアボード十分小さいのでそのまま乗せれば良いのですが、Jetson TX2の純正キャリアボードは拡張性が高い代わりに非常に大きく(Mini-ITXサイズ)、そのままでは到底ドローンに搭載することはできません。



そこで、各社から発売されているキャリアボードにJetson TX2を載せ替える必要があるのですが、様々な会社が多種多様なキャリアボードを出しており、用途に合わせて選定するのがけっこう大変です…

Project C.G.S.では、今回の用途に合わせて、
  • ドローンに載せられるサイズである
  • MIPI CSIインターフェースでカメラを接続することができる
  • mSATAかm2でSSDを接続することができる
という3つの条件でボードを選定しました。

Jetson TX2は組み込みビジョン用途を非常に強く意識しているのか、なんとMIPI CSIを6本まで入れることができるようになっています。USB経由でカメラを接続するよりも、MIPI CSIの内蔵ハードウェアブロックを使ったほうがオーバーヘッドが少ないですし、JetsonにはもともとUSBポートが少ないので、カメラを多数積むのであればMIPI CSIインターフェースは必須です。また、自律制御アルゴリズムの開発時には実際に飛ばしながらカメラ画像をロギングする必要があるのですが、Jetson TX2のmicroSDインターフェースはUHS-Iにしか対応しておらず、カメラ画を記録するのは書き込み速度的に非常に難しいです。なので、ログを書き込むためのSSDを接続する必要があります。

※ただし、Jetson TX2はSATA2にしか対応していないので、SSDを接続した場合でも書き込み速度には上限があります。もし、更に高速にログを書き込む必要であれば、PCIeにNVMeのSSDを接続する必要があるかもしれません。

--

前提を踏まえてボードを列挙すると、現時点では


メーカー型番ボードのサイズ[mm]MIPI CSImSATA/PCIe値段
Connect TechSpacely Carrier125x95x6(IPEX 30pin)mSATA x1、miniPCIe x1¥156,750(日本代理店)
Colorado EngineeringX-Carrier87x71x6(純正カメラコネクタ*1)mSATA x1、x4 PCIe x1$399
AetinaACE-N310-A87x70x6(純正カメラコネクタ*2)mSATA x1$240

*1 Jetson純正の開発ボードと同じカメラ用のコネクタが搭載されています。
*2 Jetson純正の開発ボードと同じカメラ用のコネクタが搭載されていますが、サイズが小さいボードしか接続できず、固定用の穴位置も異なります。

あたりが候補に登ります。Spacelyは流石に高すぎて(Jetson TX2開発キットの定価の2倍)腹が立ったので候補から外しました。次にX-CarrierとACE-N310-Aで検討していたのですが、X-Carrierが在庫切れで納期が遅かったので、結局Aetina ACE-N310-Aを購入しました。

--

Aetina ACE-N310-Aを購入したのは良いのですが、すでに購入していたLeopard ImagingのMIPI CSIカメラボード(LI-JTX1-MIPI-ADPT-6CAM)を取り付けようとしたところ、実はACE-N310-Aのカメラコネクタに接続できるボードのサイズに制約があることがわかりました。


これ、カメラボードを接続しようとするとヒートシンクと基板が干渉してしまって取り付けられません… そもそも穴位置も合わないですし、このコネクタは基本的にAetinaがオプション別売りで出している"6 x MIPI CSI-II Camera Board"を取り付ける前提で設計されているようです。
※ただしこのCamera BoardのコネクタはFPCなので、これに手持ちのLeopard Imagingのカメラ(IPEX 30pin)を接続することはできません。

購入前にAetinaのサポートにJetson TX2開発キットのカメラコネクタと互換があることは確認していたのですが、こんな罠があるとは… 

そこで、なんとかカメラコネクタにボードを取り付けるべく、下駄基板を自作しました。


この基板を使うことで、Leopard Imagingのカメラボードをオフセットして取り付けることができ、無事に接続することができました。



--

以上、ドローンにJetson TX2を載せて自動制御する (ハードウェア準備編)でした。
後日、Jetson TX2にROSをセットアップする、ソフトウェア準備編を公開予定です。

--

備考1: rosbag書き込み速度の実測値

Jetson TX2を純正のキャリアボードに接続して、rosbagに画像を記録した実測値は以下のようになりました。テスト用にRealSense D435のcolor、infra1、infra2、depthのVGA画像4つをrosbagに保存し、rosbagに記録できたサイズを時間で割ったものです。


ストレージインターフェース書き込み速度
microSD Samsung PRO Plus 64GBUHS-I18.1 MB/s
SATA SSD CSSD-S6T128NHG5Q 128GBSATA236.9 MB/s
※どちらの場合も全データを保存できておらず、ストレージ書き込み速度で頭打ちになっています。

RGBのVGAで30FPSだと約27MB/sなので、rawで保存した場合microSDでは書き込みが間に合わないです。2カメラ以上保存する場合にはSSDでも間に合わないので、圧縮して保存する必要がありそうです。

備考2: MIPI CSIカメラについて

MIPI CSIは通信の規格を定めているだけで、コネクタについては規定がありません。そのため、各社が独自にいろんなコネクタのモジュールを作っており、互換性が全くありません。Jetson用のキャリアボードも当然各社が独自に様々なコネクタのボードを作っているので、一般的に他社の別のボードのカメラを流用することは難しいです。

流石にこれはまずいと思ったのか、比較的新しいキャリアボードはJetson純正の開発ボードが採用しているカメラコネクタをキャリアボードに搭載し、Jetson純正開発ボード向けのMIPIカメラを流用できるような設計になっています。また、AGX Xavierも同じコネクタを搭載しているので、このコネクタが搭載されているMIPIカメラを使用しておけば、TX2からXavierに乗り換えてもカメラを使い回すことができます。

2018年9月1日土曜日

Ali ExpressのBest Carbonにカーボン加工を外注してみた

Project C.G.S.では、現在次期大会に向けてドローンの機体制作を行っています。

ベースには市販のフレームを使用しているのですが、限られたスペースになるべく多くのセンサを搭載するため、汎用品で対応できない部分は独自に設計した自作パーツを使用します。

負荷がかからない部分は3Dプリンタなどで成型したパーツで十分なのですが、力がかかるところ、壊れると致命的な部分は、軽くて丈夫なカーボンでパーツを作るのが理想的です。

前年までは、カーボンの切り出しはメイカースペースのCNCを使って自分たちの手で行っていたのですが、

- カーボンの材料費が高い
- エンドミルがすぐ摩耗して切れなくなるので、エンドミルの費用も馬鹿にならない
- 切子が飛ばないように切削油に沈めて加工するので、加工に手間と時間がかかる

という問題があったので、今回はカーボンの加工を外注することにしました。

作成したパーツ

外注先は(国内よりは中国の会社のほうが安いイメージがあったので)、Ali ExpressのBest CarbonにCarbon Fiber Plate CNC Cutting Serviceをお願いすることにしました。



--

ページの冒頭にも書いてあるのですが、注文方法がちょっと特殊になっています。

注文するにはAli Expressで商品をカートに入れる前に、

carbonfiber (AT) foxmail.com

にメールします。

本文には材料のカーボンの厚み、織り方、表面処理方法、発送方法を記入して、作りたいパーツの図面をdxfで添付します。

Hello BEST CARBON team,

I have looked at your "Carbon Fiber Plate CNC Cutting service" page on AliExpress.
I would like to order cutting 4 pieces of plate of attached DXF file,
using plain mat carbon plate of 2mm thickness.
I also would like to use 7 days arrival shipping method to Japan.

Could you give me an estimate of the total cost for this?

Best regards,
xxx

すると、こんな感じで返信が返ってきます。

Hi xxx ,

USD 12/pcs
4 pcs
EMS shiping - USD 20

Total USD 68

この時点で、Ali Expressのページに行くと、単価がUS $1.00 / pieceになっているので
指定された金額なるようにQuantityを入力して(この場合は68個)、Ali Expressから購入します。
※注文時に選択するShipping MethodはFree Shippingで大丈夫です

購入が済んだらメールで連絡

Hello xxx,

OK, I would like to place an order with that price.
I have purchased on AliExpress page.

Thank you.

すれば、注文から1週間ぐらいで発送してくれます。

--

EMSで発送された荷物はAli ExpressのMy OrdersからTrack Orderで追跡することができるのですが、更新が遅くてイマイチ使いにくいので、日本郵便のページにトラッキング番号を入力して調べたほうが確実です。
※中国側のトラッキング番号(EVBxxxxxxxxxCN)を入力してもちゃんと結果が出てきます。

商品はこんな感じで梱包されて届きました。


端面はちょっとバリが出ていますが、2mmの細溝も綺麗に切削できていますし、品質には満足です。


注文から到着まで2週間かかるので、自分で加工するのと比較すると少し時間はかかりますが、このような形で簡単にカーボン加工を簡単に依頼することができるので、ぜひ利用してみてはいかがでしょうか。

2018年8月6日月曜日

海外プロポ Taranis Q X7Sを日本で合法に使用する

ドローンを飛ばし始めたときからずっとプロポにはTurnigyの9XR PRO(これも海外プロポです)を使ってきたのですが、定期的に電源スイッチが固着したりして電源が入らなくなるのに悩まされていました。

先日、また9XR PROの電源が入らなくなったので、良い機会だと思い、Taranis Q X7Sを購入しました!



9XR PROの頃からファームウェアにはOpen TXを使っていてとても便利なので、それに対応したプロポの中で候補を探していました。といっても、OpenTXが対応している新しいプロポはFrskyのTaranisかHorusしかなく、その中でお手頃価格で買えるものとなると結構数が絞られてきます。その中で、磁気式のジンバルが面白そうだったのでこの機種にしました。
※ジンバル単体でも購入できるので、X7などのプロポを購入してジンバルを交換しても良かったのですが、見た目が気に入ったのでX7Sにしました

ところが、このプロポは技適を通っておらず、そのまま日本で使った場合には電波法違反になってしまいます。

※電波法違反のプロポを使用した場合、事故が発生したときにラジコン保険が下りない可能性があります

そこで、Taranis Q X7Sを日本で合法で使用するために、以下の作業を行いました。

  • アンテナの取り外し
  • 技適取得済みの外部送信モジュールを装着
  • 外部送信モジュールを使用するように設定

アンテナの取り外し


まず、バッテリと外部送信モジュール用の蓋を外したら、ネジを4つ外して裏蓋を開けます。



※詳細な分解方法はこの動画などが参考になると思います

裏蓋を開けたらアンテナの配線を外し、


アンテナを筐体から外します。



設定からInternal RFを無効にすることもできるので、アンテナを無理に外さなくても良いと思います。
※かなり固いので、もし外す場合は筐体を割らないように注意してください

ラジオペンチを2本使って、筐体ごと挟んでアンテナの根本押し込むようにすると外れやすいかもしれません。

ついでに、必要であればジンバルのフィーリングの調整も行います。Taranis Q X7Sはデフォルトではスロットルスティックを動かすとカチカチとクリック感があるので、それが不要な場合はこのネジを少し緩めます。



隣のネジで摩擦も調整できるので、好みの硬さに合わせます。

技適取得済みの外部送信モジュールを装着


配線を挟まないように裏蓋を戻したら、技適マークがついた送信機モジュールをはめ込みます。


この外部送信モジュールはWorld RCから購入したFrsky D8Tです。

JR PROPOに対応したものであれば使えると思いますが、もうあまり取り扱っている店舗はないかもしれませんね...
合法で使用する上で一番難易度が高いのが、この外部通信モジュールの入手かもしれません…

外部送信モジュールを使用するように設定


次に、メインスイッチを長押しして起動します。

これ、短く押すと一瞬だけ電源が入って落ちるように見えるので、買った直後は何が起きているのかわからず困りました。

  • 長押しで起動、長押しでシャットダウン
  • ヨーとロールのトリム内側にして短押しでファームウェア書き込みモードで起動

のようです。

プロポが起動したら、オプションボタンを短押しして、Page 2の設定から

Internal RFOFF
External RFPPM

にします。使用する外部送信モジュールによって、PPM以外のモードを選択しても良いと思います。
※External RFを有効にした時点でモジュールへの電源供給が行われるようです





この設定はモデルごとにする必要があるので、新規にモデルを作った際には忘れずに変更する必要があります。

ここまでで、Taranis Q X7Sを合法で使用するために必要な作業は終わりです。

おまけ1 - ファームウェアの更新とmicro SDのセットアップ


とりあえずファームウェアは最新のものに更新しておきます。また、micro SDカードを用意して必要なデータを書き込むと、プロポがしゃべるようになるので、そちらの設定も行います。

ファームウェアの更新はOpenTX Companionから行うので、まずは自分のOSで動作するOpenTX Companionをインストールします。

UbuntuならLaunchpadからamd64のパッケージをダウンロードしてインストール して、

companion22

で起動します。
※Write Firmwareの前に必ずRead Firmwareして、今のファームウェアのバックアップを取っておきましょう

microSDカードに書き込んで、Taranis Q X7Sの下面についているスロットに入れればOKです。

おまけ2 - FPVシミュレータでTaranis Q X7Sを使用する


Taranis Q X7Sの大きなメリットとして、USBでPCに接続するとジョイスティックとして使うことができるというものがあります。


9XR PROではこの機能がなく、今までシミュレータでプロポを使うときにはTrainer信号を変換するUSBアダプタ経由でPCに接続していたのですが、Taranis Q X7Sではその煩わしさから開放されます!

USBコントローラーでプレイできるクアドコプターのシミュレータの中で、安価で楽しめるものの筆頭にFPV Freeriderがあると思います。
FPV FreeriderでTaranis Q X7Sを使用する際には、プロポ側で設定を変更しないとController Calibrationがうまくいかないので注意が必要です。

まず、プロポ側に適当なモデルを作ったらRFをOFFにして、


カーブの設定で値が50 - 100にマップされるようなものを作ったら、


それをすべてのミキサーの出力に割り当てます。


これで、すべてのスティックの値が、50から100にマップされます。
※ミキサーをひとつずつ開いて、オフセットとウェイトを50に変更しても大丈夫です。
※詳細な設定については、この動画が詳しいです



このモデルを使用してFPV Freeriderをプレイすれば、きちんとUSB Calibrationができるようになります。FPV Freeriderで実際にFPVでプレイすると、こんな感じになります。


※残念ながら、まだ全然うまくないです…

とてもリアルでおすすめですし、カメラ画角等も自分の(実際の)機体に合わせて変更することができるので練習に役立ちます!

2018年7月26日木曜日

MavESP8266をESP-WROOM-02に焼いてPixhawkとWifiで通信する

Project C.G.S.は、MBZIRC 2020年度大会も無事に書類選考を追加しました!

2017年度大会に参加した機体ではペイロードが小さく、今より処理能力の高いボードを載せたり、重い物体を運搬したりするのは難しいので、現在Project C.G.S.では、2020年度大会用の機体を作成しています。

一般的にドローンを自作する場合には、機体を組み立てた後に、機体がうまく飛行できるようにパラメータを調整する作業が待っています。これには機体を手で持ってぐるぐる回したり、少しずつパラメータを変えながら実際に飛ばしたりする作業が必要なのですが、大きいドローンになると指示に従って機体をぐるぐる回すのも一苦労ですし、パラメータ調整のたびにいちいちUSBケーブルを接続するのは非常に面倒です。

なので、やはりパラメータの設定などは無線で通信したいものです。少し前にPX4ファミリーに加わったPixracerはなんとESP8266を使ったWifiモジュールがバンドルされており、これを使えばそのままWifiでQGCと接続することができちゃいます。また、このモジュールを接続すれば、Pixracerに限らずPixhawkなどでもWifi経由で接続することができるようになっています。

ところがここで問題がひとつ... 付属のモジュールは技適認証を受けておらず、日本国内で自由に使うことはできないのです!

そこで、この記事ではESP8266用のファームを技適認証を受けているESP-WROOM-02に書き込み、合法にWifi接続する方法を紹介します(と言っても普通に書き込むだけなのですが...)。

ファームウェアの書き込み

まずは、ESP-WROOM-02(スイッチサイエンスで扱っているピッチ変換基板に実装したもの)を書き込みモードにしてPCと接続します。接続には秋月電子のFT232RL USBシリアル変換モジュールを使いました。

ESP-WROOM-02への書き込み

ESP-WROOM-02は3.3Vで動作しますので、変換モジュールの出力が3.3Vになるようにジャンパピンを設定するのを忘れないでください。


J11-2間ショート
J2ショート

※念の為、ESP-WROOM-02に接続する前にVIOの電圧が3.3Vになっていることを確認してください

ESP-WROOM-02のピンと、変換モジュールとの結線はこちらのスライドの情報を参考に行い、ESP-WROOM-02がUART Download Modeになるように行います。

IO0をGNDにショートしています


ESP-WROOM-02AE-UE232R
3V3VIO
IO15GND
IO2VIO
IO0GND
TXRX
RXTX
GNDGND

この状態で、Githubレポジトリの手順に従ってファームウェアのビルドと書き込みを行います。
※ビルド済みバイナリをesptoolで書き込んでみたのですが、残念ながら動作しませんでした… esp12e向けにビルドしたものでないと動作しないのかもしれません

まずは


sudo pip2 install platformio


でplatformioをインストールしたら、mavesp8266のレポジトリで


platformio run -e esp12e -t upload


でファームウェアのビルドと書き込みをします。
書き込みが終わったらIO0をプルアップに変えて、

IO0をVCCにショートしています

※MavESP8266はGPIO2がGNDに落ちていると設定されているコンフィグをリセットしますので、IO2はGNDに落とさないように注意してください。

PixhawkのTELEM2に繋ぎます。

Pixhawkとの接続

このとき、PixhawkのTELEM2の電源は5Vになっているので、間にレギュレータを挟んでESP-WROOM-02に供給される電圧が3.3Vになるようにしてください。

ボーレートの設定


Pixracerの場合はESP8266用のWifi Serialは921600ボーに設定されているのでこのままで通信できますが、Pixhawkの場合は使うTELEMのボーレートを921600に変更する必要があります。

PixhawkをUSBでQGroundControlと接続し、この公式ページを参考にPARAMETERのSYS_COMPANIONの値を`ESP8266 (921600 baud, 8N1)`に変更します。
※MavESP8266側のWebUIでボーレートをPixhawk側に、合わせる方法もありますが、57600ボーだとQGCでのパラメータのグラフ表示が残念なカクカク具合になるので、こちらの方法をおすすめします。

Pixhawkの電源を入れるとESP-WROOM-02のアクセスポイント(Pixracer)が見えるので、ノートパソコンでアクセスポイントに接続し、QGroundControlを立ち上げると自動で無線で接続されます。😄

その他


今回は、


PX4Firmware v1.8.0
MavESP8266610f4be5
QGroundControlv3.3.2

で動作することを確認しました。

2018年4月24日火曜日

技術書典4で頒布した「Do It Ourselves: 社会人サークルによる自律移動ロボット開発」をBOOTHで再販開始しました

先日開催された技術書オンリーイベント 技術書典4に、社会人サークル「Project C.G.S.」として出展しました!

当日は「Do It Ourselves: 社会人サークルによる自律移動ロボット開発」という、Project C.G.S. がつくばチャレンジを始めとするロボットコンテストへの参加に向けて行ってきた、地上を走る自律移動ロボット(UGV) とドローン(UAV) の開発に関する様々な記事を集めた内容の本を頒布していました。



ところが、初参加ということもあり印刷部数を絞りすぎてしまって、入場開始早々に完売してしまいました… せっかくブースに来ていただいたのに買えなかった方には、本当に申し訳ありませんでした…

当日もアナウンスしていましたが、この度

PDF版をBOOTHにて頒布開始致しました!

ので、買い逃してしまった方は是非、BOOTHから購入をご検討ください。
Project C.G.S.では今後共、ロボットに関するホットな情報発信を続けてまいりますので、引き続きよろしくお願いいたします。

2018年4月19日木曜日

技術書オンリーイベント 技術書典4で「Do It Ourselves: 社会人サークルによる自律移動ロボット開発」を頒布します!

技術書オンリーイベント 技術書典4に社会人サークル「Project C.G.S.」として出展します!

技術書典4は、4/22の11時から、秋葉原UDX アキバ・スクエアで開催される技術書オンリーの同人誌即売会です。Project C.G.S.は「け23」にブースを構えてます。
技術書典4のサークルページはこちらにありますので、もし良かったら当日ブースに来ていただけると嬉しいです。

頒布物は「Do It Ourselves: 社会人サークルによる自律移動ロボット開発」という薄い本で、表紙はこんな感じになってます。


内容はProject C.G.S. がつくばチャレンジを始めとするロボットコンテストへの参加に向けて行ってきた、地上を走る自律移動ロボット(UGV) とドローン(UAV) の開発に関する様々な記事を集めた内容になっています。章ごとに著者が異なり、コンテストの参加録のようなものから、ハードウェア、ソフトウェアの実装に関する少し込み入った内容まで、雑多に詰め込まれたオムニバス形式になっております。


私は主に最初の導入と、「第3章 実環境で動かすTensorFlow Object Detection API」を執筆しました。第3章では、市街地を自律走行する移動ロボット(※表紙のロボットです)にTensorFlow Object Detection APIを使った物体検出機能を実装して、つくばチャレンジ 2017というロボットコンテストで実際に走行させるまでの話を紹介しています。

もしよければお手にとっていただけると嬉しいです!