2018年10月12日 星期五

機械手手實作紀錄-2:5DT感應手套在Linux上運行

還記得我上次說感測手套在Linux上沒辦法運行嗎?這次我花了不少時間終於解決了這個問題,從中也學到了不少東西呢~雖說要怎麼弄到ROS上還是個問題就是了,哈哈,來跟我一起在Linux上玩玩5DT感測手套吧!

2.在Linux上讀取5DT感測手套的資訊

2-1.下載並安裝driver

首先呢,先進入5DT感測手套的官網,下載5DT在Linux上運行相關的driver[1],之後,進入路徑:
5DTDataGloveUltra_SDK_Linux_32and64bit_v2.32_25March2011/fdGlove/install並依照你的Linux版本做選擇,我使用的是64位元,而這讓我嘗盡了苦頭QQ,因為很多東西都只有支援32位元,不過我還是有找到解法拉~這待會會再提到的。
install資料夾

在這裡開啟終端機,輸入指令:
ls
輸入ls

這裡可以看到三個檔案都是白色的,代表不能執行,所以我們輸入指令:
chmod +x install.sh
ls
更改檔案權限

再次輸入ls後可看到,install.sh可執行了!開始安裝!輸入指令:
./install.sh
安裝完成囉~接著來測試吧!

2-2.使用預先寫好的附加程式來測試

接著來到路徑:
5DTDataGloveUltra_SDK_Linux_32and64bit_v2.32_25Mar
ch2011/fdGlove/examples

三個範例程式
三個程式在你的面前,每個都有不同的能力,我們先來使用polling吧,只要會用一個,其它也不是難事(吧?
polling內部
開啟終端機,輸入指令:
ls
發現和剛剛一樣全部都是白色,所以也用同樣的方法讓polling可執行吧!輸入指令:
chmod +x polling
ls
接著執行polling,指令:
./polling
我們可以看到一段錯誤指令,沒錯這就是我使用64位元碰到的問題,以下開始是我的解決辦法,找了非常久才解決,心血結晶阿~供大家參考看看吧。

2-3.試圖解決版本問題與其它問題

輸入指令:
sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install lib32stdc++6
安裝32位元函式庫,接著將資料夾中除了polling.cpp以外的東西都刪掉,沒錯,刪掉!!!我試了一個下午的結果是它們沒救了,只好自己砍掉重練。
孤單的polling.cpp
這時候打開終端機輸入:
gcc -c polling.cpp
gcc -o polling polling.o
這時候可能會出現錯誤訊息,未定義到...之類的,我們再次到路徑:
5DTDataGloveUltra_SDK_Linux_32and64bit_v2.32_25March2011/fdGlove/install
複製libfglove.so檔,放到路徑:
5DTDataGloveUltra_SDK_Linux_32and64bit_v2.32_25March2011/fdGlove/examples/polling,並將指令改為:
gcc -o polling polling.o ./libfglove.so
編譯動作
其中,./libfglove.so是指定函式庫路徑,這裡會出錯應該是沒找到函式庫(在安裝時有問題),不過這樣可以解決,ok der ~可以用ls指令看看polling是否已可執行。

現在看路徑:
5DTDataGloveUltra_SDK_Linux_32and64bit_v2.32_25March2011/fdGlove/examples/polling
師兄弟都回來了
在終端輸入:
./polling
然後它會提示用法錯誤訊息(這個建議大家可以去了解一下怎麼做到的,cpp檔中有提到),改指令為:
sudo ./polling /dev/usb/hiddev0
要記得先插上的手套(一隻就好)到電腦的usb插槽喔~
如果無法順利執行,很大一部份原因是因為權限不夠的問題,請在執行前先輸入指令:
sudo -S chmod 666 /dev/usb/hiddev0

2-4.修改polling.cpp

大家會發現預設的程式只會跑5秒鐘左右,我們可以修改polling.cpp的內容來達到我們的需求,coding力是你的超能力!基本上程式的語法不會太過困難,有些cpp基礎應該就行了!這是我的程式碼[1],由於會牽涉到下一篇講到的東西,所以可以先看重點就好,只要小改迴圈一下讓它一直跑就好,提供給大家做參考~

2-5.繼續往ROS邁進

我有預感(希望拉)下篇會和大家提到怎麼在ROS上運行5DT感測手套,敬請期待八~下回見。

如有問題可以留言大家一起討論,留言請勿出現不雅言語與無端謾罵喔~
If u have any question,just leave comments to me.I will answer u as soon as possible,but don't be mean to me.Thanks!

沒有留言:

張貼留言