You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在if语句中使用模运算实现周期性电机调速逻辑?

问题分析与解决方案

原代码的核心问题是仅在模拟时间刚好是5000/10000/15000的整数倍瞬间才切换电机速度,其余时间都进入else分支;且超过15000ms后,模运算结果无法触发任何条件判断,导致循环逻辑失效。

要基于持续递增的模拟时间实现循环时段控制,正确的做法是先通过模运算将时间映射到15000ms的循环周期内,再根据周期内的相对时间判断所属区间:

修改后的代码

# 计算当前时间在15000ms循环内的相对时间
cycle_time = simulation_time % 15000

if 0 <= cycle_time < 5000:
    motorSpeed = actionList[choice1]
elif 5000 <= cycle_time < 10000:
    motorSpeed = actionList[choice2]
elif 10000 <= cycle_time < 15000:
    motorSpeed = actionList[choice3]
else:
    # 兜底分支,理论上不会触发
    motorSpeed = dict(speedLeft=0, speedRight=0)

逻辑说明

  1. cycle_time = simulation_time % 15000:把持续递增的simulation_time映射到[0, 15000)区间,实现时间循环。比如16000ms时,cycle_time为1000ms,会自动进入第一个时段的调速逻辑。
  2. 区间判断:通过相对时间的范围匹配对应逻辑,确保整个时段内都执行对应电机速度设置,而非仅在特定时间点切换。

内容的提问来源于stack exchange,提问作者JoRPaul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:55:20