風兎2014

2014年7月13日 (日)

センサー類をまとめたコネクタ

Cimg1684 Cimg1685 Cimg1686

車体前方、グリッパー周辺のセンサー類の配線をまとめたコネクタです。ケーブル側は、ユニバーサル基板を切ったものにピンソケットを半田付けした上で半田面にビニル導線を半田付けしたものです。

  • PSD距離センサーx3
  • グリッパー先端の対象物センサー
  • カメラ用白色LED
私のロボットの電装系設計の基本方針として、必要ない個所はコネクタにしないというものがあります。特にセンサー類の配線は末端側にはコネクタを設けず線を半田付けし、中央側にのみコネクタをつけるようにしています。これは、コネクタを付けるスペースを節約するためと、コネクタに起因する接触不良や半田割れ、断線等を予め防ぐためです。
一例としてこのグリッパー先端のセンサーは、完成して動作が確認をあらかじめ行った自作回路ですので交換部品と交換するということはありません。そのため配線は直に基板上のパターンにはんだ付けされています。一方、マイコンを載せている基板は順次機能を追加しながら作っているため、回路変更を行う際に取り外して作業を行う可能性があります。そのためここだけ外せるようになっていると便利ですので、コネクタで脱着できるようにしました。
また、コネクタの数を減らすためにまとめられるものは1つのコネクタにするようにしています。理由は素早く取り外せること、マイコン基板の大きさと空間が限られているので多数の基板側コネクタを設置できないこと、コネクタの脱着の際に隣のコネクタを触って断線を起こすおそれがあること等です。
ただ、今回は少しまとめすぎたかもしれません。グリッパー部分をシャーシから完全に取り外すにはPSD距離センサーも外さなければならない、といような不都合がありました。

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

2014年7月12日 (土)

グリッパー先の対象物センサー

グリッパー先端の対象物センサーの回路です。

Cimg1679

Hand_sensor

上の回路図で点線の枠は、回路基板の分割の仕方を表しています。枠から出ている線がケーブルになります。右の指に受光部を含むセンサー用IC(S7136)、左の指に赤外線LEDを取り付けてあります。CPU基板とは電源+・GND・信号の3本の線で接続します。

Cimg1677 Cimg1678

実際に大会に出場したロボットの回路は少しだけ違っています。トランジスタ(2SA1015)を使うことで赤外LEDにICのカソード端子の許容容量以上の電流を流すこともできるようにしていました。しかし、結局赤外LEDと直列に入れる抵抗を100オームにした状態で十分でしたので、実質は上の回路図と同じ状態です。

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

2014年6月28日 (土)

床ラインセンサー

Cimg1653Cimg1717

床ラインセンサーは2004年からの設計を引き継いでいます。

  • 4個横一列。中心を車体の左右中心に。
  • センサーの中心同士の間隔は15.24mm。2個が同時にライン(19mm)に掛かる間隔で、ユニバーサル基板のピッチ6個分。
  • 床から浮かせる。赤外LEDで広い範囲を照らし、広い範囲の反射光を得ることで線から離れるにつれて滑らかに変化する信号を得るため。

赤外線LEDの発光をMOSFETで制御し、反射光の強度をフォトトランジスタと抵抗で電圧に変換してA/Dコンバーターで読み取る形式です。フォトトランジスタの線形性を仮定すれば、消灯時の電圧と点灯時の電圧の差を取ることで外から(センサーの赤外LED以外)の光の影響を打ち消すことができます。回路図は風兎2009LTの解説にほぼ同じものがあります。フォトトランジスタと赤外線LEDの代わりに、秋月電子でも販売されているTPR-105Fを使用しました。これは入手性の高い部品を試験的に使ってみようとして選んだものです。

Cimg1691Cimg1690

取り付けは前方が軽く斜め上を向くようにしました。これはセンサーの光軸が床と垂直になることによる鏡面反射成分の影響を避け、かつ床との距離を離すことで床との距離の変動の影響を減らすためです。平らな床の上での静止時、センサー素子は床から8~9mm程浮いている状態になります。

