確かに、私はそれを起動して実行するのを手助けすることができます。
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(コマンドラインpythonのプロンプトそのウィルを使用して
http://www.ros.org/wiki/hrl_rfid
lは(あなたのRFIDリーダーは次のように接続されているどんなデバイスでは/ dev/ttyUSB0を置き換え)すべてが動作していることを確認するために)あなたのpython、一度に1つのコマンドを実行してみましょう:
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を実行すると、私は、オプションの「portStr」を取るためにros_M5e.pyを微調整することができます - 私はあなたがそのよう自分自身を行うことをお勧めしますけれどもあなたのアンテナを分かりやすく名付けることができます。また、私は非常にRFIDリーダーが常に同じデバイスに割り当てられますことを確認するために、udevルールを設定することをお勧めします: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 import 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 'ファイルを3つのディレクトリすべてにコピーしました(以前は'/opt// hrl_rfid/'ディレクトリ内の' msg 'ディレクトリを見つけることができるようになりましたが、今は別のエラーを受け取っています: "' ImportError:インポートできません名前RFIDread '"。より多くの提案? – Khiya
RFIDreadの完全なファイル名を確認するだけですRFIDread.py –
実際にその特定のファイルの名前はRFIDread.msgです。ros_M5e.pyファイルの名前を変更できますか? ? – Khiya