當然,我可以幫你啓動並運行。
從StackOverflow發佈,它似乎是檢出堆棧/ opt/ros/diamondback。這是不好的,因爲它是一個系統路徑。您需要安裝到您的本地路徑中。在存儲庫上「只讀」的原因是您沒有權限對代碼進行更改 - 它在您的本地計算機上仍然可以正常工作。我花了很多時間相當展示瞭如何使用這個包(至少Python版本)在這裏:
http://www.ros.org/wiki/hrl_rfid
我會盡力做一個快速的運行,通過安裝它....運行以下命令:
cd
mkdir sandbox
cd sandbox/
svn checkout http://gt-ros-pkg.googlecode.com/svn/trunk/hrl/hrl_rfid hrl_rfid (double-check that this checkout works OK!)
將以下行添加到bashrc的底部,告訴ROS在哪裏可以找到新軟件包。 (你可以使用「gedit〜/」。bashrc中「)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$HOME/sandbox/hrl_rfid
現在執行以下操作:
roscd hrl_rfid (did you end up in the correct directory?)
rosmake hrl_rfid (did it make without errors?)
roscd hrl_rfid/src/hrl_rfid
此時一切實際上是正確安裝在默認情況下,ros_M5e.py假定讀者位於」的/ dev /機器人/ 。RFID讀取」除非你已經改變了udev規則,這不會是你的機器上的情況下,建議通過運行代碼:使用IPython的
http://www.ros.org/wiki/hrl_rfid
(命令行Python提示符是WIL升讓你一次執行Python命令一個),以確保一切正常(與任何設備的RFID閱讀器連接的)替換/ dev/ttyUSB0:
import lib_M5e as M5e
r = M5e.M5e('/dev/ttyUSB0', readPwr = 3000)
r.ChangeAntennaPorts(1, 1)
r.QueryEnvironment()
r.TrackSingleTag('test_tag_id_')
r.ChangeTagID('test_tag_id_')
r.QueryEnvironment()
r.TrackSingleTag('test_tag_id_')
r.ChangeAntennaPorts(2, 2)
r.QueryEnvironment()
這意味着底層庫工作得精細。接下來,測試ROS(確保 「roscore」 運行!),通過把這個在Python文件並執行:
import lib_M5e as M5e
def P1(r):
r.ChangeAntennaPorts(1,1)
return 'AntPort1'
def P2(r):
r.ChangeAntennaPorts(2,2)
return 'AntPort2'
def PrintDatum(data):
ant, ids, rssi = data
print data
r = M5e.M5e('/dev/ttyUSB0', readPwr = 3000)
q = M5e.M5e_Poller(r, antfuncs=[P1, P2], callbacks=[PrintDatum])
q.query_mode()
t0 = time.time()
while time.time() - t0 < 3.0:
time.sleep(0.1)
q.track_mode('test_tag_id_')
t0 = time.time()
while time.time() - t0 < 3.0:
time.sleep(0.1)
q.stop()
OK,現在一切工作。你可以讓你自己的節點調諧到您的設置:
#!/usr/bin/python
import ros_M5e as rm
def P1(r):
r.ChangeAntennaPorts(1,1)
return 'AntPort1'
def P2(r):
r.ChangeAntennaPorts(2,2)
return 'AntPort2'
ros_rfid = rm.ROS_M5e(name = 'my_rfid_server',
readPwr = 3000,
portStr = '/dev/ttyUSB0',
antFuncs = [P1, P2],
callbacks = [])
rospy.spin()
ros_rfid.stop()
或者ping通我回來,我可以調整ros_M5e.py採取一個可選的「portStr」 - 雖然我建議在做你自己,讓你可以合理地命名您的天線。另外,我強烈建議您設置udev規則,以確保RFID閱讀器總是被分配到同一個設備:http://www.hsi.gatech.edu/hrl-wiki/index.php/Linux_Tools#udev_for_persistent_device_naming
BUS=="usb", KERNEL=="ttyUSB*", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="6001", SYSFS{serial}=="ftDXR6FS", SYMLINK+="robot/RFIDreader"
如果你不這樣做......沒有保證,讀者總是會枚舉在/ dev/ttyUSBx。
讓我知道你是否還有其他問題。
〜特拉維斯Deyle(Hizook.com)
PS - 你 「從hrl.hrl_rfid.msg進口RFIDread」 修改ros_M5e.py?在回購中,它是「從hrl_rfid.msg導入RFIDread」。後者是正確的。只要你正確定義了你的ROS_PACKAGE_PATH,並且你已經在包上運行了rosmake,那麼import語句應該可以正常工作。另外,我不會推薦將與ROS相關的問題發佈到StackOverflow。這裏很少有人會熟悉ROS生態系統(這非常複雜)。請在此處發帖提問:
http://answers.ros.org/
http://code.google.com/p/gt-ros-pkg/issues/list
謝謝。我做了第一個「export PYTHONPATH = $ PYTHONPATH:/ opt/ros/diamondback/stacks /'」並將我的'_ _init_ _.py'文件複製到所有三個目錄中(以前它只在'/ opt/ros/diamondback/stacks/hrl/hrl_rfid/src/hrl_rfid /'目錄。現在它能夠在'hrl/hrl_rfid /'中找到'msg'目錄,但現在我收到了另一個錯誤:''ImportError:can not import名稱爲RFIDread'「。其他建議? – Khiya 2011-06-10 20:15:07
只需確認RFIDread的完整文件名是RFIDread.py? – 2011-06-10 22:00:45
Hello again。其實這個文件的名稱是RFIDread.msg。我可以在ros_M5e.py文件中更改名稱? – Khiya 2011-06-13 17:36:29