本章介绍如何使用开源的Moco-8资料自己完成机器人的制作,相关资料被托管在github上,其包括了PCB和3D打印机架,对于机器人的软件代码来说我们建立了一个单独的项目方便下载和维护。

项目采用多种构建方式,可以根据自己已有的工具和预估经费进行选择,项目的搭建模式如下表所示。

项目搭建模式(均不包括舵机)

上述不同模式区别主要在是否自己加工控制器和机架,前者我们提供了PDF版本的原理图和可直接加工的制版文件以及BOM表,用户可以选择自己加工购买成品(560 RMB);对于后者我们提供了3D打印版本的机器人文件,用户可以自行打印或者购买官方推出的采用碳纤维切割的机架(289 RMB)。

官方机架

3D打印机架

另外,在舵机选型方面我们推荐采用K-power的舵机,这里给出低成本和高价格两个不同的选择版本,对于其他舵机来说则可能需要修改摇臂3D打印件的插槽。

(1)DMC810高性能无刷9g舵机(115 RMB)

(2)DMM016半铝金属16g舵机(60 RMB)

下面首先从如何组装控制器开始介绍Moco-8机器人的制作过程。

  • 4.1 控制器的加工和制作

Moco-8的控制器使用我们推出的通用机器人控制硬件,其采用STM32作为核心处理器,板载10轴MEMS传感器、FLASH和NRF通讯芯片,具有多路PWM输出和可扩展串口,其未来除了支持四足机器人外还将移植OLDX飞控项目并向其他机器人系统不断扩展,其主要参数如下表所示。

控制器硬件参数

  • 4.1.1 控制器PCB的加工

为兼容图像处理功能,控制器被设计为树莓派的外扩载板,其尺寸与安装孔能与树莓派3B和3A全系列兼容,通过串口与树莓派进行通讯(最大波特率115200);为保证舵机供电充足其采用可替换外部供电模块的设计,板子3.3V降压芯片舵机和控制器供电分离,同时能通过跳帽选择4路腿传感器的供电电压(3.3/5V);考虑后期兼容飞控固件和IMU替换扩展,采用了独立IMU模块的内减震设计;控制器固件采用SWD接口下载同时预留正点原子无线调试器模块(无线下载调试KEIL5,免去连接下载器,288 RMB)的对应端子接口。控制器实物和接口端子明细如下图所示。

控制器接口分布

端子引脚明细(以上图方向为例,LED方向为后文所示“机头”)

则要完成控制器的加工主要包括如下几个步骤:

(1)树莓派载板加工:

PCB板加工文件在/hardware/控制器.zip中,对应的BOM表为/hardware/bom/控制器.xls。

(2)供电模块加工:

PCB板加工文件为/hardware/供电模块.PcbDoc,对应的BOM表为/hardware/bom/供电模块.xls,为保证树莓派正常工作(树莓派供电电流<2A则进入低功耗模式Wifi无法连接)我们选择了大电流5V-DCDC:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.332c2e8dVXk7Vi&amp;amp;amp;amp;amp;amp;amp;id=572382517694&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj89d5c4

(3)遥控器加工:

PCB板加工文件为/hardware/遥控器.PcbDoc,对应的BOM表为/hardware/bom/遥控器.xls,同时遥控器需要购买OLED模组:

https://detail.tmall.com/item.htm?id=41844085048&amp;amp;amp;amp;amp;amp;amp;spm=a1z09.2.0.0.332c2e8dVXk7Vi&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj893d13

以及3.7V锂电池:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.332c2e8dVXk7Vi&amp;amp;amp;amp;amp;amp;amp;id=43805802003&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj89aed0

(4)IMU板加工:

PCB板加工文件为/hardware/IMU.PcbDoc,对应的BOM表为/hardware/bom/IMU.xls,其中对应四足机器人来说如为降低控制器成本PCB中的磁力计LIS3MDL和气压计MS5611可以不焊接。

(5)下载器转接板加工:

PCB板加工文件为/hardware/下载器.PcbDoc和/hardware/下载器转接.PcbDoc,对应的BOM表为/hardware/bom/下载器.xls和/hardware/bom/下载器转接.xls,其中需要购买STlink下载器:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.332c2e8dmcVVFR&amp;amp;amp;amp;amp;amp;amp;id=561379287900&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj898221

