【训练营】仿生四足机器狗 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 【训练营】仿生四足机器狗

简介:一款基于传志Hi3861模组的四足机器狗。腿部共由8个mg90s舵机组成,每条腿两个自由度,基于运动学逆解,可实现丰富的动作模式,目前已添加蓝牙遥控和初步验证的人脸跟随功能。

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2022-06-21 16:11:00
更新时间: 2022-11-18 21:46:39
描述

项目介绍



开源链接仿生四足机器狗

一款基于传志Hi3861模组的四足机器狗。腿部共由8个mg90s舵机组成,每条腿两个自由度,基于运动学逆解,可实现丰富的动作模式,目前已添加蓝牙遥控和初步验证的人脸跟随功能。
imgTitle.jpg

参考资料

原项目和教程来自立创开源社区,自制版本已开源至上述平台

电路设计

主要元器件选型

  • 主控:Hi3861模组
image1.png
  • 舵机驱动ic:pca9685
image2.png
  • 供电:7.4V 2s电池供电,带3P充电接口
  • 电源管理:5v降压dcdc或LDO(LM1084)+AMS1117-3.3
  • IO接口:舵机接口16个
  • 拓展IO:mpu6050+超声波传感器+蓝牙串口
  • TypeC+CH340串口下载电路
  • 开关
  • 电源指示灯
  • 二极管电源隔离
  • 舵机:mg90s 180度,8个
连接引脚分配
舵机驱动IIC
GPIO10 --> SDA
GPIO9 --> SCL

超声波传感器

GPIO07 -->trig

GPIO08 -->echo



其余IO全部引出,同时引出3.3V和5V电源接口,便于外接模块供电

PCB设计

  • 3D预览图
    image3.png
设计文件见立创EDA工程文件

结构设计

solidworks建模文件见附件 硬件部分/hardware/structure
image5.png
img11.jpg

结构优化

  • 足底体积扩充,增大摩擦力
  • 增加侧面和底面开槽,减轻整体重量并便于拓展模块安装

紧固件选型

  • M2螺丝螺母
  • M2.510螺母
  • M2.516螺丝螺母
  • M315双通铜柱
  • M340 双通铜柱
  • M3螺母

3D打印

使用嘉立创三维猴提供的光固化打印,材料为SLA光敏树脂
img6.jpg

软件设计

运动规划

参数标定

  • 舵机位置记录
    image7.png
  • 舵机编号定义
    上图是教程里提供的位置编号,由于设计电路时未参考视频,实际连接方式与图中不一致,对应编号按以下定义给出:
//leg redefine
// left front leg
#define LF_A    12
#define LF_B    13
// left back leg
#define LB_A    2
#define LB_B    3
// right front leg
#define RF_A    11
#define RF_B    10
// right back leg
#define RB_A    5
#define RB_B    4
  • 腿参数长度测量值(向右为正方向,以右前腿为标准)
    实际安装后的腿长测量,与软件默认长度不一致,需要结合实际情况进行修改。
    image8.png

逆解算法验证

在开源工程文件中提供了逆解代码,核心函数为dog_leg_move()函数。需要根据实际设计情况,修改相应的参数。提取出逆解运算代码在dec c++中进行运行测试,根据实际测试结果,对算法进行调整,一方面需要交换alpha 、beta位置,并且beta角度输出相差180度,另一方面还要修改角度输出结果,最终验证情况如下图,逆解结果十分精准。修改后的代码已放在附件中,可自行查看。
image9.png

步态设计

利用上述适配好的逆解算法,规划运动路径,每条运动路径的输入数据为末端坐标集合,解算后将传递给舵机执行对应的角度。
  • 踏步
    设计运动位置坐标为(0,60)--> (0,70),设置一定的周期循环运动,踏步快慢由此周期决定。设计简单步态:对角位置同时运动,同侧一上一下。
  • 运动步态
    使用步态模拟器设置并导出末端轨迹的二维数组,循环执行,因为得到的是坐标数据,需选择路径轨迹数据导出而非路径点数据。
    • 前进后退:对角线同步执行,后退为反方向运动
    • 左右转向:运动方式同前后方向,但调整左右步态距离,类似差速转向
    • 娱乐动作设计:
      • 招手
      • (撒尿...)

鸿蒙开发环境

  • 主要编译指令
hb set //开发环境初始化,源码操作一次即可
hb clean //清除编译
hb build //编译
  • 开发说明
    基于鸿蒙轻量系统内核LiteOS-M,可采用各类子系统和实时操作系统框架下的开发方式。
    开发时自行创建了一个任务线程,各项功能均在该线程中实现,使用方式请参考文章开头提供的主控板资料。
官方开发文档参考:OpenAtom OpenHarmony

Hi3861串口驱动开发

拟使用串口实现与模块之间的电路连接,但实际调试时未能调试完成,以下资料仅供参考。
  • 使用串口1,连线:
GPIO6--UART1_TX
GPIO5--UART1_RX

K210识别跟随


K210是一款性能优越的AI处理芯片,搭载嘉楠自研的KPU神经网络处理器,支持各种主流的网络模型。测试中选用了sipeed设计的K210 maix M1n模组,使用基于MicroPython的MaixPy IDE进行开发,上手难度较低。

运行人脸检测模型

人脸检测模型基于yoloV2框架,烧录模型并运行识别程序后,实测检测帧率可达10+fps,效果显著。
k210.jpg
  • 串口通信程序
    连线
GPIO8--TX
GPIO21--RX

串口输出结果:(151, 135, 24, 33) (x, y, w, h) x: 水平轴,y: 竖直轴

由于Hi3861串口通信调试不成功,改用IO口电平传递数据
k210--Hi3861
08--05
21--06
07--14
15--11
  • IO通信模式
    控制口 p15,3个IO口:p07 p21 p08,共可传递八个识别状态

ESP32蓝牙遥控程序

  • ESP32程序
    基于Arduino环境开发,接收手机发送的控制指令,通过IO口控制传递给主控芯片。
  • 手机通过蓝牙连接ESP32,借助定制蓝牙助手发送控制指令。
    img10.jpg

提交代码说明

  • 主控代码
    Hi3861部分使用genkipi开源固件开发,共修改如下两个文件(注意文件路径),见附件`软件部分/software/final_code/app`
    image11.png
  • ESP32代码
    见附件软件部分/software/esp32_control
  • K210代码
    见附件软件部分/software/k210
  • 可直接烧录固件
    记录了所有共11版调试程序固件,见软件部分/software/bin
  • 运动学逆解测试代码
    使用devcpp环境编译,可直接运行,见附件软件部分/software/inverse_test

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP