У меня есть проект робототехники, в основном проблема с отслеживанием пути.
В ПК алгоритм генерации ссылок реализован в Python3.65. Алгоритм берет данные GPS внутри помещений и использует эти постоянно обновляемые данные для расчета контрольного пути для автомобиля-робота. Конечно, алгоритм работает в
в то время как True:
....
фреймворк.
Алгоритм может работать хорошо, только если частота дискретизации достаточно высока, скажем, 0,001 с.
Однако проблема заключается в том, что после вычисления эталонного пути информация о пути должна быть записана в последовательный порт ПК побайтно через Serial.write ().
Эта функция serial.write () по-прежнему является циклом for. И этот процесс записи очень медленный (более 0,02 с для 16 байтов). Если цикл for включен в структуру while True: что-то вроде:
while True:
Data = Ref_generation()
Bytes_Full = Float_2_Bytes_List(Data)
for ele in Bytes_Full:
Serial.write(ele) # VERY SLOW!!!
sleep(0.001)
Тогда, Данные не могут быть правильно рассчитаны, так как период цикла намного длиннее, чем 0,001 с.
В двух словах, как я могу отделить алгоритм быстрого вычисления от медленного serial.wtite ()? Я пробовал многопоточность, но не работает.
Любая помощь будет оценена, большое спасибо!