プログラムのデバッグ

 プログラムのデバッグ機能を使えばロビのプログラムをブロック単位で実行したりブレークポイントを定義してプログラムの実行を途中で止めたりする事ができます。
 またブロックで使われているレジスターの内容を参照したり変更する事ができます。
 なおデバッグ機能はロビ2のプログラムに対しては行う事はできません。



 ロビのプログラムを開いた状態でデバッグコマンドを実行するとデバッグダイアログが表示されます。
 ダイアログのタイトルバーには現在デバッグ中のプログラム名が表示されます。
 ダイアログのリストにプログラムが表示されます。

 リストはブロック単位で表示されブロック番号に続いてブロックの先頭アドレスが16進数で表示されます。
 続いてブロック名が表示されます。
 ブロック名はmeditタグに記述された文字列がそのままが表示されます。
 最後は"End of program"というブロック名が自動的に付けられます。

 実行ボタン
  プログラムの実行が開始されます。
  プログラムが途中で止まっている場合でも開いているプログラムの最初からの実行されます。

 停止ボタン
  プログラムの実行が停止されます。

 継続実行ボタン
  プログラムが停止した位置から実行が再開されます。
  ブレークポイントで止まった時やコールされたプログラムを実行を続ける場合に使用します。

 ステップ実行ボタン
  プログラムが停止した位置から1ブロックだけ実行されます。
  プログラムの動きを細かく見たい場合はこのボタンでプログラムを動かしていきます。

 ブレークポイント全解除ボタン
  ブレークポイントを全部解除します。
  ブレークポイントについてはこちらを参照してください。

 ブレークポイント設定/解除ボタン
  ブレークポイントを設定または解除します。
  ブレークポイントについてはこちらを参照してください。

 レジスター参照/変更ボタン
  現在止まっているブロックのレジスターの値を参照します。
  変更できるレジスターは違う値に変更する事もできます。
  ブレークポイントについてはこちらを参照してください。

 コールプログラムもデバッグする
  このチェックを付けるとコールプログラムを呼び出す度にデバッグするかどうかの質問をしてきます。
  コールプログラムのデバッグについてはこちらを参照してください。

 閉じるボタン
  本ダイアログを閉じてデバッグモードを終了します。
  本プログラムの終了時点でダイアログが開いている場合は本ダイアログは自動的に閉じられます。

ブレークポイント

 ブレークポイントはプログラムを任意のブロックで止める機能です。
 ブレークポイントが設定されているブロックはブロック番号の前にアスタリスク(*)が表示されます。

 ブレークポイントを設定する場合はリストのいずれかの行を選択(マウス左クリック)しておいて設定/解除ボタンを押します。
 その行が含まれるブロックにブレークポイントが設定されます。

 解除する時はブレークポイントが設定されているブロックに含まれている行を選択しておいて設定/解除ボタンを押します。
 ブレークポイントで止まっている場合はその状態で設定/解除ボタンを押すと解除する事ができます。



 一度設定されたブレークポイントは記録されていますので次回のデバッグから上記のダイアログが表示されます。
 はいを答えると前回設定されていたブレークポイントがそのまま使われます。
 いいえを答えると設定されていたブレークポイントの記録がクリアされてブレークポイントが設定されていない状態からデバッグが始まります。
 デバッグ対象のプログラムを変えてもこの質問はされますので前回と違うプログラムをデバッグする場合はいいえを答えてください。

 前回のブレークポイントの設定がどのプログラムに対して設定されたものか不確かな場合ははいを応えてブレークポイントの位置を確認してから違った場合は全解除ボタンでブレークポイントをクリアしてください。

 なおブレークポイントはコールプログラムのレベル(多重にプログラムが呼ばれた場合)毎に記録されていますのでそのレベルでブレークポイントが設定されている場合はこの質問が行われます。

レジスータ

 ブロックで使われるレジスターの値を参照する事ができます。
 またレジスターによってはその値を変更する事もできます。

 レジスターの参照/変更はブレークポイントと同様そのブロックに含まれる行を選択しておいて参照変更ボタンを押して下さい。



 そのブロック内で使われるレジスターの値が最大2個表示されます。
 プログラムでmem_rタグで読み込まれるレジスターが表示対象になります。

 レジスターのアドレスが16進数で表示されその右にレジスターの値が表示されます。
 レジスターの値が変更可能な場合は背景が白、変更できない場合は灰色で表示されます。
 変更する場合はマウスクリックで値を選択してキーボードで値を修正してください。
 修正した値をプログラムに反映する場合は変更ボタンを押して本ダイアログを閉じてください。



 16進数で表示チェックを付けるとレジスターの値が16進数で表示されます。
 16進数で表示している時は変更する場合も16進数の値に修正してください。

 本機能で参照できるレジスターは以下の通りです。
  0x0080  現在時間
  0x0090  電圧
  0x0084  ランダム値(変更可能)
  0x0D82〜0x0DA9  サーボ位置
  0x0e12  左人感センサー
  0x0e13  右人感センサー
  0x0e5a  音声認識ステータス
  0x0e5c  音声認識番号(変更可能)
  0x0e80〜0x0fd0  汎用レジスター(変更可能)
  0x0f00  初期化フラグ(変更可能)
  0x0f82  ポーズ
  0x0f83  向き
  0x0f9e  左人感センサーしきい値
  0x0fa2  右人感センサーしきい値
  0x0ff0  性格(初期化フラグ)
  0x0ff1  性格値

 ランダム値は通常参照する毎に違った値が取得されますがデバッグする場合は同じ値が取得されます。
 変更した場合はプログラムで変更した値が使われます。

