Moco-Minitaur LTS(Moco-ML)机器人的设计目的是建立一个支持力控的桌面级无刷四足机器人平台,其需要具有低成本、结构简单、电气安全、扩展性高的特点,作为研究机器人基本控制算法和作为一个小型SLAM底盘平台,因此以8自由度支接驱腿作为主要结构,采用现成的开源驱动器和单片机来保证低成本,相比Doggo等国外开源平台来说更加符合国内开发者的使用习惯。

(1)硬件框架设计

Moco-ML机器人参考Minitaur 的设计方案使用8个无刷直驱电机作为动力单元,此外机器人还包括主控制器、驱动器节点、电池控制节点、感知视觉处理器节点、无线遥控节点,参考Doggo和MIT机器人的硬件设计Moco-ML机器人的硬件架构修改部分如下图所示:

对标Minitaur 机器人几个关键的指标,设计中考虑机器人供电输入兼容24~48V,同时为安全保护相比Doggo增加了无线远程上电模块,在驱动部分采用ODrive作为驱动器,其目前在国内加工比较成熟价格也比较低,最后遥控采用传统的PS2遥控和SBUS航模遥控接口来实现,另外Doggo采用Arduino作为控制器其运算能力和开发方式相比STM32F4来说较差,图像处理器方面仍然可以采用ODroid或者树莓派,另外也可以采用Jetson系列的处理器。

在Doggo机器人的设计中各驱动器与主控制器通讯采用串口以5Mbps的波特率进行通讯,参考Minitaur 其采用以太网作为通讯接口,考虑使用MIT方案中以STM32扩展CAN口的方式,各驱动器上需增加一个CAN节点模块以串口与ODrive通讯比最终以CAN完成和主控制器的通讯。

(2)软件框架设计

对于软件框架设计,在主控制器中为保证控制算法的实时性和资源分配有效性首先采用嵌入式或实时操作系统,目前常用的有UCOSIII和Free-RTOS,另外对于以树莓派等Linux单板为主控的系统中也需要安装RT实时补打。主控制器首先需要采集典型的传感器数据,如IMU、GPS,通过CAN接收驱动器的编码器角度、电机电流数据作为力和运动学的反馈,同时相比Doggo采用的发送位置控制模式,要实现真正的力控需要下发电流和力矩命令,因此控制器中在底层还需要完成对电机位置和力的闭环控制。

主控与树莓派通信部分可以采用SPI或者串口实现,其中主要传递的数据是机器人本体层的状态估计以及控制命令,树莓派中以ROS作为软件载体构建机器人控制节点发布传感器等数据,并将其他SLAM和图像以及规划的控制结果下发到机器人中实现自动导航,这里参考高通骁龙的软件架构修改如下:

如上图所示为高通骁龙通用机器人RB5的软件框架,顶层为其核心处理器由于其采用定制高性能SoC因此将控制和感知都集成在单一芯片中,Moco-ML则采用两种方案来替代 :

(A)单片机主控+Linux单板主控:即采用类似Px4飞控或RobotMaster的方案,使用一个单片机主控器来完成所有传感器采集和运动控制计算,实现机器人本体步态控制,使用一个如Jetson或树莓派的Linux处理器完成感知图像处理,基于ROS构建一个完整的底盘软件框架;

(B)树莓派单片机主控+Linux单板主控:上面那个方案受限于单片机算力对于复杂步态运行时可能无法保证稳定的控制周期,同时也无法应用如QP等优化库,但基于单片机和Keil开发能较快的迭代代码,这个方案类似MIT只不过使用树莓派作为运动控制运算,在打上RT实时补丁后保证代码的实时性,通过SPI或串口以高速与单片机通讯并将控制命令转换为CAN发送出去,单片机即实现一个CAN转接载板和传感器采集板。通过交叉编译技术能快速完成代码编译下载;

