Python Myro编程-使机器人在看到障碍物时停止

Python Myro编程-使机器人在看到障碍物时停止,python,robotics,myro,Python,Robotics,Myro,我正在使用scribbler机器人并用Python编写代码。我试图让它在遇到障碍时停下来 所以我为左侧障碍物传感器、中央障碍物传感器和右侧障碍物传感器创建了变量 left = getObstacle(0) center = getObstacle(1) right = getObstacle(2) 然后是if语句 if (left < 6400 & center < 6400 & right < 6400): forwa

我正在使用scribbler机器人并用Python编写代码。我试图让它在遇到障碍时停下来

所以我为左侧障碍物传感器、中央障碍物传感器和右侧障碍物传感器创建了变量

    left = getObstacle(0)
    center = getObstacle(1)
    right = getObstacle(2)
然后是if语句

if (left < 6400 & center < 6400 & right < 6400):
        forward(1,1)
    else:
        stop()
为什么我的机器人没有反应?当我将Python代码放入shell时,它没有显示任何错误,但是我的机器人没有发生任何事情

编辑:

一些代码更改。到目前为止,机器人会移动,但不会停止。我的if和else语句是否不正确

center = getObstacle(1)
def main():


    if (center < 5400):
        forward(0.5)
    else:
        stop()
center=Get障碍物(1)
def main():
如果(中心<5400):
前进(0.5)
其他:
停止()
&

所以你的情况应该是:

if (left < 6400 and center < 6400 and right < 6400):
    forward(1,1)
else:
    stop()
if(左<6400,中<6400,右<6400):
前进(1,1)
其他:
停止()

听起来您的原始代码很接近:

def main():
    while True: 
        left = getObstacle(0)
        center = getObstacle(1)
        right = getObstacle(2)
        #lir = getIR(0)
        #rir = getIR(1)
        if (left < 6400 and center < 6400 and right < 6400):
            forward(1, 0.1)
        else:
            stop()
            break
def main():
尽管如此:
左=获取障碍物(0)
中心=障碍物(1)
右=获取障碍(2)
#lir=getIR(0)
#rir=getIR(1)
如果(左侧<6400,中心<6400,右侧<6400):
前进(1,0.1)
其他:
停止()
打破
该循环同时测量
左侧
中间
右侧
,并在每次循环中执行比较。我修改了对
forward
的调用,使其在进行更多测量之前仅移动十分之一秒。此外,当条件不满足时,机器人和回路都将停止


顺便说一句,您似乎没有使用
lir
rir

只是尝试了这个。问题是,由于某种奇怪的原因,我的障碍物传感器不再工作。我不知道发生了什么事。当我写入“传感器”时,我的障碍物值显示为0。它昨天起作用了…这是你的实际缩进吗?您所写的内容永远不会退出
,而为True:
我在编辑器中更正了缩进。但是它仍然不起作用。那么你能纠正你的问题,让我们看看你正在运行的程序看到了什么吗?我将编辑我的问题,并将修改后的代码放入其中。我摆脱了while true:现在我正试图用中央(getbarriend(1))传感器来实现这一点。机器人移动,但它不会停止。查看Myro文档,它看起来像是向前移动,需要两个参数。那么
forward(0.5)
有什么作用呢?我非常感谢您的帮助。现在我的机器人电池没电了,所以他们正在充电。但我在印花布的模拟中试过了,它并没有停在墙边。它可能只是模拟,但到目前为止,它似乎不起作用。电池完全充电后,我将再次测试并报告。到目前为止,我只能运行模拟,但它似乎仍然在模拟中撞到墙,并且速度非常慢,为0.1,因此我将其更改为0.5。也许是因为我把时间改成了0.5它把程序搞砸了?模拟不是100%准确,因此此代码可以工作。我只需要这些电池充电。。我感谢你的帮助。
def main():
    while True: 
        left = getObstacle(0)
        center = getObstacle(1)
        right = getObstacle(2)
        #lir = getIR(0)
        #rir = getIR(1)
        if (left < 6400 and center < 6400 and right < 6400):
            forward(1, 0.1)
        else:
            stop()
            break