首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Myro编程-当机器人看到障碍时,它就会停下来。

Myro编程-当机器人看到障碍时,它就会停下来。
EN

Stack Overflow用户
提问于 2014-10-12 16:22:01
回答 2查看 2.8K关注 0票数 0

我使用的是一个涂鸦机器人,用Python编写代码。当它看到障碍的时候我想让它停下来

因此,我为左边的障碍物传感器,中间的障碍物传感器和右边的障碍物传感器创建了变量。

代码语言:javascript
复制
    left = getObstacle(0)
    center = getObstacle(1)
    right = getObstacle(2)

然后是if语句

代码语言:javascript
复制
if (left < 6400 & center < 6400 & right < 6400):
        forward(1,1)
    else:
        stop()

基本的想法是,如果传感器的读数小于6400,它应该向前移动,否则,它应该停止。当我用senses函数测试画写器时,我注意到当我把机器人靠近一个物体时,它会读到大约6400。

下面是我对main()代码的理解

代码语言:javascript
复制
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()

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

编辑:

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

代码语言:javascript
复制
center = getObstacle(1)
def main():


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

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-12 21:10:39

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

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2014-10-12 16:44:33

&位算子

and逻辑和运算符

所以你的情况应该是:

代码语言:javascript
复制
if (left < 6400 and center < 6400 and right < 6400):
    forward(1,1)
else:
    stop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26327267

复制
相关文章

相似问题

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