取り付け方法は、斜めにするためのくさび形の土台をシャーシに付けた上に両面テープで基板を接着します。元々は衝突時の破損を防ぐためでしたが、ネジ穴等の加工が不要で小さく低く作りやすい利点もあり、そして簡単なので試作段階で採用してそのままになりました。ただ、時間が経つにつれて接着面方向に平行に斜めにずれてきてしまっていたため、あまりよい方法ではないかもしれません。

Cimg1693

またこれも恒例ですが、外からの光を防ぐための覆いをつけました。厚紙に黒ビニルテープを貼ったものです。いつも直前に作るのでこのように簡易的なものなります。

外からの光を防ぐ効果を狙ったものでしたが、床との隙間が大きいこと、また回路とプログラムで外部光の影響を除去できるようにしていることから、気休め程度だったのではないかと思います。むしろ基板を機械的に保護する外装としての機能が主でした。

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

2014年6月26日 (木)

電装系: 信号のブロック線図

Kazeusagi2014blockdiagram_2

電装系のブロック線図です。電源回路を除いて、信号部分のみマイコンとのインターフェースをもとに分類し接続方法を表した図です。

制御装置として用いるマイコンにはSTM32F103を使用し、内蔵クロック発振回路を使用して64MHzで動作させています。すべての機能がマイコンに直接接続されています。

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

2014年6月25日 (水)

対象物持ち上げ機構

Cimg1683

グリッパーおよび対象物を持ち上げたり降ろしたりするための軸、「手首」あるいは「肩」に例えられる部分です。ここもグリッパーと同様に、R/C用サーボモーター(以下単にサーボと表記)を使用し、両持ち構造にするための部品を加えたものです。加えて、対象物を持ち上げた際に後部の電子回路基板に対象物が当たらないようにするため、適度な高さにアーム上下用の軸を置くための部品を作りました。仮に「アーム台」と呼んでいます。

Cimg1688

Img_20140531_200455Img_20140531_184131

3mmのABS板に溝を掘って組み合わせ、ABS用接着剤で接着して作られた柱状の部品です。最終的には左写真左下側面の位置にも板を付け、PSD距離センサの取り付け位置としました。

Cimg1748

横から見たところです。アーム台を作った後で、当初の予定より軸を前に出す必要があることに気づいたため、このように少し前にはみ出した形になっています。

なお、このアーム台と本体、アーム上下用サーボの間は大会出場時まで両面テープで接着されていました。ひとまず仮のものを作って両面テープで貼りあわせながら動きを確認し、最終的に作りなおして本格的に固定するのが本来のところですが、時間の都合で最後の段階を省略しました。しかし強度は十分で、ロボット本体の荷重にも耐えられます。とはいえ、あまり褒められた使い方ではないと思います。大会終了後、タッピングビスで固定しました。

Cimg1747

アームを下げ、左から見たところです。PSD距離センサーがグリッパーの陰に収まり、ぎりぎりぶつからないようになっています。アーム上下用の軸を少し前に出したのはこのためでした。別の方法として、軸とグリッパーの距離を伸ばしても良かったかもしれません。

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

2014年6月23日 (月)

対象物の回収動作

機構の説明から一旦少し離れ、対象物を探して掴む動作についてです。

ロボットに自動的にタスクを遂行させるには多くのアプローチがありますが、風兎2014の場合は競技に必要な動作をいくつか予め作っておき、それらを必要なときに順次行うという方式をとっています。動作は短いものから長いものまであって階層構造を作っています。そのうちの一つがこれです。

別角度から。

これは「対象物エリアで前方にある対象物を探し、あれば取って元の位置に戻る」という動作です。 更に分解していくと、「PSD距離センサーで前方に対象物があるか調べ、あればその方向を得る」「アームを下げて対象物が手の中に入るまで前進する」「対象物の種類を調べる」「対象物をつかむ」「予め記憶した座標に移動する」というようになります。

