wingasyaさんの【ロボザック日和】でMOTORINでサーボの位置を検出してモーションを発動させるという面白いことをされてたので私も色々やってみてました。

試行錯誤の途中なので、若干無責任な内容ですのでご了承下さい。

予算がなくて加速度センサーまだ買ってないので・・・代わりになるようにやってみました。
起き上がりの前後ボタンを間違うので、ボタンを押せばうつ伏せか仰向けか判断して、半自動で起き上がるようになってくれました。
ちなみに勝手に起き上がると、起き上がって欲しくない時に起き上がることになりそうなので、ボタンを押してから起き上がるようにしましたので半自動起き上がりです。

標準の姿勢から両腕を後ろに動かして、うつ伏せか仰向けかを判断させました。
当初は脚でも判断するように考えてたので脚も動かしてますが、肩だけで判断するなら、より肩の値の読みに変化がある姿勢の方が良かったかも。

ジャイロやDIRなど設定後、
■判断姿勢
※私の機体は、壊れたブラケットなど自作していたり、
夢現工房さんのプレステキット使ってて、キット付属の胸カバーの上にROBOZAKのプラカバーを削って貼り付けてるので、胸板が厚くなってます。
色々変更してるのでご自分の機体で判断できる姿勢を探してくださいね。
MOVE G6A, 100, 76, 145, 85, 100
MOVE G6D, 100, 76, 145, 85, 100
MOVE G6B, 75, 30, 83
MOVE G6C, 75, 30, 83
WAIT

で、肩のA=MOTORIN(6)と(12)の値を、仰向けの場合とうつぶせの場合をそれぞれ調べました。

LCDをもっていない方は、miconoさんのRZ1Basicを使うと読めます。
A=MOTORIN(n)のAの値を取得するには・・・
Dim A AS BYTEが、
1番始めに宣言されているなら、【SRAM 0x0140】
2番目なら、【SRAM 0x0141】
を選択してやればOKのようです。
実際、一番目にAを宣言して「SRAM 0x0140」を選択するとMOTORINの値が読めました。
miconoさんお教え下さりありがとうございます。

■起き上がりのサンプル
※もっと簡単に綺麗なプログラムが書けるのでしょうが、
私の頭ではコレが限界・・・
基本が分かっていませんのでご了解を。
こうすると良いよ!というのがあればお教え下さい。

横向きの時も、判断姿勢になるために手を動かすと、
ほとんどの場合でうつぶせになり、
上手く起き上がることが多いです。

場合分けで、どこか抜けてるところがある気がしますが、
とりあえず上手くいってます(笑)
--------------------------------------------
tilt2:

DIM MTA AS BYTE (おそらく変数宣言しすぎでしょうね)
DIM MTB AS BYTE
DIM MTXA AS BYTE
DIM MTXB AS BYTE
DIM MTX AS BYTE

MTA =0 (一応書いてみましたが必要ないのかも)
MTB =0
MTXA=0
MTXB=0
MTX =0

MOVE G6A, 100, 76, 145, 85, 100
MOVE G6D, 100, 76, 145, 85, 100
MOVE G6B, 75, 30, 83
MOVE G6C, 75, 30, 83
WAIT
DELAY 500

MTA =MOTORIN(6)
MTB =MOTORIN(12)

'(76はサンプル値です。良い値を探して下さい)

 IF MTA>76 THEN 
 MTXA=1
 ELSE
  MTXA=0
 ENDIF

 IF MTB>76 THEN
  MTXB=1
 ELSE
  MTXB=0
 ENDIF

MTX=MTXA+MTXB

IF MTX=2 THEN
GOSUB B_STD (あおむけ時の起き上がりモーション)
ELSE
GOSUB F_STD (うつぶせ時の起き上がりモーション)
ENDIF

RETURN
--------------------------------------------------