Myro - 根据用户输入的半径移动的圆形机器人
我正在使用一个Scribbler机器人。
在Myro库里似乎没有一个函数可以让机器人以用户指定的半径转圈。
这是我能了解到的情况:
机器人的左右轮之间的距离是6英寸。
所以,左轮应该行驶的距离是2(pi)(半径+6)。
而右轮应该行驶的距离是2(pi)(半径-6)。
(我觉得是这样的)
让机器人转圈其实很简单。我可以直接使用motors
函数并调用:
motors(1, 0)
这意味着左轮在转动,而右轮停止,这样就能有效地转圈。
我遇到的问题是如何指定圆的半径,并让它按照那个半径转圈。
这是我写的代码:
#Practice for Circle
def goCircle(int radius):
pi = 3.14159265359
Left = 2(pi)(radius + 6)
Right = 2(pi)(radius - 6)
turnRight(1,radius/360.0)
一般来说,turnRight
函数会有这些参数:turnRight(速度, 时间)
。所以你需要指定机器人想要的速度和想要行驶的秒数。我把速度设置为1,并尝试把半径/360放在时间变量里。
但是我得到了这个错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<string>", line 4, in goCircle
TypeError: int is not callable
我还尝试了motors(left, right)
,结果也得到了同样的错误:
#Practice for Circle
def goCircle(radius):
pi = 3.14159265359
Left = 2(pi)(radius + 6)
Right = 2(pi)(radius - 6)
motors(left,right)
我该怎么做才能让这个工作呢?
1 个回答
0
你遇到错误是因为你的语法不对。你不能这样写:
2(pi)(radius + 6)
你需要在各个部分之间加上 *
符号:
2*(pi)*(radius + 6)
解释器会把你写的当成是在尝试把数字当作函数来调用,比如 2()
。
另外,如果你使用 import math
,你就可以直接使用内置的 math.pi。