あらかじめ作っておく動作とはいえ、要所々々で誤差をなくして成功率を高める必要があります。最も良い例は、グリッパー先端のセンサー(透過型フォトインタラプタ)を使った前後の位置合わせではないかと思います。風兎のグリッパーは前後方向が20mmもずれれば対象物を確実に掴めなくなってしまいます。PSD距離センサーで距離が得られるものの、そこまで正確にするのは容易ではありません。そこで、まずはアームを下げグリッパーを開いてゆっくり前進していき、指の間に物体が入って光が遮られた位置を基準にします。すると前後方向に関してはいつもほぼ一定の位置関係で対象物をつかむ動作を始めることができます。また、つかむ動作の直前に行う対象物の種類と色の判別も同様の理由で確実性を上げることができます。

なお確実性を上げるための別のアプローチとしては、機構的に工夫する方法もあります。このロボットのように近づいて取るのであれば、グリッパーの真ん中、「手のひら」にあたる位置で対象物を押して動かすことで物理的拘束により対象物とロボットの位置関係を一定にすることができる場合もあります。風兎2007ではそのような方法でテニスボールや箱入り石鹸、缶を扱っていました。特に箱入り石鹸に対しては、回転方向をロボットの向きに強制的に揃えることができるので重宝しました。

左右方向はまだ見てわかるほどのずれがあり、改善の余地があります。理由はほぼわかっており、PSD距離センサー(GP2D120)を振り回す際、センサーが動いてから出力電圧が変化するまでに若干の遅れがあるのを無視しているためです。正確には、遅れだけでなく出力電圧の更新周期があるようで、出力電圧は階段関数状に変化します。

それと関連して、中心からずれたボールを掴んだ時に車体が動かされてしまっていますが、この動きは車輪の回転を通じて検出・計測されていますので、それを反映して下がるときには向き直りながら元の位置まで下がるようになっています。

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

2014年6月22日 (日)

グリッパー

対象物を把持するグリッパー部分です。風兎2010までと違って両開きの機構にしました。理由は、対象物が中央からずれた状態でつかもうとした際にも確実に保持できるようにするためです。手を閉じる動作によって床の上で対象物を引きずる形となり、その距離が大きいと、特にスポンジボールの場合には指の部分がボールに乗り上げてしまう恐れがあるのです。

Cimg1645Cimg1679 Cimg1649

手を開閉するモーターにはSAVOXのR/Cデジタルサーボ、SH-0255を使用しました。特にこれでなければならなかった理由はなく、手元にあった中で大きさが程よく、トルクが十分そうだったからです。7.4V電池を直接電源とすると負荷がかかった際に内蔵の電子回路が壊れるので、6Vの3端子レギュレーターを介して電源を供給するようにしています。これもまた、本当は安全のために5Vぐらいが良かったのではないかと思いますが、手元にL7806があったのでそれを使いました。

ROBO-ONE参加者の間や関連商品では「サーボブラケット」「サーボアーム」「反対軸」と呼ばれている構造を採用しています。まず「ブラケット」としてサーボ本体を囲むような構造を作り、ここにサーボをネジで固定します。ブラケットの背側(サーボホーンと反対側)、サーボ出力軸の延長線上には2.5mmの穴が設けられており、ここにM3ネジを締めつけて関節軸とします。これを「反対軸」と呼びます。

Cimg1683

これは指ではなく「肩」あるいは「手首」の部分ですが、同じ部品と構造なので載せました。サーボブラケットの構造がわかりやすいと思います。3mmABS板の部品5枚に分けて切り出し、ABS用接着剤で接着して作りました。

Cimg1568

「サーボアーム」はサーボホーンと一体化して動き、サーボの裏側まで伸びるコの字型の部品です。テフロンブッシュと共に反対軸用の穴にネジで止めることで両持ち構造の関節になります。

ここからが市販品にない部分で、サーボアームの反対軸周りにモジュール1.0のギアを一体化して作りました。これをもう一つのサーボアームと噛み合わせ、2本のアーム(指)が逆方向に同期して動くようにしました。黒いサーボアームが従動側、アルミのサーボアームが駆動側です。更に従動アームのサーボホーン側にもテフロンブッシュによる軸受けを設けることで、2つの指のちらも両持ち構造で支えています。いうなれば「反対軸の反対軸」です。

