2016年8月28日 (日)

ROBOT JAPAN 2016に出場

8月21日に行われたROBOT JAPAN 12th 大会に出場しました。メインとなる人型ロボットによる格闘競技の他、ダンス、一発芸、サバイバルマラソンといった別の競技があるのが特徴の大会です。

Img_20160821_113012Img_20160821_165458

私は一発芸部門とサバイバルマラソンに出場しました。
サバイバルマラソンはトラックを周回するコースで歩行の速さを競うものです。複数のロボット時間差で同じ場所からスタートし、追い越されたロボットから順に退場していき、残ったロボットを勝者とします。前回と同じ「Spirit」で出場、決勝に進出、最終的に4位でした。
一発芸部門では、視線検出装置を使ったロボット操縦の実験(ロボット名Direct Eye)を披露しました。画面に映ったロボットカメラの映像を操縦者が見るだけでロボットを遠隔操縦でき、思い通りの場所にロボットを誘導できるというものです。当日朝に完成したばかりでしたがそれなりにうまく行き、好評でした。審査の結果、1位を獲得しました。

Img_20160822_000238Img_20160822_000443

1

このロボットの詳細は次の記事に書きたいと思います。

| | コメント (0) | トラックバック (0)

2016年8月13日 (土)

Maker Faire Tokyo 2016に出展

8月6日、7日に行われたMaker Faire Tokyo 2016に出展しました。出展物は「ロボットアーム書道」としました。「逡巡」を改造したロボットで教示再生により毛筆で字を書くパフォーマンスを行うものです。今回の展示イベントがMaker Faireであることから、「作」「創」「造」の3字を含む動作を作りました。

Img_20160806_092402Img_20160806_171203Img_20160806_170946

NT金沢に出展した時のように、今回もまた展示用ポスターを兼ねた説明資料を作成しました。Googleドライブで公開しました。 PDFファイルとしてダウンロードも可能です。

技術的には直接教示であらかじめ作っておいたモーションを再生するだけというもので、特に新しいことはしませんでした。展示名を「書道ロボット」ではなく「ロボットアーム書道」としたのも、ロボットが書道家になるのではなく、電子工作・機械工作の基礎的な技術と人間の書道技術を組み合わせてパフォーマンスを行います、という意味合いが込められています。実際、ロボット自体は特に書道に特化したものというわけでもなく、しかも使うのに若干コツが必要なシステムになっています。

Img_20160803_224041

ハードウェアの改良として、筆を部材で挟み込んでネジで押さえて固定できるようにしました。筆がアームの中心軸上になくオフセットして付いているのは、長い筆を切断加工せずにそのまま使用できるようにしたかったためです。しかしながらこのために紙の左の方での左払いが非常に書きづらいという機構上の欠陥が動作作成中に判明しています。なんとか誤魔化して、単純な字ではこのぐらいまで書けるようになりました。

Img_20160806_004317

電子回路基板の展示などと比べると大きなロボットで動きも特徴的なため、それなりに目立っていたかもしれません。ロボットが動作中通りかかった来訪者のうち半分以上の方々が足を止めて見てくれたような印象でした。まずまずの成功だったのではないかと思います。

技術者として専門の仕事をしていると思われるような人から技術的なことはあまり知らないという人、小中学生まで幅広い多数の来訪者に見てもらうことができ、色々な話をすることができました。

次は今年の12月Ogaki Mini Maker Faireがあるとのことで、再度改良しての出展を検討しておきたいと思います。

最後に、展示の様子は自分では撮影しなかったため映像はあまり残っていなかったのですが、来訪者視点側からの動画をTwitterで公開してくださった方々がおられましたのでここに引用して紹介します。

 

| | コメント (0) | トラックバック (0)

2016年7月15日 (金)

Dynamixel XM430試用 (メカ編)

Twitterの方にも何回かに分けて投稿しましたが、ここにもまとめておきます。

Dynamixel XM430を入手しました。使用感を知るために基礎的なロボットの機構を作ってみました。アームロボットの旋回ベースや腕のひねり等で見られる構造の2軸配置です。ROBO-剣用ロボットの部品をつけたところです。右に置いた赤い球は直接は関係ありません。ROBO-剣の「面」として使われている50mmの球です。

_dxl_2axes_robot

XM430はケースに空いている止め穴が特徴的です。M2.5(2.6ではなく!)だそうです。深さは3mmです。MX-28のような以前のDynamixelシリーズはトップケースとボトムケースから張り出した「耳」が固定用に設けられていました。この耳がなくなってコンパクトに収まるようになったともいえるかもしれませんが、むしろMX-28の紹介にあるFR07-S101のように専用金具を追加する必要がなくなった、というとらえ方もできるのではないかとおもいます。いずれにせよ一体で成型されているため丈夫な印象を受けました。
_dxl_spacer

