2足歩行ロボット(2L1)の製作日誌 その0

製作の区切りごとに、古い物から新しい物の順に書いてあります。 (2000.11.26 から 1998.09 まで)

98.08
自由度2の状態の運動シミュレーションプログラムを作ってみました。 重心高さ30cmで、どうやら手持ちのRCサーボでも動歩行の周期に間に合いそうな気がしました。
98.09
実製作を開始しました。
98.11
自由度2の状態で動かせるところまで構造が出来上がりました。 6足歩行ロボットのコントローラーの分解能でどの程度動 くのか?また、運動シミュレーションプログラムの計算は正しいのか? の2点を調べるため、2サーボで動かしてみました。
わりとよく考えてプログラミングしたつもりでしたが、脚を動かしたときの リアクションの計算違いが分かりました。

Bipedal walking robot / May 1999 99.05.23
脚が2本完成したので、やぐらから吊り下げて各サーボに出力する データと関節の角度の計算の調整しています。 この状態で適当に動かし様子を見ます。 しばらくは自由度8で、倒れずに1歩踏み出すことを目標にプログラムを作ります。 まだジャイロを搭載していません。
Bipedal walking robot 99.04.24
手前に写っているものは、製作中の脚です。
この脚が付くと自由度が2から8に変わります。


99.06.27
あらかじめ計算可能で、計算上ではバランスを崩さないはずの運動 (両足を接地した状態での重心移動など)のテストを無事にこなしました。
2歩め以降の歩行には、計算機の中のモデルと実機の状態の誤差を知り、 転倒しないよう対応するため、姿勢センサーの入力を動作にフィードバック することが必要になると考えていますので、次はジャイロを搭載します。
6足歩行ロボットのコントローラー(信号発生ボード)にジャイロ用の インターフェイスを加えるか、新規に作るか悩むところですが、5月に 購入した秋月電子のH8/3048ボードキットがあっさり動いたので、 これを使って新しく作ることにします。

99.07.18
Bipedal walking robot - 1999/7/20 写真右上からたどると、パラレルポートアダプター−>サーボコントローラー −>信号分配ボード−>ロボット本体の順に写っています。

H8/3048を使用したコントローラーがほぼ使える様になり、ジャイロ(1個)の搭載 が終わりました。現在はジャイロインターフェイスの調整中です。ジャイロは JRのNEJ-1000を使用しています。発売直後に購入したにもかかわらず、実際に ロボットに載せるまでにずいぶん時間がたってしまいました。だいぶ 圧電振動ジャイロの価格が下がってきているので、少し損をした気分です。



99.08.29
3軸のジャイロ搭載が完了しました。ヨー軸にはJRのNEJ-1000、 ピッチとロール軸にはGWSのPG-03を採用しました。 NEJ-1000とPG-03では入力信号に対する出力信号のタイミングが 違いました。そのためコントローラー用のソフトが変則的な コーディングになってしまい残念です。しかし、3軸とも 使える状態にはなっているので、まず手始めに、ジャイロの フィードバック有りで、ひざの屈伸をするプログラムを作るつもりです。

写真 ほぼ中央に写っている物がPG-03です。リーモートゲインコントロール機能の無い 圧電振動ジャイロです。

Timing chart - 1999/8/29

NEJ-1000は入力信号が終わってから立ち上がり、立ち上がりのタイミングは 一定です。一方PG-03は入力信号の立ち上がり後0.5msec程度で立ち上がり、 立ち上がるタイミングはジャイロの運動状況によって変化します。


