[V-REP] シミュレーションステップ数をカウントする
simGetScriptExecutionCount
simGetScriptExecutionCount()
返り値としてスクリプトが呼ばれた回数を返します。
注意点
注意点としてはシミュレーション1ステップで1回というわけでなく、それぞれのパートで一回と数えているところです。
次の様なプログラムを実行してみるとよく分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
if (sim_call_type==sim_childscriptcall_initialization) then handle_console=simAuxiliaryConsoleOpen("console_name",100,1) simAuxiliaryConsolePrint(handle_console,"initialization:" .. simGetScriptExecutionCount() .. "\n") end if (sim_call_type==sim_childscriptcall_actuation) then simAuxiliaryConsolePrint(handle_console,"actuation:" .. simGetScriptExecutionCount() .. "\n") end if (sim_call_type==sim_childscriptcall_sensing) then simAuxiliaryConsolePrint(handle_console,"sensing:" .. simGetScriptExecutionCount() .. "\n") end if (sim_call_type==sim_childscriptcall_cleanup) then end |
結果:
1 2 3 4 5 6 7 8 9 10 |
initialization:0 actuation:1 sensing:2 actuation:3 sensing:4 actuation:5 sensing:6 actuation:7 sensing:8 actuation:9 |
カウント数を任意の値にセット
simSetScriptAttributeを使うことで、カウント数を好きな値に設定できます。
例えば1000から始めたい場合には次のようにします。
1 |
simSetScriptAttribute(sim_handle_self,sim_scriptattribute_executioncount,1000) |
actuationとsensingとで1回としたい場合
次のように適当な変数に現在のexecutioncountを格納して、sensingでその値に設定してやるだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
if (sim_call_type==sim_childscriptcall_initialization) then handle_console=simAuxiliaryConsoleOpen("Cuboid#0",100,1,{300,500},{200,300}) simAuxiliaryConsolePrint(handle_console,"initialization:" .. simGetScriptExecutionCount() .. "\n") end if (sim_call_type==sim_childscriptcall_actuation) then current_execution_count=simGetScriptExecutionCount() simAuxiliaryConsolePrint(handle_console,"actuation:" .. simGetScriptExecutionCount() .. "\n") end if (sim_call_type==sim_childscriptcall_sensing) then simSetScriptAttribute(sim_handle_self,sim_scriptattribute_executioncount,current_execution_count) simAuxiliaryConsolePrint(handle_console,"sensing:" .. simGetScriptExecutionCount() .. "\n") end if (sim_call_type==sim_childscriptcall_cleanup) then end |
コメントを残す