Используя формулу одометрии, чтобы выяснить и исправить путь робота

Использование ev3dev и MicroPython.

Я пытаюсь реализовать формулу грубой одометрии, чтобы исправить траекторию движения робота по прямой линии.

Вот мой код Это работает, и все же я не уверен, что в течение нескольких секунд он теряет свою линию, и правильный не может выявить слабину.

#!/usr/bin/env pybricks-micropython 
from pybricks import ev3brick as brick 
from pybricks.parameters import Button, Port, Stop
from pybricks.ev3devices import Motor, GyroSensor
from pybricks.tools import wait
from pybricks.robotics import DriveBase

import math

leftMotor = Motor(Port.B)
rightMotor = Motor(Port.C)

leftMotor.reset_angle(0)
rightMotor.reset_angle(0)

gyro = GyroSensor(Port.S2)
gyro.reset_angle(0)

wheelDiam = 56
wheelDist = 114

speed = 50
angle = 0
change = 0

robot = DriveBase(leftMotor, rightMotor, wheelDiam, wheelDist)
fudge = 0.5
fudge2 = -0.6
calibration = (math.pi * wheelDiam) / 360

while True:
    robot.drive(speed,angle)
    drift = leftMotor.angle() - rightMotor.angle()
    leftCalc = leftMotor.angle() * calibration
    rightCalc = rightMotor.angle() * calibration
    drift2 = (leftCalc - rightCalc) / wheelDist
    superCalc = math.degrees(math.atan(drift2))
    angle = (superCalc * fudge2) 

    print("figures gyro",gyro.angle(),"angle",angle,"super",superCalc)

Я сделал какую-то фундаментальную ошибку в коде здесь? Это работает, но это не так.

0 ответов

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