我有一段代码显示了一些奇怪的行为。当将代码排除在for循环之外时,代码的工作原理是一样的,但是一旦我将它放置在for循环中,它就会一次又一次地重复相同的值。
const double *north = cp->getValues();
angle1 = atan2(north[1], north[2]);
bearing = (angle1 - 1.5708) / M_PI * 180.0;
std::cout<<"Bearing inside : "<<bearing<<std::endl;
if (bearing < 0.0)
bearing = bearing + 360.0;
t = abs(bearing - turn);这部分代码应该在对象每次旋转时更新*north。每当我将这些代码保存在循环之外时,就会发生这种情况。但是,如果代码保存在如下所示的for循环中,那么*north的值将保持不变。
for(int i=0;i<100;i++)
{
double t_modifier = (180.0 - abs(t)) / 180.0;
double threshold = 2.0;
double Speedleft = 1.0;
double Speedright = 1.0;
int identifier;
if(int(t)<0){
Speedleft = -1;
}
else if(int(t)>0){
Speedright = -1;
}
leftSpeed = threshold * Speedleft;
rightSpeed = threshold * Speedright;
{
wheels[0]->setVelocity(leftSpeed);
wheels[1]->setVelocity(rightSpeed);
wheels[2]->setVelocity(leftSpeed);
wheels[3]->setVelocity(rightSpeed);
}
const double *north = cp->getValues();
angle1 = atan2(north[1], north[2]);
bearing = (angle1 - 1.5708) / M_PI * 180.0;
std::cout<<"Bearing inside : "<<bearing<<std::endl;
if (bearing < 0.0)
bearing = bearing + 360.0;
t = abs(bearing - turn);
}发布于 2021-03-11 08:10:24
https://stackoverflow.com/questions/66534802
复制相似问题