2001/06/25 【アクチュエータ編TOPに戻る】
この度、足腰の8個の関節を自由に動かせる調整用のソフトウエアrbtest1.cを作りました。詳細はソフトウエア編の202.好きな関節を好きなだけ動かすを参照して下さい。8個の関節とは、太もも、ヒザ、足首の前後方向、およびウチマタ/ガニマタ方向の左右分の8箇所です。
今回は、このソフトrbtest1.cを使って、ロボットの関節角度とポテンショメータの関係を調整します。また、関節の可動範囲をきちんと調べて、rbtest1.cのソースプログラムに反映させることにします。
ここでは、以下の内容についてご紹介しています。
関節角度とポテンショメータの関係を調整する!と言いましたが、これはどういうことなのか、からご説明します。

ロボットの各関節は、タミヤのギヤボックスで動かしています。そして、ギヤボックスの駆動シャフトの回転角度は、ギヤボックスに取り付けたポテンショメータで検知しています。詳細は6.ウォームギヤボックスに角度センサーを付けるを参照して下さい。
このとき、シャフトの角度が何度の時に、どの位置のポテンショメータをかみ合わせるか、というのが問題となります。つまり、ロボットの関節角度がどの位置の時に、ポテンショメーターからどの値を出力させるか、ということです。
一番の理想は、関節の可動範囲のちょうど中間位置の時に、ポテンショメータが中間位置を示すように、お互いの関係を調整するのです。もしくは、可動範囲ギリギリのところで、ポテンショメータの値も範囲ギリギリの値が出力されるように調整します。これにより、ロボットの可動範囲上で、最適なポテンショメータの値を得ることができるでしょう。
まず、どの関節位置を基準にするかを決めます。今回は、以下の姿勢の時を基準としました。これは直立姿勢です。
![]() |
ガニマタ4L:つま先は前方を向ける位置を可動範囲の基準とします。ポテンショメータからの値は0〜31の32段階で取り込むため、中間位置として16を基準値とします。
太もも1L:太ももは前後に動かすため、この位置を可動範囲の中間位置として基準にします。ポテンショメータは16を基準値とします。 ヒザ2L:ヒザはこの位置が可動範囲ギリギリの角度です。ポテンショメータは少し余裕を持たせて00ではなく05をこの時の基準値とします。 足首3L:足首も前後に動かすため、この位置を可動範囲の中間位置として基準にします。ポテンショメータは16を基準値とします。
|
実際の調整は、以下のように直立の姿勢にしてテーブルに寝かせます。
![]() |
![]() |
そして、各関節のギヤボックスに取り付けてあるポテンショメータを回して、基準値が出力される位置に調整します。ポテンショメータはギヤでかみ合っているためタダでは回りません。基板はギヤボックス本体にホットボンドで少し緩めに付けてあるので、基板をギヤから離れる方向にちょっと押すと回るようになります。
ポテンショメータの出力値は、rbtest1.cのソフト上で確認できます。ハイパーターミナル上からMと入力すると、各関節の現在のポテンショメータからの値を一覧表示します。

ポテンショメータをちょっと回してはMを押し...というのを繰り返すと、基準の姿勢で基準の値が出力されるようにポテンショメータを微調整することが出来ます。しかし、ポテンショメータに取り付けてある歯車一枚分の角度が調整の限界となってしまうので、±1の値くらいは大目に見ましょう。(^^; (結構いい加減...)
さて、ちょっと遅くなりましたが、rbtest1.cプログラムの使い方を簡単にご説明します。準備としては、パソコンでハイパーターミナルを立ち上げておくことと、AKI-H8とパソコンを、開発環境と同じようにシリアルケーブルで接続しておくことです。ハイパーターミナルの使い方は、ソフトウエア編109.パソコンとシリアル通信するを参照して下さい。
| 1.AKI-H8の電源を入れる。
すると、こんなメニュー画面が出てきます。雑然としていますが、ロボットを動かすためのコマンドの説明がしてあります。メニューに表示されていませんが、Qを押すと、コマンドを最初から入れなおすという機能も付いています。 このとき、開発ボードの液晶には、以下のような表示がされます。
|
|
2.コマンドを入力する。
コマンドを入力してみます。コマンドについての詳細は、ソフトウエア編の202.好きな関節を好きなだけ動かすを参照して下さい。このとき、液晶表示器でも、入力されているコマンドを表示します。
|
|
3.リターンを押すとロボットが動く
コマンドを間違いなく入力したら、リターンキーを押します。するとロボットの指定した関節が動き出し、指定位置で停止すると、Job Finished!のメッセージが表示されます。続いてコマンドの入力待ちになります。画面上には、関節を動かすための3個のパラメータ値も表示されます。STATUSが動き出す前の関節位置で、STPPOSが目標の停止位置、SPMODEが回転速度です。 液晶画面はクリアされて、次のコマンド入力表示に備えます。
|
rbtest1.cのプログラムでは、相対位置指定モードで停止位置を指定する場合、正回転+か逆回転−の指定をしなければなりません。このとき、以下のような方向で+/−を指定します。
![]() |
正回転/逆回転は、どの場所を基準(固定)にするかによって解釈が変わりますので、以下を目安としてください。
ガニマタ4L:+方向でウチマタ、−方向でガニマタです。右足の場合も対称に動作するので、同じ考えが適用できます。 太もも1L:太ももを固定で考えた時、+方向で腰が後ろに反り返り、−方向で前カガミになります。 ヒザ2L:スネを固定で考えた時、+方向でヒザを曲げ、−方向でヒザを伸ばします。 足首3L:足を固定で考えた時、+方向でスネを前に曲げ、−方向でスネを後ろに曲げます。 |
各関節には構造的に可動範囲が決まります。9−2.どうやって調整するかで調整したポテンショメータの元では、以下の値が可変範囲になります。この可動範囲は、今後制御ソフト上に反映して、関節動作の制限などに利用していきます。
![]() |
ガニマタ4L:ウチマタ方向が最大で26、ガニマタ方向が最大で06あたりですまでの可動範囲です。
太もも1L:太ももを固定で考えた時、腰の前カガミは最大で01まで、反り返りは最大で30までです。 ヒザ2L:スネを固定で考えた時、ヒザの曲げは最大で29まで、伸ばしは最大で05までです。 足首3L:足を固定で考えた時、足首の前方曲げは最大で25まで、後方伸ばしは最大で06までです。
|
今回のロボットの場合、最も安定した立ち姿勢は、少し前かがみ気味に中腰で立った状態のようです。(何となくですが...)このとき、各関節のポテンショメータの位置を取り込んでみました。結果は以下の通りです。
![]() |
![]() |
今後はこのポジションを基準の立ち姿勢とします。何に使うかは分かりませんが、とりあえず基準にしておきますね。
一応ロボットを動かすための準備が整って来ましたが、まだ8個の関節にしか対応していません。左右方向に体重移動するためには、あと4個の関節制御を追加しなければなりません。その辺はボチボチということにしましょう。