如果不想使用有线下载则可不用加工上述下载器直接购买正点原子无线下载器连接控制板即可:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.332c2e8dmcVVFR&amp;amp;amp;amp;amp;amp;amp;id=579895934418&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj896533

(6)购买配置树莓派A3

默认控制器采用的是树莓派A3,如采用其他的树莓派版本则请自行设计控制器3D打印外壳。首先准备树莓派A3:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.31212e8dlJw3wj&amp;amp;amp;amp;amp;amp;amp;id=535022021519&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj895a9d

购买时需选配CPU对应的散热铜片,另外默认机架中采用的摄像头是CSI并口原装摄像头:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.31212e8dlJw3wj&amp;amp;amp;amp;amp;amp;amp;id=36938445542&amp;amp;amp;amp;amp;amp;amp;_u=p1klsj8918c1

为方便后续安装最好在安装控制器之前完成对SD的镜像的烧录,默认使用的是16G高速卡(建议首次烧录使用未存储鬼片任何东西的空卡),我们同时也提供了免费的树莓派系统镜像

(7)控制器外壳打印

我们在项目中提供了控制器和遥控器外壳的3D打印文件,可从项目中进行下载,其中树莓派支撑.STL需要打印4个用于支持控制器载板。

  • 4.1.2 控制器组装

(1)安装树莓派:
将树莓派按正确方向放入底部外壳中,为避免后续安装相机在该步骤时最好将树莓派相机对应的CSI排线安装好并安装好已烧录镜像的TF卡,将4个支撑柱子放入从底部用 M2.5螺丝或者直接用胶枪将其与树莓派固定,将CSI排线从外壳对应槽中引出。

(2)安装控制器载板:
将控制器载板上NRF模组天线从底壳壁上对应圆孔引出,将其按正确朝向安装于树莓派上,注意控制板上只有4P母口其顶头引脚并非对应树莓派顶头引脚而且排针为外侧,正确安装应该如下图所示:

(3)安装控制器外壳盖:
将上壳以正确方向安装于控制器载板上,主要中心空槽应该完整包裹IMU板,完成后同样用M2.5螺丝或者胶枪将上盖固定完成控制器组装。

  • 4.2 开源3D打印机架的制作与组装
  • 4.2.1 3D打印机架的制作

我们提供了3D打印机架的文件如果用户不想购买官方机架可以选择自行使用3D打印机加工,所需要打印的文件主要包括中心体/quadruped/3D打印测试机架/中心体.STL:

4个 /quadruped/3D打印测试机架/机臂.STL,注意其需要镜像打印:

4组 /quadruped/3D打印测试机架/腿舵机连接关节.STL和 /quadruped/3D打印测试机架/腿关节.STL:

4个 /quadruped/3D打印测试机架/足底带传感器1.STL和足底带传感器2,注意足底带传感器2需要镜像打印:

足底传感器需要购买4个微动开关(无锁蓝色按钮)和4个软垫(15*10),另外还需要购买一个带开关的18650电池盒:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.19132e8d4dukK2&amp;amp;amp;amp;amp;amp;amp;id=552736465061&amp;amp;amp;amp;amp;amp;amp;_u=q1klsj894152 ,186502节带盖开关)

机器人电池选用3400款(尖头)(2支)。

  • 4.2.2 3D打印机架的组装
  • 注:安装校准教程视频地址:

(1)组装电池盒

首先在中心体底部安装电池盒:

采用M2.5*5的螺丝进行固定:

(2)使用3M胶将组装好的控制器固定在中心体上:

(3)焊接供电模块与电池盒输出线并用2.54排线与控制器连接:

(4)使用胶枪垂直固定供电模块(注意一定要提前插入烧好镜像的TF卡)。

(5)安装舵机使用M2*5的螺丝进行固定,并连接舵机线至控制器对应的PWM输出引脚。

(6)将舵机摇臂插入小腿3D打印件槽中,如摇臂过长可适当剪短,注意带齿轮一面的朝向,使用M1.5螺丝或502将二者固定。