従動側のアームがアルミではなくABS製になっているのは、摩耗のコントロールというようなよく考えられた理由ではなく、単にアルミ加工がうまくいかなかった時に試しにABSでも作ってみたためです。2mm厚のABS板を用いました。構造は一緒ですが、曲げの代わりに直角に接着する部分が弱くなりそうだったので、補強用の小さな棒を内側に追加してあります。

Cimg1725

その後アルミで作りなおしましたが、ABSでも動作に支障はなかったのでそのままになっていました。この写真は曲げる前の従動側アームです。サーボホーンの取り付け穴の代わりに、ブッシュと組み合わせて軸受けにするための穴だけが空いています。

なお、上記の構造ではABSに立てたビスがその半径方向および剪断の力を受けることになるので、大きな力が掛かる場合はあまり望ましくないと思います。フランジ付きブッシュのフランジがはまるポケットをサーボブラケットに設けて支持するのがより良いのではないかと思います。

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

2014年6月21日 (土)

風兎2014 機構解説 走行系2 モーター、駆動輪、減速機とその取付

駆動輪周りの構成についてです。分解しながら見ていきます。元京都大学機械研究会の小島が製作したこじまうす4の設計を参考にしました。部品の選定はほぼ同一です。

Cimg1700Cimg1703_2

エンコーダーおよびモーターはFaulhaberの1331T006SR-IE2-400。写真のように2個点対称に配置。

Cimg1701Cimg1702

ギア比は14:36。モジュール0.3。協育歯車製。ピニオンギアはS30B14K+0402、スパーギアはS30B 36B+0203。ピニオンギアには軸径を合わせるための詰め物をABSで作成。スパーギアはベアリングを入れるために軸穴を広げた。両者ともボスを切り落として使用。車輪にギアとベアリングを接着して固定。軸の代わりにしたM3のネジをナットでロボット本体に取り付け。

Cimg1705Cimg1706

車軸支持部分。3mmABS板2枚に分けて削り出し、ABS用接着剤により接着。その後シャーシにネジ止め。シャーシとは接着しなかったのは、設計変更やメンテナンスのために交換できるようにしたかったため。位置を決め、かつ横方向の荷重を支えるためにシャーシに溝を彫ってそこにはめ込んだ上でタッピングビスにより固定。

Cimg1708

モーターは左のポケット(くぼみ)に押し込んで固定。中央の穴は車軸を固定する部分。2mm厚のM3ナットを窪みにはめ込んで保持。右の穴は特に意味がない。設計試作段階で変更の際に再利用しやすいと考えてなんとなく左右対称にしておいたものの名残。

Cimg1712Cimg1713Cimg1711

車輪とタイヤ。タイヤは京商のMini-z Racerというラジコンカーのための交換部品を利用。車輪は10mm厚ABS板からCNCフライス(KitMill BT200)により削り出し。

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

2014年6月20日 (金)

第26回知能ロボットコンテスト 決勝

決勝です。

これは2回目のリトライ=3回目の試技です。この回の得点が公式記録になりました。

1回目の試技はほぼ順調だったのですが、最後の方にあった缶を倒してしまって取れなくなったためリトライを宣言しました。そして2回目は、スタート直後に自由ボールのシュートに失敗てしまいリトライしました。状況はこの3回目の映像と同じです。 自由ボールのシュートに失敗した原因は未だ究明されていませんが、「90度左を向く-投げる-90度右を向く」という一連の動作がまるごと省略されてしまった、というのが今のところ考え得る状況です。プログラム上そのようなことは考えづらいので、未だに謎です。そして、この最後の試技でも再現してしまっています。

缶の色を間違えているのは、物体の色の識別方法に原因があります。このロボットは缶やボールを掴む直前に「手」の上に付いたカメラで(電子的に)写真を撮って、その画像の特定の部分を切り出して色の判別を行っています。本格的な画像認識処理であれば、ボールや缶がどこにあるかを見つけ、その色を見る、という少なくとも2段階の処理が必要ですが、ここでは前半を全く省略しているわけです。というのも、物体を見つけるためにPSD距離センサで走査して左右の方向を得、更に手の指の間に付いている赤外線透過型センサーを使って前後方向の位置を合わせているので、いつもほぼ同じ部分にボールや缶が写るからです。しかしながら左右方向についてはややずれが大きく、そのせいで誤って床などの本来想定しない部分の色を見てしまったのではないかと思います。

