2019年6月4日火曜日

第9回ROBO-剣参加

5月18日の第9回ROBO-剣に参加しました。
トーナメント準優勝、また知能・シミュレーション賞を受賞しました。

今回もまた、基本的なアルゴリズムは一緒のまま、微調整しての参加でした。
見た目にわかりやすいものとしては、固定用の吸盤を変更しました。今まで使っていたPROMATEバキュームリフターはガラスのような平滑で空気の漏れにくい表面にはしっかりと着きましたが、試合で使われる机では表面になじまず空気が漏れ、しばらくすると外れてしまうという欠点がありました。そのため粘着性があってよく馴染む吸盤4個を使って固定するように変更しました。


また、別途実験の結果、KONDOのKRS-4000用アルミローハイトホーンは、ロットによっては平均しておよそ2.3度(degrees)ぐらいの遊びがあることがわかりました。(別ロットでは0.3度ぐらいに収まっているものもありました。)念の為述べておきますと、この遊びというのは、ギアではなくサーボ出力軸とサーボホーンの間の動力伝達を行う、セレーション部分の隙間によるものです。これはホーンの止めネジを強く締めても解決しません。平らな面同士の摩擦によって少しだけ留まるので手でホーンを回してもわかりませんが、位置保持状態にしてフレームに力を掛けると、遊びの分だけ「カクン」とずれ、そこでまた摩擦で留まるような状態です。そのためせっかくトリム調整やセンサーとのキャリブレーションを行ってもそこからロボットが頻繁に乖離してしまいます。
このロボットには強度より精度、というか再現性が不可欠ですので、樹脂製のローハイトホーンに変更しました。これにより若干良くなったような気がします。特に、上腕ひねり軸は打撃の左右方向へのズレに最も大きく影響していました。



準決勝戦の試合です。「コビス」はROBO-ONE格闘部門の常連チームで、今回はROBO-剣二足部門と兼用のロボットでした。架台に載せて片腕部分のみを使い、必要なマーカーも付けることでアーム部門に出場できる、ということのようでした。相手から打ちにくいように小手を上に上げたり後ろに大きく倒した姿勢としたり等、ルールをよく研究しているように見受けられました。カラーカメラを搭載しており、試合前に色領域の検出のデモも行っていましたが、自動制御にはまだ使っていないとのことでした。
逡巡には障害物の干渉を考慮する機能はまだできていないのですが、運良く小手を決めることができました。振りかぶるように高い姿勢を経由するヒューリスティクスを入れており、その影響で偶然都合よくガードされない角度から打撃することとなったためではないかと思います。

決勝戦「ガルー」との対戦です。
予め決められたいくつかの打突動作をする方式とのことでした。相手の接近を検知するセンサーはあるのが見えます。これによって相手が接近してきたら避ける、という動作を以前は行っていたと思います。コメントの内容から推測するに、有効打突部位の位置を検知する機能はなく、相手ロボットが来そうな場所を当てられそうな軌道で振るというものだと思われます。最も目立った点としては、写真のように、相手ロボットから絶対届かない距離まで逃げる機能を持っていました。
逡巡は標的が止まっていると仮定して打突動作を行っています。そのため、相手が攻撃のために近づいてきたときにはそれを打とうとするが、実際には相手はもう引っ込んでいるので空振りする、というような動きになってしまいました。
また、たとえ竹刀が届かないことがわかっても、ある程度の範囲であればとりあえず剣先を最も近づけられるような打突を行うようになっています。そのためこの防御姿勢の相手に対しても空振りを繰り返すことになります。
互いに有効打が出なかったため、延長戦となりました。最後は、逡巡が空振りによって胴が空いているところにガルーの攻撃が当たりました。
標的の検出処理は秒間5フレーム程度かそれ以上で処理できているので、多項式関数のフィッティングと外挿によって移動予測ができるのではないかと思いました。次回大会までに試してみます。

第2回となる二足部門も行われました。

今回二足部門参加ロボットは、すべてラジコン型のロボットでした。ほぼすべての試合で、たとえ相手に隙があっても有効打突部位に当てるのに大変苦労しているのが伺えました。要因の一つは、市販のロボット型ラジコンキットのシステムを使っているロボットが多かったため、腕の動きで細かい狙いを定めるプログラミングが難しかったためではないかと思います。ROBO-ONE格闘競技と同じように、足を使った移動で打撃方向を微調整している様子が伺えました。この点、「コビス」や他のいくつかのロボットは上半身の動きで左右に微調整できるように操縦系を工夫していたのが見えました。しかしながらもう一つの要因として、ロボットを斜めから見るため、竹刀を振ったときどこに当たるかが操縦者から見て把握しづらいというのがあるのではないかと思いました。操縦型でもまだいろいろと工夫の余地があって面白いと思いました。


