项目介绍:设计一款四足机器人,样子如下

DtoVyNRLxR3bBQr5NtObPNjsW9qjqx25ZtK3Apt3.jpeg

vHykDEkr7mvvEJfwgBxS2DWOC4yK21nzyv1sg4Sf.jpeg

QtMwjgX0kWagRxXnUMsmQTv0yp8e2jCwMrZEY19E.gif

实际上3D打印回来组装完成是这样:

hZglajFiJHHtpwlUVL0vWS0MYz6BDmoHtujYjLgk.jpeg

GWOEjudOZHB752oqg9B0QnQ3CUHe53A7emuUJxjR.jpeg

t2CQWvUSYg0lV4EhaqrMOcIRv9B4Ljds1XPBqrrY.jpeg


实现方法:

一、结构部分

参考灯哥四足机器人结构制作,附件为最新版的3D图纸,可直接打样生产,生产价格为200元左右。 具体开源链接点击这里:

灯哥开源四足机器人项目



PgCINBVFDbrMWBNGd49PW5JQdHijEqrW1KqK5Xnm.png

二、电路部分

1、基于RT-Thread官方ART-PI H750开发板模组实现主控部分。资料如下:

1669861767vyT48Lhn.jpg
详细资料见官方链接:
ART-PI H750开发版详细资料:
https://art-pi.gitee.io/website/
参考文档:
https://blog.csdn.net/sinat_31039061/article/details/109923612
github 仓库地址
https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi
gitee 仓库地址
https://gitee.com/mirrors/ART-Pi
购买链接:
https://item.taobao.com/item.htm?id=629477793246&mt=

2、8路舵机采用驱动芯片PCA9685PW来管理,此芯片可控制多达16路的舵机。
采用IIC接口与单片机连接。

四足机器狗的每条狗腿采用两个舵机控制,一共需要8个舵机。

pca9850.jpg        O1CN010xbbrB1OVDsNi5GP5_!!361121710.jpg

3、平衡方面采用MPU6050模块通过读取角速度,陀螺仪数据来识别狗狗当前的状态,
从而更好的控制狗狗行走。
mpu6050.jpg

三、软件部分

采用RT-Thread嵌入式系统,编译软件采用RT-Thread Studio编写代码。软件界面如下:


RT-Thread Studio下载地址
image.png
image.png
1、因为RT-Thread嵌入式系统很完善,有很多第三方的软件包,目前可以直接在系统里找到的固件包,只需要简单修改就能实现搜需功能。
1677208996170.png

首先测试MPU6050模组的功能

    RT-Thread 上编程,需要用到 mpu6000/6050/6500/9250/icm20608 等 6 轴传感器时,使用 mpu6xxx 软件包就可以轻松完成传感器的配置以及传感器数据的读取,本章介绍 mpu6xxx 软件包提供的常用 API。

初始化函数

  • struct mpu6xxx_device *mpu6xxx_init(const char *dev_name, rt_uint8_t param);
使用指定的通信设备(I2C/SPI)初始化mpu6xxx ,并返回控制句柄。
[td]
参数
描述
dev_name用于同 mpu6xxx 通信的设备名(支持 I2C 总线设备和 SPI 设备)
paramI2C 通信,根据此处传入的 I2C 地址寻找设备(例如:0x68)
返回描述
struct mpu6xxx_device *mpu6xxx_device 结构体的指针,它在调用 mpu6xxx 库的其他函数时使用
NULL失败

读取陀螺仪数据


  • rt_err_t mpu6xxx_get_gyro(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *gyro);
读取陀螺仪数据 (单位: deg/10s)
[td]
参数
描述
devmpu6xxx_device 结构体的指针
gyro存储 mpu6xxx 3轴陀螺仪数据 结构体的指针
返回描述
RT_EOK成功
< 0失败
3 轴陀螺仪数据的结构体定义如下

  • struct mpu6xxx_3axes
  • {
  •     rt_int16_t x;
  •     rt_int16_t y;
  •     rt_int16_t z;
  • };
读取加速度计数据

  • rt_err_t mpu6xxx_get_accel(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *accel);
读取加速度计数据 (单位: mg)
[td]
参数
描述
devmpu6xxx_device 结构体的指针
accel存储 mpu6xxx 3轴加速度数据 结构体的指针
返回描述
RT_EOK成功
< 0失败

接下来测试PCA9685模组的功能

pca9685 软件包介绍

pca9685 软件包是针对通过 I2C 控制 PCA9685 产生16路 PWM 信号推出的一个软件包。使用这个软件包,可以在 RT-Thread 上非常方便的使用该器件,并且支持一个 I2C 总线上挂载多个 PCA9685。
本文主要介绍该软件包的使用方式、API,以及 MSH 测试命令。
gen_pwm_test.png

狗狗运动算法简述: 参考菠萝狗
算法参考:灯哥四足机器人 【教程】灯哥0基础DIY四足机器人指南
一、运动学正解

  • 已知:大腿、小腿的角度
  • 求:足端坐标
1、运动学正解解算过程机器狗的腿部按图中的位置放置,在腿部所在平面作一个坐标系,如下图所示。大腿和x轴形成的夹角为A1(大腿的角度),大腿延长线和小腿形成的夹角为A2 (小腿的角度)。
1TyAicRFVZJRzmnugdOM0gwd3hq8PfIKeutq6vF3.png

MH6r71dMcNLu83nq9Gl34cG5lfpsJOsODMjhXCT6.png


2、计算方法
fJCQbYQgfcVCPnB3kxHIRgGVSpJPv6WOYYTEgzwe.png
3、旋转变换--参考灯哥开源视频:旋转变换

二、运动学逆解

  • 已知:足端坐标
  • 求:大腿、小腿的角度
    m59hJwpHoizd95Y4pA30oRggWQLBPmzjnfmjOOKm.png
    aI98A8GiPXEiGi0fsAAfqi8NYdHu8uj2B9Nel1zf.png DMqrn225BmiXuR2JipQWZnGq9NhkSj2U1ma6ghDw.png
四、组装部分采购链接
1、配件采购:
(1)大腿连接轴承:需要采购4pcs。采购链接
UXRWupR5r0fGxxDodwZUwTw3tIc1727LZIB5a5hr.png

(2)防松螺母:连接必须要购买防松螺母,不然走几步就松了。采购M2 M3型号各10pcs。
采购链接
w5YFw6gKmvwy6yP0ChWdLg4xbqpLqX2IZV7AbGtX.png
(3)小腿拉杆总成:采购M2X35mm 4pcs 采购链接
2rZSpj7tkC0kgO6xfuicXWLWo8nFsyTXQGrPOoEV.png

(4)MG90S舵机:采购8pcs 采购链接
TuXVobWbWhsSdd8D3T1aprXhvBTZ5GGPN1twaQh4.png
(5)MPU6050模块:采购1pcs 采购链接
xKfgO9TWY3bnMRRuseZ9QO9z6T1P9pxwNBlSXFZs.png
(6)螺丝:采购链接[td]


螺丝名称采购数量
m2X8自攻螺丝10pcs
m2*10自攻螺丝10pcs
m2*10细牙螺丝10pcs
m2*15细牙螺丝10pcs
m3*25细牙螺丝10pcs
m3*10细牙螺丝10pcs
BSj85R9kgtxDbRrioWjQqP4pxxCk9kN98wdwOUPV.png
(7)电池:采购链接
iBaFGNYHz683CIawfbHcexiM9yENOpWNTV2bVInS.png
vTccEv5ujSPkUmdaP9mDwrU7ZNwwm7xz26q6pKgo.jpeg

演示视频

待更新,代码调试中