2020年12月20日日曜日

消費電力とバッテリーの検討

試作機のハードウェアを試運転しました。ある程度以上のパワーで回すと通信が途絶、更にはプログラムが停止するという現象が起きました。これは想定範囲内で、テストに使用した電池(350mAh)の放電能力不足であろうと推測しました。大電流の放電を行うと、電池の電圧が低下してマイコンの正常動作に必要な電圧を確保できなくなるという理屈です。特にこの基板は、電池から直接(低ドロップタイプの)シリーズレギュレータを通してマイコン用の3.3V電源を供給しているため、公称3.7Vのリチウムイオンバッテリーでは余裕が少ないと考えられます。

電池を選定するにあたり、モーターの消費電流のおよその見当をつけます。今回使用するモーターは製造元や正式な型番がわからず、データシートから知ることができないので、実際に測ってみます。

1.ストール時電流の最悪値を考える場合:モーターの巻線抵抗が実測でおよそ0.7Ωだったので、4.2V / 0.7 Ω = 6A。4個で24A。この値まで保証できればより安心ですが、必要以上に大型のバッテリーを載せるのは重量増加につながるので、もう少し実際に近い値を探ります。

2.地上に機体を固定してファンを回した際の電流の実測(モーター1個で、電池直結):2.6A @4.2V。

3.空中で重力と釣り合うときの消費電流: およそ8A。このときPWMのduty比は50~60%ぐらい。竿の片方の先に着けて手で支え、補助しつつ感覚で釣り合いを見ながら電流を測定。

以上より、ホバリングには最低8A、制御を考えると13A前後が必要と見積もりました。

今までテストに使用していた電池は350mAh 25Cなので8.7Aが定格の放電率(おそらく定常値)。4個のモーターを回すには足りないことになります。 実際、モーター2個までは最大出力で回しても正常動作を続けられたので、これとも大雑把には符合します。

また、放電率の他に容量と航続時間も考慮しなければなりません。

現在の構想では競技中は開始時と終了前以外はずっと飛行することを考えています。そこで航続時間を4分(知能ロボコン予選の競技時間の80%)とすると8A * (4/60)[hours] = 533mAhが最低限必要。

以上のことから、600mAhから1000mAhぐらいの間の電池(放電率25C以上)を試すことにします。

また、使用した直流電源(秋月のSI-8010Yキット)が8Aが最大値のため、騙し騙しの計測となっていました。こちらも開発用に用意する必要があります。

十分な大きさのバッテリーでも、電池残量低下時にはマイコンが正常動作できなくなって暴走する恐れがあります。飛行中制御ができなくなる(制御ループは停止してもモーター駆動のPWM信号だけ出ている状態)と危険ですので、電池電圧を監視して電源を遮断する回路を付けることも検討します。

おまけ


この基板は、この小さな電源スイッチがバッテリーからの電流を直接通すようになっています。大電力には使えません(テスト中、これで電源を遮断しようとした時に焼き切れました)。おそらくそのためにこのスイッチをバイパス(導線で繋いで常時ON)するパターンがあるので、これを用いた上で外部に前述の電源制御回路やスイッチを付けることにします。

2020年12月19日土曜日

発泡ポリスチレン製ガード試作

発泡ポリスチレン(EPS)の板を使って上面のガードを作り直しました。吸込口に網状の構造を加えました。これでも前回ABSで作った枠だけの部品より軽くできました。後は側面に柱状の部材を多数並べて檻のように囲う予定です。




2020年12月14日月曜日

実験機完成?

仮仕様ですが、ファンガードの設置と電源及びモーターの配線が完了しました。実験機としてソフトウェアシステム及び制御アルゴリズムの開発に使います。

ファンガード



ファンが周囲に接触しないように、あるいは接触の際の損害を軽減するためのものです。
これはあくまで実験機用の仮仕様です。ロボットコンテストに参加する際は、より安全なように全体をより密に覆う形にします。
下段側が半分しかないのは、設計を何度か変更するうちに取り付けられなくなったためです。この縦横非対称な形状に深い意味はありません。
クローバー型の部分はスチレンボードを切り抜いて作るのが本来の設計です。写真は、その前段階として仮にABSの積層成形で作った別バージョンのものです。3Dプリンタ(Afinia H480)の出力可能サイズを超えているので、4分の1ずつに分割しました。

バッテリーケース


蓋をスライドして差し込む形にしました。


配線コネクタ

バッテリー接続用のコネクタは、このIMU基板に予めはんだ付けされていました。JST PHコネクタでした。但し、ロットによって異なっているかもしれません。

4箇所のモーター用のパターンも、シルク印刷の形状から推察するに、PHを想定したものではないかと思います。しかしそれは無視して、在庫があった別のコネクタ(ZH)を使いました。モーターからの線はTelloで長い距離を配線できるように長くなっていましたが、必要な長さに切りました。

LiPoバッテリーは以前適当に買ったものですが、Hitecのドローン等に使われているもののようです。前述のPHコネクタに変換するケーブルを作って接続しました。同じ容量のバッテリーは各社から価格も性能も様々なものが出ているので、今後変更するかもしれません。