本格的な画像認識処理を省略した理由のひとつは以前使っていたマイコンの計算速度では余裕がなかったからでした。現在使っているマイコンでしたら、色の領域を抽出する等、もう少し本格的な処理をすることもできたと思います。

プログラムはほぼ二次予選と同じですが、コーナーと直線の走行速度は二次予選時より1.5倍程度に上げ、また加速度も少し上げました。そのおかげでスピード感が出たのではないかと思います。「風兎」は以前より、1個ずつしか対象物を運べなくても探査と移動を高速にすればタスクを早く終わらせることができる、という考えのもとに作ってきました。今年は少なくとも後者については、それらしい動きができたのではないかと重います。

最後まで気の抜けない大会でしたが、甲斐あって良い結果を残すことができました。得点や順位もさることながら、観客や審査員の印象に残るような動きができたので一安心しています。応援してくださった皆様、ありがとうございました。

実を言うといくつか実現できなかったアイディアもあるのですが、それは今後ここで紹介するとともにいつか実現していきたいと思います。

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

風兎2014 機構解説 走行系1

今年はハードウェア、特に機械機構に力を入れたのでそこから各部を解説していきたいと思います。

まずは移動装置の方式とその性能についての考察です。

Cimg1652

マイクロマウスによく見られる2輪独立駆動の車輪です。2輪だけでは自立できないので、従動輪の代わとしてシャーシの下面前後に出っ張りを設け、その上に摩擦軽減のための家具用シートを貼ってあります。床の段差に耐えられるよう、前後が同時には接地しない程度の高さになっています。アームを上げた状態では重心がおよそ駆動輪の車軸延長線上(よりやや前方)にありますが、アームと対象物が重いので競技中は大抵前方が接地して後方は浮いています。ただし、加減速の際には後ろ側が接地することもあります。

前後に滑り材を貼る意味については実はなかなか難しいところがあるように思いますが、今までの経験からは、どちらか一方が基本的に車体重量の一部を支え、もう一方は加減速時に車体の傾きおよびそれによる床ラインセンサーの上下動を許容できる範囲に抑えるために補助的に働くというのが実際のところのように思います。

決勝のインタビューで中野先生から加速時にウィリーしてしまうのではないかという質問を頂いたのですが、今になって検討してみると、「確かに車体が後方に傾くことはあり、滑り材に若干の荷重が移ってしまうものの、今回使用した加速度の範囲においては駆動輪のスリップを起こすほどではなく、実用上問題なかった」というのが答えになると思います。

また、カーブ走行時の遠心力ですが、これも同様に問題ない範囲だったということになると思います。走行速度は決勝では概算で600[mm/s]、旋回半径を仮に150mm(コースの線の半径)とすると遠心力は2.4[m/s^2]ぐらいということになります。マイクロマウス等に比べると低い値です。今回使用したmini-zのタイヤは摩擦係数が3近くあることが実験的にわかっていますので、重力加速度の4分の1程度であれば十分余裕があるといえるのではないかと思います。とはいえ風兎はそれらに比べて重心の高いロボットですので、遠心力によって内側の車輪のスリップが起こる可能性はあります。実際の挙動の記録をとって調べてみると面白い結果が得られるかもしれません。

ただ、仮にスリップが起こっても、ライントレース走行時の本ロボットは走行方向はセンサーで検知したラインの方向に従っており、スリップによる方向のズレはライン追従の安定化制御を破綻させない限り問題になりません。ラインに沿った1次元座標系において車輪回転数からの自己位置推定を行っていますが、その座標も交差点ごとに補正しているため許容される誤差が大きくなっています。具体的には、交差点を発見した際には推定値と実際の誤差が150mm以内であれば推定した自己座標から特定の箇所の交差点だと認識して補正を行うようになっています。また、コーナーに入る前も150mm前からコーナー用の速度まで減速するようにしているため同様に150mm以内なら誤差があっても問題ないわけです。

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