嵌入式学习记录(1)——四足蜘蛛机器人

模型文件来自于大神Spider robot开源,代码文件为原创测试用,比较无脑的重复代码,入门阶段。单片机采用arduino uno开发板,HC05蓝牙模块,SG90舵机12个,目前还没有PID算法,后期应该会加上吧。

#转载引用请标明出处,另外禁止商用

Arduino UNO开发板

        Adruino UNO是一款常见的Adruino板子,如图5.1所示,从复位按钮开始顺时针依次是TWI接口、数字输入输出接口、电源指示灯、ICSP编程接口、主控单片机ATmega328,模拟输入接口、电源接口、DC电源输入接口、稳压芯片、USB接口。

        Adruino UNO的工作电压为5V,供电范围一般是6-20V。考虑电压较低可能导致供电不足,驱动不了模块电压过高可能会使板子上面的稳压芯片过热影响板子使用寿命,所以实际的供电范围在7-12V之间。Adruino UNO的供电方式有3种,可以根据开发者的需要自己选择供电方式。第一种是外部的直流电源连接到DC电源输入接口来给UNO板子供电;第二种是通过UNO板子的USB接口,电脑通过USB线连接到UNO板子的USB接口可以用来下载程序给板子以及供电。当前两种供电方式没有采用时,可以使用第三种供电方式,即使用UNO板子上电源接口处的GND 和VIN引脚供电。但如果前两种供电方式已经采用的话,可以通过VIN给外部模块或者面包板供电。电源接口引脚中的5V引脚是通过稳压芯片或USB的5V电压,为板子上的5V芯片供电;其中的3.3V引脚是通过稳压芯片产生的3.3V电压,驱动电流最大为50mA。
        板子上的14路数字输入输出接口工作电压为5V,其中还有一些具有特定功能的引脚。本次毕业设计过程中使用到0、1、2、6以及7号数字输入输出引脚。0号引脚和1号引脚可用于串口通信,0号引脚为RX,1号引脚为TX,提供串口接收信号。这两个引脚用于连接HC-05蓝牙模块。2号引脚作为触发中断引脚,有3种触发模式,分别是上升沿、下降沿触发以及同时触发。本次毕设中2号引脚用于控制4个LED指示灯。6号和7号引脚属于正常功能的引脚。
        板子上的AO-A5接口是模拟输入接口,默认输入信号范围是0-5V。和数字输入接口类似,模拟输入接口也有几个引脚具有特定功能。


 步态规划:

四足步态采用了x型步态,操作部分代码见AutodataCmd部分,使用HC05蓝牙模块,由于舵机数量较多采用数组直接定义。启动时会进入准备状态,进行行进前需要启动Start进入预备状态。

‘x’型步态规划方式如下:

前进步态:

如图所示,在“X”型步态时,四足榛蛛机器人前进步态是A腿抬起→A腿前移(1号舵机带着A腿逆时针转动)→A腿落下→C腿抬起→C腿前移(7号舵机带着C腿顺时针转动)→C腿落下→AC两条腿复位→B腿抬起→B腿前移(4号舵机带着B腿顺时针转动)→B腿落下→D腿抬起→D腿前移(10号舵机带着D腿逆时针转动)一D腿落下一BD两条腿复位。

 后退步态:

在“X”字型步态时,如图所示,四足蜘蛛机器人后退步态是:A腿抬起→A腿向右移(1号舵机带着A腿顺时针转动)→A腿落下→C腿抬起→C腿向右移(7号舵机带着C腿逆时针转动)→C腿落下→AC两条腿复位→B腿抬起一B腿向左移(4号舵机带着B腿逆时针转动)一B腿落下一D腿抬起→D腿向左移(10号舵机带着D腿顺时针转动)→D腿落下→ED两条腿复位。

左转/右转步态规划:

在“X”型步态时,如图所示ÿ

### 使用Python开发蜘蛛机器人的控制算法与代码示例 #### 蜘蛛机器人的基本运动原理 为了使蜘蛛机器人能够执行诸如前进、转弯等动作,每条腿至少需要两个驱动舵机来分别负责抬腿和迈步的动作[^3]。对于更复杂的动作需求,腿部的设计可能增加到三个自由度以更好地模拟自然界的生物行为。 #### 控制算法概述 在设计用于控制蜘蛛机器人的软件时,核心挑战在于如何协调各肢体间的同步性和稳定性。这涉及到路径规划以及姿态调整等多个方面。通过定义一系列关节角度变化序列作为输入给定时间内的目标位置,从而指导电机按照预定模式运作。 #### Python代码实现 下面是一个简单的基于Python的蜘蛛机器人行走周期函数的例子: ```python import time from adafruit_servokit import ServoKit # 假设使用Adafruit PWM伺服驱动器板 def move_leg(kit, leg_id, lift_angle, step_angle): """移动指定编号的腿""" kit.servo[leg_id * 2].angle = lift_angle # 抬起/放下该腿 time.sleep(0.5) kit.servo[(leg_id * 2) + 1].angle = step_angle # 向前/向后摆动该腿 time.sleep(0.5) kit = ServoKit(channels=16) # 初始化PWM控制器对象 while True: for i in range(4): # 循环处理个不同的腿 if i % 2 == 0: move_leg(kit, i, 90, 0) # 左侧两腿向前走一步 else: move_leg(kit, i, 45, 90) # 右侧两腿向后退半步 time.sleep(1) # 让所有腿都完成当前阶段后再继续下一个循环 for i in reversed(range(4)): if i % 2 != 0: move_leg(kit, i, 90, 0) # 右侧两腿向前走一步 else: move_leg(kit, i, 45, 90) # 左侧两腿向后退半步 time.sleep(1) ``` 此段程序展示了基础版交替三脚架步态(Tripod Gait),即每次只有三条腿支撑地面而另外一条进行摆动准备下一步的位置交换过程。这种步行方式常见于昆虫类生物中,并被广泛应用于小型多仿生机械装置上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值