次のステップ

プログラムを書いて動作確認を始めたところで、このままだとリセットスイッチが押しづらいことに気づきました。配線を引き出して別のところに増設する必要があります。
また、最終版ではハードウェアで電源を遮断する緊急停止スイッチをわかりやすい形で付けるようにしたいと思います。

2020年12月10日木曜日

知能ロボコン2021 子機製作 その1

子機のクワッドコプター部分について、自作してみます。

Makerfabs ESP32 6-Axis IMU と、Telloに使われているのと同寸法のDCモーター、Tello用のプロペラを使います。

MakerFabsのこの基板について。名前はIMUとなっていますが、6軸(加速度+角速度)センサーとESP32マイコン、そして4つの1象限DCブラシモータードライバ(要するにFETとダイオード)が搭載されていて、明らかにクワッドコプターを作ることを想定しているように見えます。今回作るクワッドコプターにはカメラやオプティカルフローセンサー等が不要で、ちょうど良さそうなのでこれで試してみます。

このモーターとプロペラ、LiPo1セルバッテリーで簡易的に推力を測定したところ、40g重前後でした。重量合計はここまでで60gでしたので、飛行は十分可能ではないかと予想しています。また、ESP32の多くのI/Oピンがスルーホールに引き出されています。そのため、高度計等の電子部品の追加も後から可能ではないかと思います。




固定用部品を設計・作成してモーターを取り付けてみました。基板四隅にモーターが入りそうな穴が空いていますが、この組み合わせだとモーターの直径の方が大きいため入りません。代わりに、基板の上に乗る形になります。



モーターは1基だけ仮配線して、基板上のFETで駆動できること、手で感じられる程度の推力があることだけを確認しました。次はバッテリー搭載場所とガードを製作します。

2020年12月7日月曜日

知能ロボコン2021(仮)計画開始

2020年の知能ロボコンは中止になりました。来年こそは久しぶりに知能ロボコンに出場しようと思います。作ってみたいものができたので、計画を作成しました。

ロボット名(仮)

銀雲雀 (ぎんひばり)
Silver Lark

出場コース

チャレンジャーズコース。

概要

クワッドコプター型ロボット。飛行して移動する。ローターからの下降気流を競技台の床に当てることで、床面近辺でロボットの真下から外側へ向かう風を起こし、それによりボールを転がしてゴールまで導く。ボールの色分けは行わず、すべてのボールを1つのゴールに入れる。正しい色5個で15点、誤った色10個で10点、自由ボール5点で合計30点を目指す。

目標

自律飛行するクワッドコプターで、競技台上空をある程度(30cm程度の誤差)正確に移動させる。

課題

クワッドコプターの特性上、機械的安定性だけで空間の1点にとどまることはできない。そのためフィードバック制御が必要である。しかし、姿勢制御用(IMU)センサーのみではロボットの現在位置を長期的に正確に得るのが難しい。

上下方向は測距センサーにより床面との距離を計測するか、あるいは大気圧の変化[1]により計測した高度を基に制御する方法がある。水平方向への移動については、Telloのように高度計および床面を撮影した画像から移動量を推定し、それを積分して現在位置を推定するものがある。しかし、知能ロボコン競技台は模様のない真っ白な部分や、1方向の直線のみしか見えない箇所が存在するため、映像からの移動量推定は常にできるとは限らない。

実際、900mm角の単色灰色の床板の上でTello Eduを飛行させてみたところ、位置推定ができない旨の警告表示が出て、位置制御が行われず水平方向へドリフトしていくような挙動が見られた。また、CoDrone (中身はBYROBOT Petrone) でも同様のことが起こった。少なくともこれらの機種に搭載されているような、オプティカルフローセンサーユニット[2]ではうまくいかないことがわかった。

そこで、地上にステーションを設置してそこからの光学観測によりクワッドコプター(以下子機とする)の現在位置を計測し、無線により飛行の操作指令を送ることでフィードバック制御を行う。

観測方法として次のようなものが考えられる:

  1. 既知形状の物体によるもの
    ARマーカー等を子機に取り付け、色画像からそれを検出する。
    利点:周囲の環境に影響されにくい。回転角も一緒に得られる。
    欠点:細かいパターンを見る必要があるため、画像の空間分解能が必要。モーションブラーによる観測不能のおそれ。
  2. 深度画像センサーによるもの
    競技台上空の空中には他に物体がないと仮定する。なにか物体があればそれが子機である。
    利点:周囲の環境に影響されにくい。
    欠点:回転角を得るためには、形状を工夫するなどが必要。

システム構成

子機には飛行に必要な6軸慣性センサーと無線通信装置、マイコンのみを搭載する。BluetoothまたはWiFiによりステーションから子機へ指令を送る。また、光学観測のためのマーカーあるいは反射板のような何かを子機に搭載する。

ステーション側にはラップトップPCと観測用カメラ、無線通信装置を搭載する。

