Arduino 六足机器人
0
所需材料














- 20 个 DS3218 舵机
- 1 套六足机器人底座套件
- 1 块 Arduino Mega R3 开发板
- 1 块 Arduino Mega V2 版本传感器扩展板
- 1 个双槽 18650 电池座
- 2 个两极电源开关
- 1 个绿色 LED 灯和 1 个 220 千欧电阻
- 2 组带魔术贴固定件的 6V 2800mAh 电池组
- 2 节 3400mAh 的 18650 电池
- 1 个 HC-SR04 超声波模块
- 1 个 BT12 蓝牙模块
- 1 块 Arduino V3 NodeMcu Lua WIFI ESP8266 12E 物联网开发板
- 1 块带 OV2640 200 万像素镜头的 Arducam Mini 模块摄像头扩展板
- 1 个 Pixie Neon 16 段 LCD 灯环
- 1 个带附加 IIC 适配器的 1602 型(16 列 2 行)LCD 显示屏
- 1 个适用于 Arduino Mega 的 5V 电源插头
- 1 个适用于 NodeMcu 模块的 5V 微型 USB 插头
- 1 个 DC-DC 降压模块
- 1 个 70 毫米 ×120 毫米 ×39 毫米的方形黑色塑料盒(用于机身)
- 1 个 70 毫米 ×50 毫米 ×70 毫米的黑色塑料盒(用于头部)
- 4 个 40 毫米长的 M3 规格黄铜支撑柱,以及 4 个橡胶支撑垫
- 若干公对公杜邦线、焊锡、M3 规格螺丝与螺栓,以及热熔胶
腿部运动采用定制逻辑控制。摄像头通过两个独立舵机实现运动,可完成上下、左右转动及归中动作。摄像头通过 WIFI 连接进行控制,其画面可在安卓应用的 WebView 视图中显示。
舵机








每个舵机的转动角度范围为 0°(最小)至 180°(最大)。
每个舵机均采用三位数字组合(LegCFT)进行标识:其中 C 代表机身(髋部,COXA),F 代表大腿部(FEMUR),T 代表小腿部(TIBIA)。例如,410 代表第四条腿的小腿部舵机,同理 411 也代表第四条腿的小腿部舵机(注:原文中 410 与 411 表述重复,疑似笔误)。舵机编号范围为 100 至 611。
每条机械腿的舵机末端需安装橡胶材质的脚掌,以缓冲冲击力并增强抓地力。
- 第一条腿(前部):100、110、111 号舵机
- 第二条腿:200、210、211 号舵机
- 第三条腿:300、310、311 号舵机
- 第四条腿:400、410、411 号舵机
- 第五条腿(后部):500、510、511 号舵机
- 第六条腿:600、610、611 号舵机
舵机默认角度与休息角度
- 所有髋部(COXA)舵机的默认角度为 90°。
- 大腿部(FEMUR)舵机的默认角度为 90°,休息状态角度为 45°。
- 所有腿部小腿部(TIBIA)舵机的默认角度为 90°;其中 1、3、5 号腿的小腿部舵机休息角度为 175°,2、4、6 号腿的小腿部舵机休息角度为 5°。
颈部舵机(控制摄像头)
- 颈部 1 号舵机(编号 700):负责上下转动,角度限制为 75° 至 105°。
- 颈部 2 号舵机(编号 800):负责左右转动,角度限制为 45° 至 135°。
舵机运行限制
在发送后续 “写入”(write)指令前,需先将舵机的 “写入” 操作次数限制为 3 次,之后加入 10 毫秒的延迟。此举有助于降低电池的负载。
指令







