一个真正的蛇,在蛇的皮鳞的配置,有较少的摩擦方向平行于蛇的身体比在垂直于蛇的身体的方向。这是通过附加被动轮每个段的方向沿着蛇的长度对机器人实现的贪吃蛇。结果是,蛇可以只是通过发送一个正弦或余弦波沿着身体推进。
这个运动的控制Arduino的代码是在下面的链接。伺服电机带命令,设置它们的角。如果所有的交换机都设置为90度,然后蛇的位置是一条直线。小于或大于90然后告诉伺服弯曲左或右角。为运动每个伺服控制的基本命令通过命令的形式给出:
S <strong>N</strong>。写(90 +<strong>振幅</strong>×COS(<strong>频率</strong>*<strong>反</strong>* 3.14159/180 - <strong>N</strong>×<strong>滞后</strong>);
上面的命令中,<strong>N</strong>是目前的几段和值从1到12,<strong>振幅</strong>决定如何广泛的波(即多少“S”形曲线),<strong>频率</strong>(沿可变<strong>延迟时间</strong>)确定速度的蛇,<strong>反</strong>是循环变量,以蛇通过其波动和<strong>滞后</strong>是恒定角差异片段。长期3.14159/180只是角度转换。
每个伺服电机的控制是通过一个命令这个形式,所有这十二个命令放在一个地方<strong>为</strong>循环变量<strong>计数器</strong>从0到360度。这个命令蛇与蛇回原来的位置执行一个向前的波动和结束。在循环中还有一个命令延迟(<strong>延迟时间</strong>);。由于舵机不瞬间响应,代码已经暂停给舵机的时候。我使用的舵机,值为7微秒,似乎工作得很好,给了一个很好的平滑运动。在反使蛇的移动,它是完全相同的循环,只有用计数器从360下降到零运行。
如果负责蛇运动的波动是集中在90度,质量蛇的中心在一条直线上移动。如果波是以一个角度小于90度,蛇会左转,和超过90度,蛇会右转。这是控制代码中的变量和<strong>rightoffset</strong> <strong>leftoffset</strong>。因此,把这条蛇是一个简单的添加一个偏移量写在向前运动循环命令的事。然而,由于这会导致有些生涩的动作如蛇移动突然转弯的起始位置,我在把环做缓慢爬坡的偏移在关环开始,慢慢向下斜的偏移在交替循环结束。这导致一个平滑的运动。
四个动作指令将完成一个波动的预期运动并返回蛇在循环结束的同一个位置。添加遥控机器人我用密钥发射器/接收器在步骤1中列出的。在中间的四个按钮发射机对应一个),B)C)反向,左转右转,D)。接收器连接到Arduino与期待引脚14,反向引脚15,引脚16和左转右转17脚。这些引脚被声明为输入设置为低。现在我只是把部分代码,每个动作为一个循环,运行时,<strong>如果</strong>相应的引脚变高(即当适当的按钮)。