思考問題:機器人運動控制如何與圖形界面交互?編程
不得不說,先鋒機器人的軟件作的真不怎麼樣。圖形界面交互用戶體驗不好。socket
如今我遇到一個很現實的問題:SLAM須要採集激光數據和機器人的位姿,同時我還要再這個界面中控制機器人的運動。這個想來真是一個複雜的問題。函數
測試使用ArRobot分別直接在MFC的WinApp和Dialog中進行初始化,執行runSync則報錯,不執行則鏈接直接退出。ArRobot內置了線程,不知到是否是致使了失敗。測試
而後測試服務和客戶端模式,socket編程,用了自帶的serverDemo,可是客戶端請求的命令去確沒法執行。自帶的客戶端demo也是內置了線程和鍵盤處理,沒有成功。線程
不過我堅信這個問題確定是能夠解決的,由於MobileEye裏面就實現了。server
經過與利曼售後工程師的溝通,目前初步實現了經過圖形界面進行先鋒機器人的運動控制。 如今採用的是C/S模式,socket編程。固然主要仍是使用的SDK裏面的函數實現的。對象
主要的技巧是多開了一個線程。blog
經過UI界面開一個線程pThread,在該線程中初始化客戶端對象(客戶端內置了線程Thread3,執行runSync方法會開啓新的線程)。回調函數
將UI的鍵盤消息經過flag在pThread中進行分發,讓Thread3中對應執行相應的回調函數。此時不在Thread3中執行鍵盤檢測函數,由於已經在UI線程中偵測了。it
問題算是有了解決方案,思考若是直接應用程序鏈接機器人呢,這種技巧是否是也能夠用呢?
kbhit函數:檢查當前是否有鍵盤輸入。
激光數據接收確定要佔用一個線程。
經過界面控制機器人在主線程或者再開一個線程。