2. 腿部动作
PiDog 的腿部动作是通过以下函数实现的:
Pidog.legs_move(target_angles, immediately=True, speed=50)
target_angles:这是一个二维数组,其中的每个元素是包含 8 个舵机角度的数组(称为角度组)。这些角度组用于控制 PiDog 的 8 个腿部舵机。如果写入多个角度组,未立即执行的部分将存入缓存中。immediately:当调用该函数时,若该参数为True,则会立即清除缓存并执行新写入的角度组;若设置为False,新写入的角度组将被加入到执行队列中。speed:设定角度组动作的执行速度。
以下列出了一些常见的用法:
立即执行动作
from pidog import Pidog
import time
my_dog = Pidog()
# 半站立姿态
my_dog.legs_move([[45, 10, -45, -10, 45, 10, -45, -10]], speed=50)
向执行队列中添加多个角度组
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)
在 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()
清空缓存中的角度组。