自制DIY 机器狗 完全教程 - MIT猎豹Cheetah
背景
3年前,MIT开源了世界上跑得最快最灵活的猎豹机器狗,自此以后,出现了大量商业化的机器狗,这里就不再一一介绍。只能说作为一个军方赞助的项目,能够开源,实属不易。
好消息是,2个月前,MIT的一个专注于猎豹的人工智能项目开源,有了大脑的机器狗现在会更加灵活。让我们来看看,猎豹机器狗进化的程度。
MIT MIni 猎豹 强化学习 模型
MIT Mini 猎豹 后空翻
结构设计
模块化关节电机
性能考虑
为了能够使得重达9.8公斤的机器狗可以灵活跑动,后空翻,对于关节电机的性能也有一定要求。每个关节电机的参数如下图,每条腿3个电机,4条腿,总共有12个电机,也就是我们通常所说的12自由度机器狗。
| 参数 | 数量 |
|---|---|
| 重量 | 480克 |
| 大小 | 96 mm O.D, 40mm axial length |
| 最大扭矩 | 17 N m |
| 连续扭矩 | 6.9 N m |
| 最大转速 | 40 rad/s @ 24V |
| 最大功率 | +250/-680 瓦 |
| 电流 | 4.5kHz @ 4.5 N m, 1.5kHz @ 17 N m |
关节结构
模块化的关节电机,如下图。

关节电机拆解后的机构。
可以看到,为了增加扭矩,电机增加了行星齿轮组,并且电机驱动器也一并组装进电机盒。

另外搜集到一些3D打印资料已分享到群文件,可自行下载,Q 760101443

四足平台设计
猎豹机器狗的整体设计如下图,金属气息浓厚。

腿部设计
腿部关节的设计。
每条腿部有3个电机,3个电机全部位于上关节处,这是为了能够减轻下腿的重量,方便机器狗可以灵活跳动。

下腿部使用皮带带动。

身体设计
身体使用厚度为1.5mm的6061硬铝制作。

身体内部装有总线驱动板和小电脑。

脚部设计
脚部安装有橡胶球。


硬件设计
有2个总线通信板SPINE,每个SPINE负责与两条腿通信,每条腿有3个电机,每个电机都有一个关节驱动器。
SPINE与电脑连接,电脑中安装控制系统,原设计使用的是UP Board的小电脑,实际上我们可以使用树莓派4B或者Jetson Nano, Jetson TX2替代。

关节驱动器
关节驱动器,使用FOC技术对电机进行控制。

每个电机都需要1个驱动器,驱动器安装在每个电机的电机盒中。

通信总线板
总线驱动板SPINE,总共需要2个SPINE,每个SPINE控制两条腿。

供电系统
使用18650电池,组装成24V 5Ah的电池组。

电源板,输出5V电压,供电给电机和控制板。

MIT Mini 猎豹,相对于以前的版本和波士顿机器狗,成本都大幅下降,普通玩家基本可以接受。
相关电路板,程序资料可以自行在群文件中下载 Q 760101443