99.09.19
ひざの屈伸を行う時に、ピッチ軸のジャイロ入力を足首の角度へ フィードバックするプログラムを書きました。フィードバックの しかたをいろいろと試しています。
99.10.17
下のグラフは足を伸ばしきった状態から、10mm腰を落とし、2秒待ってから 倒れ始めるまで片足に重心を移していったときのジャイロからの入力を プロットしたものです。100〜150の間の線が入力データ(角速度)で0前後の紫 (ヨー軸−黄色の線と対応)と水色(ピッチ軸−ピンクの線と対応) の線が積分したデータ(角度)です。サンプリング周期は約23Hzです。
PG03のゲイン調節ボリュームを真中あたりにしていると、 およそ1秒あたり1.6度回転する角速度で入力の1に相当しています。 (H8では16bitでパルス長さを測定し、PCへは8bitで読んでいます。) 今のところ、歩いたときの接地のショックがどの程度か分かりませんが ゲインを上げたほうが良さそうです。

測定結果

99.10.29
右足を持ち上げて、横方向に踏み出す実験をしました。
このロボットの足は線接触で地面と接していますので、 一応、動的に一歩踏み出すという当初の目標をクリアしたことになると考えています。
ロボットの大きさから決まる、歩行の周期に間に合う様、各関節が制御できるか心配でしたが、 どうやら大丈夫そうです。

次は任意方向に踏み出すプログラムを作り、その後、1歩目の勢いを殺さずに 2歩目に移るプログラムを作ります。これら2段階をクリアしたならば、 床の上を歩き回れる様な形に改造するつもりです。

解説:このロボットが横へ動く場合、動きが1つの平面内に収まり 計算が簡単になるため、初めに横方向の運動を試しました。Leg Labの論文で2D Walkと 3D Walkの区別をして実験していることを参考にしました。


99.11.07
軽量化と信号発生ボードへの書きこみサイクルアップのため、ヨー軸のジャイロを NEJ-1000(約 70g)からPG-03(約 8g)に交換しました。加えて動ける範囲を広げるため、 信号分配ボードをロボットに載せました。今まではやぐらの方に置いてあったので、 前後左右に5cm程度しか動く余地が有りませんでしたが、パソコンの周囲2m程度の 範囲で動けるようになりました。

このロボットは関節の加工精度が良くないので、足の先端で測った場合で前後方向に8mm、 左右方向に6mm程度の遊びがあります。そのため、足が接地していない間、意図しない方向に 足が動き、「次回接地位置が予定通りにならない」ということが起きました。 そこでこれを防ぐため、輪ゴムでプリテンションをかけました。 「かっこ悪過ぎ〜」という気もしますが、1機目の2足歩行ロボットなので 気にしないことにしました。

写真:輪ゴムのプリテンション機構が分かります。


00.01.25
新しいパソコンを買ったので、ロボットを新しいパソコンで動かせるように 調節しました。

CPUが80486DX2-66からCeleron-500に変わり、 ワープロやコンパイラは10倍くらい早くなったような気がしますが、 ロボットの制御に関しては約2倍にしかなっていませんでした。 (ベースクロックが33MHzから66MHzに上がった分が出ているのでしょうか?)

今までは、約1.5mほどの延長ケーブルの先にパラレルポートアダプタを繋いで ロボットを動かしていましたが、新しいパソコンでは転送エラーが頻発して 使えませんでした。結局今はパラレルポートにアダプターを直に取り付けて動かしています。
しかしそれでもエラーが出ます。サーボコントローラー用のプログラムは 通信エラーが無いことを前提に書いてあるのでうまく動きませんでした。 あまり気が進みませんでしたが、通信エラーで「おかしなデータが パソコンから書き込まれて来る」ことも考慮したプログラムに書き換えました。

ここしばらくは、4足歩行ロボットを作っていたので、2足歩行ロボットの制作は実質お休みでした。


00.02.27
自由度が2の足首と面接触の足を制作中です。また、ソフトの方はジャイロの信号処理を するサブルーチンを作っています。処理の結果「転倒」、「足の接地」、「次回の接地予定時刻」 等が分かるようになる予定です。

足の踏みかえの動きを色々と試しています。初めの計算で見当が付いていたことでは ありますが、1歩0.2秒程度で早く動く様子を見て「なんかイメージ違うなー」と感じています。


