【发布时间】:2013-02-01 12:20:50
【问题描述】:
此代码用于使用 C 使模拟器中的机器人在特定路径中移动。while 循环 的代码是我需要进行更改的地方,我是想知道如何更改代码以使机器人沿直线移动并停止,以及如何使用“定时距离”使其沿三角形移动。
while (1) {
sprintf(buf, "M LR 60 -60\n");
write(sock, buf, strlen(buf));
memset(buf, 0, 80);
read(sock, buf, 80);
}
M LR 是机器人左右电机的名称(机器人有两个电机使其移动),60 和 -60 是它们的速度。这段代码使机器人旋转。
完整代码在此链接:[C Robot]
如何使这段代码工作?
int k = 1;
for (k = 1; k < 3 ; k++){
sprintf(buf, "M LR 20 10\n");
write(sock, buf, strlen(buf));
memset(buf, 0, 80);
read(sock, buf, 80);
}
for (k=3; k > 3; k++) {
sprintf(buf, "M LR 0 0\n");
write(sock, buf, strlen(buf));
memset(buf, 0, 80);
read(sock, buf, 80);
}
【问题讨论】:
-
您的标题确实与您的问题所说的不符。
-
您的题名好像不对。你只是想用做同样事情的不同结构替换 while 循环,还是想实现完全不同的东西?!
-
使用当前的 for 循环:
for (k = 3; k > 3; k++)=> 因为 k 在进入循环之前被分配了 3,所以测试k > 3从一开始就为假,并且循环被简单地跳过。此外,由于“M LR”序列后面的数字给出了应用于电机的速度,我想如果你想让你的机器人移动,你应该设置正值。