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

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

01.04.07
横歩き
少しずつ動作範囲や、速さを変えて動かしてみました。v2の時に試した横歩きのパターン と考え方は同じで、勢いをつけて踏み出す訳ですが、ヒザを少し曲げて、足が接地する時の 衝撃を和らげる動作を開始するタイミングをタッチセンサーの状態をみて調節するように 変えたので、動作の安定性と再現性が良くなりました。
v2の時は何度か衝撃吸収動作無しで動かし、その時のジャイロの記録を プロットしてみて、いつのタイミングで衝撃吸収動作を入れるかプログラムしていたので 関節のガタ、机の傾き等の外乱の影響をうけてしまいました。

制御ソフトの変更
今までは「常に足は地面と平行」と言う条件をつけて制御していましたが、この条件を 少し変えて、ある位置よりも足を前に出したときはかかとを、後ろに下げたときはつま先を 位置計算の基準とするように制御ソフトを変更しました。
まだ歩行パターンには取り入れてませんが、計算上は1歩の歩幅をより大きく取れ、見た感じも 自然になります。(ホントになるかどうかはまだ分かりませんが・・・)

v3の時も試したのですが、関節の可動範囲と比較し足が大きすぎたので、 バランスのいい場所にかかとを接地できずに使えませんでした。v5はこの点に 留意して足の大きさと関節可動範囲を設計してあります。


01.04.16
関節のガタ
電源が入っている状態と、切れている状態で、どの辺りにガタが有るのか見てみました。 関節の軸は、3mmのキリで開けた穴に3mmのシャフトを押し込んでいるので、摩耗が 進むまでは目に見えるガタはありません。また、サーボロッドのボールジョイントも 同じ様な接続法なのでガタがありません。そして、見た感じ、構造大きくがたわんでいる 訳でもありません。この様にして見てみた結果、一番の原因はサーボの出力軸であると 分かりました。
サーボの出力軸にラジアルベアリングが入っている、高級機と呼ばれる、 保持力や追従性の高いサーボを使うと良さそうな感じがしました。しかし、 そう言った機械的な性能アップは高くつくので、制御アルゴリズムを工夫したり、センサーを 足したり等、安い方法を探そうと思いました。


01.04.22
タッチセンサー
つま先に取付たタッチセンサーが、問題なく機能する事が確認できたので踵にも同じ方式で タッチセンサーを取り付けました。ちなみにタッチセンサーとして使ったマイクロスイッチは オムロン製でD2F-L(型式?)と側面に白い字で書かれている機種で、6L1の残骸 から取りました。

タッチセンサーについては、設計段階でハッキリ検討していなかったので、いかにも取って付けた 様な、違和感のある見栄えになってしまいました。ちょっと残念です。

回路は下図のようになっています。抵抗とバッファはH8マザーボードに載っています。 また、動作波形再生の1サイクルに1回(約30Hz)しか読み込まないので チャタリング防止回路は付けませんでした。
タッチセンサー入力回路


01.05.08
制御ユニットの更新
遊脚着地点の制御の精度を上げることと、どれだけ計算値からずれたかを知るために サーボのポテンショメーターの出力をPCに戻して制御に使おうと思いました。 しかし、今までの機器構成では、ロボット本体にA/Dコンバータを載せても PCまでデータを戻すルートが有りませんので、この際自立化まで見越した機器構成に 変える事を計画しました。

らくがきブロック図(37 Kbyte/jpeg)

これまでは、ロボットにCPUが載っていないケースも想定した機器構成でしたが、 考え方を変えて、「ロボットは幾つかのCPUを持っていて多少の通信機能もある」 という様に考えた機器構成に変えることにしました。
取りあえずは3個のCPUを使い、役割分担は逆運動学の計算や画像処理のような、 重い処理用(当面はPC)、 サーボ制御信号生成用(H8/3048)、その他I/O用(H8/3048)に分ける事としました。

サーボコントローラー7
そんなわけで先ずサーボコントローラー7から作り始めました。基板上部の20Pコネクタは PCのパラレルポートにダイレクトに接続し、その隣のUSBのコネクタはシリアルポートに 接続します。安くて小さいのでUSBコネクタをRS232用に付けました。H8/3048にプログラム をロードするために使います。
写真はコネクタとIC類を並べ終わったところで、配線はまだです。2L1v5の背中の 基板と入れ替えて使います。


