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.

Другие вопросы по тегам