首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试让一个墙跟随机器人,但在我的作用域中没有声明的名称有错误,我需要帮助

我正在尝试让一个墙跟随机器人,但在我的作用域中没有声明的名称有错误,我需要帮助
EN

Stack Overflow用户
提问于 2010-03-30 22:49:32
回答 2查看 425关注 0票数 0
代码语言:javascript
复制
#include <iostream>
#include <libplayerc++/playerc++.h>

using namespace std;
int main(int argc, char *argv[])

{
using namespace PlayerCc;  
PlayerClient    robot("localhost");  
BumperProxy      bp(&robot,0);  
Position2dProxy pp(&robot,0);
pp.SetMotorEnable(true);


for(;;)
    double turnrate, speed;
double error;
bool wall;

motor_a_speed(0);
motor_c_speed(0);

while(1) {

    front_bumper = SENSOR_2;
    left_bumper = SENSOR_3;

    if (front_bumper > 2) {

        if (left_bumper < 3) {

            motor_a_speed(5);

            motor_c_speed(drive_speed);
            motor_a_dir(fwd);
            motor_c_dir(fwd);

        }

        else {

            motor_a_speed(drive_speed);

            motor_c_speed(5);
            motor_a_dir(rev);
            motor_c_dir(rev);

        }

    }

    else {

        motor_a_speed(drive_speed);

        motor_c_speed(drive_speed);
        motor_a_dir(brake);
        motor_c_dir(brake);
        mrest(100);

        cputs("bump");

        motor_a_dir(fwd);
        motor_c_dir(rev);
        msleep(450);


        cputs("right");

        motor_a_speed(10);
        motor_a_dir(fwd);
        motor_c_dir(fwd);
        mrest(1300);

    }

    pp.SetSpeed(speed, turnrate);
}
EN

回答 2

Stack Overflow用户

发布于 2010-03-30 22:58:47

考虑到不好的缩进,唯一让我吃惊的是

代码语言:javascript
复制
for(;;;)
double turnrate, speed;

因为for后面没有大括号中的块,所以它的主体是下一条语句。这不是我经常看到的构造,但我相信发生的情况是for语句包含turnratespeed的定义,它们是for语句的本地定义。

票数 5
EN

Stack Overflow用户

发布于 2010-03-30 23:08:25

我已经将源码重新格式化为更易读的版本。有编辑权限的人能用这个代替行动的线人吗?

使用标识,不带大括号的for循环显然是造成麻烦的原因。一个简单的测试(我不知道这是如何工作的)表明for(;;)循环将永远循环,因此OP的程序永远不会做任何有用的事情。它可能应该被删除

代码语言:javascript
复制
#include <iostream>
#include <libplayerc++/playerc++.h>

using namespace std;
int main(int argc, char *argv[])

{
    using namespace PlayerCc;  
    PlayerClient    robot("localhost");  
    BumperProxy      bp(&robot,0);  
    Position2dProxy pp(&robot,0);
    pp.SetMotorEnable(true);


    for(;;)
        double turnrate, speed;
    double error;
    bool wall;

    motor_a_speed(0);
    motor_c_speed(0);

    while(1) {

        front_bumper = SENSOR_2;
        left_bumper = SENSOR_3;

        if (front_bumper > 2) {

            if (left_bumper < 3) {

                motor_a_speed(5);

                motor_c_speed(drive_speed);
                motor_a_dir(fwd);
                motor_c_dir(fwd);

            }

            else {

                motor_a_speed(drive_speed);

                motor_c_speed(5);
                motor_a_dir(rev);
                motor_c_dir(rev);

            }

        }

        else {

            motor_a_speed(drive_speed);

            motor_c_speed(drive_speed);
            motor_a_dir(brake);
            motor_c_dir(brake);
            mrest(100);

            cputs("bump");

            motor_a_dir(fwd);
            motor_c_dir(rev);
            msleep(450);


            cputs("right");

            motor_a_speed(10);
            motor_a_dir(fwd);
            motor_c_dir(fwd);
            mrest(1300);

        }

        pp.SetSpeed(speed, turnrate);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2546135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档