Myro编程 - 让机器人在看到和遇到障碍时停止

时间:2014-10-12 16:22:02

标签: python robotics myro

我正在使用一个scribbler机器人并用Python编写代码。当它看到一个障碍时,我试图阻止它

因此,我为左侧障碍物传感器,中央障碍物传感器和右侧障碍物传感器

创建了变量
    left = getObstacle(0)
    center = getObstacle(1)
    right = getObstacle(2)

然后是if语句

if (left < 6400 & center < 6400 & right < 6400):
        forward(1,1)
    else:
        stop()

基本上这个想法是,如果传感器读数低于6400,它应该向前移动,否则,它应该停止。在使用senses函数测试scribbler时,我注意到当我将机器人放在一个物体附近时,它会读到6400左右。

以下是main()代码

的内容
def main():
      while True: 
        left = getObstacle(0)
        center = getObstacle(1)
        right = getObstacle(2)
        lir = getIR(0)
        rir = getIR(1)
    if (left < 6400 & center < 6400 & right < 6400):
        forward(1,1)
    else:
        stop()

为什么我的机器人不响应?当我把它放入shell时,Python代码没有显示任何错误,但我的机器人没有发生任何事情。

编辑:

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

center = getObstacle(1)
def main():


    if (center < 5400):
        forward(0.5)
    else:
        stop()

2 个答案:

答案 0 :(得分:0)

&Bitwise operator

andlogical AND operator

所以你的病情应该是:

if (left < 6400 and center < 6400 and right < 6400):
    forward(1,1)
else:
    stop()

答案 1 :(得分:0)

听起来你和原始代码很接近:

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

此循环测量leftcenterright 每次循环执行比较。我已将forward的调用修改为仅在进行更多测量之前移动十分之一秒。此外,当不满足条件时,机器人和环路都会停止。

顺便说一下,您似乎没有使用lirrir