00.03.12
プレステのゲームで「リーモートコントロールダンディー」というゲームがありますが、 これに登場するロボットの歩き方を見て、「こんな歩き方もロボットらしくていいかも」 と思い、1ステップ歩く毎に止まる歩行パターンで前進するプログラムを作ってみました。 1ステップ毎に止めると、運動エネルギーが無駄になり効率が悪いのですが、 運動開始の初期条件を”停止状態”に決めることが出来るので計算が簡単です。

現在はパラレルポートを経由してロボットとインターフェイスしているので、CPUの アイドリング時間が多くなっています。 どうやら運動中に姿勢制御計算をする時間が足りない様なので、インターフェイスの 経路を変えることについて検討を始めました。


00.03.18
1歩めの勢いを殺さずに2歩めに移るプログラムを作りました。
1歩めで止めることを色々と試していましたが、歩幅を広げるに従いうまく止まれず に転倒するケースが多くなったので、止まらずにもう1歩進み、脚を揃えて止まる 様にしました。

子供の頃から馴染んでいるラジコンのサーボなのですが、随分と微妙な動きが出来る ものだと最近改めて感心しています。


00.03.26
自由度2の右足首が完成したので、逆運動学計算ルーチンもこの足首に対応させました。 問題なく動くようなので、反対側の製作にかかります。

今までの関節では、1関節あたり1平面内のリンク計算1回で済んでいましたが、この レイアウトですと1関節あたり、3次元の計算を2回行わなければならない事となります。 「パソコンが早くなったから、少しくらい計算を重くしてもまあ大丈夫か」と思い このレイアウトにしました。

写真:新しい足首の機構が分かります。

古い方の足の大きさは、自分の脚と足の比率から決めましたが、今度はロボットの プラモデル(ガサラキのライデン)から決めました。アニメのロボットは、大体 の場合、非常に大きな足をしていますが、それで差し障りがないのか興味がありました。 足の大きさは、幾つか試してみようと思っています。

足の裏の材質は、古い方ではシリコンのチューブを使っていました。どうもクッションが 効きすぎ、安定に悪影響が出ている気がするので、今度は少し堅めに、スポンジゴムを 使ってみました。


00.04.16
自由度2の足首が両方そろいました。また、構造的な改造のついでに、各サーボーからの サーボロッドのボールジョイントを、ガタの無いタイプと交換しました。 加えて、バックラッシュを少なくする別の対策として、各関節の軸として使用していた3mmのボルトを 3mmの鉄製丸棒と交換しました。これらの対策によってプリテンション用の輪ゴムを 外す事が可能となりました。今回の一連の改造により、本体の重量は755gから802gに増加しました。


