2019年3月23日土曜日

魚型ロボット試作

魚型ロボットを作ってみました。
手乗り二足歩行ロボットの部品を流用し、防水は食品用チャック付きポリ袋の中に機械全体を入れただけのものです。
この形だと関節の隙間や電子回路周辺の空洞によっても浮力が生じます。これによって当初の(あまり根拠がなく感覚的な)予想よりも全体の比重が小さくなったため、重石を入れて可動部が水面下になるようにしました。重石がないと、横向きに水面に浮かんでしまいます。これはこれでまた面白そうですが。
一応推進と方向転換ができるようにはなりました。
何も知識無しで、進行波があれば推進力が出るのではないか、程度の理解で始めました。そのため理にかなった造りでは決してなく、性能が不十分だと思います。次のバージョンを作る前に文献をあたってみます。


2019年3月17日日曜日

第23回熱田の森ロボット競技会参加


第23回熱田の森ロボット競技会に参加しました。
  • Spirit - 歩行ロボット徒競走競技部門、デモンストレーション
    • 特別賞
  • 銀雲雀 - ライントレーサー一般の部
    • 特別賞
  • Vanilla - ライントレーサー一般の部
    • 完走
※カメラの設定を間違えたため油絵化処理された画像になってしまっています。

Spiritの競技の様子。おそらく今大会唯一の自律型かつ二足歩行。今回は二足歩行部門が競技としては開催されなかったため、歩行ロボット徒競走部門に参加しました。多足型、ラジオコントロールも許可されている部門です。二足歩行と画像認識による自動制御が評価されて特別賞を受賞しました。

決勝戦です。多足型の洗練された速さが解ると思います。手前2つのレーンの昆虫型ロボットが今まで一強だったように見えたのですが、今年は別の新しいロボットが優勝しました。重心の上下左右への動揺が少ないように工夫されているように見えます。

2019年3月10日日曜日

チロルチョコロボット大会14に参加

チロルチョコロボット大会14に参加しました。初心者でも参加できるゆるい大会、ということで始まったそうですが、専用のロボットを作って真剣勝負する人、持っているロボットを流用して気軽に遊びに来る人、技術検証のため実験的なロボットで参加する人など、実に多彩なロボットが見られる大会です。
運動会のように複数の競技で競い、合計得点上位と人気投票による表彰が行われました。


2m斜面ダッシュ


横向きの傾斜のある路面を走行します。傾斜は競技者が選択し、難度に応じたボーナスとしてタイムが割引されます。映像のものが最大設定で90cmあたり5cmの傾斜です。簡単に見えますが、しっかり歩けるロボットが求められます。平地用の歩容生成プログラムに任意角の旋回機能を付け、目視による操縦で対処しました。

持ってけチョコ転がし

日本の小学校の運動会で行われる「大玉転がし」に相当します。チロルチョコの入ったカプセルをゴールラインまで押して得点します。3つのカプセルは中身の数が3個、6個、9個となっています。全部フィールドからなくなると再配置されます。
この競技もまた、操縦性の良い移動機構が求められます。特に大型ロボット(特に、ラジコン格闘競技用の人型ロボットの動きを制限して流用したもの)の場合は、競技場の端とカプセルの間にロボットを移動させるのに苦労することが多いです。

ちょこっとシューティング・ラピッド

5cm角以下の発射体によって紙コップ標的を落とす数を競う競技です。
発射体は手で装填あるいは発射しても良いというルールになっています。入門者用として、ロボットの頭上にレールを取り付けてそこにビー玉を手で乗せて転がして当てる、というような方式も許容するための規定です。この競技のためのメカニズム(発射体と発射装置)を他の競技との間で付け外しすることは認められています。

