Myro - перемещение робота по кругу в зависимости от радиуса, введенного пользователем
Я использую робота Scribbler.
Кажется, в библиотеке Myro нет функции, которая позволяла бы роботу двигаться по кругу на указанном пользователем радиусе.
Вот что мне удалось собрать
Расстояние между левым и правым колесом робота составляет 6 дюймов.
Таким образом, левое колесо должно двигаться на расстоянии 2(пи)(радиус +6)
И правое колесо должно проехать на расстоянии 2(пи)(радиус-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(speed, time)
Таким образом, вы указываете скорость, с которой вы хотите, чтобы робот двигался, и секунды, в которые вы хотите, чтобы он двигался. Я поставил его на 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 ответ
Вы получаете ошибку из-за вашего синтаксиса. Вы не можете умножить на:
2(pi)(radius + 6)
Вам нужно поставить *
между условиями:
2*(pi)*(radius + 6)
Интерпретатор думает, что вы пытаетесь вызвать int как функцию 2()
,
Кроме того, если вы import math
, вы получаете встроенный math.pi.