Posted on 2014/07/22
コマンド送受信速度のチューン。
1)全てのコードを作り直した。
frameRateを500に変更。
3G回線にて、ロボット、クライアント、サーバーでの遅延がそれぞれ10msec前後。
2)未処理
走行用コマンドを2bytまで減らし制御信号本体を4bytとする。(現在6byt)
3)疑問点>
Processingのdraw関数内での時間計測の結果、
ソース内計測ポイント1、3では0msec
計測ポイント0、2は2>0で0+2がAve12msecくらいでふらつく。
なぜ計測ポイント0が大きい値を示し且つ値がふらつくのか不明。
(本来なら限りなく0でふらつかないはず)
なにかの割り込み処理が発生しているのか?framerateによる調整がはいっているのか?
void draw(){
//計測ポイント0
println("step0:"+(millis()-time_2));
time_2=millis();
if(DEBUG==0){
getRiftInput();
getJoystickInput();
}else{
getDebugInput();
}
//計測ポイント1
println("step1:"+(millis()-time_2));
time_2=millis();
if(myClient.active()!=false){
command_byte[0]=0;//user:0
command_byte[1]=(byte)USER_ID;//userid
command_byte[2]=1;//command
command_byte[3]=inttobyte(riy);//rift y
command_byte[4]=inttobyte(rix);//rift x
command_byte[5]=inttobyte(jlif);
command_byte[6]=inttobyte(jlib);
command_byte[7]=inttobyte(jrif);
command_byte[8]=inttobyte(jrib);
command_byte[9]=comnum++;
command_byte[10]=-128;
if(comnum>=127)
comnum=0;
myClient.write(command_byte);
while(true){
myClient.readBytes(rcv_ack);
if(rcv_ack[0]==2){
println("ACK");
rcv_ack[0]=0;
//計測ポイント2
println("step2:"+(millis()-time_2));
time_2=millis();
break;
}
}
}else{
println("client err");
try{
myClient= new Client(this,SERVER_IP,8080);
myClient.write(START_COMMAND_BYTE);
}catch (Exception e){
println("errnull");
}
}
//計測ポイント3
println("step3:"+(millis()-time_2));
time_2=millis();
}
1)全てのコードを作り直した。
frameRateを500に変更。
3G回線にて、ロボット、クライアント、サーバーでの遅延がそれぞれ10msec前後。
2)未処理
走行用コマンドを2bytまで減らし制御信号本体を4bytとする。(現在6byt)
3)疑問点>
Processingのdraw関数内での時間計測の結果、
ソース内計測ポイント1、3では0msec
計測ポイント0、2は2>0で0+2がAve12msecくらいでふらつく。
なぜ計測ポイント0が大きい値を示し且つ値がふらつくのか不明。
(本来なら限りなく0でふらつかないはず)
なにかの割り込み処理が発生しているのか?framerateによる調整がはいっているのか?
void draw(){
//計測ポイント0
println("step0:"+(millis()-time_2));
time_2=millis();
if(DEBUG==0){
getRiftInput();
getJoystickInput();
}else{
getDebugInput();
}
//計測ポイント1
println("step1:"+(millis()-time_2));
time_2=millis();
if(myClient.active()!=false){
command_byte[0]=0;//user:0
command_byte[1]=(byte)USER_ID;//userid
command_byte[2]=1;//command
command_byte[3]=inttobyte(riy);//rift y
command_byte[4]=inttobyte(rix);//rift x
command_byte[5]=inttobyte(jlif);
command_byte[6]=inttobyte(jlib);
command_byte[7]=inttobyte(jrif);
command_byte[8]=inttobyte(jrib);
command_byte[9]=comnum++;
command_byte[10]=-128;
if(comnum>=127)
comnum=0;
myClient.write(command_byte);
while(true){
myClient.readBytes(rcv_ack);
if(rcv_ack[0]==2){
println("ACK");
rcv_ack[0]=0;
//計測ポイント2
println("step2:"+(millis()-time_2));
time_2=millis();
break;
}
}
}else{
println("client err");
try{
myClient= new Client(this,SERVER_IP,8080);
myClient.write(START_COMMAND_BYTE);
}catch (Exception e){
println("errnull");
}
}
//計測ポイント3
println("step3:"+(millis()-time_2));
time_2=millis();
}