2001/6/18の写真 |
Humanoid Project NR-ONE | ||
(2001.1.24)
(2001.1.25)
(2001.2.8)
(2001.2.24)
(2001.2.24)
7.人工網膜チップを使ってみる。(2001.3.25)
8.画像処理に挑戦(2001.4.15)
9.歩行ロボットの無線(2001.5.26) 10.とりあえずロボットを(2001.6.11)
(2001.6.18)
(2001.6.25)
13.三軸加速度センサー(2001.7.1)
14.サーボ構造(2001.7.8)
15.サーボドライバーを使ってみる。(2001.7.15) 16.人工網膜チップで相手を追う。(2001.7.22)
17.足裏の感圧センサーで制御(2001.7.30)
18.腕をつける。(2001.8.5)
19.Delphiで画像チェック(2001.8.17)
20.Delphiで加速度センサーのチェック(2001.8.19)
21.足裏感圧センサーのチェック(2001.8.27) 22.重心の高さとモータのトルク(2001.9.4)
23.手を動かす(2001.9.15)
24.静歩行に挑戦 (2001.9.22)
25.必殺キック(2001.9.24)
26.倒れる方向に手をつく。(2001.10.7)
27.腕立て伏せ(2001.10.14)
28.NR-1まとめ(2001.10.28)
Humanoidのリンク
|
人間型ロボットはホンダやソニーが開発を続けています。西村ロボットクラブでもHumanoidを造ってみようという話になりました。 ロボット仲間と飲みながら話をした目標は概略以下のとおりです。 1.ジャンプできること 2.走ることができること ここまでは良かったですが、さらに....... ドロップキックができること、リングに上がれることなどに話がひろがり、最後に決定したことは、HumanoidによるロボットK1をやろうということです。 勝敗 議論が必要ですね。ROBO-ONEで議論が始まりました。 3.ロボットで25段の跳び箱を飛ぶ Top ロボットK1の前に跳び箱25段を飛ぶことになりました。 昨日、いすゞ中央研究所の社長と酒をのみながら約束してしまいました。ロボットで25段の跳び箱を飛べたら100万円です。社長のポケットマネーからです。 経緯 ・ホンダやソニーがロボットをやっているね。きみもロボットがつくれるかね。 ・もちろん。ソニーのロボットには勝てますよ。 ・じゃ造ってみるか。でも同じものではおもしろくないね。 ・鉄腕アトムは空を飛びます。だけど飛行機のように飛ぶのは大変です。 ・じゃ、跳び箱25段ではどうだ。それで100万円だ。 ・おもしろいですね。1年時間を下さい。 ・では来年の正月番組でよろしく。 てな感じで決まってしまいました。このロボットは本当に完成するのでしょうか? 4.ロボットの足 Top まずはテストのためペットボトルとラジコン用のサーボを組み合わせて3軸のロボットの足を作りました。まずは立つところまでです。足の裏に取り付けた圧力センサーで制御してみました。まだふらふらしています。 CPUにはH8を使用しています。 ラジコン用サーボの制御や感圧センサーの取り込みについては以下の書籍のサンプルプログラムをそのまま使いました。 ロボットの足が立っている映像です。 (Windows Media File 19Kbyte)
ラジコン用のサーボではジャンプは無理ですね。 5.サーボモーターについて Top 模型用サーボは近藤化学株式会社の以下の2つの製品を使用してみました。トルクや応答性に優れています。
(1) PDS-2123FET トルク/9.5Kg- cm(7.2V) スピード/0.06S/60 °(7.2V) 使用電圧/7.2V (別電源端子付) 寸法/41 ×38 ×20mm 重量/55g アルミファイナルギヤ、メタルギヤ、ダブルベアリング、NEW コアレスモーター、金メッキコネクター (2)PDS-2144FET トルク/13.0Kg- cm スピード/0.13S/60 ° 使用電圧/6.0V 寸法/41 ×38 ×20mm 重量/54.5g アルミファイナルギヤ、メタルギヤ、ダブルベアリング、NEW コアレスモーター、金メッキコネクター 上記のサーボモーターで歩行程度には使えそうです。しかしながらジャンプは不可能でしょう。 以下はPDS-2123FETの分解結果です。
裏ぶたをはずすとコントローラーがあります。
モーターの出力はギアで減速され出力軸につながります。
出力段にはアルミギアが、その他はメタルギアとプラスチックギアが使われています。プラスチックギアは衝撃により、歯が欠けますので十分注意して使う必要があります。決してジャンプなどはしないように! このギアは一種のヒューズ役をはたします。ラジコンショップにスペアパーツとして置いてあります。
モーターにはコアレスモーターが使用されています。これにより、高い応答性が得られています。しかし小さいモーターです。ジャンプにはもっとパワーが必要です。
出力軸にはボリュームが接続されています。
デジタルサーボコントローラーには三菱のM64610FPが使用されています。これにFETを取り付ければデジタルサーボが完成です。FETには日立の3006が使われています。N,PチャンネルのFETがそれぞれ1個入ったものです。
裏には水晶などが付いています。
6.ジャンプ法の検討 Top
ジャンプするためには瞬時に足を伸ばし、地面をキックする必要があるため、模型用のサーボではバタバタするだけで、とても3mもジャンプすることはできません。 MSC Nastranの体験版を入手しましたので、足のシミュレーションをやって見ました。 体験版は以下より入手できます。
7.人工網膜チップを使ってみる。 Top 三菱セミコンダクター殿より人工網膜チップのサンプルを頂きました。写真はM64383Kです。
画素数は128×128でモノクロ画像です。 特徴としてはエッジ強調機能、エッジ検出画像出力機能、ランダムアクセス機能、ゲインレベル調整機能などがあります。
基板にはんだ付けし、レンズはゲームボーイのPocket Cameraのものを使用しました。
CPUにはH8-3067Fを使用しました。このCPUはADコンバーターの取り込み速度が他のH8に比較して速いのでこれを使用することにしました。 画像がちゃんと撮れているかをチェックするためにパソコンにRS232C経由でデータを転送し、表示します。 画面は画像を表示するプログラムです。
今後画像処理にチャレンジします。このセンサーで跳び箱の上面を認識できるでしょうか? 8.画像処理に挑戦 Top 2値画像に変換 2値画像に変換するには閾値を決定する必要があります。このためにヒストグラムを作成します。このとき画像が白と黒ならば二つの山ができます。この二つの山の間を閾値とすることにより、画像を2値化することができます。周囲の明るさが変わっても安定してこれが可能になるわけです。この閾値を求める方法には様々な方法があるようですが、どういう状況で使用するかによって異なります。 重心を求める。 2値化された画像の白あるいは黒の部分の重心を求めることによって、その中心がどこにあるかと判断できます。例えばライントレースを行うことを考えたときには、白いラインをトレースしたいならば、画像を2値化し、白の重心を求めればよいことになります。 ジャパンマイコンカーラリーで使用することを考えるとかなりの処理速度が要求されます。1ラインだけを読んで2値化し、重心を求め、それをRS232Cで1バイトを送信することを上述のシステムで実施した結果、30回/sec以上の処理能力があることが確認できました。 跳び箱の上面の白い部分の検出とその処理の可能性が見えてきました。 9.歩行ロボット無線システム Top 歩行ロボットでは軽量の無線システムが必要です。ここではCircuit Design ,inc.のCDC-TR-02モジュールを使用しました。このモジュールにはTR-3001が使用されています。これははRTM社の315MHz Hybrid Transceiverです。 サーキットデザイン http://www.circuitdesign.co.jp/circuit_jp/ 通信距離は落ちますが、転送速度は115.2kbpsのものです。とり合えずトランシバーですが片方向の通信の実験を行いました。
パソコン側にはUSBを使用します。XircomのUSB to RS232C変換器を改造すれば232Cのレベル変換が不要でこのケースに入ってしまうのではとの発想で改造をスタートしました。Xircomではレベル変換にSN75LV4737Aを使用しています。このポートをチェックすればどこにTX,RXを接続すればよいかが分かります。これらの信号はインバーターで反転して接続します。
ケースを開けてみると結構スペースには余裕があります。CDC-TR-02はなんとか入りそうです。
実験的にCDC-TR-02を取り付けました。Xircomの電源が3VなのでちょうどCDC-TR-02の電源電圧と同じです。ところが送信には容量不足でした。3V電源レギュレーターの追加が必要です。
受信側はマイコンの通信ポートにTTLレベルで接続すればOKです。ただし3V電源が必要です。
これで、一応57600bpsで通信可能でした。ただしアンテナをうまく取り付ける必要があります。スズめっき線のアンテナでテストした結果、3mくらいの通信距離です。とり合えず歩行ロボットのコントロールに使えそうです。ケーブルを引き回すより、見た目が良いでしょう。ホンダのASIMOのようにコンピュータでコントロールしようと思っています。 関節用のモーターを調査中ですが、遊星歯車のコアレスモーターは高いですね。1個2万5000円ではなかなか手が出ません。とり合えず1台手配しておいてその間にサーボでロボットを動かしてみることにしました。 片足6軸のロボットです。SH7045からPWMを16本出して立たせてみました。4本あまりますが腕や頭に使うと足りません。 ロボットはプルプルします。
座ることもできます。
足の裏はこんな感じで作ってみました。足裏には感圧センサーを取り付けました。
プルプルするので電圧をチョット上げて片足立ちに挑戦しました。立ったと思ったら、サーボが壊れました。サーボを直して再度挑戦です。強度の弱い部分も分かったので補強です。 土日で一気に作ったので、まずはこんなところでしょう。 11.ロボットの補強 Top 写真のようにロボットの補強をしました。だいぶ安定してきました。
早速ロボットを動かせてみました。 まだ、歩行はちょっと困難です。更なる補強が必要でしょう。特に股関節サーボのトルクが弱く(このラジコンサーボではどうも積分制御が弱いようです。トルクが大きくなると偏差が大きくなります。) 大幅に計算による幾何学的な位置とずれてしまいます。位置をフィードバックして補正するか、またはこのサーボのトルクアップが必要です。 ROBO-ONEの日程が決まったので、焦って造ってしまいましたが、やっぱりシミュレーションを進める必要があります。 12.歩いてみる。 Top
まずは制御なしで歩いてみることにしました。
三歩、歩く????
13.
3軸加速度センサー
Top MicroStoneの3軸加速度センサーを入手しました。お願いするとすぐに送られてきました。 このセンサーは内部にOPアンプを持つ、アナログ信号出力のものです。ADコンバーターに接続すれば簡単に加速度が得られます。 加速度の検出原理はおもりによって圧電セラミックスの変形を電圧によって取り出すというものです。応答周波数は0.8〜1000Hzで検出範囲は±40m/sec2のものです。 http://www.microstone.co.jp/index2.htm 加速度からZMPのずれを計算し、制御を行ってみました。ZMPがずれた方向に上体を倒します。 なんとなく上体を制御しているように見えます。 nr1-4.MPG これで安定した歩行が行えるはずです。 14.サーボ構造
Top 遊星歯車+コアレスモーターを使用した関節が1個のみ完成しました。 無理やりモーターのボディを軸にしてしまいました。関節アセンブリの重量は160gです。
モーターはescapの22V28-216P 貴金属整流子-9セグメント連続最大出力4.5WのDCモーターです。このときのトルクは10.27mNmで、短時間運転領域では最大40mNm程度までトルクを出すことができます。減速ギアにはescapのR22減速比111を使用しました。静的トルクの最大値は2Nmで、効率は0.6です。バックラッシュは3°ですが、ハーモニックドライブを使えるほど余裕はありません。 トルクを計算すると10.27*111*0.6=683mNmとなります。これは約7kg-cmです。前に紹介したラジコンサーボより弱いという結果ですが、電圧を上げれば十分トルクは得られるでしょう。短時間であれば4倍程度までは可能です。 またジャンプするにはスピードが必要で、あまり大きな減速はできませんのでこの減速比としました。壊れたラジコンサーボの制御回路を使用してサーボを組んでみました。ボリュームとモーターの配線を間違えなければそのままで動作します。トルクはラジコンサーボに比べてはるかに大きいような気がします。 マイコンで制御するか、ラジコンサーボの制御回路を使うか悩みどころです。 15.サーボドライバーを使ってみる。 Top べステクから販売されているDCサーボドライバーを使って制御を行ってみました。調整は大変ですが、位置制御モードで完璧に動作しました。 品番
BTX013 品名
Titech Motor Driver Version 3
仕様 定格出力電圧
±24[V]
定格出力電流
±5[A]
連続最大出力
300[W] (30V/10Aで十分な放熱処理を行ったとき)
電源電圧
9〜35[V]
入力信号
0〜5[V]又は0〜10[V]を選択可
外形寸法
70x50x10[mm] (放熱板を除く)
重量
50g (放熱板を除く)
制御モード
電流制御 速度制御
(電子ガバナ搭載) 位置制御 (外部ポテンショメータ必要) 電圧12Vまで上げればトルクは3倍程度になるはずでした。ところが遊星歯車が壊れてしまいました。チョットやりすぎです。内部のギア−はなんとプラスチックです。金属タイプの遊星歯車を選ぶ必要があります。
16.人工網膜チップで相手を追う。 Top Gセンサー、加速度センサー、足裏の感圧センサーのテスト中ですが、制御を入れた歩行には苦戦中です。 気晴らしに頭を2軸にして、ボールを追っかけてみました。CPUにはH8-Tinyを使用しました。RAMが少ないので、ランダムアクセスで画像を読み込みます。2軸それぞれ、画像処理して、Tinyでサーボを制御します。
下のムービーはボールを追いかけているところです。1秒10フレーム程度ですが、結構追いかけられます。 ボールを追いかけるムービー moumaku.MPG(MPG287Kbyte)
17.足裏の感圧センサーを使って制御 Top 足裏にそれぞれ4個の感圧センサー取り付け制御を加えて見ました。圧力の高い方向に傾いているのでこれを補正します。ロボット界では床半力制御と呼んでいるようです。上体と組み合わせて制御するとゆれを早く減衰することができます。 足の裏(青い部分がセンサー) イナバゴムのページ http://www.inaba-rubber.co.jp/katarogu/inast/seihin/sp.html 足裏のセンサーの特性 ■電気的特性: nr-one.mpg(MPG1Mbyte) ずいぶん安定してきました。センサーが点で接しているので、足裏のグリップが悪く対策が必要です。踏み出すとき足裏が完全密着していないときは方向が不安定となります。
18.腕をつける。 Top ロボットに腕をつけました。 コスト、重量削減のため、4軸としました。これで相手を殴ることができそうですが、肩に三軸ほしいところです。アッパーカットはできますがフックは大変です。肩の二自由度では動きに限界があります。改造となりそうです。
腕にはKO-Propo
PDS-2144FET×1、Futaba
S3002×3を使用しました。Futaba
S3002は小型ではありますが、メタルギアを使用しています。これでロボットの総重量は2.7Kgとなってしまいました。まともに歩けるのでしょうか? サーボ S3002の仕様 金属ギア(ただし初段はプラスチック), トルク
3.3kgcm, スピード
0.20sec/60°,使用電圧 6.0V 手を振りながら歩く? nr-one-2.mpg (MPG623Kbyte) 19.Delphiを使って画像をチェック Top 人工網膜チップの画像はVisual-Basicでチェックのプログラムを進めていましたが遅くて困っていました。NRCのUさんよりDelphiが一番とのお勧めてを頂き、夏休みで時間もあるので、プログラムをじっくりやってみました。H8-Tinyで人工網膜チップをコントロールし、撮影結果をRS232cでパソコンに送ります。このデータをリアルタイムで表示します。57600bpsなのでまだまだ遅いですがチェックには使えます。
画面クリアー
ロボットがパソコンばかり追いかけるので撮影してみました。輝度の高いところは赤くしてみました。 下はロボットの見た目です。赤い部分だけが見えています。これでボールを追いかけたわけです。
画像は保存もできます。ピントもちゃんと合わせてロボットに搭載です。 20.Delphiで加速度センサーのデータチェック
Top Delphidによる自作プログラム第2段です。 3軸加速度センサーがかなり不安定で苦慮しておりました。信号処理専用にH8-Tinyを使用しました。この中で平均化などの処理を行います。
このセンサーのデータをRS232Cで出力し、パソコンをオシロスコープがわりに使おうというものです。加速度は比較的遅い現象ですので57600bpsでも充分です。10msec毎にデータを出力し、画面に表示します。おかしな現象を発見しました。ノイズが一杯です。
次の画面は対策を行った結果です。青、黄、赤が三軸の加速度データです。青は黄の平均化処理を行ったものです。
これは便利です。 次は足裏センサーのチェックです。 21.足裏感圧センサーのチェック
Top 安物のオシロスコープではゆっくりした現象を見るのは大変です。 このオシロプログラムを使えば簡単にMPUが取り込んだ値をRS232Cで転送し表示するのでプログラムミスなどもチェックできます。(まだバグが取りきれていないのでそのうち公開します。) 当初足裏は3点支持としてセンサーの反応が安定するように考えていたのですが、歩行の安定性を優先し、足裏は四角にして4点支持としました。やはりセンサーは3点で支えられている場合が多いようです。
前後に荷重をかけた場合
左右に荷重をかけた場合 これらのデータから判断して、3点接地すれば足は着地しているとすることにしました。また前後のデータの平均値で前後の制御を、左右の平均値で左右の制御をおこないことにしました。 2点以下の接地になったときは倒れているとし、古い状態から判断して、どちらにたおれているかを決定します。この方向に上体を倒して姿勢制御することにしました。 22.重心の高さとモータのトルクの悩み
Top 以下の映像はVisualNAstranによるシミュレーションの結果です。重心を高くした場合はゆっくり倒れます。
したがってバランスをとるのは簡単なように思えます。しかしモータにはおおきなトルクがかかることになります。もうすでにサーボモータを何台も壊したので思い切って足を短くしました。
足の長い状態では静歩行は困難だと思われましたが、短くすると静歩行もできそうなくらいに安定してきました。
23.手を動かす。 Top CPUにはSH7045を使用していますがこれではMAX16本のPWMしか出せません。12本はダイレクトに出力して残り4本をANDゲートを使って2倍にしました。手のサーボは小型のものでスピードはあまり速くありません。PWMの周期も早くすることができません。足に使用しているものはデジタルサーボで5msec位まで大丈夫です。 まずは突きの練習です。腕は最高速で動かしています。これが限界です。 突きの練習 tsuki.mpg (MPG837Kbyte) 24.静歩行に挑戦 Top ラジコンサーボではトルク不足のため静歩行は困難だと考えていました。今回足を短くしたので静歩行に挑戦してみました。現在ロボットの重量は2.6kg、身長は60cmです。 静歩行 nr-one_sei.WMV (Mediaフアイル232Kbyte) この歩行は足裏センサーのみによるものです。足裏センサーによる足首の制御ではなかなか安定しません。足裏に充分荷重がかかるまで待ち、姿勢を正します。途中で停止しているのはそのためです。片足へ重心を移動した状態で停止も出来ます。
25.キックに挑戦 Top 早い速度で足を振るとそれによってモーメントが発生します。しかし、ロボット全体の慣性に対して小さいので足を上げて即もどせば、ロボットが倒れる前に足を着地することが出来ます。ただし発生したモーメント力による振動は残ります。 必殺キック kick.mpg (MPG
933Kbyte) 26.倒れる方向に手をつく。 Top 加速度センサーにより、H8-Tiny側で傾斜角を演算し、通信でSH2に10msec毎にデータを転送しています。SH2ではこのデータをDMAにてメモリーに転送します。 これにより倒れた方向に手を振りバランスをとります。倒れた場合は手をつきます。 加速度センサーを搭載したH8-Tinyボードは腰の部分に取り付けました。
次の映像は足裏センサーで制御をしており、足裏センサーの感圧が2点以下になったときは加速度センサーの信号処理結果を見にいきます。 倒れて手をついてもメタルギアのサーボは壊れません。なかなか強いですね。(注意:決して真似はしないで下さい。ラジコンサーボの改造が必要です。) 倒れる NR-ONE_balance2.WMV (103Kbyte) 今度は腕立て伏せに挑戦です。 27.腕立て伏せに挑戦 Top 写真はNR-oneの腕構造です。4軸となっています。腕を回転させる軸はついていません。サーボ軸をうまく支えるアイデアがないのです。ロボットが倒れたとき壊れないようなアイデアが必要です。
この腕を使って腕立て伏せに挑戦です。体を腕で持ち上げることができれば、起き上がるとことも可能になるはずです。
腕立て伏せ udetate.mpg
(MPG 908Kbyte) 現在の胴の長いNR-oneでは立ち上がることが出来ませんが、次は立ち上がりたいと考えています。また改造となりそうです。 まずはロボットを作って見ようとはじめた歩行ロボットの評価用プロジェクトであり、いろいろとスタディーを行ってきましたが、そろそろジャンプするロボットに移行する時期がきました。 ここで、NR-oneで得られた結果をまとめ、次のステップに進みたいと考えています。 1.ラジコンサーボでロボットはちゃんと歩けるか? すでに大学などで研究教材として使われていますし、今回の結果でもあるくことは出来ました。しかし歩き方としてPINO程度では面白くありません。FREEDOMに、NR-oneのプログラムを移植すると簡単に静歩行で歩くことが出来ました。軽量化が重要です。重量は2Kg以下で製作することをお勧めします。重心を移動しながら、制御なしでしゃきしゃきとあるくことができれば、後は制御をかければよいわけです。 2.ロボットが倒れた状態から立つことができるか? ロボットが立つためには腕のサーボを強くする必要があります。また胴に軸を増やす必要があります。今回は腕サーボの検討で終了しますが、今回使用したサーボモータで腕立て伏せが可能ですので、体を起こすには充分でしょう。胴体のデザインの見直しとなりますのでNR-2でこの部分を追加します。 3.歩行アルゴリズム 歩行のアルゴリズムは論文などで多く紹介されています。たとえば富士通のロボットの歩きに似たアルゴリズムをFreedomに入れると以下の歩き方になります。 http://www.besttechnology.co.jp/rep/FREEDOM_FW.WMV これだけではSH2-CPUにとってはあまり負荷になりません。ただし、制御周期はラジコンサーボ限界の8msecとした場合です。 4.足裏センサー制御 感圧センサーを用いた足裏センサー制御はロボットの剛性によって大きく影響されます。今回は積分制御を主体にいれてありますが足首だけでの制御はあまり意味はなく、上体とともに制御を行う必要があります。 また平面に設置された感圧センサーでは少し倒れるとセンサーが浮き、もう制御不能となります。したがって柔軟性を持たせ、これを対応する必要であるかも知れません。 5.倒れ制御 ZMPを求めることはCPUの負担になりそうで、今回は重心の傾斜角、倒れ速度制御を実施しました。ロボットの傾き量、また倒れる速度を0にするのに必要な力を考慮した制御です。これによるCPUの制御にとられる時間はあまり、問題となりません。課題は精度のよい傾斜角のセンサーと処理アルゴリズムです。改良の余地があります。 今後の方向 今回のNR-oneの結果より、ジャンプにはまず駆動部分の大幅な改良が必要です。遊星歯車+コアレスモータの結果から、モータの出力アップは確実にトルクアップにつながりますが、ギアーの使用は破損の原因ともなります。この対応が必要です。特に着地時のショックをどう対応するかが課題です。大きな衝撃力が加わります。手を着いて倒れる実験ではサーボがさまざまなところで壊れました。ひとつひとつ補強し、対応しましたが、ジャンプではもう対応不可能です。ダンピング機構が不可欠です。 またスピードが上がりますのでCPUの速度の大幅な向上が必要です。パソコンクラスのCPUを検討する必要があるかも知れません。 @ 高速、高トルク駆動系の検討 A ダンピング機構の検討 B センサーの改良 C CPUの能力アップ
|