01.05.13
通信プログラムの作成
サーボコントローラー7の動作チェック用のプログラムとして以下のようなものを作りました。

  • チェックプログラム1
    コントローラーが出すデータをPCで読み、画面に出すプログラム を作りました。この時コントローラーは一定時間毎に1から255までカウントアップし、PCでは 隣接するデータの差が1でなかったらエラー表示をするようにしました。

  • チェックプログラム2
    PCからリクエストがある度に1ずつカウントアップしたデータを出す、ハンドシェーク有り のプログラムを作りました。

  • チェックプログラム3
    PCから0〜254までのデータを送り、コントローラーは受けたデータに1を加えた数を 返すプログラムを作りました。だんだんと転送レートを上げて行き、どこまで早くしたら 無視できないエラーがでるか試してみました。3.4Kbyte/sec程度の転送レートでエラー率が 0.002%程度でした。パラレルポートから2.8mのケーブルで74LS245にただつないだだ けなので、まあこんなものかと思いました。ちなみにケーブルは1.9mのフラットケーブルと0.9mの ツイストペアのシールドケーブルをDSUBコネクタで継ぎ足したものです。1.9mの方は6L1用、 0.9mの方はZIP Drive用のケーブルです。PCデスクから机までの距離をあり合わせのケーブルで 結びました。

    高速化をきちんと追求しようかとも思いましたが、現状0.75Kbyte/secで何とか動いているし、 100baseの通信機器が一般化している現在、このレベルでこだわってもなんだか寂しいし 、5倍近く早くなれば十分と言う気もするし・・・そんなで、後少しチューニングし、OKとする事 としました。

    以上のテストで配線、コントローラ<−−>PC方向の通信アルゴリズム、ノイズの入り具合 を見ました。


    01.05.18
    RCの送信機と受信機
    2L1の全備重量が厳しくなってきた様に感じるので、簡単に出来る軽量化として 小型・計量のRC受信機を使うことにしました。手持ちの送信機(AM27MHz帯)とこの受信機 は合わないので、送信機もついでに買いました。

    送信機 メーカー:フタバ
    型式:FM 40MHz帯
    型名:T4VF
    チャンネル数:4
    購入価格:\4800 (クリスタル別売り\1000)
    購入先:仙台の 石井模型
    受信機 メーカー:GWS
    型式:FM 40MHz帯
    型名:GWR-4P
    チャンネル数:4
    重量:5.4g
    購入価格:\4050 (クリスタル付き)
    購入先:秋葉原の フタバ産業


    01.05.20
    サーボコントローラー7のプログラム
    4L1のラジコン用プログラムからRC受信機と波形再生に関する部分を削除し、代わりに 2001.05.13に書いた通信ルーチンを加え、サーボをPCから動かしてみました。

    送信機 とりあえずサーボを4個つないで動かしてみました。赤と緑のLEDは動作確認用です。 その上にある3個の2SC945はジャイロの信号レベル変換用トランジスタです。


    01.05.27
    サーボコントローラー7の搭載
    サーボを動かす部分が問題なく出来上がったので、2L1に載せました。初めに 各サーボを1個ずつ所定の角度まで動かすテストで接続間違えがないかと、前回動かさなかった サーボの部分のソフトの正しさを確認し、次に制御波形をかけて連続的なデータ転送で エラーが起きないか確認しました。
    サーボコントローラー5では、転送エラー対策に数ヶ月ほどハマリましたが、今回は 大丈夫そうです。

    制御系の換装作業 信号分配ボードを下ろし、サーボコントローラー7を取り付けているところです。 サーボの配線をやり直すついでに、0番サーボをS9303に戻しました。 SX101ZとS9303は幅が1mm程度違うだけなので、取付金具を少し削って付けました。

    安定が良くなるか、悪くなるか、見てみようと思います。今は各関節の軸受けとリンク をガタゼロに近い形で セッティングしているので、関節のガタは主にサーボの出力軸に起因しています。 SX101ZとS9303を比べると、値段が4倍くらい違うだけあって、出力軸の精度が良くて 剛性が高いように感じます。
    ロボット全体の剛性と加工精度が低い点を何処まで制御ソフトでカバーできるかが 一つの挑戦課題と思っていますが、最近、ある程度データが取れたら、各関節毎に グレードの高いRCサーボを付け、バランスを考え直した2足ロボットを 「新設計で作ろーかなー」と考え始めました。


    01.06.02
    サーボコントローラー7のプログラム
    吊した状態でジャイロのデータを読み出す部分のプログラムを書いています。
    この写真では20PのフラットケーブルはPCのパラレルポートへ、USBケーブルは シリアルポートへつながっています。フラットケーブルはロボットの制御用、 USBケーブルはCPUボードへのプログラムのロード用に使っています。

    制御系の換装作業


    01.06.10
    サーボコントローラー7
    ジャイロとタッチセンサーの接続もつつがなく終ったので、次に、2番サーボの ポテンショメーターから線を引き出し、ただH8/3048Fのアナログポートに つないでみました。結果は今ひとつでした。読み出した値が安定しませんでした。
    テスターの読みでは、約90度サーボを動かすと1V程度ポテンショメータの出力が 変わっていました。これをA/Dコンバータの上位8ビット、レンジ5V(キットのまま) で読み出すと0.1V位の幅で読み出した値が変動しました。

    01.06.17
    サーボコントローラー7
    A/Dコンバータの方は、下記のように設定したところ、だいぶましになったので、とりあえずハード はここまでにしておいて、使ってみることにしました。
  • Vrefを2.5Vに設定する
  • CRのローパスフィルタを入れる
  • 12bitの精度で読み取り、変化する部分を8bit抜き出して使う

    次に、ADXL202を接続しました。以前は約3mのフラットケーブル越しにパルスを受けていたので、 パルスの長さが、数パーセント程度、常に動いていましたが、マイコンとセンサーの距離が10cm 程度に近くなったので、この現象は無くなりました。

    ここまででサーボコントローラー5を使っていたときに付いていたセンサーが揃い、基本的な 通信プログラムも出来てきたので、歩行用のプログラムをかけて、通信エラーに対応する カラクリを組み込もうと考えています。

    今のところPC側のプログラムは、ロボットに直接アクセスする関数を新規に作り、その上の レベルのセンサーやモーターへの入出力の意味を持つ関数は、名前も、引数も同じまま、 新しい直接アクセス関数を呼ぶように中を変更し、歩行制御の関数は変更無しになっています。


    01.06.21
    サーボコントローラー7
    通信用のプログラムがおおかた揃いました。結局パラレルポートをEPPモードに似た形 で使うように落ち着きました。
    サーボコントローラー5と信号分配ボードの組み合わせは、運動制御の実験専用に考えていたため、 ロボットにセンサーを追加するような拡張性を考えていませんでしたが、今度は ロボットのローカルCPU経由でいろいろなデータ(例えば画像とか)をPCへ取り込めるよう になりました。
    01.06.24
    歩行テスト
    サーボコントローラーの変更が大体済んだので、横歩きのプログラムをかけてみました。 ジャイロ読み込み時の通信エラーの頻度が高くなったせいか、細かい揺れの収まりが 悪くなったように見えました。最近ジャイロのプロットをやっていなかったので、 客観的な比較が出来ませんが・・・まあいいでしょう。

    波形再生のサブルーチンと横歩きの制御波形データは、ジャイロのフィードバックを 含めても、多分H8の内蔵RAM(4Kbyte)に収まると思うので、通信のロス無しでどの程度 動くのか試してみようと思いました。

    足の修理
    なんだか動きがおかしいと思ったら、「00.08.29」の日誌の内容と同じ股関節 が壊れました。接着面を見てみると、半分ほどしか着いていませんでした。 前回の修理は少々手抜きだったので、今日は接着剤の粘性をキチンと調節し、 下地の処理も行って接着しました。その上にボルト止めしたので、前より だいぶ良くなったと思います。
    通常、構造強度のバランスが悪い場合、ある場所を強化すると、次に弱い場所が壊れるので、 様子を見てみます。 ボルトの重さもばかにならないし、壊れたところで、別段どうと言うことはないので、 とりあえずは、右脚の同じ場所は放っておきました。

    関節のガタ対策
    2L1v2の時に付けていた様な、輪ゴムを復活し、サーボの出力軸のガタの影響を 少なくできないかトライしてみることにしました。 v2とv5は大分構造が違うので、輪ゴムのかけ方をいろいろ工夫してみようと思います。

    圧電ブザーと赤外線リモコン受信モジュール
    パソコンから切り離して動かす場合の、マン・マシンインターフェイス(おおげさ) として「圧電ブザー」と「赤外線リモコン受信モジュール」を足しました。 動作のスタート等はラジコンで行おうかと考えていましたが、机の上でテストする時 には、赤外線リモコンの方が便利がいいので、とりあえず載せました。
    リモコンのデコードを行わず、ただON/OFFに使うだけでしたら、テレビのリモコンでも、 エアコンのリモコンでも何でも良いので、手近な物がどれでも使えて便利です。

    要目変更
    機器構成が変わり、それに伴って要目も変わりましたので、記録のために古い要目 をここに置いておきます。トップページの要目は変更済みです。

    全高 405mm
    全長 217mm
    全幅 140mm
    本体の重量 1240g(CPU含まず、モーター用バッテリー含む)
    モーター RC用サーボモーター
    (メーカー:三和 機種:SRM-1301(SX-101Z) 個数:12)
    電源 ニッケル水素電池
    センサー 3軸角速度センサー(RC用 圧電振動ジャイロ)
    (メーカー:GWS 機種:PG-03 個数:3)
    2軸加速度センサー
    (メーカー:アナログデバイセズ 型式:ADXL202 個数:1)
    足のタッチセンサー
    (マイクロスイッチ 個数:4)
    CPU Win98 PC(運動の制御用)
    H8/3048F(サーボコントローラー用)
    PIC16C84-4(加速度センサー読み取り用)

    01.06.27
    歩行テスト
    1歩を8mmにセットして動かしてみました。今にも転びそうでしたが、実際、よく転びます。 ロボット全体の、歩行に関係する設計が、バランス的に問題外と言うことは無さそうで、 ソフト次第では少しは歩けそうだと思いました。


    01.07.01
    歩行テスト
    引き続き小さな歩幅で歩かせながら、ジャイロのゲインを調節しました。 データ読み込みエラーが多い分、ジャイロの効きが悪くなった様に見えました。

    加速度センサーの動作確認
    まっすぐ立っている状態と、数度程度、いろいろな方向に傾けた状態で、入力値の変化を見ました。 サーボコントローラー5では、転倒の判定に使える程度の感度でしたが、今度は「歩行の途中で 何とか踏み留まってはいるものの、次の一歩で倒れそうに傾いている」状態も分かりそうでした。
    立っている場所の傾斜を、動作波形にフィードバックさせられるか、トライしようと思います。

    足の拡大
    v3でサーボを壊した経験から足を小さめに作っていましたが、3番サーボの位置保持力の不足と 出力軸のガタの多さを補うため、7×4cmから9×4cmに拡大しました。また、足の裏に 張っているゴムを、発泡ゴムから、パッキンなどに使う1mm厚のゴムシートに変えてみました。 どちらの方が、安定しやすいか差を見てみます。
    サーボの破損対策の1つとして、転倒したらサーボの制御信号を止めることによって、 サーボの位置保持を止める「脱力モード」を付けようと考えています。 (転倒の判定がなかなかうまく行かないので、転倒判定が出来るようになった後の話になります)


    01.07.11
    歩行テスト
    場合によっては1m程転倒しないで歩くようになったので、転倒防止のフックを外して 床の上で遊んでいたら、5回ほど倒れてしまいました。倒れるたびに壊れてないか 冷や汗でしたが、今のところOKです。しかし、そのうち壊れそうな気がするので、 よく地面とぶつかるところにパッドでも付けようかと思いました。

    1歩毎に遊脚が何秒地面を離れていたか計測し、左右に揺らす振幅を変えることで、 ある程度床の傾斜を吸収できました。前後方向はマイクロスイッチのつま先とかかとのどちらが 先に接地したかで重心位置を前後に調節してみましたが、いつも行き過ぎで、うまく行きませんでした。


    01.07.17
    歩行テスト
    7/11以降、毎日少しずつ歩かせて遊んでいます。歩行パターンの調整プログラムを見直したところ、 センサーの入力を歩行パターンに反映させる部分が間違えていました。
    マイクロスイッチの時間差から 重心位置をずらす処理と、ADXLの入力から重心位置をずらす処理とが打ち消しあっていたりとか、 反対側の足のマイクロスイッチでフィードバックしたりと、結構めちゃくちゃになっていましたが、 間違えた処理が重なり合って、歩く状態が出てきていました。
    こんな感じの試行錯誤から得るものも多いので、この調子でしばらく続けてみようと思います。
    01.07.29
    電池の変更
    この数ヶ月くらいの間は、制御系統の電源として、7.2V 1500mAhのNiCd電池(外置) と8.4V 120mAhのNiMH電池(内蔵)を場合によって使い分けていましたが、120mAhのNiMH の電池と重量があまり変わらないので、内蔵電池を7.2VのLi-ion電池に変えることにしました。

    トラ技1999年12月号で電池特集を読み、その後、デジカメの電池を手に取るたびに 「これ使ロボットに使いたい」と思っていましたが、内蔵電源にする必然性が低かったので 先送りになっていました。しかし、最近CPUを内蔵し、PC無しでも動く (注:「歩く」ではありません)環境が出来たことと、移動距離が長くなるに従い、 ロボットの近くに置いた電池ボックスが邪魔になってきたことと合わせて、容量が大きくて 軽いLi-ion電池を載せることにしました。

    電池接続のアダプターは、普段ホームページ作成に使っているデジカメ用でSONY製の NP-F330(5Wh / 約700mAh)とNP-F550(10.8Wh / 約1500mAh)が使える形に作りました。 元々NP-F330がデジカメについていたので、ロボット用に同じものをと思い買いに行くと、 同等品としてNP-F550を出されました。容量が倍になっていたので驚きました。
    ペイロードスペース ペイロードスペース
    ペイロードスペースのハッチを開けると、この様に制御系と動力系の電池が入っています。
    手前がニッケル水素電池で、奥がリチウムイオン電池です。

    動力用は瞬間的に取り出せる電力を、制御系は電力容量を重視して選んでいます。

    リチウムイオン電池アダプター リチウムイオン電池アダプター
    今日作ったアダプターです。接点には2.6mmのボルトを使いました。
    ボルトの間隔は、電池側の穴の間隔より若干広く作ってありますので、ただ差し込んでおくだけで 外れないようになっています。アダプター構造物の弾性を利用しました。


    01.08.06
    加速度センサーのテスト
    加速度センサーADXL202の信号がちゃんと読めているかどうか確認するため、 「前後方向に少しずつ重心をずらし、センサーの読みが±2.0以内になったら ペイロードスペースが水平になったとして止める」というプログラムをかけてみました。

    ADXL202のデューティーサイクルの周期が1msec、サーボコントローラー7の H8のタイマーのクロックが2MHz。とすると読みの2(1μsec)に対応する加速度は 0.008g(デューティー比50%付近の場合)となり、傾斜に直すと約0.46度になります。
    と、こんな風に考えてみて、センサーのデータシートに書いてあること、計算、そして ロボットの動きがつじつまが合うようなので、まあ、性能が出ていると結論しました。

    加速度センサーテストのムービー(344 Kbyte/mpeg)
    ヒザの屈伸動作のうちで、曲げたときと伸ばしたときに、水平を探すサブルーチンが かかっています。


    01.08.06
    プリテンションゴム
    プリテンションゴム プリテンションゴム
    1、2、3番関節にプリテンション用のゴムをかけました。基本的な考え方はv2の物 と同じで、軸のガタ(サーボのバックラッシュ)対策を目的としています。

    ゴムのかけ方の方針としては、以下があります。

  • 足が接地しているときにかかる力の方向へ張力をかける。
  • 遊脚相において、ギアのバックラッシュ等により関節の角度が変わらない程度の張力をかける。
    (脚の自重が支えられる程度の張力です)

  • 01.08.28
    加速度センサーの情報を使った歩行
    足首サーボの保持トルク不足とギアのバックラッシュ、軸受けのガタ等 のため、中立位置(頭が水平になる位置)のデータを与えても 中立位置になるとは限りません。そのため同じ制御波形を流しても、初めの姿勢や、机の微妙 な傾きなどにより様々な姿勢になってしまいます。
    現在の関節の角度をフィードバックし、目標の関節角度に近付ける制御を 行う事が一つの対策ですが、別のアプローチとして「バランスの良い姿勢になることが 目標で、サーボへの指令値は適当でよいと」考え、 加速度センサーの入力をみながら、頭が水平になるまでサーボへの出力データをずらす動作を 踏み出す前に入れてみました。

    踏み出す前の初期状態を一定にする意味である程度効果があるように見えましたが脚が地面を 離れたときに、本来の目標角度になってしまい、接地の時にバランスを崩すケースが多く なりました。
    この件に関しては、体重を支えているときと、いないときの関係が一定ならば対処出来ると 考え、一度体を前に傾けてから、引き起こす様にしてみました。これにより、歩行のインターバルが だいぶ長くなってしまいましたが、各サイクル間のばらつきがだいぶ減りました。

    歩行プログラムの重さ
    上のムービーでは 一歩のアクションの軌道分割数は24で、データの出力間隔は約0.037037秒になっています。 「あわよくば、H8/30481個で多少なりとも自律歩行させたいと」考えていましたが、 プログラムを書き進めるに従い、歩きながらの計算が重くなってきたため 「やっぱり1個では無理かな?」という感じがだんだんしてきました。

    モーターの出力
    力加減が出来れば、今付けているサーボモーターでも、絶対的なトルクそのものは歩くのに 十分かもしれないと思いました。

    今後の方針
    これ以上重くしたら歩けなくなると言う気がするので、腕を付けたり、CPUを増やして 自律歩行させたりという件に関しては、2L1ではあきらめた方がいいのかもしれないと 思いました。2L1の今後としては

  • SRM-1301を10kg・cm程度のトルクのサーボと交換しパワーアップする。
  • もっと有効にモーターの出力を生かす工夫をする
    等を考えています。

    目先を変えて、他のロボットで別方向から技術力アップを図った後に再度トライするならば

  • 車輪の下半身に人間型の上半身が付いたロボット(テレオペレーション、ジェスチャー用)
  • 簡単に歩かせられる、静歩行メインの頑丈な2足歩行ロボット(ROBO−ONE/ペットロボ用)
  • 4L1のペットロボ化
  • 4L1よりハイパワーな12自由度の4足歩行ロボット
  • 4L1より柔軟な24自由度の4足歩行ロボット
  • 胴体に関節のあるトカゲ型の4足歩行ロボット
  • 耐圧5mの有線水中ロボットで魚の写真撮影
    と言ったよーなテーマはどうだろうか?と考えてみました。
    01.09.02
    通信エラー
    PCからパラレルポート経由でサーボコントローラー7へ入出力を行っています。この経路で の入力・出力時のエラー(文字化けみたいな物)の頻度について、サーボコントローラー7 との通信テストを行っているとき(01.05.13)には、「まあこれくらいで使えるか」と思って いましたが、2〜3分に一回程度の頻度で、通信エラーに起因すると思われる 転倒が起きています。どうやら改善が必要なようです。 ちなみに現在は約3.3Kbyte/sec程度のスピードで通信を行っています。

    PGー03とADXL202の入力
    胴体の傾斜調整をした後に踏み出したときの入力です。 サーボコントローラー7がコマンドを落としたとき、サーボコントローラー7とPCの両方が 読み込みモードになるときがあります。この時は255が返ってくるので、255はニュートラル の数値に読み替えています。このグラフを見ると、サーボコントローラー5でとったデータと比べて やけにジャイロの信号がフラットです。
    なんだか怪しい・・・もしかして、ほとんど読めていないのかも・・・
    もしくは サーボコントローラー5でのジャイロの読みが狂っていたのか。機会を見て調べようと思います。

    PGー03とADXL202の入力

    3個搭載しているはずのジャイロのプロットが2軸分しかないのは、ヨー軸のジャイロを 使っていないためです。当面の制御には必要ないと感じているため、通信時間短縮を目的として 、読み出しを止めてしまいました。


    01.11.20
    とりあえずまとめ
    サーボモーターの角度制御をRCサーボ任せにし、ジャイロと加速度センサーの入力を 動作パターンへのフィードバックすることにより歩行の安定化を図る

    と言う方針で進めてきましたが、RCサーボの比例制御から来る誤差を (サーボ剛性?が足りない状態の事を何と表現しましょう?)力自体のフィードバック無しには 補正しきれないと感じてきたので、2L1v5の製作は当面ここまでとして、 結果をまとめながら、要素技術(2L1も2足歩行専門の実験機ですが)の実験をする 別の機体を作ることにしました。

    目と手(腕)が付いた移動ロボットで、視覚と力の制御をメインテーマにしようかと思っています。 とは言っても実際に製作するハードは、W1〜5までの流れに沿った「楽しい工作」ベースの 簡単なロボットにする予定です。(2L1も気が向いたら再開しようと思っています。)


    01.12.02
    RCサーボ用の電源
    このところしばらくRCサーボ用の電源について考えていました。 2L1v5は足を上げるアクションの動作パターンを作るとき、どの程度のスピードで 重心を動かすかを、足裏のマイクロスイッチがONになった時間をパラメーターとして 計算しました。ここで、ONの時間を動作パターンにフィードバックするゲインも 実験から決めていました。
    R魚以来ずっとサーボ用の電源は安定化していませんでした。しかし、このゲインが サーボの特性(ロボットの反応性)を反映させなければならない性質のものなので、電池の 電圧が変わるにつれ変えなければなりません。 よって、制御を簡単にするため、電源を安定化した方が良いと思いました。

    また、各関節のプリテンション発生のため、輪ゴムを使ってきましたが、輪ゴムはかけておいた 時間等によって発生する張力が刻々と変わります。よって電源と同様、ロボットの特性を一定 に保つという観点から言うと、あまり良いメカニズムとは言えないと思いました。

    機械的に一定の張力を保つことは、高くつきそうな気がしますが、電源の安定化の方は それほど費用がかからないと思いますので、機会を見て電源を安定化しようと思いました。


    02.02.11
    足首の破損
    2月2日と3日に行われたROBO−ONEに「展示のみの参加」と言うことで 2L1v5を持ってゆきました。持参の方法について さんざん悩んだ末、飛行機に乗るときに面倒なので、宅急便で送ってみました。 すると、梱包方法が不適当だったためか、左の足首が壊れてしまいました。

    足首の破損(その1) 足首の破損(その2) 足首の破損(その3)

    パワーアップ
    ROBO-ONEでしくみや大きさが比較的近い2足歩行ロボットの動いている様子を見て 「4L1の操縦があまり面白くなかったので2L1のラジコン化はやめようか」 という気が変わり、「静歩行でも遊べるかも」と思うようになりました。また、 同クラスの2足歩行ロボットの電源まわり、歩き方、倒れ方、壊れ方等々多くの 情報を得ることが出来たので、上記破損の修理で足首を作り直すついでに、 デジタルサーボやハイトルクタイプのサーボを使って 静歩行が出来る程度にパワーアップしてみることにしました。

    換えるサーボは1番をERG-VB(13kg・cm, 0.10sec)、2番をERG-VR(8.0kg・cm, 0.07sec)、 3番をSRM-1322Z(3.6kg・cm, 0.17sec)、4番をERG-WR(8.0kg・cm, 0.07sec)としました。 (全てサンワのサーボで、ERG-WRのみデジタルサーボです)
    2L1v5に小改造で付けられるサーボを試すという意味で、全関節に違う機種の サーボを付けてみます。足首のピッチ方向のサーボ(3番)は、取付位置の都合で そのままではハイトルクタイプを付けられないため、軸受けにベアリングが入っている、 SXー101Zとほ同寸法のサーボにしました。

    足首へのベアリング取付
    「ミニチュアベアリングは高価」という印象を子供の頃に持っていたので、 いままで自作ロボットの軸受けには使ったことがありませんでしたが、 東急ハンズ渋谷店で丁度良いサイズのベアリングを見つけたので、 足首のピッチ側の軸受けに付けてみました。
    関節でのパワーロスが減る分、すこし駆動力がアップすることを 期待しています。
    型式はMR63ZZです。売場でメーカー名を見かけませんでしたが、 多分NSK(日本精工)製だと思います。内径が3mm、外形が6mmの ミニチュアベアリングで、1個380円でした。

    足首のベアリング


    02.03.03
    足首の再制作と各関節のトルクバランス変更
    足首周りを作り直しました。足首のロール軸のサーボを位置保持トルクの高いデジタル サーボに換えたので、それに合わせて足の幅を広げました。こうすることにより 片足で立ちやすいようになりますが、足同士が干渉しやすくなるので歩きにくくなります。 基本的に2L1の歩行性能が低いことは十分納得がいったので、 片足でじっと立てることと、2cm程度の小さな歩幅で安定して静歩行できれば 良しとすることとしました。

    その他の関節も、前回の書き込み内容に沿ってパワーアップを図りました。 定価\15000クラスのRCサーボは、SX-101Zと比較して、 サーボの軸受けのガタが少なく、標準で付いてくるサーボホーンの剛性も 高いので、ロボット全体が目に見えてしっかりした感じになりました。

    スナップ写真 (外見上の変化は、足が大きくなっただけです・・・)

    動力系電源の変更
    以下の理由から、しばらくの期間、動力用の電源を外部のスイッチングレギュレーターから 取るように変えることとしました。

  • 以前から搭載している、動力用のNi−MH電池では、電源容量が不足する
  • 動力用電源も安定化されていた方が、ロボットの特性が一定して歩かせ易くなる
  • 重心を下げて、足首のサーボにかかる負担を減らす。

    名前の変更
    大きな改造が完了したのでバージョン番号を1つ進め、名前を「2L1v6」に変えます。


    02.03.08
    歩行テスト
    v5用の歩行データ生成プログラムの入力の、左右に揺らす振幅や、足を前に出すタイミング等 を少し変えて歩かせてみました。v5ではサーボの軸のガタ、位置保持トルクの低さ、サーボ ホーンの剛性の低さ等色々なファクターが重なり、右足を踏み出すときと、左足を踏み出すとき にバランスの崩れ具合が違う原因が見えませんでしたが、各関節の無負荷時における 位置制御の調整が甘いせいだと分かりました。 (例えばプログラム上「10度膝を曲げる」という指示で どれだけ10度に近い角度になるかという調整です。)

    v5では、サーボのトルクが足りないので、この調整を突き詰めていっても仕方がないと 思っていましたが、パワーアップを図ったので、改めて調整してみようと思いました。

    いままでは、歩くときに「腰の高さを一定に保つ」「胴体はいつも水平」という条件を 付けて歩行パターンを作っていましたが、歩幅をより大きくとるため、これらの条件は 廃止しようかと考えています。


    02.03.10
    歩行テスト
    前回の更新から関節パラメータや歩行のタイミングを調整しました。 0番と1番の関節が壊れないか心配でしたが、今のところ大丈夫そうです。 関節の保持トルクが上がったので、机のどちらに向けても、だいたい 歩けるようになりました。(いつもテストをしている机は、 乾電池を少し転がすと、そのまま止まらずに端までゆく程度に傾いています。 でも、壁から生えている机なので、傾斜の調整が出来ないところが痛いです。)

    サーボホーンの交換
    3番サーボのサーボホーンを、剛性が高いタイプのものと交換しました。 また、サーボロッドも真鍮のネジ棒から鉄製のものと交換しました。

    以前は剛性が低く、軸のガタが多くても、加速度と角速度のフィードバックで 何とかなるのでは?と思っていましたが、力に関するフィードバック 無しには上手くゆかないようなので、先日実施した、サーボのタイプ変更も含め、 剛性を高め、足先の位置制御を正確にする方向で改造することにしました。


    02.03.17
    関節パラメータの調整
    歩幅等を色々と変えて試していると、図面上は足が届く範囲の場所を指定したときに 「足が届きません」や「関節の作動範囲を超えました」のエラーでロボットが止まりました。 また、歩いているときの揺れが思ったよりも大きいので、関節パラメータが狂っている 事が推察されました。
    といったわけでこの1週間ほどは、面倒なのであまり気乗りはしませんでしたが、真面目に 調整を行いました。その結果、下のムービーのように歩行が安定して来ました。
    他の人が見て明らかに「良くなった」と感じるほどの差が出ているか、ちょっと自信が ありませんが、歩行途中での胴体(頭)の部分の揺れが減っています。

    衝撃吸収パッドの追加
    転んだとき、地面とぶつかる部分に衝撃を和らげるための「衝撃吸収パッド」を追加中です。 以前足の裏に張っていた、5mm厚のスポンジゴムを使いました。

    重量の増加
    主に、サーボがプラスチックギアのタイプから、金属ギアのタイプに変わった事の 影響で1450g−−>1630gに増えました。


    02.04.04
    歯付きベルトとプーリ
    学生の頃、むかいの研究室の2足や4足の歩行ロボットの関節駆動方式が、ギアードモーター と歯付きベルト&プーリになっていました。それらロボットが今ひとつ調子よく動いてい なかったので、永らく自分の中では「2L1や4L1クラスのロボットには、適していない設計」 として意識の外にありました。しかし最近、morphやRBVが調子よく動いているので、 ちょっと試してみようと思い、RCカーのスペアパーツとして売っているベルトとプーリ を買ってきました。

    関節のベアリング
    4番関節(足首のピッチ軸)で特に問題がないようなので、新たにMR63ZZを20個 買いました。機械的ロスを減らすことにより若干のパワーアップを図る予定です。
    東急ハンズ渋谷店のB1階で買いました。買いに行った日は在庫がなかったので、入荷したら 送ってもらえるように、カウンターで品代と送料を払って帰りました。欲しいものが正確に 言えれば、電話で注文して、代引きで受け取る事も出来るそうです。 (店員さんが対応してくれるので、平日の開店直後なら電話対応が出来る確率が高い とのことでした。)

    背中のカバーの新製作
    転倒防止索を外して、床の上を歩かせるため、背中に内蔵している基板保護用の カバーを新しく製作しました。 これにより、後ろ向きに転倒したとき、ドーターボードの一部が地面とあたり 折れる心配がなくなりました。 加えて、仰向けに地面に置けるようになったので、取り扱いが少し便利になりました。

    スナップ写真 スナップ写真 スナップ写真 スナップ写真

    腕の設計
    足まわりの制御と、その他の部分の制御の関連させ方を試すために、 腕をここ数ヶ月の間、検討中です。以下の図はそれら検討案の1つです。 (とりあえずは自由度2もしくは3のを作るつもりです。)

    腕の設計案

    02.04.11
    故障
    数週間ぶりに起動してみると動きませんでした。センサーのテスト用のプログラムを ロードし、マイコンが動いていることなどを確認しているうちに、突然各サーボが 振り切り、1番関節の構造の接着部分が少しはがれました。
    そこで、本格的に壊す前に、ひとまず作業を中止し修理することにしました。 そういえば、最後に歩かせたときも、いきなりサーボが振り切り、激しくコケました。 どうも、マイコンからサーボにつながる間のどこかがショートしているような感じです。 配線がいいかげんなので、おそらく、歩行の振動で配線が外れかかっている場所がある と思われます。
    いまは1つしか積んでいないマイコンを、2個に増やそうと思っているので、 そのうち気が向いたら改造のついでに、サーボ周りの配線をやり直そうと思いました。

    各関節のトルク配分を変えての歩行試験など、一区切り実験が済んでいるので、しばらく 全体システムを使った試験はおいておいて、通信プログラムや、 今は1パターンしかない加減速プロファイル生成ルーチンを加えるなどの基本的な 製作をしようかと思います。


    02.04.13
    修理
    2L1はおいておいて、しばらくW6で遊ぼうと、サーボコントローラー7の基板を W6に乗せ換えて動かしてみました。するとこちらも正常に動作しませんでした。 配線が「ぐちゃぐちゃ」なので、見る気が起きませんでしたが、仕方なく配線を チェックするためのコードをプログラムに混ぜ、何がおかしいのか 調べました。2時間ほどの試行錯誤の結果 、サーボ等が接続するドーターボードへつながる途中のグランドラインが 切れかかっているのを見つけました。そしてここを付け直した後は W6、2L1共に正常に動くようになりました。

    新しいPCへの移行
    WinXPマシン(エプソンダイレクトのBN100) の購入に伴い、従来パラレルポートからinpやoutpを使って ロボットと通信する方法が使えなくなるので、Windowsのドライバをきちんと経由して シリアル通信するように変えようかと思っていましたが、結局 WinXPの不調のため、Win98を入れてしまったので、しばらく今の路線を 保持することにしました。
    最新のハードですが、既存の開発環境、周辺機器、自作ロボット等今まで チェックした限りでは使えています。


    02.04.20
    自立化への検討
    搭載しているH8だけで何とか動かせないかと、H8用のソフトについて検討しています。 初めに、4L1を作ったときの方法と同じく、ROMにはモニタをインストールしておき 内蔵RAM(4kbyte)の中で、1動作パターンずつ試しながら作り、最後に、一まとまりの 動作パターンをすべてリンクし、プログラムをROM化する方法をとろうかと 考えましたが、2L1の場合、4L1の動作パターンと比較して1パターンあたりのデータが だいぶ多く、加えて、ジャイロのフィードバックのコード(といっても、大した物ではないですが・・・) も埋め込まなくてはならないので、4kのメモリ収まりそうもないと思いました。

    そこで昨年の春以来、死蔵されていたH8/3067ボードを出し、うまく使えないか検討を はじめました。今ちょっと考えたところでは、背中のH8/3048のボードとシリアル で結び、H8/3067の外付けRAM(32kbyte)に制御波形データを持たせるようにしようかと思っています。

    H8/3067ボードといえば、 私はアセンブラには 不慣れなので、日立のHPからモニタのソースコードをダウンロードし、多少 調節して使える様にするのに苦労しましたが、 秋月のHPを見たところ、モニタがキットに付属に変わっていますね。 これでこのキットも買いやすくなるのではないかと思いました。


    02.05.01
    v5の記録
    トップページの「仕様の表」を更新しましたので、以前の物をここに残しておきます。

    <<2L1v5の仕様>>
    全高 415mm
    全長 217mm
    全幅 140mm
    本体の重量 1450g
    合計自由度 12
    モーター RC用サーボモーター
    (メーカー:三和 機種:SRM-1301(SX-101Z) 個数:10)
    (メーカー:双葉 機種:FP-S9303 個数:2)
    電源 ニッケル水素電池 (4.8V 1500mAh / 動力系統)
    リチウムイオン電池 (7.2V 1500mAh / 制御系統)
    センサー 3軸角速度センサー(RC用 圧電振動ジャイロ)
    (メーカー:GWS 機種:PG-03 個数:3)
    2軸加速度センサー
    (メーカー:アナログデバイセズ 型式:ADXL202 個数:1)
    足のタッチセンサー
    (マイクロスイッチ 個数:4)
    CPU Win98 PC(Celeron 500MHz)
    H8/3048F(16MHz)

    サーボモーター
    サーボモータの概略仕様と使用場所は以下の様になっています。厳密な設計計算の
    基に各機種を選定したわけではなく、予算とストックの都合で適当に選びました。
    機種 トルク(kg・cm) 速度(s/60度) 重量(g) 使用場所 説明
    SRMー1301
    (SX-101Z)
    3.3 0.18 45 股以外 汎用
    FP-S9303 7.2 0.19 64.5 股(左右方向) 大型オフロードカー用


    02.05.03
    内臓マイコンボードの製作

    PC controle mode configuration 2

    02.05.09
    SCB8の製作

    02.05.12
    SCB8の製作

    つづき

    戻る