Прошло еще две недели, как продвижение в тестах?
Печально.
Давайте я объясню что такое мотор компенсация.
MotorCompensation: это
Accel = Accel умноженное на какое то число
Decel = Decel умноженное на какое то число
вот тут
- Code: Select all
CompMix:
M1Accel = M1Accel*CompBoost
M2Accel = M2Accel*CompBoost
M1Decel = M1Decel*CompBoost
M2Decel = M2Decel*CompBoost
почему я говорю что MotorCompensation работает не правильно, а вот по этому
- Code: Select all
IF (uncompensatedThrottle > 50 AND uncompensatedSteering < 50) THEN
CompBoost = (AccelBoost*8)/10
ELSE
CompBoost = AccelBoost
END IF
что такое uncompensatedThrottle и uncompensatedSteering это в блоке MotorCompensation:
- Code: Select all
MotorCompensation:
uncompensatedThrottle = Throttle
uncompensatedSteering = Steering
подставьте любые значения Throttle Steering и посчитайте чему будет равен CompBoost. После этого поймете при каком положении джойстика у вас происходит MotorCompensation.
А самое веселое вы можете сделать вот так, добавить вот эту строчку в конце блока MixAccel:
- Code: Select all
PRINT (" M1Decel " , M1Decel ," M1Accel ", M1Accel," M2Decel " , M2Decel ," M2Accel ", M2Accel, "\n")' add before RETURN 'End of "MixAccel
'RETURN 'End of "MixAccel:"
поднять кресло (чтоб колеса свободно вращались) и двигать джойстиком. Смотреть в программу Roboteq и наблюдать как ваши базовые параметры
- Code: Select all
Accel = 10000
Decel = 12000
улетают в небеса. Но ваше кресло не нагружено, колеса вращаются в воздухе и еще MotorCompensation не работает только когда вы движетесь налево. Привет Ленни. Я сколько времени говорил что компенсация работает не правильно.
Эту строчку нужно исправить
- Code: Select all
IF (uncompensatedThrottle > 50 AND uncompensatedSteering < 50) THEN
на это
- Code: Select all
IF abs(uncompensatedThrottle) > 50 AND abs(uncompensatedSteering) < 50 THEN
Хотя бы компенсация будет работать только тогда когда делается разворот, как и было задумано. Но это все равно проблему не решает и вот почему
раздел
- Code: Select all
MixAccel:
IF AccelBoost > 1 THEN
GoSub TurnMix
GoSub CompMix
END IF
С начало делается TurnMix: там происходит умножение разгона и торможения
- Code: Select all
M1Accel = M1Accel*AccelBoost
M2Accel = M2Accel*AccelBoost
M1Decel = M1Decel*AccelBoost
M2Decel = M2Decel*AccelBoost
Потом делается CompMix где так же происходит умножение разгона и торможения НО только на уже увеличенное значение Accel и Decel от TurnMix
- Code: Select all
M1Accel = M1Accel*CompBoost
M2Accel = M2Accel*CompBoost
M1Decel = M1Decel*CompBoost
M2Decel = M2Decel*CompBoost
Сами в код посмотрите!
Если считаете что все не так, то эта строчка отрезвит вас
- Code: Select all
PRINT (" M1Decel " , M1Decel ," M1Accel ", M1Accel," M2Decel " , M2Decel ," M2Accel ", M2Accel, "\n")' add before RETURN 'End of "MixAccel
'RETURN 'End of "MixAccel:"