A = 停止 —— 保持默认姿势站立
B = 前进 —— 执行向前行走动作(walk_forward)
C = 后退 —— 执行向后行走动作(walk_backward)
D = 右转 —— 执行向右转动作(turn_right)
E = 左转 —— 执行向左转动作(turn_left)
F = 向左横移 —— 执行螃蟹步向左移动(crab_left)
G = 向右横移 —— 执行螃蟹步向右移动(crab_right)
H = 后部下蹲 ——1、2 号腿处于最大角度位置,3、4 号腿处于中间位置,5、6 号腿处于最小角度位置
I = 前部下蹲 ——1、2 号腿处于最小角度位置,3、4 号腿处于中间位置,5、6 号腿处于最大角度位置
J = 摄像头归中 —— 颈部 1 号、2 号舵机均处于中间位置(默认位置)
K = 摄像头向左 —— 执行向左摆头动作(颈部 1 号舵机处于中间位置,颈部 2 号舵机处于最小角度位置)
L = 摄像头向右 —— 执行向右摆头动作(颈部 1 号舵机处于中间位置,颈部 2 号舵机处于最大角度位置)
M = 摄像头向上 —— 执行向上摆头动作(颈部 1 号舵机处于最大角度位置,颈部 2 号舵机处于中间位置)
N = 摄像头向下 —— 执行向下摆头动作(颈部 1 号舵机处于最小角度位置,颈部 2 号舵机处于中间位置)
O = 休息状态 —— 六足机器人靠在支撑垫上
P = 起身站立 —— 六足机器人起身至默认姿势
Q = 灯光关闭
R=Pixie Neon 灯环亮起绿灯
S=Pixie Neon 灯环亮起红灯
T=Pixie Neon 灯环亮起蓝灯
U=Pixie Neon 灯环亮起白灯
V = 前腿摆动
W = 鸣响喇叭
X = 头部左右摆动
Y = 播放乐曲
运动控制







髋部舵机(Coax Servo)的转动方向沿机身轴线方向:正前方为 0°,正后方为 180°。不过,该髋部舵机及其他所有舵机的角度均限制在 45° 至 135° 之间。
基本腿部运动(前进、后退、左转、右转)
无论是前进、后退、左转还是右转,腿部运动的基本流程均为:先通过大腿部(FEMUR)和小腿部(TIBIA)舵机抬起腿部,随后髋部舵机动作,最后再通过大腿部和小腿部舵机放下该腿。
前进与后退
前进或后退时,腿部成对工作(分别为 1&2 号腿、3&4 号腿、5&6 号腿)。
- 简单前进动作:1&2 号腿先从当前位置尽可能向前移动,接着是 3&4 号腿,最后 5&6 号腿重复相同动作;之后六个髋部舵机从这个向前伸展的位置回到初始位置。
- 后退动作则是上述流程的反向操作。
- 此外,在前进过程中,HC-SR04 超声波模块会持续检测前方障碍物,若检测到障碍物,六足机器人会随机向左或向右转。
左转与右转
左转或右转时,成对腿部协同工作,但运动方向相反。
- 右转示例:1 号腿从当前位置向后转动至 135°,同时 2 号腿向前转动至 45°;3&4 号腿、5&6 号腿也重复这一动作。完成后,髋部舵机从初始位置转动至新位置,使机身向运动方向(即右侧)扭转;该过程会持续到完成所需的右转角度。
- 左转动作则是上述流程的反向操作:1 号腿从当前位置向前转动至 45°,同时 2 号腿向后转动至 135°,后续腿部动作以此类推。
起身与休息
这两个动作均无需使用任何腿部的髋部舵机:
- 起身时,所有腿部的小腿部(TIBIA)舵机从当前位置转动至最大角度 45°;
- 休息时,这些大腿部(FEMUR)舵机转动至最低位置(175° 或 5°)。
- 小腿部舵机的运动规律与此一致:起身时转动至最大角度 45°,休息时转动至最低角度(即 175° 或 5°)。
前部下蹲与后部下蹲
这两个动作互为镜像操作:
- 前部下蹲时,1&2 号腿处于最低位置,5&6 号腿处于最高位置;3&4 号腿保持中间位置,与 1&2 号腿组和 5&6 号腿组的位置相协调。
- 后部下蹲时,1&2 号腿处于最高位置,5&6 号腿处于最低位置。
头部摄像头 / 超声波模块