对于软件功能支持上,参考开源飞控和高通骁龙的软件架构,Moco-ML最终的项目希望完成支持多类机器人的运动控制、视觉导航感知以及AI智能体部署,硬件上框架能兼容多种常用视觉、激光雷达、IMU和GPS传感器,具有标准的视觉导航和ROS SLAM导航API,能支持常用的视频、音频流输入输出,并提供类似SpotMini一样完善的多语义用户SDK,实现ROS、C++下的机器人底盘模式控制和底层力矩控制,最终面向典型的应用场景提供自动巡线、目标跟踪、航点跟踪以及自主任务的用户级应用APP Demo。

(3) 控制框架设计

在Doggo中其控制类似舵狗主要采用位置控制实现,控制器通过IMU反馈计算各腿腿长进一步通过运动学算出两个并联电机的角度并通过串口发送到ODrive中,ODrive中以10Khz完成角度闭环控制,该方法没有实现力控,步态相序也很简单没有真实的着地估计和力反馈估计,而对于MIT等力控机器人来说其发送给执行器的是力矩信号,通过控制足底GRF力来实现稳定控制,相比上面的方法其动态性能、响应性能都高很多,力控也是本开发平台希望研究的目标,因此参考MIT的力控设计方法对Doggo和MOCO舵狗控制框架修改如下:

如上图所示,Doggo等位置控制的无刷四足机器人的基本控制方法与舵狗一致,主要还是规划足端运动轨迹,这也造成了首先需要关节具有较高的刚度否则无法站立,因此Doggo角关节角度控制放在了驱动器环节中,因为其控制10Kz带宽较高能大大提高PD控制的刚度,本体上构建了一个100Hz类似PID的反馈控制器来动态调节腿长,这样方案在平地和简单地形中还行但是想实现Minitaur 视频中在乱石堆里的稳定移动没有力和柔顺控制是无法实现的。

在我原生的Moco-8和Moco-12舵狗控制框架中虽然最终的控制输出仍然是关节角度,但其实现反馈控制率中是对角度增量即角速度进行控制,采用了MIT Little Dog的逆雅克比运动学控制思路我采用了一种“伪力控”的方案,即力控制加速度、伪力控控制速度,从而相比传统的逆运动学方案响应高,控制框架也更接近VMC等力控思路,即首先构建一个虚拟模型完成Raibert的三通道解耦控制,进一步将虚拟控制量向支持腿分配,具体理论可以参考我之前的知乎:

最终,总结一下基于如SimpleFOC、ODrive等伺服驱动器实现的位置控制四足机器人的优缺点如下:

(1)具有角度反馈(优点):类似总线舵机能实现角度的回度,因此可以构建简单的角度刚度控制,提供一定的柔顺性;

(2)控制带宽高(优点):由于采用CAN或Uart相比PWM或总线舵机的控制带宽高很多,控制精度也高;

(3)无法实现力控(缺点):由于不是力控,支持重机架时需要保证较高的关节增益,而无负载时其是否容易抖动发散,因此需要底层具有很高的控制频率,因此只能在驱动器FOC环中进行位置控制,无法通过主控通讯控制电流;

(4)无法估计力(缺点):对于ODrive来说其可以反馈Iq轴的电流因此可以用于估计实际的足地力GRF,而对于SimpleFOC来说由于其早期版本采用电压开环力矩控制因此,导致无法估计真实的负载力矩,另外由于其功率较低因此需要较大的减速比来保证扭矩,最终的驱动器还是会变成像舵机一样不易于自己加工、齿轮间隙、减速滞后等问题;

Moco-ML项目希望通过2~3个月9篇教程的内容带大家从基础机器人设计到完成四足机器人底盘组装,最终实现:

(1)一个完全支持1Khz力矩控制和足底力估计的机器人平台

(2)一个成本<5000RMB的机器人平台

(3)一个完整的CAN总线通讯和单腿力控Demo

(4) 一个完善的主控、上位机和伺服驱动软硬件框架

下周将更新机器人驱动单元、电机和单腿的设计的内容,记得来看哦,你的赞赏就是我持续更新的动力!