エキシビジョンとして二足部門とアーム部門の対戦も行われました。アーム部門のレギュレーションはROBO-ONEの標準的なサイズの二足歩行ロボットと対戦できるように考えて作られているとのことです。最初の関節(肩に相当)が地上からの高さ230mmというのがその最たるものです。

Bluethunderとの試合です。

前述のように止まっている標的しか打てないアルゴリズムですが、二足側操縦系のコマンドによっては面などが少し同じ場所に留まる期間があり、そのときに当てられたという感じでした。録画に失敗してしまったのですが、別のロボットともう1試合させてもらい、そちらも2-0で勝利しました。
さすが自動制御だから速い、というような感想を貰ったように記憶しています。しかし実際は打撃の速さは他のアーム型ロボットに比べてさほど速くなく、また今回出ていた二足部門のロボットに及びません。有効打突部位を正確に狙っていて、かつアームの最大長ぐらいの遠い距離からでも打つのですごく速く見える、ということではないかと思います。
センサーで情報を得て計算によって打突動作を生成するという自動制御ロボットのメリットをわかりやすく示せたのではないかと思います。

腕と竹刀の長さが両部門で同じなので、究極的には踏み込むと同時に打撃が行える二足側が有利なのではないかと思います。今はまだフルにリーチを活かしているロボットが少ないため、若干有利に戦うことができました。

また、次回か次々回は私も二足部門にも出場したいと思います。

2019年5月11日土曜日

Maker Faire Kyoto 2019に出展

5月4日、5日に行われたMaker Faire Kyoto 2019に出展しました。京都では今回初開催でした。Miniと付かないMaker Faireとしては日本で2カ所目になります。

出展者名「山口自動機械」でロボットアーム書道とロボット剣道のデモ、そして手乗り二足歩行ロボットの展示と販売を行いました。

3年前からロボットアーム書道として展示しているアームロボット「逡巡」ですが、元々ROBO-剣のために作ったものですので、その本来の動作も実演しました。ROBO-剣の動作を披露するのは、Maker Faireのような展示会形式のイベントでは今回初めてでした。なお、他にはROBOT JAPANの一発芸競技部門で披露したことがあります。

書道についてはベクタデータから筆の軌道を自動生成するシステムを作りかけたところだったのですが、字が描けるところまでは開発が間に合わなかったので今まで同様直接教示によるデモを行いました。その特徴を活かして書道の筆使いのお手本のような動作でゆっくりと動作するところを見てもらいました。

ROBO-剣のシステムについては、デプスカメラで標的を見つけて自動で打撃する実演を行いました。実際にダミー標的を動かしながら認識する様子をPCの画面(Rviz)で見られるようにしてあるので、これを見せながら処理の流れを説明しました。ロボットを初めて見る人にも、良く理解してもらえたのではないかと思います。

ただ、遂行するタスク自体が地味なので遠目に見た時はあまり目立たなかったように思います。次があれば、もう1台同じようなロボットを作って試合を見せる、というように説明無しでもわかりやすいものにしたいと思います。

また、何人かのmakerからはROSの活用やアルゴリズムについていくつかの貴重なアドバイスを貰えました。今後に活かしたいと思います。

手乗り二足歩行ロボットは3台売れました。忘れられがちですが、個人のCommercial Makerとして出展&販売しています。この物品販売については一度経験してみようということで始めたものでした。今では、展示以上に積極的にmakerコミュニティに関わっていきたいというような感じで続けているように思います。今回もまた、機械設計が専門でメカトロに興味を持ったという人、地域のイベントで操縦体験として使ってみるという人等、予想しなかった様々な反応を得られたので嬉しく思います。もう少し台数を作って持っていければよかった、というのが反省点です。今後もまた改良を重ねてイベント等で頒布を続けていきたいと思います。

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ピンの状態に関係なく通常起動するようになりました。

第9回ROBO-剣参加

5月18日の 第9回ROBO-剣 に参加しました。 トーナメント準優勝、また知能・シミュレーション賞を受賞しました。 今回もまた、基本的なアルゴリズムは一緒のまま、微調整しての参加でした。 見た目にわかりやすいものとしては、固定用の吸盤を変更しました。今まで使っ...