头部由一个尺寸为 38 毫米 ×38 毫米 ×38 毫米、带可拆卸盖子的方形塑料盒构成,其垂直和水平方向的活动范围有限。头部的运动通过两个舵机实现:一个舵机固定在机器人机身,另一个舵机固定在第一个舵机的机体上,且其摆臂与头部相连。
Arduino V3 NodeMcu Lua WIFI ESP8266 12E 物联网开发板(DEVKIT 套件)与带 OV2640 200 万像素镜头的 Arducam Mini 模块摄像头扩展板相连,由两节 18650 电池提供 7.4V 电压供电。该装置可让机器人实现障碍物检测,并通过板载 Wi-Fi 传输实时视频。HC-SR04 超声波模块采集的信息以及灯光控制相关信息,会反馈至 Arduino Mega 开发板。
在此特别感谢 Dmainmun,其发布的关于 Arducam 的 Instructables 文章,对我初步理解如何使用 Arducam 进行视频流传输提供了极大帮助。
电池(Battery)
设计采用两组电池供电:一组为头部组件和 Arduino Mega 开发板供电,另一组为所有舵机供电。
- 第一组电池:由两节 3400mAh 的 18650 电池组成,输出电压为 7.4V。
- 第二组电池:由两组 6V 2800mAh 电池组并联而成,输出电压为 6.4V,容量提升至 5600mAh,通过魔术贴条固定在六足机器人底部。
腿部运动控制







