组合动作

我们已经知道如何让 PiCrawler 摆出一个特定的姿势,下一步就是将这些姿势组合起来形成一个连续的动作。

这个项目中,我们让 PiCrawler 的四只脚上下摆动,随着音乐跳跃。

运行代码

cd /home/pi/picrawler/examples
sudo python3 twist.py

代码运行后,PiCrawler 的四只脚上下摆动,随着音乐跳跃。

代码

from picrawler import Picrawler
from time import sleep
from robot_hat import Music

music = Music()
crawler = Picrawler([10,11,12,4,5,6,1,2,3,7,8,9])
#crawler.set_offset([0,0,0,0,0,0,0,0,0,0,0,0])


def twist(speed):
     ## [right front],[left front],[left rear],[left rear]
    new_step=[[50, 50, -80], [50, 50, -80],[50, 50, -80], [50, 50, -80]]
    for i in range(4):
        for inc in range(30,60,5):
            rise = [50,50,(-80+inc*0.5)]
            drop = [50,50,(-80-inc)]

            new_step[i]=rise
            new_step[(i+2)%4] = drop
            new_step[(i+1)%4] = rise
            new_step[(i-1)%4] = drop
            crawler.do_step(new_step,speed)

def main():

    music.background_music('./musics/sports-Ahjay_Stelino.mp3')
    music.music_set_volume(20)

    while True:
        twist(speed=100)


if __name__ == "__main__":
    main()

这个怎么运作?

在这段代码中,需要注意下面这个部分:

def twist(speed):
    ## [right front],[left front],[left rear],[right rear]
    new_step=[[50, 50, -80], [50, 50, -80],[50, 50, -80], [50, 50, -80]]
    for i in range(4):
        for inc in range(30,60,5):
            rise = [50,50,(-80+inc*0.5)]
            drop = [50,50,(-80-inc)]

            new_step[i]=rise
            new_step[(i+2)%4] = drop
            new_step[(i+1)%4] = rise
            new_step[(i-1)%4] = drop
            crawler.do_step(new_step,speed)

简单的说,就是使用两层for循环,让 new_step 数组产生连续有规律的变化,同时用 crawler.do_step() 函数执行姿势,形成连续动作。

你可以从 调整姿势 课程中直观的获得每个动作对应的坐标值数组。

除此以外,该示例还可以播放背景音乐。实现方法如下。

通过导入以下库来播放音乐。

from robot_hat import Music

声明一个 Music 对象。

music = Music()

播放 picrawler/examples/musics 目录中的背景音乐,音量设置为20。 您也可以通过 Filezilla 软件 软件将音乐添加到 musics 文件夹中。

music.background_music('./musics/sports-Ahjay_Stelino.mp3')
music.music_set_volume(20)

注解

您可以通过 Filezilla 软件 软件向 musicssounds 文件夹添加不同的音效或音乐。