Arduino 六足机器人


ℒøṽℯ
转载
发布时间: 2025-09-13 17:57:34 | 阅读数 0收藏数 0评论数 0
封面
机器人以 Arduino Mega 为主控,18 个舵机构成腿部系统(后替换为高性能款),支持前进、转向、侧移等动作;头部集成超声波避障、WiFi 摄像头(传实时视频)、灯环及 LCD 屏。电源分两组供电,通过 BT12 蓝牙连定制安卓应用实现控制与视频查看.
1

所需材料

  1. 20 个 DS3218 舵机
  2. 1 套六足机器人底座套件
  3. 1 块 Arduino Mega R3 开发板
  4. 1 块 Arduino Mega V2 版本传感器扩展板
  5. 1 个双槽 18650 电池座
  6. 2 个两极电源开关
  7. 1 个绿色 LED 灯和 1 个 220 千欧电阻
  8. 2 组带魔术贴固定件的 6V 2800mAh 电池组
  9. 2 节 3400mAh 的 18650 电池
  10. 1 个 HC-SR04 超声波模块
  11. 1 个 BT12 蓝牙模块
  12. 1 块 Arduino V3 NodeMcu Lua WIFI ESP8266 12E 物联网开发板
  13. 1 块带 OV2640 200 万像素镜头的 Arducam Mini 模块摄像头扩展板
  14. 1 个 Pixie Neon 16 段 LCD 灯环
  15. 1 个带附加 IIC 适配器的 1602 型(16 列 2 行)LCD 显示屏
  16. 1 个适用于 Arduino Mega 的 5V 电源插头
  17. 1 个适用于 NodeMcu 模块的 5V 微型 USB 插头
  18. 1 个 DC-DC 降压模块
  19. 1 个 70 毫米 ×120 毫米 ×39 毫米的方形黑色塑料盒(用于机身)
  20. 1 个 70 毫米 ×50 毫米 ×70 毫米的黑色塑料盒(用于头部)
  21. 4 个 40 毫米长的 M3 规格黄铜支撑柱,以及 4 个橡胶支撑垫
  22. 若干公对公杜邦线、焊锡、M3 规格螺丝与螺栓,以及热熔胶


腿部运动采用定制逻辑控制。摄像头通过两个独立舵机实现运动,可完成上下、左右转动及归中动作。摄像头通过 WIFI 连接进行控制,其画面可在安卓应用的 WebView 视图中显示。


2

舵机

每个舵机的转动角度范围为 0°(最小)至 180°(最大)。


每个舵机均采用三位数字组合(LegCFT)进行标识:其中 C 代表机身(髋部,COXA),F 代表大腿部(FEMUR),T 代表小腿部(TIBIA)。例如,410 代表第四条腿的小腿部舵机,同理 411 也代表第四条腿的小腿部舵机(注:原文中 410 与 411 表述重复,疑似笔误)。舵机编号范围为 100 至 611。


每条机械腿的舵机末端需安装橡胶材质的脚掌,以缓冲冲击力并增强抓地力。


  1. 第一条腿(前部):100、110、111 号舵机
  2. 第二条腿:200、210、211 号舵机
  3. 第三条腿:300、310、311 号舵机
  4. 第四条腿:400、410、411 号舵机
  5. 第五条腿(后部):500、510、511 号舵机
  6. 第六条腿:600、610、611 号舵机

舵机默认角度与休息角度

  1. 所有髋部(COXA)舵机的默认角度为 90°。
  2. 大腿部(FEMUR)舵机的默认角度为 90°,休息状态角度为 45°。
  3. 所有腿部小腿部(TIBIA)舵机的默认角度为 90°;其中 1、3、5 号腿的小腿部舵机休息角度为 175°,2、4、6 号腿的小腿部舵机休息角度为 5°。

颈部舵机(控制摄像头)

  1. 颈部 1 号舵机(编号 700):负责上下转动,角度限制为 75° 至 105°。
  2. 颈部 2 号舵机(编号 800):负责左右转动,角度限制为 45° 至 135°。

舵机运行限制

在发送后续 “写入”(write)指令前,需先将舵机的 “写入” 操作次数限制为 3 次,之后加入 10 毫秒的延迟。此举有助于降低电池的负载。


