四足机器人高算力、低成本主控第八步:超越树莓派4B给Odroid C4打上RT实时补丁

之前我采用树莓派4B构建了一个高性能、低成本的运动控制器,同时设计了一个基于STM32的伺服驱动载板来实现CAN伺服和IMU采集,最终驱动ODrive实现四足机器人的步态与力控,相关资料如下:

上述的控制器存在如下几个问题:

1)首先树莓派4B发热很严重,导致板载IMU温飘严重,需要频繁标定陀螺仪偏差;

2)树莓派4B莫名重启,不知道是由于发热还是震动,有时候树莓派4B会死机;

3)树莓派4B算力不足,之前运行MIT QP足力分解算法在仿真中完全没问题,但是在实物运行时出现抖动发散。

综上,急需寻找一个低成本的新主控替代方案,当然最主要的是其具有RT实时补丁的官方生态。

今年又出了很多兼容树莓派IO的ARM控制器,这样可以继续使用MOCO-Pihat来实现伺服控制,如Tinkerboard-S2和RK3399等开发板,在上学时我一直想使用VIO来实现无人机的视觉里程计,在参考他们的论文中发现其机载处理器采用了韩国Odroid-XU4,之后我许多视觉应用都基于该开发板,其成本不贵但是性能和稳定性都很高,如KCF跟踪算法在720P下能到30Fps,ArUco二维码识别更是能到实时,但是由于其不是标准树莓派引脚就没考虑采用其来设计运动控制器,而采用MIT方案的upboard目前其价格很高基本需要上千元。

好在今年Odroid 官方推出了Odroid C4系列,通过在其论坛查找,发现有人给他打了RT补丁,另外它的IO与树莓派兼容,价格500RMB左右性能也比树莓派强,因此其成为了下一个主控的首选,下面就介绍如何采用Odroid改装一个运动控制器。

Hardkernel最新推出的Odroid C4单板电脑採用与Raspberry Pi Model B相同的尺寸设计,并搭载效能更高的Amlogic S905X3 SoC,不但支持Android、Ubuntu、CoreELEC等作业系统,甚至能够播放4K超高解析度影片。

Odroid C4搭载Amlogic S905X3 SoC,具有4个最高时脉为2.016GHz的Arm Cortex-A55处理器核心,采用ARMv8-A架构并支援Neon与Crypto延伸指令集,并内建具有4个运算单元且时脉高达650MHz的Mali-G31MP绘图处理器,支援OpenGL ES 1.1/2.0/3.0、Vulkan 1.0、OpenCL 2.0等API,记忆体部分则搭载容量为4GB的DDR4-2640。与Hardkernel先前介绍的Odroid N2相比,Odroid N2因搭载较高阶的Amlogic S922X SoC,具有4个运作时脉为1.8GHz的Cortex-A73处理器核心与2个1.9GHz Cortex-A53处理器核心,搭配具有6个运算单元且时脉高达846MHz的Mali-G52绘图处理器,因此有著较出色的效能表现。相较之下Raspberry Pi 4的Broadcom BCM2711 SoC,具备4个最高时脉为1.5GHz的Arm Cortex-A72处理器核心与VideoCore VI绘图处理器,虽然也有2GB、4GB的记忆体选项,但整体效能却比较低。

在综合效能表现部分,Odroid C4都能赢过Raspberry Pi 4,但不及先前推出的Odroid N2,由于Odroid C4的绘图处理器规格落后Odroid N2很多,所以效能表现也被甩开。

Odroid C4的记忆体效能也是介于Odroid N2与Raspberry Pi 4之间。

Odroid C4在运作时温度大约为摄氏75度左右。

电力消耗方面无论是运作中、閒置、关机都比Raspberry Pi 4省电,最终集成MOCO-pihat的Odroid C4如下:

安装RT实时补丁我参考了官方论坛的这个帖子:

forum.odroid.com/viewto

由于其需要5.10内核版本需要从如下网址下载1218镜像(原始帖子里给的链接是5.11版本,而RT补丁目前只支持5.10,我只能全部一个一个测试好在找到了对应的版本)

ppa.linuxfactory.or.kr/

之后就比较简单了由于其系统是服务器版本,安装好后啥也没有,无法联网也没有任何文本编辑器。因此首要是更新系统,安装基本的开发编辑环境,由于Odroid C4没有WIFI而网线直连在没有ifconfig工具支持下是没办法查看其的IP,更无法实现上网,因此这里我采用路由器中继的方案。这里我采用了OpenWrt的路由器。

在登录后首先使用手机建立热点,让路由器中继该WIFI实现上网:

之后查看对应的Odroid板子IP:

在ssh远程连接后,按教程联网进行更新:

$ sudo apt update
$ sudo apt dist-upgrade


直接安装对应RT补丁:

$ sudo apt install linux-image-5.10.0-odroid-rt-arm64
$ sudo reboot

安装后重启使用uname -a查看是否具有RT提示

$ uname -a
Linux focal-server 5.10.0-odroid-rt-arm64 #1 SMP PREEMPT_RT Ubuntu 5.10.0-202012062208~focal (2020-12-06) aarch64 aarch64 aarch64 GNU/Linux

之后安装对应的编译环境包括nano、ifconfig工具、cmake等。

sudo apt install net-tools
sudo apt-get install cmake
sudo apt-get install g++
下载eigen,yaml进行编译与安装

下载代码后配置自启动:

sudo nano /etc/rc.local加入
sudo /home/odroid/MOCO_ML_CROSS/hardware_task &
#sudo /home/odroid/MOCO_ML/hardware_task/build/hardware_task &
sleep 1
#sudo /home/odroid/MOCO_ML_CROSS/control_task &
#sudo /home/odroid/MOCO_ML/control_task/build/control_task &
sleep 1     
sudo /home/odroid/MOCO_ML_CROSS/navigation_task &
#sudo /home/odroid/MOCO_ML/navigation_task/build/navigation_task &
最后配置控制器为固定IP:
sudo nano /etc/netplan/50-cloud-init.yaml
ifconfig查看网卡名字,加入:
network:
    ethernets:
        eth0:
            addresses:
                - 192.168.1.119/24 # IP及掩码
            gateway4: 192.168.1.1 # 网关
            nameservers:
                addresses:
                    - 8.8.8.8 # DNS
    version: 2

最终,哒哒哒一个超越树莓派但是性能更好的低成本实时主控制器就完成了,后续将进一步测试QP是否能部署成功!!