Files
blackbird/bot4cj/scripts/t0.py
T
qing d8b601ab9a feat(bot4cj/scripts): 12 个 mtc DSL 源声明 Camera——录制免注入
动作脚本统一加入 Camera("cam0",640,480,30,8)(record_stand.py 已有),
编译产物自带 @Camera 块,pybot --record 直接可录,取代 v2 的
"注入式录制"变体方案。手写 .mt 保持不动(bot4cj 共享、美化格式)。
2026-08-15 19:48:16 +08:00

64 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# t0.py —— t0.mt 的 mtc DSL 源码(新格式)
# 对角步态(trot)单周期:左后/右前/左前/右后依次抬摆,spk.F 10→0→200→0 Hz。
# 编译:cd mtc && python -m mtc ../bot4cj/scripts/t0.py -o ../bot4cj/scripts/t0.mt
Alias("A", "angle")
Alias("F", "frequency")
# I2C("i2c-0", "/dev/i2c-0") # 原 t0.mt 中此行为注释
I2C("i2c-1", "/dev/i2c-1")
PCA9685("pca9685-0", "i2c-1", "0x40")
Speaker("spk", 2, 48000, 0.6, 5000, 0) # min_f 原为占位符(首行解析为 0)
# 名 max ch
_SERVOS = [("s1", 90, 0), # rb0
("s2", 180, 1), # rb1
("s3", -90, 2), # lb0
("s4", -180, 3), # lb1
("s5", 90, 4), # lf0
("s6", 180, 5), # lf1
("s7", -90, 6), # rf0
("s8", -180, 7), # rf1
("s9", 180, 8), # cam0
("s10", 180, 9)] # cam1
for _name, _max, _ch in _SERVOS:
Servo(_name, _max, 0, 0, "pca9685-0", _ch)
# 录制源(pybot --record 需要 @Camera 块)
Camera("cam0", 640, 480, 30, 8)
_STAND = [45, 0, 45, 0, 45, 0, 45, 0, 90, 90]
def stand(dur=10):
for _i, _ang in enumerate(_STAND, 1):
SetTo(f"s{_i}", _ang, dur)
# ---- 动作序列(200+20 + 500+20 + 500+20 + 500+20 + 500+20,T=2300ms) ----
# 频率通道:Beep 段外 rest=0 = 静音(对齐原脚本 F=0 / 占位符继承 0 的行)
stand()
Beep(10, 220) # r1-r2: F=10(r2 占位符继承首行)
Delay(200)
SetTo("s1", 90, 20) # r2: left-behind
Delay(20)
SetTo("s1", 45, 500) # r3: stand(F=0 → 段间空隙回落静音)
Delay(500)
SetTo("s3", 90, 20) # r4: right-behind
SetTo("s7", 45, 20)
Delay(20)
SetTo("s3", 45, 500) # r5: stand + F=200
SetTo("s10", 45, 500)
Beep(200, 500)
Delay(500)
SetTo("s5", 90, 20) # r6: right-front(F=0)
Delay(20)
SetTo("s5", 45, 500) # r7: stand
Delay(500)
SetTo("s7", 90, 20) # r8: left-front
Delay(20)
SetTo("s7", 45, 500) # r9: stand
Delay(500)
SetTo("s10", 90, 20) # r10: 云台回 90
Delay(20)