コールプログラム

 コールプログラムもデバッグするにチェックをしておくとコールされるプログラムをデバッグする事ができます。



 チェックをした状態でコールプログラムの命令が実行されると上記のダイアログが表示されます。
 最初にプログラム名が表示されるのでこのプログラムをデバッグする場合ははいを答えます。
 はいを答えるとコールされたプログラムリストがコールされたプログラムが表示されます。
 継続実行ボタンまたはステップ実行ボタンを押してコールプログラムを開始してください。
 またコールプログラムにもブレークポイントを置く事ができます。
 最初のプログラムと同様の操作でブレークポイントを設定してください。
 なおこの時、実行ボタンを押すと最初のプログラムから開始されるので注意してください。

 表示されたコールプログラムをデバッグしない場合はいいえを答えます。
 デバッグダイアログに表示されずにそのままコールプログラムが実行されます。

 キャンセルを答えるとコールプログラムもデバッグするのチェックが外されて次回からこの質問は行われません。
 再びコールプログラムをデバッグする場合はコールプログラムもデバッグするをチェックしてください。

 多重構造のコールプログラム(コールプログラム内からその下の階層のプログラムをコールする)もデバッグする事ができます。
 ブレークポイントは各階層毎に管理されます。
 その階層のブレークポイントが設定されている場合は最初のプログラムと同様に記録されたブレークポイントをそのまま使うかどうか聞いてきます。
 同じレベルでもプログラムが違えば前回設定されたブレークポイントは使えませんのでいいえを答えてください。

 コールプログラムをデバッグするかどうかの質問に対していいえを答えた場合はその中からコールされたプログラムに対してもデバッグは行われません。

リモート接続時のデバッグ方法

 USBやFlashAirでリモート接続したロビを動かしながらデバッグする事ができます。
 ロビのリモート接続については
こちらを参照してください。
 なおリモート送信されるのはポーズ命令(含LED制御)とLEDの制御レジスターへの書込み命令で音声再生はロビでは行われません。

 以下の操作でリモート接続時のデバッグが行えます。

 1. リモート接続の設定をする
  設定メニューのパラメーター設定コマンドで設定ダイアログを開きます。



  接続先をUSB接続またはFlashAirにします。
  非脱力をチェックします。

  リモート接続フォルダー変更でロビのSDカードのADDONフォルダーのREMOTE.LOGを指定します。
  この時USBにロビをつないでおく必要があります。
  なおFlashAirで接続する場合はこの設定の必要はありません。

 2. リモート接続を開始する
  ファイルメニューのリモート開始コマンドまたはツールバーのでロビとのリモート接続を開始します。
  ロビでリモート接続が開始されるとロビが「準備OK」と言います。

 3. ロビとシミュレーション画像の同期をとる
  ロビが急に立ち上がったりしないように両方の姿勢を一致させておく必要があります。
  コントロールダイアログのキャプチャーボタンでシミュレーション画像をロビに合わせます。
  またコントロールダイアログのリモート送信ボタンでロビの姿勢をシミュレーション画像に合わせても構いません。
  標準のロビのプログラムはロビの現在の姿勢を判断してそれに合わせてプログラムを動かしますが姿勢判断をしないプログラムではロビの姿勢を作ったモーションに合わせておく必要があります。

 4. デバッグするプログラムを開く
  ファイルメニューのプログラムを開くコマンドまたはツールバーのでロビのプログラム(.RM4)を読込みます。

 5. デバッグダイアログを開く
  プログラムメニューのプログラムのデバッグコマンドまたはツールバーのでデバッグダイアログを開きます。



  コールプログラムをデバッグする場合はコールプログラムをデバッグするもチェックしておいてください。

 6. デバッグを開始する
  ステップ実行ボタンを押してデバッグを開始します。
  ポーズ命令があるとロビにポーズデータが転送されロビが動きます。
  この時連続してポーズが送られないため起き上がりや歩行プログラムは倒れるポーズは手でロビを支えてください。。

  実行ボタンや継続実行ボタンでもロビにポーズデータが転送されますがロビが非同期で動いているためポーズ間の時間が短い時はロビでポーズが再現されない場合があります。

 7. デバッグを終了する



  ステップ実行の場合プログラムを最後でこのメッセージが表示されます。
  再度ステップ実行ボタンを押すと最初からプログラムをデバッグできます。
  デバッグを終了する時はデバッグダイアログの閉じるボタンを押して下さい。

  ファイルメニューのリモート終了コマンドまたはツールバーのでリモート接続を終了します。
  リモート接続が終了するとロビはアイドル状態(目が点滅)に戻ります。
  なおでプログラム終了メッセ―ジが表示された時、本プログラムを終了してもリモート接続は解除されます。


 実際にこのプログラムを動かした動画です。上記のリンクをクリックするとYouTubeに接続します。

 デバッグ機能

 デバッグ機能の活用

 リモート接続デバッグ機能

戻る