Myro - 根据用户输入的半径移动的圆形机器人

0 投票
1 回答
3013 浏览
提问于 2025-04-27 14:02

我正在使用一个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。

撰写回答