00.07.31
  • 故障の話
    ロボコン出場のため、突然4L1の製作にかかったので3ヶ月ほどストップでした。 久しぶりに埃を払って動かしてみると正常に動きませんでした。原因を調べたところ 信号発生ボードのサーボを選択する信号の線が外れかけているようでした。4L1の H8にプログラムを書き込むのにボードを抜き差ししたときに外れたようです。

  • ここしばらくの予定
    新しい足を作って、いろいろ動かしてみると、前の足に比べて非常に大きいので、 容易なことでは転倒しない事が分かりました。そこでフィードバック無しの 制御で静的な歩行を試してみました。ちなみに足先軌道の形は長方形です。
    私はこの「ゆっくりなのに揺れの激しい歩き」を見て、中学生の頃?に見た2足歩行ロボットの デモを思い出してしまいました。

    こうゆうのも面白いので、これからしばらくは静的な歩行のプログラムと、歩行サイクル中 で静的に安定な期間が長い動的な?歩行パターンのプログラムを作ってみようと思っています。 上手く簡単なプログラムにまとめられれば、ラジコンで遊べるようになる見込みです。


    00.08.8
    歩行アルゴリズム
    ここしばらく考えたり参考文献をあたった結果、歩行アルゴリズムをだいたい以下のように決めて プログラムを作ることにしました。

  • ジャイロが付いている部分は常に水平になるように計算して動作パターンを作る。 (今は無いですが、将来頭にジャイロを付けて、カメラもここへつければ入力画像のブレ も少なくなって良いでしょう)
  • 水平なはずのジャイロから回転運動が検出されたら、その揺れに対して安定化を行う。
  • 歩行運動は「倒れ続ける倒立振子」のモデルを使う。(上半身が付いたら、 安定の範囲を増やせるので上体補償もする。)
  • 片足で立っている期間の制振動作はジャイロの信号を足首にフィードバックすることによって行う。

    参考文献
    全然気が付かなかったのですが、日本ロボット学会誌2000年1月号にホンダの 2足歩行ロボット(E?)の論文が出ていたのですね。 何気なく本屋さんで手に取ってみて見つけました。実用的な感じの 論文で参考になりました。
    ホンダのロボットと言えば、最近プレスリリースがあったP3に似た黄色いロボットの「人間協調・ 共存型ロボットシステム研究開発成果発表会」プレス資料を製造科学技術センターの ホームページで見つけました。あまり詳しいことは書いてありませんでしたが有用な資料でした。

    旋回
    今2L1にはつま先の向きを変える自由度がありませんので、 P3がその場で向きを変えるような旋回方法はとれません。でも、足の 面や線の中を適当なタイミングで重心を移動させる、人が回れ右をするときのような、 足の面をスリップさせる旋回は可能な様です。(図面を描いている頃は全然ダメなのかと思っていました)
    以前の線接触の足でもいろいろと試したのですが、意図した量の旋回が出来ず制御不能でした。 しかし、今の足でここ数日動かしてみた範囲では良い感触を得ました。前進しながら 少しずつ旋回することは出来るようになりそうです。


    00.08.29
    股関節の破損
    横に歩くテストをしていた時に0番サーボ(一番上のサーボ)と足を接続しているアングルが 剥がれてしまいました。接着面を調べてみるとアングルに薄くプラスチックが付着していました。 (ちょっと見た感じ厚さ0.01mmくらいでした)繰り返し応力による疲労で表面が剥離したようです。 何か根本的な対策をしようかとも思いましたが、アルミとプラスチックの接着部分が剥がれたのは これが初めてだったため、「たまにならば簡単に直るから良いか」ということでそのまま元に 戻してしまいました。

    修理中のスナップ写真

    左足首のサーボの故障
    新しい静歩行のプログラムのテストをしていて、どうも左足首がちゃんと動いていない ことに気が付きました。症状としては、動くべき角度よりも大分少なく動くので、初めは新しく書いた プログラムを疑いました、しかしサーボそのものの故障でした。どうやら負荷のかけすぎで制御回路 が壊れてしまった様でした。
    初めに、とりあえず同じモデルクラフトの555サーボをもう1個買って修理し、足首の負荷を減らすため 足の面積を小さくする事を考えました。しかし、既に555サーボが入手できなくなっていました。 (スペアとしてもう1個買っておけば取り敢えずは直ったのに・・・と少し後悔しました。)
    代わりのサーボとしては、フタバのS3101あたりがほとんど改造せずに使えそうですが、 ある程度まとまった記録は取れているし、サーボもまとめて新規購入 (6500円*4個はちょっと痛い)が必要になるので、 この際不都合点を見直し、例によってSRM1301で膝から下を作り直すことまで 考えに入れて検討してみようと思いました。

    修理中のスナップ写真 サーボ取付金具

    改善の項目としては可動範囲をもっと広くすることと、足首の動きのスピードアップです。 その他の関節との可動範囲のバランスが今ひとつだったのと、足首でバランスを とろうと思っているのに、そこのサーボが一番遅いと言う不都合がありました。 足首のサーボのスピードが22%ダウンしたのは目に見える形で影響が出ていました。


    00.09.10
    サーボコントローラーソフトの改善
    歩行中のビデオを見ていると、0番サーボが間欠的に動くことから来る振動が目に付きました。 新しく”足”を作るとなると、各関節の動作範囲等パラメータの調整がやり直しになります。 加えて、歩くのに各関節がどの程度動けばいいかのデータは取れているので、この際サーボの 入力信号の動作範囲を狭めて、角度分解能を上げることにしました。

    2L1は各サーボの角度を8bitの数値で指定しています。今までは入力の1に10マイクロ秒が 対応していましたので、実際には7bit相当程度のデータで角度が決まっていました。 今回これを3.5マイクロ秒に変更しました。これで動きが少しスムーズに なりました。

    参考までに他のロボットのデータを書きますと、「R魚」は4マイクロ秒、6L1と4L1 が約15マイクロ秒強です。6L1の分解能が低いのは、足の力や振動だけを考えて、 都合良い速度で連続的に動かすため、あまり細かい制御が要らなかったためです。 4L1へは6L1のコントローラーを流用したので必然的に同じになっています。


    00.09.24
    新しい足首
    新しい足首(ヒザから下)の設計がおおかた終わりました。結局SRM-1301を使うことにしました。 予想では120g程度の重量増加になり、重心がまた下がってきますが、股関節にもサーボを足し、 電池なども上に載せる予定なので良しとしました。

    サーボの購入
    新しい足首を作るにあたり、どのサーボを使うか考えました。初めは4L1をバラして サーボを取ってしまおうかと思いましたが、4L1にはまだ試したいことがいろいろと 残っているので新しくサーボを購入しました。
    多分SRM-1301の後継機種だろうと思い、通販でサンワのSX-101Zを20個買ってみました。 幸い、見当は外れず、全く外形寸法は同じでした。一見した違いは生産国表示がシンガポール から中国に変わっていたことと、コネクターがZコネクターになっていたことだけでした。 動かして音を聞いた感じでは、ギアボックスの機械的な精度が上がった様で、音が静かで むらが少なくなりました。


    00.10.01
    新しい足首
    新しい足首(ヒザから下)の設計が組立方の検討まで含めて終わったので製作にかかりました。 どっかで見たようなデザインですね(笑)。
    2L1の場合、大体の設計が出来たら寸法のキーとなる場所から作り始め、詳細な寸法は 作りながら決めています。 こうして片足が完成すると、図面も完成します。この図面が出来ると反対側の足は、初めに 作った足よりも大分短い時間で完成します。右足で良くなかった点は左足で直すので左右の足で 寸法や構造が微妙に違います。

    足首バージョン3

    00.10.11
    新しい足首の製作
    左足のくるぶしの辺りが形になってきました。
    足首タイプ3 後ろより 足首タイプ3 前より

    00.10.26
    制作中の机の上のスナップ写真です。左上に新しい片足が付いた2L1、中央に プラ板から切り出した右足の部品と工具類が映っています。 (チョコレートの袋とか、鏡とか関係ない物も映ってます)
    簡単な工具だけで、安く作れるように考えて設計している、という所が 現れるスナップ写真のつもりで撮りました。しかし考えてみると、 作る人によって非常にばらつきが出そうな気がしますね。 昔のラジコン飛行機のキットのように図面と材料だけ箱詰めして キットにしたら、完成率というか成功率というかが非常に低くなりそうだと 思いました。
    足首タイプ3 前より

    00.11.5
    ロボットの名前
    2L1も初めて動かした時から2年以上が過ぎ、かなり形が変わってきました。 次に股関節に自由度を増やすと、骨格部分が全て入れ替わった事になります。 ラジコンカー等では、消耗した部品を交換してゆくうちに、気が付くと、全ての 部品が入れ替わっていたと言う経験がありますが、「機械」としては同じでした。 一方2L1の場合は、形状、機能、性能の全てが変わったので、同じ機体と見なしても良い のか少し考えてしまいました。まあそれはそれとして、以前の状態に言及するときに 不便なので、バージョン番号を付けて区別することにしました。

    自由度2の時 バージョン1
    自由度8の時 バージョン2
    1つめの自由度2の足首を付けていたとき バージョン3
    2つめの自由度2の足首を付けていたとき バージョン4(現在の状態)
    自由度12の時 バージョン5(これは先の話)

    最大重量の予測
    先にしておいた方が良かったような気もしますが、遅ればせながら、 片足でじっと立っている時、つま先の親指側の角に重心が来た場合を 静的な最大負荷と考えると、足首のサーボにかけても良い力の大きさから 最大全備重量は1600gくらいだろうと計算しました。
    実際に各関節にかかる力は歩き方によって非常に変わりますが、静歩行の 実験中にサーボが壊れないことを設計の目安にしました。 計算方法とその根拠は、そのうちにまとめようと思っています。

    足の変更に伴うスペックの変化
    新しい足が左右揃いました。足首のサーボが小型サーボから普通サイズのサーボに変わったこと に伴って重量が150gほど増え、地面からヒザまでの高さも20mm高くなりました。

    2000年11月からの仕様
    全高 375mm
    全長 150mm
    全幅 140mm
    本体の重量 950g(CPU,バッテリー含まず)
    モーター 三和 SRM-1301(SX-101Z) 8個
    双葉 FP-S9303 2個
    センサー 圧電振動ジャイロ GWS PG-03 3個

    2000年9月までの仕様
    全高 355mm
    全長 150mm
    全幅 140mm
    本体の重量 802g(CPU,バッテリー含まず)
    モーター 三和 SRM-1301 4個
    双葉 FP-S9303 2個
    モデルクラフト 555 4個
    センサー 圧電振動ジャイロ GWS PG-03 3個
    サーボモーター
    機種 トルク(kg・cm) 速度(s/60度) 重量(g) 使用場所 説明
    SRMー1301 3.3 0.18 45 膝/股(前後方向) オフロードカー用
    FP-S9303 7.2 0.19 64.5 股(左右方向) 大型オフロードカー用
    555 2.5 0.20 22.5 足首 汎用小型


    00.11.11
    調整
    脚の構造とサーボコントローラーの分解能を変えたので、 逆運動学計算ルーチンの修正の後、調整をやり直しました。 調整の内容は例によって関節のニュートラル位置の調整−>コントローラーへの入力 数値と実際にサーボが動く角度の対応付けの調節−>ヒザの屈伸による フィードバックゲイン調整の順で行っています。 サーボの可動範囲や各リンクの長さ等はプログラムの外に 「リンクパラメータファイル」として保持していますので、これを調節します。 このカラクリは6L1以来の物です。


    00.11.26
    股の関節
    V4の状態で前後・上下・左右にいろいろな速度で重心を動かしてみたり、瞬間的に 片足を上げてみたり等、今までのソフトで出来る簡単なテストをしたところでは特に 問題は見つかりませんでした。そこで、 自由度を12に増やして、加速度センサーと接地センサーを積み終わってから 歩行プログラム開発の続きをすることにしました。

    今の予定では、胸の部分とバックパック部分をマイコン、センサー、電池等を 積み込むペイロードスペースとして作り、上半身への自由度付加は先にします。 股関節とペイロードスペースの形は多分下の図の形で決定です。

    股関節

    さてここで気がかりは、転勤に伴う12月中旬の引っ越しでロボット本体やその他の機材が ダメージを受けないかどうかです。ダメージが無くても再び体勢が整うまで1ヶ月半位は 工作が出来ないので各種の設計や細かいソフトの試行をするつもりでいます。


    つづき

    戻る