Конечно, я могу помочь вам запустить его.
Из публикации 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 / robot / RFIDreader".Если вы уже не изменили правила udev, это не будет иметь место на вашей машине.Я предлагаю выполнить код:
http://www.ros.org/wiki/hrl_rfid
, используя iPython (приглашение Python для командной строки, которое позволит вам выполнять команды python по одной), чтобы убедиться, что все работает (замените / dev / ttyUSB0 нак какому устройству подключен ваш RFID-ридер):
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()
ОК, все работает сейчас.Вы можете сделать свой собственный узел, настроенный на ваши настройки:
#!/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()
Или, отправьте мне ответный сигнал, и я могу настроить 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.
Сообщите мне, если у вас возникнут какие-либо дальнейшие проблемы.
~ Трэвис Дейл ( Hizook.com )
PS - Вы изменили ros_M5e.py на «из hrl.hrl_rfid.msg import RFIDread»?В репо это «из 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