私のロボットTeapotは、電動化されたメカニズムと無線操縦により投擲を行いました。去年まで同様、間欠ピニオンギアとラックギアを用いた直動機構で輪ゴムにエネルギーを蓄えてから一気に解放するメカニズムによってチロルチョコを飛ばす方式としました。チロルチョコは8個までロボットに搭載し、次々投擲することができます。今年のメカニズムの改造点として、カートリッジを交換することで素早く次の8個を補給できるようにしました。
また、正面付近にある紙コップに自動で狙いをつける機能(以下、アシスト機能と呼称)を付けました。紙コップの位置をカメラの画像から検出、フィードバック制御により画面中央に捉えるよう方向を微修正します。
この機能は去年もあったのですが、肝心の画像からの検出部分が自作の適当なアルゴリズムであまり汎用性がなく、会場では全くうまく行きませんでした。今年はYOLOv2の実装を利用して画像から紙コップを検出するシステムを構築し、周囲の環境変化があっても使えるようなものを目指しました。
まだ学習データの不足のため不完全で、会場では場所によっては検出できなかったり位置がずれたりといった状態でしたが、それでも去年よりは遥かに良い性能となり、何回か実際に活用して得点をあげることができました。上の実際の試合の映像で、ピンク色のコップを最初に落とした際のものがその一例だったと思います。正確には覚えていませんが、足が段階的に動いて向きが修正される点と、会場の環境ではやや右よりにずれていたのが特徴で、それからの推測です。

試合の映像ではラップトップの画面を入れるのを忘れてしまったので、ロボットが認識している様子がわかるよう動作試験の映像も紹介しておきます。左のラップトップPCの画面にカメラからの画像と検出した紙コップの位置が黄緑色の枠で表示されています。なお黒の点線は照準線で、チロルチョコが飛んでいくおよその方向を示しています。2個目の紙コップを狙う際、アシスト機能を使っています。コントローラーのボタンを2個組み合わせて押すとアシスト機能をONになるようにしてあります。この間、ロボットの向きが段階的に変わって狙いが定まっているのがわかります。
自動化ではなくあくまで操縦アシストですので、左手人差し指の発射ボタンは手動で押すようにしてあります。

2018年12月29日土曜日

NT加賀2018に出展

12月15日・16日のNT加賀2018に出展しました。
会場はショッピングセンターで、広場、催事場、通路等を利用して展示が行われました。ステージもありました。

参加者の多くが宿泊した加賀市の温泉旅館、中庭の足湯です。

私はグループ名「山口自動機械」でロボットアーム書道と手乗り二足歩行ロボットを展示および実演しました。2017年のMaker Faire Tokyoと同じ構成です。

NTのイベントで言えば、NT金沢に参加したのが3年ぐらい前で最後でした。そのためNTのイベントにこれらの展示を持っていったのは初めてです。

今回はMaker Faireとはまた違った層の参加者からもいろいろな感想やフィードバックを貰いました。総じて、電子工作かソフトウェアをメインにしている人が多いため、アルミ板金や3Dプリンタ等の加工、ロボット用サーボモーターの使用方法や機械の制御についての質問を多く受けました。特にロボットアーム書道は好評でした。今後も改善して別のイベントで続けていきたいと思いました。

2018年9月23日日曜日

Raspberry Pi 2 NOOBSが “sh: can't access tty; job control turned off”と表示されて起動できない

今まで起動できていたものが突然起動できなくなりました。調べたところ、これはsafe modeで、本来は起動時に特定のキーを押すか、設定ファイルで設定するか、あるいは起動時に特定のGPIOピンのジャンパ、等の方法でこの状態に入るものです。
ところがなんらかの理由でICのGPIOピンが壊れていると読んだ時にプルアップ抵抗の効果が得られずlowレベルと判定、何も接続しない状態でもこのモードに入ってしまう、という例が報告されていました。今回私のケースはこれでした。
ICの一部の機能が正常に働いていないわけですので本来はユニットごと交換するべきなのですが、さほど信頼性を要求しない箇所に使用しているのでごまかしてもう少し使用してみることにしました。その方法はいくつかの質問サイトにありました。