3

指令

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 = 播放乐曲


4

运动控制

髋部舵机(Coax Servo)的转动方向沿机身轴线方向:正前方为 0°,正后方为 180°。不过,该髋部舵机及其他所有舵机的角度均限制在 45° 至 135° 之间。

基本腿部运动(前进、后退、左转、右转)

无论是前进、后退、左转还是右转,腿部运动的基本流程均为:先通过大腿部(FEMUR)和小腿部(TIBIA)舵机抬起腿部,随后髋部舵机动作,最后再通过大腿部和小腿部舵机放下该腿。

前进与后退

前进或后退时,腿部成对工作(分别为 1&2 号腿、3&4 号腿、5&6 号腿)。


  1. 简单前进动作:1&2 号腿先从当前位置尽可能向前移动,接着是 3&4 号腿,最后 5&6 号腿重复相同动作;之后六个髋部舵机从这个向前伸展的位置回到初始位置。
  2. 后退动作则是上述流程的反向操作。
  3. 此外,在前进过程中,HC-SR04 超声波模块会持续检测前方障碍物,若检测到障碍物,六足机器人会随机向左或向右转。

左转与右转

左转或右转时,成对腿部协同工作,但运动方向相反。


  1. 右转示例:1 号腿从当前位置向后转动至 135°,同时 2 号腿向前转动至 45°;3&4 号腿、5&6 号腿也重复这一动作。完成后,髋部舵机从初始位置转动至新位置,使机身向运动方向(即右侧)扭转;该过程会持续到完成所需的右转角度。
  2. 左转动作则是上述流程的反向操作:1 号腿从当前位置向前转动至 45°,同时 2 号腿向后转动至 135°,后续腿部动作以此类推。

起身与休息

这两个动作均无需使用任何腿部的髋部舵机:


  1. 起身时,所有腿部的小腿部(TIBIA)舵机从当前位置转动至最大角度 45°;
  2. 休息时,这些大腿部(FEMUR)舵机转动至最低位置(175° 或 5°)。
  3. 小腿部舵机的运动规律与此一致:起身时转动至最大角度 45°,休息时转动至最低角度(即 175° 或 5°)。

前部下蹲与后部下蹲

这两个动作互为镜像操作:


  1. 前部下蹲时,1&2 号腿处于最低位置,5&6 号腿处于最高位置;3&4 号腿保持中间位置,与 1&2 号腿组和 5&6 号腿组的位置相协调。
  2. 后部下蹲时,1&2 号腿处于最高位置,5&6 号腿处于最低位置。


5

头部摄像头 / 超声波模块

头部由一个尺寸为 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 开发板供电,另一组为所有舵机供电。


  1. 第一组电池:由两节 3400mAh 的 18650 电池组成,输出电压为 7.4V。
  2. 第二组电池:由两组 6V 2800mAh 电池组并联而成,输出电压为 6.4V,容量提升至 5600mAh,通过魔术贴条固定在六足机器人底部。


6

腿部运动控制

机械腿可成对动作,也可单独动作。每条机械腿包含三个关节:


  1. 名为 “髋部”(Coax)的机身关节,转动角度范围为 45° 至 135°;
  2. 名为 “大腿部”(Femur)的大腿关节,转动角度范围为 45° 至 135°;
  3. 名为 “小腿部”(Tibia)的小腿关节(或称末端执行器),转动角度范围为 45° 至 135°。


已编写定制软件,用于控制腿部运动。

腿部关节角度定义

  1. 髋部(Coax):45° 为朝向头部后方,90° 为中间位置,135° 为朝向正前方。
  2. 大腿部(Femur):45° 为离地面最高的位置,90° 为中间位置,135° 为离地面最低的位置。
  3. 小腿部(Tibia):45° 为离机身最远的位置,90° 为中间位置,135° 为离机身最近的位置。


默认初始状态:所有舵机均处于 90° 中间位置。