試作の旋回軸部分には、スラスト軸受けを簡易的に作りました。転がり軸受ではありませんが、滑らかに摺動して動きつつ軸への曲げ荷重を軽減します。この試作ロボットの負荷であればサーボ本体とサーボホーンだけでも支えられるのではないかと思いますが、検討用・見本用にということで作ってみました。

Xspacer

上の板金下面(サーボホーン上面と一致)とサーボ表面の間には2mmの隙間があります。この隙間を埋めるスペーサーとしてこのような形状の部品を切削により作りました。材質はPOM(ポリアセタール樹脂)、自己潤滑性があることと耐摩耗性から軸受に使われているもののためここにも採用しました。

サーボは四角いポケットにはめ込んだ上でネジで固定します。現状では回転軸から離れたところにあるケースビスで共締めしています。これは、軸に近いところで表面にねじが出っ張ってしまうと上の部品と干渉するからです。皿もみ加工をして皿ねじを使えば2mmの板の厚みにねじを隠すことができるので、トップケースの止め穴も利用できると思います。
モーター自体を見ると、ギア比は353:1、KRS-4034HVが381.2:1ですので、それと近い値です。ギア比が高いせいかもしれませんが、特にガタつきも目立たずしっかりしている感じがしました。また通信プロトコルのバージョンが従来より新しくなり、機能が追加されています(XM430 ROBOTIS e-Manual 参照)。
実際に動かしてみた様子を次回書きます。

| | コメント (0) | トラックバック (0)

2016年7月 3日 (日)

第四回ROBO-剣参加

先週6月25日に行われた第四回ROBO-剣に参加しました。

今回はあまり準備時間が取れなかったので、機械の部分的な変更と修理、新しくなった競技規定への対処をしての出場としました。ただ、プログラムの内部動作を変えたところがうまく働いておらず以前より良い動きができませんでした。
試合結果は1回戦敗退でしたが、デモとプレゼンが評価されて「画像処理テクニック賞」を受賞しました。深度画像センサーを活用して対象を認識し、幾何学的計算に基づいて竹刀を振る軌道を毎回生成している点を評価されました。

_prize

なお、賞の名前についている画像処理というのはここでは画像認識、と言った方が実態に近いかもしれません。画像処理と画像認識いう用語は一般にはあまり区別されていませんが、前者は画像の変形、拡大縮小やぼかし+鮮鋭化等、画像を別の画像にすることを意味します。後者は画像から実世界の記述(ここでは相手のロボットの姿勢や有効打突部位の位置など)を作り上げる、ということを意味します。
認識というと一般には「これは猫です」というようなものの種類の認識が有名でよく報じられているのではないかと思いますが、他の例として「前方30mの真正面に障害物があります」というような物体の位置の「認識」もこの範疇に入る、というわけです。

| | コメント (0) | トラックバック (0)

2016年5月29日 (日)

WiiのゲームをPCから操作するための装置

Nintendo WiiのゲームにPCから操作信号を送るための装置を作りました。これはdenizkoekden/arduino-wiimote としてGitHubで公開されているプロジェクトをそのまま利用したものです。Arduino基板を使ってWiiリモコンの端子につなぐ拡張コントローラーのふりをさせるというものです。
Cimg1175_cimg1188_2

Wiiリモコンの拡張コネクタ(ケーブル側)が単体では手に入らなかったため、PlaystationのコントローラーをWiiで使うための変換アダプタを購入して分解、部品を取り出して使用しました。

Img_20160514_154130_img_20160514_155203

 

これは最初に作ったものです。元の電子回路基板が入っていたケースに穴をあけてマイコン基板を格納、線は半田付けしました。ArduinoはArduino nano互換基板を使用し、また不要なコネクタを除いてケースにすっきり納まるようにしました。

_img_20160515_143408_cimg1212

これは2番目に作ったものです。専用ケースを3DCADで設計し、3Dプリンタで製作しました。
ケースはWiiリモコン側のケーブルに付いていた蛇腹状の部品に合わせてきっちり嵌まるようにしてあります。ケースの蓋は、ねじで止めるようになっています。
ちなみに、このようなケーブルがケースから出るところに付けられている蛇腹状の部品には、ケーブルの断線を防ぐ役割があります。人間がこのような電子機器を使用する際、ケーブルの根元にはてこの原理で大きな力が容易にかかります。その際にこれがないと、ケーブルの根元のケースと接する部分の1点だけが強く大きく曲げられることとなります。それを繰り返すうちに中の導線が金属疲労で断線するというわけです。この部品によってケーブルは緩やかな半径で曲がって外力を往なすようになります。
USBケーブル、電源ケーブル等、コンピューター・電化製品のあらゆるケーブルに見られます。安価なUSB機器などでは格好だけ真似ていてもこの蛇腹部分が全く変形しない粗悪なものがありますが、そのようなものはいつか蛇腹の端で断線することになります。

