2. 腿部动作

PiDog 的腿部动作是通过以下函数实现的:

Pidog.legs_move(target_angles, immediately=True, speed=50)
  • target_angles:这是一个二维数组,其中的每个元素是包含 8 个舵机角度的数组(称为角度组)。这些角度组用于控制 PiDog 的 8 个腿部舵机。如果写入多个角度组,未立即执行的部分将存入缓存中。

  • immediately :当调用该函数时,若该参数为 True,则会立即清除缓存并执行新写入的角度组;若设置为 False,新写入的角度组将被加入到执行队列中。

  • speed :设定角度组动作的执行速度。

以下列出了一些常见的用法:

  1. 立即执行动作

from pidog import Pidog
import time

my_dog = Pidog()

# 半站立姿态
my_dog.legs_move([[45, 10, -45, -10, 45, 10, -45, -10]], speed=50)
  1. 向执行队列中添加多个角度组

from pidog import Pidog
import time

my_dog = Pidog()

# 半站立
my_dog.legs_move([[45, 10, -45, -10, 45, 10, -45, -10]], speed=50)

# 连续动作
my_dog.legs_move([[45, 35, -45, -35, 80, 70, -80, -70],
                  [90, -30, -90, 30, 80, 70, -80, -70],
                  [45, 35, -45, -35, 80, 70, -80, -70]],  immediately=False, speed=30)
  1. 在 10 秒内循环动作

from pidog import Pidog
import time

my_dog = Pidog()

# 半站立
my_dog.legs_move([[45, 10, -45, -10, 45, 10, -45, -10]], speed=50)

# 俯卧撑准备姿势
my_dog.legs_move([[45, 35, -45, -35, 80, 70, -80, -70]], immediately=False, speed=20)

# 俯卧撑循环
for _ in range(99):
    my_dog.legs_move([[90, -30, -90, 30, 80, 70, -80, -70],
                      [45, 35, -45, -35, 80, 70, -80, -70]],  immediately=False, speed=30)

# 保持姿势 10 秒
time.sleep(10)

# 停止并恢复半站立
my_dog.legs_move([[45, 10, -45, -10, 45, 10, -45, -10]], immediately=True, speed=50)

PiDog 的腿部控制还支持以下配套函数:

Pidog.is_legs_done()

用于判断缓存中的角度组是否已全部执行完毕。若执行完毕,返回 True;否则返回 False

Pidog.wait_legs_done()

挂起程序,直到缓存中的所有角度组执行完毕后才继续。

Pidog.legs_stop()

清空缓存中的角度组。