書きこみ順は、古い物から新しい物の順です。
05.04.10
新2足ロボ
W6もキリのいいところまで出来たので、1つ新しく2足ロボを作ろうと図面を引き始めました。
以下に、現時点での構想をリストします。
- 材料はあるもので間に合わせる。
(すでに解体したロボットの部品や、多めに買った
スペア用の部品が2L2やW6を数台作れるくらい眠っているので、これを活用したいと
思います。)
- 上半身まで含めた合計自由度:12
- 目標全備重量:1kg以下
- RCサーボの機種:SRM1301×10、ERG−WR×2
- マイコン:H8/3069×1(メモリ2Mbyte)
- バッテリー:7.2V/700mAh Ni−MH×1
- 無線:完全自律にしたいので、無しの方向
- 第7回ROBO-ONEレギュレーションを満たす。
- 主要構造材料:いつもの1mm厚プラ板
- センサー:PG03×2、ADXL202×1、超音波距離センサ、C−MOSカメラ、
CDS、PSD等(2L2とW6のシステムに習う)
05.04.17
製作開始
先週に続いて、構想をまとめつつ、こんな感じで図面を書き進めています。右足を作り始めました。
少なくとも2ヶ月くらいは仕事がかなり暇になりそうなので
、その間に普通に歩くくらいは出来たらいいなと思って
います。
以下は構想の続きです。
- 転倒と起き上がりのことは考慮する。
- 応急修理のことは考えない(2分で脚が交換できる・・・とかは考えない)
- 持ち運びは考慮する
- このロボットで新しく試すことは、ボディーの構造。
- 外装つき(キャシャーンのツメロボか、デュアルのOPで撃破される羅螺軍のロボみないなのがいいかな?)
- 背の高さは大体30cm
- H8でリアルタイムの歩行の制御が出来るように、逆運動学計算の軽い脚の構造にする。
- 拡張性は重視しない。(2L1やW6のようにだんだん複雑にしていかない)
- 臨む姿勢は、自由研究用のロボット製作ではなくて、ラジコン飛行機か何かを作るみたいに
作る過程よりは、動かすことに比重を置く
05.04.24
腰の設計
ロボサピエンの様に上半身を振って重心移動をするロボットなので、左右方向の可動範囲
の検討や、うつ伏せからの起き上がりの時に必要な可動範囲そして、作りやすさや
剛性などを考えながら設計を進めました。まだ全体が見えないので、コレで良いのか
分かりませんが、ダメなら直すつもりで右足の先から作り始めました。
仰向けからは起きられないような感じですが、いい事にしました。例によってプラ板
で作っていますが、転倒を気にしなくていいようにと考えると、プラ板や出始めの頃の
RCカーに使われていたABSではなくて、
今のRCカーのシャーシに使われている様なプラスチック
(あれ、正確にはなんていうんでしょう?)
が、比重が小さくて、衝撃にも強くて良いのかなーなどと思いました。(量産にも向くし・・・)
各関節のシャフトは、自重が2L1/2L2の半分程度ということで、軽量化のため
3mmから2mmに落としました。前からシャフト自体のせん断とか、曲げとかの
強度的には2mmでもOKだったと思っていますが、軸受けの面圧が高くなると、軸受けの
穴が広がりやすくなってしまうのが、ちょっと気になるところです。
図面には今のところTREVAが描いてありますが、カメラをTREVAにするか、
ゲームボーイポケットカメラにするか迷っています。
- GBCAM:W6のソフトが使えるけれどIOに使うピン数が多い。露出調整などに自由度が大きい。モノクロ。ストックは2個(手持ちでステレオ化可能。同期撮影可能)。電源5V
- TREVA:ドライバソフトを新しく書かないといけない。必要ピン数は少ない。露出&
シャッタータイミングが
ユニット任せ。カラー。ストックは1個(ステレオ化未定。2つのユニットの同期も取れないし・・・)電源3V
こうして考えると、ステレオにしなければ、Trevaが良さそうな気がしてきました。
05.05.06
新しいバッテリー
先日、なにげなく千石電商のHPを見ていて、新しい2足ロボ(名前がないと不便なので、
とりあえず記号は2L3としておきます。)に使う単4のNI−MHバッテリーのバッテリーボックス
を探していると、NH−MHバッテリー自体も手元にあるものよりまた性能アップしていることに
気がつきました。
6L1用に買った単4のNI−MHバッテリーは東芝のTH−4Aで550mAhの容量でした。
で、今売っているやつはTH−4Kで(min.)840mAhでした。前のバッテリーもだいぶ
古くなり性能が落ちてきている気がしていたので、新しく12本買いました。
充電器は、2L2で用意した「ACアダプタと家電用のタイマ」の組み合わせの充電器で
充電時間を増やせば対応できそうなので、TH−4K用のものは購入しませんでした。
6本セットの状態で、この充電器での充電電流を計測し、充電時間を決めたいと思います。
05.05.15
2L3の左脚の製作
名前の案
05.05.22
左脚の製作
腰の製作
ピッチ軸の反対軸を作って、出来上がった寸法を反映しながら腰の関節の
周囲の寸法をCADで詰めていっています。
|
反対軸
|
05.05.29
腰の製作
ピッチ軸とロール軸が直交するように両面テープでとめました。
|
腰関節
両面テープでとめてあります。使っているRCサーボ
(サンワERG−WRとERG−VB)
のトルクから考えると強度不足のような気がしますが、ロボットの全備重量が
小さいので、多分大丈夫・・・と思いたいです。
|
マイコン等の取り付け方
マイコン、バッテリー、DC/DCコンバータの基板をどうやって収めるか、だいぶ考えました。
今回は「ただの直方体はやめて・・・」と考えていましたが、CADでいろいろ書きながら
検討した結果「マイコン、バッテリー、DC/DCコンバータの基板もみんな四角なので、直方体
に収めるのが容積の効率が良くて、使う構造部材も少なく軽くなるし・・・重量制限が
厳しいから直方体で我慢するか・・・」と考えました。
そんな訳で、また直方体になりそうです。
話はそれますが、いろんな工業製品のデザインがどうも平面的になってしまうのは、たとえ
CADが3Dでも、レンダリングが出来てグリグリ回転できても、結局、データ入力と確認
を平面的なディスプレイでするせいではないかという気がします。
バキュームフォームの型やフィギュアを粘土から作る時の感じと、3D CADを開発して
いて得られた知見とを比較すると、そう思います。
あと、フラットな定盤等、汎用の冶具で簡単に精度が出せて効率が良いのも、四角いモノが
多い理由だろうとも思います。(自由曲面は、データを作るのも、モノを作るのも、
強度の解析とかも、全て手間がかかりますね)
RCサーボの機種選定の理由
うつ伏せから、腰の力を使って力任せに起き上がるモーションを考えているので、ピッチ軸
側のRCサーボは比較的強力な機種を選びました。手持ちで最も強力なのは
KOのKRS2346ICSなのですが、DC/DCコンバータの出力が5V/4Aしか
ないので、アナログサーボのERG−VBにしました。
ロール軸は歩行時にジャイロからのフィードバックを行い、歩行の安定の要になるので
ある程度パワーがあってレスポンスが良いデジタルサーボのERG−WRにしました。
その他の部分は、材料費を抑えるため、SRM−1301にしました。
(あるものを使うので、あんまり関係ないですが)
05.06.05
胸の製作
05.06.12
胸の製作
サーボホーンの選択
腰のサーボホーンは、ストックがあるハイトルクサーボ用のなかで
一番内側の穴が、軸より程よく離れていて、φ2mmのタップスクリュー
(木ネジ)が使いやすいという理由で、KO製のモノを使いました。(あんまり軸に近いと、ネジの
穴が割れてしまうので、ソレを避けるためです。)
ちなみに、ハイトルクサーボ用のサーボホーンはホーン部分が厚くて剛性が高く、また、軸部分の
穴が広がりにくいように、軸部分の外周に金属(真鍮?)の輪がかかっています。
ヒザ用は、SRM-1301やSX-101Zに標準で付いてくるサーボホーンを使いました。
腕用は、転倒時にRCサーボのギア等が壊れるのを防ぐため、スプリング入りのサーボホーン
(ラジコンカーのスペアパーツとしては「サーボセイバー」という名前で売っている)を
使うか検討しています。ボディーの構造がプラスチック製で弾性が高いことと、RCサーボを
両面テープで留めていることの2点を考慮すると、サーボセイバーを付けなくても、ある程度の
衝撃は逃がせるのではないかという気もします。
05.06.19
骨盤の製作
|
骨盤(前より)
奥の直径10mmの穴がRCサーボの出力軸用、手前の3mmの穴が
その反対軸用です。
|
|
骨盤(後ろより)
|
|
骨盤(裏より)
|
脚の調整
両足を骨盤に取り付けて、左右の足が水平および平行になるように調整しました。
|
足の水平調整
ボールジョイントのアジャスター(黒い棒上の部分)で、足の水平の調整をしました。
ちなみに、これらの部品はRCヘリのローターマスト用の物を流用しています。
2L1用にいろんな長さのを買ってストックしてあった物の余りです。
|
|
足の平行調整
股関節の金具の穴を広げて、両足の平行を調整しました。
|
|
棒やすり
|
05.06.26
腰の組み立て
骨盤と両脚そして、胸を組み立てました。そこかしこがちょっと曲がっていて気になるのですが
、まあ良いことにします。(特にRCサーボのケースのテーパーを無視してヒザを組んだのが
影響大でした。)
|
前より
|
|
後ろより
後ろから見たところです。「腰に回転運動が発生しない」を歩行時における安定化の
条件とするため、腰にピッチ軸方向とロール軸方向の角速度を検出するための
RCジャイロ(PG03)が付けています。
|
05.07.03
腕の製作
腕を作っています。ちょっと夏バテぎみで、集中力を欠いたまま作業したせいか、
寸法を間違えたり、右腕を作っているつもりが左腕になっていたりと
かがありましたが、まだなんとか直せるところで気が付いたので、再製作はしないで
使ってしまいます。
|
腕
形はW6の腕をベースにしています。各部の板厚、サーボホーンの固定方法、グリッパー
部分がないこと、構造部材を全てプラ板にしたこと等が異なります。
|
05.07.10
腕の製作
|
腕
肩からヒジまでの間をつなぐ部品です。こうして見ると「機械の部品」といった
感じがします。
|
|
背くらべ
腕を付けて、2L2と並べて写真を撮ってみました。「なるべく小さく」と思って
作りましたが、背は低くても、むしろ大きい感じを受けます。
(脚は大分短いです。)「頭」は現在設計中です。
付けるともう6cmくらい背が高くなります。
|
05.07.17
頭の製作
|
全身
|
|
超音波距離センサユニット
永らく死蔵されていた、秋月の「超音波デジタル距離計キット」から、表示に関する部分を
除いて組み立てました。
|
重量オーバー
全身が揃った状態で重さをはかってみました。配線や、細かい部品の取り付け前で約1150g
でした。ヒザのRCサーボがSRM1301で最大トルクが3.3kg・cm。そして、関節
間の距離が5.5cmなので、3.3kgのトルクが出ると仮定しても、屈伸時に、ひざを
伸ばして立ち上がれる重量は1.2kgとなります。重量オーバーです。
ちなみに計算は3.3*2/5.5=1.2となります。ここで*2は、両脚を合計する
ための2です。
脚のRCサーボを強力なもの(例えばERG−VBとか)に替えるか、軽量化(例えば
頭をやめるとか)の対策が必要の様です。サーボの交換は、脚の作り直しになり、一度も
動かす前から作り直しは寂しいので、しばらく歩かせて様子を観察してから改造しよう
と思いました。
配線の作業開始
上に書いたような訳なので、ひとまずメカの工作をとめて、制御系の工作に移行しました。
とりあえずは、歩かせられるところまで作ろうかと考えています。
05.07.24
マイコンボードの製作
|
マイコンボード
いつも電源系統から作り始めています。電源の構成はW6とまったく同じです。
(7.2V、5V、3.3V、12Vがあります。)
|
|
構想メモ(システムブロック図みたいなもの)
初公開!!の構想メモです。(ちょっと絵が恥ずかしい・・・)
こういったメモを何枚か書いて方向性や大体の仕様を
決めてから図面を書いています。
|
05.07.31
マイコンボードの製作
マイコンのハードウェアマニュアルを見ながら、モーターやセンサーをどのポートに
接続するればソフトが書き易く、かつ、マイコンの外付け部品が少なくなるかを
検討しつつCADで回路図を描いています。
動力系統の配線
腰から下のRCサーボの電源線の配線をしました。腰の左に配電用の基板を設け、ここで
一度電源線を集合させて胸に上げます。(関節をまたぐ電線本数を少なくして、動き易く
するためです。)
分岐方法の決定にあたっては、
電源の供給が不足するRCサーボが無い様に気を
つけました。たぶん大丈夫だと思いますが「関節の震えが止まらない」等、供給不足の
兆候が出た時は直そうと思います。
|
配電基板
これまた、2L2で使ったのと同じもので、エッチングして使うための、全面銅箔の基板
を切って使っています。
|
転落防止センサーの取り付け
背中の通信コネクターの裏側に付けました。立った状態で約30cm後方にスポットが
来るような向きに付けて有ります。
|
転落防止センサー
ROBO−ONEの通称「落ちまセンサー」?です。リングで後進する時に足元を確認します。
この赤外線距離センサーが計測するのは、本当に「点」ですし、計測対象の表面の状態によっては
うまく距離が求まらないケースもあるなど、有効でない場合も多々ありますが、簡単に
付けられるセンサーなので、付けました。
|
05.08.07
制御系統の配線
RCサーボとジャイロの配線を行いました。ソフトはRCサーボを動かすためのもので
一番新しい、W6の胸部ユニット(No.2サブCPU用)のソフトを雛形にして書き始めました。
|
調整中のスナップ
各関節の中立位置や、歩行モーションの確認のためロボットを吊るしました。
本棚に、ホームセンターで売っているアングル材をクランプでとめたものに
引っ掛けてあります。2L1以来のいつものやり方です。
|
|
配線中のスナップ
|
RCサーボの破損
余談
05.04.17のところで「今後2ヶ月くらい暇・・・」とか書いていましたが、仕事が無い
ので今の部署にいられない状況がほぼ確定し、部署も無くなりそうな雰囲気が漂って
きて、なんだかマズイことになってきました。(わりと天職な気がしていたので残念)
本業の方でのゴタゴタもあり、製作の
進捗がイマイチで、先のスケジュールも見えなくなってきましたが、とりあえずは、
第8回ROBO−ONEへの申し込みをしておきました。
05.08.13
ソフトの検討
いつものパターンで、H8用のソフト、歩行モーション生成等の数値計算を中心とした
PC用のVC6(Microsoft Visual C++ Version 6)のソフト、RCサーボやセンサーの
単体試験などに使うVB6(Microsoft Visual Basic Version 6)で書いた
GUIが中心になるソフトの3本構成にしようと思います。
歩行のモーションは、ソフトの準備には手間がかかるものの、一度出来てしまえば
歩行のスピード調整などが簡単に出来るので、これまたいつものとおり、足先の
軌道を決めてから逆運動学計算をして、歩行モーションのデータを吐き出すソフト
を作りますが、起き上がり他のモーション用には、いわゆる「モーションエディタ」
と呼ばれている、最近の2足歩行ロボットキットについて来るタイプのソフトを
準備しようと考えています。
VC6のソフト
一番形が近くて、新しい、2L2b用のソフトを雛形にすることとしました。
最後に触ってから1年以上たつので、最終バージョンのソースコードを探すところで
先ず時間を食ってしまいました。今は、これがどういうプログラムだったか思い出している
所です。
VB6のソフト
05.08.21
関節パラメータファイルの設計
膝のパワーアシスト
上野の国立科学博物館で、筋肉の付き方を想像しながら恐竜の骨を眺めている時に思いつきました。
UNIの膝のRCサーボのパワーが不足していますが、不足するのが主に深く屈伸した時だけ
、伸ばす方向に不足するだけのようなので、引っ張りバネで不足分を補う方向で検討を
始めました。
ちょうど良いバネがストックにあればいいのですが、多分無さそうです。また、必要な
張力が正確に分かるのは詳細な設計が済んだ後で、今は分かりません。よって、東京で買って帰る
訳にもゆかないので、特性が安定しないものの、入手しやすく、本数の増減で簡単に張力の
調整が利いて便利なので、輪ゴムを使う方向としました。
05.08.28
関節パラメータファイルの入力
関節間の長さや、RCサーボへの出力データと実際の関節の角度の対応関係を計測し、
関節パラメータファイルに入力しました。
逆運動学計算関数の移植
膝のパワーアシスト用輪ゴムのバネ定数の測定
使おうとしている輪ゴムに釣り用のオモリを1個、2個、3個と付けてゆき、
荷重と伸びの関係からバネ定数を測定しました。とりあえず3個サンプルを
とってやってみましたが、34%もばらつきがありました。
測定方法がいい加減なのはおいておいても、かなりのバラつきがありそうだと
思いました。
以前、サーマルソアリング用のRCグライダーや、フリーフライトの
ゴム動力模型飛行機を作っていた頃、ゴムひもはそもそも、伸縮
させるたびに変わってくると読んだ覚えもあるので、まあ、こんなところでしょう。
05.09.04
祝!歩行試験成功
足先軌道生成関数を移植したあと、関節パラメータファイルの微調整と、脚のロッドア
ジャスターの微調整を行いました。そして何回か動かして歩行の周期も調節しました。
これからROBO−ONEの資格審査に通るために、
横歩き、旋回、起き上がりのモーション生成プログラム、
シーケンス再生プログラム等を作らなければなりません。残りの日数と自分の
作業スピードを考えると、資格審査にパスするところまで当日までに出来るかどうか
微妙なところだと思いました。
ROBO−ONEといえば、まだ審査結果が事務局より返信されていません。8/24
にその旨を申し出るメールを出したのですがまだ返信がないので、ちょっと不安に
なってきました。(HPにUNIの写真が出てるので、申し込みは受理されているようですが・・・)
膝のパワーアシスト
輪ゴムの取り付けと、ヒザの屈伸のテストをしました。見た目が「イケテナイ」ですが
効果は上々でした。
05.09.11
横歩き
横に歩くモーションのデータを出力する関数を作りました。
ところで、審査結果の返信の件ですが、迷惑メールの着信拒否にかかって消えていたことが
分かりました。「info@」で始まるアドレスから月に600通くらいのペースで迷惑メール
が来るため、「info@」を着信しない様にメールボックスにフィルタをかけていました。
そこで、フィルタを一時止めた後、審査結果他の連絡メールを
再送していただきました。事務局殿にはお手数をおかけして、申し訳なかったです。
起き上がり
簡単なモーションエディタをVB6で作り、モーションも作りました。
05.10.10
バッテリーの変更
05.10.16
バッテリーの変更
引越しの荷物を片付けながら、ぼちぼち製作を再開しました。バッテリーの搭載スペースは、単4サイズの
バッテリーを3本ずつ振り分けて載せるように作ってあるので、6本で一まとめになっているバッテリー
パックを3本ずつに分けました。電源系をいじるついでに、動力系のDC/DCコンバータの
リモコン端子にスイッチを付け、出力をカットできるようにしました。また、バッテリの元電圧を
モニタするための系統を追加しました。
バッテリーが軽くなり、上半身の腰のロール軸周りの慣性モーメントが小さくなったので、
歩行の周期を早めました。上半身の動きを大きくする方向の変更もありえますが、腰関節の
可動範囲に余裕が少なく、脚腰のサーボのスピードに余裕があるので、今回は
スピードアップを選択しました。
歩かせながらの調整ですが、結果的に10%ほど早めた所で
転ばなくなりました。
05.10.23
Trevaの接続
ぱ研
さんのHPの
プリントアウト
を見ながら「要領良く書かれているなー」などと感心しつつ利用させていただき、
接続と画像の取り込みテストを完了しました。
これからカラー映像を処理するプログラムを
整備してゆこうと思います。グレースケール表示にすればW6用のプログラムがほとんど
そのまま使えそうなので、W6のPC用のプログラムをH8に移植しようと思いました。
Cdsの接続
撮影した画像の評価の足しにするため、周囲の明るさを計る意図で載せました。
インターフェイスはW6のそのまま流用です。
加速度センサー(ADXL202)の接続
転倒の判断などに使う意図で載せました。
これのインターフェイスもW6のそのまま流用です。
パワーアシスト用輪ゴムの調整
屈伸の補助に片脚あたり10本の輪ゴムを付けていましたが、動かしてみると4本で
十分だったので、4本に減らしました。「率直な感想を述べる人」に見せると、みな
「かっこ悪い」と言うので、カバーでも付けようかと考えています。
バッテリー電圧監視回路の追加
1kオームの金属皮膜抵抗を2個シリーズに接続し、その中間の点の電圧を
A/D変換してバッテリー電圧を監視します。
これのインターフェイスもW6のそのまま流用です。
磁気コンパスの接続
RDCM-802を、全てのモーターから一番離れた位置として、「ランドセル」のてっぺんに
搭載し、接続しました。これのインターフェイスもW6のそのまま流用です。
05.10.30
PSoCの練習
05.11.06
プログラムとドキュメントの整理
また環境認識系のプログラミングがやりたくなってきた所ですが、次のROBO−ONE
に出ようと思うと、今の時期は運動系のプログラミングが必要なので、9月中旬に
作業を中断した続きを再開しました。高山へ行く前に、けっこう大急ぎで組んだプログラム
で関数の整理が悪く、コメントがあまり充実していないので、思い出すのに苦労しました。
歩行ルーチンの改善
歩行のサイクルや歩幅を変えながら、家の中のいろいろな場所を歩かせて観察してみると、
どうも歩き出すときが不安定な感じでした。歩行の周期、左右方向の重心移動の範囲、
歩幅などをいろいろ変えつつ歩かせてみると、歩き出しが急すぎるためバランスを崩している
様だと見えました。そこで「案1:歩き出すときは上半身を前傾させる」
「案2:2歩以上で定常歩行状態
に移る」(現状は2歩目から定常状態)の方針で改善しようと思いました。
ここまで書いて、「でも、2L2bはもっと乱暴に1歩で加速しても少し進路がそれる
程度だったっけ」と思い出し、その理由として腰関節から上のピッチ軸まわりの
慣性モーメントが2L2bほど大きくないことに思い至りました。そこで、腰のピッチ軸
サーボだけでなく、肩のサーボにもジャイロのフィードバックをしたところ、だいぶ
歩き出しが安定しました。でもこれは本筋ではないので、上記案1,2も実施の
方向で検討しています。
05.11.13
モーション作成(座った状態から立つ)
普段の保管状態では、吊るしていない時は電源が入っていなくても安定する姿勢として
座らせています。今日は、立っている状態からこの座った姿勢に入り、また立ち上がる
モーションを作りました。一通りの機構設計が終わり、重心の位置や、各関節の
作動範囲の見当が付いた時点で、仰向け状態からの起き上がりが出来るかどうかは微妙だと
思っていましたが、これで可能なことが分かり安心しました。
モーションデータを作っている途中で、腕を半分伸ばした状態で前に倒れてしまい、
右ひじのRCサーボのギアが欠けてしまいました。スペアのギアは1枚だけで売って
いないので、全部新品に換えました。部品代は420円でした。
05.11.20
モーション作成(クロカン歩き)
足を前に出すときに地面から離す高さ、歩幅、1歩の時間、上半身を揺らす幅の大きさ
等のパラメータを変えながら動画を撮ってメディアプレーヤーで画面を少しずつ止めたり
動かしたりを繰り返して観察しました。
すると、地面から離れている方の足(遊脚相の足)が実際は、遊脚相として割り当てている
時間の半分ほど地面と当たってスリップしているのが見えました。原因を考えてみると
支持脚の関節の保持力不足に起因する偏差が大きく効いている様に思えました。
また、遊脚がスリップしながら接地している時と、接地していない時で大きさが
変わる支持脚側の偏差
が歩行を不安定にさせている様にも見えました。
そこで足にかかる荷重の変化が緩やかになる様、ほとんど遊脚の足が地面を離れない
モーションを試してみました。それが今回のモーションです。ちょっとした床の起伏で
進路がそれたりと、あまりいいモーションではないですが、一応安定して進むので、
これはこれでOKかと思いました。歩いている様がクロスカントリースキーの人の
様に見えたので「クロカン歩き」と呼ぶことにしました。
「05.11.06」の所で触れた「案1:歩き出すときは上半身を前傾させる」も入れてみました。
歩き出しの安定がよくなりました。ついでに腕も振るようにしました。
モーション作成(旋回)
ほぼその場で旋回するモーションを作りました。床と机で動かしてみましたが、
摩擦係数の違いから一歩で
向きが変わる量が結構違いました。自律モードで動かす時には移動量の計算が難しくなる
ので困ったものです。非常にラフな結果しか得られないとは思いますが、ヨー軸にも
PG03を付けて、角速度の積分で旋回量を求めようか等とも思いました。
05.11.27
モーション作成(スリップの少ない歩行)
足をスリップさせられないような摩擦の大きな場所でも歩けるように、足のスリップが少ない
モーションを作りました。足のスリップを抑えるため、足裏に1mm厚のNBRゴムの板を
両面テープで貼り付けて、つまずかないで歩ける様に調整しました。
足裏の写真
05.12.04
バンパーの取付
05.12.11
モーションログ
運動の解析のため、一連のモーションを再生している期間の加速度と角速度のセンサーの
出力値を、ロボット搭載マイコンボードのメモリーに記録し、あとでPCに送れるように
しました。
PC側でデータを受け取るプログラムは、csv形式のデータを
ディスクに落とすように作り、結果を表計算ソフトのグラフ機能で様子を見てみました。
下の測定例は足のスリップを抑えた歩行モーション
のものです。サンプリング周波数はRCサーボのPWMパルスの周波数と同じ50Hzです。
(約6秒強の時間サンプリングしてプロットしてあることになります。)
メモリーはひとまず128kbyteのエリアをモーションログ用として割り当てました。
加速度、角速度それぞれ1データ辺り2バイト(16bit)でエンコードしていますので、
約5分27秒の間データサンプリングが継続可能となります。
ところで、この機会にソースコード等を見ながらメモリマップを清書しましたが、なかなか
手間でした。いいメモリ管理の仕組みがあればなー等と思いました。
加速度測定サンプル
加速度センサーはTrevaの裏辺りにあり、歩行に伴い上半身を揺らすので、それがはっきり
出ています。ロボットを寝かせた時に約470の数値が出てくるので、歩行中は0.3g
程度の加速度がかかっている様です。
角速度測定サンプル
角速度です。測定の絶対量を測る治具が無いので何rad/secなのかは不明ですが、こんな
数字が取れました。
転倒時のログ
歩いている時に前からつついて仰向けに転倒させてみました。このとき床にはクッションを置いて、
この実験でロボットを壊さないように注意しました。
転倒時のログ
ピッチ軸方向の角速度が「 PG03 ch1(pitch)」、前後方向の加速度が「ADXL ch0(X)」そして
ピッチ軸方向の角速度の積分値(角度)が「sum(pitch)」です。以下のように読みました。
- 転倒の途中状態は、加速度センサーから見て自由落下のようなものなので、検出されていない。
- クッションに当たって減速するときの加速度が鋭く出ている。クッションを外すと
ピーク値が大きくなる。(すなわち衝撃加速度が大きくなる→ダメージが大きくなる)
- 倒れるに従い、勢いがついてゆく様子が角速度のグラフから読み取れる。
- 倒れるに従い、ロボットの姿勢が仰向けに近くなってゆく様子が角速度の積分値
のグラフから読み取れる。
- バウンドして止まるまでの辺りを、加速度センサーと角速度センサーで見比べると、加速度
センサーの方が周波数応答特性は良い模様。これから見るに、「0.7G以上が0.3秒以上
続いたら転倒」の様なプログラムの転倒判定で良もさそう。
転倒判定については、「状態の継続」の判定を確実にするのはプログラムが面倒なので、加速度
センサの出力値を
ローパスフィルタの式に通して、その結果についてある瞬間の値が一定以上である
ことを以って「転倒」としました。ちなみに関連する辺りのソースはこんな感じです。
フィルタについては一時学生の頃凝っていた様なおぼろげな記憶が有るのですが、ほとんど、
容易に思い出せそうも無いほど忘れているのがちょっと悲しかったです。
adxl_gain = (float)0.2;
/*ADXL202の読み取り*/
if(switches.adxl_on == 1 && fall_over == 0)
{
read_adxl(&sio);
/*ローパスフィルタ処理*/
for(i = 0; i < 2; i++)
{
adxl_data_f[i] = adxl_data_f[i] +
((float)sio.adxl_data_s[i] - adxl_data_f[i]) * adxl_gain;
/*転倒判定*/
if(adxl_data_f[i] < - 300.0 || adxl_data_f[i] > 300.0)
{
fall_over = 1;
}
}
if(fall_over == 1)
{
action.sequ_count = 0;
action.count = 0;
}
}
05.12.18
マイコン用プログラムの整理
自律モード用の関数を入れるため、特に歩行モーションを再生する部分と、各関節を動かす時
に目標角度まで補間する部分を整理しました。いじっているうちにだんだんおかしくなり
、はまりました。この先の発展性のことを考えて、部分的にいじらないで、全体的にプログラムを
きれいに見直すことに方針を変更しました。
ロボットの挙動から総合的に判断すると、スタックの内容が壊れたりが起きているような感じ
がします。コンパイルでエラーは出ませんが、ポインタの操作とか型キャストあたりで、何か
まずいことを気が付かないうちにしているみたいです。
チェックライトを色々な場所に入れて、どこで変数の内容が壊れるのか見ていくと、ある関数に
制御が移った時点で、引数として渡す構造体の、その関数では触らないメンバが書き換わるのが
分かりました。色々試した結果、そのメンバを別の構造体に分けたら壊れなくなりました。
ここまでの範囲から判断すると、構造体が大きすぎたせいの様な気もしますが、ホントのところは
良く分かりません。でもまあ動くようになったので、このまま進めます。
距離センサーの移設
自律モードプログラムを書くために、とりあえずPSDセンサーを胸に付けました。
ランドセルの中に後ろ向きに、足元を見る位置にPSDセンサーを付けていましたが、
ケーブルが前を横切っていて、実質生きていませんでした。(ケーブルのルートと、センサー
の位置の検討不足でした。)そこで、このPSDを前に移設しました。
W6を動かした今までの感触で、ROBO−ONEのロボットのように、金属光沢のある
板で出来ている物は、PSDセンサーでうまく検出できないのが分かっているため、
ROBO−ONE用にはあまり向かないとは思いますが、自律モードプログラムを書くために
なにかしら距離センサーの類が必要なので、ひとまずPSDでプログラムを書いて、センサー
はセンサーで後で検討します。
05.12.25
自律モードのプログラミング
プログラムの整理に目処が付いて、歩行制御の関数より上位の関数を置くための準備ができました。
手始めに「正面25cm以内に障害物を検出するまで前進」「北に向くまで旋回」というような
機能を付けてみました。
uniを見ながら「自律格闘モード」を実現するにはどうしたらいいか
考えました。自律型の相撲ロボを参考にしながら考えましたが、ROBO−ONEの方が
ルール、発生しうる状態の判断、ロボット自体の制御などがみな複雑で、すぐ実現できる気が
しないので、実機を使って課題のリストアップから始めようと思いました。
今日のところは以下のようなことを考えました。
- ROBO-ONEのリングには色々と文字が書いてありますが、例えば下のような模様の
リングだと、画像認識でリングの縁の判断と、自機位置の判断が比較的容易になるでしょう。
|
外周の線の意図
- リングの縁から一定距離離して、コントラストの強い線を引いておくと、背景から
ラインを確実に2値化で分離できます。
- リングの照明条件は「スポットライトでの照明」や「自然光による照明」などがあり
背景の見え方が色々有りますが、リングの縁の内側に線を引くと、リングの表面にカメラ
の露出を合わせると「線」としてきれいに浮き立ちます。
Tマークの意図
- マークの「方向と大きさ」がハッキリしているので、1台のカメラで、マークの見え方から
自機のリング上における位置が割り出せます。
|
- ROBO-ONEのロボットは他のロボットとの接触が前提となるので、体中に接触センサー
を配置することと、センサーからの入力を適切に判定するソフトが状況判断の役に立ちそうです。
戻る
続きの日誌へ
ホームへ戻る