我不明白爲什麼這段代碼無法運行。我正在爲我的Zero Robotics團隊編寫移動代碼,而我目前的系統是將速度目標設置爲距目標位置每個初始距離的距離係數。我不是在尋找對代碼的批評,但我很想理解爲什麼絕對沒有發生什麼事當我運行這段代碼時 - 至少我希望發生某些事情。球只坐在那裏,什麼都不做。 零機器人運動代碼不起作用
float tarPos[3];
float currDist[3];
float currPos[3];
float initPos[3];
float initDist[3];
float tarVelo[3];
float myZRState[12];
float powfResult[3];
void init()
{
api.getMyZRState(myZRState);
tarPos[0]=0.5f;
tarPos[1]=0.0f;
tarPos[2]=0.5f;
}
void moveTo(float target[3])
{
api.getMyZRState(myZRState);
currPos[0]=myZRState[0];
currPos[1]=myZRState[1];
currPos[2]=myZRState[2];
currDist[0]=tarPos[0]-currPos[0];
currDist[1]=tarPos[1]-currPos[1];
currDist[2]=tarPos[2]-currPos[2];
//tarVelo[0]=(100)*(currDist[0]);
//tarVelo[1]=(100)*(currDist[1]);
//tarVelo[2]=(100)*(currDist[2]);
tarVelo[0]=powfResult[0]*currDist[0];
tarVelo[1]=powfResult[1]*currDist[1];
tarVelo[2]=powfResult[2]*currDist[2];
api.setVelocityTarget(tarVelo);
//DEBUG (("powf result 1, powf result 2, powf result 3, init dist 1, init dist 2, init dist 3 \t %f %f %f %f %f %f" , powfResult[0] , powfResult[1] , powfResult[2] , initDist[0] , initDist[1] , initDist[2]));
}
void loop()
{
if (api.getTime()==0)
{
api.getMyZRState(myZRState);
initPos[0]=myZRState[0];
initPos[1]=myZRState[1];
initPos[2]=myZRState[2];
initDist[0]=tarPos[0]-initPos[0];
initDist[1]=tarPos[1]-initPos[1];
initDist[2]=tarPos[2]-initPos[2];
if (initDist[0]==0)
powfResult[0]=0;
else
powfResult[0]=(0.1508*(powf(initDist[0] , -0.56)));
if (initDist[1]==0)
powfResult[1]=0;
else
powfResult[1]=(0.1508*(powf(initDist[1] , -0.56)));
if (initDist[2]==0)
powfResult[2]=0;
else
powfResult[2]=(0.1508*(powf(initDist[2] , -0.56)));
}
moveTo(tarPos);
}
編輯:發現的解決方案!我把這個交給了我的學校的編程專家(他的名字是布萊斯,你可能想在將來留意他,完全是天才),還有我的兼職老師,他們發現需要有一個[代碼] initDist [/ code]內的[code] powfResult [/ code]初始化的絕對值。謝謝你的幫助!
什麼也沒有發生!那麼這段代碼沒有'main()'。我的意思是你應該顯示你期望的結果,並顯示完整的相關代碼。 – deepmax
我不認爲你把機器人*開啓了*? – WhozCraig
可能是你最好在零機器人網站上從某人那裏接受哈囉?我剛剛下載了教程,它也沒有'main()'。瞭解外部掛鉤會很有幫助,並且可能需要這些神祕的「IDE」。你有什麼是源的一部分,而不是一個程序。 – 2013-09-27 17:06:33