控制系统
下载最新的控制系统源代码。
编译代码。
mkdir build
cd build
cmake ..
./../scripts/make_types.sh
make -j4
安装并运行控制系统。
1. 创建文件夹
$ mkdir mc-build
2. 创建可执行程序
$ cd mc-build; cmake -DMINI_CHEETAH_BUILD=TRUE ..; make -j
3.接入网络,并且可以使用ssh进入机器狗的嵌入式系统电脑。
3. 把编译好的系统传输到机器狗
$ ../scripts/send_to_mini_cheetah.sh
4. 使用ssh登录机器狗
5. 进入系统文件夹
$ cd robot-software-....
6. 运行控制程序
$ ./run_mc.sh
人工智能
以上,已经可以控制机器狗进行任何动作,不过如果想要机器狗能下楼梯,走不平的路,更加流畅的运动,就需要机器狗可以自我学习,不断进化。这就需要训练模型,给机器狗按上人工智能的大脑。
首先,下载源代码。
安装 pytorch 1.10 和 cuda-11.3
pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
安装 Isaac Gym
1. 下载并安装Isaac Gym Preview 3 地址 https://developer.nvidia.com/isaac-gym
$ tar -xf IsaacGym_Preview_3_Package.tar.gz
2. 安装python包
$ cd isaacgym_lib/python && pip install -e .
安装系统
$ pip install -e .
训练模型
python scripts/train.py
评估模型
python scripts/play.py
智能推荐
macOS终端字体颜色DIY教程
换了mac book后经常用Terminal登录Linux系统,强迫症的趋势下,决定修改mac终端的主题,目标是看起来跟Ubuntu一样。 效果图: 修改终端的偏好设置 打开终端的偏好设置,选一个喜欢的主题,Pro是预设的黑白配,字体我喜欢 Menlo。 添加变量 编辑~/.bash_profile,添加三个变量 LS_OPTIONS是指定没有配置的项目采用自动方案;CLICOLOR指定是否启用终...
ROS机器人DIY教程:ROS和STM32通信(常规通信方式和rosserial)之通过上层修改底层参数
本文主要介绍怎么编写代码实现在上层修改底层参数的相关知识,主要讲解使用两种通信方式来实现 1、rosserial方法,rosserial是官方对arduino提供的一种简单的通信协议,本人对这个库进行了一些改动,使其可以在STM32上进行使用,通过使用这个协议可以在STM32或者Arduino发布和订阅节点数据,详细的移植和使用参考之前的两篇博客:ros下使用rosserial和STM32F1/S...
Mybatis基础(part 1)
一.mybatis调用SQL语句 1.使用XML配置SQL语句 在SqlMapConfig.xml配置数据源并指定映射配置文件的位置(每个DAO对应的XML文件,该文件映射了DAO的全限定类名) 2.使用注解配置sql语句 在SqlMapConfig.xml配置数据源和class属性(指定被注解的dao全限定类名),在DAO上写注解。 用注解来配置,故此处使用class属性指定被注解...
Docker 容器内运行 Dubbo 服务
原文:http://www.aqcoder.com/post/content?id=41 在使用 Docker 容器内运行 Dubbo 服务的时候一个令人很头痛的问题就是服务地址注册。 Docker 容器内有自己的 IP 段,和宿主主机是隔离的,Dubbo 会使用容器内的 IP 注册到 zookeeper 注册中心上。这样其他的服务是无法访问的。 方式一:–host 一个很直接的方案就...
python基础教程
Python基础教程 一、简介 1.1 python语言介绍 python的创始人:Guido Van Rossum Python下载地址:https://www.python.org/ Python文档下载地址:https://www.python.org/doc/ Pycharm下载地址:https://www.runoob.com/w3cnote/pycharm-windows-instal...
猜你喜欢
1、Git安装与配置
1、Git安装与配置 一:版本控制 定义:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 为什么要用版本控制:在起初的项目开发中,我们会不断的编写代码,但是,害怕有一天系统突然挂掉了,完蛋,辛苦写的代码就这么没了,所有为了防止这一点,都会开发一点就以目录拷贝的形式保存下来,自己这么1.0、2.0、3.0…的这么去标记,开始的还好,后面的话你压根就不知道...
Golang net/rpc 包的深度解读和学习
Golang 提供了一个开箱即用的RPC服务,实现方式简约而不简单。本文对net/rpc 包做深度解读和学习实战。 RPC 简单介绍 远程过程调用 (Remote Procedure Call,RPC) 是一种计算机通信协议。允许运行在一台计算机的程序调用另一个地址空间的子程序(一般是开放网络中的一台计算机),而程序员就像调用调用本地程序一样,无需额外做交互编程。RPC 是一种 CS (Clien...
merge sort
归并排序(merge sort) 具体算法: I.对原数组进行分组:对数组进行遍历,每检测出一个有序序列则记录一个分组,一般分组都是上升序列,下降序列也会被转换成上升序列 II.对两两相邻的分组进行合并,合并后的分组也将被记录 III.迭代合并之前合并后的分组直到出现最后的一个有序的大分组,也就是排序的最终结果 java.util.DualPivotQuicksort类中的static void ...
Java函数的学习
java学习 百知教育学习 - 胡鑫喆 - Java函数的学习 01_函数的定义 函数的定义 概念:实现特定功能的一段代码,可反复使用 定义语法: 函数名称许遵循命名规范 函数定义在类的内部,与main函数并列,并且使函数产生作用,需进行函数的调用 使用函数去掉冗余代码 02_函数的参数 函数的参数(函数名称() 其中()就是一个参数表) 无参函数(01_函数的定义中的下划线就为无参函数) 有参函...
03-段寄存器属性探测
1.段属性探测 要点回顾: 要点回顾: 上一节课我们讲过段寄存器有96位: 我们可以通过MOV指令进行读写(LDTR和TR除外) 但我们只能看见16位,那如果证明Attribute、Base、Limit的存在呢? 1、段寄存器成员简介 2、探测Attribute 3、探测Base 3、探测Limit 课后练习:...