各类腿部运动方式

  1. 前进(Forward)
  2. 1、2 号腿:大腿部舵机抬起至 135°,髋部舵机转动至 45°,小腿部舵机转动至离机身最远的 45°,随后大腿部舵机降下至 45°。
  3. 3、4 号腿组及 5、6 号腿组重复上述动作。
  4. 之后,6 个髋部舵机从 45°(向后)转回 90° 中间位置,6 个大腿部舵机从 45°(抬起)转回 90° 中间位置,最后所有小腿部舵机从 45° 转回 90° 中间位置。
  5. 后退(Reverse)
  6. 动作流程与前进一致,但腿部启动顺序相反:先 5、6 号腿,再 3、4 号腿,最后 1、2 号腿。
  7. 左转(Left)
  8. 1、3、5 号腿按后退方向动作,2、4、6 号腿按前进方向动作(前进与后退的动作标准与前文一致)。
  9. 为完成转向,六个髋部舵机均转动 45°,使机身随之向左扭转。该过程持续至完成所需左转角度。
  10. 右转(Right)
  11. 2、4、6 号腿按后退方向动作,1、3、5 号腿按前进方向动作(动作标准与前文一致)。
  12. 髋部舵机的转动方向与左转相反,使机身向右侧扭转。
  13. 休息(Rest)
  14. 所有髋部、大腿部舵机均处于中间位置,所有小腿部舵机均处于最低位置(45°),实际上使前、中、后三组腿部均处于下蹲状态。
  15. 后部下蹲、前部站立(Crouch rear, stand front)
  16. 1、2 号腿处于最高位置,3、4 号腿处于中间位置,5、6 号腿处于最低位置。
  17. 后部站立、前部下蹲(Stand rear, crouch front)
  18. 1、2 号腿处于最低位置,3、4 号腿处于中间位置,5、6 号腿处于最高位置。
  19. 向左横移(Crab left)
  20. 1、5 号腿抬起并向左侧伸展,同时 2、6 号腿抬起并向机身下方收缩。待这四条腿均落地后,所有小腿部舵机回归中间位置。最后 3、4 号腿重复上述动作。
  21. 向右横移(Crab right)
  22. 2、6 号腿抬起并向右侧伸展,同时 1、5 号腿抬起并向机身下方收缩。待这四条腿均落地后,所有小腿部舵机回归中间位置。最后 3、4 号腿重复上述动作。

头部运动控制

  1. 头部向左转动:1 号颈部舵机转动至 45°,之后两个颈部舵机均回归 90° 中间位置。
  2. 头部向右转动:1 号颈部舵机转动至 135°。
  3. 头部向上转动:2 号颈部舵机转动至 45°。
  4. 头部向下转动:2 号颈部舵机转动至 135°。
  5. 头部左右摆动: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 电压仍会导致舵机运行不稳定。


7

组装

一、腿部组装(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°)。校准需满足以下结构要求:


  1. 2 号与 5 号髋部舵机的内侧面需保持平行,1 号与 6 号、3 号与 4 号髋部舵机同理;
  2. 组装阶段,所有大腿部舵机与髋部舵机需呈 90° 固定;
  3. 所有大腿部舵机的大腿臂需以 90° 角度安装;
  4. 所有小腿部舵机需与小腿组件呈 90° 固定;
  5. 2、4、6 号腿的小腿部舵机需以 105° 角度安装在大腿臂上,1、3、5 号腿的小腿部舵机则以 75° 角度安装。


重要提示:校准测试期间,需持续监测所有舵机的温度。若舵机发烫,说明其负载过大,可能发生故障(正常情况下,舵机仅应微热)。


初始校准步骤如下:


  1. 机器人通电后,从停靠状态切换至站立状态,确保站立姿势稳定、水平,且所有舵机均无过热现象;
  2. 为维持稳定姿势,需向每个舵机发送指令,指令间隔需小于 20 毫秒(本设计采用 10 毫秒间隔);
  3. 所有舵机的转动范围均为 0° 至 180°(可双向转动),其中大腿部舵机的 0° 和 180° 为垂直方向,90° 为水平方向。


在安装每个舵机前,需向其发送初始化指令,设定其休息时的初始角度:所有髋部舵机的初始休息角度为 90°;1、3、5 号腿的大腿部和小腿部舵机初始休息角度为 55°;2、4、6 号腿的大腿部和小腿部舵机初始休息角度为 125°。


重要提示:每次开始校准前,务必确保所有电池均已充满电。


