Я локализую робота, используя фильтр частиц в Python. Краткий код для этого здесь:
mx = my = mh = -10000
m_confident = False
loop = asyncio.get_event_loop()
while not m_confident:
(mx, my, mh, m_confident) = await update_robot(robot, camera_settings)
В основном, mx
, my
и mh
сходятся к фактическому местоположению робота, выполняя некоторый код в асинхронной функции (update_robot
). Однако цикл while не ожидает возврата функции, а скорее вызывает функцию снова в другой итерации цикла. Это портит значения mx
, my
и mh
. Мне было интересно, есть ли в любом случае заставить цикл while ждать возврата функции, прежде чем продолжить.
Я попытался добавить update_robot
к текущему вызову асинхронной функции, используя asyncio.run_coroutine_threadsafe
, но безуспешно.
Кто-нибудь сталкивался с чем-то подобным и знает, как это исправить?