机械腿可成对动作,也可单独动作。每条机械腿包含三个关节:
- 名为 “髋部”(Coax)的机身关节,转动角度范围为 45° 至 135°;
- 名为 “大腿部”(Femur)的大腿关节,转动角度范围为 45° 至 135°;
- 名为 “小腿部”(Tibia)的小腿关节(或称末端执行器),转动角度范围为 45° 至 135°。
已编写定制软件,用于控制腿部运动。
腿部关节角度定义
- 髋部(Coax):45° 为朝向头部后方,90° 为中间位置,135° 为朝向正前方。
- 大腿部(Femur):45° 为离地面最高的位置,90° 为中间位置,135° 为离地面最低的位置。
- 小腿部(Tibia):45° 为离机身最远的位置,90° 为中间位置,135° 为离机身最近的位置。
默认初始状态:所有舵机均处于 90° 中间位置。
各类腿部运动方式
- 前进(Forward)
- 1、2 号腿:大腿部舵机抬起至 135°,髋部舵机转动至 45°,小腿部舵机转动至离机身最远的 45°,随后大腿部舵机降下至 45°。
- 3、4 号腿组及 5、6 号腿组重复上述动作。
- 之后,6 个髋部舵机从 45°(向后)转回 90° 中间位置,6 个大腿部舵机从 45°(抬起)转回 90° 中间位置,最后所有小腿部舵机从 45° 转回 90° 中间位置。
- 后退(Reverse)
- 动作流程与前进一致,但腿部启动顺序相反:先 5、6 号腿,再 3、4 号腿,最后 1、2 号腿。
- 左转(Left)
- 1、3、5 号腿按后退方向动作,2、4、6 号腿按前进方向动作(前进与后退的动作标准与前文一致)。
- 为完成转向,六个髋部舵机均转动 45°,使机身随之向左扭转。该过程持续至完成所需左转角度。
- 右转(Right)
- 2、4、6 号腿按后退方向动作,1、3、5 号腿按前进方向动作(动作标准与前文一致)。
- 髋部舵机的转动方向与左转相反,使机身向右侧扭转。
- 休息(Rest)
- 所有髋部、大腿部舵机均处于中间位置,所有小腿部舵机均处于最低位置(45°),实际上使前、中、后三组腿部均处于下蹲状态。
- 后部下蹲、前部站立(Crouch rear, stand front)
- 1、2 号腿处于最高位置,3、4 号腿处于中间位置,5、6 号腿处于最低位置。
- 后部站立、前部下蹲(Stand rear, crouch front)
- 1、2 号腿处于最低位置,3、4 号腿处于中间位置,5、6 号腿处于最高位置。
- 向左横移(Crab left)
- 1、5 号腿抬起并向左侧伸展,同时 2、6 号腿抬起并向机身下方收缩。待这四条腿均落地后,所有小腿部舵机回归中间位置。最后 3、4 号腿重复上述动作。
- 向右横移(Crab right)
- 2、6 号腿抬起并向右侧伸展,同时 1、5 号腿抬起并向机身下方收缩。待这四条腿均落地后,所有小腿部舵机回归中间位置。最后 3、4 号腿重复上述动作。
头部运动控制
- 头部向左转动:1 号颈部舵机转动至 45°,之后两个颈部舵机均回归 90° 中间位置。
- 头部向右转动:1 号颈部舵机转动至 135°。
- 头部向上转动:2 号颈部舵机转动至 45°。
- 头部向下转动:2 号颈部舵机转动至 135°。
- 头部左右摆动:2 号颈部舵机从 45° 转动至 135°。
舵机选型与测试(SERVOS)
初步测试后,MG995 和 MG996 型号舵机均已更换,20 个舵机全部替换为 DS32228 型 20 公斤级舵机 —— 该型号舵机的对中性显著提升,负载能力也有所增强。
重要提示:需使用合适的测试程序对每个舵机进行全面测试。我修改了简单的 “sweep”(扫动)示例程序,专门测试舵机 0°、90°、180° 三个位置的运行情况。每个舵机至少运行 5 分钟,一天后再次重复测试。
注意:使用 USB 线供电的标准 Arduino Uno 开发板,可能无法提供足够电压驱动部分舵机。我发现,DS3218 型舵机从 Uno 板获取 4.85V 电压时,会出现运行不稳定的情况;将电压提升至 5.05V 后,该问题得以解决。因此我决定将舵机供电电压设定为 6V,但最终发现需将电压调整为 6.4V—— 因为 6V 电压仍会导致舵机运行不稳定。
组装







