見出し画像

基本のポーズと回転方向の正負

Meridian計画。
ヒューマノイドを動かそうとした時に悩ましいポイントの一つが基本ポーズの設定です。
すべての関節に移動角として0を入力した際に、どういうポーズになるように決めておくべきかという問題です。
Meridianには汎用性を持たせたいと考えているので、なるべく多くの人が納得できる、慣習的に多く使われている方式に則りたいと考えています。

CGではT字ポーズが標準

CGでの人物モデルのリギングなどでは両手を広げたT字ポーズが標準のようです。

画像1

将来的にCG用のモーションアセットを実機ロボットにも応用したいという場合には、このポーズを標準にするということもありえるかもしれません。
ただし後述する「気をつけのポーズ」との差は肩ロール軸を90度外転させているかどうかだけなので、変換で対応することも可能に思えます。

サーボモーター式ロボットの原点ポーズ

今回のようにサーボモーターで動くロボットの場合、各関節ごとにその可動域の中間点を原点することが多いです。

画像2

例えば肩を前後左右に90度ずつ、合計180度ほど回転させるつもりの場合には、上図のような姿勢が基本になります。同様に膝や肘なども可動域の中間点で曲げた状態がサーボ原点となるようにハードウェアを組み立てるのが自然です。
これはあくまで機構上の合理性にもとづいた中間点です。基本ポーズについてはソフト側で初期値をオフセットすることにより任意に設定することができます。

気をつけのポーズは計算しやすいかも

Meridianの目的はホビーロボットに計算制御を導入しやすくすることでもあるので、いかに「自然」にしておくかが大事です。

画像3

手元のロボットの教科書を見る限りですが、基本ポーズにこれといった決まりはないようです。(あったらすみません)
アームロボットは水平を原点にしているようですし、歩行系ロボットの足は垂直状態を原点にしているようです。とすると腕の位置も足と同じように下向きに垂直にしておくというのは素直かもしれません。

考慮しておくべきこと

ハードウェアを伴うヒューマノイドは、起動時の初期位置の安全性も考慮すべきポイントの一つになります。
T字型はやや暴れるリスクが、手を下げた直立は指などを挟むリスクがそれぞれあります。ただしこれらのリスクについては基本ポーズとは別のところで対策を施すことも可能です。つまり起動時に指を挟まないように少し開いた形を初期ポジションになるようにしておくということです。この初期ポジションは今決めようとしている計算用の基本ポジションとは別に設定しておくことが可能です。

ホームポジションの結論

ということで、新たな問題に気づくまでは「きおつけのポーズ」を基本形に設定しておこうと思います。
Meridianでは中間プロトコルで各サーボの位置を0に指定した時にこの直立ポーズになるように設定していきます。
この状態を「ホームポジション」と呼び、計算時の原点とするように決めておきます。
ホームポジションは、実機でのポーズ、Unityでのポーズがともに同じ見た目になるように初期設定でオフセット値を決めておきます。

また、サーボの原点を示す姿勢については「サーボ原点姿勢」として呼称を分けておきます。他にも起動後のサーボオン時にとる姿勢は「起動初期姿勢」、サーボの細かなオフセット値を調整するための姿勢は「トリム姿勢」とし、呼称を分けておくようにします。

ホームポジション:Meridianデータでサーボ位置を示す値が0、直立状態。
サーボ原点姿勢:各サーボがニュートラルな状態の姿勢。
起動初期姿勢:電源投入後にとらせる安全な姿勢。
トリム姿勢:サーボ原点を微調整する際の角度計測に都合のよい姿勢。

回転はどっち方向をプラスにする?

基本ポーズの次に決めておきたいのが、回転方向とプラスマイナスの関係です。

人体では、きおつけのポーズからおおむね曲げやすい方向に関節を曲げていくことを屈曲、その反対を伸展と呼ぶそうです。また、内側に回転させることを内転内旋回内、その逆を外転外旋外回と呼ぶそうです。

画像4

参考図)看護roo!「関節はどのような動きをするの?」より

これらの呼称や回転方向を参考にしつつ、
・屈曲、
外転、外旋、回外 → プラス
・進展、
内転、内旋、回内 → マイナス
と設定してみます。

画像5

すると左半身を座標軸において考えた時、反時計方向がプラス回転となりますので、座標上での一般的な計算方向と合致するので少しわかりやすくなります。

(2021.08.22追記)
・・・と思ったのですが、右手系の座標おいて考えると、人体的な回転の呼称とプラス方向の関係はばらばらになります。(基本的に外と伸がプラスとなり、膝のみ逆)
さらに初期値、回転角度の0地点をどこに設定するかという問題も生じてきます。グローバル座標とローカル座標を考える際にも整理ができている必要があります。現時点では以下のように考えています。

画像6


右半身はどう設定しておくとよいのか?

これについてはまだ決めかねています。
左半身を基準にしつつ、右半身はY軸の正負を入れ替えてたミラーにしておけば、コマ撮り方式によるモーション作成時に直感的にわかりやすくなります。
一方、ワールド座標系上で角度や位置を扱う場合には、右半身も左半身の座標系に従った方がおそらく計算がラクになります。
かなり悩みますが回転方向については一旦ミラー状を選択し、様子をみながら先に進めていきたいと思います。

次の記事:

前の記事:

関連性の高い記事:

目次:




この記事が気に入ったらサポートをしてみませんか?