| | コメント (0) | トラックバック (0)

2016年2月25日 (木)

第28回ROBO-ONE自律賞

第28回ROBO-ONEの結果続報です。予選結果 は242.1cmで112台中78位、予選通過はしませんでしたが自律賞を受賞しました。

_201602roboone_prize

予選の試技内容は当日書いた通り、4.5mのコースを半分程度進んだところで転倒・転落で続行不能により終了、ゴール時間ではなく到達距離が記録となったというものでした。それでも完全自律型ロボットとして課題をわかりやすく遂行していたことが評価されたのではないかと思います。

なお、競技は異なりますがROBO-ONE決勝トーナメントの格闘競技で優勝したロボット「ガーゴイルキッド」も対戦相手を検知して自動的に攻撃する機能を備えていたそうです。DARPA Robotics Challengeのような遠隔操縦ほどでないにせよ、目視の距離でもなかなか対戦相手との位置関係に合わせて操縦するのは容易ではないということで、たとえ操縦タイプのロボットであってもこのように自律性を高めるのが有効なのではないかと思います。

| | コメント (0) | トラックバック (0)

2016年2月14日 (日)

ROBO-ONE予選競技用自律プログラムの概略(画像認識を中心に)

第28回ROBO-ONEに参加した「Spirit」の自律歩行プログラムについて紹介します。

ハードウェアは今までと同様、前方斜め45度下方を見下ろすカラーカメラをセンサーとして使用しています。

ROBO-ONEの床は今までのところ白い化粧板を使用しています。ロゴが書かれていたり黒い四角形・帯状のシートがおかれることはあるものの、ほぼ白を基調とした単色になります。また会場は十分な照明が当てられていることが予想されます。これらの前提のもと、以下のような処理を行うようにしました。

Input

これはROBO-ONE会場の控室で調整中のものです。ロボットのカメラから得た画像です。見やすいようにカラーのまま載せましたが、以降の処理ではグレースケール(モノクロ写真)に変換して使用しています。(320x240に縮小しています)

Binarized

明るい部分(リング上の可能性が高い)と暗い部分に分けます。今回は大津の方法により閾値を決めての二値化を採用しました。大津の方法は判別分析法とも呼ばれています。画像が「明るいところ(前景)」「暗いところ(背景)」という2つの部分からなっていて、画素の明るさの頻度分布表のグラフ(ヒストグラム)が2つの山を持つような形になっていることを仮定していて、その2つをうまく分離するような最適な閾値を決める手法です。

Edge

エッジ抽出という処理です。エッジというのは色の異なる領域の間の境目です。今回はCannyのエッジ抽出器を使用しました。画像処理としては、色が急峻に変化するところが近いものになりますが、ぼやけている場合は多くの点が検出される、等も考慮する必要があります。Cannyのエッジ抽出器は画素の変化が最も急峻となる点を求めることで境界線の位置を決め、かつ近隣の点とつなげることで連続的な線を形成しつつ、ノイズに由来すると思われる短い線を捨てる、等の工夫がなされています。今回の問題設定では上の二値化処理が非常に良く働く状況が予想されたので、二値化した後の画像に対してエッジ抽出を行うようにしました。あまり正当なやり方ではないと思いますが、Cannyのエッジ抽出器にはいくつかパラメータ調整箇所があり、この調整の手間を省くための手抜きであったといえましょう。

Alllines

エッジ抽出ではまだ点の集合にしかなっていません。Hough変換という手法で、それらが並んでいるのであろう直線(の方程式の係数)を求めます。上の画像は、元の画像の上に検出された直線を描画して結果を可視化したものです。(直線検出の)Hough変換は、ざっくり言うと、上のエッジ点がそれぞれ「投票」して多数決を行い、より多くの票を得たような直線を採用するというものです。直線は2つの実数(角度と原点からの距離)の組み合わせで表すことができます。実数は連続的ですが、一周をn等分する等して離散化すれば有限の組み合わせの「候補」があると考えることができます。そしてある一点を通る直線というのは複数(全部の方向)考えられますが、もし点が直線上に並んでいればそれらが共通してその一つの直線に投票するため本当らしい直線は多くの得票を得る、というようなものです。ここでは一定以上の得票を得た直線を候補としました。

(なお、傾きが微妙に異なる線がいくつも描かれて太い線のようになっていますが、これはプログラムの誤りのためでした。レンズ歪みの補正という処理を入れるのを忘れていたため、実際は直線の物体が湾曲して写るためです。これを修正すればこの湾曲はずっと小さくなり、検出精度も向上します。)