一、腿部组装(LEGS)
首先整理六足机器人套件的所有零件。所有圆形舵机臂(servo circular horn)均需扩大大腿部组件(Femur)两端的配合孔,以及所有髋部组件(Coax)的安装孔。每个舵机臂通过 4 颗螺丝固定到对应的髋部和大腿部组件上,第 5 颗螺丝则穿过舵机头部中心进行加固。所有舵机机身均使用 4 组螺栓和螺母固定。
六条腿的髋部舵机支架(Coax servo mount)底部均通过 1 组螺栓和螺母安装了一个轴承。每个髋部舵机支架再用 4 组螺栓和螺母固定到对应的大腿部舵机支架上,且大腿部舵机支架需旋转 90° 安装。大腿部舵机的头部固定在大腿臂(Femur arm)的一端,大腿臂的另一端则与小腿部舵机(Tibia servo)的头部相连。六条腿的小腿部舵机均通过 4 组螺栓和螺母固定在每条腿的顶部。每条腿的末端执行器(end effector,即脚掌)均套有软橡胶套,以增强抓地力。
实际组装中发现,套件自带的舵机臂尺寸过大,无法装入髋部、大腿部和小腿部的连接位,因此需将所有连接位的中心孔扩大至 9 毫米。特别感谢 “Toglefritz”,其发布的 “Capers II” 六足机器人制作指南(instructable)为套件组装提供了重要参考。不过,我在一个细节上偏离了指南的组装方式:在固定舵机臂到大腿部组件两端时,我决定扩大大腿部组件的中心孔,让舵机臂的中心轴能穿过孔位 —— 这样舵机臂更靠近舵机,可增强结构强度(因为这两个关节需承受最大扭矩)。每个舵机臂通过 2 颗 M2.2 自攻螺丝固定到大腿部组件上,螺丝末端需截断并锉平。所有 M3 螺栓均涂抹了螺纹锁固剂(lock tight)。
二、机身组装(BODY)
机身由两块板构成,每块板上均有 6 个孔,用于安装髋部舵机臂。底部板的下表面通过魔术贴(Velcro)固定了两组 6V 2800mAh 电池。4 个 M3 支撑柱(stand off)安装后,其长度略超出电池座底部,每个支撑柱底部均套有软橡胶套 —— 这能为六足机器人提供稳定的支撑底座,方便其停靠。
底部板的上表面通过 4 个 5 毫米长的支撑柱固定了 Arduino Mega 开发板及其传感器扩展板(Sensor shield)。底部板顶部还安装了 4 个高度为 6 厘米的 M3 支撑柱,这些支撑柱围绕 Arduino Mega 开发板分布,用于支撑顶部板(top plate)。
顶部板上固定了一个 120 毫米 ×70 毫米 ×30 毫米的盒子,用于容纳第一个颈部舵机和 LCD 显示屏。顶部板的下表面、Arduino Mega 开发板后方(朝向机器人前方)的位置,安装了一个双槽 18650 电池座(2 bay 18650 battery holder)。
顶部板上还安装了 6 个舵机臂,每个均通过 4 颗 M2.2 螺丝固定。顶部板上方装有一个 70 毫米 ×120 毫米 ×30 毫米的盒子,内部安装了双槽 18650 电池座、两极电源开关、绿色 LED 灯和 IIC 接口 1602 型 LCD 显示屏(IC2 16 x 2 LCD display,注:原文 “IC2” 应为 “IIC”,即 I²C 接口)。此外,第一个颈部舵机也安装在这个盒子里,供电线和第二个颈部舵机的数据线需穿过盒子上的一个孔,分别连接第二个颈部舵机和 Arduino V3 NodeMcu 模块。另有一根数据线穿过顶部盒子,连接至头部的 HC-SR04 超声波模块;还有一根数据兼供电线连接至头部,为 Pixie LED 灯环供电。
两个颈部舵机的数据线和 HC-SR04 超声波模块的数据线均穿过顶部板;蓝牙模块(BT12)则通过软泡沫垫(neon form pad,推测为 “neoprene form pad” 的笔误,即氯丁橡胶泡沫垫)和热熔胶固定在顶部板的下表面。
在使用 4 颗 M3 螺丝将顶部板固定到底部板的 M3 支撑柱上之前,必须先整理好其余 18 个舵机的数据线。固定顶部板和底部板的过程中,需同时将六条腿的髋部舵机安装到正确位置:确保舵机支架底部的轴承嵌入底部板的孔中,且舵机头部卡入顶部板的舵机臂内。安装完成后,用 6 颗 M3 螺丝将六个髋部舵机的顶部固定。
由于六个髋部舵机臂的安装位置限制,需将 4 个 M3 支撑柱的高度缩短 2 毫米,以确保髋部舵机的轴承能正确嵌入底部板的孔中。
三、头部组装(HEAD)
头部由两个呈 90° 安装的舵机构成:一个舵机安装在顶部板的盒子里,另一个舵机通过 U 型黄铜板连接到第一个舵机的舵机臂上。第二个舵机的舵机臂固定在一个 L 型黄铜支架上,该支架再通过两组螺栓和螺母固定到一个 70 毫米 ×70 毫米 ×50 毫米的盒子上 —— 这个盒子即为机器人的头部。
头部盒子内部安装了 Arducam 摄像头、HC-SR04 超声波模块、Arduino V3 NodeMcu 模块和电源指示灯(power LED)。超声波模块的发射端和接收端、摄像头镜头均需从盒子正面穿出。盒子外部的镜头周围装有一个 16 段 Pixie Neon LED 灯环(原文 “16 LCD Nero pixie ring” 应为 “16-segment Pixie Neon LED ring”)。NodeMcu 模块的电源指示灯可通过头部背板(back plate)上的一个小孔看到;供电线、超声波模块的数据线以及 Pixie Neon 灯环的电源兼数据线,则从背板与头部面板之间的缝隙穿入盒内。
四、电子元件组装(ELECTRONICS)
以下 Fritzing 电路图(Fritzing 为开源电路设计软件,保留原名)展示了机身和头部的电子元件连接方式。为使电路图更清晰,未标注 20 个舵机的 VCC(电源正极)和 GND(电源负极)线路。
蓝牙模块(BT12)通过安卓应用(Android App)控制六足机器人的运动,包括颈部舵机的动作;基于 WiFi 的 Arduino NodeMcu 模块则用于控制 Arducam 摄像头模块。所有舵机均通过一个集成了 VCC、GND 和信号线的接口模块,连接到 Arduino 传感器扩展板上。BT12 蓝牙模块、HC-SR04 超声波模块和 IIC 1602 LCD 显示屏均使用标准 20 厘米杜邦线(DuPont jumper cables)连接。
五、腿部校准(LEG CALIBRATION)
腿部校准是六足机器人运动功能调试前最关键且最复杂的步骤之一。初始校准目标是将所有腿部调整至以下状态:髋部舵机均处于 90°,大腿部舵机均处于 90°,小腿部舵机均处于 90°;同时,2、4、6 号腿的实际物理位置需调整至 105°,1、3、5 号腿的实际物理位置需调整至 75°。
将六足机器人放置在水平面上,使其依靠电池座下方的 4 个支撑垫停靠。调整腿部位置,确保每条腿之间的间距相等,且每条腿到机身的距离也相等,并在水平面上标记出所有腿部的位置。
组装腿部时,需先确定每个舵机的中点 —— 该中点应为舵机的 90° 位置(所有舵机的默认基准位置均为 90°)。校准需满足以下结构要求:
- 2 号与 5 号髋部舵机的内侧面需保持平行,1 号与 6 号、3 号与 4 号髋部舵机同理;
- 组装阶段,所有大腿部舵机与髋部舵机需呈 90° 固定;
- 所有大腿部舵机的大腿臂需以 90° 角度安装;
- 所有小腿部舵机需与小腿组件呈 90° 固定;
- 2、4、6 号腿的小腿部舵机需以 105° 角度安装在大腿臂上,1、3、5 号腿的小腿部舵机则以 75° 角度安装。
重要提示:校准测试期间,需持续监测所有舵机的温度。若舵机发烫,说明其负载过大,可能发生故障(正常情况下,舵机仅应微热)。
初始校准步骤如下:
- 机器人通电后,从停靠状态切换至站立状态,确保站立姿势稳定、水平,且所有舵机均无过热现象;
- 为维持稳定姿势,需向每个舵机发送指令,指令间隔需小于 20 毫秒(本设计采用 10 毫秒间隔);
- 所有舵机的转动范围均为 0° 至 180°(可双向转动),其中大腿部舵机的 0° 和 180° 为垂直方向,90° 为水平方向。
在安装每个舵机前,需向其发送初始化指令,设定其休息时的初始角度:所有髋部舵机的初始休息角度为 90°;1、3、5 号腿的大腿部和小腿部舵机初始休息角度为 55°;2、4、6 号腿的大腿部和小腿部舵机初始休息角度为 125°。
重要提示:每次开始校准前,务必确保所有电池均已充满电。
六足机器人始终从停靠状态启动(此时机身完全由 4 个支撑垫支撑)。从该状态开始,所有大腿部和小腿部舵机从初始休息角度循环调整至站立角度(最终所有舵机均处于 90°)。发送 “站立”(stand)指令即可完成站立动作:该指令要求所有腿部分两组抬起并重新放下,第一组为 1、5、4 号腿,第二组为 2、6、3 号腿。
软件