recoveryパーティションのrecovery.cmdlineというファイル内に起動オプションが並んでいます。この最後に(区切りのスペースを入れて) disablesafemodeという語を追加することで文字通りsafe modeが無効化、GPIOピンの状態に関係なく通常起動するようになりました。

2018年9月5日水曜日

第8回ROBO-剣参加




第8回ROBO-剣に参加しました。前回に引き続き優勝、連覇となりました。

今回は前回のロボットを少しだけ、信頼性の向上のために改良しました。


ハードウェア面では、まずカメラの支柱のジョイント部を改良しました。
写真は途中経過のもののためありませんが、両方の中心線を通る点で(プリント部品の大穴が開いている部分)で1本のネジで固定します。
この部分は、ロボットを梱包する際に小さくするために付け外しを頻繁に行います。
もともと木ねじ2本で木材を直角に留めていただけだったものを、双方の部品がぴったりはまるジョイントの部品を3Dプリンタで作成してそれで位置決めしつつ固定するようにしました。これは、ネジで荷重を受けないようにするためです。実際、今まで使っていたネジ穴はゆるくなっていて、固定しても部材が少し動いてしまうほどになっていました。

また、USBケーブル1本でPCと接続できるようにUSBハブをロボットに搭載しました。実態としては束ねた配線とUSBハブを結束バンドで本体に固定しただけですが、ロボットから伸びている配線を減らしてスッキリさせておくのは故障率を下げ信頼性を上げるのに良いと思います。ついでに、上の写真にあるように、DS325(デプスカメラ)のケーブルガイドを取り付けて、人や他のロボット等に引っ掛かることがないようにしました。

ソフトウェア面では、小手や胴をうまく打てるようにするための大きな改良を試みていました。
具体的には、軌道生成方式の実験を進めていました。しかし、うまくいかないことがわかったため基本のアルゴリズムは前回までと同じとしました。振りかぶった姿勢から、竹刀先端を接触させるような逆運動学の解となる姿勢まで関節角度を補間して遷移するだけというものです。
唯一の変更として、振りかぶる姿勢を小手や胴の場合やや上腕をひねった姿勢とすることで、鍔などを回避する都合の良い軌道が生成されやすいようにしました。

また、前回は根本関節のサーボに不具合があって、そのため動作速度を抑えていました。速い打突を行おうとするとシリアルサーボ全体のバスで通信異常が増え、全体が動かなくなってしまっていたのです。これを交換したことで本来の動作速度が出せるようになりました。


またアーム部門とは別に、二足型部門が新たに行われました。こちらには今回私は参加しませんでした。ROBO-ONEの上位入賞経験者中心に選手が集まっていました。試験的な試みのため、ルールに改善点がいくつか見つかって良かった、というような形となりました。見栄えもする、それなりに面白い試合になっていたのではないかと思います。ただ技術的には、市販のロボット型ラジコンの制御システムを使ったロボットのみだったため、細かい操作が難しく、隙があってもなかなか有効打突が当てられないようなもどかしい場面もありました。

カンファレンスのスライドにも書きましたが、直径5cmの球に対してきれいに打撃を当てるには±15mm程度の位置精度が必要ということになります。これはROBO-ONE格闘競技と比べると数倍~10倍程度の開きがあるといえます。このような操作を行うにあたり、目視による操縦では離れたロボットを斜めから見るため狙いがつけづらいものです。また、ROBO-ONEで主流の市販ロボット型ラジコンキットの制御システムでは連続的に操作量を変化させての操縦(比例させる:ラジコンで言うところのプロポの語源)が十分サポートされていないということもあり、細かい操作が困難です。どちらかというと、スイングを変化させて狙うというよりは、ちょうど当たるところに来るのを待って打つというような形がよく見られたように思います。
またそれとは別に、本物の剣道のように軸足を中心として踏み込むと同時に打つというのは高度な二足歩行の技術が必要です。これも挑戦しがいのある課題として残ったのではないかと思います。

