Moco-ML 开源四足机器人 项目教程8:Moco-Minitaur LTS机器人的标定

在完成机器人安装前需要进行的几个必要步骤如下:

(1)更新好ODrive固件;

(2)更新好接口板固件;

(3)确定好机头和机体朝向;

为方便固件更新和修改,我在所有下载接口处都预留的工艺孔,方便进行固件更新和标定,则机器人主要的几个步骤为:

(1)标定ODrive参数

(2)调节三相线保证上电转向与规定一致

(3)标定接口板参数

上述步骤(1)主要是完成ODrive中电流环参数的标定,相比传统控制台命令配置方法,这里使用的是Doggo团队修改的配置文件,一键傻瓜式下载快速完成标定;步骤(2)主要是为了后续机器人使用方便,由于采用ABI增量编码器因此ODrive上电必然会旋转寻找电角度(当然由于采用接口板已经能实现上电仅标定一次,大大提高便利性),而当四足机器人腿安装后标定过程中如转向不合适则会相互阻碍导致标定失败;步骤(3)主要完成对接口板参数的配置,包括编码器参数、减速比、电机角度旋转方向等。则上述各步骤详细说明如下:

1 ODrive电流环的标定(傻瓜式一键脚本配置)

标定ODrive电流环参数的具体流程如下:

(1)确认电机三相线连接正确;

(2)确认编码器和电机安装牢固、编码器5P排线正确连接到ODrive中,保证电机三相通道标志M0、M1与编码器转接板上的丝印一致(该步骤连接错误会存在危险性!!!);

(3)使用Micro USB连接ODrive并连接电源;

在完成对我提供Odrive库下载后,使用USB连接Odrive并用电池对其供电,当Odrive启动会出现USB连接的提示音,此时打开zadig-2.5软件,通过在Options中选择List All显示所有连接的USB设备,找到Odrive对应的Interface 2如下图所示:

将其修改为libusb设备并点击Replace Driver,此时可能需要等待半分钟至一分钟直到提示安装完成后即可:

(4)打开Py配置文件,注意该文件需要在ODrive-master同级目录下,打开配置文件后依据电机参数修改减速比、最大电流、安全电源和电机极对数,之后运行该脚本;

(5)等待ODrive运行、重启和标定,最终在控制台打印出对应标定参数结果,完成电流环的标定;

(6)在接口板不供电的情况下,重新给ODrive电路板上电,正常情况下电机会来回旋转45°之后自动进入位置闭环,则此时ODrive电流环标定完成;

2 电机上电转向标定

之前提到ODrive上电标定必然会旋转45°来查找电角度,在标定完成后每次上电旋转的方向不会改变,而考虑到后续机器人并联腿安装的约束和机器人调试的便利性这里需要首先约定一下标准的上电转向,首先确定机器人的朝向和机器人正反面,则机器人各腿ID编号如下:

则依据机头和腿号定义进一步可以按照在机架组装教程中没有按照的腿结构,注意各腿足尖需要朝向机头方向,如下图所示:

则每次上电时需要首先将所有腿翻转到机体上面,我们理想的标定转向应该使得足尖向机体上方竖直来回运动,这样启动时就可以把机器人放置于地面待标定完成后再将腿放下,保证标定过程中电机选择没有阻碍,如果电机上电旋转方向与期望转向不一致则通过断电后交换三相线既可以调换标定转向

3 ODrive接口板标定

在完成对所有ODrive板子的电流环标定和标定转向标定后,下一步完成对ODrive接口转接板子的参数标定,具体步骤如下:

(1)接口板的授权

从我们的淘宝货邮箱获取各接口板的授权码,首先使用USB转接模块连接接口板,在主界面查看电路板ID号并提供给我们,之后在执行器界面对应处输入授权码并点击保存;

(2)配置电机参数

***************************************************************************************

当USB正确连接接口板后会进入如下界面,下面为上位机简单教程可跳过

