linux 实时功能,linux – 什么是同时具有实时循环和非实时功能的更好方法
抱歉標題不好,我真的不知道如何描述…
我的情況是,對于機器人應用程序,我們需要一個實時循環來每1ms控制一次電機.同時我們可能想要做一些沒有實時要求的事情,例如路徑規劃,圖像處理,對象識別等.此外,非實時任務的一些結果將被發送到實時電機控制循環來控制機器人.
對于實時部分,我使用Ubuntu和RT-Preempt Patch.因此,我可以在while循環中運行實時控制循環,就像示例代碼here一樣.
但是,我不知道非實時部分.在我看來,我會在同一個進程中創建一個線程并在該線程中運行非實時任務.
由于我對實時編程很新,我不知道我的設計會出現什么問題.此外,我想知道是否有任何設計此類程序的范例?
– -編輯 – –
關于我的申請的更多細節.
更具體地說,機器人是機器人手臂.
對于實時部分,它計算正向運動學,反向運動學和雅可比.然后使用簡單的PID控制器計算正確的輸出命令.最后,使用EtherCAT將電機命令發送到每個電機.
例如,對于非實時部分,可以從kinect獲取PointCloud流,進行一些預處理,計算場景中對象的姿勢,確定機器人手臂的良好抓握姿勢,最后發送每個的目標.電機到實時部分,以便機器人手臂實際移動到目標并抓住物體.整個過程可能需要10秒左右.然而,同時實時循環應該繼續運行并發送適當的力命令或位置命令,以使機器人手臂保持其原始姿勢并保持靜止.
對于這兩個部分之間的通信,在大多數情況下,命令由來自非實時部分的新算法生成,并將其發送到實時部分以使機器人手臂移動.然而,有時非實時部分中的算法將需要知道例如末端執行器的當前姿勢.因此,非實時部分將需要從正向運動學中獲取信息,該正向運動學駐留在實時部分中.
總結
以上是生活随笔為你收集整理的linux 实时功能,linux – 什么是同时具有实时循环和非实时功能的更好方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神俑降临苏巧葵怎么样?苏巧葵角色介绍
- 下一篇: linux 搭建任务队列集群,beans