动作脚本统一加入 Camera("cam0",640,480,30,8)(record_stand.py 已有),
编译产物自带 @Camera 块,pybot --record 直接可录,取代 v2 的
"注入式录制"变体方案。手写 .mt 保持不动(bot4cj 共享、美化格式)。
72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
# left-turn.py —— left-turn.mt 的 mtc DSL 源码(新格式)
|
||
# 左转步态:对角腿轮换抬摆(s2/s6 ↔ s4/s8 为一组,s1/s5、s3/s7 配合)。
|
||
# 编译:cd mtc && python -m mtc ../bot4cj/scripts/left-turn.py -o ../bot4cj/scripts/left-turn.mt
|
||
|
||
Alias("A", "angle")
|
||
Alias("F", "frequency")
|
||
|
||
I2C("i2c-0", "/dev/i2c-0")
|
||
I2C("i2c-1", "/dev/i2c-1")
|
||
|
||
PCA9685("pca9685-0", "i2c-1", "0x40")
|
||
|
||
# 姿态传感器按需启用:
|
||
# MPU6050_BIND("mpu6050-0", "i2c-1", "0x69")
|
||
# MPU6050_BIND("mpu6050-1", "i2c-1", "0x68")
|
||
# MPU6050_BIND("mpu6050-2", "i2c-0", "0x68")
|
||
# MPU6050_BIND("mpu6050-3", "i2c-0", "0x69")
|
||
|
||
Speaker("spk", 2, 48000, 0.6, 5000, 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)
|
||
|
||
def legs(dev_a, dev_b, ang, dur):
|
||
SetTo(dev_a, ang, dur)
|
||
SetTo(dev_b, ang, dur)
|
||
|
||
# ---- 动作序列(200+100+50+50+100+10+50+50+100+10+50,T=770ms) ----
|
||
stand()
|
||
Beep(10, 770) # spk.F=10 贯穿全程
|
||
Delay(200)
|
||
legs("s2", "s6", 45, 100) # r2
|
||
Delay(100)
|
||
legs("s1", "s5", 90, 50) # r3
|
||
Delay(50)
|
||
legs("s2", "s6", 0, 50) # r4
|
||
Delay(50)
|
||
legs("s4", "s8", 45, 100) # r5
|
||
Delay(100)
|
||
legs("s1", "s5", 45, 10) # r6
|
||
Delay(10)
|
||
legs("s3", "s7", 0, 50) # r7
|
||
Delay(50)
|
||
legs("s4", "s8", 0, 50) # r8
|
||
Delay(50)
|
||
legs("s2", "s6", 45, 100) # r9
|
||
Delay(100)
|
||
legs("s3", "s7", 45, 10) # r10
|
||
Delay(10)
|
||
legs("s2", "s6", 0, 50) # r11
|
||
Delay(50)
|