①电机类型选择:这里提供了典型电机可选择类型包括Doggo无刷电机、大疆DM系列减速电机、MOCO无刷四足使用的MAD电机,选择保存后会在重启后生效,如需要自己配置电机参数则选择自定义;

②ID交换:勾选后会交换Odrive M0和M1上传的次序,该功能主要为了方便当电机连线次序与给定机器人电机标号顺序不一致的情况时,达到不改变连线快速交换次序的目的;

③电机状态显示:显示电机角度、电流、力矩、下发命令和当前状态的信息,随ID交换功能变换显示次序;

④电机参数配置:电机参数非自定义模式下会在每次重启时刷新为对于配置参数,在自定义模式下可修改电机减速比、力矩系数和接口板CAN节点ID;

⑤位置控制滑条:拖动后修改当前期望角度,下方单选框为各电机轨迹测试模式;

⑥力矩反向命令:框选后实行对力矩命令的反向、测量电流的反向和最终要的角度转向方向;

⑦复位角度与PD刚度:复位角度为电机标零后设定的零偏角度值,电流限制为下发电流命令最大值,整体刚度为接口板内部PD控制的增益系数;

⑧电流控制滑条:拖动后修改当前期望电流,同时电机切换到电流控制模式并复位角度命令;

⑨模式控制按键:使能电机后接口板会激活内部角度闭环控制器以帮助测试,点击复位角度后将复位当前角度设定值为0,复位电流则将电流置0,保存参数则将当前各设定参数保存在接口板Flash中,电机标零点击后以当前位置将角度值初始化为设定的电机复位角度(注意:只有在电机标零后使能电机才有效);

⑩波形显示选择:可以选择当前波形显示的设定、期望曲线;

上位机中对电机的配置主要包括以下几个方面,第一是对电机和编码器参数的设置,第二是对控制命令符号的设置,因此在简单的标定流程如下:

(1)选择电机类型,确定是否需要自定义电机参数;

(2)设定电机减速比、编码器分辨率等参数;

(3)转动电机确认电机上传序号是否正确否则电机ID交换选框;

(4)设定电机复位角度和最大电流,点击电机标零,查看点击状态是否正常;

(5)将整体刚度写0,电机正常后使能电机进入闭环模式,将刚度从0.001逐步调大查看控制效果;

(6)依据坐标系顺序选择控制命令和力矩反馈命令是否需要符号反向;

(7)通过波形界面结合位置、电流控制滑条验证Odrive电机控制效果(注意电流模式无负载下危险!!!);

(8)保存参数;

参数界面中几个主要的参数描述如下:

(1)减速比:即电机是否存在减速比传动,该参数除了影响最终上传单圈角度计算外,还会对电流和反馈力矩进行减速缩放;

(2)电流分辨率:即最大采样电流对于的AD采样值,该功能主要面向DJI减速电机,以M3508为例其手册中最大驱动电流20A对于分辨率为16384.0,而对于普通无刷电机该值为1;

(3)电流范围:即下发的最大电流命令,该功能同样主要面向DJI电机对于M3508来说其为20,而对于普通无刷电机为1;

(4)编码器分辨率:即减速前轴转360°对应的脉冲数,以M3508为例其为8192,以AS5047编码器为例其为4096*4;

(5)CAN ID:基于该接口板在CAN总线上的ID号(范围0~19);

(6)T命令反向:勾选后将向Odrive下发反向电流命令,可在闭环模式中切换,内部控制器将自动处理符号变化;

(7)T测量反向:勾选后将对电流转换的力矩命令进行反向处理;

(8)转向方向:勾选后点击角度增加方向相反,可实现点击不同转向的选择;

***************************************************************************************

则对于Moco-ML项目来说,只需要按如下的的参数进行配置即可:

注意:左上角电机类型选择为“自定义”,CAN ID为该腿对应的腿号;

(3)测量电机扭矩系数

