折腾了一轮实时linux
也折腾过一阵实时linux当机器人控制器,跑can总线,ethercat总线的主站,从can,ethercat驱动兼容性上来说,基于2.6.3x的rtai最好,最后用的也是linuxcnc2.5版本,特别老基于Unbuntu10.04LTS.后来linux3以后的内核,驱动不好找。你用的还是发脉冲的PCI卡么?
大赞!
的确效率爆表!
看样子还是要试试Preempt_RT~
这方面的文档和论文很多都很旧了,还是得自己评估一下。
我现在最疑惑的就是intel的白皮书里面号称的0.2us max jitter...
rtai和xenomai的关系不太清楚,我没去做考古...
虽然都是基于i-pipe但区别应该还是很大的。
kernel版本的覆盖度是个很大的问题。比如我这个机器2其实是个草莓派一样大的微型主
机,丫自己也需要一堆patch才能work。然而这些patch都是base在别的kernel上做的,
之前尝试折腾一个merge的版本,但这样搞真的太折腾了...
准备自己做块pcie的卡。所以做之前要先看看目前的rt linux效果如何。
rt这个jitter可以很好的跑ethercat了,除了支持ethercat总线的电机都不便宜呀,绝对是一个硬件上省时省力的方案,主要折腾软件代码。几个三洋支持ethercat的伺服,控制器找一个支持双Intel e1000网口的PC,跑Linuxcnc系统,一个网口总线接伺服,一个接路由用其他设备做显示。很多研究所都这么搞,然后忽悠别人做了一套完整的cnc系统。
有个embed版
这东西,我十年前硕士论文搞这个,弄到吐的程度
2000左右还有一个 rt-linux,rtai就是从这个扩展出来的。
后来风河收购了rt-linux的商业版。
.210
我只是小升级下,主要目的是去掉mach3。
实在是受够mach3了,干啥啥都干不好。probe信号只能有一路,用brain把两路信号合并
成一路,没想到控制器硬件直连probe信号无视brain...无线手轮居然和我的filco键盘
冲突,非得拔掉再插上才能用...对刀居然还能走个斜线下来,探针还没用上就报废...
ethercat就自己山寨一个吧...我还想传路高实时性的视频来增加机器视觉能力,综合下
来ethernet各方面都比较靠谱,本身就要折腾它。
linuxcnc的代码量还是蛮大的,我之前大致扫了眼,搞得比我预想的要复杂...
其实放到现在这个年代,很多东西理念上都严重落伍了。比如GUI完全可以扔掉,电控出
来就是以太网,x86/arm上跑个web server,一切都走web搞,需要视频和3d的地方
html5/webgl解决,软件上很多工作量都可以简化。而且这样控制器压根不开X不跑
opengl,完全没显卡啥事实时性还能更好。开发起来也简单的多,远程互联集群管理什
么的都很好做。
图形可以异步 可以低优先级
这不矛盾
用opengl加网页做现实还是不错的。Linuxcnc自己有一套网络分布式控制协议,可以界面和控制部分分离的,很多研究所就是这样搞一套自主gui忽悠的。还有很多用不上的功能,代码库很大很杂。
视觉什么的还是得上单独的PC,最好还带nvidia高端显卡,别和控制放同一台电脑。
有机会真想去参观一下你的cnc去。
刚看明白你在干什么。
关于RT OS的问题我这边也纠结了好久,最后因为死也达不到指标才放弃的(100ns)。
最后是fpga实现pcie和microblaze,软件跑前后台响应中断,再分一部分功能给
fpga logic。
这么干的好处是只要资源够,你可以弄n多个mb去分别干不同的事儿,不是
线程,而是软核跑代码。GUI交给上位机。手控的实时响应可以从GPIO直接进。
我想请教一个问题,你的max jitter 2us是多高的中断重频跑出来的?cpu
单线程负载有多少?或者说一次中断响应时间和重频分别是多少?
不用着急做,弄块儿pcie开发板先验证一下。
ethercat从站是专属芯片实现,本身有基于网络的时间同步机制。在控制周期不高的情况下,现在X86主站几十us的抖动基本不影响从站的同步性能。
100ns用x86很难,就算是intel的whitepaper那个bt的指标也只是200ns级别。
这种还是得上fpga了。
这个max jitter并不是用中断跑的,而是使用rt framework提供的api实现的。对用户来
说大致上类似于写个普通的线程就行了。具体不同的rt framework会采用不同的实现方
式来保证你写的这个线程的实时性。但总的来说rt thread的jitter通常与当前的cpu负
载,中断响应时间/频率都无关。
截图里面的latency-test是跑了2个rt thread,一个interval 1ms另一个25us。
恩,所以gtx1070刚出来我就买了块...号称是为了这个目的...虽然目前主要是玩
overwatch...
机器视觉我也准备尝试下现在比较时髦的deeplearning方法。
deeplearning理论上可以不需要自己动脑子折腾算法和参数...
cnc本身而言没啥稀奇的...但cnc是个运动平台,可以用来扩展出各种东西...
所以一个能自己改进折腾的控制器还是蛮有必要的。其实这事情我想了很久了,以前都
没下定决心去做...