(7)组装摇臂与大腿,将大于的大腿使用M2.5螺丝与摇臂固定,主要在保证无间隙的前提下尽量减小摩擦。

(8)打开电源进入舵机校准模式并安装摇臂:

首先参考后续教程烧录最新固件,注意确定自己是否已有授权码;则将遥控器拨码12在左、上下波动遥杆多次提示音后舵机全部上电,在旋转到初始化角度后以尽量水平的角度安装舵机摇臂。

(9)微调校准摇臂:

校准模式中会以蜂鸣器次数提示,此时上下则微调摇臂角度,左右长时间则更换舵机选择,顺序调节所有舵机保证摇臂的绝对水平,完成后长按遥杆提示音后保存校准参数。

(10)保存参数并完成IMU校准:

完成舵机校准后12至右,长按遥杆提示音后校准IMU,此时遥控器P和R姿态角收敛至0。

(11)组装足底传感器:

组装足底传感器并焊接对应的转接板,以减震垫垂直向下的方式安装值大腿末端,并使用4P线连接传感器与控制器。

(12)使用扎带整理走线。

  • 4.3 官方碳素机架套件的组装

(1)组装舵机和机臂。

(注意图中黄圈所示结构件的方向,电池盒和控制器安装方法同上)

注意:水平放置时两侧机臂均5°外扩

(2)如果安装时机臂老掉,可以在底板对应槽处涂抹502,后续也方便上板的拆装。

(3)将控制器使用3M胶固定或螺丝(注意绝缘)在底板上,控制器LED方向为机头方向,电池盒开关方向为机尾。另外连接供电模块将电池盒供电线焊接至模块焊盘上,用8P-2.54排线与控制板连接,同时将其插入底板后部凹槽中以垂直固定。

注意:为更好的绝缘,建议在DCDC模块下方8P引脚碳板处粘贴绝缘胶带

(4)将舵机走线从机臂空槽下穿过后插入控制板对应PWM引脚。

朝向板子内侧引脚为信号线(一般为橙色);机臂外部舵机连接板子边缘引脚,内部舵机连接板中间引脚
控制板引脚明细

  • 4.4 固件的烧录和机器人校准

默认情况下控制板已经烧录好镜像,用户可能需要为自己制作的控制板或者程序更新时重新下载固件,首先需要使用下载器转接板连接控制板上的SWD下载口,然后下载KEIL5单片机编程环境、破解并安装对应的F4芯片库:

链接:https://pan.baidu.com/s/1UNnMhOecPHUjdAQqanoYLQ 
提取码:az23 

然后从项目中下载最新的固件代码并烧录在控制器中,此时需要注意的是如果未向我们获取步态库授权码请将vmc.h中的USE_DEMO改为1否则后续的操作可能无法继续,对于授权码的获取和写入请联系我们

(1)在完成程序烧录后安装电池开机查看供电是否正常(音乐声),如是连续两声DI DI则传感器初始化不正常。

注意:

如开机声音不对可能是供电模块电容充电问题,可以直接使用对控制侧面按键复位,或者重新上电的方式;

如果多次尝试仍无法正常开机则可能是控制板内部IMU软线安装不牢固,请重新安装擦拭下排线;

(2)正常开机后打开遥控器查看是否能收到信号(SR有值)将拨码12拨到右34到左,推动遥杆2s查看此时舵机是否均会转动。

注意:

如开机后全部舵机都无法供电则可能首先是舵机供电部分连接有问题,请推动遥杆后查看机体后部供电模块是否两个工作指示灯都点亮,默认上电只有右边控制部分供电工作;

如只有部分舵机不工作,请检查舵机连线是否有插反错差的问题,如没有则可能是PCB焊接问题请将情况反馈给客服

另外在使用VMC库授权码时将不会供电,请有先下载最新程序的版本:

Keil相关程序和应用请参考正点原子:

并向客服索要授权码(正确授权时Debug程序vmc_all结构体中key_right应当为1,遥控器对应参数界面 I17 为1

注:1.3.6固件新增遥控器直接修改参数请参考小节4.7

(4)将机器人放置于水平高台以方便舵机校准。如果控制器从未烧录过固件,则首先保证12拨码在右34在左。长按遥控器遥感4s,在机器人(不是遥控器)发出提示音后完成加速度计和陀螺仪校准,此时查看遥控器方框P,R姿态角应当收敛至0°左右。

注意:新版本程序中加入了磁力计(需询问客服是否焊接),用户可以选择对其进行校准,否则可能出现航向异常的情况。校准时1在左2在右,同样长按遥杆提示音后,机器人LED蓝色常亮同时蜂鸣器不断BiBi,此时在12s时间内各方向旋转机器人(类似Px4飞控校准),在提示音后完成校准。在复位后查看当前航向是否与地理朝向一致。

(5)完成IMU校准后,将12拨码至左,此时上下反复垂直拨动遥杆6s后应当有提示音并且舵机自动供电(后部左供电模块LED常亮),此时所有舵机转至90度初始化角度。

注:此时以左右两舵机摇臂尽量与机体水平的方式将各腿摇安装,可以些许误差

(6)校准舵机时蜂鸣器会以次数提示当前舵机ID,左右长时间推遥杆则可改变ID(默认首先调整第一个舵机,为机头右上方外侧舵机)。遥杆上下则微调舵机,因此依据顺序依次微调保证准确的摇臂水平。

(7)在完成微调后长按遥杆4s提示音后舵机自动断电参数写入FLASH。

(8)将12拨码至右,再长按遥杆重新进行一次IMU校准。

注意:

在舵机校准中随时可以通过将12拨码至右退出该模式;

如期间出现机臂卡住的情况请马上断电;

(9)在完成所有舵机校准后将12至右,推动遥杆则舵机供电并开始不断运动,确认无卡住的情况后断电安装小腿和足底,用螺丝或502固定摇臂。

注意:

IMU标定仅在机器人软断电(开机后未遥控或运行中将12拨码至左保护断电模式)下才能进行,因此当机器人工作后长按4s遥杆对应的是进入SDK模式。如要进行IMU标定可先将12同时至左强制断电,再回复到右边后如机器人未上电则可进行IMU标定;

机器人足底软垫具有朝向,足尖的方向均需要朝向机头,黑色软垫均朝下;

固定腿部关节是要保证尽量不存在空隙的情况下无较大的摩擦(正常情况下断电拉动足尖应该无特别大的阻力);

正常工作后LED灯会周期三闪,第一闪为蓝表示连接上遥控,第二是为白表示树莓派正常工作;

(10)如果使用的是传感器足底则采用相同的方式进行安装并使用4P连线与控制板连接。

  • 4.5 第一次行走测试

(1)在完成舵机校准和IMU校准后既可以进行第一次行走测试,其中请注意以下几点。

注:由于射频通讯需要保证无遮挡,因此当有遮挡的时候可能出现遥控滞后,遥控失连后仍持续前进几秒的情况;

如机器人在移动中突然保持当前动作不动,LED也不再闪烁则可能是内部算法Bug,此时复位即可,我们也在不断优化算法以减少该情况;

在机器人正常工作后随时可以使用将12拨码至左的方式强制保护断电,同时也注意是否正常使用是忘记将其至于右边而导致无法上电移动;

在下载程序时可能会出现写入FLASH影响供电模块IO控制,此时机器人腿部往往会突然上电卡住,建议此时及时断电后重新烧录,否则会损坏舵机;

(2)目前遥控器有几个基础测试模式

注:拨码1单独至左,34在左,则进入姿态角Sin轨迹跟踪模式(1.3.1版本以后已无用);

拨码2单独至左,34在左,则进入车辆模式此时上下遥杆对应为速度增量;

拨码12均在左,软断电模式,控制器断开舵机功能作为故障舵机卡死时的保护模式;

机器人供电后,长按遥杆4s提示音后进入SDK模式具体开发请参考SDK开发手册;

  • 4.6 参数调节(Debug修改参数)

注:1.3.6固件新增遥控器直接修改参数请参考小节4.7

为保证获得与官方视频中一样的步态效果可能需要用户验证相应初始化参数是否正确,首先需要从github中下载安装相应的KEIL5环境,通过配套仿真器下载最新固件修改参数。

(1)重心偏移参数

由于机器人无法检测自身重心变化因此在机体安装不同模块发生重心变化后可能需要重新调整重心偏差参数vmc_all.cog_off[0],vmc_all.cog_off[1]。

注:vmc_all.cog_off[0-F]为机器人前进时的重心偏移参数,安装足底传感器默认值为-0.006无足底传感器为-0.012

vmc_all.cog_off[1-B]为机器人后退时的重心偏移参数,默认值为0.006

则通过在DEBUG时前后移动查看机器人是否会出现蹬空的问题来进行微调,完成后将12拨码至左强制断电保证机器人静置,通过将mems.Gyro_CAL标志位置改1完成参数存储(注意由于直接使用陀螺仪标定来存储参数所有过程中如果机器人移动可能会造成陀螺仪参数错误)

(2)下蹬力度

如机器人因为安装模块造成自身重量明显增大,则可能需要调节下蹬幅度参数vmc_all.kp_deng[0]默认为16。同理在DEBUG过程中修改,移动测试后,静置机器人通过标定陀螺仪完成参数的存储。

(3)使能着地传感器

在1.3.3固件后增加了着地传感器(需要购买扩展足底传感器套件),安装连接模组后修改vmc_all.use_ground_sensor[1]为1并使用陀螺仪标定的方式存储参数,各腿着地判断标志在vmc_all.ground[1]中显示。

(4)高度PID参数

高度PID参数为h_pid_all,其中kp为对角线失配参数,ki为积分系数,kd为微分系数。

(5)姿态PID参数

姿态PID参数为att_pid_all[0~2],其中0为俯仰轴,1为横滚轴,2为航向(为串级)。

  • 4.7 参数调节(遥控器修改参数,1.3.6固件新增)

在1.3.6固件之后我们新增了使用遥控器来完成对13小节中所述参数的调节和保存,从而避免修改参数后保存时需要DEBUG机器人通过陀螺仪校准带来的不便。

注意:首先参数保存只能在机器人上电后才有用,因为其触发方式与磁力计校准模式一样,磁力计校准首先软断电然后拨码1在左2在右长按遥杆,蓝灯闪烁后开始校准。

因此启动机器人后,当1在左2在右后进入参数修改模式,此时遥控命令和SDK触发命令均失效,因此可以随意在遥控器中对参数进行修改和界面切换,在完成某一个参数修改后同样长按3秒当机器人蜂鸣器三连焖音后参数写入FLASH。

(1)输入授权码

在获取授权码后可以直接通过遥控器写入,将对应的授权码顺序写入PID18中(注:需要修改一个保存一个)之后重启查看修改是否成功,则当授权码正确后D17为1。

(2)修改前后偏差

vmc_all.cog_off[0],vmc_all.cog_off[1]对应参数为P01和I01,其中P01已经乘以负号,二者均扩大了10000倍,因此默认参数为P01=60,I01=60。

(3)修改蹬腿幅度

vmc_all.kp_deng[0]对应参数为D01,参数扩大1倍则默认值为16。

(4)修改使能着地传感器

vmc_all.use_ground_sensor[1]对应参数为P02,参数扩大了1倍则默认值为0。

(5)修改角度默认偏差

在机器人移动中由于姿态角的倾斜可能会在重力作用下引起移动的侧偏,如横滚角存在偏差会造成机器人左右侧偏。则俯仰角参数为I02为vmc_all.tar_att_bias[PITr],横滚角参数D02为vmc_all.tar_att_bias[ROLr],由于存在正负偏差修改需要因此参数均被扩大了100倍并增加了1000的偏差,因此默认值为1000。

(6)修改通讯通道

机器人默认2.4G射频通道为11,其对应参数为I17。遥控器自己的通道则为当页参数中的CH,对其修改后的保存需要退会到主界面长按遥杆执行。

注:相关参数发送顺序在rc_mine.c的pid_copy_param函数中,参数接收顺序在rc_mine.c的param_copy_pid函数中。

在下一小节将对控制板详细电路设计和开源代码步态算法进行详细介绍,方便初学者快速上手!