Python Myro编程-使机器人在看到障碍物时停止
我正在使用scribbler机器人并用Python编写代码。我试图让它在遇到障碍时停下来 所以我为左侧障碍物传感器、中央障碍物传感器和右侧障碍物传感器创建了变量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
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