我已经给出了选用5048电机的基本扭矩系数(0.004Nm/A),这里还是介绍一下如何对一个新电机的系数如何测量,首先选择一个合适的重物并使用称重。

之后将其悬挂在所连接腿的一个小臂末端,则测量力矩的基本思路是通过调节参数使其进入位置闭环,最终实现机臂平行时重物被稳定悬挂住,则由于我们知道精确的重物质量和小臂长度,通过回读当前ODrive Iq轴电流通过M=m*g*L简单的公式就可以计算出机臂平衡所需扭矩,则使用其除以Iq轴电流就可以得到对应的扭矩系数(比如我所使用的146g电池在5.5cm力臂末端平衡时所需的电流为2.25A,则依据公式可计算出扭矩系数为0.0035Nm/A,受上位机显示精度四舍五入为0.004,将该值填入上位机并保存即可),则标定流程如下:

①将重物悬挂在末端;

②将机臂扶至水平后点击“电机标零”,则上位机电机状态会由“已连接”变为“正常”;

③点击“使能电机”正常情况下电机会进入位置闭环并保证当前位置,则进一步调节电机刚度和电机限流值使得重物能被稳定悬挂,当前也可适当拖动右上角电机期望角度条,产生更大的控制误差,最终保证机臂能尽量水平;

④此时查看当前反馈电流或者在波形界面中的实时电流波形,确定电机的电流平均值并带入上面的公式既可以计算出对于的扭矩系数;

(4)确定电机机臂号

为保证后续的坐标系一致,这里规定机器人的个腿坐标系如下图相同,机头方向为X轴上位Z轴正方向,则在保证足尖朝向机头的前提下可以确定两个机臂的ID号为前方M0后方M1;

则在电池上电ODrive完成标定后,选择单腿的两个电机查看对应角度值是否与转动标号一致,如不一样则勾选ID交换保存即可

(5)确定电机转向符号

在确定了基本坐标系、机臂和电机标号后,需要进一步确定电机的旋转方向和增量方向,我推荐的方向如下所示:

则首先将两机臂复位角度设置为0°和180°即点击复位按键后当前电机角度将标零的值;

点击标零后选择两个电机,查看转向是否与期望坐标系一致,如不一致则勾选“转向反向”;

(6)确定力矩T命令符号

采用类似电机转向的标定方法,下一步需要标定电机力矩的控制命令符号,由于ODrive三相线顺序决定了其默认的正负扭矩电机旋转方向,由于力实际是加速度因此我们规定其正方向与电机转速方向一致,因此可以参考下图进行标定:

标定力矩命令时首先把两个臂放置在物理坐标系下的0°和180°在确认上位机零位角度参数与其一致后点击“电机标零”,之后再状态显示为“正常”后点击电机使能,两机臂应该稳定在各自复位角度,此时如图所示垂直下拉足端,查看对应通道的电流命令值,如果其余期望坐标系符号相反则勾选“T命令反向”(注:该复合勾选后显示数据符号会直接变化);

(7)确定T测量反馈符号

采用类似力矩命令标定的方法标定T测量数据反馈符号,理论上其测量的值应当与期望电流命令一致,因此同样参考上一步的坐标系,首先把两个臂放置在物理坐标系下的0°和180°在确认上位机零位角度参数与其一致后点击“电机标零”,之后再状态显示为“正常”后点击电机使能,两机臂应该稳定在各自复位角度,此时如图所示垂直下拉足端,查看对应通道的电流测量值,如果其余期望坐标系符号相反则勾选“T测量反向”(注:该复合勾选后上位机显示数据符号会直接变化);

综上,参考上述方法标定完所有的电机即完成标定过程,标定过程十分重要,因为后续角度闭环和力闭环控制均要求与文中一致的坐标系和电机转向,否则上电后负反馈直接飞车,总之位置标定较为简单,但力的标定最好按文中推荐的方式来!

相关机器人机架、主控PCB和原理图文件已经上传到Github中!!