该机器人的软件分为三部分:第一部分是运行在 Arduino Mega 上的代码,第二部分是运行在头部 NodeMcu 模块上的 Arduino 代码。设备间通信通过 BT12 蓝牙模块实现 —— 该模块接收来自安卓平板(具体为三星 Tab 2)的指令,而平板上运行的是通过 Android Studio 开发的定制应用,正是该应用向六足机器人发送控制指令。同时,该应用还能通过 NodeMcu 模块内置的 WiFi,接收来自机器人的实时视频流。
一、安卓应用代码(ANDROID CODE)
定制安卓代码通过 Android Studio 开发,为双界面应用提供运行平台。应用包含两个界面:
- 主界面:用户可向六足机器人发送控制指令,并查看来自机器人头部的实时视频流;
- WiFi 连接界面:通过点击 “WiFi” 按钮进入,用户需在此先连接机器人的蓝牙,再连接由机器人头部 NodeMcu 模块生成的 WiFi 热点。
应用通过平板内置蓝牙,以 9600 波特率(serial 9600 Baud)的串口通信方式,向机器人的 BT12 蓝牙模块发送单字母指令(如前文 Step 3 中的 A = 停止、B = 前进等)。
二、Arduino 代码(ARDUINO CODE)
代码开发始于一个测试程序,旨在验证六足机器人机身、头部及基本功能的运行情况。由于头部与机身的运行完全独立,两者的软件开发与功能测试同步进行。头部控制代码在先前开发的基础上优化,新增了舵机运动控制逻辑,同时集成了 1602 型 LCD 显示屏、HC-SR04 超声波模块及 16 段 LED 灯环的控制功能;此外,还需开发额外代码,以实现通过 WiFi 访问头部实时视频流的功能。
机身控制代码的开发流程如下:
- 首先实现舵机初始安装校准与休息状态下的初始位置设定;
- 基于初始位置,编写代码使机器人完成 “站立” 动作;
- 逐步新增其他运动功能代码,将头部与机身的控制代码整合,并加入与安卓应用的串口通信逻辑。
三、舵机测试代码与腿部运动功能
舵机测试代码为腿部及机身运动功能的开发提供支持,主要实现以下功能:
- InitLeg(腿部初始化):设置腿部的休息位置、站立位置、左右横移(螃蟹步)初始位置,以及前后行走初始位置;
- Wave(腿部摆动):控制前腿摆动 4 次后,回归站立位置;
- TurnLeg(腿部转向):控制机器人左转或右转;
- MoveLeg(腿部移动):控制机器人前进或后退;
- CrouchLeg(腿部下蹲):控制机器人前部下蹲(重心压在前腿)或后部下蹲(重心压在后腿)。
四、核心运动功能原理
腿部运动基于 “成对协作” 模式,即 1&2 号腿、3&4 号腿、5&6 号腿分别为一组协同动作。运动包含两个基础动作:“向前伸展拉动” 与 “向后蹬推”;后退时则反向执行这两个动作。例如:
- 前进:1&2 号腿拉动机身,5&6 号腿蹬推机身,3&4 号腿维持稳定;
- 横移(螃蟹步):动作逻辑与前后行走一致,但腿部运动方向与机身呈 90°,此时 3&4 号腿也会与其他腿组同步运动;
- 普通行走:腿组交替动作;
- 横移行走:1&5 号腿为一组,3 号腿则与 1&5 号腿交替跨步。
五、各运动功能详细说明
以下为主要运动功能的执行流程,每个功能均由多个运动单元按固定顺序组合完成:
- 休息(RESTING)
- 从站立状态开始,所有大腿部(Femur)舵机向上转动,使机身落在 4 个支撑垫上;同时,所有小腿部(Tibia)舵机向内转动。
- 站立(STANDING)
- 从休息状态开始,所有小腿部舵机先向外转动;完成后,所有大腿部舵机转动至 90°;最后,所有小腿部舵机同步转动至 90°。
- 左转(TURNING LEFT)
- 1、3、5 号腿向远离头部的方向转动 45°,同时 2、4、6 号腿向靠近头部的方向转动 45°;动作完成后,所有髋部(Coax)舵机从当前位置转回标准 90°,机身随之逆时针转动。
- 右转(TURNING RIGHT)
- 1、3、5 号腿向靠近头部的方向转动 45°,同时 2、4、6 号腿向远离头部的方向转动 45°;动作完成后,所有髋部舵机从当前位置转回标准 90°,机身随之顺时针转动。
- 前部下蹲(CROUCH FORWARD)
- 1&2 号腿通过大腿部和小腿部舵机向下转动,5&6 号腿通过大腿部和小腿部舵机向上转动,3&4 号腿保持标准位置不变。
- 后部下蹲(CROUCH BACKWARD)
- 1&2 号腿通过大腿部和小腿部舵机向上转动,5&6 号腿通过大腿部和小腿部舵机向下转动,3&4 号腿保持标准位置不变。
- 前腿摆动(WAVING)
- 仅控制 1&2 号腿:髋部舵机沿 50° 弧度摆动,大腿部与小腿部舵机也同步沿 50° 弧度摆动;同时,3&4 号腿向头部方向转动 20°,以提供更稳定的支撑。
- 前进(FORWARD WALKING)
- 1&6 号腿、2&5 号腿、3&4 号腿需协同动作:1 号腿拉动机身时,6 号腿同步蹬推机身;该动作完成后,2&5 号腿重复相同动作;在每个动作循环中,3&4 号腿需同步执行向前移动动作。
- 后退(REVERSE WALKING)
- 动作逻辑与前进完全相反(即 “向后伸展拉动” 与 “向前蹬推” 交替)。
- 向左横移(CRAB WALKING LEFT)
- 初始动作:1、2、5、6 号腿均向运动方向转动 45°,使所有腿部与运动方向对齐(3&4 号腿已处于正确朝向);所有大腿部与小腿部舵机初始位置为 90°。
- 步态流程:两组各 3 条腿交替跨步(第一组:1、5、4 号腿;第二组:3、2、6 号腿)。
- 第一组动作:1&5 号腿拉动,4 号腿蹬推;
- 第二组动作:动作反向,3 号腿拉动,2&6 号腿蹬推;
- 横移过程中,髋部舵机不动作;每组腿移动时,会抬起另一组静止的腿。
- 向右横移(CRAB WALKING RIGHT)
- 动作逻辑与向左横移完全相反,但初始时腿部需向右侧转动 45° 以对齐运动方向。
注:横移时,机器人头部会随横移方向(左 / 右)转动,以便 HC-SR04 超声波模块在移动过程中持续检测障碍物。
六、腿部高度校准(LEG SETTING)
为使六足机器人保持水平站立,所有腿部需保持相同高度。校准步骤如下:
- 将机器人放置在支撑块上,通过 “站立” 与 “休息” 指令循环,测量每条腿脚掌(末端执行器)离地面的距离;
- 为每个脚掌套上橡胶套 —— 不仅增强抓地力,还可微调腿部长度,目标是使所有腿部的高度差控制在 5 毫米以内。
将所有舵机设定为 90° 较为简单,但舵机臂与大腿部组件两端的连接易出现问题:舵机臂内部齿牙的微小转动角度差异,可能导致腿部高度差达 20 毫米。通过将固定螺丝更换到舵机臂的不同安装孔中,可修正这 20 毫米的高度差。开发过程中特意选择此机械校准方式,而非通过软件补偿高度差,以确保硬件层面的稳定性。
0
0
0
qq空间
微博
复制链接
分享