六足机器人始终从停靠状态启动(此时机身完全由 4 个支撑垫支撑)。从该状态开始,所有大腿部和小腿部舵机从初始休息角度循环调整至站立角度(最终所有舵机均处于 90°)。发送 “站立”(stand)指令即可完成站立动作:该指令要求所有腿部分两组抬起并重新放下,第一组为 1、5、4 号腿,第二组为 2、6、3 号腿。


8

软件

该机器人的软件分为三部分:第一部分是运行在 Arduino Mega 上的代码,第二部分是运行在头部 NodeMcu 模块上的 Arduino 代码。设备间通信通过 BT12 蓝牙模块实现 —— 该模块接收来自安卓平板(具体为三星 Tab 2)的指令,而平板上运行的是通过 Android Studio 开发的定制应用,正是该应用向六足机器人发送控制指令。同时,该应用还能通过 NodeMcu 模块内置的 WiFi,接收来自机器人的实时视频流。

一、安卓应用代码(ANDROID CODE)

定制安卓代码通过 Android Studio 开发,为双界面应用提供运行平台。应用包含两个界面:


  1. 主界面:用户可向六足机器人发送控制指令,并查看来自机器人头部的实时视频流;
  2. WiFi 连接界面:通过点击 “WiFi” 按钮进入,用户需在此先连接机器人的蓝牙,再连接由机器人头部 NodeMcu 模块生成的 WiFi 热点。


应用通过平板内置蓝牙,以 9600 波特率(serial 9600 Baud)的串口通信方式,向机器人的 BT12 蓝牙模块发送单字母指令(如前文 Step 3 中的 A = 停止、B = 前进等)。

二、Arduino 代码(ARDUINO CODE)

代码开发始于一个测试程序,旨在验证六足机器人机身、头部及基本功能的运行情况。由于头部与机身的运行完全独立,两者的软件开发与功能测试同步进行。头部控制代码在先前开发的基础上优化,新增了舵机运动控制逻辑,同时集成了 1602 型 LCD 显示屏、HC-SR04 超声波模块及 16 段 LED 灯环的控制功能;此外,还需开发额外代码,以实现通过 WiFi 访问头部实时视频流的功能。


机身控制代码的开发流程如下:


  1. 首先实现舵机初始安装校准与休息状态下的初始位置设定;
  2. 基于初始位置,编写代码使机器人完成 “站立” 动作;
  3. 逐步新增其他运动功能代码,将头部与机身的控制代码整合,并加入与安卓应用的串口通信逻辑。

三、舵机测试代码与腿部运动功能

舵机测试代码为腿部及机身运动功能的开发提供支持,主要实现以下功能:


  1. InitLeg(腿部初始化):设置腿部的休息位置、站立位置、左右横移(螃蟹步)初始位置,以及前后行走初始位置;
  2. Wave(腿部摆动):控制前腿摆动 4 次后,回归站立位置;
  3. TurnLeg(腿部转向):控制机器人左转或右转;
  4. MoveLeg(腿部移动):控制机器人前进或后退;
  5. CrouchLeg(腿部下蹲):控制机器人前部下蹲(重心压在前腿)或后部下蹲(重心压在后腿)。

四、核心运动功能原理

腿部运动基于 “成对协作” 模式,即 1&2 号腿、3&4 号腿、5&6 号腿分别为一组协同动作。运动包含两个基础动作:“向前伸展拉动” 与 “向后蹬推”;后退时则反向执行这两个动作。例如:


  1. 前进:1&2 号腿拉动机身,5&6 号腿蹬推机身,3&4 号腿维持稳定;
  2. 横移(螃蟹步):动作逻辑与前后行走一致,但腿部运动方向与机身呈 90°,此时 3&4 号腿也会与其他腿组同步运动;
  3. 普通行走:腿组交替动作;
  4. 横移行走:1&5 号腿为一组,3 号腿则与 1&5 号腿交替跨步。

五、各运动功能详细说明

