初期化.RM4
は、ロボの電源ON時に実行されるモーション・ファイルで、操作マップ画面でファイル指定する。MotionWorks取説「5-2.初期化モーションの例」を参考に編集してロボ電源ON時の思わぬ挙動を防ごうとしたのだが、どうも様子が違う。サーボをONすること無く初期化終了し、残りはサーボ補正演算用の変数初期化処理になっている。
取説の周辺記載を頼りに探し出したサーボON/OFF.RM4と突き合わせた結果、サーボON時の挙動制御を一箇所に纏めたうえで初期化は変数初期化だけ、という処理分担に変更したようだ。変更に一理あるものの、これでは取説の意味ないねぇ。
現状の処理分担を追認したうえで編集開始...
- Z軸ジャイロ補正演算用変数の初期化処理を追加
前記事で新規追加したZ軸ジャイロ用の変数を準備。
- 自由歩行(?)用のサーボ補正演算変数の初期化処理を全て削除
- サーボON/OFF用の変数を陽に初期化
同一変数をあちこちから触るのは好かないが、モーションから参照される以上は初期値の保証が必須だ。
致し方ない。
- 全サーボOFFではあるが、基準姿勢モーションのP0は「お守り」として残しておく
- 「こんにちは」と話す発声処理を追加
ROBOZAKと異なり電源LEDが筐体内で視認困難なので、これで電源ONが判りやすい。
編集済モーションをロボのCPUボードに書き込みがてら、操作マップのモーションファイル構成も編集して、コントローラ操作での自由歩行を削除。UART経由の自由歩行はラズパイ連携のサンプルとして残した。
USB接続を外して初期化処理を確認
CPUボードに書き込み後、ロボの電源をOFFし再度ONしたのだが「こんにちは」と言ってくれない。
どうやらロボとPCをUSB接続したままでは、MotionWorksの通信を切ってもロボがスタンドアロン状態にならないらしい。そういえば、USBケーブルをPCに接続した途端にロボの電源が自動ONする。USB接続優先なんだろう。
USBケーブルを外してからロボを電源ONすると、無事ご挨拶してくれました。(笑)
|
初期化.RM4(オリジナル)

黄枠:自由歩行用変数の割当てと初期化
茶枠:X軸とY軸ジャイロ補正用変数の割当てと初期化
茶枠に続くP0は基準姿勢モーションだが、サーボON処理は見当たらない
初期化.RM4(編集後)

紫枠:サーボON/OFF変数の初期化(サーボOFF)
ピンク枠:Z軸ジャイロ補正用変数の割当てと初期化
赤枠:発声処理
操作マップのモーションファイル構成を編集

- 初期化モーション・ファイルの指定箇所が緑枠内
- コントローラ操作の指定が橙枠内(自由歩行.RM4の指定を削除)
- UART経由の指定が青枠内
|