DonkeyCar threaded配置解析

2022-04-031.1万
AI 快速预览详细 收起
本文分析了DonkeyCar源码中threaded=True配置对actuator.py组件的影响。当threaded=True时,update()方法会在独立线程中每秒刷新200次以上,而run()方法每秒仅刷新20次。这种配置提升了程序的实时性,特别适用于需要常驻服务的场景,如串口接收。


DonkeyCar源码中,manage.py通过vehicle.py实现对不同功能组件的实例化。

本文以actuator.py为例,分析threaded=True对程序运行逻辑的影响。

【现象】
  • threaded = true时,独立开辟的线程在update()中一直刷新,在每次大循环中调用一次run_threaded()
  • threaded = false时,和其他线程组成队列,在每次大循环中调用一次run()

DonkeyCar threaded配置解析图3

DonkeyCar threaded配置解析图1

DonkeyCar threaded配置解析图2

【结论】
  • run_threaded()和update()为一组,功能上与run()等效
  • update()为独立线程,实时性比run()要好,适合需要常驻的服务,例如串口接收。【实测update()每秒刷新200次以上,run()每秒只恒定刷新20次】

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
极凹甫
极凹甫

这一句非常有迷惑性哦
能否解释一下 什么样的part使用threaded,什么样不使用呢?
昊男Henry
昊男Henry
作者
回复极凹甫
没有绝对界定,区别在于是否为独立线程。需要高速响应的part建议配置threaded=True,例如Web显示实时画面。舵机PWM信号刷新只有50~60Hz,不必要配置threaded,减少系统资源占用。
- 没有更多了 -