ROBO-ONEのリングには模様が書かれている他、足を擦らない歩行や安定した姿勢制御の奨励のための障害物として黒いゴムやプラスチックのシートが置かれます。特に黒いシートの境界線も直線として出る上、時にそれはコースの端の直線を分断することがあります。今回は「左上(原点を含む側)が黒く、右下が白い」ような直線を選びやすいようにしました。上に少し見えるシートから検出された直線(あとで画像をわかりやすい別のものに差し替えます)は、直線を延長していくとコース外を通り、そこでは線の右下も黒いため区別できるであろう、というわけです。この「白い」か「黒い」かの判定で上の二値化処理の結果を使いました。

Coord_conversion

最後に、画像上で得たコースの端の直線を床平面上に投影します。これには直立時の姿勢で予め計測(カメラキャリブレーション)しておいたカメラと床の位置関係をもとに、幾何学的な計算を行います。右の図がその結果を表したグラフです。下の方にある原点がロボットの足先あたりに、画像横幅が900mmに相当します。ロボットはコース端から100mmぐらいのところにいて、進行方向は僅かに偏っている、ということがわかります。この例の実際の数値としては直線は原点から最も近い距離が85mmで、0.0365ラジアン(2.11度)右に傾いている、という結果でした。

コース縁の位置と向きがわかったということは、逆に捉えればロボット自身の位置と向きがわかったということになります。この情報をもとに、コース端との距離を100mm程度の一定値に、自分の向きをコースの進行方向に保とうとするフィードバック制御を行うことで自動走行を実現することができます。これは車両型のライントレースロボットで良く見られるような発想で、ROBO-ONE予選程度であればこれで十分と考えました。Spiritでは太腿のヨー軸を活用して一歩ごとに15度程度まで任意の角度に旋回しながらの前進ができますので、これを操作量とします。一見直進しているように見えても、一歩ずつ小さく旋回することで微調整をしているのです。

おまけです。歩いた際の画像と検出結果をアニメーションで表示したものです。

更に掘り下げていくと動作プランニング(もう少し理由のある次の一歩の決め方)や離散時間系(車型ロボットと違って一歩ごとにしか向きを変えられない)の話やカルマンフィルタ(歩いた時の移動に関する事前知識や、少し前までの記憶を使ったほうが良いのでは?)の話、歩行時にカメラが横に揺れているのはどうなっているのか等、色々話題はあるのですが、ロボットに搭載できた時にまた紹介したいと思います。

| | コメント (0) | トラックバック (0)

2016年2月13日 (土)

第28回ROBO-ONE参加

第28回ROBO-ONEに参加しました。 予選の4.5メートル走に自律走行で挑戦しました。 途中までは画像認識も歩行も順調だったのですが、障害物の段差から降りたところで横方向にバランスを崩して転倒、そのままコースアウトで終了となりました。記録は2421mmでした。

| | コメント (0) | トラックバック (0)

2016年1月11日 (月)

書き初め

今年も色々なロボットや機械を作っていきたいと思います。
昨年ROBO-剣のためにリンクの長さ(アームの軸と軸の距離)を長くしたので、より大きな字が書けるようになりました。
制御方式は2年前に作った単純な教示再生です。今年はもう少し技術的に「進」歩させたい、ということでこの字を選びました。
外界センサー無しでそれらしく書けているのは興味深いところです。少なくとも、筆の塑性変形への対処、関節角度誤差やフレームたわみによるエンドエフェクタの位置の誤差が問題として考えられます。
前者については、動作が毎回同じならば筆の変形具合も大体毎回同じになるという理由で解決されているように見えます。
後者については実際、再生時に動きが「劣化」してうまく書けなかったことがあります。その誤差を見越して誇張した動きで教示していますが、この「誇張」の中身が動作のコツに通じるのかもしれません。

| | コメント (0) | トラックバック (0)

2015年12月12日 (土)

第3回ROBO-剣参加

第3回ROBO-剣大会に参加しました。ロボット登録名は昨年同様「逡巡」で、ハードウェアとソフトウェアを改良したものです。

2015_gazoushori_technique_1_2

  • ベスト8
  • 画像処理テクニック賞

昨年に続いて全自動で試合を行うようにしました。一回戦とエキシビジョンでは有効打を2本ずつ決めることができました。深度画像センサーを活用し、打撃の軌道を毎回生成している点が評価されて画像処理テクニック賞を受賞しました。とはいえ、まだ当初計画していたものの実現していない事項も多いので、来年も出場したいとと思います。

| | コメント (0) | トラックバック (0)

«マイクロマウス2015参加