目前四足机器人低成本高算力的主控有很多方案,主流是参考MIT的原始设计选用Upboard或者为了更快的MPC选用Upboard2,当然你也可以重新移植Spine或者采用其他伺服驱动方案这样就可以采用其他的x86平台,对于ARM平台通过对原始MPC等依赖库的重新编译MIT的代码也可以适用于如AGX、NX或者RK3399等ARM平台,当然我之前已经测试了树莓派Odroid C4的平台,并构建了需要的实时补丁这样,就可以采用上述高算力平台替代单片机进行开发,构建一个实时性较好的基本运动控制器。

因此实际上目前来说选用一个Linux处理器构建运动控制器主要的工作即:

(1)打上实时补丁

(2)设计伺服载板

(3)构建交叉编译系统

前两个步骤在我之前的知乎中已经提供了相应的参考方案,当然在更成熟的设备中采用PCIE等方案会使得伺服驱动更加可靠,而实时补打则需要有编译内核的相关经验,这一块后续会以树莓派为例解释如何对任意的Linux内核进行实时化编译与修改。最后,就是构建交叉编译环境,之所以要构建交叉编译环境我认为优势主要是如下几点:

(1)编译速度快:在最开始时我对代码编译是采用将源码拷贝至树莓派,用VSCoder从Windows下SSH进入目录在目标机进行编译,这样由于树莓派性能不行编译很多东西都非常慢,导致开发效率很低,而且很多时候由于网络不稳定造成VScoder项目工程故障;

(2)代码安全与保密:交叉编译后产生的二进制文件可以直接存放到目标机,而不是源代码,这样在发布软件时能有效保护自己的原始工程;

因此,下面就以树莓派为例介绍如何构建一个交叉编译环境!

1 安装树莓派OS虚拟机

这里我首先选择在VMware下安装树莓派桌面版的镜像,相关教程可以参考如下的帖子:

注意:加载光驱后首次会自动进入系统,需要重启在Bios界面下安装,此后卸载光驱系统才真正安装在虚拟机中

2 安装vmwaretool

安装Vmware工具,这样我们就可以从windows向树莓派复制命令和拖拽文件夹,如果不行可以通过在设置中建立共享文件夹目录,重启后会在/mnt/hgfs/目录下看见所建立的共享文件夹

3 更换源

更换源树莓派为清华源:sudo nano /etc/apt/sources.list:

deb http://mirrors.tuna.tsinghua.edu.cn/debian buster main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian-security/ buster/updates main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian buster-updates main contrib non-free
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
#deb-src http://mirrors.tuna.tsinghua.edu.cn/debian buster main contrib non-free
#deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security/ buster/updates main contrib non-free
#deb-src http://mirrors.tuna.tsinghua.edu.cn/debian buster-updates main contrib non-free

sudo nano /etc/apt/sources.list.d/raspi.list

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

4 下载交叉编译工具

首先在这需要说明的一点是树莓派确实有强大的生态,传统上任何交叉工具链的版本是需要自己从源码编译的但是树莓派官方已经提供了自己板子对应芯片的工具链,在Downloads里下载交叉编译工具:

sudo apt-get install build-essential git
git clone git://github.com/raspberrypi/tools.git

在tools文件夹中可以看到所需要的工具,对于桌面树莓派系统我们采用x64版本:

5 安装QT5与配置工具

在更新源后安装QT5:

sudo apt-get install qt5-default
sudo apt-get install qtcreator

打开QT配置新建GCC和G++编译工具:

新建树莓派对应的交叉编译KIT选择上述工具:

6 编译与测试

新建QT工程选择交叉编译KIT,编译后建立如下的脚本download.sh实现代码下载:

#!/bin/bash
scp ./build/*task1 pi@192.168.180.23:/home/pi/moco

SSH进入目标机后,这里我采用了之前Odroid四足机器人的程序,可以看到在树莓派下的SPI伺服CAN驱动任务运行成功:

以上,就完成了一个基于QT的树莓派交叉编译环境搭建,后续软件开发就和在单片机里一样并且性能更好更高效,在输入实时补打后基于树莓派同样可以运行MPC或QP优化等算法,采用4B能轻松的作为四足机器人、无人机或无人车底盘的运动控制器,当然这里我选择新出的Pi Zero W2 作为后续舵狗的新主控选择:

采用四核心的博通BCM2710A1 64位SoC,主频相比树莓派 3上的要略低,降至1GHz。内存采用一颗512MB的LPDDR2 SDRAM内存颗粒,自带WIFI,可以读取一路CSI相机