0

我正在运行代码,一切正常,但 join 方法不起作用。

我必须等待所有线程完成转 90 度

我尝试使用具有不同代码且与 ev3 机器人及其工作无关的 join 方法,但我不明白为什么它不能与 ev3 一起使用。

错误:AttributeError:“线程”对象没有属性“加入”

#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
import threading

# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.


# Create your objects here.
ev3 = EV3Brick()


left_motor = Motor(Port.B)
right_motor = Motor(Port.C)


robot = DriveBase(left_motor, right_motor, wheel_diameter=55.5, axle_track=104)

obstacle_sensor  = UltrasonicSensor(Port.S4)

obstacle_sensor_gyro = GyroSensor(Port.S3)
################################

def check_for_75_angle():
    while True:
        angle = obstacle_sensor_gyro.angle()
        print(angle)
        if angle > 75:
            robot.drive(0, 15)
            break
            


def check_for_90_angle():
    while True:
        angle = obstacle_sensor_gyro.angle()
        if angle == 90:
            break
            

def turn():
    robot.drive(0,80)
    


def main():
    t1 = threading.Thread(target=check_for_75_angle)
    t2 = threading.Thread(target=check_for_90_angle)
    t3 = threading.Thread(target=turn)

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()




while True:
    cm = obstacle_sensor.distance() * 0.1

    if cm < 20:
        obstacle_sensor_gyro.reset_angle(0)

        main()
        print("Finished: 90 angle")

    else:
        robot.drive(20, 0)
    ```
4

0 回答 0