以下为主要运动功能的执行流程,每个功能均由多个运动单元按固定顺序组合完成:


  1. 休息(RESTING)
  2. 从站立状态开始,所有大腿部(Femur)舵机向上转动,使机身落在 4 个支撑垫上;同时,所有小腿部(Tibia)舵机向内转动。
  3. 站立(STANDING)
  4. 从休息状态开始,所有小腿部舵机先向外转动;完成后,所有大腿部舵机转动至 90°;最后,所有小腿部舵机同步转动至 90°。
  5. 左转(TURNING LEFT)
  6. 1、3、5 号腿向远离头部的方向转动 45°,同时 2、4、6 号腿向靠近头部的方向转动 45°;动作完成后,所有髋部(Coax)舵机从当前位置转回标准 90°,机身随之逆时针转动。
  7. 右转(TURNING RIGHT)
  8. 1、3、5 号腿向靠近头部的方向转动 45°,同时 2、4、6 号腿向远离头部的方向转动 45°;动作完成后,所有髋部舵机从当前位置转回标准 90°,机身随之顺时针转动。
  9. 前部下蹲(CROUCH FORWARD)
  10. 1&2 号腿通过大腿部和小腿部舵机向下转动,5&6 号腿通过大腿部和小腿部舵机向上转动,3&4 号腿保持标准位置不变。
  11. 后部下蹲(CROUCH BACKWARD)
  12. 1&2 号腿通过大腿部和小腿部舵机向上转动,5&6 号腿通过大腿部和小腿部舵机向下转动,3&4 号腿保持标准位置不变。
  13. 前腿摆动(WAVING)
  14. 仅控制 1&2 号腿:髋部舵机沿 50° 弧度摆动,大腿部与小腿部舵机也同步沿 50° 弧度摆动;同时,3&4 号腿向头部方向转动 20°,以提供更稳定的支撑。
  15. 前进(FORWARD WALKING)
  16. 1&6 号腿、2&5 号腿、3&4 号腿需协同动作:1 号腿拉动机身时,6 号腿同步蹬推机身;该动作完成后,2&5 号腿重复相同动作;在每个动作循环中,3&4 号腿需同步执行向前移动动作。
  17. 后退(REVERSE WALKING)
  18. 动作逻辑与前进完全相反(即 “向后伸展拉动” 与 “向前蹬推” 交替)。
  19. 向左横移(CRAB WALKING LEFT)
  20. 初始动作:1、2、5、6 号腿均向运动方向转动 45°,使所有腿部与运动方向对齐(3&4 号腿已处于正确朝向);所有大腿部与小腿部舵机初始位置为 90°。
  21. 步态流程:两组各 3 条腿交替跨步(第一组:1、5、4 号腿;第二组:3、2、6 号腿)。
  22. 第一组动作:1&5 号腿拉动,4 号腿蹬推;
  23. 第二组动作:动作反向,3 号腿拉动,2&6 号腿蹬推;
  24. 横移过程中,髋部舵机不动作;每组腿移动时,会抬起另一组静止的腿。
  25. 向右横移(CRAB WALKING RIGHT)
  26. 动作逻辑与向左横移完全相反,但初始时腿部需向右侧转动 45° 以对齐运动方向。


:横移时,机器人头部会随横移方向(左 / 右)转动,以便 HC-SR04 超声波模块在移动过程中持续检测障碍物。

六、腿部高度校准(LEG SETTING)

为使六足机器人保持水平站立,所有腿部需保持相同高度。校准步骤如下:


  1. 将机器人放置在支撑块上,通过 “站立” 与 “休息” 指令循环,测量每条腿脚掌(末端执行器)离地面的距离;
  2. 为每个脚掌套上橡胶套 —— 不仅增强抓地力,还可微调腿部长度,目标是使所有腿部的高度差控制在 5 毫米以内。


将所有舵机设定为 90° 较为简单,但舵机臂与大腿部组件两端的连接易出现问题:舵机臂内部齿牙的微小转动角度差异,可能导致腿部高度差达 20 毫米。通过将固定螺丝更换到舵机臂的不同安装孔中,可修正这 20 毫米的高度差。开发过程中特意选择此机械校准方式,而非通过软件补偿高度差,以确保硬件层面的稳定性。


FZZ
FTLMU59JOSXX5HU.fzz
26.46KB
INO
FXGCBFPJOSXX5HW.ino
21.66KB
FZZ
FGPSN8JJOSXX5HV.fzz
24.89KB
INO
F312XI4JOSXX5HT.ino
28.44KB
INO
FCBV1N5JOSXX5HS.ino
59.85KB
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报