一、引言
因为franka机械臂需要强实时性,又因为linux的内核,注重吞吐,对实时性要求不高,具体来说就是不知道不能确切的知道程序运行的周期,执行时间等,因此可以为linux内核打一个实时补丁。
二、方案
本以为打补丁只需要单纯的打补丁就可以(或许真的就单纯打补丁就可以),然额帖子里都是说需要重新下载一个内核并下载对应的补丁版本再进行操作,也就是说相当于将linux内核也换掉。
跟老师聊知道内核与ubuntu版本等没啥关系,但是肯定内核版本越高越好,当然同时对应的ubutu版本也是越高越好。据说centos中加实时内核可以达到10us的抖动时间。ps:抖动时间是什么?
三、具体实施
自带内核时4.15…。。据说单数时测试版,因此我正好换了4.16版本的,同时对应补丁,最终选择4.16.18.版本内核。
这里的操作主要参考Install RT Linux patch for Ubuntu要注意文件夹的位置。
但是在运行过程中遇到问题
recipe for target ‘scripts/kconfig/zconf.tab.c’ failed
解决:
Make menuconfig的遇到的错误总结
使用A2,A3后解决
接下来还是按照上面的推文进行安装就可以,注意要选择Fully Preemptible Kernel,去掉内存溢出检测,最后的操作就是保存了
然后进行编译
在运行sudo make modules_install -j20的时候会出现错误,需要安装包,这边建议您提前安装好呢
sudo apt-get install libelf-dev
然后在运行sudo make install -j20的时候出现缺少固件等提示,我没管他。
四、测试
根据要求操作完成以后开机进入高级选项,选择实时内核。
测试下是否换过内核
uname -a
得到
Linux xsm-pc 4.16.18-rt12 #1 SMP PREEMPT RT Sat Aug 8 00:46:35 CST 2020 x86_64 x86_64 x86_64 GNU/Linux
但是奇怪的是00:46:35这个数一直不变
然后用cyclictest进行测试
sudo apt-get install rt-tests
sudo cyclictest -t1 -p 80 -n -i 10000 -l 10000
得到
咱也不知道,应该还可以把。
有的教程说需要调整cpu关掉节能模式,还没有尝试。
May the force be with you!