目录
2) 数据通信转换板部分 2 STM32?* 2 CAN * (4 * 3):FOC算法
在设计机械狗之前,首先第一步就是要有个输入需求,比如机械狗的尺寸,重量,奔跑速度,各种姿态,控制方式等等,不然就无从谈起设计。这些具体的指标,我们默认是已知的。
比如重量的选择,速度的选择,这些都是要经过运动学和动力学的一个预先评估和仿真。
据介绍,MIT Min cheetah机械狗体重 9 公斤,由 12 台电机驱动,奔跑速度可达每秒 2.5 米。
研究人员表示,这样的体型刚刚好,满足研究者对这款机器狗的功能定位。
首先 9 公斤的体重保证体积不至于太“迷你”, 同时,可以避免因体型过大容易损坏的问题,
因此,9 公斤的体重非常合适,能够很好地吸收冲击,完成跳跃和落地等动作。
“人们没有意识到保持平衡是多么困难,”研究人员解释道,仅是为了保持站立,机械狗在每一秒中都要进行超过 30 次决策。
除了平衡、简单的运动能力,机器狗轻松应对摔倒、后空翻的能力都让这款四足机器人更加与众不同。
姿态的规划考虑
int bounding = 1; // 跳跑
int pronking = 2; // 四足跳跃
int standing = 4; // 站立
int trotRunning = 5; // 对角小跑
int pacing = 8; // 同侧溜步
int trotting = 9;
以上这些前期的指标需求都要提前进行拆解分析。
根据需求指标,开始搭建系统框图如下:
MIT Min cheetah机械狗系统框图
由3个电机控制(每个腿支持X/Y/Z三个方向运动,每个电机控制一个方向的运动),每个电机由1颗STM32控制器控制,由于电机是根据腿部特别定制的,因此电机控制算法也需要自己实现,所用到的算法是FOC算法,因此腿部控制共用到了12个电机和12个STM32控制芯片,另外每个电机上又有2个编码器,一个用来给电机FOC控制做电气角度反馈,另一个用来测试关节位置。
所以12个STM32控制芯片只运行FOC算法,并用CAN总线与数据通信转换板通信, 转换板上有两个STM32负责打包CAN消息并用SPI协议发给UP board 计算机板卡,转换板之所以用两个STM32是因为带宽不够, 每个STM32有两路CAN总线, 每一路负责三个电机(一条腿)的通讯才能达到1000Hz, 若一路负责六个电机(两条腿)控,制频率只能降到约600Hz,响应太慢,对控制非常不利。
在机器人领域,FOC算法也可以应用于电机驱动系统,以实现对机器人关节的精确控制。机器人的关节通常由电机驱动,而FOC算法可以通过精确地控制电机的磁场和转子位置,实现对关节角度和力矩的准确控制。
通过FOC算法,机器人可以实现对关节电流的精确控制,从而实现对关节角度和速度的准确控制。FOC算法利用传感器提供的反馈信息,例如编码器或传感器阵列,来确定电机的位置和速度,然后根据所需的控制指令计算并控制电机的电流。
FOC算法在机器人中的应用可以提高机器人的动态性能和精度,使其能够更好地适应各种任务和工作环境。在机器人的姿态控制、运动控制和力/力矩控制等方面,FOC算法都可以发挥重要作用,提高机器人的运动平滑性、稳定性和精确性。
总的来说,FOC算法在机器人中的应用可以实现电机驱动系统的高效、准确和可靠控制,提高机器人的运动和力学性能,为机器人的各种应用场景提供更好的表现和适应能力。
(1)腿部硬件STM32: 执行每个腿部运动的FOC算法。
(2)数据通信STM32:实现主控板与腿部控制单元之间的通信转换。
所有运动学和动力学算法都运行在UP board 计算机板卡中,核心就在于腿部的控制。
每条腿有两种控制模式:
换句话说也就是:如果腿处于腿在摆动中,则使用“摆动腿控制器”,如果腿处于腿在支撑中,则使用“力控支撑腿控制器”。
机械狗质心处装有IMU传感器,通过陀螺仪和加速度计感知机械狗位姿。
姿态估计用于估计机械狗的位置、速度和姿态:
对机械狗旋转的估计只需对原始数据稍作旋转坐标变换就可得到躯干的姿态与角速度。
对机械狗平动的估计方面,利用扩展卡尔曼滤波器结合IMU和腿部编码器进行二者的融合,得到质心位置速度。
用户通过遥控器与机械狗本体建立无线连接,下发指令控制机械狗,指令包括平动速度和转向率两个高级命令。
(1)操作员通过遥控器给机械狗下发平动速度和转向率命令;
(2)机械狗接收到命令,质心CoM生成参考轨迹并传送给身体和腿部控制器。
(3)控制器根据用户输入命令和机器人状态,如果腿处于腿在摆动中,则使用“摆动腿控制器”,如果腿处于腿在支撑中,则使用“力控支撑腿控制器”
(4)力和位置指令被发送到STM32微控制器,用于将电机指令传递给机器人的每条腿。
(5)如果对机械狗还有更高的要求,比如自主导航,视觉辅助等,则可以给计算机板卡加个工控机运行SLAM或者AI算法。
SLAM是“同步定位与地图构建”(Simultaneous Localization and Mapping)的缩写,是一种在机器人领域中常见的算法。SLAM算法通过机器人自身的感知数据,如激光雷达、摄像头、惯性测量单元(IMU)等,来同时实现定位机器人的位置和构建周围环境的地图。
SLAM算法的主要目标是解决机器人在未知环境中进行自主导航时的定位和环境建模问题。它需要通过不断地观测和跟踪环境中的特征点或地标,从而实时计算出机器人的位置和姿态,并在此过程中构建和更新地图。
SLAM算法可以分为前端(前方观测)和后端(地图构建和优化)两个阶段。在前端阶段,算法会根据传感器数据提取环境中的特征点,并进行数据关联和运动估计,从而计算出机器人的位置和姿态。在后端阶段,算法会通过优化算法对地图进行更新、优化和维护,以提高地图的准确性和一致性。
SLAM算法在机器人自主导航、无人驾驶、增强现实等领域中具有广泛的应用。它为机器人提供了实时的定位信息和环境地图,使其能够更好地感知和理解周围环境,并做出相应的决策和行动。