3. 头部控制
PiDog 的头部舵机控制是通过以下函数实现的:
Pidog.head_move(target_yrps, roll_comp=0, pitch_comp=0, immediately=True, speed=50)
target_angles:这是一个二维数组,每个元素包含三个舵机角度值(即角度组)。这些角度组用于控制 PiDog 的三个头部舵机。如果写入多个角度组,未立即执行的部分将会进入缓存队列。roll_comp:对横滚轴进行角度补偿。pitch_comp:对俯仰轴进行角度补偿。immediately:设为True时立即清除缓存并执行当前角度组;设为False时角度组将加入到待执行队列中。speed:角度组动作的执行速度。
PiDog 的头部控制还提供了以下辅助函数:
Pidog.is_head_done()
判断头部动作缓存是否已执行完毕。
Pidog.wait_head_done()
等待缓存中的头部动作执行完成。
Pidog.head_stop()
清空缓存中的所有头部动作,使头部舵机停止运动。
以下是一些常见的使用示例:
点头五次
from pidog import Pidog
import time
my_dog = Pidog()
for _ in range(5):
my_dog.head_move([[0, 0, 30],[0, 0, -30]], speed=80)
my_dog.wait_head_done()
time.sleep(0.5)
摇头十秒
from pidog import Pidog
import time
my_dog = Pidog()
for _ in range(99):
my_dog.head_move([[30, 0, 0],[-30, 0, 0]], immediately=False, speed=30)
# 持续摇头 10 秒
time.sleep(10)
my_dog.head_move([[0, 0, 0]], immediately=True, speed=80)
无论坐着或半蹲,PiDog 都能在摇头时保持头部水平
from pidog import Pidog
import time
my_dog = Pidog()
# 动作预设
shake_head = [[30, 0, 0],[-30, 0, 0]]
half_stand_leg = [[45, 10, -45, -10, 45, 10, -45, -10]]
sit_leg = [[30, 60, -30, -60, 80, -45, -80, 45]]
while True:
# 半蹲状态下摇头
my_dog.legs_move(half_stand_leg, speed=30)
for _ in range(5):
my_dog.head_move(shake_head, pitch_comp=0, speed=50)
my_dog.wait_head_done()
time.sleep(0.5)
# 坐姿状态下摇头
my_dog.legs_move(sit_leg, speed=30)
for _ in range(5):
my_dog.head_move(shake_head, pitch_comp=-30, speed=50)
my_dog.wait_head_done()
time.sleep(0.5)