エキシビジョンとして、二足型の部の優勝ロボットとの異種試合をしました。アーム型ロボットは移動できないため、センサー(カメラ)の検知できる範囲だけに限定して動いてもらう、という形で行われました。準優勝同士、優勝同士、という形で2試合が行われました。

下の動画は、それぞれ準優勝の「ku剣」と「コビス」の試合からのものです。



私の方の結果は、逡巡が2本先取して勝ちとなりました。1本目は相手が転倒から起き上がった直後に当てるという形になってしまいました。これはルールで想定していなかったのですが、審判・審査員の判断により有効となりました。2本目は、相手の上段の構えの腕の隙間から偶然見えていた面を狙いに行ったのが有効打になりました。これは本来相手の腕に阻まれて当たらないのですが、障害物検知や回避のアルゴリズムがまだないので、そのような無理な打撃を出します。
このとき偶然相手が腕を下ろして面が空いたため、そこに命中しました。動きとしては、小手抜き面(※)のような形に見えたかも知れません。
※剣道において、相手が手首を狙って打ってくるのを手足の動きでかわして、相手が空振りしたすきに相手の面を打つ技術・一連の動き。

いずれも、自動制御により正確な打撃操作ができるという良い面が出たのではないかと思います。二足型・操縦型ロボットでも自動制御によるアシストをつける形にするのが一つの進化の方向だと思います、とコメントしました。

今回は参加チームが少なかったので、次回はより多くのチームが参加できるよう普及活動を考えたいと思いました。

2018年7月10日火曜日

第16回ROBO-ONEカンファレンス発表

土曜日の第16回ROBO-ONEカンファレンスで発表しました。「第7回ROBO-剣優勝ロボット『逡巡』」という題目でした。4月の第7回ROBO-剣で優勝した際に依頼を受けたものです。ロボットのハードウェア製作と制御の方法論、実装について解説しました。



もともとROBO-剣という大会自体が自動制御ロボット技術を指向したものでした。ROBO-剣は自律型と操縦型が混成で大会が行われており、逡巡は完全自律型で優勝した初めてのロボットです。そのため、認識や運動制御をメインの話にしました。

ロボットの自動制御というのは一種のAI分野の技術であるといえます。しかし世間一般でいう「AI」のイメージとはおそらく異なり、運動学計算、キャリブレーション等、とにかく地味な話が続きます。まずはこれができないとロボットを思うように動かせないからです。また、実はそれが現状ほぼこのロボットのすべてであるともいえます。センサーで観測した標的の位置に、アームを動かして接触させる、という最低限のシステムを愚直に構成しています。これら地味な部分を実装したシステムが完成して精度もそれなりに出るようになったので、なんとか試合ができるようになった、というところです。連続技、返し技、相手との読み合い等、高度な処理はまだこれからです。

カンファレンス参加者は、通常に比べて大学生が多かったそうです。また、かなりの割合が工学部の学生さんでした。
今の高校数学では行列は教えないそうで、1回生(第1学年)の教養科目(線形代数)で学ぶことになるのだと思います。スライドの説明で使っている数式は、基礎レベルの線形代数と微分積分で理解できるものです。もっとも、数値最適化という若干計算機科学に近い話も入っていますが。無味乾燥に見えるかもしれない数学もこういった応用があるということで、少しでも学生さんたちの動機づけになったことを願っています。

魚型ロボット試作

魚型ロボットを作ってみました。 手乗り二足歩行ロボットの部品を流用し、防水は食品用チャック付きポリ袋の中に機械全体を入れただけのものです。 この形だと関節の隙間や電子回路周辺の空洞によっても浮力が生じます。これによって当初の(あまり根拠がなく感覚的な)予想よりも全体の比...