最近可能需要做机械狗(四足机器人)相关的一些学习,这篇作为开篇之作,主要记录一下最近的学习的总结以及查到的资料,对机械狗的相关问题有个基础的认知,作为个人的记录,同时也为新入坑的小伙伴提供一个参考。
查看现有的一些产品,对已有产品进行梳理总结。方便清楚市场现状,以及规范未来的方向选择。
MIT的机械狗主要以MIT Cheetah 3 和MIT Cheetah mini而闻名。在DARPA的资助下,MIT开启了猎豹机器人Cheetah 3的研制,现阶段已经成为世界上奔跑速度最快的机器人。Cheetah全身重约90磅(大约41公斤)。并且采用的是腿式的行走方式,保证了其在各种路况下的平稳性。
比较好的商业化产品,拥有多种型号的产品,其中让人印象最深刻的是出现在去年春晚的犇犇,在春晚上表演了后空翻作揖等多种姿态。
另外还有面向消费级的A1和GO1两款机器狗,可以达到国内类似规格的最快速度。3.3M/s接近成人慢跑。
也有工业级的Aliengo和B1等多种型号。
小米(CyberDog)铁蛋是小米在2021年8月10日发布会上雷军演讲发布的四足机器人。由于小米强大的技术积累和供应链整合能力,产出了可以说是最便宜的消费级四足机器人,仅需9999,但是,能不能抢到这就看命了。但是不可否认铁蛋的配置极高,小米可能真的是想交个朋友。
菠萝狗项目是灯哥的开源项目,之前有很多项目都采用了灯哥的foc开源项目,作为机械狗运动的核心,灯哥自然而然的延伸到了机械狗的开发中来,当然灯哥主要是作为教育项目,有非常完善的视频教程,帮助大家理解基础的原理知识以及支座出成品的机械狗。不过是八自由度的产品,上面所有产品基本上都采用的是12自由度的,算是低配版了。
资料地址
由于菠萝狗是主要用于教育和原理性讲解,所以代码的工程量和软件架构都没有其他几个消费级和工业级的复杂,所以软件架构分析先从菠萝狗进行分析,其中,所有的资料都能从上面的资料地址找到。主要资料包含三个部分四足机械结构、四足万能控制器、四足控制软件。由于是软件架构分析,主要分析的对象停留在四足控制软件上。
由于面向教育,所以没有采用操作系统,使用py作为上层的软件控制。其中控制系统主要是pydog.py
主要包含以下的文件库。
文件名 | 作用 |
---|---|
padog.py | 主库、功能接口 |
PA_ATTITUDE.py | 姿态控制 |
PA_AVGFILY.py | 滤波算法 |
PA_IK.py | 运动学逆解库 |
PA_IMU.py | 陀螺仪控制库 |
PA_SERVO.py | 舵机控制库 |
PA_STABLIZE.py | 自稳控制库 |
PA_TROT.py | 小跑步态控制库 |
其中的PA_SERVO.py和PA_IMU.py我理解为驱动库,采用i2c
进行通信,控制舵机的旋转角度来进行输出的控制,IMU通过I2C
控制陀螺仪的数据的写入,输出读取。这部分会因为底层硬件的不同需要做修改,比如采用无刷电机的化需要改变为无刷电机的控制方式,或者更改不同的姿态检测方式。
其他的库主要提供了基础的数据计算,利用陀螺仪采集到的信息进行姿态检测并根据不同的状态输出不同的指令。所有的软件也封装出了接口可以直接控制机械的动作,获取机械狗的基本参数等。
作为遥感的控制,以简单为主,所以菠萝狗有一个简单的web界面,大概是下面这个样子:
我用我的服务器拉了一下代码,大家如果想玩耍一下可以用以下的网址:control
当然肯定是没有功能的,仔细分析了一下开源库,其利用的是使用python写了一个web服务,绑定80端口,当访问对应的服务器的时候返回control.html的内容。可以发现我直接打开对应的网站的时候,有一个定时心跳进行了数据的传输,返回网页上所有的数据进行通信。配合后端的web_c.py拿到数据进行上面说到的padog.py的调用,就能实现控制机械狗的功能了。
菠萝狗作为一个只是面向教育级别的小项目到这里就基本上软件架构分析完毕了,接下来的几个项目会越来越复杂。
资料地址,地址为外网地址,我虽然gitee克隆了一份,但是不好公开,所以访问的话需要科学上网。
开源的资料主要包含cyberdog_motor_sdk
(用于下层的驱动部分)、cyberdog_tegra_kernel
(Nvida的内核)以及cyberdog_ros2
(主要的控制部分)。作为系统架构分析,主要重点还是放在控制部分。
官网的开源代码仓库给了一个软件的框架图,但是整体的软件架构给的过于模糊,可以对比相应的硬件架构连接方式进行对比的学习:
可以发现小米的铁蛋比上面的项目复杂的多,首先可以看到铁蛋是采用了大小脑设计,大脑采用英伟达的高性能 Jetson Xavier NX平台(图上的ROS_Board),小脑采用全志MR813作为整体的运动控制部分,通过网口与大脑连接,进行指令下发,保证实时性和快速相应。
可以提取一下上面的架构图做一个简化版本就是下面的图:
刚才都是从宏观架构进行的软件分析,接下来具体分析一下小米开源的几个文件夹。
文件名 | 作用 |
---|---|
cyberdog_bringup | 启动系统相关 |
cyberdog_ception | 感知类算法相关包含电池管理 运动状态感知 光强感知 场景感知 |
cyberdog_commony | 通用类 包含grpc通信框架 多媒体相关以及toml11桥接包等多种基础驱动 |
cyberdog_decision | 决策库 根据各类感知器进行动作的决策 |
cyberdog_interactiony | 交互类相关模块 主要用于声光电多种模块的交互功能 |
cyberdog_interfaces | 包含所有的抽象接口 用于内部外部的信息交互 |
上面的菠萝狗只是简单的执行动作,接收指令,并没有复杂的交互逻辑,决策模型。但是小米的机械狗是一个复杂的机器人平台,其中有足足11路感知传感器用于平台对外部环境的感知,并且需要根据传感器状态以及指令语音交互等多种方式进行反馈决策,需要非常巨量的计算量。
所以可以发现cyberdog内部有大脑小脑结构,以及多种驱动板,其内部就是一个简单的分布式系统,为了方便统一管理协调,采用了机器人届常用的开源系统ROS,并且采用了ROS2。
但是仔细观察ROS主要提供的是什么的时候,会发现,ROS主要是提供了统一的通信方式,并且ROS2相比ROS1改变了通信方式为DDS(数据分发服务),相比于ROS1的Master机制,拥有更高的性能瓶颈。保证数据通信的可靠性。
在上面提到了,小米的开源代码里面的通用类文件里面会有gRPC消息定义,对于二次开发使用,主要是使用gRPC通信的方式进行指令的下达。使铁蛋有对应的动作。
由于宇树科技并不开源,而小米小脑上运行的就是MIT cheetah的控制算法,所以只是做了教学版和小米的机械狗软件架构的分析。
可以发现现在的机械狗的研究其实还停留在最初级的阶段,基本上属于制定动作,极其简陋的AI场景识别。未来动作的组合一定可以走向更加丰富,也许可以加上机械手或者其他执行器件完成更加复杂的工作。
但是从中也可以发现ROS其实是运行在操作系统之上的一套机器人通用软件架构,如果能将其功能做到操作系统或者是内核之内,也许会提供更加强大的功能。当然这只是写这篇笔记的时候突发奇想的点,还有其他点等待着我们挖掘。