開発日程

2020年12月 ラジコンとして遊べるクワッドコプターを作成
2021年1月 知能ロボコン競技台作成、カメラでの位置観測を試みる
2021年2~3月 カメラを設置するステーションの設計と製作
2021年2~4月 飛行制御
2021年4月 ステーションの補助機構製作
2021年6月 知能ロボコン出場

補足説明(脚注)

[1] 意外に思われるかもしれないが、10センチ程度の高度変化による微小な大気圧の変化がコンシューマーレベルの半導体気圧センサーでも検知できる。3000円程度のホビードローンでも採用されているほど。スマートフォンの気圧計アプリでも、ちょっと持ち上げたりすると小数点以下が変動するのが確認できる。
[2] 撮像素子と画像処理・画像認識装置を一体化した集積回路を用いた部品。内部でおそらくオプティカルフローを求めるような演算を行っている。画像ではなく相対移動量が出力される。

2020年10月12日月曜日

Maker Faire Tokyo 2020に出展

10月3、4日のMaker Faire Tokyo 2020に出展しました。

「自動制御剣道ロボット」としてROBO-剣用のロボットを実演展示しました。また、開発中であるヒューマノイド部門の方のロボットとしてSpirit 2も展示しました。

今回の展示用に新たに2号機を作成しました。これはかねてより、「逡巡」を改良したいと思って設計および一部部品を作っていたものでした。土台をより安定した形状にし、電子回路や配線を本体内に格納し、できれば旋回軸を追加できるようにしたい、という方針です。今回はそれが部分的に実現されています。

今回ロボットが2台用意できたことにより、見た人が実際のROBO-剣の競技を想像しやすくなったのではないかと思います。むしろ、相手側のロボットは打ってこないのか、という質問を受けました。

次回展示するときは自律プログラム同士による試合や、リモコン操縦体験も実施したいと思います。

ROBO-ONEのシステム上、過去の成績などがロボットごとに記録されています。それらを引き継ぐため、今後はこの新しいロボットが「逡巡」として出場することになると思います。とはいえ、制御装置は外部にありますし、アーム部分はどちらも全く同じ設計(というか予備部品)ですので、土台を改造した、と思ってもらっても構いません。

今年前半は感染症の流行によって大会もなく、開発が停滞していたところでした。今回展示を通じて一通りシステムの見直しを行い、課題を再確認することができました。もっと言えば耐久試験のような形となり、問題点が洗い出せました。

次は第11回ROBO-剣が、映像通話アプリによる遠隔参加で行われます。ルールの方は高度な画像認識処理を要求しないスピード競技となってしまっていますが、参加はしてみようと思います。

https://makezine.jp/event/makers-mft2020/m0142/







2020年6月7日日曜日

Afinia H480ケーブル修理


1年半前の話になってしまいましたが、3DプリンタのAfinia H480を修理した際の記録です。

症状: 出力を始めてから少ししてノズル温度異常を検知して止まる。エラーメッセージはnozzle too hot等。時々起こる。起こらないこともある。

web上の類似事例から探して、本体基板とプリントヘッドをつなぐリボンケーブル内部に亀裂が入っているのではないかと推測しました。エラー内容が時によって温度高過ぎまたは低すぎと両方のケースがありました。温度センサーの値を画面で見ていると、加熱前なのに280度など明らかに異常な値が出ていることもありました。更に、プリントヘッドの保護カバーを外すと(多分ケーブルの変形具合が変わって)動くようになったりといった現象もあったのですが、これもその仮説に合っています。
そのため、ケーブルを自作して交換しました。ケーブルは16芯フラットケーブルでMILスタンダードのボックスヘッダコネクタと同じ形状のように見えましたので、この部品を使いました。ヒーターの配線もこのケーブルを通っているので、ある程度配線の太さは注意した方が良いかもしれません。
ケーブル長は見た目の印象よりも長く、80cm前後ありました。

交換後、ずっと正常に動作しています。正解だったようです。
同ケーブルにはヒーターへの電源も通っていますので、症状の出方は他にも色々あると思います。

1つだけ失敗した点として、ケーブルの向きを間違えました。
今回購入したコネクタには、オプションとして線を折り返して挟むようにして固定する部品があります(メーカーがオプションとしているかどうかは知りません。ケーブルの断線を防ぐのには必須かもしれないと思います)。これを使うときと使わないときではケーブルの圧着方向を逆にする必要があります。もともとのケーブルはこの部分がなかったのですが、断線を防ぐためと考えてこの部品をつけるようにしました。すると、干渉によりカバーが閉まらなくなってしまいました。カバーも改造版を自作することになりそうです。



第4回新ROBO-剣参加

11/16に行われた 第4回新ROBO-剣 に参加しました。ロボットは去年と同じ「 逡巡 」です。 結果は 本戦トーナメント 2勝1敗、 敗者トーナメント (本戦で早めに負けたチームによる別リーグ)第2位でした。新ルールでは、今回初めて有効な攻撃で勝利を挙げることができました。勝...